DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_00707_AAD_S_000002_PKG

Source


1 PACKAGE BODY XLA_00707_AAD_S_000002_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_000002_PKG                                        |
10 |                                                                       |
11 | DESCRIPTION                                                           |
12 |     Package generated From Product Accounting Definition              |
13 |      Name    : Cost Management                                        |
14 |      Code    : COST_MANAGEMENT                                        |
15 |      Owner   : PRODUCT                                                |
16 |      Version :                                                        |
17 |      AMB Context Code: DEFAULT                                        |
18 | HISTORY                                                               |
19 |     Generated at 30-03-2009 at 05:03:16 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_000002_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_000002_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_000002_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_000002_PKG.GetMeaning');
228 END GetMeaning;
229 --
230 
231 ---------------------------------------
232 --
233 -- PRIVATE FUNCTION
234 --         AcctDerRule_1
235 --
236 ---------------------------------------
237 FUNCTION AcctDerRule_1 (
238   p_application_id              IN NUMBER
239 , p_ae_header_id                IN NUMBER
240 , p_side                        IN VARCHAR2 
241 --Accrual Account for the Write Off
242  , p_source_1            IN NUMBER
243 , x_transaction_coa_id         OUT NOCOPY NUMBER
244 , x_accounting_coa_id          OUT NOCOPY NUMBER
245 , x_value_type_code            OUT NOCOPY VARCHAR2
246 )
247 RETURN NUMBER
248 IS
249 l_component_type       VARCHAR2(80)  ;
250 l_component_code       VARCHAR2(30)  ;
251 l_component_type_code  VARCHAR2(1)   ;
252 l_component_appl_id    INTEGER       ;
253 l_amb_context_code     VARCHAR2(30)  ;
254 l_log_module           VARCHAR2(240) ;
255 l_output_value         NUMBER        ;
256 BEGIN
257 IF g_log_enabled THEN
258       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_1';
259 END IF;
260 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
261       trace
262          (p_msg      => 'BEGIN of AcctDerRule_1'
263          ,p_level    => C_LEVEL_PROCEDURE
264          ,p_module   => l_log_module);
265 END IF;
266 --
267 l_component_type         := 'AMB_ADR';
268 l_component_code         := 'CST_AWO_ACCRUAL';
269 l_component_type_code    := 'S';
270 l_component_appl_id      :=  707;
271 l_amb_context_code       := 'DEFAULT';
272 x_transaction_coa_id     :=  null;
273 x_accounting_coa_id      :=  null;
274 --
275 
276  --
277   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
278       trace
279          (p_msg      => 'END of AcctDerRule_1'
280          ,p_level    => C_LEVEL_PROCEDURE
281          ,p_module   => l_log_module);
282   END IF;
283   x_value_type_code := 'S';
284   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
285   RETURN l_output_value;
286 
287 --
288 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
289       trace
290          (p_msg      => 'END of AcctDerRule_1(invalid)'
291          ,p_level    => C_LEVEL_PROCEDURE
292          ,p_module   => l_log_module);
293 END IF;
294 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
295 x_value_type_code := null;
296 l_output_value    := null;
297 xla_accounting_err_pkg.build_message
298                  (p_appli_s_name            => 'XLA'
299                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
300                  ,p_token_1                 => 'COMPONENT_NAME'
301                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
302                                                             l_component_type
303                                                           , l_component_code
304                                                           , l_component_type_code
305                                                           , l_component_appl_id
306                                                           , l_amb_context_code
307                                                           )
308                  ,p_token_2                 => 'OWNER'
309                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
310                                                         'XLA_OWNER_TYPE'
311                                                         ,l_component_type_code
312                                                         )
313                  ,p_token_3                 => 'PAD_NAME'
314                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
315                  ,p_token_4                 => 'PAD_OWNER'
316                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
317                                                         'XLA_OWNER_TYPE'
318                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
319                                                         )
320                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
321                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
322                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
323                  ,p_ae_header_id            => NULL
324 );
325 RETURN l_output_value;
326 EXCEPTION
327   WHEN xla_exceptions_pkg.application_exception THEN
328       RAISE;
329   WHEN OTHERS THEN
330        xla_exceptions_pkg.raise_message
331            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctDerRule_1');
332 END AcctDerRule_1;
333 --
334 
335 ---------------------------------------
336 --
337 -- PRIVATE FUNCTION
338 --         AcctDerRule_2
339 --
340 ---------------------------------------
341 FUNCTION AcctDerRule_2 (
342   p_application_id              IN NUMBER
343 , p_ae_header_id                IN NUMBER
344 , p_side                        IN VARCHAR2 
345 --Write-Off Variance Account
346  , p_source_2            IN NUMBER
347 , x_transaction_coa_id         OUT NOCOPY NUMBER
348 , x_accounting_coa_id          OUT NOCOPY NUMBER
349 , x_value_type_code            OUT NOCOPY VARCHAR2
350 )
351 RETURN NUMBER
352 IS
353 l_component_type       VARCHAR2(80)  ;
354 l_component_code       VARCHAR2(30)  ;
355 l_component_type_code  VARCHAR2(1)   ;
356 l_component_appl_id    INTEGER       ;
357 l_amb_context_code     VARCHAR2(30)  ;
358 l_log_module           VARCHAR2(240) ;
359 l_output_value         NUMBER        ;
360 BEGIN
361 IF g_log_enabled THEN
362       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_2';
363 END IF;
364 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
365       trace
366          (p_msg      => 'BEGIN of AcctDerRule_2'
367          ,p_level    => C_LEVEL_PROCEDURE
368          ,p_module   => l_log_module);
369 END IF;
370 --
371 l_component_type         := 'AMB_ADR';
372 l_component_code         := 'CST_AWO_ERV';
373 l_component_type_code    := 'S';
374 l_component_appl_id      :=  707;
375 l_amb_context_code       := 'DEFAULT';
376 x_transaction_coa_id     :=  null;
377 x_accounting_coa_id      :=  null;
378 --
379 
380  --
381   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
382       trace
383          (p_msg      => 'END of AcctDerRule_2'
384          ,p_level    => C_LEVEL_PROCEDURE
385          ,p_module   => l_log_module);
386   END IF;
387   x_value_type_code := 'S';
388   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_2));
389   RETURN l_output_value;
390 
391 --
392 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
393       trace
394          (p_msg      => 'END of AcctDerRule_2(invalid)'
395          ,p_level    => C_LEVEL_PROCEDURE
396          ,p_module   => l_log_module);
397 END IF;
398 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
399 x_value_type_code := null;
400 l_output_value    := null;
401 xla_accounting_err_pkg.build_message
402                  (p_appli_s_name            => 'XLA'
403                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
404                  ,p_token_1                 => 'COMPONENT_NAME'
405                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
406                                                             l_component_type
407                                                           , l_component_code
408                                                           , l_component_type_code
409                                                           , l_component_appl_id
410                                                           , l_amb_context_code
411                                                           )
412                  ,p_token_2                 => 'OWNER'
413                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
414                                                         'XLA_OWNER_TYPE'
415                                                         ,l_component_type_code
416                                                         )
417                  ,p_token_3                 => 'PAD_NAME'
418                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
419                  ,p_token_4                 => 'PAD_OWNER'
420                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
421                                                         'XLA_OWNER_TYPE'
422                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
423                                                         )
424                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
425                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
426                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
427                  ,p_ae_header_id            => NULL
428 );
429 RETURN l_output_value;
430 EXCEPTION
431   WHEN xla_exceptions_pkg.application_exception THEN
432       RAISE;
433   WHEN OTHERS THEN
434        xla_exceptions_pkg.raise_message
435            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctDerRule_2');
436 END AcctDerRule_2;
437 --
438 
439 ---------------------------------------
440 --
441 -- PRIVATE FUNCTION
442 --         AcctDerRule_3
443 --
444 ---------------------------------------
445 FUNCTION AcctDerRule_3 (
446   p_application_id              IN NUMBER
447 , p_ae_header_id                IN NUMBER
448 , p_side                        IN VARCHAR2 
449 --Offset Account for the Write Off
450  , p_source_3            IN NUMBER
451 , x_transaction_coa_id         OUT NOCOPY NUMBER
452 , x_accounting_coa_id          OUT NOCOPY NUMBER
453 , x_value_type_code            OUT NOCOPY VARCHAR2
454 )
455 RETURN NUMBER
456 IS
457 l_component_type       VARCHAR2(80)  ;
458 l_component_code       VARCHAR2(30)  ;
459 l_component_type_code  VARCHAR2(1)   ;
460 l_component_appl_id    INTEGER       ;
461 l_amb_context_code     VARCHAR2(30)  ;
462 l_log_module           VARCHAR2(240) ;
463 l_output_value         NUMBER        ;
464 BEGIN
465 IF g_log_enabled THEN
466       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_3';
467 END IF;
468 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
469       trace
470          (p_msg      => 'BEGIN of AcctDerRule_3'
471          ,p_level    => C_LEVEL_PROCEDURE
472          ,p_module   => l_log_module);
473 END IF;
474 --
475 l_component_type         := 'AMB_ADR';
476 l_component_code         := 'CST_AWO_OFFSET';
477 l_component_type_code    := 'S';
478 l_component_appl_id      :=  707;
479 l_amb_context_code       := 'DEFAULT';
480 x_transaction_coa_id     :=  null;
481 x_accounting_coa_id      :=  null;
482 --
483 
484  --
485   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
486       trace
487          (p_msg      => 'END of AcctDerRule_3'
488          ,p_level    => C_LEVEL_PROCEDURE
489          ,p_module   => l_log_module);
490   END IF;
491   x_value_type_code := 'S';
492   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_3));
493   RETURN l_output_value;
494 
495 --
496 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
497       trace
498          (p_msg      => 'END of AcctDerRule_3(invalid)'
499          ,p_level    => C_LEVEL_PROCEDURE
500          ,p_module   => l_log_module);
501 END IF;
502 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
503 x_value_type_code := null;
504 l_output_value    := null;
505 xla_accounting_err_pkg.build_message
506                  (p_appli_s_name            => 'XLA'
507                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
508                  ,p_token_1                 => 'COMPONENT_NAME'
509                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
510                                                             l_component_type
511                                                           , l_component_code
512                                                           , l_component_type_code
513                                                           , l_component_appl_id
514                                                           , l_amb_context_code
515                                                           )
516                  ,p_token_2                 => 'OWNER'
517                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
518                                                         'XLA_OWNER_TYPE'
519                                                         ,l_component_type_code
520                                                         )
521                  ,p_token_3                 => 'PAD_NAME'
522                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
523                  ,p_token_4                 => 'PAD_OWNER'
524                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
525                                                         'XLA_OWNER_TYPE'
526                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
527                                                         )
528                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
529                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
530                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
531                  ,p_ae_header_id            => NULL
532 );
533 RETURN l_output_value;
534 EXCEPTION
535   WHEN xla_exceptions_pkg.application_exception THEN
536       RAISE;
537   WHEN OTHERS THEN
538        xla_exceptions_pkg.raise_message
539            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctDerRule_3');
540 END AcctDerRule_3;
541 --
542 
543 ---------------------------------------
544 --
545 -- PRIVATE FUNCTION
546 --         AcctDerRule_4
547 --
548 ---------------------------------------
549 FUNCTION AcctDerRule_4 (
550   p_application_id              IN NUMBER
551 , p_ae_header_id                IN NUMBER
552 , p_side                        IN VARCHAR2 
553 --Cost Management Default Account
554  , p_source_4            IN NUMBER
555 , x_transaction_coa_id         OUT NOCOPY NUMBER
556 , x_accounting_coa_id          OUT NOCOPY NUMBER
557 , x_value_type_code            OUT NOCOPY VARCHAR2
558 )
559 RETURN NUMBER
560 IS
561 l_component_type       VARCHAR2(80)  ;
562 l_component_code       VARCHAR2(30)  ;
563 l_component_type_code  VARCHAR2(1)   ;
564 l_component_appl_id    INTEGER       ;
565 l_amb_context_code     VARCHAR2(30)  ;
566 l_log_module           VARCHAR2(240) ;
567 l_output_value         NUMBER        ;
568 BEGIN
569 IF g_log_enabled THEN
570       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_4';
571 END IF;
572 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
573       trace
574          (p_msg      => 'BEGIN of AcctDerRule_4'
575          ,p_level    => C_LEVEL_PROCEDURE
576          ,p_module   => l_log_module);
577 END IF;
578 --
579 l_component_type         := 'AMB_ADR';
580 l_component_code         := 'CST_DEFAULT';
581 l_component_type_code    := 'S';
582 l_component_appl_id      :=  707;
583 l_amb_context_code       := 'DEFAULT';
584 x_transaction_coa_id     :=  null;
585 x_accounting_coa_id      :=  null;
586 --
587 
588  --
589   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
590       trace
591          (p_msg      => 'END of AcctDerRule_4'
592          ,p_level    => C_LEVEL_PROCEDURE
593          ,p_module   => l_log_module);
594   END IF;
595   x_value_type_code := 'S';
596   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_4));
597   RETURN l_output_value;
598 
599 --
600 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
601       trace
602          (p_msg      => 'END of AcctDerRule_4(invalid)'
603          ,p_level    => C_LEVEL_PROCEDURE
604          ,p_module   => l_log_module);
605 END IF;
606 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
607 x_value_type_code := null;
608 l_output_value    := null;
609 xla_accounting_err_pkg.build_message
610                  (p_appli_s_name            => 'XLA'
611                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
612                  ,p_token_1                 => 'COMPONENT_NAME'
613                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
614                                                             l_component_type
615                                                           , l_component_code
616                                                           , l_component_type_code
617                                                           , l_component_appl_id
618                                                           , l_amb_context_code
619                                                           )
620                  ,p_token_2                 => 'OWNER'
621                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
622                                                         'XLA_OWNER_TYPE'
623                                                         ,l_component_type_code
624                                                         )
625                  ,p_token_3                 => 'PAD_NAME'
626                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
627                  ,p_token_4                 => 'PAD_OWNER'
628                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
629                                                         'XLA_OWNER_TYPE'
630                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
631                                                         )
632                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
633                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
634                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
635                  ,p_ae_header_id            => NULL
636 );
637 RETURN l_output_value;
638 EXCEPTION
639   WHEN xla_exceptions_pkg.application_exception THEN
640       RAISE;
641   WHEN OTHERS THEN
642        xla_exceptions_pkg.raise_message
643            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctDerRule_4');
644 END AcctDerRule_4;
645 --
646 
647 ---------------------------------------
648 --
649 -- PRIVATE FUNCTION
650 --         AcctLineType_5
651 --
652 ---------------------------------------
653 PROCEDURE AcctLineType_5 (
654   p_application_id        IN NUMBER
655  ,p_event_id              IN NUMBER
656  ,p_calculate_acctd_flag  IN VARCHAR2
657  ,p_calculate_g_l_flag    IN VARCHAR2
658  ,p_actual_flag           IN OUT VARCHAR2
659  ,p_balance_type_code     OUT VARCHAR2
660  ,p_gain_or_loss_ref      OUT VARCHAR2
661  
662 --Cost Management Default Account
663  , p_source_4            IN NUMBER
664 --Receiving Accounting Line Type
665  , p_source_5            IN VARCHAR2
666 --Applied to Application ID
667  , p_source_6            IN NUMBER
668 --Applied to Distribution Link Type
669  , p_source_7            IN VARCHAR2
670 --Applied to Entity Code
671  , p_source_8            IN VARCHAR2
672 --PO_DISTRIBUTION_ID
673  , p_source_9            IN NUMBER
674 --Applied To Purchase Document Identifier
675  , p_source_10            IN NUMBER
676 --DISTRIBUTION_IDENTIFIER
677  , p_source_11            IN NUMBER
678 --Distribution Type
679  , p_source_12            IN VARCHAR2
680  , p_source_12_meaning    IN VARCHAR2
681 --PO Budget Account
682  , p_source_13            IN NUMBER
683 --Encumbrance Reversal Amount Entered
684  , p_source_14            IN NUMBER
685 --Entered Currency Code
686  , p_source_15            IN VARCHAR2
687 --Transaction Encumbrance Reversal Amount
688  , p_source_16            IN NUMBER
689 --Costing Period End Accrual Encumbrance Upgrade Option
690  , p_source_17            IN VARCHAR2
691 --Entered Amount
692  , p_source_18            IN NUMBER
693 --Currency Conversion Date
694  , p_source_19            IN DATE
695 --Currency Conversion Rate
696  , p_source_20            IN NUMBER
697 --Currency Conversion Type
698  , p_source_21            IN VARCHAR2
699 --Accounted Amount
700  , p_source_22            IN NUMBER
701 --Purchasing Encumbrance Type Identifier
702  , p_source_23            IN NUMBER
703 )
704 IS
705 
706 l_component_type              VARCHAR2(80);
707 l_component_code              VARCHAR2(30);
708 l_component_type_code         VARCHAR2(1);
709 l_component_appl_id           INTEGER;
710 l_amb_context_code            VARCHAR2(30);
711 l_entity_code                 VARCHAR2(30);
712 l_event_class_code            VARCHAR2(30);
713 l_ae_header_id                NUMBER;
714 l_event_type_code             VARCHAR2(30);
715 l_line_definition_code        VARCHAR2(30);
716 l_line_definition_owner_code  VARCHAR2(1);
717 --
718 -- adr variables
719 l_segment                     VARCHAR2(30);
720 l_ccid                        NUMBER;
721 l_adr_transaction_coa_id      NUMBER;
722 l_adr_accounting_coa_id       NUMBER;
723 l_adr_flexfield_segment_code  VARCHAR2(30);
724 l_adr_flex_value_set_id       NUMBER;
725 l_adr_value_type_code         VARCHAR2(30);
726 l_adr_value_combination_id    NUMBER;
727 l_adr_value_segment_code      VARCHAR2(30);
728 
729 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
730 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
731 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
732 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
733 
734 -- 4262811 Variables ------------------------------------------------------------------------------------------
735 l_entered_amt_idx             NUMBER;
736 l_accted_amt_idx              NUMBER;
737 l_acc_rev_flag                VARCHAR2(1);
738 l_accrual_line_num            NUMBER;
739 l_tmp_amt                     NUMBER;
740 l_acc_rev_natural_side_code   VARCHAR2(1);
741 
742 l_num_entries                 NUMBER;
743 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
744 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
745 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
746 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
747 l_recog_line_1                NUMBER;
748 l_recog_line_2                NUMBER;
749 
750 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
751 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
752 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
753 
754 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
755 
756 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
757 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
758 
759 ---------------------------------------------------------------------------------------------------------------
760 
761 
762 --
763 -- bulk performance
764 --
765 l_balance_type_code           VARCHAR2(1);
766 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
767 l_log_module                  VARCHAR2(240);
768 
769 --
770 -- Upgrade strategy
771 --
772 l_actual_upg_option           VARCHAR2(1);
773 l_enc_upg_option           VARCHAR2(1);
774 
775 --
776 BEGIN
777 --
778 IF g_log_enabled THEN
779       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_5';
780 END IF;
781 --
782 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
783 
784       trace
785          (p_msg      => 'BEGIN of AcctLineType_5'
786          ,p_level    => C_LEVEL_PROCEDURE
787          ,p_module   => l_log_module);
788 
789 END IF;
790 --
791 l_component_type             := 'AMB_JLT';
792 l_component_code             := 'ACCRUAL';
793 l_component_type_code        := 'S';
794 l_component_appl_id          :=  707;
795 l_amb_context_code           := 'DEFAULT';
796 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
797 l_event_class_code           := 'PERIOD_END_ACCRUAL';
798 l_event_type_code            := 'PERIOD_END_ACCRUAL_ALL';
799 l_line_definition_owner_code := 'S';
800 l_line_definition_code       := 'PERIOD_END_ACCRUAL';
801 --
802 l_balance_type_code          := 'A';
803 l_segment                     := NULL;
804 l_ccid                        := NULL;
805 l_adr_transaction_coa_id      := NULL;
806 l_adr_accounting_coa_id       := NULL;
807 l_adr_flexfield_segment_code  := NULL;
808 l_adr_flex_value_set_id       := NULL;
809 l_adr_value_type_code         := NULL;
810 l_adr_value_combination_id    := NULL;
811 l_adr_value_segment_code      := NULL;
812 
813 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
814 l_bflow_class_code           := '';    -- 4219869 Business Flow
815 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
816 l_budgetary_control_flag     := 'N';
817 
818 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
819 l_bflow_applied_to_amt       := NULL; -- 5132302
820 l_entered_amt_idx            := NULL;          -- 4262811
821 l_accted_amt_idx             := NULL;          -- 4262811
822 l_acc_rev_flag               := NULL;          -- 4262811
823 l_accrual_line_num           := NULL;          -- 4262811
824 l_tmp_amt                    := NULL;          -- 4262811
825 --
826  
827 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
828     l_balance_type_code <> 'B' THEN
829 IF NVL(p_source_5,'
830 ') =  'Accrual'
831  THEN 
832 
833    --
834    XLA_AE_LINES_PKG.SetNewLine;
835 
836    p_balance_type_code          := l_balance_type_code;
837    -- set the flag so later we will know whether the gain loss line needs to be created
838    
839    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
840      p_actual_flag :='A';
841    END IF;
842 
843    --
844    -- bulk performance
845    --
846    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
847                                       p_header_num   => 0); -- 4262811
848    --
849    -- set accounting line options
850    --
851    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
852            p_natural_side_code          => 'D'
853          , p_gain_or_loss_flag          => 'N'
854          , p_gl_transfer_mode_code      => 'S'
855          , p_acct_entry_type_code       => 'A'
856          , p_switch_side_flag           => 'Y'
857          , p_merge_duplicate_code       => 'N'
858          );
859    --
860    l_acc_rev_natural_side_code := 'C';  -- 4262811
861    -- 
862    --
863    -- set accounting line type info
864    --
865    xla_ae_lines_pkg.SetAcctLineType
866       (p_component_type             => l_component_type
867       ,p_event_type_code            => l_event_type_code
868       ,p_line_definition_owner_code => l_line_definition_owner_code
869       ,p_line_definition_code       => l_line_definition_code
870       ,p_accounting_line_code       => l_component_code
871       ,p_accounting_line_type_code  => l_component_type_code
872       ,p_accounting_line_appl_id    => l_component_appl_id
873       ,p_amb_context_code           => l_amb_context_code
874       ,p_entity_code                => l_entity_code
875       ,p_event_class_code           => l_event_class_code);
876    --
877    -- set accounting class
878    --
879    xla_ae_lines_pkg.SetAcctClass(
880            p_accounting_class_code  => 'ACCRUAL'
881          , p_ae_header_id           => l_ae_header_id
882          );
883 
884    --
885    -- set rounding class
886    --
887    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
888                       'ACCRUAL';
889 
890    --
891    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
892    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
893    --
894    -- bulk performance
895    --
896    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
897 
898    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
899       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
900 
901    -- 4955764
902    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
903       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
904 
905    -- 4458381 Public Sector Enh
906    
907    --
908    -- set accounting attributes for the line type
909    --
910    l_entered_amt_idx := 17;
911    l_accted_amt_idx  := 22;
912    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
913    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
914    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
915    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
916    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
917    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
918    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
919    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
920    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_9);
921    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
922    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_10);
923    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
924    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
925    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
926    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
927    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
928    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_13);
929    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
930    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
931    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
932    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
933    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
934    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
935    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
936    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_13);
937    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
938    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
939    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
940    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
941    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
942    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
943    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
944    l_rec_acct_attrs.array_char_value(16)  := p_source_17;
945    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
946    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
947    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
948    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
949    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
950    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
951    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
952    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
953    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
954    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
955    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
956    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
957    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
958    l_rec_acct_attrs.array_num_value(23)  := p_source_23;
959    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
960    l_rec_acct_attrs.array_num_value(24)  := p_source_23;
961 
962    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
963    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
964 
965    ---------------------------------------------------------------------------------------------------------------
966    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
967    ---------------------------------------------------------------------------------------------------------------
968    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
969 
970    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
971    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
972 
973    IF xla_accounting_cache_pkg.GetValueChar
974          (p_source_code         => 'LEDGER_CATEGORY_CODE'
975          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
976    AND l_bflow_method_code = 'PRIOR_ENTRY'
977 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
978    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
979          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
980        )
981    THEN
982          xla_ae_lines_pkg.BflowUpgEntry
983            (p_business_method_code    => l_bflow_method_code
984            ,p_business_class_code     => l_bflow_class_code
985            ,p_balance_type            => l_balance_type_code);
986    ELSE
987       NULL;
988 -- No business flow processing for business flow method of NONE.
989    END IF;
990 
991    --
992    -- call analytical criteria
993    --
994    
995    --
996    -- call description
997    --
998    -- No description or it is inherited.
999    --
1000    -- call ADRs
1001    -- Bug 4922099
1002    --
1003    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
1004         (NVL(l_actual_upg_option, 'N') = 'O') OR
1005         (NVL(l_enc_upg_option, 'N') = 'O')
1006       )
1007    THEN
1008    NULL;
1009    --
1010    --
1011    
1012   l_ccid := AcctDerRule_4(
1013            p_application_id           => p_application_id
1014          , p_ae_header_id             => l_ae_header_id 
1015 , p_source_4 => p_source_4
1016          , x_transaction_coa_id       => l_adr_transaction_coa_id
1017          , x_accounting_coa_id        => l_adr_accounting_coa_id
1018          , x_value_type_code          => l_adr_value_type_code
1019          , p_side                     => 'NA'
1020    );
1021 
1022    xla_ae_lines_pkg.set_ccid(
1023     p_code_combination_id          => l_ccid
1024   , p_value_type_code              => l_adr_value_type_code
1025   , p_transaction_coa_id           => l_adr_transaction_coa_id
1026   , p_accounting_coa_id            => l_adr_accounting_coa_id
1027   , p_adr_code                     => 'CST_DEFAULT'
1028   , p_adr_type_code                => 'S'
1029   , p_component_type               => l_component_type
1030   , p_component_code               => l_component_code
1031   , p_component_type_code          => l_component_type_code
1032   , p_component_appl_id            => l_component_appl_id
1033   , p_amb_context_code             => l_amb_context_code
1034   , p_side                         => 'NA'
1035   );
1036 
1037 
1038    --
1039    --
1040    END IF;
1041    --
1042    -- Bug 4922099
1043    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
1044           (NVL(l_enc_upg_option, 'N') = 'O')
1045         ) AND
1046         (l_bflow_method_code = 'PRIOR_ENTRY')
1047       )
1048    THEN
1049       IF
1050       --
1051       1 = 2
1052       --
1053       THEN
1054       xla_accounting_err_pkg.build_message
1055                                     (p_appli_s_name            => 'XLA'
1056                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1057                                     ,p_token_1                 => 'LINE_NUMBER'
1058                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
1059                                     ,p_token_2                 => 'LINE_TYPE_NAME'
1060                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
1061                                                                              l_component_type
1062                                                                             ,l_component_code
1063                                                                             ,l_component_type_code
1064                                                                             ,l_component_appl_id
1065                                                                             ,l_amb_context_code
1066                                                                             ,l_entity_code
1067                                                                             ,l_event_class_code
1068                                                                            )
1069                                     ,p_token_3                 => 'OWNER'
1070                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
1071                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
1072                                                                           ,p_lookup_code    => l_component_type_code
1073                                                                          )
1074                                     ,p_token_4                 => 'PRODUCT_NAME'
1075                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
1076                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
1077                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
1078                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
1079                                     ,p_ae_header_id            =>  NULL
1080                                        );
1081 
1082         IF (C_LEVEL_ERROR>= g_log_level) THEN
1083                  trace
1084                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1085                       ,p_level    => C_LEVEL_ERROR
1086                       ,p_module   => l_log_module);
1087         END IF;
1088       END IF;
1089    END IF;
1090    --
1091    --
1092    ------------------------------------------------------------------------------------------------
1093    -- 4219869 Business Flow
1094    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
1095    -- Prior Entry.  Currently, the following code is always generated.
1096    ------------------------------------------------------------------------------------------------
1097    XLA_AE_LINES_PKG.ValidateCurrentLine;
1098 
1099    ------------------------------------------------------------------------------------
1100    -- 4219869 Business Flow
1101    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
1102    ------------------------------------------------------------------------------------
1103    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1104 
1105    ----------------------------------------------------------------------------------
1106    -- 4219869 Business Flow
1107    -- Update journal entry status -- Need to generate this within IF <condition>
1108    ----------------------------------------------------------------------------------
1109    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1110          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
1111          ,p_balance_type_code => l_balance_type_code
1112          );
1113 
1114    -------------------------------------------------------------------------------------------
1115    -- 4262811 - Generate the Accrual Reversal lines
1116    -------------------------------------------------------------------------------------------
1117    BEGIN
1118       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
1119                               (g_array_event(p_event_id).array_value_num('header_index'));
1120       IF l_acc_rev_flag IS NULL THEN
1121          l_acc_rev_flag := 'N';
1122       END IF;
1123    EXCEPTION
1124       WHEN OTHERS THEN
1125          l_acc_rev_flag := 'N';
1126    END;
1127    --
1128    IF (l_acc_rev_flag = 'Y') THEN
1129 
1130        -- 4645092  ------------------------------------------------------------------------------
1131        -- To allow MPA report to determine if it should generate report process
1132        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
1133        ------------------------------------------------------------------------------------------
1134 
1135        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
1136        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
1137    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
1138    -- call ADRs
1139    -- Bug 4922099
1140    --
1141    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
1142         (NVL(l_actual_upg_option, 'N') = 'O') OR
1143         (NVL(l_enc_upg_option, 'N') = 'O')
1144       )
1145    THEN
1146    NULL;
1147    --
1148    --
1149    
1150   l_ccid := AcctDerRule_4(
1151            p_application_id           => p_application_id
1152          , p_ae_header_id             => l_ae_header_id 
1153 , p_source_4 => p_source_4
1154          , x_transaction_coa_id       => l_adr_transaction_coa_id
1155          , x_accounting_coa_id        => l_adr_accounting_coa_id
1156          , x_value_type_code          => l_adr_value_type_code
1157          , p_side                     => 'NA'
1158    );
1159 
1160    xla_ae_lines_pkg.set_ccid(
1161     p_code_combination_id          => l_ccid
1162   , p_value_type_code              => l_adr_value_type_code
1163   , p_transaction_coa_id           => l_adr_transaction_coa_id
1164   , p_accounting_coa_id            => l_adr_accounting_coa_id
1165   , p_adr_code                     => 'CST_DEFAULT'
1166   , p_adr_type_code                => 'S'
1167   , p_component_type               => l_component_type
1168   , p_component_code               => l_component_code
1169   , p_component_type_code          => l_component_type_code
1170   , p_component_appl_id            => l_component_appl_id
1171   , p_amb_context_code             => l_amb_context_code
1172   , p_side                         => 'NA'
1173   );
1174 
1175 
1176    --
1177    --
1178    END IF;
1179 
1180        --
1181        -- Update the line information that should be overwritten
1182        --
1183        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
1184                                          p_header_num   => 1);
1185        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
1186 
1187        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
1188 
1189        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
1190           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
1191        END IF;
1192 
1193       --
1194       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
1195       --
1196       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
1197           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
1198       ELSE
1199           ---------------------------------------------------------------------------------------------------
1200           -- 4262811a Switch Sign
1201           ---------------------------------------------------------------------------------------------------
1202           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
1203           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1204                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1205           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1206                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1207           -- 5132302
1208           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
1209                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1210 
1211       END IF;
1212 
1213       -- 4955764
1214       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1215       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
1216 
1217 
1218       XLA_AE_LINES_PKG.ValidateCurrentLine;
1219       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1220 
1221       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1222                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
1223                ,p_balance_type_code => l_balance_type_code);
1224 
1225    END IF;
1226 
1227    -----------------------------------------------------------------------------------------
1228    -- 4262811 Multiperiod Accounting
1229    -----------------------------------------------------------------------------------------
1230      -- No MPA option is assigned.
1231 
1232 
1233 END IF;
1234 END IF;
1235 --
1236 
1237 --
1238 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1239    trace
1240       (p_msg      => 'END of AcctLineType_5'
1241       ,p_level    => C_LEVEL_PROCEDURE
1242       ,p_module   => l_log_module);
1243 END IF;
1244 --
1245 EXCEPTION
1246   WHEN xla_exceptions_pkg.application_exception THEN
1247       RAISE;
1248   WHEN OTHERS THEN
1249        xla_exceptions_pkg.raise_message
1250            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_5');
1251 END AcctLineType_5;
1252 --
1253 
1254 ---------------------------------------
1255 --
1256 -- PRIVATE FUNCTION
1257 --         AcctLineType_6
1258 --
1259 ---------------------------------------
1260 PROCEDURE AcctLineType_6 (
1261   p_application_id        IN NUMBER
1262  ,p_event_id              IN NUMBER
1263  ,p_calculate_acctd_flag  IN VARCHAR2
1264  ,p_calculate_g_l_flag    IN VARCHAR2
1265  ,p_actual_flag           IN OUT VARCHAR2
1266  ,p_balance_type_code     OUT VARCHAR2
1267  ,p_gain_or_loss_ref      OUT VARCHAR2
1268  
1269 --Cost Management Default Account
1270  , p_source_4            IN NUMBER
1271 --DISTRIBUTION_IDENTIFIER
1272  , p_source_11            IN NUMBER
1273 --Distribution Type
1274  , p_source_12            IN VARCHAR2
1275  , p_source_12_meaning    IN VARCHAR2
1276 --Entered Currency Code
1277  , p_source_15            IN VARCHAR2
1278 --Entered Amount
1279  , p_source_18            IN NUMBER
1280 --Currency Conversion Date
1281  , p_source_19            IN DATE
1282 --Currency Conversion Rate
1283  , p_source_20            IN NUMBER
1284 --Currency Conversion Type
1285  , p_source_21            IN VARCHAR2
1286 --Accounted Amount
1287  , p_source_22            IN NUMBER
1288 --Accounting Line Type
1289  , p_source_24            IN NUMBER
1290 )
1291 IS
1292 
1293 l_component_type              VARCHAR2(80);
1294 l_component_code              VARCHAR2(30);
1295 l_component_type_code         VARCHAR2(1);
1296 l_component_appl_id           INTEGER;
1297 l_amb_context_code            VARCHAR2(30);
1298 l_entity_code                 VARCHAR2(30);
1299 l_event_class_code            VARCHAR2(30);
1300 l_ae_header_id                NUMBER;
1301 l_event_type_code             VARCHAR2(30);
1302 l_line_definition_code        VARCHAR2(30);
1303 l_line_definition_owner_code  VARCHAR2(1);
1304 --
1305 -- adr variables
1306 l_segment                     VARCHAR2(30);
1307 l_ccid                        NUMBER;
1308 l_adr_transaction_coa_id      NUMBER;
1309 l_adr_accounting_coa_id       NUMBER;
1310 l_adr_flexfield_segment_code  VARCHAR2(30);
1311 l_adr_flex_value_set_id       NUMBER;
1312 l_adr_value_type_code         VARCHAR2(30);
1313 l_adr_value_combination_id    NUMBER;
1314 l_adr_value_segment_code      VARCHAR2(30);
1315 
1316 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
1317 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
1318 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
1319 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
1320 
1321 -- 4262811 Variables ------------------------------------------------------------------------------------------
1322 l_entered_amt_idx             NUMBER;
1323 l_accted_amt_idx              NUMBER;
1324 l_acc_rev_flag                VARCHAR2(1);
1325 l_accrual_line_num            NUMBER;
1326 l_tmp_amt                     NUMBER;
1327 l_acc_rev_natural_side_code   VARCHAR2(1);
1328 
1329 l_num_entries                 NUMBER;
1330 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
1331 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
1332 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
1333 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
1334 l_recog_line_1                NUMBER;
1335 l_recog_line_2                NUMBER;
1336 
1337 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
1338 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
1339 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
1340 
1341 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
1342 
1343 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
1344 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
1345 
1346 ---------------------------------------------------------------------------------------------------------------
1347 
1348 
1349 --
1350 -- bulk performance
1351 --
1352 l_balance_type_code           VARCHAR2(1);
1353 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
1354 l_log_module                  VARCHAR2(240);
1355 
1356 --
1357 -- Upgrade strategy
1358 --
1359 l_actual_upg_option           VARCHAR2(1);
1360 l_enc_upg_option           VARCHAR2(1);
1361 
1362 --
1363 BEGIN
1364 --
1365 IF g_log_enabled THEN
1366       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_6';
1367 END IF;
1368 --
1369 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1370 
1371       trace
1372          (p_msg      => 'BEGIN of AcctLineType_6'
1373          ,p_level    => C_LEVEL_PROCEDURE
1374          ,p_module   => l_log_module);
1375 
1376 END IF;
1377 --
1378 l_component_type             := 'AMB_JLT';
1379 l_component_code             := 'ACCRUAL';
1380 l_component_type_code        := 'S';
1381 l_component_appl_id          :=  707;
1382 l_amb_context_code           := 'DEFAULT';
1383 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
1384 l_event_class_code           := 'CON_INV_OWNR_TXFR';
1385 l_event_type_code            := 'CON_INV_OWNR_TXFR_ALL';
1386 l_line_definition_owner_code := 'S';
1387 l_line_definition_code       := 'CON_INV_OWNR_TXFR';
1388 --
1389 l_balance_type_code          := 'A';
1390 l_segment                     := NULL;
1391 l_ccid                        := NULL;
1392 l_adr_transaction_coa_id      := NULL;
1393 l_adr_accounting_coa_id       := NULL;
1394 l_adr_flexfield_segment_code  := NULL;
1395 l_adr_flex_value_set_id       := NULL;
1396 l_adr_value_type_code         := NULL;
1397 l_adr_value_combination_id    := NULL;
1398 l_adr_value_segment_code      := NULL;
1399 
1400 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
1401 l_bflow_class_code           := '';    -- 4219869 Business Flow
1402 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
1403 l_budgetary_control_flag     := 'N';
1404 
1405 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
1406 l_bflow_applied_to_amt       := NULL; -- 5132302
1407 l_entered_amt_idx            := NULL;          -- 4262811
1408 l_accted_amt_idx             := NULL;          -- 4262811
1409 l_acc_rev_flag               := NULL;          -- 4262811
1410 l_accrual_line_num           := NULL;          -- 4262811
1411 l_tmp_amt                    := NULL;          -- 4262811
1412 --
1413  
1414 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
1415     l_balance_type_code <> 'B' THEN
1416 IF NVL(p_source_24,9E125) =  16
1417  THEN 
1418 
1419    --
1420    XLA_AE_LINES_PKG.SetNewLine;
1421 
1422    p_balance_type_code          := l_balance_type_code;
1423    -- set the flag so later we will know whether the gain loss line needs to be created
1424    
1425    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
1426      p_actual_flag :='A';
1427    END IF;
1428 
1429    --
1430    -- bulk performance
1431    --
1432    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
1433                                       p_header_num   => 0); -- 4262811
1434    --
1435    -- set accounting line options
1436    --
1437    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
1438            p_natural_side_code          => 'D'
1439          , p_gain_or_loss_flag          => 'N'
1440          , p_gl_transfer_mode_code      => 'S'
1441          , p_acct_entry_type_code       => 'A'
1442          , p_switch_side_flag           => 'Y'
1443          , p_merge_duplicate_code       => 'N'
1444          );
1445    --
1446    l_acc_rev_natural_side_code := 'C';  -- 4262811
1447    -- 
1448    --
1449    -- set accounting line type info
1450    --
1451    xla_ae_lines_pkg.SetAcctLineType
1452       (p_component_type             => l_component_type
1453       ,p_event_type_code            => l_event_type_code
1454       ,p_line_definition_owner_code => l_line_definition_owner_code
1455       ,p_line_definition_code       => l_line_definition_code
1456       ,p_accounting_line_code       => l_component_code
1457       ,p_accounting_line_type_code  => l_component_type_code
1458       ,p_accounting_line_appl_id    => l_component_appl_id
1459       ,p_amb_context_code           => l_amb_context_code
1460       ,p_entity_code                => l_entity_code
1461       ,p_event_class_code           => l_event_class_code);
1462    --
1463    -- set accounting class
1464    --
1465    xla_ae_lines_pkg.SetAcctClass(
1466            p_accounting_class_code  => 'ACCRUAL'
1467          , p_ae_header_id           => l_ae_header_id
1468          );
1469 
1470    --
1471    -- set rounding class
1472    --
1473    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
1474                       'ACCRUAL';
1475 
1476    --
1477    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
1478    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
1479    --
1480    -- bulk performance
1481    --
1482    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
1483 
1484    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
1485       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
1486 
1487    -- 4955764
1488    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1489       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
1490 
1491    -- 4458381 Public Sector Enh
1492    
1493    --
1494    -- set accounting attributes for the line type
1495    --
1496    l_entered_amt_idx := 3;
1497    l_accted_amt_idx  := 8;
1498    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
1499    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
1500    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
1501    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
1502    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
1503    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
1504    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
1505    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
1506    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
1507    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
1508    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
1509    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
1510    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
1511    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
1512    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
1513    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
1514    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
1515 
1516    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
1517    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
1518 
1519    ---------------------------------------------------------------------------------------------------------------
1520    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
1521    ---------------------------------------------------------------------------------------------------------------
1522    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
1523 
1524    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1525    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1526 
1527    IF xla_accounting_cache_pkg.GetValueChar
1528          (p_source_code         => 'LEDGER_CATEGORY_CODE'
1529          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
1530    AND l_bflow_method_code = 'PRIOR_ENTRY'
1531 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
1532    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
1533          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
1534        )
1535    THEN
1536          xla_ae_lines_pkg.BflowUpgEntry
1537            (p_business_method_code    => l_bflow_method_code
1538            ,p_business_class_code     => l_bflow_class_code
1539            ,p_balance_type            => l_balance_type_code);
1540    ELSE
1541       NULL;
1542 -- No business flow processing for business flow method of NONE.
1543    END IF;
1544 
1545    --
1546    -- call analytical criteria
1547    --
1548    
1549    --
1550    -- call description
1551    --
1552    -- No description or it is inherited.
1553    --
1554    -- call ADRs
1555    -- Bug 4922099
1556    --
1557    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
1558         (NVL(l_actual_upg_option, 'N') = 'O') OR
1559         (NVL(l_enc_upg_option, 'N') = 'O')
1560       )
1561    THEN
1562    NULL;
1563    --
1564    --
1565    
1566   l_ccid := AcctDerRule_4(
1567            p_application_id           => p_application_id
1568          , p_ae_header_id             => l_ae_header_id 
1569 , p_source_4 => p_source_4
1570          , x_transaction_coa_id       => l_adr_transaction_coa_id
1571          , x_accounting_coa_id        => l_adr_accounting_coa_id
1572          , x_value_type_code          => l_adr_value_type_code
1573          , p_side                     => 'NA'
1574    );
1575 
1576    xla_ae_lines_pkg.set_ccid(
1577     p_code_combination_id          => l_ccid
1578   , p_value_type_code              => l_adr_value_type_code
1579   , p_transaction_coa_id           => l_adr_transaction_coa_id
1580   , p_accounting_coa_id            => l_adr_accounting_coa_id
1581   , p_adr_code                     => 'CST_DEFAULT'
1582   , p_adr_type_code                => 'S'
1583   , p_component_type               => l_component_type
1584   , p_component_code               => l_component_code
1585   , p_component_type_code          => l_component_type_code
1586   , p_component_appl_id            => l_component_appl_id
1587   , p_amb_context_code             => l_amb_context_code
1588   , p_side                         => 'NA'
1589   );
1590 
1591 
1592    --
1593    --
1594    END IF;
1595    --
1596    -- Bug 4922099
1597    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
1598           (NVL(l_enc_upg_option, 'N') = 'O')
1599         ) AND
1600         (l_bflow_method_code = 'PRIOR_ENTRY')
1601       )
1602    THEN
1603       IF
1604       --
1605       1 = 2
1606       --
1607       THEN
1608       xla_accounting_err_pkg.build_message
1609                                     (p_appli_s_name            => 'XLA'
1610                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1611                                     ,p_token_1                 => 'LINE_NUMBER'
1612                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
1613                                     ,p_token_2                 => 'LINE_TYPE_NAME'
1614                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
1615                                                                              l_component_type
1616                                                                             ,l_component_code
1617                                                                             ,l_component_type_code
1618                                                                             ,l_component_appl_id
1619                                                                             ,l_amb_context_code
1620                                                                             ,l_entity_code
1621                                                                             ,l_event_class_code
1622                                                                            )
1623                                     ,p_token_3                 => 'OWNER'
1624                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
1625                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
1626                                                                           ,p_lookup_code    => l_component_type_code
1627                                                                          )
1628                                     ,p_token_4                 => 'PRODUCT_NAME'
1629                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
1630                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
1631                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
1632                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
1633                                     ,p_ae_header_id            =>  NULL
1634                                        );
1635 
1636         IF (C_LEVEL_ERROR>= g_log_level) THEN
1637                  trace
1638                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1639                       ,p_level    => C_LEVEL_ERROR
1640                       ,p_module   => l_log_module);
1641         END IF;
1642       END IF;
1643    END IF;
1644    --
1645    --
1646    ------------------------------------------------------------------------------------------------
1647    -- 4219869 Business Flow
1648    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
1649    -- Prior Entry.  Currently, the following code is always generated.
1650    ------------------------------------------------------------------------------------------------
1651    XLA_AE_LINES_PKG.ValidateCurrentLine;
1652 
1653    ------------------------------------------------------------------------------------
1654    -- 4219869 Business Flow
1655    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
1656    ------------------------------------------------------------------------------------
1657    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1658 
1659    ----------------------------------------------------------------------------------
1660    -- 4219869 Business Flow
1661    -- Update journal entry status -- Need to generate this within IF <condition>
1662    ----------------------------------------------------------------------------------
1663    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1664          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
1665          ,p_balance_type_code => l_balance_type_code
1666          );
1667 
1668    -------------------------------------------------------------------------------------------
1669    -- 4262811 - Generate the Accrual Reversal lines
1670    -------------------------------------------------------------------------------------------
1671    BEGIN
1672       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
1673                               (g_array_event(p_event_id).array_value_num('header_index'));
1674       IF l_acc_rev_flag IS NULL THEN
1675          l_acc_rev_flag := 'N';
1676       END IF;
1677    EXCEPTION
1678       WHEN OTHERS THEN
1679          l_acc_rev_flag := 'N';
1680    END;
1681    --
1682    IF (l_acc_rev_flag = 'Y') THEN
1683 
1684        -- 4645092  ------------------------------------------------------------------------------
1685        -- To allow MPA report to determine if it should generate report process
1686        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
1687        ------------------------------------------------------------------------------------------
1688 
1689        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
1690        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
1691    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
1692    -- call ADRs
1693    -- Bug 4922099
1694    --
1695    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
1696         (NVL(l_actual_upg_option, 'N') = 'O') OR
1697         (NVL(l_enc_upg_option, 'N') = 'O')
1698       )
1699    THEN
1700    NULL;
1701    --
1702    --
1703    
1704   l_ccid := AcctDerRule_4(
1705            p_application_id           => p_application_id
1706          , p_ae_header_id             => l_ae_header_id 
1707 , p_source_4 => p_source_4
1708          , x_transaction_coa_id       => l_adr_transaction_coa_id
1709          , x_accounting_coa_id        => l_adr_accounting_coa_id
1710          , x_value_type_code          => l_adr_value_type_code
1711          , p_side                     => 'NA'
1712    );
1713 
1714    xla_ae_lines_pkg.set_ccid(
1715     p_code_combination_id          => l_ccid
1716   , p_value_type_code              => l_adr_value_type_code
1717   , p_transaction_coa_id           => l_adr_transaction_coa_id
1718   , p_accounting_coa_id            => l_adr_accounting_coa_id
1719   , p_adr_code                     => 'CST_DEFAULT'
1720   , p_adr_type_code                => 'S'
1721   , p_component_type               => l_component_type
1722   , p_component_code               => l_component_code
1723   , p_component_type_code          => l_component_type_code
1724   , p_component_appl_id            => l_component_appl_id
1725   , p_amb_context_code             => l_amb_context_code
1726   , p_side                         => 'NA'
1727   );
1728 
1729 
1730    --
1731    --
1732    END IF;
1733 
1734        --
1735        -- Update the line information that should be overwritten
1736        --
1737        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
1738                                          p_header_num   => 1);
1739        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
1740 
1741        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
1742 
1743        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
1744           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
1745        END IF;
1746 
1747       --
1748       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
1749       --
1750       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
1751           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
1752       ELSE
1753           ---------------------------------------------------------------------------------------------------
1754           -- 4262811a Switch Sign
1755           ---------------------------------------------------------------------------------------------------
1756           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
1757           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1758                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1759           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1760                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1761           -- 5132302
1762           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
1763                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1764 
1765       END IF;
1766 
1767       -- 4955764
1768       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1769       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
1770 
1771 
1772       XLA_AE_LINES_PKG.ValidateCurrentLine;
1773       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1774 
1775       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1776                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
1777                ,p_balance_type_code => l_balance_type_code);
1778 
1779    END IF;
1780 
1781    -----------------------------------------------------------------------------------------
1782    -- 4262811 Multiperiod Accounting
1783    -----------------------------------------------------------------------------------------
1784      -- No MPA option is assigned.
1785 
1786 
1787 END IF;
1788 END IF;
1789 --
1790 
1791 --
1792 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1793    trace
1794       (p_msg      => 'END of AcctLineType_6'
1795       ,p_level    => C_LEVEL_PROCEDURE
1796       ,p_module   => l_log_module);
1797 END IF;
1798 --
1799 EXCEPTION
1800   WHEN xla_exceptions_pkg.application_exception THEN
1801       RAISE;
1802   WHEN OTHERS THEN
1803        xla_exceptions_pkg.raise_message
1804            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_6');
1805 END AcctLineType_6;
1806 --
1807 
1808 ---------------------------------------
1809 --
1810 -- PRIVATE FUNCTION
1811 --         AcctLineType_7
1812 --
1813 ---------------------------------------
1814 PROCEDURE AcctLineType_7 (
1815   p_application_id        IN NUMBER
1816  ,p_event_id              IN NUMBER
1817  ,p_calculate_acctd_flag  IN VARCHAR2
1818  ,p_calculate_g_l_flag    IN VARCHAR2
1819  ,p_actual_flag           IN OUT VARCHAR2
1820  ,p_balance_type_code     OUT VARCHAR2
1821  ,p_gain_or_loss_ref      OUT VARCHAR2
1822  
1823 --Accrual Account for the Write Off
1824  , p_source_1            IN NUMBER
1825 --Distribution Type
1826  , p_source_12            IN VARCHAR2
1827  , p_source_12_meaning    IN VARCHAR2
1828 --Entered Currency Code
1829  , p_source_15            IN VARCHAR2
1830 --Entered Amount
1831  , p_source_18            IN NUMBER
1832 --Currency Conversion Date
1833  , p_source_19            IN DATE
1834 --Currency Conversion Rate
1835  , p_source_20            IN NUMBER
1836 --Currency Conversion Type
1837  , p_source_21            IN VARCHAR2
1838 --Accounted Amount
1839  , p_source_22            IN NUMBER
1840 --Line Number
1841  , p_source_25            IN NUMBER
1842 --WRITE_OFF_ID
1843  , p_source_26            IN NUMBER
1844 )
1845 IS
1846 
1847 l_component_type              VARCHAR2(80);
1848 l_component_code              VARCHAR2(30);
1849 l_component_type_code         VARCHAR2(1);
1850 l_component_appl_id           INTEGER;
1851 l_amb_context_code            VARCHAR2(30);
1852 l_entity_code                 VARCHAR2(30);
1853 l_event_class_code            VARCHAR2(30);
1854 l_ae_header_id                NUMBER;
1855 l_event_type_code             VARCHAR2(30);
1856 l_line_definition_code        VARCHAR2(30);
1857 l_line_definition_owner_code  VARCHAR2(1);
1858 --
1859 -- adr variables
1860 l_segment                     VARCHAR2(30);
1861 l_ccid                        NUMBER;
1862 l_adr_transaction_coa_id      NUMBER;
1863 l_adr_accounting_coa_id       NUMBER;
1864 l_adr_flexfield_segment_code  VARCHAR2(30);
1865 l_adr_flex_value_set_id       NUMBER;
1866 l_adr_value_type_code         VARCHAR2(30);
1867 l_adr_value_combination_id    NUMBER;
1868 l_adr_value_segment_code      VARCHAR2(30);
1869 
1870 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
1871 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
1872 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
1873 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
1874 
1875 -- 4262811 Variables ------------------------------------------------------------------------------------------
1876 l_entered_amt_idx             NUMBER;
1877 l_accted_amt_idx              NUMBER;
1878 l_acc_rev_flag                VARCHAR2(1);
1879 l_accrual_line_num            NUMBER;
1880 l_tmp_amt                     NUMBER;
1881 l_acc_rev_natural_side_code   VARCHAR2(1);
1882 
1883 l_num_entries                 NUMBER;
1884 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
1885 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
1886 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
1887 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
1888 l_recog_line_1                NUMBER;
1889 l_recog_line_2                NUMBER;
1890 
1891 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
1892 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
1893 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
1894 
1895 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
1896 
1897 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
1898 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
1899 
1900 ---------------------------------------------------------------------------------------------------------------
1901 
1902 
1903 --
1904 -- bulk performance
1905 --
1906 l_balance_type_code           VARCHAR2(1);
1907 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
1908 l_log_module                  VARCHAR2(240);
1909 
1910 --
1911 -- Upgrade strategy
1912 --
1913 l_actual_upg_option           VARCHAR2(1);
1914 l_enc_upg_option           VARCHAR2(1);
1915 
1916 --
1917 BEGIN
1918 --
1919 IF g_log_enabled THEN
1920       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_7';
1921 END IF;
1922 --
1923 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1924 
1925       trace
1926          (p_msg      => 'BEGIN of AcctLineType_7'
1927          ,p_level    => C_LEVEL_PROCEDURE
1928          ,p_module   => l_log_module);
1929 
1930 END IF;
1931 --
1932 l_component_type             := 'AMB_JLT';
1933 l_component_code             := 'ACCRUAL';
1934 l_component_type_code        := 'S';
1935 l_component_appl_id          :=  707;
1936 l_amb_context_code           := 'DEFAULT';
1937 l_entity_code                := 'WO_ACCOUNTING_EVENTS';
1938 l_event_class_code           := 'ACCRUAL_WRITE_OFF';
1939 l_event_type_code            := 'ACCRUAL_WRITE_OFF_ALL';
1940 l_line_definition_owner_code := 'S';
1941 l_line_definition_code       := 'ACCRUAL_WRITE_OFF';
1942 --
1943 l_balance_type_code          := 'A';
1944 l_segment                     := NULL;
1945 l_ccid                        := NULL;
1946 l_adr_transaction_coa_id      := NULL;
1947 l_adr_accounting_coa_id       := NULL;
1948 l_adr_flexfield_segment_code  := NULL;
1949 l_adr_flex_value_set_id       := NULL;
1950 l_adr_value_type_code         := NULL;
1951 l_adr_value_combination_id    := NULL;
1952 l_adr_value_segment_code      := NULL;
1953 
1954 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
1955 l_bflow_class_code           := '';    -- 4219869 Business Flow
1956 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
1957 l_budgetary_control_flag     := 'N';
1958 
1959 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
1960 l_bflow_applied_to_amt       := NULL; -- 5132302
1961 l_entered_amt_idx            := NULL;          -- 4262811
1962 l_accted_amt_idx             := NULL;          -- 4262811
1963 l_acc_rev_flag               := NULL;          -- 4262811
1964 l_accrual_line_num           := NULL;          -- 4262811
1965 l_tmp_amt                    := NULL;          -- 4262811
1966 --
1967  
1968 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
1969     l_balance_type_code <> 'B' THEN
1970 IF NVL(p_source_25,9E125) =  1
1971  THEN 
1972 
1973    --
1974    XLA_AE_LINES_PKG.SetNewLine;
1975 
1976    p_balance_type_code          := l_balance_type_code;
1977    -- set the flag so later we will know whether the gain loss line needs to be created
1978    
1979    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
1980      p_actual_flag :='A';
1981    END IF;
1982 
1983    --
1984    -- bulk performance
1985    --
1986    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
1987                                       p_header_num   => 0); -- 4262811
1988    --
1989    -- set accounting line options
1990    --
1991    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
1992            p_natural_side_code          => 'D'
1993          , p_gain_or_loss_flag          => 'N'
1994          , p_gl_transfer_mode_code      => 'S'
1995          , p_acct_entry_type_code       => 'A'
1996          , p_switch_side_flag           => 'Y'
1997          , p_merge_duplicate_code       => 'N'
1998          );
1999    --
2000    l_acc_rev_natural_side_code := 'C';  -- 4262811
2001    -- 
2002    --
2003    -- set accounting line type info
2004    --
2005    xla_ae_lines_pkg.SetAcctLineType
2006       (p_component_type             => l_component_type
2007       ,p_event_type_code            => l_event_type_code
2008       ,p_line_definition_owner_code => l_line_definition_owner_code
2009       ,p_line_definition_code       => l_line_definition_code
2010       ,p_accounting_line_code       => l_component_code
2011       ,p_accounting_line_type_code  => l_component_type_code
2012       ,p_accounting_line_appl_id    => l_component_appl_id
2013       ,p_amb_context_code           => l_amb_context_code
2014       ,p_entity_code                => l_entity_code
2015       ,p_event_class_code           => l_event_class_code);
2016    --
2017    -- set accounting class
2018    --
2019    xla_ae_lines_pkg.SetAcctClass(
2020            p_accounting_class_code  => 'ACCRUAL'
2021          , p_ae_header_id           => l_ae_header_id
2022          );
2023 
2024    --
2025    -- set rounding class
2026    --
2027    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
2028                       'ACCRUAL';
2029 
2030    --
2031    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
2032    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
2033    --
2034    -- bulk performance
2035    --
2036    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
2037 
2038    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
2039       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
2040 
2041    -- 4955764
2042    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2043       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
2044 
2045    -- 4458381 Public Sector Enh
2046    
2047    --
2048    -- set accounting attributes for the line type
2049    --
2050    l_entered_amt_idx := 3;
2051    l_accted_amt_idx  := 8;
2052    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
2053    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
2054    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_26);
2055    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
2056    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
2057    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
2058    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
2059    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
2060    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
2061    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
2062    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
2063    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
2064    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
2065    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
2066    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
2067    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
2068    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
2069 
2070    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
2071    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
2072 
2073    ---------------------------------------------------------------------------------------------------------------
2074    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
2075    ---------------------------------------------------------------------------------------------------------------
2076    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
2077 
2078    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2079    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2080 
2081    IF xla_accounting_cache_pkg.GetValueChar
2082          (p_source_code         => 'LEDGER_CATEGORY_CODE'
2083          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
2084    AND l_bflow_method_code = 'PRIOR_ENTRY'
2085 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
2086    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
2087          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
2088        )
2089    THEN
2090          xla_ae_lines_pkg.BflowUpgEntry
2091            (p_business_method_code    => l_bflow_method_code
2092            ,p_business_class_code     => l_bflow_class_code
2093            ,p_balance_type            => l_balance_type_code);
2094    ELSE
2095       NULL;
2096 -- No business flow processing for business flow method of NONE.
2097    END IF;
2098 
2099    --
2100    -- call analytical criteria
2101    --
2102    
2103    --
2104    -- call description
2105    --
2106    -- No description or it is inherited.
2107    --
2108    -- call ADRs
2109    -- Bug 4922099
2110    --
2111    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2112         (NVL(l_actual_upg_option, 'N') = 'O') OR
2113         (NVL(l_enc_upg_option, 'N') = 'O')
2114       )
2115    THEN
2116    NULL;
2117    --
2118    --
2119    
2120   l_ccid := AcctDerRule_1(
2121            p_application_id           => p_application_id
2122          , p_ae_header_id             => l_ae_header_id 
2123 , p_source_1 => p_source_1
2124          , x_transaction_coa_id       => l_adr_transaction_coa_id
2125          , x_accounting_coa_id        => l_adr_accounting_coa_id
2126          , x_value_type_code          => l_adr_value_type_code
2127          , p_side                     => 'NA'
2128    );
2129 
2130    xla_ae_lines_pkg.set_ccid(
2131     p_code_combination_id          => l_ccid
2132   , p_value_type_code              => l_adr_value_type_code
2133   , p_transaction_coa_id           => l_adr_transaction_coa_id
2134   , p_accounting_coa_id            => l_adr_accounting_coa_id
2135   , p_adr_code                     => 'CST_AWO_ACCRUAL'
2136   , p_adr_type_code                => 'S'
2137   , p_component_type               => l_component_type
2138   , p_component_code               => l_component_code
2139   , p_component_type_code          => l_component_type_code
2140   , p_component_appl_id            => l_component_appl_id
2141   , p_amb_context_code             => l_amb_context_code
2142   , p_side                         => 'NA'
2143   );
2144 
2145 
2146    --
2147    --
2148    END IF;
2149    --
2150    -- Bug 4922099
2151    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
2152           (NVL(l_enc_upg_option, 'N') = 'O')
2153         ) AND
2154         (l_bflow_method_code = 'PRIOR_ENTRY')
2155       )
2156    THEN
2157       IF
2158       --
2159       1 = 2
2160       --
2161       THEN
2162       xla_accounting_err_pkg.build_message
2163                                     (p_appli_s_name            => 'XLA'
2164                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2165                                     ,p_token_1                 => 'LINE_NUMBER'
2166                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
2167                                     ,p_token_2                 => 'LINE_TYPE_NAME'
2168                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
2169                                                                              l_component_type
2170                                                                             ,l_component_code
2171                                                                             ,l_component_type_code
2172                                                                             ,l_component_appl_id
2173                                                                             ,l_amb_context_code
2174                                                                             ,l_entity_code
2175                                                                             ,l_event_class_code
2176                                                                            )
2177                                     ,p_token_3                 => 'OWNER'
2178                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
2179                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
2180                                                                           ,p_lookup_code    => l_component_type_code
2181                                                                          )
2182                                     ,p_token_4                 => 'PRODUCT_NAME'
2183                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
2184                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2185                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2186                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2187                                     ,p_ae_header_id            =>  NULL
2188                                        );
2189 
2190         IF (C_LEVEL_ERROR>= g_log_level) THEN
2191                  trace
2192                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2193                       ,p_level    => C_LEVEL_ERROR
2194                       ,p_module   => l_log_module);
2195         END IF;
2196       END IF;
2197    END IF;
2198    --
2199    --
2200    ------------------------------------------------------------------------------------------------
2201    -- 4219869 Business Flow
2202    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
2203    -- Prior Entry.  Currently, the following code is always generated.
2204    ------------------------------------------------------------------------------------------------
2205    XLA_AE_LINES_PKG.ValidateCurrentLine;
2206 
2207    ------------------------------------------------------------------------------------
2208    -- 4219869 Business Flow
2209    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
2210    ------------------------------------------------------------------------------------
2211    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2212 
2213    ----------------------------------------------------------------------------------
2214    -- 4219869 Business Flow
2215    -- Update journal entry status -- Need to generate this within IF <condition>
2216    ----------------------------------------------------------------------------------
2217    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2218          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
2219          ,p_balance_type_code => l_balance_type_code
2220          );
2221 
2222    -------------------------------------------------------------------------------------------
2223    -- 4262811 - Generate the Accrual Reversal lines
2224    -------------------------------------------------------------------------------------------
2225    BEGIN
2226       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
2227                               (g_array_event(p_event_id).array_value_num('header_index'));
2228       IF l_acc_rev_flag IS NULL THEN
2229          l_acc_rev_flag := 'N';
2230       END IF;
2231    EXCEPTION
2232       WHEN OTHERS THEN
2233          l_acc_rev_flag := 'N';
2234    END;
2235    --
2236    IF (l_acc_rev_flag = 'Y') THEN
2237 
2238        -- 4645092  ------------------------------------------------------------------------------
2239        -- To allow MPA report to determine if it should generate report process
2240        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
2241        ------------------------------------------------------------------------------------------
2242 
2243        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
2244        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
2245    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
2246    -- call ADRs
2247    -- Bug 4922099
2248    --
2249    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2250         (NVL(l_actual_upg_option, 'N') = 'O') OR
2251         (NVL(l_enc_upg_option, 'N') = 'O')
2252       )
2253    THEN
2254    NULL;
2255    --
2256    --
2257    
2258   l_ccid := AcctDerRule_1(
2259            p_application_id           => p_application_id
2260          , p_ae_header_id             => l_ae_header_id 
2261 , p_source_1 => p_source_1
2262          , x_transaction_coa_id       => l_adr_transaction_coa_id
2263          , x_accounting_coa_id        => l_adr_accounting_coa_id
2264          , x_value_type_code          => l_adr_value_type_code
2265          , p_side                     => 'NA'
2266    );
2267 
2268    xla_ae_lines_pkg.set_ccid(
2269     p_code_combination_id          => l_ccid
2270   , p_value_type_code              => l_adr_value_type_code
2271   , p_transaction_coa_id           => l_adr_transaction_coa_id
2272   , p_accounting_coa_id            => l_adr_accounting_coa_id
2273   , p_adr_code                     => 'CST_AWO_ACCRUAL'
2274   , p_adr_type_code                => 'S'
2275   , p_component_type               => l_component_type
2276   , p_component_code               => l_component_code
2277   , p_component_type_code          => l_component_type_code
2278   , p_component_appl_id            => l_component_appl_id
2279   , p_amb_context_code             => l_amb_context_code
2280   , p_side                         => 'NA'
2281   );
2282 
2283 
2284    --
2285    --
2286    END IF;
2287 
2288        --
2289        -- Update the line information that should be overwritten
2290        --
2291        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
2292                                          p_header_num   => 1);
2293        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
2294 
2295        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
2296 
2297        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
2298           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
2299        END IF;
2300 
2301       --
2302       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
2303       --
2304       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
2305           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
2306       ELSE
2307           ---------------------------------------------------------------------------------------------------
2308           -- 4262811a Switch Sign
2309           ---------------------------------------------------------------------------------------------------
2310           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
2311           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2312                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2313           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2314                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2315           -- 5132302
2316           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
2317                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2318 
2319       END IF;
2320 
2321       -- 4955764
2322       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2323       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
2324 
2325 
2326       XLA_AE_LINES_PKG.ValidateCurrentLine;
2327       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2328 
2329       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2330                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
2331                ,p_balance_type_code => l_balance_type_code);
2332 
2333    END IF;
2334 
2335    -----------------------------------------------------------------------------------------
2336    -- 4262811 Multiperiod Accounting
2337    -----------------------------------------------------------------------------------------
2338      -- No MPA option is assigned.
2339 
2340 
2341 END IF;
2342 END IF;
2343 --
2344 
2345 --
2346 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2347    trace
2348       (p_msg      => 'END of AcctLineType_7'
2349       ,p_level    => C_LEVEL_PROCEDURE
2350       ,p_module   => l_log_module);
2351 END IF;
2352 --
2353 EXCEPTION
2354   WHEN xla_exceptions_pkg.application_exception THEN
2355       RAISE;
2356   WHEN OTHERS THEN
2357        xla_exceptions_pkg.raise_message
2358            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_7');
2359 END AcctLineType_7;
2360 --
2361 
2362 ---------------------------------------
2363 --
2364 -- PRIVATE FUNCTION
2365 --         AcctLineType_8
2366 --
2367 ---------------------------------------
2368 PROCEDURE AcctLineType_8 (
2369   p_application_id        IN NUMBER
2370  ,p_event_id              IN NUMBER
2371  ,p_calculate_acctd_flag  IN VARCHAR2
2372  ,p_calculate_g_l_flag    IN VARCHAR2
2373  ,p_actual_flag           IN OUT VARCHAR2
2374  ,p_balance_type_code     OUT VARCHAR2
2375  ,p_gain_or_loss_ref      OUT VARCHAR2
2376  
2377 --Cost Management Default Account
2378  , p_source_4            IN NUMBER
2379 --DISTRIBUTION_IDENTIFIER
2380  , p_source_11            IN NUMBER
2381 --Distribution Type
2382  , p_source_12            IN VARCHAR2
2383  , p_source_12_meaning    IN VARCHAR2
2384 --Entered Currency Code
2385  , p_source_15            IN VARCHAR2
2386 --Entered Amount
2387  , p_source_18            IN NUMBER
2388 --Currency Conversion Date
2389  , p_source_19            IN DATE
2390 --Currency Conversion Rate
2391  , p_source_20            IN NUMBER
2392 --Currency Conversion Type
2393  , p_source_21            IN VARCHAR2
2394 --Accounted Amount
2395  , p_source_22            IN NUMBER
2396 --Accounting Line Type
2397  , p_source_24            IN NUMBER
2398 )
2399 IS
2400 
2401 l_component_type              VARCHAR2(80);
2402 l_component_code              VARCHAR2(30);
2403 l_component_type_code         VARCHAR2(1);
2404 l_component_appl_id           INTEGER;
2405 l_amb_context_code            VARCHAR2(30);
2406 l_entity_code                 VARCHAR2(30);
2407 l_event_class_code            VARCHAR2(30);
2408 l_ae_header_id                NUMBER;
2409 l_event_type_code             VARCHAR2(30);
2410 l_line_definition_code        VARCHAR2(30);
2411 l_line_definition_owner_code  VARCHAR2(1);
2412 --
2413 -- adr variables
2414 l_segment                     VARCHAR2(30);
2415 l_ccid                        NUMBER;
2416 l_adr_transaction_coa_id      NUMBER;
2417 l_adr_accounting_coa_id       NUMBER;
2418 l_adr_flexfield_segment_code  VARCHAR2(30);
2419 l_adr_flex_value_set_id       NUMBER;
2420 l_adr_value_type_code         VARCHAR2(30);
2421 l_adr_value_combination_id    NUMBER;
2422 l_adr_value_segment_code      VARCHAR2(30);
2423 
2424 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
2425 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
2426 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
2427 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
2428 
2429 -- 4262811 Variables ------------------------------------------------------------------------------------------
2430 l_entered_amt_idx             NUMBER;
2431 l_accted_amt_idx              NUMBER;
2432 l_acc_rev_flag                VARCHAR2(1);
2433 l_accrual_line_num            NUMBER;
2434 l_tmp_amt                     NUMBER;
2435 l_acc_rev_natural_side_code   VARCHAR2(1);
2436 
2437 l_num_entries                 NUMBER;
2438 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
2439 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
2440 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
2441 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
2442 l_recog_line_1                NUMBER;
2443 l_recog_line_2                NUMBER;
2444 
2445 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
2446 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
2447 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
2448 
2449 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
2450 
2451 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
2452 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
2453 
2454 ---------------------------------------------------------------------------------------------------------------
2455 
2456 
2457 --
2458 -- bulk performance
2459 --
2460 l_balance_type_code           VARCHAR2(1);
2461 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
2462 l_log_module                  VARCHAR2(240);
2463 
2464 --
2465 -- Upgrade strategy
2466 --
2467 l_actual_upg_option           VARCHAR2(1);
2468 l_enc_upg_option           VARCHAR2(1);
2469 
2470 --
2471 BEGIN
2472 --
2473 IF g_log_enabled THEN
2474       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_8';
2475 END IF;
2476 --
2477 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2478 
2479       trace
2480          (p_msg      => 'BEGIN of AcctLineType_8'
2481          ,p_level    => C_LEVEL_PROCEDURE
2482          ,p_module   => l_log_module);
2483 
2484 END IF;
2485 --
2486 l_component_type             := 'AMB_JLT';
2487 l_component_code             := 'ACCRUAL';
2488 l_component_type_code        := 'S';
2489 l_component_appl_id          :=  707;
2490 l_amb_context_code           := 'DEFAULT';
2491 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
2492 l_event_class_code           := 'RETR_PRICE_ADJ';
2493 l_event_type_code            := 'RETR_PRICE_ADJ_ALL';
2494 l_line_definition_owner_code := 'S';
2495 l_line_definition_code       := 'RETR_PRICE_ADJ';
2496 --
2497 l_balance_type_code          := 'A';
2498 l_segment                     := NULL;
2499 l_ccid                        := NULL;
2500 l_adr_transaction_coa_id      := NULL;
2501 l_adr_accounting_coa_id       := NULL;
2502 l_adr_flexfield_segment_code  := NULL;
2503 l_adr_flex_value_set_id       := NULL;
2504 l_adr_value_type_code         := NULL;
2505 l_adr_value_combination_id    := NULL;
2506 l_adr_value_segment_code      := NULL;
2507 
2508 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
2509 l_bflow_class_code           := '';    -- 4219869 Business Flow
2510 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
2511 l_budgetary_control_flag     := 'N';
2512 
2513 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
2514 l_bflow_applied_to_amt       := NULL; -- 5132302
2515 l_entered_amt_idx            := NULL;          -- 4262811
2516 l_accted_amt_idx             := NULL;          -- 4262811
2517 l_acc_rev_flag               := NULL;          -- 4262811
2518 l_accrual_line_num           := NULL;          -- 4262811
2519 l_tmp_amt                    := NULL;          -- 4262811
2520 --
2521  
2522 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
2523     l_balance_type_code <> 'B' THEN
2524 IF NVL(p_source_24,9E125) =  16
2525  THEN 
2526 
2527    --
2528    XLA_AE_LINES_PKG.SetNewLine;
2529 
2530    p_balance_type_code          := l_balance_type_code;
2531    -- set the flag so later we will know whether the gain loss line needs to be created
2532    
2533    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
2534      p_actual_flag :='A';
2535    END IF;
2536 
2537    --
2538    -- bulk performance
2539    --
2540    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
2541                                       p_header_num   => 0); -- 4262811
2542    --
2543    -- set accounting line options
2544    --
2545    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
2546            p_natural_side_code          => 'D'
2547          , p_gain_or_loss_flag          => 'N'
2548          , p_gl_transfer_mode_code      => 'S'
2549          , p_acct_entry_type_code       => 'A'
2550          , p_switch_side_flag           => 'Y'
2551          , p_merge_duplicate_code       => 'N'
2552          );
2553    --
2554    l_acc_rev_natural_side_code := 'C';  -- 4262811
2555    -- 
2556    --
2557    -- set accounting line type info
2558    --
2559    xla_ae_lines_pkg.SetAcctLineType
2560       (p_component_type             => l_component_type
2561       ,p_event_type_code            => l_event_type_code
2562       ,p_line_definition_owner_code => l_line_definition_owner_code
2563       ,p_line_definition_code       => l_line_definition_code
2564       ,p_accounting_line_code       => l_component_code
2565       ,p_accounting_line_type_code  => l_component_type_code
2566       ,p_accounting_line_appl_id    => l_component_appl_id
2567       ,p_amb_context_code           => l_amb_context_code
2568       ,p_entity_code                => l_entity_code
2569       ,p_event_class_code           => l_event_class_code);
2570    --
2571    -- set accounting class
2572    --
2573    xla_ae_lines_pkg.SetAcctClass(
2574            p_accounting_class_code  => 'ACCRUAL'
2575          , p_ae_header_id           => l_ae_header_id
2576          );
2577 
2578    --
2579    -- set rounding class
2580    --
2581    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
2582                       'ACCRUAL';
2583 
2584    --
2585    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
2586    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
2587    --
2588    -- bulk performance
2589    --
2590    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
2591 
2592    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
2593       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
2594 
2595    -- 4955764
2596    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2597       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
2598 
2599    -- 4458381 Public Sector Enh
2600    
2601    --
2602    -- set accounting attributes for the line type
2603    --
2604    l_entered_amt_idx := 3;
2605    l_accted_amt_idx  := 8;
2606    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
2607    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
2608    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
2609    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
2610    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
2611    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
2612    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
2613    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
2614    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
2615    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
2616    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
2617    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
2618    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
2619    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
2620    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
2621    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
2622    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
2623 
2624    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
2625    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
2626 
2627    ---------------------------------------------------------------------------------------------------------------
2628    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
2629    ---------------------------------------------------------------------------------------------------------------
2630    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
2631 
2632    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2633    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2634 
2635    IF xla_accounting_cache_pkg.GetValueChar
2636          (p_source_code         => 'LEDGER_CATEGORY_CODE'
2637          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
2638    AND l_bflow_method_code = 'PRIOR_ENTRY'
2639 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
2640    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
2641          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
2642        )
2643    THEN
2644          xla_ae_lines_pkg.BflowUpgEntry
2645            (p_business_method_code    => l_bflow_method_code
2646            ,p_business_class_code     => l_bflow_class_code
2647            ,p_balance_type            => l_balance_type_code);
2648    ELSE
2649       NULL;
2650 -- No business flow processing for business flow method of NONE.
2651    END IF;
2652 
2653    --
2654    -- call analytical criteria
2655    --
2656    
2657    --
2658    -- call description
2659    --
2660    -- No description or it is inherited.
2661    --
2662    -- call ADRs
2663    -- Bug 4922099
2664    --
2665    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2666         (NVL(l_actual_upg_option, 'N') = 'O') OR
2667         (NVL(l_enc_upg_option, 'N') = 'O')
2668       )
2669    THEN
2670    NULL;
2671    --
2672    --
2673    
2674   l_ccid := AcctDerRule_4(
2675            p_application_id           => p_application_id
2676          , p_ae_header_id             => l_ae_header_id 
2677 , p_source_4 => p_source_4
2678          , x_transaction_coa_id       => l_adr_transaction_coa_id
2679          , x_accounting_coa_id        => l_adr_accounting_coa_id
2680          , x_value_type_code          => l_adr_value_type_code
2681          , p_side                     => 'NA'
2682    );
2683 
2684    xla_ae_lines_pkg.set_ccid(
2685     p_code_combination_id          => l_ccid
2686   , p_value_type_code              => l_adr_value_type_code
2687   , p_transaction_coa_id           => l_adr_transaction_coa_id
2688   , p_accounting_coa_id            => l_adr_accounting_coa_id
2689   , p_adr_code                     => 'CST_DEFAULT'
2690   , p_adr_type_code                => 'S'
2691   , p_component_type               => l_component_type
2692   , p_component_code               => l_component_code
2693   , p_component_type_code          => l_component_type_code
2694   , p_component_appl_id            => l_component_appl_id
2695   , p_amb_context_code             => l_amb_context_code
2696   , p_side                         => 'NA'
2697   );
2698 
2699 
2700    --
2701    --
2702    END IF;
2703    --
2704    -- Bug 4922099
2705    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
2706           (NVL(l_enc_upg_option, 'N') = 'O')
2707         ) AND
2708         (l_bflow_method_code = 'PRIOR_ENTRY')
2709       )
2710    THEN
2711       IF
2712       --
2713       1 = 2
2714       --
2715       THEN
2716       xla_accounting_err_pkg.build_message
2717                                     (p_appli_s_name            => 'XLA'
2718                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2719                                     ,p_token_1                 => 'LINE_NUMBER'
2720                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
2721                                     ,p_token_2                 => 'LINE_TYPE_NAME'
2722                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
2723                                                                              l_component_type
2724                                                                             ,l_component_code
2725                                                                             ,l_component_type_code
2726                                                                             ,l_component_appl_id
2727                                                                             ,l_amb_context_code
2728                                                                             ,l_entity_code
2729                                                                             ,l_event_class_code
2730                                                                            )
2731                                     ,p_token_3                 => 'OWNER'
2732                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
2733                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
2734                                                                           ,p_lookup_code    => l_component_type_code
2735                                                                          )
2736                                     ,p_token_4                 => 'PRODUCT_NAME'
2737                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
2738                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2739                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2740                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2741                                     ,p_ae_header_id            =>  NULL
2742                                        );
2743 
2744         IF (C_LEVEL_ERROR>= g_log_level) THEN
2745                  trace
2746                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2747                       ,p_level    => C_LEVEL_ERROR
2748                       ,p_module   => l_log_module);
2749         END IF;
2750       END IF;
2751    END IF;
2752    --
2753    --
2754    ------------------------------------------------------------------------------------------------
2755    -- 4219869 Business Flow
2756    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
2757    -- Prior Entry.  Currently, the following code is always generated.
2758    ------------------------------------------------------------------------------------------------
2759    XLA_AE_LINES_PKG.ValidateCurrentLine;
2760 
2761    ------------------------------------------------------------------------------------
2762    -- 4219869 Business Flow
2763    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
2764    ------------------------------------------------------------------------------------
2765    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2766 
2767    ----------------------------------------------------------------------------------
2768    -- 4219869 Business Flow
2769    -- Update journal entry status -- Need to generate this within IF <condition>
2770    ----------------------------------------------------------------------------------
2771    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2772          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
2773          ,p_balance_type_code => l_balance_type_code
2774          );
2775 
2776    -------------------------------------------------------------------------------------------
2777    -- 4262811 - Generate the Accrual Reversal lines
2778    -------------------------------------------------------------------------------------------
2779    BEGIN
2780       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
2781                               (g_array_event(p_event_id).array_value_num('header_index'));
2782       IF l_acc_rev_flag IS NULL THEN
2783          l_acc_rev_flag := 'N';
2784       END IF;
2785    EXCEPTION
2786       WHEN OTHERS THEN
2787          l_acc_rev_flag := 'N';
2788    END;
2789    --
2790    IF (l_acc_rev_flag = 'Y') THEN
2791 
2792        -- 4645092  ------------------------------------------------------------------------------
2793        -- To allow MPA report to determine if it should generate report process
2794        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
2795        ------------------------------------------------------------------------------------------
2796 
2797        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
2798        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
2799    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
2800    -- call ADRs
2801    -- Bug 4922099
2802    --
2803    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2804         (NVL(l_actual_upg_option, 'N') = 'O') OR
2805         (NVL(l_enc_upg_option, 'N') = 'O')
2806       )
2807    THEN
2808    NULL;
2809    --
2810    --
2811    
2812   l_ccid := AcctDerRule_4(
2813            p_application_id           => p_application_id
2814          , p_ae_header_id             => l_ae_header_id 
2815 , p_source_4 => p_source_4
2816          , x_transaction_coa_id       => l_adr_transaction_coa_id
2817          , x_accounting_coa_id        => l_adr_accounting_coa_id
2818          , x_value_type_code          => l_adr_value_type_code
2819          , p_side                     => 'NA'
2820    );
2821 
2822    xla_ae_lines_pkg.set_ccid(
2823     p_code_combination_id          => l_ccid
2824   , p_value_type_code              => l_adr_value_type_code
2825   , p_transaction_coa_id           => l_adr_transaction_coa_id
2826   , p_accounting_coa_id            => l_adr_accounting_coa_id
2827   , p_adr_code                     => 'CST_DEFAULT'
2828   , p_adr_type_code                => 'S'
2829   , p_component_type               => l_component_type
2830   , p_component_code               => l_component_code
2831   , p_component_type_code          => l_component_type_code
2832   , p_component_appl_id            => l_component_appl_id
2833   , p_amb_context_code             => l_amb_context_code
2834   , p_side                         => 'NA'
2835   );
2836 
2837 
2838    --
2839    --
2840    END IF;
2841 
2842        --
2843        -- Update the line information that should be overwritten
2844        --
2845        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
2846                                          p_header_num   => 1);
2847        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
2848 
2849        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
2850 
2851        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
2852           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
2853        END IF;
2854 
2855       --
2856       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
2857       --
2858       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
2859           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
2860       ELSE
2861           ---------------------------------------------------------------------------------------------------
2862           -- 4262811a Switch Sign
2863           ---------------------------------------------------------------------------------------------------
2864           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
2865           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2866                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2867           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2868                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2869           -- 5132302
2870           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
2871                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2872 
2873       END IF;
2874 
2875       -- 4955764
2876       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2877       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
2878 
2879 
2880       XLA_AE_LINES_PKG.ValidateCurrentLine;
2881       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2882 
2883       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2884                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
2885                ,p_balance_type_code => l_balance_type_code);
2886 
2887    END IF;
2888 
2889    -----------------------------------------------------------------------------------------
2890    -- 4262811 Multiperiod Accounting
2891    -----------------------------------------------------------------------------------------
2892      -- No MPA option is assigned.
2893 
2894 
2895 END IF;
2896 END IF;
2897 --
2898 
2899 --
2900 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2901    trace
2902       (p_msg      => 'END of AcctLineType_8'
2903       ,p_level    => C_LEVEL_PROCEDURE
2904       ,p_module   => l_log_module);
2905 END IF;
2906 --
2907 EXCEPTION
2908   WHEN xla_exceptions_pkg.application_exception THEN
2909       RAISE;
2910   WHEN OTHERS THEN
2911        xla_exceptions_pkg.raise_message
2912            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_8');
2913 END AcctLineType_8;
2914 --
2915 
2916 ---------------------------------------
2917 --
2918 -- PRIVATE FUNCTION
2919 --         AcctLineType_9
2920 --
2921 ---------------------------------------
2922 PROCEDURE AcctLineType_9 (
2923   p_application_id        IN NUMBER
2924  ,p_event_id              IN NUMBER
2925  ,p_calculate_acctd_flag  IN VARCHAR2
2926  ,p_calculate_g_l_flag    IN VARCHAR2
2927  ,p_actual_flag           IN OUT VARCHAR2
2928  ,p_balance_type_code     OUT VARCHAR2
2929  ,p_gain_or_loss_ref      OUT VARCHAR2
2930  
2931 --Cost Management Default Account
2932  , p_source_4            IN NUMBER
2933 --Receiving Accounting Line Type
2934  , p_source_5            IN VARCHAR2
2935 --DISTRIBUTION_IDENTIFIER
2936  , p_source_11            IN NUMBER
2937 --Distribution Type
2938  , p_source_12            IN VARCHAR2
2939  , p_source_12_meaning    IN VARCHAR2
2940 --Entered Currency Code
2941  , p_source_15            IN VARCHAR2
2942 --Entered Amount
2943  , p_source_18            IN NUMBER
2944 --Currency Conversion Date
2945  , p_source_19            IN DATE
2946 --Currency Conversion Rate
2947  , p_source_20            IN NUMBER
2948 --Currency Conversion Type
2949  , p_source_21            IN VARCHAR2
2950 --Accounted Amount
2951  , p_source_22            IN NUMBER
2952 )
2953 IS
2954 
2955 l_component_type              VARCHAR2(80);
2956 l_component_code              VARCHAR2(30);
2957 l_component_type_code         VARCHAR2(1);
2958 l_component_appl_id           INTEGER;
2959 l_amb_context_code            VARCHAR2(30);
2960 l_entity_code                 VARCHAR2(30);
2961 l_event_class_code            VARCHAR2(30);
2962 l_ae_header_id                NUMBER;
2963 l_event_type_code             VARCHAR2(30);
2964 l_line_definition_code        VARCHAR2(30);
2965 l_line_definition_owner_code  VARCHAR2(1);
2966 --
2967 -- adr variables
2968 l_segment                     VARCHAR2(30);
2969 l_ccid                        NUMBER;
2970 l_adr_transaction_coa_id      NUMBER;
2971 l_adr_accounting_coa_id       NUMBER;
2972 l_adr_flexfield_segment_code  VARCHAR2(30);
2973 l_adr_flex_value_set_id       NUMBER;
2974 l_adr_value_type_code         VARCHAR2(30);
2975 l_adr_value_combination_id    NUMBER;
2976 l_adr_value_segment_code      VARCHAR2(30);
2977 
2978 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
2979 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
2980 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
2981 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
2982 
2983 -- 4262811 Variables ------------------------------------------------------------------------------------------
2984 l_entered_amt_idx             NUMBER;
2985 l_accted_amt_idx              NUMBER;
2986 l_acc_rev_flag                VARCHAR2(1);
2987 l_accrual_line_num            NUMBER;
2988 l_tmp_amt                     NUMBER;
2989 l_acc_rev_natural_side_code   VARCHAR2(1);
2990 
2991 l_num_entries                 NUMBER;
2992 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
2993 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
2994 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
2995 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
2996 l_recog_line_1                NUMBER;
2997 l_recog_line_2                NUMBER;
2998 
2999 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
3000 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
3001 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
3002 
3003 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3004 
3005 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
3006 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
3007 
3008 ---------------------------------------------------------------------------------------------------------------
3009 
3010 
3011 --
3012 -- bulk performance
3013 --
3014 l_balance_type_code           VARCHAR2(1);
3015 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
3016 l_log_module                  VARCHAR2(240);
3017 
3018 --
3019 -- Upgrade strategy
3020 --
3021 l_actual_upg_option           VARCHAR2(1);
3022 l_enc_upg_option           VARCHAR2(1);
3023 
3024 --
3025 BEGIN
3026 --
3027 IF g_log_enabled THEN
3028       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_9';
3029 END IF;
3030 --
3031 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3032 
3033       trace
3034          (p_msg      => 'BEGIN of AcctLineType_9'
3035          ,p_level    => C_LEVEL_PROCEDURE
3036          ,p_module   => l_log_module);
3037 
3038 END IF;
3039 --
3040 l_component_type             := 'AMB_JLT';
3041 l_component_code             := 'ACCRUAL';
3042 l_component_type_code        := 'S';
3043 l_component_appl_id          :=  707;
3044 l_amb_context_code           := 'DEFAULT';
3045 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
3046 l_event_class_code           := 'RETR_PRICE_ADJ_RCV';
3047 l_event_type_code            := 'RETR_PRICE_ADJ_RCV_ALL';
3048 l_line_definition_owner_code := 'S';
3049 l_line_definition_code       := 'RETR_PRICE_ADJ_RCV';
3050 --
3051 l_balance_type_code          := 'A';
3052 l_segment                     := NULL;
3053 l_ccid                        := NULL;
3054 l_adr_transaction_coa_id      := NULL;
3055 l_adr_accounting_coa_id       := NULL;
3056 l_adr_flexfield_segment_code  := NULL;
3057 l_adr_flex_value_set_id       := NULL;
3058 l_adr_value_type_code         := NULL;
3059 l_adr_value_combination_id    := NULL;
3060 l_adr_value_segment_code      := NULL;
3061 
3062 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
3063 l_bflow_class_code           := '';    -- 4219869 Business Flow
3064 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
3065 l_budgetary_control_flag     := 'N';
3066 
3067 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
3068 l_bflow_applied_to_amt       := NULL; -- 5132302
3069 l_entered_amt_idx            := NULL;          -- 4262811
3070 l_accted_amt_idx             := NULL;          -- 4262811
3071 l_acc_rev_flag               := NULL;          -- 4262811
3072 l_accrual_line_num           := NULL;          -- 4262811
3073 l_tmp_amt                    := NULL;          -- 4262811
3074 --
3075  
3076 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3077     l_balance_type_code <> 'B' THEN
3078 IF NVL(p_source_5,'
3079 ') =  'Accrual'
3080  THEN 
3081 
3082    --
3083    XLA_AE_LINES_PKG.SetNewLine;
3084 
3085    p_balance_type_code          := l_balance_type_code;
3086    -- set the flag so later we will know whether the gain loss line needs to be created
3087    
3088    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
3089      p_actual_flag :='A';
3090    END IF;
3091 
3092    --
3093    -- bulk performance
3094    --
3095    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3096                                       p_header_num   => 0); -- 4262811
3097    --
3098    -- set accounting line options
3099    --
3100    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3101            p_natural_side_code          => 'D'
3102          , p_gain_or_loss_flag          => 'N'
3103          , p_gl_transfer_mode_code      => 'S'
3104          , p_acct_entry_type_code       => 'A'
3105          , p_switch_side_flag           => 'Y'
3106          , p_merge_duplicate_code       => 'N'
3107          );
3108    --
3109    l_acc_rev_natural_side_code := 'C';  -- 4262811
3110    -- 
3111    --
3112    -- set accounting line type info
3113    --
3114    xla_ae_lines_pkg.SetAcctLineType
3115       (p_component_type             => l_component_type
3116       ,p_event_type_code            => l_event_type_code
3117       ,p_line_definition_owner_code => l_line_definition_owner_code
3118       ,p_line_definition_code       => l_line_definition_code
3119       ,p_accounting_line_code       => l_component_code
3120       ,p_accounting_line_type_code  => l_component_type_code
3121       ,p_accounting_line_appl_id    => l_component_appl_id
3122       ,p_amb_context_code           => l_amb_context_code
3123       ,p_entity_code                => l_entity_code
3124       ,p_event_class_code           => l_event_class_code);
3125    --
3126    -- set accounting class
3127    --
3128    xla_ae_lines_pkg.SetAcctClass(
3129            p_accounting_class_code  => 'ACCRUAL'
3130          , p_ae_header_id           => l_ae_header_id
3131          );
3132 
3133    --
3134    -- set rounding class
3135    --
3136    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
3137                       'ACCRUAL';
3138 
3139    --
3140    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
3141    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
3142    --
3143    -- bulk performance
3144    --
3145    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
3146 
3147    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
3148       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
3149 
3150    -- 4955764
3151    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3152       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
3153 
3154    -- 4458381 Public Sector Enh
3155    
3156    --
3157    -- set accounting attributes for the line type
3158    --
3159    l_entered_amt_idx := 3;
3160    l_accted_amt_idx  := 8;
3161    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
3162    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
3163    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
3164    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
3165    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
3166    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
3167    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
3168    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
3169    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
3170    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
3171    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
3172    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
3173    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
3174    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
3175    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
3176    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
3177    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
3178 
3179    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
3180    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
3181 
3182    ---------------------------------------------------------------------------------------------------------------
3183    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
3184    ---------------------------------------------------------------------------------------------------------------
3185    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
3186 
3187    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3188    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3189 
3190    IF xla_accounting_cache_pkg.GetValueChar
3191          (p_source_code         => 'LEDGER_CATEGORY_CODE'
3192          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
3193    AND l_bflow_method_code = 'PRIOR_ENTRY'
3194 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
3195    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
3196          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
3197        )
3198    THEN
3199          xla_ae_lines_pkg.BflowUpgEntry
3200            (p_business_method_code    => l_bflow_method_code
3201            ,p_business_class_code     => l_bflow_class_code
3202            ,p_balance_type            => l_balance_type_code);
3203    ELSE
3204       NULL;
3205 -- No business flow processing for business flow method of NONE.
3206    END IF;
3207 
3208    --
3209    -- call analytical criteria
3210    --
3211    
3212    --
3213    -- call description
3214    --
3215    -- No description or it is inherited.
3216    --
3217    -- call ADRs
3218    -- Bug 4922099
3219    --
3220    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3221         (NVL(l_actual_upg_option, 'N') = 'O') OR
3222         (NVL(l_enc_upg_option, 'N') = 'O')
3223       )
3224    THEN
3225    NULL;
3226    --
3227    --
3228    
3229   l_ccid := AcctDerRule_4(
3230            p_application_id           => p_application_id
3231          , p_ae_header_id             => l_ae_header_id 
3232 , p_source_4 => p_source_4
3233          , x_transaction_coa_id       => l_adr_transaction_coa_id
3234          , x_accounting_coa_id        => l_adr_accounting_coa_id
3235          , x_value_type_code          => l_adr_value_type_code
3236          , p_side                     => 'NA'
3237    );
3238 
3239    xla_ae_lines_pkg.set_ccid(
3240     p_code_combination_id          => l_ccid
3241   , p_value_type_code              => l_adr_value_type_code
3242   , p_transaction_coa_id           => l_adr_transaction_coa_id
3243   , p_accounting_coa_id            => l_adr_accounting_coa_id
3244   , p_adr_code                     => 'CST_DEFAULT'
3245   , p_adr_type_code                => 'S'
3246   , p_component_type               => l_component_type
3247   , p_component_code               => l_component_code
3248   , p_component_type_code          => l_component_type_code
3249   , p_component_appl_id            => l_component_appl_id
3250   , p_amb_context_code             => l_amb_context_code
3251   , p_side                         => 'NA'
3252   );
3253 
3254 
3255    --
3256    --
3257    END IF;
3258    --
3259    -- Bug 4922099
3260    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
3261           (NVL(l_enc_upg_option, 'N') = 'O')
3262         ) AND
3263         (l_bflow_method_code = 'PRIOR_ENTRY')
3264       )
3265    THEN
3266       IF
3267       --
3268       1 = 2
3269       --
3270       THEN
3271       xla_accounting_err_pkg.build_message
3272                                     (p_appli_s_name            => 'XLA'
3273                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3274                                     ,p_token_1                 => 'LINE_NUMBER'
3275                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
3276                                     ,p_token_2                 => 'LINE_TYPE_NAME'
3277                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
3278                                                                              l_component_type
3279                                                                             ,l_component_code
3280                                                                             ,l_component_type_code
3281                                                                             ,l_component_appl_id
3282                                                                             ,l_amb_context_code
3283                                                                             ,l_entity_code
3284                                                                             ,l_event_class_code
3285                                                                            )
3286                                     ,p_token_3                 => 'OWNER'
3287                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
3288                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
3289                                                                           ,p_lookup_code    => l_component_type_code
3290                                                                          )
3291                                     ,p_token_4                 => 'PRODUCT_NAME'
3292                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
3293                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
3294                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
3295                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
3296                                     ,p_ae_header_id            =>  NULL
3297                                        );
3298 
3299         IF (C_LEVEL_ERROR>= g_log_level) THEN
3300                  trace
3301                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3302                       ,p_level    => C_LEVEL_ERROR
3303                       ,p_module   => l_log_module);
3304         END IF;
3305       END IF;
3306    END IF;
3307    --
3308    --
3309    ------------------------------------------------------------------------------------------------
3310    -- 4219869 Business Flow
3311    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
3312    -- Prior Entry.  Currently, the following code is always generated.
3313    ------------------------------------------------------------------------------------------------
3314    XLA_AE_LINES_PKG.ValidateCurrentLine;
3315 
3316    ------------------------------------------------------------------------------------
3317    -- 4219869 Business Flow
3318    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
3319    ------------------------------------------------------------------------------------
3320    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3321 
3322    ----------------------------------------------------------------------------------
3323    -- 4219869 Business Flow
3324    -- Update journal entry status -- Need to generate this within IF <condition>
3325    ----------------------------------------------------------------------------------
3326    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3327          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
3328          ,p_balance_type_code => l_balance_type_code
3329          );
3330 
3331    -------------------------------------------------------------------------------------------
3332    -- 4262811 - Generate the Accrual Reversal lines
3333    -------------------------------------------------------------------------------------------
3334    BEGIN
3335       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
3336                               (g_array_event(p_event_id).array_value_num('header_index'));
3337       IF l_acc_rev_flag IS NULL THEN
3338          l_acc_rev_flag := 'N';
3339       END IF;
3340    EXCEPTION
3341       WHEN OTHERS THEN
3342          l_acc_rev_flag := 'N';
3343    END;
3344    --
3345    IF (l_acc_rev_flag = 'Y') THEN
3346 
3347        -- 4645092  ------------------------------------------------------------------------------
3348        -- To allow MPA report to determine if it should generate report process
3349        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
3350        ------------------------------------------------------------------------------------------
3351 
3352        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
3353        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
3354    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
3355    -- call ADRs
3356    -- Bug 4922099
3357    --
3358    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3359         (NVL(l_actual_upg_option, 'N') = 'O') OR
3360         (NVL(l_enc_upg_option, 'N') = 'O')
3361       )
3362    THEN
3363    NULL;
3364    --
3365    --
3366    
3367   l_ccid := AcctDerRule_4(
3368            p_application_id           => p_application_id
3369          , p_ae_header_id             => l_ae_header_id 
3370 , p_source_4 => p_source_4
3371          , x_transaction_coa_id       => l_adr_transaction_coa_id
3372          , x_accounting_coa_id        => l_adr_accounting_coa_id
3373          , x_value_type_code          => l_adr_value_type_code
3374          , p_side                     => 'NA'
3375    );
3376 
3377    xla_ae_lines_pkg.set_ccid(
3378     p_code_combination_id          => l_ccid
3379   , p_value_type_code              => l_adr_value_type_code
3380   , p_transaction_coa_id           => l_adr_transaction_coa_id
3381   , p_accounting_coa_id            => l_adr_accounting_coa_id
3382   , p_adr_code                     => 'CST_DEFAULT'
3383   , p_adr_type_code                => 'S'
3384   , p_component_type               => l_component_type
3385   , p_component_code               => l_component_code
3386   , p_component_type_code          => l_component_type_code
3387   , p_component_appl_id            => l_component_appl_id
3388   , p_amb_context_code             => l_amb_context_code
3389   , p_side                         => 'NA'
3390   );
3391 
3392 
3393    --
3394    --
3395    END IF;
3396 
3397        --
3398        -- Update the line information that should be overwritten
3399        --
3400        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
3401                                          p_header_num   => 1);
3402        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
3403 
3404        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
3405 
3406        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
3407           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
3408        END IF;
3409 
3410       --
3411       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
3412       --
3413       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
3414           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
3415       ELSE
3416           ---------------------------------------------------------------------------------------------------
3417           -- 4262811a Switch Sign
3418           ---------------------------------------------------------------------------------------------------
3419           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
3420           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3421                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3422           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3423                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3424           -- 5132302
3425           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
3426                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3427 
3428       END IF;
3429 
3430       -- 4955764
3431       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3432       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
3433 
3434 
3435       XLA_AE_LINES_PKG.ValidateCurrentLine;
3436       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3437 
3438       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3439                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
3440                ,p_balance_type_code => l_balance_type_code);
3441 
3442    END IF;
3443 
3444    -----------------------------------------------------------------------------------------
3445    -- 4262811 Multiperiod Accounting
3446    -----------------------------------------------------------------------------------------
3447      -- No MPA option is assigned.
3448 
3449 
3450 END IF;
3451 END IF;
3452 --
3453 
3454 --
3455 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3456    trace
3457       (p_msg      => 'END of AcctLineType_9'
3458       ,p_level    => C_LEVEL_PROCEDURE
3459       ,p_module   => l_log_module);
3460 END IF;
3461 --
3462 EXCEPTION
3463   WHEN xla_exceptions_pkg.application_exception THEN
3464       RAISE;
3465   WHEN OTHERS THEN
3466        xla_exceptions_pkg.raise_message
3467            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_9');
3468 END AcctLineType_9;
3469 --
3470 
3471 ---------------------------------------
3472 --
3473 -- PRIVATE FUNCTION
3474 --         AcctLineType_10
3475 --
3476 ---------------------------------------
3477 PROCEDURE AcctLineType_10 (
3478   p_application_id        IN NUMBER
3479  ,p_event_id              IN NUMBER
3480  ,p_calculate_acctd_flag  IN VARCHAR2
3481  ,p_calculate_g_l_flag    IN VARCHAR2
3482  ,p_actual_flag           IN OUT VARCHAR2
3483  ,p_balance_type_code     OUT VARCHAR2
3484  ,p_gain_or_loss_ref      OUT VARCHAR2
3485  
3486 --Cost Management Default Account
3487  , p_source_4            IN NUMBER
3488 --Receiving Accounting Line Type
3489  , p_source_5            IN VARCHAR2
3490 --DISTRIBUTION_IDENTIFIER
3491  , p_source_11            IN NUMBER
3492 --Distribution Type
3493  , p_source_12            IN VARCHAR2
3494  , p_source_12_meaning    IN VARCHAR2
3495 --Entered Currency Code
3496  , p_source_15            IN VARCHAR2
3497 --Entered Amount
3498  , p_source_18            IN NUMBER
3499 --Currency Conversion Date
3500  , p_source_19            IN DATE
3501 --Currency Conversion Rate
3502  , p_source_20            IN NUMBER
3503 --Currency Conversion Type
3504  , p_source_21            IN VARCHAR2
3505 --Accounted Amount
3506  , p_source_22            IN NUMBER
3507 )
3508 IS
3509 
3510 l_component_type              VARCHAR2(80);
3511 l_component_code              VARCHAR2(30);
3512 l_component_type_code         VARCHAR2(1);
3513 l_component_appl_id           INTEGER;
3514 l_amb_context_code            VARCHAR2(30);
3515 l_entity_code                 VARCHAR2(30);
3516 l_event_class_code            VARCHAR2(30);
3517 l_ae_header_id                NUMBER;
3518 l_event_type_code             VARCHAR2(30);
3519 l_line_definition_code        VARCHAR2(30);
3520 l_line_definition_owner_code  VARCHAR2(1);
3521 --
3522 -- adr variables
3523 l_segment                     VARCHAR2(30);
3524 l_ccid                        NUMBER;
3525 l_adr_transaction_coa_id      NUMBER;
3526 l_adr_accounting_coa_id       NUMBER;
3527 l_adr_flexfield_segment_code  VARCHAR2(30);
3528 l_adr_flex_value_set_id       NUMBER;
3529 l_adr_value_type_code         VARCHAR2(30);
3530 l_adr_value_combination_id    NUMBER;
3531 l_adr_value_segment_code      VARCHAR2(30);
3532 
3533 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
3534 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
3535 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
3536 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
3537 
3538 -- 4262811 Variables ------------------------------------------------------------------------------------------
3539 l_entered_amt_idx             NUMBER;
3540 l_accted_amt_idx              NUMBER;
3541 l_acc_rev_flag                VARCHAR2(1);
3542 l_accrual_line_num            NUMBER;
3543 l_tmp_amt                     NUMBER;
3544 l_acc_rev_natural_side_code   VARCHAR2(1);
3545 
3546 l_num_entries                 NUMBER;
3547 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
3548 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
3549 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
3550 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
3551 l_recog_line_1                NUMBER;
3552 l_recog_line_2                NUMBER;
3553 
3554 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
3555 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
3556 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
3557 
3558 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3559 
3560 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
3561 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
3562 
3563 ---------------------------------------------------------------------------------------------------------------
3564 
3565 
3566 --
3567 -- bulk performance
3568 --
3569 l_balance_type_code           VARCHAR2(1);
3570 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
3571 l_log_module                  VARCHAR2(240);
3572 
3573 --
3574 -- Upgrade strategy
3575 --
3576 l_actual_upg_option           VARCHAR2(1);
3577 l_enc_upg_option           VARCHAR2(1);
3578 
3579 --
3580 BEGIN
3581 --
3582 IF g_log_enabled THEN
3583       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_10';
3584 END IF;
3585 --
3586 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3587 
3588       trace
3589          (p_msg      => 'BEGIN of AcctLineType_10'
3590          ,p_level    => C_LEVEL_PROCEDURE
3591          ,p_module   => l_log_module);
3592 
3593 END IF;
3594 --
3595 l_component_type             := 'AMB_JLT';
3596 l_component_code             := 'ACCRUAL';
3597 l_component_type_code        := 'S';
3598 l_component_appl_id          :=  707;
3599 l_amb_context_code           := 'DEFAULT';
3600 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
3601 l_event_class_code           := 'RCPT_REC_INSP';
3602 l_event_type_code            := 'RCPT_REC_INSP_ALL';
3603 l_line_definition_owner_code := 'S';
3604 l_line_definition_code       := 'RCPT_REC_INSP';
3605 --
3606 l_balance_type_code          := 'A';
3607 l_segment                     := NULL;
3608 l_ccid                        := NULL;
3609 l_adr_transaction_coa_id      := NULL;
3610 l_adr_accounting_coa_id       := NULL;
3611 l_adr_flexfield_segment_code  := NULL;
3612 l_adr_flex_value_set_id       := NULL;
3613 l_adr_value_type_code         := NULL;
3614 l_adr_value_combination_id    := NULL;
3615 l_adr_value_segment_code      := NULL;
3616 
3617 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
3618 l_bflow_class_code           := '';    -- 4219869 Business Flow
3619 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
3620 l_budgetary_control_flag     := 'N';
3621 
3622 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
3623 l_bflow_applied_to_amt       := NULL; -- 5132302
3624 l_entered_amt_idx            := NULL;          -- 4262811
3625 l_accted_amt_idx             := NULL;          -- 4262811
3626 l_acc_rev_flag               := NULL;          -- 4262811
3627 l_accrual_line_num           := NULL;          -- 4262811
3628 l_tmp_amt                    := NULL;          -- 4262811
3629 --
3630  
3631 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3632     l_balance_type_code <> 'B' THEN
3633 IF NVL(p_source_5,'
3634 ') =  'Accrual'
3635  THEN 
3636 
3637    --
3638    XLA_AE_LINES_PKG.SetNewLine;
3639 
3640    p_balance_type_code          := l_balance_type_code;
3641    -- set the flag so later we will know whether the gain loss line needs to be created
3642    
3643    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
3644      p_actual_flag :='A';
3645    END IF;
3646 
3647    --
3648    -- bulk performance
3649    --
3650    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3651                                       p_header_num   => 0); -- 4262811
3652    --
3653    -- set accounting line options
3654    --
3655    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3656            p_natural_side_code          => 'D'
3657          , p_gain_or_loss_flag          => 'N'
3658          , p_gl_transfer_mode_code      => 'S'
3659          , p_acct_entry_type_code       => 'A'
3660          , p_switch_side_flag           => 'Y'
3661          , p_merge_duplicate_code       => 'N'
3662          );
3663    --
3664    l_acc_rev_natural_side_code := 'C';  -- 4262811
3665    -- 
3666    --
3667    -- set accounting line type info
3668    --
3669    xla_ae_lines_pkg.SetAcctLineType
3670       (p_component_type             => l_component_type
3671       ,p_event_type_code            => l_event_type_code
3672       ,p_line_definition_owner_code => l_line_definition_owner_code
3673       ,p_line_definition_code       => l_line_definition_code
3674       ,p_accounting_line_code       => l_component_code
3675       ,p_accounting_line_type_code  => l_component_type_code
3676       ,p_accounting_line_appl_id    => l_component_appl_id
3677       ,p_amb_context_code           => l_amb_context_code
3678       ,p_entity_code                => l_entity_code
3679       ,p_event_class_code           => l_event_class_code);
3680    --
3681    -- set accounting class
3682    --
3683    xla_ae_lines_pkg.SetAcctClass(
3684            p_accounting_class_code  => 'ACCRUAL'
3685          , p_ae_header_id           => l_ae_header_id
3686          );
3687 
3688    --
3689    -- set rounding class
3690    --
3691    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
3692                       'ACCRUAL';
3693 
3694    --
3695    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
3696    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
3697    --
3698    -- bulk performance
3699    --
3700    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
3701 
3702    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
3703       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
3704 
3705    -- 4955764
3706    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3707       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
3708 
3709    -- 4458381 Public Sector Enh
3710    
3711    --
3712    -- set accounting attributes for the line type
3713    --
3714    l_entered_amt_idx := 3;
3715    l_accted_amt_idx  := 8;
3716    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
3717    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
3718    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
3719    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
3720    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
3721    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
3722    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
3723    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
3724    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
3725    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
3726    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
3727    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
3728    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
3729    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
3730    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
3731    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
3732    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
3733 
3734    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
3735    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
3736 
3737    ---------------------------------------------------------------------------------------------------------------
3738    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
3739    ---------------------------------------------------------------------------------------------------------------
3740    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
3741 
3742    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3743    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3744 
3745    IF xla_accounting_cache_pkg.GetValueChar
3746          (p_source_code         => 'LEDGER_CATEGORY_CODE'
3747          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
3748    AND l_bflow_method_code = 'PRIOR_ENTRY'
3749 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
3750    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
3751          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
3752        )
3753    THEN
3754          xla_ae_lines_pkg.BflowUpgEntry
3755            (p_business_method_code    => l_bflow_method_code
3756            ,p_business_class_code     => l_bflow_class_code
3757            ,p_balance_type            => l_balance_type_code);
3758    ELSE
3759       NULL;
3760 -- No business flow processing for business flow method of NONE.
3761    END IF;
3762 
3763    --
3764    -- call analytical criteria
3765    --
3766    
3767    --
3768    -- call description
3769    --
3770    -- No description or it is inherited.
3771    --
3772    -- call ADRs
3773    -- Bug 4922099
3774    --
3775    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3776         (NVL(l_actual_upg_option, 'N') = 'O') OR
3777         (NVL(l_enc_upg_option, 'N') = 'O')
3778       )
3779    THEN
3780    NULL;
3781    --
3782    --
3783    
3784   l_ccid := AcctDerRule_4(
3785            p_application_id           => p_application_id
3786          , p_ae_header_id             => l_ae_header_id 
3787 , p_source_4 => p_source_4
3788          , x_transaction_coa_id       => l_adr_transaction_coa_id
3789          , x_accounting_coa_id        => l_adr_accounting_coa_id
3790          , x_value_type_code          => l_adr_value_type_code
3791          , p_side                     => 'NA'
3792    );
3793 
3794    xla_ae_lines_pkg.set_ccid(
3795     p_code_combination_id          => l_ccid
3796   , p_value_type_code              => l_adr_value_type_code
3797   , p_transaction_coa_id           => l_adr_transaction_coa_id
3798   , p_accounting_coa_id            => l_adr_accounting_coa_id
3799   , p_adr_code                     => 'CST_DEFAULT'
3800   , p_adr_type_code                => 'S'
3801   , p_component_type               => l_component_type
3802   , p_component_code               => l_component_code
3803   , p_component_type_code          => l_component_type_code
3804   , p_component_appl_id            => l_component_appl_id
3805   , p_amb_context_code             => l_amb_context_code
3806   , p_side                         => 'NA'
3807   );
3808 
3809 
3810    --
3811    --
3812    END IF;
3813    --
3814    -- Bug 4922099
3815    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
3816           (NVL(l_enc_upg_option, 'N') = 'O')
3817         ) AND
3818         (l_bflow_method_code = 'PRIOR_ENTRY')
3819       )
3820    THEN
3821       IF
3822       --
3823       1 = 2
3824       --
3825       THEN
3826       xla_accounting_err_pkg.build_message
3827                                     (p_appli_s_name            => 'XLA'
3828                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3829                                     ,p_token_1                 => 'LINE_NUMBER'
3830                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
3831                                     ,p_token_2                 => 'LINE_TYPE_NAME'
3832                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
3833                                                                              l_component_type
3834                                                                             ,l_component_code
3835                                                                             ,l_component_type_code
3836                                                                             ,l_component_appl_id
3837                                                                             ,l_amb_context_code
3838                                                                             ,l_entity_code
3839                                                                             ,l_event_class_code
3840                                                                            )
3841                                     ,p_token_3                 => 'OWNER'
3842                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
3843                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
3844                                                                           ,p_lookup_code    => l_component_type_code
3845                                                                          )
3846                                     ,p_token_4                 => 'PRODUCT_NAME'
3847                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
3848                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
3849                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
3850                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
3851                                     ,p_ae_header_id            =>  NULL
3852                                        );
3853 
3854         IF (C_LEVEL_ERROR>= g_log_level) THEN
3855                  trace
3856                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3857                       ,p_level    => C_LEVEL_ERROR
3858                       ,p_module   => l_log_module);
3859         END IF;
3860       END IF;
3861    END IF;
3862    --
3863    --
3864    ------------------------------------------------------------------------------------------------
3865    -- 4219869 Business Flow
3866    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
3867    -- Prior Entry.  Currently, the following code is always generated.
3868    ------------------------------------------------------------------------------------------------
3869    XLA_AE_LINES_PKG.ValidateCurrentLine;
3870 
3871    ------------------------------------------------------------------------------------
3872    -- 4219869 Business Flow
3873    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
3874    ------------------------------------------------------------------------------------
3875    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3876 
3877    ----------------------------------------------------------------------------------
3878    -- 4219869 Business Flow
3879    -- Update journal entry status -- Need to generate this within IF <condition>
3880    ----------------------------------------------------------------------------------
3881    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3882          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
3883          ,p_balance_type_code => l_balance_type_code
3884          );
3885 
3886    -------------------------------------------------------------------------------------------
3887    -- 4262811 - Generate the Accrual Reversal lines
3888    -------------------------------------------------------------------------------------------
3889    BEGIN
3890       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
3891                               (g_array_event(p_event_id).array_value_num('header_index'));
3892       IF l_acc_rev_flag IS NULL THEN
3893          l_acc_rev_flag := 'N';
3894       END IF;
3895    EXCEPTION
3896       WHEN OTHERS THEN
3897          l_acc_rev_flag := 'N';
3898    END;
3899    --
3900    IF (l_acc_rev_flag = 'Y') THEN
3901 
3902        -- 4645092  ------------------------------------------------------------------------------
3903        -- To allow MPA report to determine if it should generate report process
3904        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
3905        ------------------------------------------------------------------------------------------
3906 
3907        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
3908        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
3909    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
3910    -- call ADRs
3911    -- Bug 4922099
3912    --
3913    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3914         (NVL(l_actual_upg_option, 'N') = 'O') OR
3915         (NVL(l_enc_upg_option, 'N') = 'O')
3916       )
3917    THEN
3918    NULL;
3919    --
3920    --
3921    
3922   l_ccid := AcctDerRule_4(
3923            p_application_id           => p_application_id
3924          , p_ae_header_id             => l_ae_header_id 
3925 , p_source_4 => p_source_4
3926          , x_transaction_coa_id       => l_adr_transaction_coa_id
3927          , x_accounting_coa_id        => l_adr_accounting_coa_id
3928          , x_value_type_code          => l_adr_value_type_code
3929          , p_side                     => 'NA'
3930    );
3931 
3932    xla_ae_lines_pkg.set_ccid(
3933     p_code_combination_id          => l_ccid
3934   , p_value_type_code              => l_adr_value_type_code
3935   , p_transaction_coa_id           => l_adr_transaction_coa_id
3936   , p_accounting_coa_id            => l_adr_accounting_coa_id
3937   , p_adr_code                     => 'CST_DEFAULT'
3938   , p_adr_type_code                => 'S'
3939   , p_component_type               => l_component_type
3940   , p_component_code               => l_component_code
3941   , p_component_type_code          => l_component_type_code
3942   , p_component_appl_id            => l_component_appl_id
3943   , p_amb_context_code             => l_amb_context_code
3944   , p_side                         => 'NA'
3945   );
3946 
3947 
3948    --
3949    --
3950    END IF;
3951 
3952        --
3953        -- Update the line information that should be overwritten
3954        --
3955        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
3956                                          p_header_num   => 1);
3957        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
3958 
3959        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
3960 
3961        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
3962           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
3963        END IF;
3964 
3965       --
3966       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
3967       --
3968       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
3969           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
3970       ELSE
3971           ---------------------------------------------------------------------------------------------------
3972           -- 4262811a Switch Sign
3973           ---------------------------------------------------------------------------------------------------
3974           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
3975           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3976                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3977           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3978                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3979           -- 5132302
3980           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
3981                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3982 
3983       END IF;
3984 
3985       -- 4955764
3986       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3987       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
3988 
3989 
3990       XLA_AE_LINES_PKG.ValidateCurrentLine;
3991       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3992 
3993       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3994                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
3995                ,p_balance_type_code => l_balance_type_code);
3996 
3997    END IF;
3998 
3999    -----------------------------------------------------------------------------------------
4000    -- 4262811 Multiperiod Accounting
4001    -----------------------------------------------------------------------------------------
4002      -- No MPA option is assigned.
4003 
4004 
4005 END IF;
4006 END IF;
4007 --
4008 
4009 --
4010 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4011    trace
4012       (p_msg      => 'END of AcctLineType_10'
4013       ,p_level    => C_LEVEL_PROCEDURE
4014       ,p_module   => l_log_module);
4015 END IF;
4016 --
4017 EXCEPTION
4018   WHEN xla_exceptions_pkg.application_exception THEN
4019       RAISE;
4020   WHEN OTHERS THEN
4021        xla_exceptions_pkg.raise_message
4022            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_10');
4023 END AcctLineType_10;
4024 --
4025 
4026 ---------------------------------------
4027 --
4028 -- PRIVATE FUNCTION
4029 --         AcctLineType_11
4030 --
4031 ---------------------------------------
4032 PROCEDURE AcctLineType_11 (
4033   p_application_id        IN NUMBER
4034  ,p_event_id              IN NUMBER
4035  ,p_calculate_acctd_flag  IN VARCHAR2
4036  ,p_calculate_g_l_flag    IN VARCHAR2
4037  ,p_actual_flag           IN OUT VARCHAR2
4038  ,p_balance_type_code     OUT VARCHAR2
4039  ,p_gain_or_loss_ref      OUT VARCHAR2
4040  
4041 --Cost Management Default Account
4042  , p_source_4            IN NUMBER
4043 --Receiving Accounting Line Type
4044  , p_source_5            IN VARCHAR2
4045 --Applied to Application ID
4046  , p_source_6            IN NUMBER
4047 --Applied to Distribution Link Type
4048  , p_source_7            IN VARCHAR2
4049 --Applied to Entity Code
4050  , p_source_8            IN VARCHAR2
4051 --PO_DISTRIBUTION_ID
4052  , p_source_9            IN NUMBER
4053 --Applied To Purchase Document Identifier
4054  , p_source_10            IN NUMBER
4055 --DISTRIBUTION_IDENTIFIER
4056  , p_source_11            IN NUMBER
4057 --Distribution Type
4058  , p_source_12            IN VARCHAR2
4059  , p_source_12_meaning    IN VARCHAR2
4060 --PO Budget Account
4061  , p_source_13            IN NUMBER
4062 --Encumbrance Reversal Amount Entered
4063  , p_source_14            IN NUMBER
4064 --Entered Currency Code
4065  , p_source_15            IN VARCHAR2
4066 --Transaction Encumbrance Reversal Amount
4067  , p_source_16            IN NUMBER
4068 --Costing Period End Accrual Encumbrance Upgrade Option
4069  , p_source_17            IN VARCHAR2
4070 --Entered Amount
4071  , p_source_18            IN NUMBER
4072 --Currency Conversion Date
4073  , p_source_19            IN DATE
4074 --Currency Conversion Rate
4075  , p_source_20            IN NUMBER
4076 --Currency Conversion Type
4077  , p_source_21            IN VARCHAR2
4078 --Accounted Amount
4079  , p_source_22            IN NUMBER
4080 --Purchasing Encumbrance Type Identifier
4081  , p_source_23            IN NUMBER
4082 )
4083 IS
4084 
4085 l_component_type              VARCHAR2(80);
4086 l_component_code              VARCHAR2(30);
4087 l_component_type_code         VARCHAR2(1);
4088 l_component_appl_id           INTEGER;
4089 l_amb_context_code            VARCHAR2(30);
4090 l_entity_code                 VARCHAR2(30);
4091 l_event_class_code            VARCHAR2(30);
4092 l_ae_header_id                NUMBER;
4093 l_event_type_code             VARCHAR2(30);
4094 l_line_definition_code        VARCHAR2(30);
4095 l_line_definition_owner_code  VARCHAR2(1);
4096 --
4097 -- adr variables
4098 l_segment                     VARCHAR2(30);
4099 l_ccid                        NUMBER;
4100 l_adr_transaction_coa_id      NUMBER;
4101 l_adr_accounting_coa_id       NUMBER;
4102 l_adr_flexfield_segment_code  VARCHAR2(30);
4103 l_adr_flex_value_set_id       NUMBER;
4104 l_adr_value_type_code         VARCHAR2(30);
4105 l_adr_value_combination_id    NUMBER;
4106 l_adr_value_segment_code      VARCHAR2(30);
4107 
4108 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
4109 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
4110 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
4111 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
4112 
4113 -- 4262811 Variables ------------------------------------------------------------------------------------------
4114 l_entered_amt_idx             NUMBER;
4115 l_accted_amt_idx              NUMBER;
4116 l_acc_rev_flag                VARCHAR2(1);
4117 l_accrual_line_num            NUMBER;
4118 l_tmp_amt                     NUMBER;
4119 l_acc_rev_natural_side_code   VARCHAR2(1);
4120 
4121 l_num_entries                 NUMBER;
4122 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
4123 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
4124 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
4125 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
4126 l_recog_line_1                NUMBER;
4127 l_recog_line_2                NUMBER;
4128 
4129 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
4130 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
4131 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
4132 
4133 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4134 
4135 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
4136 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
4137 
4138 ---------------------------------------------------------------------------------------------------------------
4139 
4140 
4141 --
4142 -- bulk performance
4143 --
4144 l_balance_type_code           VARCHAR2(1);
4145 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
4146 l_log_module                  VARCHAR2(240);
4147 
4148 --
4149 -- Upgrade strategy
4150 --
4151 l_actual_upg_option           VARCHAR2(1);
4152 l_enc_upg_option           VARCHAR2(1);
4153 
4154 --
4155 BEGIN
4156 --
4157 IF g_log_enabled THEN
4158       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_11';
4159 END IF;
4160 --
4161 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4162 
4163       trace
4164          (p_msg      => 'BEGIN of AcctLineType_11'
4165          ,p_level    => C_LEVEL_PROCEDURE
4166          ,p_module   => l_log_module);
4167 
4168 END IF;
4169 --
4170 l_component_type             := 'AMB_JLT';
4171 l_component_code             := 'CHARGE';
4172 l_component_type_code        := 'S';
4173 l_component_appl_id          :=  707;
4174 l_amb_context_code           := 'DEFAULT';
4175 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
4176 l_event_class_code           := 'PERIOD_END_ACCRUAL';
4177 l_event_type_code            := 'PERIOD_END_ACCRUAL_ALL';
4178 l_line_definition_owner_code := 'S';
4179 l_line_definition_code       := 'PERIOD_END_ACCRUAL';
4180 --
4181 l_balance_type_code          := 'A';
4182 l_segment                     := NULL;
4183 l_ccid                        := NULL;
4184 l_adr_transaction_coa_id      := NULL;
4185 l_adr_accounting_coa_id       := NULL;
4186 l_adr_flexfield_segment_code  := NULL;
4187 l_adr_flex_value_set_id       := NULL;
4188 l_adr_value_type_code         := NULL;
4189 l_adr_value_combination_id    := NULL;
4190 l_adr_value_segment_code      := NULL;
4191 
4192 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
4193 l_bflow_class_code           := '';    -- 4219869 Business Flow
4194 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
4195 l_budgetary_control_flag     := 'N';
4196 
4197 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
4198 l_bflow_applied_to_amt       := NULL; -- 5132302
4199 l_entered_amt_idx            := NULL;          -- 4262811
4200 l_accted_amt_idx             := NULL;          -- 4262811
4201 l_acc_rev_flag               := NULL;          -- 4262811
4202 l_accrual_line_num           := NULL;          -- 4262811
4203 l_tmp_amt                    := NULL;          -- 4262811
4204 --
4205  
4206 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
4207     l_balance_type_code <> 'B' THEN
4208 IF NVL(p_source_5,'
4209 ') =  'Charge'
4210  THEN 
4211 
4212    --
4213    XLA_AE_LINES_PKG.SetNewLine;
4214 
4215    p_balance_type_code          := l_balance_type_code;
4216    -- set the flag so later we will know whether the gain loss line needs to be created
4217    
4218    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
4219      p_actual_flag :='A';
4220    END IF;
4221 
4222    --
4223    -- bulk performance
4224    --
4225    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
4226                                       p_header_num   => 0); -- 4262811
4227    --
4228    -- set accounting line options
4229    --
4230    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
4231            p_natural_side_code          => 'D'
4232          , p_gain_or_loss_flag          => 'N'
4233          , p_gl_transfer_mode_code      => 'S'
4234          , p_acct_entry_type_code       => 'A'
4235          , p_switch_side_flag           => 'Y'
4236          , p_merge_duplicate_code       => 'N'
4237          );
4238    --
4239    l_acc_rev_natural_side_code := 'C';  -- 4262811
4240    -- 
4241    --
4242    -- set accounting line type info
4243    --
4244    xla_ae_lines_pkg.SetAcctLineType
4245       (p_component_type             => l_component_type
4246       ,p_event_type_code            => l_event_type_code
4247       ,p_line_definition_owner_code => l_line_definition_owner_code
4248       ,p_line_definition_code       => l_line_definition_code
4249       ,p_accounting_line_code       => l_component_code
4250       ,p_accounting_line_type_code  => l_component_type_code
4251       ,p_accounting_line_appl_id    => l_component_appl_id
4252       ,p_amb_context_code           => l_amb_context_code
4253       ,p_entity_code                => l_entity_code
4254       ,p_event_class_code           => l_event_class_code);
4255    --
4256    -- set accounting class
4257    --
4258    xla_ae_lines_pkg.SetAcctClass(
4259            p_accounting_class_code  => 'CHARGE'
4260          , p_ae_header_id           => l_ae_header_id
4261          );
4262 
4263    --
4264    -- set rounding class
4265    --
4266    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
4267                       'CHARGE';
4268 
4269    --
4270    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
4271    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
4272    --
4273    -- bulk performance
4274    --
4275    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
4276 
4277    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
4278       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
4279 
4280    -- 4955764
4281    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4282       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
4283 
4284    -- 4458381 Public Sector Enh
4285    
4286    --
4287    -- set accounting attributes for the line type
4288    --
4289    l_entered_amt_idx := 17;
4290    l_accted_amt_idx  := 22;
4291    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
4292    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
4293    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
4294    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
4295    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
4296    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
4297    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
4298    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
4299    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_9);
4300    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
4301    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_10);
4302    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
4303    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
4304    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
4305    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
4306    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
4307    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_13);
4308    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
4309    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
4310    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
4311    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
4312    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
4313    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
4314    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
4315    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_13);
4316    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
4317    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
4318    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
4319    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
4320    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
4321    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
4322    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
4323    l_rec_acct_attrs.array_char_value(16)  := p_source_17;
4324    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
4325    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
4326    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
4327    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
4328    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
4329    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
4330    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
4331    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
4332    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
4333    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
4334    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
4335    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
4336    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
4337    l_rec_acct_attrs.array_num_value(23)  := p_source_23;
4338    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
4339    l_rec_acct_attrs.array_num_value(24)  := p_source_23;
4340 
4341    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
4342    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
4343 
4344    ---------------------------------------------------------------------------------------------------------------
4345    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
4346    ---------------------------------------------------------------------------------------------------------------
4347    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
4348 
4349    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4350    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4351 
4352    IF xla_accounting_cache_pkg.GetValueChar
4353          (p_source_code         => 'LEDGER_CATEGORY_CODE'
4354          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
4355    AND l_bflow_method_code = 'PRIOR_ENTRY'
4356 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
4357    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
4358          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
4359        )
4360    THEN
4361          xla_ae_lines_pkg.BflowUpgEntry
4362            (p_business_method_code    => l_bflow_method_code
4363            ,p_business_class_code     => l_bflow_class_code
4364            ,p_balance_type            => l_balance_type_code);
4365    ELSE
4366       NULL;
4367 -- No business flow processing for business flow method of NONE.
4368    END IF;
4369 
4370    --
4371    -- call analytical criteria
4372    --
4373    
4374    --
4375    -- call description
4376    --
4377    -- No description or it is inherited.
4378    --
4379    -- call ADRs
4380    -- Bug 4922099
4381    --
4382    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4383         (NVL(l_actual_upg_option, 'N') = 'O') OR
4384         (NVL(l_enc_upg_option, 'N') = 'O')
4385       )
4386    THEN
4387    NULL;
4388    --
4389    --
4390    
4391   l_ccid := AcctDerRule_4(
4392            p_application_id           => p_application_id
4393          , p_ae_header_id             => l_ae_header_id 
4394 , p_source_4 => p_source_4
4395          , x_transaction_coa_id       => l_adr_transaction_coa_id
4396          , x_accounting_coa_id        => l_adr_accounting_coa_id
4397          , x_value_type_code          => l_adr_value_type_code
4398          , p_side                     => 'NA'
4399    );
4400 
4401    xla_ae_lines_pkg.set_ccid(
4402     p_code_combination_id          => l_ccid
4403   , p_value_type_code              => l_adr_value_type_code
4404   , p_transaction_coa_id           => l_adr_transaction_coa_id
4405   , p_accounting_coa_id            => l_adr_accounting_coa_id
4406   , p_adr_code                     => 'CST_DEFAULT'
4407   , p_adr_type_code                => 'S'
4408   , p_component_type               => l_component_type
4409   , p_component_code               => l_component_code
4410   , p_component_type_code          => l_component_type_code
4411   , p_component_appl_id            => l_component_appl_id
4412   , p_amb_context_code             => l_amb_context_code
4413   , p_side                         => 'NA'
4414   );
4415 
4416 
4417    --
4418    --
4419    END IF;
4420    --
4421    -- Bug 4922099
4422    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
4423           (NVL(l_enc_upg_option, 'N') = 'O')
4424         ) AND
4425         (l_bflow_method_code = 'PRIOR_ENTRY')
4426       )
4427    THEN
4428       IF
4429       --
4430       1 = 2
4431       --
4432       THEN
4433       xla_accounting_err_pkg.build_message
4434                                     (p_appli_s_name            => 'XLA'
4435                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4436                                     ,p_token_1                 => 'LINE_NUMBER'
4437                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
4438                                     ,p_token_2                 => 'LINE_TYPE_NAME'
4439                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
4440                                                                              l_component_type
4441                                                                             ,l_component_code
4442                                                                             ,l_component_type_code
4443                                                                             ,l_component_appl_id
4444                                                                             ,l_amb_context_code
4445                                                                             ,l_entity_code
4446                                                                             ,l_event_class_code
4447                                                                            )
4448                                     ,p_token_3                 => 'OWNER'
4449                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
4450                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
4451                                                                           ,p_lookup_code    => l_component_type_code
4452                                                                          )
4453                                     ,p_token_4                 => 'PRODUCT_NAME'
4454                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
4455                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
4456                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
4457                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
4458                                     ,p_ae_header_id            =>  NULL
4459                                        );
4460 
4461         IF (C_LEVEL_ERROR>= g_log_level) THEN
4462                  trace
4463                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4464                       ,p_level    => C_LEVEL_ERROR
4465                       ,p_module   => l_log_module);
4466         END IF;
4467       END IF;
4468    END IF;
4469    --
4470    --
4471    ------------------------------------------------------------------------------------------------
4472    -- 4219869 Business Flow
4473    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
4474    -- Prior Entry.  Currently, the following code is always generated.
4475    ------------------------------------------------------------------------------------------------
4476    XLA_AE_LINES_PKG.ValidateCurrentLine;
4477 
4478    ------------------------------------------------------------------------------------
4479    -- 4219869 Business Flow
4480    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
4481    ------------------------------------------------------------------------------------
4482    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4483 
4484    ----------------------------------------------------------------------------------
4485    -- 4219869 Business Flow
4486    -- Update journal entry status -- Need to generate this within IF <condition>
4487    ----------------------------------------------------------------------------------
4488    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4489          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
4490          ,p_balance_type_code => l_balance_type_code
4491          );
4492 
4493    -------------------------------------------------------------------------------------------
4494    -- 4262811 - Generate the Accrual Reversal lines
4495    -------------------------------------------------------------------------------------------
4496    BEGIN
4497       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
4498                               (g_array_event(p_event_id).array_value_num('header_index'));
4499       IF l_acc_rev_flag IS NULL THEN
4500          l_acc_rev_flag := 'N';
4501       END IF;
4502    EXCEPTION
4503       WHEN OTHERS THEN
4504          l_acc_rev_flag := 'N';
4505    END;
4506    --
4507    IF (l_acc_rev_flag = 'Y') THEN
4508 
4509        -- 4645092  ------------------------------------------------------------------------------
4510        -- To allow MPA report to determine if it should generate report process
4511        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
4512        ------------------------------------------------------------------------------------------
4513 
4514        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
4515        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
4516    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
4517    -- call ADRs
4518    -- Bug 4922099
4519    --
4520    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4521         (NVL(l_actual_upg_option, 'N') = 'O') OR
4522         (NVL(l_enc_upg_option, 'N') = 'O')
4523       )
4524    THEN
4525    NULL;
4526    --
4527    --
4528    
4529   l_ccid := AcctDerRule_4(
4530            p_application_id           => p_application_id
4531          , p_ae_header_id             => l_ae_header_id 
4532 , p_source_4 => p_source_4
4533          , x_transaction_coa_id       => l_adr_transaction_coa_id
4534          , x_accounting_coa_id        => l_adr_accounting_coa_id
4535          , x_value_type_code          => l_adr_value_type_code
4536          , p_side                     => 'NA'
4537    );
4538 
4539    xla_ae_lines_pkg.set_ccid(
4540     p_code_combination_id          => l_ccid
4541   , p_value_type_code              => l_adr_value_type_code
4542   , p_transaction_coa_id           => l_adr_transaction_coa_id
4543   , p_accounting_coa_id            => l_adr_accounting_coa_id
4544   , p_adr_code                     => 'CST_DEFAULT'
4545   , p_adr_type_code                => 'S'
4546   , p_component_type               => l_component_type
4547   , p_component_code               => l_component_code
4548   , p_component_type_code          => l_component_type_code
4549   , p_component_appl_id            => l_component_appl_id
4550   , p_amb_context_code             => l_amb_context_code
4551   , p_side                         => 'NA'
4552   );
4553 
4554 
4555    --
4556    --
4557    END IF;
4558 
4559        --
4560        -- Update the line information that should be overwritten
4561        --
4562        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
4563                                          p_header_num   => 1);
4564        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
4565 
4566        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
4567 
4568        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
4569           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
4570        END IF;
4571 
4572       --
4573       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
4574       --
4575       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
4576           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
4577       ELSE
4578           ---------------------------------------------------------------------------------------------------
4579           -- 4262811a Switch Sign
4580           ---------------------------------------------------------------------------------------------------
4581           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
4582           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4583                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4584           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4585                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4586           -- 5132302
4587           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
4588                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4589 
4590       END IF;
4591 
4592       -- 4955764
4593       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4594       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
4595 
4596 
4597       XLA_AE_LINES_PKG.ValidateCurrentLine;
4598       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4599 
4600       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4601                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
4602                ,p_balance_type_code => l_balance_type_code);
4603 
4604    END IF;
4605 
4606    -----------------------------------------------------------------------------------------
4607    -- 4262811 Multiperiod Accounting
4608    -----------------------------------------------------------------------------------------
4609      -- No MPA option is assigned.
4610 
4611 
4612 END IF;
4613 END IF;
4614 --
4615 
4616 --
4617 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4618    trace
4619       (p_msg      => 'END of AcctLineType_11'
4620       ,p_level    => C_LEVEL_PROCEDURE
4621       ,p_module   => l_log_module);
4622 END IF;
4623 --
4624 EXCEPTION
4625   WHEN xla_exceptions_pkg.application_exception THEN
4626       RAISE;
4627   WHEN OTHERS THEN
4628        xla_exceptions_pkg.raise_message
4629            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_11');
4630 END AcctLineType_11;
4631 --
4632 
4633 ---------------------------------------
4634 --
4635 -- PRIVATE FUNCTION
4636 --         AcctLineType_12
4637 --
4638 ---------------------------------------
4639 PROCEDURE AcctLineType_12 (
4640   p_application_id        IN NUMBER
4641  ,p_event_id              IN NUMBER
4642  ,p_calculate_acctd_flag  IN VARCHAR2
4643  ,p_calculate_g_l_flag    IN VARCHAR2
4644  ,p_actual_flag           IN OUT VARCHAR2
4645  ,p_balance_type_code     OUT VARCHAR2
4646  ,p_gain_or_loss_ref      OUT VARCHAR2
4647  
4648 --Cost Management Default Account
4649  , p_source_4            IN NUMBER
4650 --Receiving Accounting Line Type
4651  , p_source_5            IN VARCHAR2
4652 --Applied to Application ID
4653  , p_source_6            IN NUMBER
4654 --Applied to Distribution Link Type
4655  , p_source_7            IN VARCHAR2
4656 --Applied to Entity Code
4657  , p_source_8            IN VARCHAR2
4658 --PO_DISTRIBUTION_ID
4659  , p_source_9            IN NUMBER
4660 --Applied To Purchase Document Identifier
4661  , p_source_10            IN NUMBER
4662 --DISTRIBUTION_IDENTIFIER
4663  , p_source_11            IN NUMBER
4664 --Distribution Type
4665  , p_source_12            IN VARCHAR2
4666  , p_source_12_meaning    IN VARCHAR2
4667 --PO Budget Account
4668  , p_source_13            IN NUMBER
4669 --Encumbrance Reversal Amount Entered
4670  , p_source_14            IN NUMBER
4671 --Entered Currency Code
4672  , p_source_15            IN VARCHAR2
4673 --Transaction Encumbrance Reversal Amount
4674  , p_source_16            IN NUMBER
4675 --Entered Amount
4676  , p_source_18            IN NUMBER
4677 --Currency Conversion Date
4678  , p_source_19            IN DATE
4679 --Currency Conversion Rate
4680  , p_source_20            IN NUMBER
4681 --Currency Conversion Type
4682  , p_source_21            IN VARCHAR2
4683 --Accounted Amount
4684  , p_source_22            IN NUMBER
4685 --Purchasing Encumbrance Type Identifier
4686  , p_source_23            IN NUMBER
4687 --Costing Encumbrance Upgrade Option
4688  , p_source_27            IN VARCHAR2
4689 )
4690 IS
4691 
4692 l_component_type              VARCHAR2(80);
4693 l_component_code              VARCHAR2(30);
4694 l_component_type_code         VARCHAR2(1);
4695 l_component_appl_id           INTEGER;
4696 l_amb_context_code            VARCHAR2(30);
4697 l_entity_code                 VARCHAR2(30);
4698 l_event_class_code            VARCHAR2(30);
4699 l_ae_header_id                NUMBER;
4700 l_event_type_code             VARCHAR2(30);
4701 l_line_definition_code        VARCHAR2(30);
4702 l_line_definition_owner_code  VARCHAR2(1);
4703 --
4704 -- adr variables
4705 l_segment                     VARCHAR2(30);
4706 l_ccid                        NUMBER;
4707 l_adr_transaction_coa_id      NUMBER;
4708 l_adr_accounting_coa_id       NUMBER;
4709 l_adr_flexfield_segment_code  VARCHAR2(30);
4710 l_adr_flex_value_set_id       NUMBER;
4711 l_adr_value_type_code         VARCHAR2(30);
4712 l_adr_value_combination_id    NUMBER;
4713 l_adr_value_segment_code      VARCHAR2(30);
4714 
4715 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
4716 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
4717 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
4718 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
4719 
4720 -- 4262811 Variables ------------------------------------------------------------------------------------------
4721 l_entered_amt_idx             NUMBER;
4722 l_accted_amt_idx              NUMBER;
4723 l_acc_rev_flag                VARCHAR2(1);
4724 l_accrual_line_num            NUMBER;
4725 l_tmp_amt                     NUMBER;
4726 l_acc_rev_natural_side_code   VARCHAR2(1);
4727 
4728 l_num_entries                 NUMBER;
4729 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
4730 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
4731 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
4732 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
4733 l_recog_line_1                NUMBER;
4734 l_recog_line_2                NUMBER;
4735 
4736 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
4737 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
4738 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
4739 
4740 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4741 
4742 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
4743 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
4744 
4745 ---------------------------------------------------------------------------------------------------------------
4746 
4747 
4748 --
4749 -- bulk performance
4750 --
4751 l_balance_type_code           VARCHAR2(1);
4752 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
4753 l_log_module                  VARCHAR2(240);
4754 
4755 --
4756 -- Upgrade strategy
4757 --
4758 l_actual_upg_option           VARCHAR2(1);
4759 l_enc_upg_option           VARCHAR2(1);
4760 
4761 --
4762 BEGIN
4763 --
4764 IF g_log_enabled THEN
4765       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_12';
4766 END IF;
4767 --
4768 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4769 
4770       trace
4771          (p_msg      => 'BEGIN of AcctLineType_12'
4772          ,p_level    => C_LEVEL_PROCEDURE
4773          ,p_module   => l_log_module);
4774 
4775 END IF;
4776 --
4777 l_component_type             := 'AMB_JLT';
4778 l_component_code             := 'CHARGE';
4779 l_component_type_code        := 'S';
4780 l_component_appl_id          :=  707;
4781 l_amb_context_code           := 'DEFAULT';
4782 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
4783 l_event_class_code           := 'DELIVER_EXPENSE';
4784 l_event_type_code            := 'DELIVER_EXPENSE_ALL';
4785 l_line_definition_owner_code := 'S';
4786 l_line_definition_code       := 'DELIVER_EXPENSE';
4787 --
4788 l_balance_type_code          := 'A';
4789 l_segment                     := NULL;
4790 l_ccid                        := NULL;
4791 l_adr_transaction_coa_id      := NULL;
4792 l_adr_accounting_coa_id       := NULL;
4793 l_adr_flexfield_segment_code  := NULL;
4794 l_adr_flex_value_set_id       := NULL;
4795 l_adr_value_type_code         := NULL;
4796 l_adr_value_combination_id    := NULL;
4797 l_adr_value_segment_code      := NULL;
4798 
4799 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
4800 l_bflow_class_code           := '';    -- 4219869 Business Flow
4801 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
4802 l_budgetary_control_flag     := 'N';
4803 
4804 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
4805 l_bflow_applied_to_amt       := NULL; -- 5132302
4806 l_entered_amt_idx            := NULL;          -- 4262811
4807 l_accted_amt_idx             := NULL;          -- 4262811
4808 l_acc_rev_flag               := NULL;          -- 4262811
4809 l_accrual_line_num           := NULL;          -- 4262811
4810 l_tmp_amt                    := NULL;          -- 4262811
4811 --
4812  
4813 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
4814     l_balance_type_code <> 'B' THEN
4815 IF NVL(p_source_5,'
4816 ') =  'Charge'
4817  THEN 
4818 
4819    --
4820    XLA_AE_LINES_PKG.SetNewLine;
4821 
4822    p_balance_type_code          := l_balance_type_code;
4823    -- set the flag so later we will know whether the gain loss line needs to be created
4824    
4825    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
4826      p_actual_flag :='A';
4827    END IF;
4828 
4829    --
4830    -- bulk performance
4831    --
4832    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
4833                                       p_header_num   => 0); -- 4262811
4834    --
4835    -- set accounting line options
4836    --
4837    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
4838            p_natural_side_code          => 'D'
4839          , p_gain_or_loss_flag          => 'N'
4840          , p_gl_transfer_mode_code      => 'S'
4841          , p_acct_entry_type_code       => 'A'
4842          , p_switch_side_flag           => 'Y'
4843          , p_merge_duplicate_code       => 'N'
4844          );
4845    --
4846    l_acc_rev_natural_side_code := 'C';  -- 4262811
4847    -- 
4848    --
4849    -- set accounting line type info
4850    --
4851    xla_ae_lines_pkg.SetAcctLineType
4852       (p_component_type             => l_component_type
4853       ,p_event_type_code            => l_event_type_code
4854       ,p_line_definition_owner_code => l_line_definition_owner_code
4855       ,p_line_definition_code       => l_line_definition_code
4856       ,p_accounting_line_code       => l_component_code
4857       ,p_accounting_line_type_code  => l_component_type_code
4858       ,p_accounting_line_appl_id    => l_component_appl_id
4859       ,p_amb_context_code           => l_amb_context_code
4860       ,p_entity_code                => l_entity_code
4861       ,p_event_class_code           => l_event_class_code);
4862    --
4863    -- set accounting class
4864    --
4865    xla_ae_lines_pkg.SetAcctClass(
4866            p_accounting_class_code  => 'CHARGE'
4867          , p_ae_header_id           => l_ae_header_id
4868          );
4869 
4870    --
4871    -- set rounding class
4872    --
4873    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
4874                       'CHARGE';
4875 
4876    --
4877    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
4878    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
4879    --
4880    -- bulk performance
4881    --
4882    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
4883 
4884    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
4885       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
4886 
4887    -- 4955764
4888    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4889       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
4890 
4891    -- 4458381 Public Sector Enh
4892    
4893    --
4894    -- set accounting attributes for the line type
4895    --
4896    l_entered_amt_idx := 17;
4897    l_accted_amt_idx  := 22;
4898    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
4899    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
4900    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
4901    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
4902    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
4903    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
4904    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
4905    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
4906    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_9);
4907    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
4908    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_10);
4909    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
4910    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
4911    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
4912    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
4913    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
4914    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_13);
4915    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
4916    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
4917    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
4918    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
4919    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
4920    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
4921    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
4922    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_13);
4923    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
4924    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
4925    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
4926    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
4927    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
4928    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
4929    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
4930    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
4931    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
4932    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
4933    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
4934    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
4935    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
4936    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
4937    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
4938    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
4939    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
4940    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
4941    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
4942    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
4943    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
4944    l_rec_acct_attrs.array_num_value(23)  := p_source_23;
4945    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
4946    l_rec_acct_attrs.array_num_value(24)  := p_source_23;
4947 
4948    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
4949    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
4950 
4951    ---------------------------------------------------------------------------------------------------------------
4952    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
4953    ---------------------------------------------------------------------------------------------------------------
4954    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
4955 
4956    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4957    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4958 
4959    IF xla_accounting_cache_pkg.GetValueChar
4960          (p_source_code         => 'LEDGER_CATEGORY_CODE'
4961          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
4962    AND l_bflow_method_code = 'PRIOR_ENTRY'
4963 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
4964    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
4965          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
4966        )
4967    THEN
4968          xla_ae_lines_pkg.BflowUpgEntry
4969            (p_business_method_code    => l_bflow_method_code
4970            ,p_business_class_code     => l_bflow_class_code
4971            ,p_balance_type            => l_balance_type_code);
4972    ELSE
4973       NULL;
4974 -- No business flow processing for business flow method of NONE.
4975    END IF;
4976 
4977    --
4978    -- call analytical criteria
4979    --
4980    
4981    --
4982    -- call description
4983    --
4984    -- No description or it is inherited.
4985    --
4986    -- call ADRs
4987    -- Bug 4922099
4988    --
4989    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4990         (NVL(l_actual_upg_option, 'N') = 'O') OR
4991         (NVL(l_enc_upg_option, 'N') = 'O')
4992       )
4993    THEN
4994    NULL;
4995    --
4996    --
4997    
4998   l_ccid := AcctDerRule_4(
4999            p_application_id           => p_application_id
5000          , p_ae_header_id             => l_ae_header_id 
5001 , p_source_4 => p_source_4
5002          , x_transaction_coa_id       => l_adr_transaction_coa_id
5003          , x_accounting_coa_id        => l_adr_accounting_coa_id
5004          , x_value_type_code          => l_adr_value_type_code
5005          , p_side                     => 'NA'
5006    );
5007 
5008    xla_ae_lines_pkg.set_ccid(
5009     p_code_combination_id          => l_ccid
5010   , p_value_type_code              => l_adr_value_type_code
5011   , p_transaction_coa_id           => l_adr_transaction_coa_id
5012   , p_accounting_coa_id            => l_adr_accounting_coa_id
5013   , p_adr_code                     => 'CST_DEFAULT'
5014   , p_adr_type_code                => 'S'
5015   , p_component_type               => l_component_type
5016   , p_component_code               => l_component_code
5017   , p_component_type_code          => l_component_type_code
5018   , p_component_appl_id            => l_component_appl_id
5019   , p_amb_context_code             => l_amb_context_code
5020   , p_side                         => 'NA'
5021   );
5022 
5023 
5024    --
5025    --
5026    END IF;
5027    --
5028    -- Bug 4922099
5029    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5030           (NVL(l_enc_upg_option, 'N') = 'O')
5031         ) AND
5032         (l_bflow_method_code = 'PRIOR_ENTRY')
5033       )
5034    THEN
5035       IF
5036       --
5037       1 = 2
5038       --
5039       THEN
5040       xla_accounting_err_pkg.build_message
5041                                     (p_appli_s_name            => 'XLA'
5042                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5043                                     ,p_token_1                 => 'LINE_NUMBER'
5044                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
5045                                     ,p_token_2                 => 'LINE_TYPE_NAME'
5046                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
5047                                                                              l_component_type
5048                                                                             ,l_component_code
5049                                                                             ,l_component_type_code
5050                                                                             ,l_component_appl_id
5051                                                                             ,l_amb_context_code
5052                                                                             ,l_entity_code
5053                                                                             ,l_event_class_code
5054                                                                            )
5055                                     ,p_token_3                 => 'OWNER'
5056                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
5057                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
5058                                                                           ,p_lookup_code    => l_component_type_code
5059                                                                          )
5060                                     ,p_token_4                 => 'PRODUCT_NAME'
5061                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5062                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5063                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5064                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5065                                     ,p_ae_header_id            =>  NULL
5066                                        );
5067 
5068         IF (C_LEVEL_ERROR>= g_log_level) THEN
5069                  trace
5070                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5071                       ,p_level    => C_LEVEL_ERROR
5072                       ,p_module   => l_log_module);
5073         END IF;
5074       END IF;
5075    END IF;
5076    --
5077    --
5078    ------------------------------------------------------------------------------------------------
5079    -- 4219869 Business Flow
5080    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5081    -- Prior Entry.  Currently, the following code is always generated.
5082    ------------------------------------------------------------------------------------------------
5083    XLA_AE_LINES_PKG.ValidateCurrentLine;
5084 
5085    ------------------------------------------------------------------------------------
5086    -- 4219869 Business Flow
5087    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5088    ------------------------------------------------------------------------------------
5089    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5090 
5091    ----------------------------------------------------------------------------------
5092    -- 4219869 Business Flow
5093    -- Update journal entry status -- Need to generate this within IF <condition>
5094    ----------------------------------------------------------------------------------
5095    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5096          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5097          ,p_balance_type_code => l_balance_type_code
5098          );
5099 
5100    -------------------------------------------------------------------------------------------
5101    -- 4262811 - Generate the Accrual Reversal lines
5102    -------------------------------------------------------------------------------------------
5103    BEGIN
5104       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5105                               (g_array_event(p_event_id).array_value_num('header_index'));
5106       IF l_acc_rev_flag IS NULL THEN
5107          l_acc_rev_flag := 'N';
5108       END IF;
5109    EXCEPTION
5110       WHEN OTHERS THEN
5111          l_acc_rev_flag := 'N';
5112    END;
5113    --
5114    IF (l_acc_rev_flag = 'Y') THEN
5115 
5116        -- 4645092  ------------------------------------------------------------------------------
5117        -- To allow MPA report to determine if it should generate report process
5118        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5119        ------------------------------------------------------------------------------------------
5120 
5121        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5122        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5123    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
5124    -- call ADRs
5125    -- Bug 4922099
5126    --
5127    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5128         (NVL(l_actual_upg_option, 'N') = 'O') OR
5129         (NVL(l_enc_upg_option, 'N') = 'O')
5130       )
5131    THEN
5132    NULL;
5133    --
5134    --
5135    
5136   l_ccid := AcctDerRule_4(
5137            p_application_id           => p_application_id
5138          , p_ae_header_id             => l_ae_header_id 
5139 , p_source_4 => p_source_4
5140          , x_transaction_coa_id       => l_adr_transaction_coa_id
5141          , x_accounting_coa_id        => l_adr_accounting_coa_id
5142          , x_value_type_code          => l_adr_value_type_code
5143          , p_side                     => 'NA'
5144    );
5145 
5146    xla_ae_lines_pkg.set_ccid(
5147     p_code_combination_id          => l_ccid
5148   , p_value_type_code              => l_adr_value_type_code
5149   , p_transaction_coa_id           => l_adr_transaction_coa_id
5150   , p_accounting_coa_id            => l_adr_accounting_coa_id
5151   , p_adr_code                     => 'CST_DEFAULT'
5152   , p_adr_type_code                => 'S'
5153   , p_component_type               => l_component_type
5154   , p_component_code               => l_component_code
5155   , p_component_type_code          => l_component_type_code
5156   , p_component_appl_id            => l_component_appl_id
5157   , p_amb_context_code             => l_amb_context_code
5158   , p_side                         => 'NA'
5159   );
5160 
5161 
5162    --
5163    --
5164    END IF;
5165 
5166        --
5167        -- Update the line information that should be overwritten
5168        --
5169        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5170                                          p_header_num   => 1);
5171        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
5172 
5173        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5174 
5175        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
5176           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5177        END IF;
5178 
5179       --
5180       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5181       --
5182       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5183           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
5184       ELSE
5185           ---------------------------------------------------------------------------------------------------
5186           -- 4262811a Switch Sign
5187           ---------------------------------------------------------------------------------------------------
5188           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
5189           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5190                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5191           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5192                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5193           -- 5132302
5194           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5195                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5196 
5197       END IF;
5198 
5199       -- 4955764
5200       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5201       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5202 
5203 
5204       XLA_AE_LINES_PKG.ValidateCurrentLine;
5205       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5206 
5207       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5208                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5209                ,p_balance_type_code => l_balance_type_code);
5210 
5211    END IF;
5212 
5213    -----------------------------------------------------------------------------------------
5214    -- 4262811 Multiperiod Accounting
5215    -----------------------------------------------------------------------------------------
5216      -- No MPA option is assigned.
5217 
5218 
5219 END IF;
5220 END IF;
5221 --
5222 
5223 --
5224 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5225    trace
5226       (p_msg      => 'END of AcctLineType_12'
5227       ,p_level    => C_LEVEL_PROCEDURE
5228       ,p_module   => l_log_module);
5229 END IF;
5230 --
5231 EXCEPTION
5232   WHEN xla_exceptions_pkg.application_exception THEN
5233       RAISE;
5234   WHEN OTHERS THEN
5235        xla_exceptions_pkg.raise_message
5236            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_12');
5237 END AcctLineType_12;
5238 --
5239 
5240 ---------------------------------------
5241 --
5242 -- PRIVATE FUNCTION
5243 --         AcctLineType_13
5244 --
5245 ---------------------------------------
5246 PROCEDURE AcctLineType_13 (
5247   p_application_id        IN NUMBER
5248  ,p_event_id              IN NUMBER
5249  ,p_calculate_acctd_flag  IN VARCHAR2
5250  ,p_calculate_g_l_flag    IN VARCHAR2
5251  ,p_actual_flag           IN OUT VARCHAR2
5252  ,p_balance_type_code     OUT VARCHAR2
5253  ,p_gain_or_loss_ref      OUT VARCHAR2
5254  
5255 --Cost Management Default Account
5256  , p_source_4            IN NUMBER
5257 --Receiving Accounting Line Type
5258  , p_source_5            IN VARCHAR2
5259 --DISTRIBUTION_IDENTIFIER
5260  , p_source_11            IN NUMBER
5261 --Distribution Type
5262  , p_source_12            IN VARCHAR2
5263  , p_source_12_meaning    IN VARCHAR2
5264 --Entered Currency Code
5265  , p_source_15            IN VARCHAR2
5266 --Entered Amount
5267  , p_source_18            IN NUMBER
5268 --Currency Conversion Date
5269  , p_source_19            IN DATE
5270 --Currency Conversion Rate
5271  , p_source_20            IN NUMBER
5272 --Accounted Amount
5273  , p_source_22            IN NUMBER
5274 )
5275 IS
5276 
5277 l_component_type              VARCHAR2(80);
5278 l_component_code              VARCHAR2(30);
5279 l_component_type_code         VARCHAR2(1);
5280 l_component_appl_id           INTEGER;
5281 l_amb_context_code            VARCHAR2(30);
5282 l_entity_code                 VARCHAR2(30);
5283 l_event_class_code            VARCHAR2(30);
5284 l_ae_header_id                NUMBER;
5285 l_event_type_code             VARCHAR2(30);
5286 l_line_definition_code        VARCHAR2(30);
5287 l_line_definition_owner_code  VARCHAR2(1);
5288 --
5289 -- adr variables
5290 l_segment                     VARCHAR2(30);
5291 l_ccid                        NUMBER;
5292 l_adr_transaction_coa_id      NUMBER;
5293 l_adr_accounting_coa_id       NUMBER;
5294 l_adr_flexfield_segment_code  VARCHAR2(30);
5295 l_adr_flex_value_set_id       NUMBER;
5296 l_adr_value_type_code         VARCHAR2(30);
5297 l_adr_value_combination_id    NUMBER;
5298 l_adr_value_segment_code      VARCHAR2(30);
5299 
5300 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
5301 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
5302 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
5303 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
5304 
5305 -- 4262811 Variables ------------------------------------------------------------------------------------------
5306 l_entered_amt_idx             NUMBER;
5307 l_accted_amt_idx              NUMBER;
5308 l_acc_rev_flag                VARCHAR2(1);
5309 l_accrual_line_num            NUMBER;
5310 l_tmp_amt                     NUMBER;
5311 l_acc_rev_natural_side_code   VARCHAR2(1);
5312 
5313 l_num_entries                 NUMBER;
5314 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
5315 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
5316 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
5317 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
5318 l_recog_line_1                NUMBER;
5319 l_recog_line_2                NUMBER;
5320 
5321 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
5322 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
5323 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
5324 
5325 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5326 
5327 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
5328 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
5329 
5330 ---------------------------------------------------------------------------------------------------------------
5331 
5332 
5333 --
5334 -- bulk performance
5335 --
5336 l_balance_type_code           VARCHAR2(1);
5337 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
5338 l_log_module                  VARCHAR2(240);
5339 
5340 --
5341 -- Upgrade strategy
5342 --
5343 l_actual_upg_option           VARCHAR2(1);
5344 l_enc_upg_option           VARCHAR2(1);
5345 
5346 --
5347 BEGIN
5348 --
5349 IF g_log_enabled THEN
5350       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_13';
5351 END IF;
5352 --
5353 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5354 
5355       trace
5356          (p_msg      => 'BEGIN of AcctLineType_13'
5357          ,p_level    => C_LEVEL_PROCEDURE
5358          ,p_module   => l_log_module);
5359 
5360 END IF;
5361 --
5362 l_component_type             := 'AMB_JLT';
5363 l_component_code             := 'CHARGE';
5364 l_component_type_code        := 'S';
5365 l_component_appl_id          :=  707;
5366 l_amb_context_code           := 'DEFAULT';
5367 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
5368 l_event_class_code           := 'RETR_PRICE_ADJ_DEL';
5369 l_event_type_code            := 'RETR_PRICE_ADJ_DEL_ALL';
5370 l_line_definition_owner_code := 'S';
5371 l_line_definition_code       := 'RETR_PRICE_ADJ_DEL';
5372 --
5373 l_balance_type_code          := 'A';
5374 l_segment                     := NULL;
5375 l_ccid                        := NULL;
5376 l_adr_transaction_coa_id      := NULL;
5377 l_adr_accounting_coa_id       := NULL;
5378 l_adr_flexfield_segment_code  := NULL;
5379 l_adr_flex_value_set_id       := NULL;
5380 l_adr_value_type_code         := NULL;
5381 l_adr_value_combination_id    := NULL;
5382 l_adr_value_segment_code      := NULL;
5383 
5384 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
5385 l_bflow_class_code           := '';    -- 4219869 Business Flow
5386 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
5387 l_budgetary_control_flag     := 'N';
5388 
5389 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
5390 l_bflow_applied_to_amt       := NULL; -- 5132302
5391 l_entered_amt_idx            := NULL;          -- 4262811
5392 l_accted_amt_idx             := NULL;          -- 4262811
5393 l_acc_rev_flag               := NULL;          -- 4262811
5394 l_accrual_line_num           := NULL;          -- 4262811
5395 l_tmp_amt                    := NULL;          -- 4262811
5396 --
5397  
5398 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5399     l_balance_type_code <> 'B' THEN
5400 IF NVL(p_source_5,'
5401 ') =  'Charge'
5402  THEN 
5403 
5404    --
5405    XLA_AE_LINES_PKG.SetNewLine;
5406 
5407    p_balance_type_code          := l_balance_type_code;
5408    -- set the flag so later we will know whether the gain loss line needs to be created
5409    
5410    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5411      p_actual_flag :='A';
5412    END IF;
5413 
5414    --
5415    -- bulk performance
5416    --
5417    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5418                                       p_header_num   => 0); -- 4262811
5419    --
5420    -- set accounting line options
5421    --
5422    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5423            p_natural_side_code          => 'D'
5424          , p_gain_or_loss_flag          => 'N'
5425          , p_gl_transfer_mode_code      => 'S'
5426          , p_acct_entry_type_code       => 'A'
5427          , p_switch_side_flag           => 'Y'
5428          , p_merge_duplicate_code       => 'N'
5429          );
5430    --
5431    l_acc_rev_natural_side_code := 'C';  -- 4262811
5432    -- 
5433    --
5434    -- set accounting line type info
5435    --
5436    xla_ae_lines_pkg.SetAcctLineType
5437       (p_component_type             => l_component_type
5438       ,p_event_type_code            => l_event_type_code
5439       ,p_line_definition_owner_code => l_line_definition_owner_code
5440       ,p_line_definition_code       => l_line_definition_code
5441       ,p_accounting_line_code       => l_component_code
5442       ,p_accounting_line_type_code  => l_component_type_code
5443       ,p_accounting_line_appl_id    => l_component_appl_id
5444       ,p_amb_context_code           => l_amb_context_code
5445       ,p_entity_code                => l_entity_code
5446       ,p_event_class_code           => l_event_class_code);
5447    --
5448    -- set accounting class
5449    --
5450    xla_ae_lines_pkg.SetAcctClass(
5451            p_accounting_class_code  => 'CHARGE'
5452          , p_ae_header_id           => l_ae_header_id
5453          );
5454 
5455    --
5456    -- set rounding class
5457    --
5458    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5459                       'CHARGE';
5460 
5461    --
5462    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5463    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5464    --
5465    -- bulk performance
5466    --
5467    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5468 
5469    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5470       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5471 
5472    -- 4955764
5473    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5474       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5475 
5476    -- 4458381 Public Sector Enh
5477    
5478    --
5479    -- set accounting attributes for the line type
5480    --
5481    l_entered_amt_idx := 3;
5482    l_accted_amt_idx  := 8;
5483    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
5484    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
5485    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
5486    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
5487    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
5488    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
5489    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
5490    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
5491    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
5492    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
5493    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
5494    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
5495    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
5496    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
5497    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_20);
5498    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
5499    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
5500 
5501    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5502    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5503 
5504    ---------------------------------------------------------------------------------------------------------------
5505    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5506    ---------------------------------------------------------------------------------------------------------------
5507    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5508 
5509    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5510    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5511 
5512    IF xla_accounting_cache_pkg.GetValueChar
5513          (p_source_code         => 'LEDGER_CATEGORY_CODE'
5514          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5515    AND l_bflow_method_code = 'PRIOR_ENTRY'
5516 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5517    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5518          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5519        )
5520    THEN
5521          xla_ae_lines_pkg.BflowUpgEntry
5522            (p_business_method_code    => l_bflow_method_code
5523            ,p_business_class_code     => l_bflow_class_code
5524            ,p_balance_type            => l_balance_type_code);
5525    ELSE
5526       NULL;
5527 -- No business flow processing for business flow method of NONE.
5528    END IF;
5529 
5530    --
5531    -- call analytical criteria
5532    --
5533    
5534    --
5535    -- call description
5536    --
5537    -- No description or it is inherited.
5538    --
5539    -- call ADRs
5540    -- Bug 4922099
5541    --
5542    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5543         (NVL(l_actual_upg_option, 'N') = 'O') OR
5544         (NVL(l_enc_upg_option, 'N') = 'O')
5545       )
5546    THEN
5547    NULL;
5548    --
5549    --
5550    
5551   l_ccid := AcctDerRule_4(
5552            p_application_id           => p_application_id
5553          , p_ae_header_id             => l_ae_header_id 
5554 , p_source_4 => p_source_4
5555          , x_transaction_coa_id       => l_adr_transaction_coa_id
5556          , x_accounting_coa_id        => l_adr_accounting_coa_id
5557          , x_value_type_code          => l_adr_value_type_code
5558          , p_side                     => 'NA'
5559    );
5560 
5561    xla_ae_lines_pkg.set_ccid(
5562     p_code_combination_id          => l_ccid
5563   , p_value_type_code              => l_adr_value_type_code
5564   , p_transaction_coa_id           => l_adr_transaction_coa_id
5565   , p_accounting_coa_id            => l_adr_accounting_coa_id
5566   , p_adr_code                     => 'CST_DEFAULT'
5567   , p_adr_type_code                => 'S'
5568   , p_component_type               => l_component_type
5569   , p_component_code               => l_component_code
5570   , p_component_type_code          => l_component_type_code
5571   , p_component_appl_id            => l_component_appl_id
5572   , p_amb_context_code             => l_amb_context_code
5573   , p_side                         => 'NA'
5574   );
5575 
5576 
5577    --
5578    --
5579    END IF;
5580    --
5581    -- Bug 4922099
5582    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5583           (NVL(l_enc_upg_option, 'N') = 'O')
5584         ) AND
5585         (l_bflow_method_code = 'PRIOR_ENTRY')
5586       )
5587    THEN
5588       IF
5589       --
5590       1 = 2
5591       --
5592       THEN
5593       xla_accounting_err_pkg.build_message
5594                                     (p_appli_s_name            => 'XLA'
5595                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5596                                     ,p_token_1                 => 'LINE_NUMBER'
5597                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
5598                                     ,p_token_2                 => 'LINE_TYPE_NAME'
5599                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
5600                                                                              l_component_type
5601                                                                             ,l_component_code
5602                                                                             ,l_component_type_code
5603                                                                             ,l_component_appl_id
5604                                                                             ,l_amb_context_code
5605                                                                             ,l_entity_code
5606                                                                             ,l_event_class_code
5607                                                                            )
5608                                     ,p_token_3                 => 'OWNER'
5609                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
5610                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
5611                                                                           ,p_lookup_code    => l_component_type_code
5612                                                                          )
5613                                     ,p_token_4                 => 'PRODUCT_NAME'
5614                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5615                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5616                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5617                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5618                                     ,p_ae_header_id            =>  NULL
5619                                        );
5620 
5621         IF (C_LEVEL_ERROR>= g_log_level) THEN
5622                  trace
5623                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5624                       ,p_level    => C_LEVEL_ERROR
5625                       ,p_module   => l_log_module);
5626         END IF;
5627       END IF;
5628    END IF;
5629    --
5630    --
5631    ------------------------------------------------------------------------------------------------
5632    -- 4219869 Business Flow
5633    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5634    -- Prior Entry.  Currently, the following code is always generated.
5635    ------------------------------------------------------------------------------------------------
5636    XLA_AE_LINES_PKG.ValidateCurrentLine;
5637 
5638    ------------------------------------------------------------------------------------
5639    -- 4219869 Business Flow
5640    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5641    ------------------------------------------------------------------------------------
5642    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5643 
5644    ----------------------------------------------------------------------------------
5645    -- 4219869 Business Flow
5646    -- Update journal entry status -- Need to generate this within IF <condition>
5647    ----------------------------------------------------------------------------------
5648    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5649          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5650          ,p_balance_type_code => l_balance_type_code
5651          );
5652 
5653    -------------------------------------------------------------------------------------------
5654    -- 4262811 - Generate the Accrual Reversal lines
5655    -------------------------------------------------------------------------------------------
5656    BEGIN
5657       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5658                               (g_array_event(p_event_id).array_value_num('header_index'));
5659       IF l_acc_rev_flag IS NULL THEN
5660          l_acc_rev_flag := 'N';
5661       END IF;
5662    EXCEPTION
5663       WHEN OTHERS THEN
5664          l_acc_rev_flag := 'N';
5665    END;
5666    --
5667    IF (l_acc_rev_flag = 'Y') THEN
5668 
5669        -- 4645092  ------------------------------------------------------------------------------
5670        -- To allow MPA report to determine if it should generate report process
5671        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5672        ------------------------------------------------------------------------------------------
5673 
5674        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5675        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5676    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
5677    -- call ADRs
5678    -- Bug 4922099
5679    --
5680    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5681         (NVL(l_actual_upg_option, 'N') = 'O') OR
5682         (NVL(l_enc_upg_option, 'N') = 'O')
5683       )
5684    THEN
5685    NULL;
5686    --
5687    --
5688    
5689   l_ccid := AcctDerRule_4(
5690            p_application_id           => p_application_id
5691          , p_ae_header_id             => l_ae_header_id 
5692 , p_source_4 => p_source_4
5693          , x_transaction_coa_id       => l_adr_transaction_coa_id
5694          , x_accounting_coa_id        => l_adr_accounting_coa_id
5695          , x_value_type_code          => l_adr_value_type_code
5696          , p_side                     => 'NA'
5697    );
5698 
5699    xla_ae_lines_pkg.set_ccid(
5700     p_code_combination_id          => l_ccid
5701   , p_value_type_code              => l_adr_value_type_code
5702   , p_transaction_coa_id           => l_adr_transaction_coa_id
5703   , p_accounting_coa_id            => l_adr_accounting_coa_id
5704   , p_adr_code                     => 'CST_DEFAULT'
5705   , p_adr_type_code                => 'S'
5706   , p_component_type               => l_component_type
5707   , p_component_code               => l_component_code
5708   , p_component_type_code          => l_component_type_code
5709   , p_component_appl_id            => l_component_appl_id
5710   , p_amb_context_code             => l_amb_context_code
5711   , p_side                         => 'NA'
5712   );
5713 
5714 
5715    --
5716    --
5717    END IF;
5718 
5719        --
5720        -- Update the line information that should be overwritten
5721        --
5722        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5723                                          p_header_num   => 1);
5724        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
5725 
5726        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5727 
5728        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
5729           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5730        END IF;
5731 
5732       --
5733       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5734       --
5735       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5736           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
5737       ELSE
5738           ---------------------------------------------------------------------------------------------------
5739           -- 4262811a Switch Sign
5740           ---------------------------------------------------------------------------------------------------
5741           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
5742           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5743                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5744           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5745                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5746           -- 5132302
5747           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5748                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5749 
5750       END IF;
5751 
5752       -- 4955764
5753       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5754       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5755 
5756 
5757       XLA_AE_LINES_PKG.ValidateCurrentLine;
5758       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5759 
5760       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5761                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5762                ,p_balance_type_code => l_balance_type_code);
5763 
5764    END IF;
5765 
5766    -----------------------------------------------------------------------------------------
5767    -- 4262811 Multiperiod Accounting
5768    -----------------------------------------------------------------------------------------
5769      -- No MPA option is assigned.
5770 
5771 
5772 END IF;
5773 END IF;
5774 --
5775 
5776 --
5777 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5778    trace
5779       (p_msg      => 'END of AcctLineType_13'
5780       ,p_level    => C_LEVEL_PROCEDURE
5781       ,p_module   => l_log_module);
5782 END IF;
5783 --
5784 EXCEPTION
5785   WHEN xla_exceptions_pkg.application_exception THEN
5786       RAISE;
5787   WHEN OTHERS THEN
5788        xla_exceptions_pkg.raise_message
5789            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_13');
5790 END AcctLineType_13;
5791 --
5792 
5793 ---------------------------------------
5794 --
5795 -- PRIVATE FUNCTION
5796 --         AcctLineType_14
5797 --
5798 ---------------------------------------
5799 PROCEDURE AcctLineType_14 (
5800   p_application_id        IN NUMBER
5801  ,p_event_id              IN NUMBER
5802  ,p_calculate_acctd_flag  IN VARCHAR2
5803  ,p_calculate_g_l_flag    IN VARCHAR2
5804  ,p_actual_flag           IN OUT VARCHAR2
5805  ,p_balance_type_code     OUT VARCHAR2
5806  ,p_gain_or_loss_ref      OUT VARCHAR2
5807  
5808 --Cost Management Default Account
5809  , p_source_4            IN NUMBER
5810 --Receiving Accounting Line Type
5811  , p_source_5            IN VARCHAR2
5812 --DISTRIBUTION_IDENTIFIER
5813  , p_source_11            IN NUMBER
5814 --Distribution Type
5815  , p_source_12            IN VARCHAR2
5816  , p_source_12_meaning    IN VARCHAR2
5817 --Entered Currency Code
5818  , p_source_15            IN VARCHAR2
5819 --Entered Amount
5820  , p_source_18            IN NUMBER
5821 --Currency Conversion Date
5822  , p_source_19            IN DATE
5823 --Currency Conversion Rate
5824  , p_source_20            IN NUMBER
5825 --Currency Conversion Type
5826  , p_source_21            IN VARCHAR2
5827 --Accounted Amount
5828  , p_source_22            IN NUMBER
5829 )
5830 IS
5831 
5832 l_component_type              VARCHAR2(80);
5833 l_component_code              VARCHAR2(30);
5834 l_component_type_code         VARCHAR2(1);
5835 l_component_appl_id           INTEGER;
5836 l_amb_context_code            VARCHAR2(30);
5837 l_entity_code                 VARCHAR2(30);
5838 l_event_class_code            VARCHAR2(30);
5839 l_ae_header_id                NUMBER;
5840 l_event_type_code             VARCHAR2(30);
5841 l_line_definition_code        VARCHAR2(30);
5842 l_line_definition_owner_code  VARCHAR2(1);
5843 --
5844 -- adr variables
5845 l_segment                     VARCHAR2(30);
5846 l_ccid                        NUMBER;
5847 l_adr_transaction_coa_id      NUMBER;
5848 l_adr_accounting_coa_id       NUMBER;
5849 l_adr_flexfield_segment_code  VARCHAR2(30);
5850 l_adr_flex_value_set_id       NUMBER;
5851 l_adr_value_type_code         VARCHAR2(30);
5852 l_adr_value_combination_id    NUMBER;
5853 l_adr_value_segment_code      VARCHAR2(30);
5854 
5855 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
5856 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
5857 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
5858 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
5859 
5860 -- 4262811 Variables ------------------------------------------------------------------------------------------
5861 l_entered_amt_idx             NUMBER;
5862 l_accted_amt_idx              NUMBER;
5863 l_acc_rev_flag                VARCHAR2(1);
5864 l_accrual_line_num            NUMBER;
5865 l_tmp_amt                     NUMBER;
5866 l_acc_rev_natural_side_code   VARCHAR2(1);
5867 
5868 l_num_entries                 NUMBER;
5869 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
5870 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
5871 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
5872 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
5873 l_recog_line_1                NUMBER;
5874 l_recog_line_2                NUMBER;
5875 
5876 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
5877 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
5878 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
5879 
5880 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5881 
5882 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
5883 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
5884 
5885 ---------------------------------------------------------------------------------------------------------------
5886 
5887 
5888 --
5889 -- bulk performance
5890 --
5891 l_balance_type_code           VARCHAR2(1);
5892 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
5893 l_log_module                  VARCHAR2(240);
5894 
5895 --
5896 -- Upgrade strategy
5897 --
5898 l_actual_upg_option           VARCHAR2(1);
5899 l_enc_upg_option           VARCHAR2(1);
5900 
5901 --
5902 BEGIN
5903 --
5904 IF g_log_enabled THEN
5905       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_14';
5906 END IF;
5907 --
5908 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5909 
5910       trace
5911          (p_msg      => 'BEGIN of AcctLineType_14'
5912          ,p_level    => C_LEVEL_PROCEDURE
5913          ,p_module   => l_log_module);
5914 
5915 END IF;
5916 --
5917 l_component_type             := 'AMB_JLT';
5918 l_component_code             := 'CLEARING';
5919 l_component_type_code        := 'S';
5920 l_component_appl_id          :=  707;
5921 l_amb_context_code           := 'DEFAULT';
5922 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
5923 l_event_class_code           := 'RCPT_REC_INSP';
5924 l_event_type_code            := 'RCPT_REC_INSP_ALL';
5925 l_line_definition_owner_code := 'S';
5926 l_line_definition_code       := 'RCPT_REC_INSP';
5927 --
5928 l_balance_type_code          := 'A';
5929 l_segment                     := NULL;
5930 l_ccid                        := NULL;
5931 l_adr_transaction_coa_id      := NULL;
5932 l_adr_accounting_coa_id       := NULL;
5933 l_adr_flexfield_segment_code  := NULL;
5934 l_adr_flex_value_set_id       := NULL;
5935 l_adr_value_type_code         := NULL;
5936 l_adr_value_combination_id    := NULL;
5937 l_adr_value_segment_code      := NULL;
5938 
5939 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
5940 l_bflow_class_code           := '';    -- 4219869 Business Flow
5941 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
5942 l_budgetary_control_flag     := 'N';
5943 
5944 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
5945 l_bflow_applied_to_amt       := NULL; -- 5132302
5946 l_entered_amt_idx            := NULL;          -- 4262811
5947 l_accted_amt_idx             := NULL;          -- 4262811
5948 l_acc_rev_flag               := NULL;          -- 4262811
5949 l_accrual_line_num           := NULL;          -- 4262811
5950 l_tmp_amt                    := NULL;          -- 4262811
5951 --
5952  
5953 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5954     l_balance_type_code <> 'B' THEN
5955 IF NVL(p_source_5,'
5956 ') =  'Clearing'
5957  THEN 
5958 
5959    --
5960    XLA_AE_LINES_PKG.SetNewLine;
5961 
5962    p_balance_type_code          := l_balance_type_code;
5963    -- set the flag so later we will know whether the gain loss line needs to be created
5964    
5965    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5966      p_actual_flag :='A';
5967    END IF;
5968 
5969    --
5970    -- bulk performance
5971    --
5972    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5973                                       p_header_num   => 0); -- 4262811
5974    --
5975    -- set accounting line options
5976    --
5977    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5978            p_natural_side_code          => 'D'
5979          , p_gain_or_loss_flag          => 'N'
5980          , p_gl_transfer_mode_code      => 'S'
5981          , p_acct_entry_type_code       => 'A'
5982          , p_switch_side_flag           => 'Y'
5983          , p_merge_duplicate_code       => 'N'
5984          );
5985    --
5986    l_acc_rev_natural_side_code := 'C';  -- 4262811
5987    -- 
5988    --
5989    -- set accounting line type info
5990    --
5991    xla_ae_lines_pkg.SetAcctLineType
5992       (p_component_type             => l_component_type
5993       ,p_event_type_code            => l_event_type_code
5994       ,p_line_definition_owner_code => l_line_definition_owner_code
5995       ,p_line_definition_code       => l_line_definition_code
5996       ,p_accounting_line_code       => l_component_code
5997       ,p_accounting_line_type_code  => l_component_type_code
5998       ,p_accounting_line_appl_id    => l_component_appl_id
5999       ,p_amb_context_code           => l_amb_context_code
6000       ,p_entity_code                => l_entity_code
6001       ,p_event_class_code           => l_event_class_code);
6002    --
6003    -- set accounting class
6004    --
6005    xla_ae_lines_pkg.SetAcctClass(
6006            p_accounting_class_code  => 'CLEARING'
6007          , p_ae_header_id           => l_ae_header_id
6008          );
6009 
6010    --
6011    -- set rounding class
6012    --
6013    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
6014                       'CLEARING';
6015 
6016    --
6017    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
6018    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
6019    --
6020    -- bulk performance
6021    --
6022    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
6023 
6024    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
6025       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
6026 
6027    -- 4955764
6028    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6029       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
6030 
6031    -- 4458381 Public Sector Enh
6032    
6033    --
6034    -- set accounting attributes for the line type
6035    --
6036    l_entered_amt_idx := 3;
6037    l_accted_amt_idx  := 8;
6038    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
6039    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
6040    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
6041    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
6042    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
6043    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
6044    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
6045    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
6046    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
6047    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
6048    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
6049    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
6050    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
6051    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
6052    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
6053    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
6054    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
6055 
6056    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
6057    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
6058 
6059    ---------------------------------------------------------------------------------------------------------------
6060    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
6061    ---------------------------------------------------------------------------------------------------------------
6062    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
6063 
6064    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6065    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6066 
6067    IF xla_accounting_cache_pkg.GetValueChar
6068          (p_source_code         => 'LEDGER_CATEGORY_CODE'
6069          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
6070    AND l_bflow_method_code = 'PRIOR_ENTRY'
6071 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
6072    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
6073          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
6074        )
6075    THEN
6076          xla_ae_lines_pkg.BflowUpgEntry
6077            (p_business_method_code    => l_bflow_method_code
6078            ,p_business_class_code     => l_bflow_class_code
6079            ,p_balance_type            => l_balance_type_code);
6080    ELSE
6081       NULL;
6082 -- No business flow processing for business flow method of NONE.
6083    END IF;
6084 
6085    --
6086    -- call analytical criteria
6087    --
6088    
6089    --
6090    -- call description
6091    --
6092    -- No description or it is inherited.
6093    --
6094    -- call ADRs
6095    -- Bug 4922099
6096    --
6097    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6098         (NVL(l_actual_upg_option, 'N') = 'O') OR
6099         (NVL(l_enc_upg_option, 'N') = 'O')
6100       )
6101    THEN
6102    NULL;
6103    --
6104    --
6105    
6106   l_ccid := AcctDerRule_4(
6107            p_application_id           => p_application_id
6108          , p_ae_header_id             => l_ae_header_id 
6109 , p_source_4 => p_source_4
6110          , x_transaction_coa_id       => l_adr_transaction_coa_id
6111          , x_accounting_coa_id        => l_adr_accounting_coa_id
6112          , x_value_type_code          => l_adr_value_type_code
6113          , p_side                     => 'NA'
6114    );
6115 
6116    xla_ae_lines_pkg.set_ccid(
6117     p_code_combination_id          => l_ccid
6118   , p_value_type_code              => l_adr_value_type_code
6119   , p_transaction_coa_id           => l_adr_transaction_coa_id
6120   , p_accounting_coa_id            => l_adr_accounting_coa_id
6121   , p_adr_code                     => 'CST_DEFAULT'
6122   , p_adr_type_code                => 'S'
6123   , p_component_type               => l_component_type
6124   , p_component_code               => l_component_code
6125   , p_component_type_code          => l_component_type_code
6126   , p_component_appl_id            => l_component_appl_id
6127   , p_amb_context_code             => l_amb_context_code
6128   , p_side                         => 'NA'
6129   );
6130 
6131 
6132    --
6133    --
6134    END IF;
6135    --
6136    -- Bug 4922099
6137    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
6138           (NVL(l_enc_upg_option, 'N') = 'O')
6139         ) AND
6140         (l_bflow_method_code = 'PRIOR_ENTRY')
6141       )
6142    THEN
6143       IF
6144       --
6145       1 = 2
6146       --
6147       THEN
6148       xla_accounting_err_pkg.build_message
6149                                     (p_appli_s_name            => 'XLA'
6150                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6151                                     ,p_token_1                 => 'LINE_NUMBER'
6152                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
6153                                     ,p_token_2                 => 'LINE_TYPE_NAME'
6154                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
6155                                                                              l_component_type
6156                                                                             ,l_component_code
6157                                                                             ,l_component_type_code
6158                                                                             ,l_component_appl_id
6159                                                                             ,l_amb_context_code
6160                                                                             ,l_entity_code
6161                                                                             ,l_event_class_code
6162                                                                            )
6163                                     ,p_token_3                 => 'OWNER'
6164                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
6165                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
6166                                                                           ,p_lookup_code    => l_component_type_code
6167                                                                          )
6168                                     ,p_token_4                 => 'PRODUCT_NAME'
6169                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
6170                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
6171                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
6172                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
6173                                     ,p_ae_header_id            =>  NULL
6174                                        );
6175 
6176         IF (C_LEVEL_ERROR>= g_log_level) THEN
6177                  trace
6178                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6179                       ,p_level    => C_LEVEL_ERROR
6180                       ,p_module   => l_log_module);
6181         END IF;
6182       END IF;
6183    END IF;
6184    --
6185    --
6186    ------------------------------------------------------------------------------------------------
6187    -- 4219869 Business Flow
6188    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
6189    -- Prior Entry.  Currently, the following code is always generated.
6190    ------------------------------------------------------------------------------------------------
6191    XLA_AE_LINES_PKG.ValidateCurrentLine;
6192 
6193    ------------------------------------------------------------------------------------
6194    -- 4219869 Business Flow
6195    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
6196    ------------------------------------------------------------------------------------
6197    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6198 
6199    ----------------------------------------------------------------------------------
6200    -- 4219869 Business Flow
6201    -- Update journal entry status -- Need to generate this within IF <condition>
6202    ----------------------------------------------------------------------------------
6203    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6204          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
6205          ,p_balance_type_code => l_balance_type_code
6206          );
6207 
6208    -------------------------------------------------------------------------------------------
6209    -- 4262811 - Generate the Accrual Reversal lines
6210    -------------------------------------------------------------------------------------------
6211    BEGIN
6212       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
6213                               (g_array_event(p_event_id).array_value_num('header_index'));
6214       IF l_acc_rev_flag IS NULL THEN
6215          l_acc_rev_flag := 'N';
6216       END IF;
6217    EXCEPTION
6218       WHEN OTHERS THEN
6219          l_acc_rev_flag := 'N';
6220    END;
6221    --
6222    IF (l_acc_rev_flag = 'Y') THEN
6223 
6224        -- 4645092  ------------------------------------------------------------------------------
6225        -- To allow MPA report to determine if it should generate report process
6226        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
6227        ------------------------------------------------------------------------------------------
6228 
6229        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
6230        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
6231    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
6232    -- call ADRs
6233    -- Bug 4922099
6234    --
6235    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6236         (NVL(l_actual_upg_option, 'N') = 'O') OR
6237         (NVL(l_enc_upg_option, 'N') = 'O')
6238       )
6239    THEN
6240    NULL;
6241    --
6242    --
6243    
6244   l_ccid := AcctDerRule_4(
6245            p_application_id           => p_application_id
6246          , p_ae_header_id             => l_ae_header_id 
6247 , p_source_4 => p_source_4
6248          , x_transaction_coa_id       => l_adr_transaction_coa_id
6249          , x_accounting_coa_id        => l_adr_accounting_coa_id
6250          , x_value_type_code          => l_adr_value_type_code
6251          , p_side                     => 'NA'
6252    );
6253 
6254    xla_ae_lines_pkg.set_ccid(
6255     p_code_combination_id          => l_ccid
6256   , p_value_type_code              => l_adr_value_type_code
6257   , p_transaction_coa_id           => l_adr_transaction_coa_id
6258   , p_accounting_coa_id            => l_adr_accounting_coa_id
6259   , p_adr_code                     => 'CST_DEFAULT'
6260   , p_adr_type_code                => 'S'
6261   , p_component_type               => l_component_type
6262   , p_component_code               => l_component_code
6263   , p_component_type_code          => l_component_type_code
6264   , p_component_appl_id            => l_component_appl_id
6265   , p_amb_context_code             => l_amb_context_code
6266   , p_side                         => 'NA'
6267   );
6268 
6269 
6270    --
6271    --
6272    END IF;
6273 
6274        --
6275        -- Update the line information that should be overwritten
6276        --
6277        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
6278                                          p_header_num   => 1);
6279        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
6280 
6281        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
6282 
6283        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
6284           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
6285        END IF;
6286 
6287       --
6288       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
6289       --
6290       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
6291           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
6292       ELSE
6293           ---------------------------------------------------------------------------------------------------
6294           -- 4262811a Switch Sign
6295           ---------------------------------------------------------------------------------------------------
6296           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
6297           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6298                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6299           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6300                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6301           -- 5132302
6302           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
6303                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6304 
6305       END IF;
6306 
6307       -- 4955764
6308       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6309       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
6310 
6311 
6312       XLA_AE_LINES_PKG.ValidateCurrentLine;
6313       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6314 
6315       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6316                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
6317                ,p_balance_type_code => l_balance_type_code);
6318 
6319    END IF;
6320 
6321    -----------------------------------------------------------------------------------------
6322    -- 4262811 Multiperiod Accounting
6323    -----------------------------------------------------------------------------------------
6324      -- No MPA option is assigned.
6325 
6326 
6327 END IF;
6328 END IF;
6329 --
6330 
6331 --
6332 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6333    trace
6334       (p_msg      => 'END of AcctLineType_14'
6335       ,p_level    => C_LEVEL_PROCEDURE
6336       ,p_module   => l_log_module);
6337 END IF;
6338 --
6339 EXCEPTION
6340   WHEN xla_exceptions_pkg.application_exception THEN
6341       RAISE;
6342   WHEN OTHERS THEN
6343        xla_exceptions_pkg.raise_message
6344            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_14');
6345 END AcctLineType_14;
6346 --
6347 
6348 ---------------------------------------
6349 --
6350 -- PRIVATE FUNCTION
6351 --         AcctLineType_15
6352 --
6353 ---------------------------------------
6354 PROCEDURE AcctLineType_15 (
6355   p_application_id        IN NUMBER
6356  ,p_event_id              IN NUMBER
6357  ,p_calculate_acctd_flag  IN VARCHAR2
6358  ,p_calculate_g_l_flag    IN VARCHAR2
6359  ,p_actual_flag           IN OUT VARCHAR2
6360  ,p_balance_type_code     OUT VARCHAR2
6361  ,p_gain_or_loss_ref      OUT VARCHAR2
6362  
6363 --Cost Management Default Account
6364  , p_source_4            IN NUMBER
6365 --Applied to Application ID
6366  , p_source_6            IN NUMBER
6367 --Applied to Distribution Link Type
6368  , p_source_7            IN VARCHAR2
6369 --Applied to Entity Code
6370  , p_source_8            IN VARCHAR2
6371 --Applied To Purchase Document Identifier
6372  , p_source_10            IN NUMBER
6373 --DISTRIBUTION_IDENTIFIER
6374  , p_source_11            IN NUMBER
6375 --Distribution Type
6376  , p_source_12            IN VARCHAR2
6377  , p_source_12_meaning    IN VARCHAR2
6378 --PO Budget Account
6379  , p_source_13            IN NUMBER
6380 --Encumbrance Reversal Amount Entered
6381  , p_source_14            IN NUMBER
6382 --Entered Currency Code
6383  , p_source_15            IN VARCHAR2
6384 --Transaction Encumbrance Reversal Amount
6385  , p_source_16            IN NUMBER
6386 --Entered Amount
6387  , p_source_18            IN NUMBER
6388 --Currency Conversion Date
6389  , p_source_19            IN DATE
6390 --Currency Conversion Rate
6391  , p_source_20            IN NUMBER
6392 --Currency Conversion Type
6393  , p_source_21            IN VARCHAR2
6394 --Accounted Amount
6395  , p_source_22            IN NUMBER
6396 --Purchasing Encumbrance Type Identifier
6397  , p_source_23            IN NUMBER
6398 --Accounting Line Type
6399  , p_source_24            IN NUMBER
6400 --Costing Encumbrance Upgrade Option
6401  , p_source_27            IN VARCHAR2
6402 --TXN_PO_DISTRIBUTION_ID
6403  , p_source_28            IN NUMBER
6404 )
6405 IS
6406 
6407 l_component_type              VARCHAR2(80);
6408 l_component_code              VARCHAR2(30);
6409 l_component_type_code         VARCHAR2(1);
6410 l_component_appl_id           INTEGER;
6411 l_amb_context_code            VARCHAR2(30);
6412 l_entity_code                 VARCHAR2(30);
6413 l_event_class_code            VARCHAR2(30);
6414 l_ae_header_id                NUMBER;
6415 l_event_type_code             VARCHAR2(30);
6416 l_line_definition_code        VARCHAR2(30);
6417 l_line_definition_owner_code  VARCHAR2(1);
6418 --
6419 -- adr variables
6420 l_segment                     VARCHAR2(30);
6421 l_ccid                        NUMBER;
6422 l_adr_transaction_coa_id      NUMBER;
6423 l_adr_accounting_coa_id       NUMBER;
6424 l_adr_flexfield_segment_code  VARCHAR2(30);
6425 l_adr_flex_value_set_id       NUMBER;
6426 l_adr_value_type_code         VARCHAR2(30);
6427 l_adr_value_combination_id    NUMBER;
6428 l_adr_value_segment_code      VARCHAR2(30);
6429 
6430 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
6431 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
6432 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
6433 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
6434 
6435 -- 4262811 Variables ------------------------------------------------------------------------------------------
6436 l_entered_amt_idx             NUMBER;
6437 l_accted_amt_idx              NUMBER;
6438 l_acc_rev_flag                VARCHAR2(1);
6439 l_accrual_line_num            NUMBER;
6440 l_tmp_amt                     NUMBER;
6441 l_acc_rev_natural_side_code   VARCHAR2(1);
6442 
6443 l_num_entries                 NUMBER;
6444 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
6445 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
6446 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
6447 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
6448 l_recog_line_1                NUMBER;
6449 l_recog_line_2                NUMBER;
6450 
6451 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
6452 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
6453 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
6454 
6455 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
6456 
6457 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
6458 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
6459 
6460 ---------------------------------------------------------------------------------------------------------------
6461 
6462 
6463 --
6464 -- bulk performance
6465 --
6466 l_balance_type_code           VARCHAR2(1);
6467 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
6468 l_log_module                  VARCHAR2(240);
6469 
6470 --
6471 -- Upgrade strategy
6472 --
6473 l_actual_upg_option           VARCHAR2(1);
6474 l_enc_upg_option           VARCHAR2(1);
6475 
6476 --
6477 BEGIN
6478 --
6479 IF g_log_enabled THEN
6480       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_15';
6481 END IF;
6482 --
6483 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6484 
6485       trace
6486          (p_msg      => 'BEGIN of AcctLineType_15'
6487          ,p_level    => C_LEVEL_PROCEDURE
6488          ,p_module   => l_log_module);
6489 
6490 END IF;
6491 --
6492 l_component_type             := 'AMB_JLT';
6493 l_component_code             := 'CLEARING';
6494 l_component_type_code        := 'S';
6495 l_component_appl_id          :=  707;
6496 l_amb_context_code           := 'DEFAULT';
6497 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
6498 l_event_class_code           := 'PURCHASE_ORDER';
6499 l_event_type_code            := 'PURCHASE_ORDER_ALL';
6500 l_line_definition_owner_code := 'S';
6501 l_line_definition_code       := 'PURCHASE_ORDER';
6502 --
6503 l_balance_type_code          := 'A';
6504 l_segment                     := NULL;
6505 l_ccid                        := NULL;
6506 l_adr_transaction_coa_id      := NULL;
6507 l_adr_accounting_coa_id       := NULL;
6508 l_adr_flexfield_segment_code  := NULL;
6509 l_adr_flex_value_set_id       := NULL;
6510 l_adr_value_type_code         := NULL;
6511 l_adr_value_combination_id    := NULL;
6512 l_adr_value_segment_code      := NULL;
6513 
6514 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
6515 l_bflow_class_code           := '';    -- 4219869 Business Flow
6516 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
6517 l_budgetary_control_flag     := 'N';
6518 
6519 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
6520 l_bflow_applied_to_amt       := NULL; -- 5132302
6521 l_entered_amt_idx            := NULL;          -- 4262811
6522 l_accted_amt_idx             := NULL;          -- 4262811
6523 l_acc_rev_flag               := NULL;          -- 4262811
6524 l_accrual_line_num           := NULL;          -- 4262811
6525 l_tmp_amt                    := NULL;          -- 4262811
6526 --
6527  
6528 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
6529     l_balance_type_code <> 'B' THEN
6530 IF NVL(p_source_24,9E125) =  31
6531  THEN 
6532 
6533    --
6534    XLA_AE_LINES_PKG.SetNewLine;
6535 
6536    p_balance_type_code          := l_balance_type_code;
6537    -- set the flag so later we will know whether the gain loss line needs to be created
6538    
6539    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
6540      p_actual_flag :='A';
6541    END IF;
6542 
6543    --
6544    -- bulk performance
6545    --
6546    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
6547                                       p_header_num   => 0); -- 4262811
6548    --
6549    -- set accounting line options
6550    --
6551    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
6552            p_natural_side_code          => 'D'
6553          , p_gain_or_loss_flag          => 'N'
6554          , p_gl_transfer_mode_code      => 'S'
6555          , p_acct_entry_type_code       => 'A'
6556          , p_switch_side_flag           => 'Y'
6557          , p_merge_duplicate_code       => 'N'
6558          );
6559    --
6560    l_acc_rev_natural_side_code := 'C';  -- 4262811
6561    -- 
6562    --
6563    -- set accounting line type info
6564    --
6565    xla_ae_lines_pkg.SetAcctLineType
6566       (p_component_type             => l_component_type
6567       ,p_event_type_code            => l_event_type_code
6568       ,p_line_definition_owner_code => l_line_definition_owner_code
6569       ,p_line_definition_code       => l_line_definition_code
6570       ,p_accounting_line_code       => l_component_code
6571       ,p_accounting_line_type_code  => l_component_type_code
6572       ,p_accounting_line_appl_id    => l_component_appl_id
6573       ,p_amb_context_code           => l_amb_context_code
6574       ,p_entity_code                => l_entity_code
6575       ,p_event_class_code           => l_event_class_code);
6576    --
6577    -- set accounting class
6578    --
6579    xla_ae_lines_pkg.SetAcctClass(
6580            p_accounting_class_code  => 'CLEARING'
6581          , p_ae_header_id           => l_ae_header_id
6582          );
6583 
6584    --
6585    -- set rounding class
6586    --
6587    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
6588                       'CLEARING';
6589 
6590    --
6591    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
6592    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
6593    --
6594    -- bulk performance
6595    --
6596    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
6597 
6598    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
6599       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
6600 
6601    -- 4955764
6602    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6603       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
6604 
6605    -- 4458381 Public Sector Enh
6606    
6607    --
6608    -- set accounting attributes for the line type
6609    --
6610    l_entered_amt_idx := 17;
6611    l_accted_amt_idx  := 22;
6612    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
6613    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
6614    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
6615    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
6616    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
6617    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
6618    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
6619    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
6620    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
6621    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
6622    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_10);
6623    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
6624    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
6625    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
6626    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
6627    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
6628    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_13);
6629    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
6630    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
6631    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
6632    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
6633    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
6634    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
6635    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
6636    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_13);
6637    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
6638    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
6639    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
6640    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
6641    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
6642    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
6643    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
6644    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
6645    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
6646    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
6647    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
6648    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
6649    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
6650    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
6651    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
6652    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
6653    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
6654    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
6655    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
6656    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
6657    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
6658    l_rec_acct_attrs.array_num_value(23)  := p_source_23;
6659    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
6660    l_rec_acct_attrs.array_num_value(24)  := p_source_23;
6661 
6662    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
6663    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
6664 
6665    ---------------------------------------------------------------------------------------------------------------
6666    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
6667    ---------------------------------------------------------------------------------------------------------------
6668    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
6669 
6670    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6671    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6672 
6673    IF xla_accounting_cache_pkg.GetValueChar
6674          (p_source_code         => 'LEDGER_CATEGORY_CODE'
6675          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
6676    AND l_bflow_method_code = 'PRIOR_ENTRY'
6677 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
6678    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
6679          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
6680        )
6681    THEN
6682          xla_ae_lines_pkg.BflowUpgEntry
6683            (p_business_method_code    => l_bflow_method_code
6684            ,p_business_class_code     => l_bflow_class_code
6685            ,p_balance_type            => l_balance_type_code);
6686    ELSE
6687       NULL;
6688 -- No business flow processing for business flow method of NONE.
6689    END IF;
6690 
6691    --
6692    -- call analytical criteria
6693    --
6694    
6695    --
6696    -- call description
6697    --
6698    -- No description or it is inherited.
6699    --
6700    -- call ADRs
6701    -- Bug 4922099
6702    --
6703    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6704         (NVL(l_actual_upg_option, 'N') = 'O') OR
6705         (NVL(l_enc_upg_option, 'N') = 'O')
6706       )
6707    THEN
6708    NULL;
6709    --
6710    --
6711    
6712   l_ccid := AcctDerRule_4(
6713            p_application_id           => p_application_id
6714          , p_ae_header_id             => l_ae_header_id 
6715 , p_source_4 => p_source_4
6716          , x_transaction_coa_id       => l_adr_transaction_coa_id
6717          , x_accounting_coa_id        => l_adr_accounting_coa_id
6718          , x_value_type_code          => l_adr_value_type_code
6719          , p_side                     => 'NA'
6720    );
6721 
6722    xla_ae_lines_pkg.set_ccid(
6723     p_code_combination_id          => l_ccid
6724   , p_value_type_code              => l_adr_value_type_code
6725   , p_transaction_coa_id           => l_adr_transaction_coa_id
6726   , p_accounting_coa_id            => l_adr_accounting_coa_id
6727   , p_adr_code                     => 'CST_DEFAULT'
6728   , p_adr_type_code                => 'S'
6729   , p_component_type               => l_component_type
6730   , p_component_code               => l_component_code
6731   , p_component_type_code          => l_component_type_code
6732   , p_component_appl_id            => l_component_appl_id
6733   , p_amb_context_code             => l_amb_context_code
6734   , p_side                         => 'NA'
6735   );
6736 
6737 
6738    --
6739    --
6740    END IF;
6741    --
6742    -- Bug 4922099
6743    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
6744           (NVL(l_enc_upg_option, 'N') = 'O')
6745         ) AND
6746         (l_bflow_method_code = 'PRIOR_ENTRY')
6747       )
6748    THEN
6749       IF
6750       --
6751       1 = 2
6752       --
6753       THEN
6754       xla_accounting_err_pkg.build_message
6755                                     (p_appli_s_name            => 'XLA'
6756                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6757                                     ,p_token_1                 => 'LINE_NUMBER'
6758                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
6759                                     ,p_token_2                 => 'LINE_TYPE_NAME'
6760                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
6761                                                                              l_component_type
6762                                                                             ,l_component_code
6763                                                                             ,l_component_type_code
6764                                                                             ,l_component_appl_id
6765                                                                             ,l_amb_context_code
6766                                                                             ,l_entity_code
6767                                                                             ,l_event_class_code
6768                                                                            )
6769                                     ,p_token_3                 => 'OWNER'
6770                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
6771                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
6772                                                                           ,p_lookup_code    => l_component_type_code
6773                                                                          )
6774                                     ,p_token_4                 => 'PRODUCT_NAME'
6775                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
6776                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
6777                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
6778                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
6779                                     ,p_ae_header_id            =>  NULL
6780                                        );
6781 
6782         IF (C_LEVEL_ERROR>= g_log_level) THEN
6783                  trace
6784                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6785                       ,p_level    => C_LEVEL_ERROR
6786                       ,p_module   => l_log_module);
6787         END IF;
6788       END IF;
6789    END IF;
6790    --
6791    --
6792    ------------------------------------------------------------------------------------------------
6793    -- 4219869 Business Flow
6794    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
6795    -- Prior Entry.  Currently, the following code is always generated.
6796    ------------------------------------------------------------------------------------------------
6797    XLA_AE_LINES_PKG.ValidateCurrentLine;
6798 
6799    ------------------------------------------------------------------------------------
6800    -- 4219869 Business Flow
6801    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
6802    ------------------------------------------------------------------------------------
6803    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6804 
6805    ----------------------------------------------------------------------------------
6806    -- 4219869 Business Flow
6807    -- Update journal entry status -- Need to generate this within IF <condition>
6808    ----------------------------------------------------------------------------------
6809    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6810          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
6811          ,p_balance_type_code => l_balance_type_code
6812          );
6813 
6814    -------------------------------------------------------------------------------------------
6815    -- 4262811 - Generate the Accrual Reversal lines
6816    -------------------------------------------------------------------------------------------
6817    BEGIN
6818       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
6819                               (g_array_event(p_event_id).array_value_num('header_index'));
6820       IF l_acc_rev_flag IS NULL THEN
6821          l_acc_rev_flag := 'N';
6822       END IF;
6823    EXCEPTION
6824       WHEN OTHERS THEN
6825          l_acc_rev_flag := 'N';
6826    END;
6827    --
6828    IF (l_acc_rev_flag = 'Y') THEN
6829 
6830        -- 4645092  ------------------------------------------------------------------------------
6831        -- To allow MPA report to determine if it should generate report process
6832        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
6833        ------------------------------------------------------------------------------------------
6834 
6835        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
6836        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
6837    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
6838    -- call ADRs
6839    -- Bug 4922099
6840    --
6841    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6842         (NVL(l_actual_upg_option, 'N') = 'O') OR
6843         (NVL(l_enc_upg_option, 'N') = 'O')
6844       )
6845    THEN
6846    NULL;
6847    --
6848    --
6849    
6850   l_ccid := AcctDerRule_4(
6851            p_application_id           => p_application_id
6852          , p_ae_header_id             => l_ae_header_id 
6853 , p_source_4 => p_source_4
6854          , x_transaction_coa_id       => l_adr_transaction_coa_id
6855          , x_accounting_coa_id        => l_adr_accounting_coa_id
6856          , x_value_type_code          => l_adr_value_type_code
6857          , p_side                     => 'NA'
6858    );
6859 
6860    xla_ae_lines_pkg.set_ccid(
6861     p_code_combination_id          => l_ccid
6862   , p_value_type_code              => l_adr_value_type_code
6863   , p_transaction_coa_id           => l_adr_transaction_coa_id
6864   , p_accounting_coa_id            => l_adr_accounting_coa_id
6865   , p_adr_code                     => 'CST_DEFAULT'
6866   , p_adr_type_code                => 'S'
6867   , p_component_type               => l_component_type
6868   , p_component_code               => l_component_code
6869   , p_component_type_code          => l_component_type_code
6870   , p_component_appl_id            => l_component_appl_id
6871   , p_amb_context_code             => l_amb_context_code
6872   , p_side                         => 'NA'
6873   );
6874 
6875 
6876    --
6877    --
6878    END IF;
6879 
6880        --
6881        -- Update the line information that should be overwritten
6882        --
6883        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
6884                                          p_header_num   => 1);
6885        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
6886 
6887        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
6888 
6889        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
6890           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
6891        END IF;
6892 
6893       --
6894       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
6895       --
6896       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
6897           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
6898       ELSE
6899           ---------------------------------------------------------------------------------------------------
6900           -- 4262811a Switch Sign
6901           ---------------------------------------------------------------------------------------------------
6902           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
6903           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6904                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6905           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6906                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6907           -- 5132302
6908           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
6909                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6910 
6911       END IF;
6912 
6913       -- 4955764
6914       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6915       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
6916 
6917 
6918       XLA_AE_LINES_PKG.ValidateCurrentLine;
6919       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6920 
6921       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6922                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
6923                ,p_balance_type_code => l_balance_type_code);
6924 
6925    END IF;
6926 
6927    -----------------------------------------------------------------------------------------
6928    -- 4262811 Multiperiod Accounting
6929    -----------------------------------------------------------------------------------------
6930      -- No MPA option is assigned.
6931 
6932 
6933 END IF;
6934 END IF;
6935 --
6936 
6937 --
6938 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6939    trace
6940       (p_msg      => 'END of AcctLineType_15'
6941       ,p_level    => C_LEVEL_PROCEDURE
6942       ,p_module   => l_log_module);
6943 END IF;
6944 --
6945 EXCEPTION
6946   WHEN xla_exceptions_pkg.application_exception THEN
6947       RAISE;
6948   WHEN OTHERS THEN
6949        xla_exceptions_pkg.raise_message
6950            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_15');
6951 END AcctLineType_15;
6952 --
6953 
6954 ---------------------------------------
6955 --
6956 -- PRIVATE FUNCTION
6957 --         AcctLineType_16
6958 --
6959 ---------------------------------------
6960 PROCEDURE AcctLineType_16 (
6961   p_application_id        IN NUMBER
6962  ,p_event_id              IN NUMBER
6963  ,p_calculate_acctd_flag  IN VARCHAR2
6964  ,p_calculate_g_l_flag    IN VARCHAR2
6965  ,p_actual_flag           IN OUT VARCHAR2
6966  ,p_balance_type_code     OUT VARCHAR2
6967  ,p_gain_or_loss_ref      OUT VARCHAR2
6968  
6969 --Cost Management Default Account
6970  , p_source_4            IN NUMBER
6971 --DISTRIBUTION_IDENTIFIER
6972  , p_source_11            IN NUMBER
6973 --Distribution Type
6974  , p_source_12            IN VARCHAR2
6975  , p_source_12_meaning    IN VARCHAR2
6976 --Entered Currency Code
6977  , p_source_15            IN VARCHAR2
6978 --Entered Amount
6979  , p_source_18            IN NUMBER
6980 --Currency Conversion Date
6981  , p_source_19            IN DATE
6982 --Currency Conversion Rate
6983  , p_source_20            IN NUMBER
6984 --Currency Conversion Type
6985  , p_source_21            IN VARCHAR2
6986 --Accounted Amount
6987  , p_source_22            IN NUMBER
6988 --Accounting Line Type
6989  , p_source_24            IN NUMBER
6990 )
6991 IS
6992 
6993 l_component_type              VARCHAR2(80);
6994 l_component_code              VARCHAR2(30);
6995 l_component_type_code         VARCHAR2(1);
6996 l_component_appl_id           INTEGER;
6997 l_amb_context_code            VARCHAR2(30);
6998 l_entity_code                 VARCHAR2(30);
6999 l_event_class_code            VARCHAR2(30);
7000 l_ae_header_id                NUMBER;
7001 l_event_type_code             VARCHAR2(30);
7002 l_line_definition_code        VARCHAR2(30);
7003 l_line_definition_owner_code  VARCHAR2(1);
7004 --
7005 -- adr variables
7006 l_segment                     VARCHAR2(30);
7007 l_ccid                        NUMBER;
7008 l_adr_transaction_coa_id      NUMBER;
7009 l_adr_accounting_coa_id       NUMBER;
7010 l_adr_flexfield_segment_code  VARCHAR2(30);
7011 l_adr_flex_value_set_id       NUMBER;
7012 l_adr_value_type_code         VARCHAR2(30);
7013 l_adr_value_combination_id    NUMBER;
7014 l_adr_value_segment_code      VARCHAR2(30);
7015 
7016 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
7017 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
7018 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
7019 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
7020 
7021 -- 4262811 Variables ------------------------------------------------------------------------------------------
7022 l_entered_amt_idx             NUMBER;
7023 l_accted_amt_idx              NUMBER;
7024 l_acc_rev_flag                VARCHAR2(1);
7025 l_accrual_line_num            NUMBER;
7026 l_tmp_amt                     NUMBER;
7027 l_acc_rev_natural_side_code   VARCHAR2(1);
7028 
7029 l_num_entries                 NUMBER;
7030 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
7031 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
7032 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
7033 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
7034 l_recog_line_1                NUMBER;
7035 l_recog_line_2                NUMBER;
7036 
7037 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
7038 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
7039 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
7040 
7041 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7042 
7043 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
7044 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
7045 
7046 ---------------------------------------------------------------------------------------------------------------
7047 
7048 
7049 --
7050 -- bulk performance
7051 --
7052 l_balance_type_code           VARCHAR2(1);
7053 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
7054 l_log_module                  VARCHAR2(240);
7055 
7056 --
7057 -- Upgrade strategy
7058 --
7059 l_actual_upg_option           VARCHAR2(1);
7060 l_enc_upg_option           VARCHAR2(1);
7061 
7062 --
7063 BEGIN
7064 --
7065 IF g_log_enabled THEN
7066       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_16';
7067 END IF;
7068 --
7069 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7070 
7071       trace
7072          (p_msg      => 'BEGIN of AcctLineType_16'
7073          ,p_level    => C_LEVEL_PROCEDURE
7074          ,p_module   => l_log_module);
7075 
7076 END IF;
7077 --
7078 l_component_type             := 'AMB_JLT';
7079 l_component_code             := 'CLEARING';
7080 l_component_type_code        := 'S';
7081 l_component_appl_id          :=  707;
7082 l_amb_context_code           := 'DEFAULT';
7083 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
7084 l_event_class_code           := 'LOG_INTERCOMPANY';
7085 l_event_type_code            := 'LOG_INTERCOMPANY_ALL';
7086 l_line_definition_owner_code := 'S';
7087 l_line_definition_code       := 'LOG_INTERCOMPANY';
7088 --
7089 l_balance_type_code          := 'A';
7090 l_segment                     := NULL;
7091 l_ccid                        := NULL;
7092 l_adr_transaction_coa_id      := NULL;
7093 l_adr_accounting_coa_id       := NULL;
7094 l_adr_flexfield_segment_code  := NULL;
7095 l_adr_flex_value_set_id       := NULL;
7096 l_adr_value_type_code         := NULL;
7097 l_adr_value_combination_id    := NULL;
7098 l_adr_value_segment_code      := NULL;
7099 
7100 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
7101 l_bflow_class_code           := '';    -- 4219869 Business Flow
7102 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
7103 l_budgetary_control_flag     := 'N';
7104 
7105 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
7106 l_bflow_applied_to_amt       := NULL; -- 5132302
7107 l_entered_amt_idx            := NULL;          -- 4262811
7108 l_accted_amt_idx             := NULL;          -- 4262811
7109 l_acc_rev_flag               := NULL;          -- 4262811
7110 l_accrual_line_num           := NULL;          -- 4262811
7111 l_tmp_amt                    := NULL;          -- 4262811
7112 --
7113  
7114 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7115     l_balance_type_code <> 'B' THEN
7116 IF NVL(p_source_24,9E125) =  31
7117  THEN 
7118 
7119    --
7120    XLA_AE_LINES_PKG.SetNewLine;
7121 
7122    p_balance_type_code          := l_balance_type_code;
7123    -- set the flag so later we will know whether the gain loss line needs to be created
7124    
7125    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7126      p_actual_flag :='A';
7127    END IF;
7128 
7129    --
7130    -- bulk performance
7131    --
7132    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7133                                       p_header_num   => 0); -- 4262811
7134    --
7135    -- set accounting line options
7136    --
7137    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7138            p_natural_side_code          => 'D'
7139          , p_gain_or_loss_flag          => 'N'
7140          , p_gl_transfer_mode_code      => 'S'
7141          , p_acct_entry_type_code       => 'A'
7142          , p_switch_side_flag           => 'Y'
7143          , p_merge_duplicate_code       => 'N'
7144          );
7145    --
7146    l_acc_rev_natural_side_code := 'C';  -- 4262811
7147    -- 
7148    --
7149    -- set accounting line type info
7150    --
7151    xla_ae_lines_pkg.SetAcctLineType
7152       (p_component_type             => l_component_type
7153       ,p_event_type_code            => l_event_type_code
7154       ,p_line_definition_owner_code => l_line_definition_owner_code
7155       ,p_line_definition_code       => l_line_definition_code
7156       ,p_accounting_line_code       => l_component_code
7157       ,p_accounting_line_type_code  => l_component_type_code
7158       ,p_accounting_line_appl_id    => l_component_appl_id
7159       ,p_amb_context_code           => l_amb_context_code
7160       ,p_entity_code                => l_entity_code
7161       ,p_event_class_code           => l_event_class_code);
7162    --
7163    -- set accounting class
7164    --
7165    xla_ae_lines_pkg.SetAcctClass(
7166            p_accounting_class_code  => 'CLEARING'
7167          , p_ae_header_id           => l_ae_header_id
7168          );
7169 
7170    --
7171    -- set rounding class
7172    --
7173    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7174                       'CLEARING';
7175 
7176    --
7177    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7178    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7179    --
7180    -- bulk performance
7181    --
7182    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7183 
7184    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7185       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7186 
7187    -- 4955764
7188    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7189       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7190 
7191    -- 4458381 Public Sector Enh
7192    
7193    --
7194    -- set accounting attributes for the line type
7195    --
7196    l_entered_amt_idx := 3;
7197    l_accted_amt_idx  := 8;
7198    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
7199    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
7200    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
7201    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
7202    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
7203    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
7204    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
7205    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
7206    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
7207    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
7208    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
7209    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
7210    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
7211    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
7212    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
7213    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
7214    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
7215 
7216    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7217    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7218 
7219    ---------------------------------------------------------------------------------------------------------------
7220    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7221    ---------------------------------------------------------------------------------------------------------------
7222    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7223 
7224    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7225    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7226 
7227    IF xla_accounting_cache_pkg.GetValueChar
7228          (p_source_code         => 'LEDGER_CATEGORY_CODE'
7229          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7230    AND l_bflow_method_code = 'PRIOR_ENTRY'
7231 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7232    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7233          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7234        )
7235    THEN
7236          xla_ae_lines_pkg.BflowUpgEntry
7237            (p_business_method_code    => l_bflow_method_code
7238            ,p_business_class_code     => l_bflow_class_code
7239            ,p_balance_type            => l_balance_type_code);
7240    ELSE
7241       NULL;
7242 -- No business flow processing for business flow method of NONE.
7243    END IF;
7244 
7245    --
7246    -- call analytical criteria
7247    --
7248    
7249    --
7250    -- call description
7251    --
7252    -- No description or it is inherited.
7253    --
7254    -- call ADRs
7255    -- Bug 4922099
7256    --
7257    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7258         (NVL(l_actual_upg_option, 'N') = 'O') OR
7259         (NVL(l_enc_upg_option, 'N') = 'O')
7260       )
7261    THEN
7262    NULL;
7263    --
7264    --
7265    
7266   l_ccid := AcctDerRule_4(
7267            p_application_id           => p_application_id
7268          , p_ae_header_id             => l_ae_header_id 
7269 , p_source_4 => p_source_4
7270          , x_transaction_coa_id       => l_adr_transaction_coa_id
7271          , x_accounting_coa_id        => l_adr_accounting_coa_id
7272          , x_value_type_code          => l_adr_value_type_code
7273          , p_side                     => 'NA'
7274    );
7275 
7276    xla_ae_lines_pkg.set_ccid(
7277     p_code_combination_id          => l_ccid
7278   , p_value_type_code              => l_adr_value_type_code
7279   , p_transaction_coa_id           => l_adr_transaction_coa_id
7280   , p_accounting_coa_id            => l_adr_accounting_coa_id
7281   , p_adr_code                     => 'CST_DEFAULT'
7282   , p_adr_type_code                => 'S'
7283   , p_component_type               => l_component_type
7284   , p_component_code               => l_component_code
7285   , p_component_type_code          => l_component_type_code
7286   , p_component_appl_id            => l_component_appl_id
7287   , p_amb_context_code             => l_amb_context_code
7288   , p_side                         => 'NA'
7289   );
7290 
7291 
7292    --
7293    --
7294    END IF;
7295    --
7296    -- Bug 4922099
7297    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7298           (NVL(l_enc_upg_option, 'N') = 'O')
7299         ) AND
7300         (l_bflow_method_code = 'PRIOR_ENTRY')
7301       )
7302    THEN
7303       IF
7304       --
7305       1 = 2
7306       --
7307       THEN
7308       xla_accounting_err_pkg.build_message
7309                                     (p_appli_s_name            => 'XLA'
7310                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7311                                     ,p_token_1                 => 'LINE_NUMBER'
7312                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
7313                                     ,p_token_2                 => 'LINE_TYPE_NAME'
7314                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
7315                                                                              l_component_type
7316                                                                             ,l_component_code
7317                                                                             ,l_component_type_code
7318                                                                             ,l_component_appl_id
7319                                                                             ,l_amb_context_code
7320                                                                             ,l_entity_code
7321                                                                             ,l_event_class_code
7322                                                                            )
7323                                     ,p_token_3                 => 'OWNER'
7324                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
7325                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
7326                                                                           ,p_lookup_code    => l_component_type_code
7327                                                                          )
7328                                     ,p_token_4                 => 'PRODUCT_NAME'
7329                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7330                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7331                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7332                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7333                                     ,p_ae_header_id            =>  NULL
7334                                        );
7335 
7336         IF (C_LEVEL_ERROR>= g_log_level) THEN
7337                  trace
7338                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7339                       ,p_level    => C_LEVEL_ERROR
7340                       ,p_module   => l_log_module);
7341         END IF;
7342       END IF;
7343    END IF;
7344    --
7345    --
7346    ------------------------------------------------------------------------------------------------
7347    -- 4219869 Business Flow
7348    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
7349    -- Prior Entry.  Currently, the following code is always generated.
7350    ------------------------------------------------------------------------------------------------
7351    XLA_AE_LINES_PKG.ValidateCurrentLine;
7352 
7353    ------------------------------------------------------------------------------------
7354    -- 4219869 Business Flow
7355    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7356    ------------------------------------------------------------------------------------
7357    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7358 
7359    ----------------------------------------------------------------------------------
7360    -- 4219869 Business Flow
7361    -- Update journal entry status -- Need to generate this within IF <condition>
7362    ----------------------------------------------------------------------------------
7363    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7364          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7365          ,p_balance_type_code => l_balance_type_code
7366          );
7367 
7368    -------------------------------------------------------------------------------------------
7369    -- 4262811 - Generate the Accrual Reversal lines
7370    -------------------------------------------------------------------------------------------
7371    BEGIN
7372       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7373                               (g_array_event(p_event_id).array_value_num('header_index'));
7374       IF l_acc_rev_flag IS NULL THEN
7375          l_acc_rev_flag := 'N';
7376       END IF;
7377    EXCEPTION
7378       WHEN OTHERS THEN
7379          l_acc_rev_flag := 'N';
7380    END;
7381    --
7382    IF (l_acc_rev_flag = 'Y') THEN
7383 
7384        -- 4645092  ------------------------------------------------------------------------------
7385        -- To allow MPA report to determine if it should generate report process
7386        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7387        ------------------------------------------------------------------------------------------
7388 
7389        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7390        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7391    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
7392    -- call ADRs
7393    -- Bug 4922099
7394    --
7395    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7396         (NVL(l_actual_upg_option, 'N') = 'O') OR
7397         (NVL(l_enc_upg_option, 'N') = 'O')
7398       )
7399    THEN
7400    NULL;
7401    --
7402    --
7403    
7404   l_ccid := AcctDerRule_4(
7405            p_application_id           => p_application_id
7406          , p_ae_header_id             => l_ae_header_id 
7407 , p_source_4 => p_source_4
7408          , x_transaction_coa_id       => l_adr_transaction_coa_id
7409          , x_accounting_coa_id        => l_adr_accounting_coa_id
7410          , x_value_type_code          => l_adr_value_type_code
7411          , p_side                     => 'NA'
7412    );
7413 
7414    xla_ae_lines_pkg.set_ccid(
7415     p_code_combination_id          => l_ccid
7416   , p_value_type_code              => l_adr_value_type_code
7417   , p_transaction_coa_id           => l_adr_transaction_coa_id
7418   , p_accounting_coa_id            => l_adr_accounting_coa_id
7419   , p_adr_code                     => 'CST_DEFAULT'
7420   , p_adr_type_code                => 'S'
7421   , p_component_type               => l_component_type
7422   , p_component_code               => l_component_code
7423   , p_component_type_code          => l_component_type_code
7424   , p_component_appl_id            => l_component_appl_id
7425   , p_amb_context_code             => l_amb_context_code
7426   , p_side                         => 'NA'
7427   );
7428 
7429 
7430    --
7431    --
7432    END IF;
7433 
7434        --
7435        -- Update the line information that should be overwritten
7436        --
7437        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7438                                          p_header_num   => 1);
7439        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
7440 
7441        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7442 
7443        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
7444           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7445        END IF;
7446 
7447       --
7448       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7449       --
7450       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7451           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
7452       ELSE
7453           ---------------------------------------------------------------------------------------------------
7454           -- 4262811a Switch Sign
7455           ---------------------------------------------------------------------------------------------------
7456           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
7457           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7458                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7459           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7460                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7461           -- 5132302
7462           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7463                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7464 
7465       END IF;
7466 
7467       -- 4955764
7468       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7469       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7470 
7471 
7472       XLA_AE_LINES_PKG.ValidateCurrentLine;
7473       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7474 
7475       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7476                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7477                ,p_balance_type_code => l_balance_type_code);
7478 
7479    END IF;
7480 
7481    -----------------------------------------------------------------------------------------
7482    -- 4262811 Multiperiod Accounting
7483    -----------------------------------------------------------------------------------------
7484      -- No MPA option is assigned.
7485 
7486 
7487 END IF;
7488 END IF;
7489 --
7490 
7491 --
7492 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7493    trace
7494       (p_msg      => 'END of AcctLineType_16'
7495       ,p_level    => C_LEVEL_PROCEDURE
7496       ,p_module   => l_log_module);
7497 END IF;
7498 --
7499 EXCEPTION
7500   WHEN xla_exceptions_pkg.application_exception THEN
7501       RAISE;
7502   WHEN OTHERS THEN
7503        xla_exceptions_pkg.raise_message
7504            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_16');
7505 END AcctLineType_16;
7506 --
7507 
7508 ---------------------------------------
7509 --
7510 -- PRIVATE FUNCTION
7511 --         AcctLineType_17
7512 --
7513 ---------------------------------------
7514 PROCEDURE AcctLineType_17 (
7515   p_application_id        IN NUMBER
7516  ,p_event_id              IN NUMBER
7517  ,p_calculate_acctd_flag  IN VARCHAR2
7518  ,p_calculate_g_l_flag    IN VARCHAR2
7519  ,p_actual_flag           IN OUT VARCHAR2
7520  ,p_balance_type_code     OUT VARCHAR2
7521  ,p_gain_or_loss_ref      OUT VARCHAR2
7522  
7523 --Cost Management Default Account
7524  , p_source_4            IN NUMBER
7525 --DISTRIBUTION_IDENTIFIER
7526  , p_source_11            IN NUMBER
7527 --Distribution Type
7528  , p_source_12            IN VARCHAR2
7529  , p_source_12_meaning    IN VARCHAR2
7530 --Entered Currency Code
7531  , p_source_15            IN VARCHAR2
7532 --Entered Amount
7533  , p_source_18            IN NUMBER
7534 --Currency Conversion Date
7535  , p_source_19            IN DATE
7536 --Currency Conversion Rate
7537  , p_source_20            IN NUMBER
7538 --Currency Conversion Type
7539  , p_source_21            IN VARCHAR2
7540 --Accounted Amount
7541  , p_source_22            IN NUMBER
7542 --Accounting Line Type
7543  , p_source_24            IN NUMBER
7544 )
7545 IS
7546 
7547 l_component_type              VARCHAR2(80);
7548 l_component_code              VARCHAR2(30);
7549 l_component_type_code         VARCHAR2(1);
7550 l_component_appl_id           INTEGER;
7551 l_amb_context_code            VARCHAR2(30);
7552 l_entity_code                 VARCHAR2(30);
7553 l_event_class_code            VARCHAR2(30);
7554 l_ae_header_id                NUMBER;
7555 l_event_type_code             VARCHAR2(30);
7556 l_line_definition_code        VARCHAR2(30);
7557 l_line_definition_owner_code  VARCHAR2(1);
7558 --
7559 -- adr variables
7560 l_segment                     VARCHAR2(30);
7561 l_ccid                        NUMBER;
7562 l_adr_transaction_coa_id      NUMBER;
7563 l_adr_accounting_coa_id       NUMBER;
7564 l_adr_flexfield_segment_code  VARCHAR2(30);
7565 l_adr_flex_value_set_id       NUMBER;
7566 l_adr_value_type_code         VARCHAR2(30);
7567 l_adr_value_combination_id    NUMBER;
7568 l_adr_value_segment_code      VARCHAR2(30);
7569 
7570 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
7571 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
7572 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
7573 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
7574 
7575 -- 4262811 Variables ------------------------------------------------------------------------------------------
7576 l_entered_amt_idx             NUMBER;
7577 l_accted_amt_idx              NUMBER;
7578 l_acc_rev_flag                VARCHAR2(1);
7579 l_accrual_line_num            NUMBER;
7580 l_tmp_amt                     NUMBER;
7581 l_acc_rev_natural_side_code   VARCHAR2(1);
7582 
7583 l_num_entries                 NUMBER;
7584 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
7585 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
7586 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
7587 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
7588 l_recog_line_1                NUMBER;
7589 l_recog_line_2                NUMBER;
7590 
7591 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
7592 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
7593 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
7594 
7595 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7596 
7597 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
7598 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
7599 
7600 ---------------------------------------------------------------------------------------------------------------
7601 
7602 
7603 --
7604 -- bulk performance
7605 --
7606 l_balance_type_code           VARCHAR2(1);
7607 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
7608 l_log_module                  VARCHAR2(240);
7609 
7610 --
7611 -- Upgrade strategy
7612 --
7613 l_actual_upg_option           VARCHAR2(1);
7614 l_enc_upg_option           VARCHAR2(1);
7615 
7616 --
7617 BEGIN
7618 --
7619 IF g_log_enabled THEN
7620       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_17';
7621 END IF;
7622 --
7623 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7624 
7625       trace
7626          (p_msg      => 'BEGIN of AcctLineType_17'
7627          ,p_level    => C_LEVEL_PROCEDURE
7628          ,p_module   => l_log_module);
7629 
7630 END IF;
7631 --
7632 l_component_type             := 'AMB_JLT';
7633 l_component_code             := 'COST_OF_GOODS_SOLD';
7634 l_component_type_code        := 'S';
7635 l_component_appl_id          :=  707;
7636 l_amb_context_code           := 'DEFAULT';
7637 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
7638 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
7639 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_ALL';
7640 l_line_definition_owner_code := 'S';
7641 l_line_definition_code       := 'FOB_SHIP_SENDER_SHIP';
7642 --
7643 l_balance_type_code          := 'A';
7644 l_segment                     := NULL;
7645 l_ccid                        := NULL;
7646 l_adr_transaction_coa_id      := NULL;
7647 l_adr_accounting_coa_id       := NULL;
7648 l_adr_flexfield_segment_code  := NULL;
7649 l_adr_flex_value_set_id       := NULL;
7650 l_adr_value_type_code         := NULL;
7651 l_adr_value_combination_id    := NULL;
7652 l_adr_value_segment_code      := NULL;
7653 
7654 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
7655 l_bflow_class_code           := '';    -- 4219869 Business Flow
7656 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
7657 l_budgetary_control_flag     := 'N';
7658 
7659 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
7660 l_bflow_applied_to_amt       := NULL; -- 5132302
7661 l_entered_amt_idx            := NULL;          -- 4262811
7662 l_accted_amt_idx             := NULL;          -- 4262811
7663 l_acc_rev_flag               := NULL;          -- 4262811
7664 l_accrual_line_num           := NULL;          -- 4262811
7665 l_tmp_amt                    := NULL;          -- 4262811
7666 --
7667  
7668 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7669     l_balance_type_code <> 'B' THEN
7670 IF NVL(p_source_24,9E125) =  2 AND 
7671 p_source_22 >  0
7672  THEN 
7673 
7674    --
7675    XLA_AE_LINES_PKG.SetNewLine;
7676 
7677    p_balance_type_code          := l_balance_type_code;
7678    -- set the flag so later we will know whether the gain loss line needs to be created
7679    
7680    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7681      p_actual_flag :='A';
7682    END IF;
7683 
7684    --
7685    -- bulk performance
7686    --
7687    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7688                                       p_header_num   => 0); -- 4262811
7689    --
7690    -- set accounting line options
7691    --
7692    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7693            p_natural_side_code          => 'D'
7694          , p_gain_or_loss_flag          => 'N'
7695          , p_gl_transfer_mode_code      => 'S'
7696          , p_acct_entry_type_code       => 'A'
7697          , p_switch_side_flag           => 'Y'
7698          , p_merge_duplicate_code       => 'N'
7699          );
7700    --
7701    l_acc_rev_natural_side_code := 'C';  -- 4262811
7702    -- 
7703    --
7704    -- set accounting line type info
7705    --
7706    xla_ae_lines_pkg.SetAcctLineType
7707       (p_component_type             => l_component_type
7708       ,p_event_type_code            => l_event_type_code
7709       ,p_line_definition_owner_code => l_line_definition_owner_code
7710       ,p_line_definition_code       => l_line_definition_code
7711       ,p_accounting_line_code       => l_component_code
7712       ,p_accounting_line_type_code  => l_component_type_code
7713       ,p_accounting_line_appl_id    => l_component_appl_id
7714       ,p_amb_context_code           => l_amb_context_code
7715       ,p_entity_code                => l_entity_code
7716       ,p_event_class_code           => l_event_class_code);
7717    --
7718    -- set accounting class
7719    --
7720    xla_ae_lines_pkg.SetAcctClass(
7721            p_accounting_class_code  => 'COST_OF_GOODS_SOLD'
7722          , p_ae_header_id           => l_ae_header_id
7723          );
7724 
7725    --
7726    -- set rounding class
7727    --
7728    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7729                       'COST_OF_GOODS_SOLD';
7730 
7731    --
7732    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7733    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7734    --
7735    -- bulk performance
7736    --
7737    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7738 
7739    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7740       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7741 
7742    -- 4955764
7743    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7744       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7745 
7746    -- 4458381 Public Sector Enh
7747    
7748    --
7749    -- set accounting attributes for the line type
7750    --
7751    l_entered_amt_idx := 3;
7752    l_accted_amt_idx  := 8;
7753    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
7754    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
7755    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
7756    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
7757    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
7758    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
7759    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
7760    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
7761    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
7762    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
7763    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
7764    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
7765    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
7766    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
7767    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
7768    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
7769    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
7770 
7771    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7772    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7773 
7774    ---------------------------------------------------------------------------------------------------------------
7775    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7776    ---------------------------------------------------------------------------------------------------------------
7777    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7778 
7779    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7780    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7781 
7782    IF xla_accounting_cache_pkg.GetValueChar
7783          (p_source_code         => 'LEDGER_CATEGORY_CODE'
7784          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7785    AND l_bflow_method_code = 'PRIOR_ENTRY'
7786 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7787    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7788          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7789        )
7790    THEN
7791          xla_ae_lines_pkg.BflowUpgEntry
7792            (p_business_method_code    => l_bflow_method_code
7793            ,p_business_class_code     => l_bflow_class_code
7794            ,p_balance_type            => l_balance_type_code);
7795    ELSE
7796       NULL;
7797 -- No business flow processing for business flow method of NONE.
7798    END IF;
7799 
7800    --
7801    -- call analytical criteria
7802    --
7803    
7804    --
7805    -- call description
7806    --
7807    -- No description or it is inherited.
7808    --
7809    -- call ADRs
7810    -- Bug 4922099
7811    --
7812    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7813         (NVL(l_actual_upg_option, 'N') = 'O') OR
7814         (NVL(l_enc_upg_option, 'N') = 'O')
7815       )
7816    THEN
7817    NULL;
7818    --
7819    --
7820    
7821   l_ccid := AcctDerRule_4(
7822            p_application_id           => p_application_id
7823          , p_ae_header_id             => l_ae_header_id 
7824 , p_source_4 => p_source_4
7825          , x_transaction_coa_id       => l_adr_transaction_coa_id
7826          , x_accounting_coa_id        => l_adr_accounting_coa_id
7827          , x_value_type_code          => l_adr_value_type_code
7828          , p_side                     => 'NA'
7829    );
7830 
7831    xla_ae_lines_pkg.set_ccid(
7832     p_code_combination_id          => l_ccid
7833   , p_value_type_code              => l_adr_value_type_code
7834   , p_transaction_coa_id           => l_adr_transaction_coa_id
7835   , p_accounting_coa_id            => l_adr_accounting_coa_id
7836   , p_adr_code                     => 'CST_DEFAULT'
7837   , p_adr_type_code                => 'S'
7838   , p_component_type               => l_component_type
7839   , p_component_code               => l_component_code
7840   , p_component_type_code          => l_component_type_code
7841   , p_component_appl_id            => l_component_appl_id
7842   , p_amb_context_code             => l_amb_context_code
7843   , p_side                         => 'NA'
7844   );
7845 
7846 
7847    --
7848    --
7849    END IF;
7850    --
7851    -- Bug 4922099
7852    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7853           (NVL(l_enc_upg_option, 'N') = 'O')
7854         ) AND
7855         (l_bflow_method_code = 'PRIOR_ENTRY')
7856       )
7857    THEN
7858       IF
7859       --
7860       1 = 2
7861       --
7862       THEN
7863       xla_accounting_err_pkg.build_message
7864                                     (p_appli_s_name            => 'XLA'
7865                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7866                                     ,p_token_1                 => 'LINE_NUMBER'
7867                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
7868                                     ,p_token_2                 => 'LINE_TYPE_NAME'
7869                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
7870                                                                              l_component_type
7871                                                                             ,l_component_code
7872                                                                             ,l_component_type_code
7873                                                                             ,l_component_appl_id
7874                                                                             ,l_amb_context_code
7875                                                                             ,l_entity_code
7876                                                                             ,l_event_class_code
7877                                                                            )
7878                                     ,p_token_3                 => 'OWNER'
7879                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
7880                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
7881                                                                           ,p_lookup_code    => l_component_type_code
7882                                                                          )
7883                                     ,p_token_4                 => 'PRODUCT_NAME'
7884                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7885                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7886                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7887                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7888                                     ,p_ae_header_id            =>  NULL
7889                                        );
7890 
7891         IF (C_LEVEL_ERROR>= g_log_level) THEN
7892                  trace
7893                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7894                       ,p_level    => C_LEVEL_ERROR
7895                       ,p_module   => l_log_module);
7896         END IF;
7897       END IF;
7898    END IF;
7899    --
7900    --
7901    ------------------------------------------------------------------------------------------------
7902    -- 4219869 Business Flow
7903    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
7904    -- Prior Entry.  Currently, the following code is always generated.
7905    ------------------------------------------------------------------------------------------------
7906    XLA_AE_LINES_PKG.ValidateCurrentLine;
7907 
7908    ------------------------------------------------------------------------------------
7909    -- 4219869 Business Flow
7910    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7911    ------------------------------------------------------------------------------------
7912    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7913 
7914    ----------------------------------------------------------------------------------
7915    -- 4219869 Business Flow
7916    -- Update journal entry status -- Need to generate this within IF <condition>
7917    ----------------------------------------------------------------------------------
7918    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7919          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7920          ,p_balance_type_code => l_balance_type_code
7921          );
7922 
7923    -------------------------------------------------------------------------------------------
7924    -- 4262811 - Generate the Accrual Reversal lines
7925    -------------------------------------------------------------------------------------------
7926    BEGIN
7927       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7928                               (g_array_event(p_event_id).array_value_num('header_index'));
7929       IF l_acc_rev_flag IS NULL THEN
7930          l_acc_rev_flag := 'N';
7931       END IF;
7932    EXCEPTION
7933       WHEN OTHERS THEN
7934          l_acc_rev_flag := 'N';
7935    END;
7936    --
7937    IF (l_acc_rev_flag = 'Y') THEN
7938 
7939        -- 4645092  ------------------------------------------------------------------------------
7940        -- To allow MPA report to determine if it should generate report process
7941        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7942        ------------------------------------------------------------------------------------------
7943 
7944        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7945        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7946    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
7947    -- call ADRs
7948    -- Bug 4922099
7949    --
7950    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7951         (NVL(l_actual_upg_option, 'N') = 'O') OR
7952         (NVL(l_enc_upg_option, 'N') = 'O')
7953       )
7954    THEN
7955    NULL;
7956    --
7957    --
7958    
7959   l_ccid := AcctDerRule_4(
7960            p_application_id           => p_application_id
7961          , p_ae_header_id             => l_ae_header_id 
7962 , p_source_4 => p_source_4
7963          , x_transaction_coa_id       => l_adr_transaction_coa_id
7964          , x_accounting_coa_id        => l_adr_accounting_coa_id
7965          , x_value_type_code          => l_adr_value_type_code
7966          , p_side                     => 'NA'
7967    );
7968 
7969    xla_ae_lines_pkg.set_ccid(
7970     p_code_combination_id          => l_ccid
7971   , p_value_type_code              => l_adr_value_type_code
7972   , p_transaction_coa_id           => l_adr_transaction_coa_id
7973   , p_accounting_coa_id            => l_adr_accounting_coa_id
7974   , p_adr_code                     => 'CST_DEFAULT'
7975   , p_adr_type_code                => 'S'
7976   , p_component_type               => l_component_type
7977   , p_component_code               => l_component_code
7978   , p_component_type_code          => l_component_type_code
7979   , p_component_appl_id            => l_component_appl_id
7980   , p_amb_context_code             => l_amb_context_code
7981   , p_side                         => 'NA'
7982   );
7983 
7984 
7985    --
7986    --
7987    END IF;
7988 
7989        --
7990        -- Update the line information that should be overwritten
7991        --
7992        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7993                                          p_header_num   => 1);
7994        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
7995 
7996        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7997 
7998        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
7999           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8000        END IF;
8001 
8002       --
8003       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8004       --
8005       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8006           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
8007       ELSE
8008           ---------------------------------------------------------------------------------------------------
8009           -- 4262811a Switch Sign
8010           ---------------------------------------------------------------------------------------------------
8011           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
8012           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8013                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8014           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8015                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8016           -- 5132302
8017           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8018                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8019 
8020       END IF;
8021 
8022       -- 4955764
8023       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8024       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8025 
8026 
8027       XLA_AE_LINES_PKG.ValidateCurrentLine;
8028       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8029 
8030       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8031                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8032                ,p_balance_type_code => l_balance_type_code);
8033 
8034    END IF;
8035 
8036    -----------------------------------------------------------------------------------------
8037    -- 4262811 Multiperiod Accounting
8038    -----------------------------------------------------------------------------------------
8039      -- No MPA option is assigned.
8040 
8041 
8042 END IF;
8043 END IF;
8044 --
8045 
8046 --
8047 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8048    trace
8049       (p_msg      => 'END of AcctLineType_17'
8050       ,p_level    => C_LEVEL_PROCEDURE
8051       ,p_module   => l_log_module);
8052 END IF;
8053 --
8054 EXCEPTION
8055   WHEN xla_exceptions_pkg.application_exception THEN
8056       RAISE;
8057   WHEN OTHERS THEN
8058        xla_exceptions_pkg.raise_message
8059            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_17');
8060 END AcctLineType_17;
8061 --
8062 
8063 ---------------------------------------
8064 --
8065 -- PRIVATE FUNCTION
8066 --         AcctLineType_18
8067 --
8068 ---------------------------------------
8069 PROCEDURE AcctLineType_18 (
8070   p_application_id        IN NUMBER
8071  ,p_event_id              IN NUMBER
8072  ,p_calculate_acctd_flag  IN VARCHAR2
8073  ,p_calculate_g_l_flag    IN VARCHAR2
8074  ,p_actual_flag           IN OUT VARCHAR2
8075  ,p_balance_type_code     OUT VARCHAR2
8076  ,p_gain_or_loss_ref      OUT VARCHAR2
8077  
8078 --Cost Management Default Account
8079  , p_source_4            IN NUMBER
8080 --DISTRIBUTION_IDENTIFIER
8081  , p_source_11            IN NUMBER
8082 --Distribution Type
8083  , p_source_12            IN VARCHAR2
8084  , p_source_12_meaning    IN VARCHAR2
8085 --Entered Currency Code
8086  , p_source_15            IN VARCHAR2
8087 --Entered Amount
8088  , p_source_18            IN NUMBER
8089 --Currency Conversion Date
8090  , p_source_19            IN DATE
8091 --Currency Conversion Rate
8092  , p_source_20            IN NUMBER
8093 --Currency Conversion Type
8094  , p_source_21            IN VARCHAR2
8095 --Accounted Amount
8096  , p_source_22            IN NUMBER
8097 --Accounting Line Type
8098  , p_source_24            IN NUMBER
8099 )
8100 IS
8101 
8102 l_component_type              VARCHAR2(80);
8103 l_component_code              VARCHAR2(30);
8104 l_component_type_code         VARCHAR2(1);
8105 l_component_appl_id           INTEGER;
8106 l_amb_context_code            VARCHAR2(30);
8107 l_entity_code                 VARCHAR2(30);
8108 l_event_class_code            VARCHAR2(30);
8109 l_ae_header_id                NUMBER;
8110 l_event_type_code             VARCHAR2(30);
8111 l_line_definition_code        VARCHAR2(30);
8112 l_line_definition_owner_code  VARCHAR2(1);
8113 --
8114 -- adr variables
8115 l_segment                     VARCHAR2(30);
8116 l_ccid                        NUMBER;
8117 l_adr_transaction_coa_id      NUMBER;
8118 l_adr_accounting_coa_id       NUMBER;
8119 l_adr_flexfield_segment_code  VARCHAR2(30);
8120 l_adr_flex_value_set_id       NUMBER;
8121 l_adr_value_type_code         VARCHAR2(30);
8122 l_adr_value_combination_id    NUMBER;
8123 l_adr_value_segment_code      VARCHAR2(30);
8124 
8125 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
8126 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
8127 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
8128 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
8129 
8130 -- 4262811 Variables ------------------------------------------------------------------------------------------
8131 l_entered_amt_idx             NUMBER;
8132 l_accted_amt_idx              NUMBER;
8133 l_acc_rev_flag                VARCHAR2(1);
8134 l_accrual_line_num            NUMBER;
8135 l_tmp_amt                     NUMBER;
8136 l_acc_rev_natural_side_code   VARCHAR2(1);
8137 
8138 l_num_entries                 NUMBER;
8139 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
8140 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
8141 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
8142 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
8143 l_recog_line_1                NUMBER;
8144 l_recog_line_2                NUMBER;
8145 
8146 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
8147 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
8148 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
8149 
8150 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
8151 
8152 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
8153 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
8154 
8155 ---------------------------------------------------------------------------------------------------------------
8156 
8157 
8158 --
8159 -- bulk performance
8160 --
8161 l_balance_type_code           VARCHAR2(1);
8162 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
8163 l_log_module                  VARCHAR2(240);
8164 
8165 --
8166 -- Upgrade strategy
8167 --
8168 l_actual_upg_option           VARCHAR2(1);
8169 l_enc_upg_option           VARCHAR2(1);
8170 
8171 --
8172 BEGIN
8173 --
8174 IF g_log_enabled THEN
8175       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_18';
8176 END IF;
8177 --
8178 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8179 
8180       trace
8181          (p_msg      => 'BEGIN of AcctLineType_18'
8182          ,p_level    => C_LEVEL_PROCEDURE
8183          ,p_module   => l_log_module);
8184 
8185 END IF;
8186 --
8187 l_component_type             := 'AMB_JLT';
8188 l_component_code             := 'COST_OF_GOODS_SOLD';
8189 l_component_type_code        := 'S';
8190 l_component_appl_id          :=  707;
8191 l_amb_context_code           := 'DEFAULT';
8192 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
8193 l_event_class_code           := 'USER_DEFINE';
8194 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_TP';
8195 l_line_definition_owner_code := 'S';
8196 l_line_definition_code       := 'USER_FOB_SHIP_SENDER_SHIP_TP';
8197 --
8198 l_balance_type_code          := 'A';
8199 l_segment                     := NULL;
8200 l_ccid                        := NULL;
8201 l_adr_transaction_coa_id      := NULL;
8202 l_adr_accounting_coa_id       := NULL;
8203 l_adr_flexfield_segment_code  := NULL;
8204 l_adr_flex_value_set_id       := NULL;
8205 l_adr_value_type_code         := NULL;
8206 l_adr_value_combination_id    := NULL;
8207 l_adr_value_segment_code      := NULL;
8208 
8209 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
8210 l_bflow_class_code           := '';    -- 4219869 Business Flow
8211 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
8212 l_budgetary_control_flag     := 'N';
8213 
8214 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
8215 l_bflow_applied_to_amt       := NULL; -- 5132302
8216 l_entered_amt_idx            := NULL;          -- 4262811
8217 l_accted_amt_idx             := NULL;          -- 4262811
8218 l_acc_rev_flag               := NULL;          -- 4262811
8219 l_accrual_line_num           := NULL;          -- 4262811
8220 l_tmp_amt                    := NULL;          -- 4262811
8221 --
8222  
8223 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8224     l_balance_type_code <> 'B' THEN
8225 IF NVL(p_source_24,9E125) =  2 AND 
8226 p_source_22 >  0
8227  THEN 
8228 
8229    --
8230    XLA_AE_LINES_PKG.SetNewLine;
8231 
8232    p_balance_type_code          := l_balance_type_code;
8233    -- set the flag so later we will know whether the gain loss line needs to be created
8234    
8235    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8236      p_actual_flag :='A';
8237    END IF;
8238 
8239    --
8240    -- bulk performance
8241    --
8242    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8243                                       p_header_num   => 0); -- 4262811
8244    --
8245    -- set accounting line options
8246    --
8247    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8248            p_natural_side_code          => 'D'
8249          , p_gain_or_loss_flag          => 'N'
8250          , p_gl_transfer_mode_code      => 'S'
8251          , p_acct_entry_type_code       => 'A'
8252          , p_switch_side_flag           => 'Y'
8253          , p_merge_duplicate_code       => 'N'
8254          );
8255    --
8256    l_acc_rev_natural_side_code := 'C';  -- 4262811
8257    -- 
8258    --
8259    -- set accounting line type info
8260    --
8261    xla_ae_lines_pkg.SetAcctLineType
8262       (p_component_type             => l_component_type
8263       ,p_event_type_code            => l_event_type_code
8264       ,p_line_definition_owner_code => l_line_definition_owner_code
8265       ,p_line_definition_code       => l_line_definition_code
8266       ,p_accounting_line_code       => l_component_code
8267       ,p_accounting_line_type_code  => l_component_type_code
8268       ,p_accounting_line_appl_id    => l_component_appl_id
8269       ,p_amb_context_code           => l_amb_context_code
8270       ,p_entity_code                => l_entity_code
8271       ,p_event_class_code           => l_event_class_code);
8272    --
8273    -- set accounting class
8274    --
8275    xla_ae_lines_pkg.SetAcctClass(
8276            p_accounting_class_code  => 'COST_OF_GOODS_SOLD'
8277          , p_ae_header_id           => l_ae_header_id
8278          );
8279 
8280    --
8281    -- set rounding class
8282    --
8283    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
8284                       'COST_OF_GOODS_SOLD';
8285 
8286    --
8287    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
8288    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
8289    --
8290    -- bulk performance
8291    --
8292    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
8293 
8294    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
8295       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
8296 
8297    -- 4955764
8298    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8299       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
8300 
8301    -- 4458381 Public Sector Enh
8302    
8303    --
8304    -- set accounting attributes for the line type
8305    --
8306    l_entered_amt_idx := 3;
8307    l_accted_amt_idx  := 8;
8308    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
8309    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
8310    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
8311    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
8312    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
8313    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
8314    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
8315    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
8316    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
8317    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
8318    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
8319    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
8320    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
8321    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
8322    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
8323    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
8324    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
8325 
8326    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
8327    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
8328 
8329    ---------------------------------------------------------------------------------------------------------------
8330    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
8331    ---------------------------------------------------------------------------------------------------------------
8332    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
8333 
8334    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8335    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8336 
8337    IF xla_accounting_cache_pkg.GetValueChar
8338          (p_source_code         => 'LEDGER_CATEGORY_CODE'
8339          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
8340    AND l_bflow_method_code = 'PRIOR_ENTRY'
8341 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
8342    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
8343          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
8344        )
8345    THEN
8346          xla_ae_lines_pkg.BflowUpgEntry
8347            (p_business_method_code    => l_bflow_method_code
8348            ,p_business_class_code     => l_bflow_class_code
8349            ,p_balance_type            => l_balance_type_code);
8350    ELSE
8351       NULL;
8352 -- No business flow processing for business flow method of NONE.
8353    END IF;
8354 
8355    --
8356    -- call analytical criteria
8357    --
8358    
8359    --
8360    -- call description
8361    --
8362    -- No description or it is inherited.
8363    --
8364    -- call ADRs
8365    -- Bug 4922099
8366    --
8367    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8368         (NVL(l_actual_upg_option, 'N') = 'O') OR
8369         (NVL(l_enc_upg_option, 'N') = 'O')
8370       )
8371    THEN
8372    NULL;
8373    --
8374    --
8375    
8376   l_ccid := AcctDerRule_4(
8377            p_application_id           => p_application_id
8378          , p_ae_header_id             => l_ae_header_id 
8379 , p_source_4 => p_source_4
8380          , x_transaction_coa_id       => l_adr_transaction_coa_id
8381          , x_accounting_coa_id        => l_adr_accounting_coa_id
8382          , x_value_type_code          => l_adr_value_type_code
8383          , p_side                     => 'NA'
8384    );
8385 
8386    xla_ae_lines_pkg.set_ccid(
8387     p_code_combination_id          => l_ccid
8388   , p_value_type_code              => l_adr_value_type_code
8389   , p_transaction_coa_id           => l_adr_transaction_coa_id
8390   , p_accounting_coa_id            => l_adr_accounting_coa_id
8391   , p_adr_code                     => 'CST_DEFAULT'
8392   , p_adr_type_code                => 'S'
8393   , p_component_type               => l_component_type
8394   , p_component_code               => l_component_code
8395   , p_component_type_code          => l_component_type_code
8396   , p_component_appl_id            => l_component_appl_id
8397   , p_amb_context_code             => l_amb_context_code
8398   , p_side                         => 'NA'
8399   );
8400 
8401 
8402    --
8403    --
8404    END IF;
8405    --
8406    -- Bug 4922099
8407    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8408           (NVL(l_enc_upg_option, 'N') = 'O')
8409         ) AND
8410         (l_bflow_method_code = 'PRIOR_ENTRY')
8411       )
8412    THEN
8413       IF
8414       --
8415       1 = 2
8416       --
8417       THEN
8418       xla_accounting_err_pkg.build_message
8419                                     (p_appli_s_name            => 'XLA'
8420                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8421                                     ,p_token_1                 => 'LINE_NUMBER'
8422                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
8423                                     ,p_token_2                 => 'LINE_TYPE_NAME'
8424                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
8425                                                                              l_component_type
8426                                                                             ,l_component_code
8427                                                                             ,l_component_type_code
8428                                                                             ,l_component_appl_id
8429                                                                             ,l_amb_context_code
8430                                                                             ,l_entity_code
8431                                                                             ,l_event_class_code
8432                                                                            )
8433                                     ,p_token_3                 => 'OWNER'
8434                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
8435                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
8436                                                                           ,p_lookup_code    => l_component_type_code
8437                                                                          )
8438                                     ,p_token_4                 => 'PRODUCT_NAME'
8439                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8440                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8441                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8442                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8443                                     ,p_ae_header_id            =>  NULL
8444                                        );
8445 
8446         IF (C_LEVEL_ERROR>= g_log_level) THEN
8447                  trace
8448                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8449                       ,p_level    => C_LEVEL_ERROR
8450                       ,p_module   => l_log_module);
8451         END IF;
8452       END IF;
8453    END IF;
8454    --
8455    --
8456    ------------------------------------------------------------------------------------------------
8457    -- 4219869 Business Flow
8458    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
8459    -- Prior Entry.  Currently, the following code is always generated.
8460    ------------------------------------------------------------------------------------------------
8461    XLA_AE_LINES_PKG.ValidateCurrentLine;
8462 
8463    ------------------------------------------------------------------------------------
8464    -- 4219869 Business Flow
8465    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
8466    ------------------------------------------------------------------------------------
8467    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8468 
8469    ----------------------------------------------------------------------------------
8470    -- 4219869 Business Flow
8471    -- Update journal entry status -- Need to generate this within IF <condition>
8472    ----------------------------------------------------------------------------------
8473    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8474          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
8475          ,p_balance_type_code => l_balance_type_code
8476          );
8477 
8478    -------------------------------------------------------------------------------------------
8479    -- 4262811 - Generate the Accrual Reversal lines
8480    -------------------------------------------------------------------------------------------
8481    BEGIN
8482       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
8483                               (g_array_event(p_event_id).array_value_num('header_index'));
8484       IF l_acc_rev_flag IS NULL THEN
8485          l_acc_rev_flag := 'N';
8486       END IF;
8487    EXCEPTION
8488       WHEN OTHERS THEN
8489          l_acc_rev_flag := 'N';
8490    END;
8491    --
8492    IF (l_acc_rev_flag = 'Y') THEN
8493 
8494        -- 4645092  ------------------------------------------------------------------------------
8495        -- To allow MPA report to determine if it should generate report process
8496        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
8497        ------------------------------------------------------------------------------------------
8498 
8499        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
8500        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
8501    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
8502    -- call ADRs
8503    -- Bug 4922099
8504    --
8505    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8506         (NVL(l_actual_upg_option, 'N') = 'O') OR
8507         (NVL(l_enc_upg_option, 'N') = 'O')
8508       )
8509    THEN
8510    NULL;
8511    --
8512    --
8513    
8514   l_ccid := AcctDerRule_4(
8515            p_application_id           => p_application_id
8516          , p_ae_header_id             => l_ae_header_id 
8517 , p_source_4 => p_source_4
8518          , x_transaction_coa_id       => l_adr_transaction_coa_id
8519          , x_accounting_coa_id        => l_adr_accounting_coa_id
8520          , x_value_type_code          => l_adr_value_type_code
8521          , p_side                     => 'NA'
8522    );
8523 
8524    xla_ae_lines_pkg.set_ccid(
8525     p_code_combination_id          => l_ccid
8526   , p_value_type_code              => l_adr_value_type_code
8527   , p_transaction_coa_id           => l_adr_transaction_coa_id
8528   , p_accounting_coa_id            => l_adr_accounting_coa_id
8529   , p_adr_code                     => 'CST_DEFAULT'
8530   , p_adr_type_code                => 'S'
8531   , p_component_type               => l_component_type
8532   , p_component_code               => l_component_code
8533   , p_component_type_code          => l_component_type_code
8534   , p_component_appl_id            => l_component_appl_id
8535   , p_amb_context_code             => l_amb_context_code
8536   , p_side                         => 'NA'
8537   );
8538 
8539 
8540    --
8541    --
8542    END IF;
8543 
8544        --
8545        -- Update the line information that should be overwritten
8546        --
8547        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
8548                                          p_header_num   => 1);
8549        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
8550 
8551        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
8552 
8553        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
8554           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8555        END IF;
8556 
8557       --
8558       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8559       --
8560       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8561           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
8562       ELSE
8563           ---------------------------------------------------------------------------------------------------
8564           -- 4262811a Switch Sign
8565           ---------------------------------------------------------------------------------------------------
8566           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
8567           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8568                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8569           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8570                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8571           -- 5132302
8572           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8573                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8574 
8575       END IF;
8576 
8577       -- 4955764
8578       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8579       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8580 
8581 
8582       XLA_AE_LINES_PKG.ValidateCurrentLine;
8583       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8584 
8585       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8586                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8587                ,p_balance_type_code => l_balance_type_code);
8588 
8589    END IF;
8590 
8591    -----------------------------------------------------------------------------------------
8592    -- 4262811 Multiperiod Accounting
8593    -----------------------------------------------------------------------------------------
8594      -- No MPA option is assigned.
8595 
8596 
8597 END IF;
8598 END IF;
8599 --
8600 
8601 --
8602 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8603    trace
8604       (p_msg      => 'END of AcctLineType_18'
8605       ,p_level    => C_LEVEL_PROCEDURE
8606       ,p_module   => l_log_module);
8607 END IF;
8608 --
8609 EXCEPTION
8610   WHEN xla_exceptions_pkg.application_exception THEN
8611       RAISE;
8612   WHEN OTHERS THEN
8613        xla_exceptions_pkg.raise_message
8614            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_18');
8615 END AcctLineType_18;
8616 --
8617 
8618 ---------------------------------------
8619 --
8620 -- PRIVATE FUNCTION
8621 --         AcctLineType_19
8622 --
8623 ---------------------------------------
8624 PROCEDURE AcctLineType_19 (
8625   p_application_id        IN NUMBER
8626  ,p_event_id              IN NUMBER
8627  ,p_calculate_acctd_flag  IN VARCHAR2
8628  ,p_calculate_g_l_flag    IN VARCHAR2
8629  ,p_actual_flag           IN OUT VARCHAR2
8630  ,p_balance_type_code     OUT VARCHAR2
8631  ,p_gain_or_loss_ref      OUT VARCHAR2
8632  
8633 --Cost Management Default Account
8634  , p_source_4            IN NUMBER
8635 --DISTRIBUTION_IDENTIFIER
8636  , p_source_11            IN NUMBER
8637 --Distribution Type
8638  , p_source_12            IN VARCHAR2
8639  , p_source_12_meaning    IN VARCHAR2
8640 --Entered Currency Code
8641  , p_source_15            IN VARCHAR2
8642 --Entered Amount
8643  , p_source_18            IN NUMBER
8644 --Currency Conversion Date
8645  , p_source_19            IN DATE
8646 --Currency Conversion Rate
8647  , p_source_20            IN NUMBER
8648 --Currency Conversion Type
8649  , p_source_21            IN VARCHAR2
8650 --Accounted Amount
8651  , p_source_22            IN NUMBER
8652 --Accounting Line Type
8653  , p_source_24            IN NUMBER
8654 )
8655 IS
8656 
8657 l_component_type              VARCHAR2(80);
8658 l_component_code              VARCHAR2(30);
8659 l_component_type_code         VARCHAR2(1);
8660 l_component_appl_id           INTEGER;
8661 l_amb_context_code            VARCHAR2(30);
8662 l_entity_code                 VARCHAR2(30);
8663 l_event_class_code            VARCHAR2(30);
8664 l_ae_header_id                NUMBER;
8665 l_event_type_code             VARCHAR2(30);
8666 l_line_definition_code        VARCHAR2(30);
8667 l_line_definition_owner_code  VARCHAR2(1);
8668 --
8669 -- adr variables
8670 l_segment                     VARCHAR2(30);
8671 l_ccid                        NUMBER;
8672 l_adr_transaction_coa_id      NUMBER;
8673 l_adr_accounting_coa_id       NUMBER;
8674 l_adr_flexfield_segment_code  VARCHAR2(30);
8675 l_adr_flex_value_set_id       NUMBER;
8676 l_adr_value_type_code         VARCHAR2(30);
8677 l_adr_value_combination_id    NUMBER;
8678 l_adr_value_segment_code      VARCHAR2(30);
8679 
8680 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
8681 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
8682 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
8683 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
8684 
8685 -- 4262811 Variables ------------------------------------------------------------------------------------------
8686 l_entered_amt_idx             NUMBER;
8687 l_accted_amt_idx              NUMBER;
8688 l_acc_rev_flag                VARCHAR2(1);
8689 l_accrual_line_num            NUMBER;
8690 l_tmp_amt                     NUMBER;
8691 l_acc_rev_natural_side_code   VARCHAR2(1);
8692 
8693 l_num_entries                 NUMBER;
8694 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
8695 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
8696 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
8697 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
8698 l_recog_line_1                NUMBER;
8699 l_recog_line_2                NUMBER;
8700 
8701 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
8702 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
8703 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
8704 
8705 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
8706 
8707 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
8708 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
8709 
8710 ---------------------------------------------------------------------------------------------------------------
8711 
8712 
8713 --
8714 -- bulk performance
8715 --
8716 l_balance_type_code           VARCHAR2(1);
8717 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
8718 l_log_module                  VARCHAR2(240);
8719 
8720 --
8721 -- Upgrade strategy
8722 --
8723 l_actual_upg_option           VARCHAR2(1);
8724 l_enc_upg_option           VARCHAR2(1);
8725 
8726 --
8727 BEGIN
8728 --
8729 IF g_log_enabled THEN
8730       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_19';
8731 END IF;
8732 --
8733 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8734 
8735       trace
8736          (p_msg      => 'BEGIN of AcctLineType_19'
8737          ,p_level    => C_LEVEL_PROCEDURE
8738          ,p_module   => l_log_module);
8739 
8740 END IF;
8741 --
8742 l_component_type             := 'AMB_JLT';
8743 l_component_code             := 'COST_OF_GOODS_SOLD';
8744 l_component_type_code        := 'S';
8745 l_component_appl_id          :=  707;
8746 l_amb_context_code           := 'DEFAULT';
8747 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
8748 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
8749 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_ALL';
8750 l_line_definition_owner_code := 'S';
8751 l_line_definition_code       := 'FOB_RCPT_SENDER_RCPT';
8752 --
8753 l_balance_type_code          := 'A';
8754 l_segment                     := NULL;
8755 l_ccid                        := NULL;
8756 l_adr_transaction_coa_id      := NULL;
8757 l_adr_accounting_coa_id       := NULL;
8758 l_adr_flexfield_segment_code  := NULL;
8759 l_adr_flex_value_set_id       := NULL;
8760 l_adr_value_type_code         := NULL;
8761 l_adr_value_combination_id    := NULL;
8762 l_adr_value_segment_code      := NULL;
8763 
8764 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
8765 l_bflow_class_code           := '';    -- 4219869 Business Flow
8766 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
8767 l_budgetary_control_flag     := 'N';
8768 
8769 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
8770 l_bflow_applied_to_amt       := NULL; -- 5132302
8771 l_entered_amt_idx            := NULL;          -- 4262811
8772 l_accted_amt_idx             := NULL;          -- 4262811
8773 l_acc_rev_flag               := NULL;          -- 4262811
8774 l_accrual_line_num           := NULL;          -- 4262811
8775 l_tmp_amt                    := NULL;          -- 4262811
8776 --
8777  
8778 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8779     l_balance_type_code <> 'B' THEN
8780 IF NVL(p_source_24,9E125) =  2 AND 
8781 p_source_22 >  0
8782  THEN 
8783 
8784    --
8785    XLA_AE_LINES_PKG.SetNewLine;
8786 
8787    p_balance_type_code          := l_balance_type_code;
8788    -- set the flag so later we will know whether the gain loss line needs to be created
8789    
8790    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8791      p_actual_flag :='A';
8792    END IF;
8793 
8794    --
8795    -- bulk performance
8796    --
8797    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8798                                       p_header_num   => 0); -- 4262811
8799    --
8800    -- set accounting line options
8801    --
8802    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8803            p_natural_side_code          => 'D'
8804          , p_gain_or_loss_flag          => 'N'
8805          , p_gl_transfer_mode_code      => 'S'
8806          , p_acct_entry_type_code       => 'A'
8807          , p_switch_side_flag           => 'Y'
8808          , p_merge_duplicate_code       => 'N'
8809          );
8810    --
8811    l_acc_rev_natural_side_code := 'C';  -- 4262811
8812    -- 
8813    --
8814    -- set accounting line type info
8815    --
8816    xla_ae_lines_pkg.SetAcctLineType
8817       (p_component_type             => l_component_type
8818       ,p_event_type_code            => l_event_type_code
8819       ,p_line_definition_owner_code => l_line_definition_owner_code
8820       ,p_line_definition_code       => l_line_definition_code
8821       ,p_accounting_line_code       => l_component_code
8822       ,p_accounting_line_type_code  => l_component_type_code
8823       ,p_accounting_line_appl_id    => l_component_appl_id
8824       ,p_amb_context_code           => l_amb_context_code
8825       ,p_entity_code                => l_entity_code
8826       ,p_event_class_code           => l_event_class_code);
8827    --
8828    -- set accounting class
8829    --
8830    xla_ae_lines_pkg.SetAcctClass(
8831            p_accounting_class_code  => 'COST_OF_GOODS_SOLD'
8832          , p_ae_header_id           => l_ae_header_id
8833          );
8834 
8835    --
8836    -- set rounding class
8837    --
8838    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
8839                       'COST_OF_GOODS_SOLD';
8840 
8841    --
8842    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
8843    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
8844    --
8845    -- bulk performance
8846    --
8847    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
8848 
8849    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
8850       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
8851 
8852    -- 4955764
8853    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8854       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
8855 
8856    -- 4458381 Public Sector Enh
8857    
8858    --
8859    -- set accounting attributes for the line type
8860    --
8861    l_entered_amt_idx := 3;
8862    l_accted_amt_idx  := 8;
8863    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
8864    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
8865    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
8866    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
8867    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
8868    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
8869    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
8870    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
8871    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
8872    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
8873    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
8874    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
8875    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
8876    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
8877    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
8878    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
8879    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
8880 
8881    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
8882    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
8883 
8884    ---------------------------------------------------------------------------------------------------------------
8885    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
8886    ---------------------------------------------------------------------------------------------------------------
8887    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
8888 
8889    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8890    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8891 
8892    IF xla_accounting_cache_pkg.GetValueChar
8893          (p_source_code         => 'LEDGER_CATEGORY_CODE'
8894          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
8895    AND l_bflow_method_code = 'PRIOR_ENTRY'
8896 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
8897    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
8898          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
8899        )
8900    THEN
8901          xla_ae_lines_pkg.BflowUpgEntry
8902            (p_business_method_code    => l_bflow_method_code
8903            ,p_business_class_code     => l_bflow_class_code
8904            ,p_balance_type            => l_balance_type_code);
8905    ELSE
8906       NULL;
8907 -- No business flow processing for business flow method of NONE.
8908    END IF;
8909 
8910    --
8911    -- call analytical criteria
8912    --
8913    
8914    --
8915    -- call description
8916    --
8917    -- No description or it is inherited.
8918    --
8919    -- call ADRs
8920    -- Bug 4922099
8921    --
8922    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8923         (NVL(l_actual_upg_option, 'N') = 'O') OR
8924         (NVL(l_enc_upg_option, 'N') = 'O')
8925       )
8926    THEN
8927    NULL;
8928    --
8929    --
8930    
8931   l_ccid := AcctDerRule_4(
8932            p_application_id           => p_application_id
8933          , p_ae_header_id             => l_ae_header_id 
8934 , p_source_4 => p_source_4
8935          , x_transaction_coa_id       => l_adr_transaction_coa_id
8936          , x_accounting_coa_id        => l_adr_accounting_coa_id
8937          , x_value_type_code          => l_adr_value_type_code
8938          , p_side                     => 'NA'
8939    );
8940 
8941    xla_ae_lines_pkg.set_ccid(
8942     p_code_combination_id          => l_ccid
8943   , p_value_type_code              => l_adr_value_type_code
8944   , p_transaction_coa_id           => l_adr_transaction_coa_id
8945   , p_accounting_coa_id            => l_adr_accounting_coa_id
8946   , p_adr_code                     => 'CST_DEFAULT'
8947   , p_adr_type_code                => 'S'
8948   , p_component_type               => l_component_type
8949   , p_component_code               => l_component_code
8950   , p_component_type_code          => l_component_type_code
8951   , p_component_appl_id            => l_component_appl_id
8952   , p_amb_context_code             => l_amb_context_code
8953   , p_side                         => 'NA'
8954   );
8955 
8956 
8957    --
8958    --
8959    END IF;
8960    --
8961    -- Bug 4922099
8962    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8963           (NVL(l_enc_upg_option, 'N') = 'O')
8964         ) AND
8965         (l_bflow_method_code = 'PRIOR_ENTRY')
8966       )
8967    THEN
8968       IF
8969       --
8970       1 = 2
8971       --
8972       THEN
8973       xla_accounting_err_pkg.build_message
8974                                     (p_appli_s_name            => 'XLA'
8975                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8976                                     ,p_token_1                 => 'LINE_NUMBER'
8977                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
8978                                     ,p_token_2                 => 'LINE_TYPE_NAME'
8979                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
8980                                                                              l_component_type
8981                                                                             ,l_component_code
8982                                                                             ,l_component_type_code
8983                                                                             ,l_component_appl_id
8984                                                                             ,l_amb_context_code
8985                                                                             ,l_entity_code
8986                                                                             ,l_event_class_code
8987                                                                            )
8988                                     ,p_token_3                 => 'OWNER'
8989                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
8990                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
8991                                                                           ,p_lookup_code    => l_component_type_code
8992                                                                          )
8993                                     ,p_token_4                 => 'PRODUCT_NAME'
8994                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8995                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8996                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8997                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8998                                     ,p_ae_header_id            =>  NULL
8999                                        );
9000 
9001         IF (C_LEVEL_ERROR>= g_log_level) THEN
9002                  trace
9003                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9004                       ,p_level    => C_LEVEL_ERROR
9005                       ,p_module   => l_log_module);
9006         END IF;
9007       END IF;
9008    END IF;
9009    --
9010    --
9011    ------------------------------------------------------------------------------------------------
9012    -- 4219869 Business Flow
9013    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
9014    -- Prior Entry.  Currently, the following code is always generated.
9015    ------------------------------------------------------------------------------------------------
9016    XLA_AE_LINES_PKG.ValidateCurrentLine;
9017 
9018    ------------------------------------------------------------------------------------
9019    -- 4219869 Business Flow
9020    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
9021    ------------------------------------------------------------------------------------
9022    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9023 
9024    ----------------------------------------------------------------------------------
9025    -- 4219869 Business Flow
9026    -- Update journal entry status -- Need to generate this within IF <condition>
9027    ----------------------------------------------------------------------------------
9028    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9029          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9030          ,p_balance_type_code => l_balance_type_code
9031          );
9032 
9033    -------------------------------------------------------------------------------------------
9034    -- 4262811 - Generate the Accrual Reversal lines
9035    -------------------------------------------------------------------------------------------
9036    BEGIN
9037       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9038                               (g_array_event(p_event_id).array_value_num('header_index'));
9039       IF l_acc_rev_flag IS NULL THEN
9040          l_acc_rev_flag := 'N';
9041       END IF;
9042    EXCEPTION
9043       WHEN OTHERS THEN
9044          l_acc_rev_flag := 'N';
9045    END;
9046    --
9047    IF (l_acc_rev_flag = 'Y') THEN
9048 
9049        -- 4645092  ------------------------------------------------------------------------------
9050        -- To allow MPA report to determine if it should generate report process
9051        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9052        ------------------------------------------------------------------------------------------
9053 
9054        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9055        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9056    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
9057    -- call ADRs
9058    -- Bug 4922099
9059    --
9060    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9061         (NVL(l_actual_upg_option, 'N') = 'O') OR
9062         (NVL(l_enc_upg_option, 'N') = 'O')
9063       )
9064    THEN
9065    NULL;
9066    --
9067    --
9068    
9069   l_ccid := AcctDerRule_4(
9070            p_application_id           => p_application_id
9071          , p_ae_header_id             => l_ae_header_id 
9072 , p_source_4 => p_source_4
9073          , x_transaction_coa_id       => l_adr_transaction_coa_id
9074          , x_accounting_coa_id        => l_adr_accounting_coa_id
9075          , x_value_type_code          => l_adr_value_type_code
9076          , p_side                     => 'NA'
9077    );
9078 
9079    xla_ae_lines_pkg.set_ccid(
9080     p_code_combination_id          => l_ccid
9081   , p_value_type_code              => l_adr_value_type_code
9082   , p_transaction_coa_id           => l_adr_transaction_coa_id
9083   , p_accounting_coa_id            => l_adr_accounting_coa_id
9084   , p_adr_code                     => 'CST_DEFAULT'
9085   , p_adr_type_code                => 'S'
9086   , p_component_type               => l_component_type
9087   , p_component_code               => l_component_code
9088   , p_component_type_code          => l_component_type_code
9089   , p_component_appl_id            => l_component_appl_id
9090   , p_amb_context_code             => l_amb_context_code
9091   , p_side                         => 'NA'
9092   );
9093 
9094 
9095    --
9096    --
9097    END IF;
9098 
9099        --
9100        -- Update the line information that should be overwritten
9101        --
9102        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9103                                          p_header_num   => 1);
9104        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
9105 
9106        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9107 
9108        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
9109           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9110        END IF;
9111 
9112       --
9113       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9114       --
9115       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9116           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
9117       ELSE
9118           ---------------------------------------------------------------------------------------------------
9119           -- 4262811a Switch Sign
9120           ---------------------------------------------------------------------------------------------------
9121           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
9122           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9123                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9124           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9125                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9126           -- 5132302
9127           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9128                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9129 
9130       END IF;
9131 
9132       -- 4955764
9133       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9134       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9135 
9136 
9137       XLA_AE_LINES_PKG.ValidateCurrentLine;
9138       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9139 
9140       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9141                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9142                ,p_balance_type_code => l_balance_type_code);
9143 
9144    END IF;
9145 
9146    -----------------------------------------------------------------------------------------
9147    -- 4262811 Multiperiod Accounting
9148    -----------------------------------------------------------------------------------------
9149      -- No MPA option is assigned.
9150 
9151 
9152 END IF;
9153 END IF;
9154 --
9155 
9156 --
9157 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9158    trace
9159       (p_msg      => 'END of AcctLineType_19'
9160       ,p_level    => C_LEVEL_PROCEDURE
9161       ,p_module   => l_log_module);
9162 END IF;
9163 --
9164 EXCEPTION
9165   WHEN xla_exceptions_pkg.application_exception THEN
9166       RAISE;
9167   WHEN OTHERS THEN
9168        xla_exceptions_pkg.raise_message
9169            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_19');
9170 END AcctLineType_19;
9171 --
9172 
9173 ---------------------------------------
9174 --
9175 -- PRIVATE FUNCTION
9176 --         AcctLineType_20
9177 --
9178 ---------------------------------------
9179 PROCEDURE AcctLineType_20 (
9180   p_application_id        IN NUMBER
9181  ,p_event_id              IN NUMBER
9182  ,p_calculate_acctd_flag  IN VARCHAR2
9183  ,p_calculate_g_l_flag    IN VARCHAR2
9184  ,p_actual_flag           IN OUT VARCHAR2
9185  ,p_balance_type_code     OUT VARCHAR2
9186  ,p_gain_or_loss_ref      OUT VARCHAR2
9187  
9188 --Cost Management Default Account
9189  , p_source_4            IN NUMBER
9190 --DISTRIBUTION_IDENTIFIER
9191  , p_source_11            IN NUMBER
9192 --Distribution Type
9193  , p_source_12            IN VARCHAR2
9194  , p_source_12_meaning    IN VARCHAR2
9195 --Entered Currency Code
9196  , p_source_15            IN VARCHAR2
9197 --Entered Amount
9198  , p_source_18            IN NUMBER
9199 --Currency Conversion Date
9200  , p_source_19            IN DATE
9201 --Currency Conversion Rate
9202  , p_source_20            IN NUMBER
9203 --Currency Conversion Type
9204  , p_source_21            IN VARCHAR2
9205 --Accounted Amount
9206  , p_source_22            IN NUMBER
9207 --Accounting Line Type
9208  , p_source_24            IN NUMBER
9209 )
9210 IS
9211 
9212 l_component_type              VARCHAR2(80);
9213 l_component_code              VARCHAR2(30);
9214 l_component_type_code         VARCHAR2(1);
9215 l_component_appl_id           INTEGER;
9216 l_amb_context_code            VARCHAR2(30);
9217 l_entity_code                 VARCHAR2(30);
9218 l_event_class_code            VARCHAR2(30);
9219 l_ae_header_id                NUMBER;
9220 l_event_type_code             VARCHAR2(30);
9221 l_line_definition_code        VARCHAR2(30);
9222 l_line_definition_owner_code  VARCHAR2(1);
9223 --
9224 -- adr variables
9225 l_segment                     VARCHAR2(30);
9226 l_ccid                        NUMBER;
9227 l_adr_transaction_coa_id      NUMBER;
9228 l_adr_accounting_coa_id       NUMBER;
9229 l_adr_flexfield_segment_code  VARCHAR2(30);
9230 l_adr_flex_value_set_id       NUMBER;
9231 l_adr_value_type_code         VARCHAR2(30);
9232 l_adr_value_combination_id    NUMBER;
9233 l_adr_value_segment_code      VARCHAR2(30);
9234 
9235 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
9236 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
9237 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
9238 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
9239 
9240 -- 4262811 Variables ------------------------------------------------------------------------------------------
9241 l_entered_amt_idx             NUMBER;
9242 l_accted_amt_idx              NUMBER;
9243 l_acc_rev_flag                VARCHAR2(1);
9244 l_accrual_line_num            NUMBER;
9245 l_tmp_amt                     NUMBER;
9246 l_acc_rev_natural_side_code   VARCHAR2(1);
9247 
9248 l_num_entries                 NUMBER;
9249 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
9250 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
9251 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
9252 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
9253 l_recog_line_1                NUMBER;
9254 l_recog_line_2                NUMBER;
9255 
9256 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
9257 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
9258 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
9259 
9260 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9261 
9262 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
9263 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
9264 
9265 ---------------------------------------------------------------------------------------------------------------
9266 
9267 
9268 --
9269 -- bulk performance
9270 --
9271 l_balance_type_code           VARCHAR2(1);
9272 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
9273 l_log_module                  VARCHAR2(240);
9274 
9275 --
9276 -- Upgrade strategy
9277 --
9278 l_actual_upg_option           VARCHAR2(1);
9279 l_enc_upg_option           VARCHAR2(1);
9280 
9281 --
9282 BEGIN
9283 --
9284 IF g_log_enabled THEN
9285       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_20';
9286 END IF;
9287 --
9288 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9289 
9290       trace
9291          (p_msg      => 'BEGIN of AcctLineType_20'
9292          ,p_level    => C_LEVEL_PROCEDURE
9293          ,p_module   => l_log_module);
9294 
9295 END IF;
9296 --
9297 l_component_type             := 'AMB_JLT';
9298 l_component_code             := 'COST_OF_GOODS_SOLD';
9299 l_component_type_code        := 'S';
9300 l_component_appl_id          :=  707;
9301 l_amb_context_code           := 'DEFAULT';
9302 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
9303 l_event_class_code           := 'SALES_ORDER';
9304 l_event_type_code            := 'SALES_ORDER_ALL';
9305 l_line_definition_owner_code := 'S';
9306 l_line_definition_code       := 'SALES_ORDER';
9307 --
9308 l_balance_type_code          := 'A';
9309 l_segment                     := NULL;
9310 l_ccid                        := NULL;
9311 l_adr_transaction_coa_id      := NULL;
9312 l_adr_accounting_coa_id       := NULL;
9313 l_adr_flexfield_segment_code  := NULL;
9314 l_adr_flex_value_set_id       := NULL;
9315 l_adr_value_type_code         := NULL;
9316 l_adr_value_combination_id    := NULL;
9317 l_adr_value_segment_code      := NULL;
9318 
9319 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
9320 l_bflow_class_code           := '';    -- 4219869 Business Flow
9321 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
9322 l_budgetary_control_flag     := 'N';
9323 
9324 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
9325 l_bflow_applied_to_amt       := NULL; -- 5132302
9326 l_entered_amt_idx            := NULL;          -- 4262811
9327 l_accted_amt_idx             := NULL;          -- 4262811
9328 l_acc_rev_flag               := NULL;          -- 4262811
9329 l_accrual_line_num           := NULL;          -- 4262811
9330 l_tmp_amt                    := NULL;          -- 4262811
9331 --
9332  
9333 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
9334     l_balance_type_code <> 'B' THEN
9335 IF NVL(p_source_24,9E125) =  35
9336  THEN 
9337 
9338    --
9339    XLA_AE_LINES_PKG.SetNewLine;
9340 
9341    p_balance_type_code          := l_balance_type_code;
9342    -- set the flag so later we will know whether the gain loss line needs to be created
9343    
9344    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
9345      p_actual_flag :='A';
9346    END IF;
9347 
9348    --
9349    -- bulk performance
9350    --
9351    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
9352                                       p_header_num   => 0); -- 4262811
9353    --
9354    -- set accounting line options
9355    --
9356    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
9357            p_natural_side_code          => 'D'
9358          , p_gain_or_loss_flag          => 'N'
9359          , p_gl_transfer_mode_code      => 'S'
9360          , p_acct_entry_type_code       => 'A'
9361          , p_switch_side_flag           => 'Y'
9362          , p_merge_duplicate_code       => 'N'
9363          );
9364    --
9365    l_acc_rev_natural_side_code := 'C';  -- 4262811
9366    -- 
9367    --
9368    -- set accounting line type info
9369    --
9370    xla_ae_lines_pkg.SetAcctLineType
9371       (p_component_type             => l_component_type
9372       ,p_event_type_code            => l_event_type_code
9373       ,p_line_definition_owner_code => l_line_definition_owner_code
9374       ,p_line_definition_code       => l_line_definition_code
9375       ,p_accounting_line_code       => l_component_code
9376       ,p_accounting_line_type_code  => l_component_type_code
9377       ,p_accounting_line_appl_id    => l_component_appl_id
9378       ,p_amb_context_code           => l_amb_context_code
9379       ,p_entity_code                => l_entity_code
9380       ,p_event_class_code           => l_event_class_code);
9381    --
9382    -- set accounting class
9383    --
9384    xla_ae_lines_pkg.SetAcctClass(
9385            p_accounting_class_code  => 'COST_OF_GOODS_SOLD'
9386          , p_ae_header_id           => l_ae_header_id
9387          );
9388 
9389    --
9390    -- set rounding class
9391    --
9392    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9393                       'COST_OF_GOODS_SOLD';
9394 
9395    --
9396    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9397    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9398    --
9399    -- bulk performance
9400    --
9401    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9402 
9403    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9404       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9405 
9406    -- 4955764
9407    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9408       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9409 
9410    -- 4458381 Public Sector Enh
9411    
9412    --
9413    -- set accounting attributes for the line type
9414    --
9415    l_entered_amt_idx := 3;
9416    l_accted_amt_idx  := 8;
9417    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
9418    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
9419    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
9420    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
9421    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
9422    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
9423    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
9424    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
9425    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
9426    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
9427    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
9428    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
9429    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
9430    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
9431    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
9432    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
9433    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
9434 
9435    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9436    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9437 
9438    ---------------------------------------------------------------------------------------------------------------
9439    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9440    ---------------------------------------------------------------------------------------------------------------
9441    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9442 
9443    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9444    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9445 
9446    IF xla_accounting_cache_pkg.GetValueChar
9447          (p_source_code         => 'LEDGER_CATEGORY_CODE'
9448          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9449    AND l_bflow_method_code = 'PRIOR_ENTRY'
9450 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9451    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9452          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9453        )
9454    THEN
9455          xla_ae_lines_pkg.BflowUpgEntry
9456            (p_business_method_code    => l_bflow_method_code
9457            ,p_business_class_code     => l_bflow_class_code
9458            ,p_balance_type            => l_balance_type_code);
9459    ELSE
9460       NULL;
9461 -- No business flow processing for business flow method of NONE.
9462    END IF;
9463 
9464    --
9465    -- call analytical criteria
9466    --
9467    
9468    --
9469    -- call description
9470    --
9471    -- No description or it is inherited.
9472    --
9473    -- call ADRs
9474    -- Bug 4922099
9475    --
9476    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9477         (NVL(l_actual_upg_option, 'N') = 'O') OR
9478         (NVL(l_enc_upg_option, 'N') = 'O')
9479       )
9480    THEN
9481    NULL;
9482    --
9483    --
9484    
9485   l_ccid := AcctDerRule_4(
9486            p_application_id           => p_application_id
9487          , p_ae_header_id             => l_ae_header_id 
9488 , p_source_4 => p_source_4
9489          , x_transaction_coa_id       => l_adr_transaction_coa_id
9490          , x_accounting_coa_id        => l_adr_accounting_coa_id
9491          , x_value_type_code          => l_adr_value_type_code
9492          , p_side                     => 'NA'
9493    );
9494 
9495    xla_ae_lines_pkg.set_ccid(
9496     p_code_combination_id          => l_ccid
9497   , p_value_type_code              => l_adr_value_type_code
9498   , p_transaction_coa_id           => l_adr_transaction_coa_id
9499   , p_accounting_coa_id            => l_adr_accounting_coa_id
9500   , p_adr_code                     => 'CST_DEFAULT'
9501   , p_adr_type_code                => 'S'
9502   , p_component_type               => l_component_type
9503   , p_component_code               => l_component_code
9504   , p_component_type_code          => l_component_type_code
9505   , p_component_appl_id            => l_component_appl_id
9506   , p_amb_context_code             => l_amb_context_code
9507   , p_side                         => 'NA'
9508   );
9509 
9510 
9511    --
9512    --
9513    END IF;
9514    --
9515    -- Bug 4922099
9516    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
9517           (NVL(l_enc_upg_option, 'N') = 'O')
9518         ) AND
9519         (l_bflow_method_code = 'PRIOR_ENTRY')
9520       )
9521    THEN
9522       IF
9523       --
9524       1 = 2
9525       --
9526       THEN
9527       xla_accounting_err_pkg.build_message
9528                                     (p_appli_s_name            => 'XLA'
9529                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9530                                     ,p_token_1                 => 'LINE_NUMBER'
9531                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
9532                                     ,p_token_2                 => 'LINE_TYPE_NAME'
9533                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
9534                                                                              l_component_type
9535                                                                             ,l_component_code
9536                                                                             ,l_component_type_code
9537                                                                             ,l_component_appl_id
9538                                                                             ,l_amb_context_code
9539                                                                             ,l_entity_code
9540                                                                             ,l_event_class_code
9541                                                                            )
9542                                     ,p_token_3                 => 'OWNER'
9543                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
9544                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
9545                                                                           ,p_lookup_code    => l_component_type_code
9546                                                                          )
9547                                     ,p_token_4                 => 'PRODUCT_NAME'
9548                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
9549                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
9550                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
9551                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
9552                                     ,p_ae_header_id            =>  NULL
9553                                        );
9554 
9555         IF (C_LEVEL_ERROR>= g_log_level) THEN
9556                  trace
9557                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9558                       ,p_level    => C_LEVEL_ERROR
9559                       ,p_module   => l_log_module);
9560         END IF;
9561       END IF;
9562    END IF;
9563    --
9564    --
9565    ------------------------------------------------------------------------------------------------
9566    -- 4219869 Business Flow
9567    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
9568    -- Prior Entry.  Currently, the following code is always generated.
9569    ------------------------------------------------------------------------------------------------
9570    XLA_AE_LINES_PKG.ValidateCurrentLine;
9571 
9572    ------------------------------------------------------------------------------------
9573    -- 4219869 Business Flow
9574    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
9575    ------------------------------------------------------------------------------------
9576    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9577 
9578    ----------------------------------------------------------------------------------
9579    -- 4219869 Business Flow
9580    -- Update journal entry status -- Need to generate this within IF <condition>
9581    ----------------------------------------------------------------------------------
9582    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9583          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9584          ,p_balance_type_code => l_balance_type_code
9585          );
9586 
9587    -------------------------------------------------------------------------------------------
9588    -- 4262811 - Generate the Accrual Reversal lines
9589    -------------------------------------------------------------------------------------------
9590    BEGIN
9591       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9592                               (g_array_event(p_event_id).array_value_num('header_index'));
9593       IF l_acc_rev_flag IS NULL THEN
9594          l_acc_rev_flag := 'N';
9595       END IF;
9596    EXCEPTION
9597       WHEN OTHERS THEN
9598          l_acc_rev_flag := 'N';
9599    END;
9600    --
9601    IF (l_acc_rev_flag = 'Y') THEN
9602 
9603        -- 4645092  ------------------------------------------------------------------------------
9604        -- To allow MPA report to determine if it should generate report process
9605        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9606        ------------------------------------------------------------------------------------------
9607 
9608        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9609        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9610    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
9611    -- call ADRs
9612    -- Bug 4922099
9613    --
9614    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9615         (NVL(l_actual_upg_option, 'N') = 'O') OR
9616         (NVL(l_enc_upg_option, 'N') = 'O')
9617       )
9618    THEN
9619    NULL;
9620    --
9621    --
9622    
9623   l_ccid := AcctDerRule_4(
9624            p_application_id           => p_application_id
9625          , p_ae_header_id             => l_ae_header_id 
9626 , p_source_4 => p_source_4
9627          , x_transaction_coa_id       => l_adr_transaction_coa_id
9628          , x_accounting_coa_id        => l_adr_accounting_coa_id
9629          , x_value_type_code          => l_adr_value_type_code
9630          , p_side                     => 'NA'
9631    );
9632 
9633    xla_ae_lines_pkg.set_ccid(
9634     p_code_combination_id          => l_ccid
9635   , p_value_type_code              => l_adr_value_type_code
9636   , p_transaction_coa_id           => l_adr_transaction_coa_id
9637   , p_accounting_coa_id            => l_adr_accounting_coa_id
9638   , p_adr_code                     => 'CST_DEFAULT'
9639   , p_adr_type_code                => 'S'
9640   , p_component_type               => l_component_type
9641   , p_component_code               => l_component_code
9642   , p_component_type_code          => l_component_type_code
9643   , p_component_appl_id            => l_component_appl_id
9644   , p_amb_context_code             => l_amb_context_code
9645   , p_side                         => 'NA'
9646   );
9647 
9648 
9649    --
9650    --
9651    END IF;
9652 
9653        --
9654        -- Update the line information that should be overwritten
9655        --
9656        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9657                                          p_header_num   => 1);
9658        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
9659 
9660        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9661 
9662        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
9663           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9664        END IF;
9665 
9666       --
9667       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9668       --
9669       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9670           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
9671       ELSE
9672           ---------------------------------------------------------------------------------------------------
9673           -- 4262811a Switch Sign
9674           ---------------------------------------------------------------------------------------------------
9675           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
9676           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9677                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9678           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9679                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9680           -- 5132302
9681           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9682                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9683 
9684       END IF;
9685 
9686       -- 4955764
9687       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9688       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9689 
9690 
9691       XLA_AE_LINES_PKG.ValidateCurrentLine;
9692       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9693 
9694       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9695                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9696                ,p_balance_type_code => l_balance_type_code);
9697 
9698    END IF;
9699 
9700    -----------------------------------------------------------------------------------------
9701    -- 4262811 Multiperiod Accounting
9702    -----------------------------------------------------------------------------------------
9703      -- No MPA option is assigned.
9704 
9705 
9706 END IF;
9707 END IF;
9708 --
9709 
9710 --
9711 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9712    trace
9713       (p_msg      => 'END of AcctLineType_20'
9714       ,p_level    => C_LEVEL_PROCEDURE
9715       ,p_module   => l_log_module);
9716 END IF;
9717 --
9718 EXCEPTION
9719   WHEN xla_exceptions_pkg.application_exception THEN
9720       RAISE;
9721   WHEN OTHERS THEN
9722        xla_exceptions_pkg.raise_message
9723            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_20');
9724 END AcctLineType_20;
9725 --
9726 
9727 ---------------------------------------
9728 --
9729 -- PRIVATE FUNCTION
9730 --         AcctLineType_21
9731 --
9732 ---------------------------------------
9733 PROCEDURE AcctLineType_21 (
9734   p_application_id        IN NUMBER
9735  ,p_event_id              IN NUMBER
9736  ,p_calculate_acctd_flag  IN VARCHAR2
9737  ,p_calculate_g_l_flag    IN VARCHAR2
9738  ,p_actual_flag           IN OUT VARCHAR2
9739  ,p_balance_type_code     OUT VARCHAR2
9740  ,p_gain_or_loss_ref      OUT VARCHAR2
9741  
9742 --Cost Management Default Account
9743  , p_source_4            IN NUMBER
9744 --DISTRIBUTION_IDENTIFIER
9745  , p_source_11            IN NUMBER
9746 --Distribution Type
9747  , p_source_12            IN VARCHAR2
9748  , p_source_12_meaning    IN VARCHAR2
9749 --Entered Currency Code
9750  , p_source_15            IN VARCHAR2
9751 --Entered Amount
9752  , p_source_18            IN NUMBER
9753 --Currency Conversion Date
9754  , p_source_19            IN DATE
9755 --Currency Conversion Rate
9756  , p_source_20            IN NUMBER
9757 --Currency Conversion Type
9758  , p_source_21            IN VARCHAR2
9759 --Accounted Amount
9760  , p_source_22            IN NUMBER
9761 --Accounting Line Type
9762  , p_source_24            IN NUMBER
9763 )
9764 IS
9765 
9766 l_component_type              VARCHAR2(80);
9767 l_component_code              VARCHAR2(30);
9768 l_component_type_code         VARCHAR2(1);
9769 l_component_appl_id           INTEGER;
9770 l_amb_context_code            VARCHAR2(30);
9771 l_entity_code                 VARCHAR2(30);
9772 l_event_class_code            VARCHAR2(30);
9773 l_ae_header_id                NUMBER;
9774 l_event_type_code             VARCHAR2(30);
9775 l_line_definition_code        VARCHAR2(30);
9776 l_line_definition_owner_code  VARCHAR2(1);
9777 --
9778 -- adr variables
9779 l_segment                     VARCHAR2(30);
9780 l_ccid                        NUMBER;
9781 l_adr_transaction_coa_id      NUMBER;
9782 l_adr_accounting_coa_id       NUMBER;
9783 l_adr_flexfield_segment_code  VARCHAR2(30);
9784 l_adr_flex_value_set_id       NUMBER;
9785 l_adr_value_type_code         VARCHAR2(30);
9786 l_adr_value_combination_id    NUMBER;
9787 l_adr_value_segment_code      VARCHAR2(30);
9788 
9789 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
9790 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
9791 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
9792 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
9793 
9794 -- 4262811 Variables ------------------------------------------------------------------------------------------
9795 l_entered_amt_idx             NUMBER;
9796 l_accted_amt_idx              NUMBER;
9797 l_acc_rev_flag                VARCHAR2(1);
9798 l_accrual_line_num            NUMBER;
9799 l_tmp_amt                     NUMBER;
9800 l_acc_rev_natural_side_code   VARCHAR2(1);
9801 
9802 l_num_entries                 NUMBER;
9803 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
9804 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
9805 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
9806 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
9807 l_recog_line_1                NUMBER;
9808 l_recog_line_2                NUMBER;
9809 
9810 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
9811 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
9812 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
9813 
9814 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9815 
9816 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
9817 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
9818 
9819 ---------------------------------------------------------------------------------------------------------------
9820 
9821 
9822 --
9823 -- bulk performance
9824 --
9825 l_balance_type_code           VARCHAR2(1);
9826 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
9827 l_log_module                  VARCHAR2(240);
9828 
9829 --
9830 -- Upgrade strategy
9831 --
9832 l_actual_upg_option           VARCHAR2(1);
9833 l_enc_upg_option           VARCHAR2(1);
9834 
9835 --
9836 BEGIN
9837 --
9838 IF g_log_enabled THEN
9839       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_21';
9840 END IF;
9841 --
9842 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9843 
9844       trace
9845          (p_msg      => 'BEGIN of AcctLineType_21'
9846          ,p_level    => C_LEVEL_PROCEDURE
9847          ,p_module   => l_log_module);
9848 
9849 END IF;
9850 --
9851 l_component_type             := 'AMB_JLT';
9852 l_component_code             := 'COST_OF_GOODS_SOLD';
9853 l_component_type_code        := 'S';
9854 l_component_appl_id          :=  707;
9855 l_amb_context_code           := 'DEFAULT';
9856 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
9857 l_event_class_code           := 'USER_DEFINE';
9858 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
9859 l_line_definition_owner_code := 'S';
9860 l_line_definition_code       := 'USER_FOB_SHIP_SENDER_SHIP_NOTP';
9861 --
9862 l_balance_type_code          := 'A';
9863 l_segment                     := NULL;
9864 l_ccid                        := NULL;
9865 l_adr_transaction_coa_id      := NULL;
9866 l_adr_accounting_coa_id       := NULL;
9867 l_adr_flexfield_segment_code  := NULL;
9868 l_adr_flex_value_set_id       := NULL;
9869 l_adr_value_type_code         := NULL;
9870 l_adr_value_combination_id    := NULL;
9871 l_adr_value_segment_code      := NULL;
9872 
9873 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
9874 l_bflow_class_code           := '';    -- 4219869 Business Flow
9875 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
9876 l_budgetary_control_flag     := 'N';
9877 
9878 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
9879 l_bflow_applied_to_amt       := NULL; -- 5132302
9880 l_entered_amt_idx            := NULL;          -- 4262811
9881 l_accted_amt_idx             := NULL;          -- 4262811
9882 l_acc_rev_flag               := NULL;          -- 4262811
9883 l_accrual_line_num           := NULL;          -- 4262811
9884 l_tmp_amt                    := NULL;          -- 4262811
9885 --
9886  
9887 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
9888     l_balance_type_code <> 'B' THEN
9889 IF NVL(p_source_24,9E125) =  2 AND 
9890 p_source_22 >  0
9891  THEN 
9892 
9893    --
9894    XLA_AE_LINES_PKG.SetNewLine;
9895 
9896    p_balance_type_code          := l_balance_type_code;
9897    -- set the flag so later we will know whether the gain loss line needs to be created
9898    
9899    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
9900      p_actual_flag :='A';
9901    END IF;
9902 
9903    --
9904    -- bulk performance
9905    --
9906    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
9907                                       p_header_num   => 0); -- 4262811
9908    --
9909    -- set accounting line options
9910    --
9911    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
9912            p_natural_side_code          => 'D'
9913          , p_gain_or_loss_flag          => 'N'
9914          , p_gl_transfer_mode_code      => 'S'
9915          , p_acct_entry_type_code       => 'A'
9916          , p_switch_side_flag           => 'Y'
9917          , p_merge_duplicate_code       => 'N'
9918          );
9919    --
9920    l_acc_rev_natural_side_code := 'C';  -- 4262811
9921    -- 
9922    --
9923    -- set accounting line type info
9924    --
9925    xla_ae_lines_pkg.SetAcctLineType
9926       (p_component_type             => l_component_type
9927       ,p_event_type_code            => l_event_type_code
9928       ,p_line_definition_owner_code => l_line_definition_owner_code
9929       ,p_line_definition_code       => l_line_definition_code
9930       ,p_accounting_line_code       => l_component_code
9931       ,p_accounting_line_type_code  => l_component_type_code
9932       ,p_accounting_line_appl_id    => l_component_appl_id
9933       ,p_amb_context_code           => l_amb_context_code
9934       ,p_entity_code                => l_entity_code
9935       ,p_event_class_code           => l_event_class_code);
9936    --
9937    -- set accounting class
9938    --
9939    xla_ae_lines_pkg.SetAcctClass(
9940            p_accounting_class_code  => 'COST_OF_GOODS_SOLD'
9941          , p_ae_header_id           => l_ae_header_id
9942          );
9943 
9944    --
9945    -- set rounding class
9946    --
9947    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9948                       'COST_OF_GOODS_SOLD';
9949 
9950    --
9951    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9952    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9953    --
9954    -- bulk performance
9955    --
9956    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9957 
9958    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9959       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9960 
9961    -- 4955764
9962    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9963       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9964 
9965    -- 4458381 Public Sector Enh
9966    
9967    --
9968    -- set accounting attributes for the line type
9969    --
9970    l_entered_amt_idx := 3;
9971    l_accted_amt_idx  := 8;
9972    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
9973    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
9974    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
9975    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
9976    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
9977    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
9978    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
9979    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
9980    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
9981    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
9982    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
9983    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
9984    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
9985    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
9986    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
9987    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
9988    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
9989 
9990    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9991    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9992 
9993    ---------------------------------------------------------------------------------------------------------------
9994    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9995    ---------------------------------------------------------------------------------------------------------------
9996    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9997 
9998    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9999    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10000 
10001    IF xla_accounting_cache_pkg.GetValueChar
10002          (p_source_code         => 'LEDGER_CATEGORY_CODE'
10003          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
10004    AND l_bflow_method_code = 'PRIOR_ENTRY'
10005 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
10006    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
10007          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
10008        )
10009    THEN
10010          xla_ae_lines_pkg.BflowUpgEntry
10011            (p_business_method_code    => l_bflow_method_code
10012            ,p_business_class_code     => l_bflow_class_code
10013            ,p_balance_type            => l_balance_type_code);
10014    ELSE
10015       NULL;
10016 -- No business flow processing for business flow method of NONE.
10017    END IF;
10018 
10019    --
10020    -- call analytical criteria
10021    --
10022    
10023    --
10024    -- call description
10025    --
10026    -- No description or it is inherited.
10027    --
10028    -- call ADRs
10029    -- Bug 4922099
10030    --
10031    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10032         (NVL(l_actual_upg_option, 'N') = 'O') OR
10033         (NVL(l_enc_upg_option, 'N') = 'O')
10034       )
10035    THEN
10036    NULL;
10037    --
10038    --
10039    
10040   l_ccid := AcctDerRule_4(
10041            p_application_id           => p_application_id
10042          , p_ae_header_id             => l_ae_header_id 
10043 , p_source_4 => p_source_4
10044          , x_transaction_coa_id       => l_adr_transaction_coa_id
10045          , x_accounting_coa_id        => l_adr_accounting_coa_id
10046          , x_value_type_code          => l_adr_value_type_code
10047          , p_side                     => 'NA'
10048    );
10049 
10050    xla_ae_lines_pkg.set_ccid(
10051     p_code_combination_id          => l_ccid
10052   , p_value_type_code              => l_adr_value_type_code
10053   , p_transaction_coa_id           => l_adr_transaction_coa_id
10054   , p_accounting_coa_id            => l_adr_accounting_coa_id
10055   , p_adr_code                     => 'CST_DEFAULT'
10056   , p_adr_type_code                => 'S'
10057   , p_component_type               => l_component_type
10058   , p_component_code               => l_component_code
10059   , p_component_type_code          => l_component_type_code
10060   , p_component_appl_id            => l_component_appl_id
10061   , p_amb_context_code             => l_amb_context_code
10062   , p_side                         => 'NA'
10063   );
10064 
10065 
10066    --
10067    --
10068    END IF;
10069    --
10070    -- Bug 4922099
10071    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
10072           (NVL(l_enc_upg_option, 'N') = 'O')
10073         ) AND
10074         (l_bflow_method_code = 'PRIOR_ENTRY')
10075       )
10076    THEN
10077       IF
10078       --
10079       1 = 2
10080       --
10081       THEN
10082       xla_accounting_err_pkg.build_message
10083                                     (p_appli_s_name            => 'XLA'
10084                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10085                                     ,p_token_1                 => 'LINE_NUMBER'
10086                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
10087                                     ,p_token_2                 => 'LINE_TYPE_NAME'
10088                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
10089                                                                              l_component_type
10090                                                                             ,l_component_code
10091                                                                             ,l_component_type_code
10092                                                                             ,l_component_appl_id
10093                                                                             ,l_amb_context_code
10094                                                                             ,l_entity_code
10095                                                                             ,l_event_class_code
10096                                                                            )
10097                                     ,p_token_3                 => 'OWNER'
10098                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
10099                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
10100                                                                           ,p_lookup_code    => l_component_type_code
10101                                                                          )
10102                                     ,p_token_4                 => 'PRODUCT_NAME'
10103                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
10104                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
10105                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
10106                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
10107                                     ,p_ae_header_id            =>  NULL
10108                                        );
10109 
10110         IF (C_LEVEL_ERROR>= g_log_level) THEN
10111                  trace
10112                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10113                       ,p_level    => C_LEVEL_ERROR
10114                       ,p_module   => l_log_module);
10115         END IF;
10116       END IF;
10117    END IF;
10118    --
10119    --
10120    ------------------------------------------------------------------------------------------------
10121    -- 4219869 Business Flow
10122    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
10123    -- Prior Entry.  Currently, the following code is always generated.
10124    ------------------------------------------------------------------------------------------------
10125    XLA_AE_LINES_PKG.ValidateCurrentLine;
10126 
10127    ------------------------------------------------------------------------------------
10128    -- 4219869 Business Flow
10129    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
10130    ------------------------------------------------------------------------------------
10131    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10132 
10133    ----------------------------------------------------------------------------------
10134    -- 4219869 Business Flow
10135    -- Update journal entry status -- Need to generate this within IF <condition>
10136    ----------------------------------------------------------------------------------
10137    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10138          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
10139          ,p_balance_type_code => l_balance_type_code
10140          );
10141 
10142    -------------------------------------------------------------------------------------------
10143    -- 4262811 - Generate the Accrual Reversal lines
10144    -------------------------------------------------------------------------------------------
10145    BEGIN
10146       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
10147                               (g_array_event(p_event_id).array_value_num('header_index'));
10148       IF l_acc_rev_flag IS NULL THEN
10149          l_acc_rev_flag := 'N';
10150       END IF;
10151    EXCEPTION
10152       WHEN OTHERS THEN
10153          l_acc_rev_flag := 'N';
10154    END;
10155    --
10156    IF (l_acc_rev_flag = 'Y') THEN
10157 
10158        -- 4645092  ------------------------------------------------------------------------------
10159        -- To allow MPA report to determine if it should generate report process
10160        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
10161        ------------------------------------------------------------------------------------------
10162 
10163        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
10164        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
10165    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
10166    -- call ADRs
10167    -- Bug 4922099
10168    --
10169    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10170         (NVL(l_actual_upg_option, 'N') = 'O') OR
10171         (NVL(l_enc_upg_option, 'N') = 'O')
10172       )
10173    THEN
10174    NULL;
10175    --
10176    --
10177    
10178   l_ccid := AcctDerRule_4(
10179            p_application_id           => p_application_id
10180          , p_ae_header_id             => l_ae_header_id 
10181 , p_source_4 => p_source_4
10182          , x_transaction_coa_id       => l_adr_transaction_coa_id
10183          , x_accounting_coa_id        => l_adr_accounting_coa_id
10184          , x_value_type_code          => l_adr_value_type_code
10185          , p_side                     => 'NA'
10186    );
10187 
10188    xla_ae_lines_pkg.set_ccid(
10189     p_code_combination_id          => l_ccid
10190   , p_value_type_code              => l_adr_value_type_code
10191   , p_transaction_coa_id           => l_adr_transaction_coa_id
10192   , p_accounting_coa_id            => l_adr_accounting_coa_id
10193   , p_adr_code                     => 'CST_DEFAULT'
10194   , p_adr_type_code                => 'S'
10195   , p_component_type               => l_component_type
10196   , p_component_code               => l_component_code
10197   , p_component_type_code          => l_component_type_code
10198   , p_component_appl_id            => l_component_appl_id
10199   , p_amb_context_code             => l_amb_context_code
10200   , p_side                         => 'NA'
10201   );
10202 
10203 
10204    --
10205    --
10206    END IF;
10207 
10208        --
10209        -- Update the line information that should be overwritten
10210        --
10211        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
10212                                          p_header_num   => 1);
10213        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
10214 
10215        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
10216 
10217        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
10218           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
10219        END IF;
10220 
10221       --
10222       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
10223       --
10224       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
10225           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
10226       ELSE
10227           ---------------------------------------------------------------------------------------------------
10228           -- 4262811a Switch Sign
10229           ---------------------------------------------------------------------------------------------------
10230           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
10231           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10232                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10233           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10234                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10235           -- 5132302
10236           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
10237                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10238 
10239       END IF;
10240 
10241       -- 4955764
10242       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10243       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
10244 
10245 
10246       XLA_AE_LINES_PKG.ValidateCurrentLine;
10247       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10248 
10249       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10250                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
10251                ,p_balance_type_code => l_balance_type_code);
10252 
10253    END IF;
10254 
10255    -----------------------------------------------------------------------------------------
10256    -- 4262811 Multiperiod Accounting
10257    -----------------------------------------------------------------------------------------
10258      -- No MPA option is assigned.
10259 
10260 
10261 END IF;
10262 END IF;
10263 --
10264 
10265 --
10266 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10267    trace
10268       (p_msg      => 'END of AcctLineType_21'
10269       ,p_level    => C_LEVEL_PROCEDURE
10270       ,p_module   => l_log_module);
10271 END IF;
10272 --
10273 EXCEPTION
10274   WHEN xla_exceptions_pkg.application_exception THEN
10275       RAISE;
10276   WHEN OTHERS THEN
10277        xla_exceptions_pkg.raise_message
10278            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_21');
10279 END AcctLineType_21;
10280 --
10281 
10282 ---------------------------------------
10283 --
10284 -- PRIVATE FUNCTION
10285 --         AcctLineType_22
10286 --
10287 ---------------------------------------
10288 PROCEDURE AcctLineType_22 (
10289   p_application_id        IN NUMBER
10290  ,p_event_id              IN NUMBER
10291  ,p_calculate_acctd_flag  IN VARCHAR2
10292  ,p_calculate_g_l_flag    IN VARCHAR2
10293  ,p_actual_flag           IN OUT VARCHAR2
10294  ,p_balance_type_code     OUT VARCHAR2
10295  ,p_gain_or_loss_ref      OUT VARCHAR2
10296  
10297 --Cost Management Default Account
10298  , p_source_4            IN NUMBER
10299 --DISTRIBUTION_IDENTIFIER
10300  , p_source_11            IN NUMBER
10301 --Distribution Type
10302  , p_source_12            IN VARCHAR2
10303  , p_source_12_meaning    IN VARCHAR2
10304 --Entered Currency Code
10305  , p_source_15            IN VARCHAR2
10306 --Entered Amount
10307  , p_source_18            IN NUMBER
10308 --Currency Conversion Date
10309  , p_source_19            IN DATE
10310 --Currency Conversion Rate
10311  , p_source_20            IN NUMBER
10312 --Currency Conversion Type
10313  , p_source_21            IN VARCHAR2
10314 --Accounted Amount
10315  , p_source_22            IN NUMBER
10316 --Accounting Line Type
10317  , p_source_24            IN NUMBER
10318 )
10319 IS
10320 
10321 l_component_type              VARCHAR2(80);
10322 l_component_code              VARCHAR2(30);
10323 l_component_type_code         VARCHAR2(1);
10324 l_component_appl_id           INTEGER;
10325 l_amb_context_code            VARCHAR2(30);
10326 l_entity_code                 VARCHAR2(30);
10327 l_event_class_code            VARCHAR2(30);
10328 l_ae_header_id                NUMBER;
10329 l_event_type_code             VARCHAR2(30);
10330 l_line_definition_code        VARCHAR2(30);
10331 l_line_definition_owner_code  VARCHAR2(1);
10332 --
10333 -- adr variables
10334 l_segment                     VARCHAR2(30);
10335 l_ccid                        NUMBER;
10336 l_adr_transaction_coa_id      NUMBER;
10337 l_adr_accounting_coa_id       NUMBER;
10338 l_adr_flexfield_segment_code  VARCHAR2(30);
10339 l_adr_flex_value_set_id       NUMBER;
10340 l_adr_value_type_code         VARCHAR2(30);
10341 l_adr_value_combination_id    NUMBER;
10342 l_adr_value_segment_code      VARCHAR2(30);
10343 
10344 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
10345 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
10346 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
10347 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
10348 
10349 -- 4262811 Variables ------------------------------------------------------------------------------------------
10350 l_entered_amt_idx             NUMBER;
10351 l_accted_amt_idx              NUMBER;
10352 l_acc_rev_flag                VARCHAR2(1);
10353 l_accrual_line_num            NUMBER;
10354 l_tmp_amt                     NUMBER;
10355 l_acc_rev_natural_side_code   VARCHAR2(1);
10356 
10357 l_num_entries                 NUMBER;
10358 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
10359 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
10360 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
10361 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
10362 l_recog_line_1                NUMBER;
10363 l_recog_line_2                NUMBER;
10364 
10365 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
10366 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
10367 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
10368 
10369 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
10370 
10371 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
10372 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
10373 
10374 ---------------------------------------------------------------------------------------------------------------
10375 
10376 
10377 --
10378 -- bulk performance
10379 --
10380 l_balance_type_code           VARCHAR2(1);
10381 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
10382 l_log_module                  VARCHAR2(240);
10383 
10384 --
10385 -- Upgrade strategy
10386 --
10387 l_actual_upg_option           VARCHAR2(1);
10388 l_enc_upg_option           VARCHAR2(1);
10389 
10390 --
10391 BEGIN
10392 --
10393 IF g_log_enabled THEN
10394       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_22';
10395 END IF;
10396 --
10397 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10398 
10399       trace
10400          (p_msg      => 'BEGIN of AcctLineType_22'
10401          ,p_level    => C_LEVEL_PROCEDURE
10402          ,p_module   => l_log_module);
10403 
10404 END IF;
10405 --
10406 l_component_type             := 'AMB_JLT';
10407 l_component_code             := 'COST_UPDATE_ADJUSTMENT';
10408 l_component_type_code        := 'S';
10409 l_component_appl_id          :=  707;
10410 l_amb_context_code           := 'DEFAULT';
10411 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
10412 l_event_class_code           := 'WIP_COST_UPD';
10413 l_event_type_code            := 'WIP_COST_UPD_ALL';
10414 l_line_definition_owner_code := 'S';
10415 l_line_definition_code       := 'COST_UPDATE';
10416 --
10417 l_balance_type_code          := 'A';
10418 l_segment                     := NULL;
10419 l_ccid                        := NULL;
10420 l_adr_transaction_coa_id      := NULL;
10421 l_adr_accounting_coa_id       := NULL;
10422 l_adr_flexfield_segment_code  := NULL;
10423 l_adr_flex_value_set_id       := NULL;
10424 l_adr_value_type_code         := NULL;
10425 l_adr_value_combination_id    := NULL;
10426 l_adr_value_segment_code      := NULL;
10427 
10428 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
10429 l_bflow_class_code           := '';    -- 4219869 Business Flow
10430 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
10431 l_budgetary_control_flag     := 'N';
10432 
10433 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
10434 l_bflow_applied_to_amt       := NULL; -- 5132302
10435 l_entered_amt_idx            := NULL;          -- 4262811
10436 l_accted_amt_idx             := NULL;          -- 4262811
10437 l_acc_rev_flag               := NULL;          -- 4262811
10438 l_accrual_line_num           := NULL;          -- 4262811
10439 l_tmp_amt                    := NULL;          -- 4262811
10440 --
10441  
10442 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
10443     l_balance_type_code <> 'B' THEN
10444 IF NVL(p_source_24,9E125) =  2
10445  THEN 
10446 
10447    --
10448    XLA_AE_LINES_PKG.SetNewLine;
10449 
10450    p_balance_type_code          := l_balance_type_code;
10451    -- set the flag so later we will know whether the gain loss line needs to be created
10452    
10453    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
10454      p_actual_flag :='A';
10455    END IF;
10456 
10457    --
10458    -- bulk performance
10459    --
10460    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
10461                                       p_header_num   => 0); -- 4262811
10462    --
10463    -- set accounting line options
10464    --
10465    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
10466            p_natural_side_code          => 'D'
10467          , p_gain_or_loss_flag          => 'N'
10468          , p_gl_transfer_mode_code      => 'S'
10469          , p_acct_entry_type_code       => 'A'
10470          , p_switch_side_flag           => 'Y'
10471          , p_merge_duplicate_code       => 'N'
10472          );
10473    --
10474    l_acc_rev_natural_side_code := 'C';  -- 4262811
10475    -- 
10476    --
10477    -- set accounting line type info
10478    --
10479    xla_ae_lines_pkg.SetAcctLineType
10480       (p_component_type             => l_component_type
10481       ,p_event_type_code            => l_event_type_code
10482       ,p_line_definition_owner_code => l_line_definition_owner_code
10483       ,p_line_definition_code       => l_line_definition_code
10484       ,p_accounting_line_code       => l_component_code
10485       ,p_accounting_line_type_code  => l_component_type_code
10486       ,p_accounting_line_appl_id    => l_component_appl_id
10487       ,p_amb_context_code           => l_amb_context_code
10488       ,p_entity_code                => l_entity_code
10489       ,p_event_class_code           => l_event_class_code);
10490    --
10491    -- set accounting class
10492    --
10493    xla_ae_lines_pkg.SetAcctClass(
10494            p_accounting_class_code  => 'COST_UPDATE_ADJUSTMENT'
10495          , p_ae_header_id           => l_ae_header_id
10496          );
10497 
10498    --
10499    -- set rounding class
10500    --
10501    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
10502                       'COST_UPDATE_ADJUSTMENT';
10503 
10504    --
10505    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
10506    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
10507    --
10508    -- bulk performance
10509    --
10510    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
10511 
10512    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
10513       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
10514 
10515    -- 4955764
10516    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10517       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
10518 
10519    -- 4458381 Public Sector Enh
10520    
10521    --
10522    -- set accounting attributes for the line type
10523    --
10524    l_entered_amt_idx := 3;
10525    l_accted_amt_idx  := 8;
10526    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
10527    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
10528    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
10529    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
10530    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
10531    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
10532    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
10533    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
10534    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
10535    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
10536    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
10537    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
10538    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
10539    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
10540    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
10541    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
10542    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
10543 
10544    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
10545    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
10546 
10547    ---------------------------------------------------------------------------------------------------------------
10548    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
10549    ---------------------------------------------------------------------------------------------------------------
10550    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
10551 
10552    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10553    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10554 
10555    IF xla_accounting_cache_pkg.GetValueChar
10556          (p_source_code         => 'LEDGER_CATEGORY_CODE'
10557          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
10558    AND l_bflow_method_code = 'PRIOR_ENTRY'
10559 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
10560    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
10561          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
10562        )
10563    THEN
10564          xla_ae_lines_pkg.BflowUpgEntry
10565            (p_business_method_code    => l_bflow_method_code
10566            ,p_business_class_code     => l_bflow_class_code
10567            ,p_balance_type            => l_balance_type_code);
10568    ELSE
10569       NULL;
10570 -- No business flow processing for business flow method of NONE.
10571    END IF;
10572 
10573    --
10574    -- call analytical criteria
10575    --
10576    
10577    --
10578    -- call description
10579    --
10580    -- No description or it is inherited.
10581    --
10582    -- call ADRs
10583    -- Bug 4922099
10584    --
10585    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10586         (NVL(l_actual_upg_option, 'N') = 'O') OR
10587         (NVL(l_enc_upg_option, 'N') = 'O')
10588       )
10589    THEN
10590    NULL;
10591    --
10592    --
10593    
10594   l_ccid := AcctDerRule_4(
10595            p_application_id           => p_application_id
10596          , p_ae_header_id             => l_ae_header_id 
10597 , p_source_4 => p_source_4
10598          , x_transaction_coa_id       => l_adr_transaction_coa_id
10599          , x_accounting_coa_id        => l_adr_accounting_coa_id
10600          , x_value_type_code          => l_adr_value_type_code
10601          , p_side                     => 'NA'
10602    );
10603 
10604    xla_ae_lines_pkg.set_ccid(
10605     p_code_combination_id          => l_ccid
10606   , p_value_type_code              => l_adr_value_type_code
10607   , p_transaction_coa_id           => l_adr_transaction_coa_id
10608   , p_accounting_coa_id            => l_adr_accounting_coa_id
10609   , p_adr_code                     => 'CST_DEFAULT'
10610   , p_adr_type_code                => 'S'
10611   , p_component_type               => l_component_type
10612   , p_component_code               => l_component_code
10613   , p_component_type_code          => l_component_type_code
10614   , p_component_appl_id            => l_component_appl_id
10615   , p_amb_context_code             => l_amb_context_code
10616   , p_side                         => 'NA'
10617   );
10618 
10619 
10620    --
10621    --
10622    END IF;
10623    --
10624    -- Bug 4922099
10625    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
10626           (NVL(l_enc_upg_option, 'N') = 'O')
10627         ) AND
10628         (l_bflow_method_code = 'PRIOR_ENTRY')
10629       )
10630    THEN
10631       IF
10632       --
10633       1 = 2
10634       --
10635       THEN
10636       xla_accounting_err_pkg.build_message
10637                                     (p_appli_s_name            => 'XLA'
10638                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10639                                     ,p_token_1                 => 'LINE_NUMBER'
10640                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
10641                                     ,p_token_2                 => 'LINE_TYPE_NAME'
10642                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
10643                                                                              l_component_type
10644                                                                             ,l_component_code
10645                                                                             ,l_component_type_code
10646                                                                             ,l_component_appl_id
10647                                                                             ,l_amb_context_code
10648                                                                             ,l_entity_code
10649                                                                             ,l_event_class_code
10650                                                                            )
10651                                     ,p_token_3                 => 'OWNER'
10652                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
10653                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
10654                                                                           ,p_lookup_code    => l_component_type_code
10655                                                                          )
10656                                     ,p_token_4                 => 'PRODUCT_NAME'
10657                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
10658                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
10659                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
10660                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
10661                                     ,p_ae_header_id            =>  NULL
10662                                        );
10663 
10664         IF (C_LEVEL_ERROR>= g_log_level) THEN
10665                  trace
10666                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10667                       ,p_level    => C_LEVEL_ERROR
10668                       ,p_module   => l_log_module);
10669         END IF;
10670       END IF;
10671    END IF;
10672    --
10673    --
10674    ------------------------------------------------------------------------------------------------
10675    -- 4219869 Business Flow
10676    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
10677    -- Prior Entry.  Currently, the following code is always generated.
10678    ------------------------------------------------------------------------------------------------
10679    XLA_AE_LINES_PKG.ValidateCurrentLine;
10680 
10681    ------------------------------------------------------------------------------------
10682    -- 4219869 Business Flow
10683    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
10684    ------------------------------------------------------------------------------------
10685    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10686 
10687    ----------------------------------------------------------------------------------
10688    -- 4219869 Business Flow
10689    -- Update journal entry status -- Need to generate this within IF <condition>
10690    ----------------------------------------------------------------------------------
10691    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10692          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
10693          ,p_balance_type_code => l_balance_type_code
10694          );
10695 
10696    -------------------------------------------------------------------------------------------
10697    -- 4262811 - Generate the Accrual Reversal lines
10698    -------------------------------------------------------------------------------------------
10699    BEGIN
10700       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
10701                               (g_array_event(p_event_id).array_value_num('header_index'));
10702       IF l_acc_rev_flag IS NULL THEN
10703          l_acc_rev_flag := 'N';
10704       END IF;
10705    EXCEPTION
10706       WHEN OTHERS THEN
10707          l_acc_rev_flag := 'N';
10708    END;
10709    --
10710    IF (l_acc_rev_flag = 'Y') THEN
10711 
10712        -- 4645092  ------------------------------------------------------------------------------
10713        -- To allow MPA report to determine if it should generate report process
10714        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
10715        ------------------------------------------------------------------------------------------
10716 
10717        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
10718        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
10719    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
10720    -- call ADRs
10721    -- Bug 4922099
10722    --
10723    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10724         (NVL(l_actual_upg_option, 'N') = 'O') OR
10725         (NVL(l_enc_upg_option, 'N') = 'O')
10726       )
10727    THEN
10728    NULL;
10729    --
10730    --
10731    
10732   l_ccid := AcctDerRule_4(
10733            p_application_id           => p_application_id
10734          , p_ae_header_id             => l_ae_header_id 
10735 , p_source_4 => p_source_4
10736          , x_transaction_coa_id       => l_adr_transaction_coa_id
10737          , x_accounting_coa_id        => l_adr_accounting_coa_id
10738          , x_value_type_code          => l_adr_value_type_code
10739          , p_side                     => 'NA'
10740    );
10741 
10742    xla_ae_lines_pkg.set_ccid(
10743     p_code_combination_id          => l_ccid
10744   , p_value_type_code              => l_adr_value_type_code
10745   , p_transaction_coa_id           => l_adr_transaction_coa_id
10746   , p_accounting_coa_id            => l_adr_accounting_coa_id
10747   , p_adr_code                     => 'CST_DEFAULT'
10748   , p_adr_type_code                => 'S'
10749   , p_component_type               => l_component_type
10750   , p_component_code               => l_component_code
10751   , p_component_type_code          => l_component_type_code
10752   , p_component_appl_id            => l_component_appl_id
10753   , p_amb_context_code             => l_amb_context_code
10754   , p_side                         => 'NA'
10755   );
10756 
10757 
10758    --
10759    --
10760    END IF;
10761 
10762        --
10763        -- Update the line information that should be overwritten
10764        --
10765        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
10766                                          p_header_num   => 1);
10767        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
10768 
10769        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
10770 
10771        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
10772           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
10773        END IF;
10774 
10775       --
10776       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
10777       --
10778       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
10779           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
10780       ELSE
10781           ---------------------------------------------------------------------------------------------------
10782           -- 4262811a Switch Sign
10783           ---------------------------------------------------------------------------------------------------
10784           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
10785           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10786                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10787           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10788                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10789           -- 5132302
10790           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
10791                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10792 
10793       END IF;
10794 
10795       -- 4955764
10796       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10797       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
10798 
10799 
10800       XLA_AE_LINES_PKG.ValidateCurrentLine;
10801       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10802 
10803       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10804                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
10805                ,p_balance_type_code => l_balance_type_code);
10806 
10807    END IF;
10808 
10809    -----------------------------------------------------------------------------------------
10810    -- 4262811 Multiperiod Accounting
10811    -----------------------------------------------------------------------------------------
10812      -- No MPA option is assigned.
10813 
10814 
10815 END IF;
10816 END IF;
10817 --
10818 
10819 --
10820 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10821    trace
10822       (p_msg      => 'END of AcctLineType_22'
10823       ,p_level    => C_LEVEL_PROCEDURE
10824       ,p_module   => l_log_module);
10825 END IF;
10826 --
10827 EXCEPTION
10828   WHEN xla_exceptions_pkg.application_exception THEN
10829       RAISE;
10830   WHEN OTHERS THEN
10831        xla_exceptions_pkg.raise_message
10832            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_22');
10833 END AcctLineType_22;
10834 --
10835 
10836 ---------------------------------------
10837 --
10838 -- PRIVATE FUNCTION
10839 --         AcctLineType_23
10840 --
10841 ---------------------------------------
10842 PROCEDURE AcctLineType_23 (
10843   p_application_id        IN NUMBER
10844  ,p_event_id              IN NUMBER
10845  ,p_calculate_acctd_flag  IN VARCHAR2
10846  ,p_calculate_g_l_flag    IN VARCHAR2
10847  ,p_actual_flag           IN OUT VARCHAR2
10848  ,p_balance_type_code     OUT VARCHAR2
10849  ,p_gain_or_loss_ref      OUT VARCHAR2
10850  
10851 --Cost Management Default Account
10852  , p_source_4            IN NUMBER
10853 --DISTRIBUTION_IDENTIFIER
10854  , p_source_11            IN NUMBER
10855 --Distribution Type
10856  , p_source_12            IN VARCHAR2
10857  , p_source_12_meaning    IN VARCHAR2
10858 --Entered Currency Code
10859  , p_source_15            IN VARCHAR2
10860 --Entered Amount
10861  , p_source_18            IN NUMBER
10862 --Currency Conversion Date
10863  , p_source_19            IN DATE
10864 --Currency Conversion Rate
10865  , p_source_20            IN NUMBER
10866 --Currency Conversion Type
10867  , p_source_21            IN VARCHAR2
10868 --Accounted Amount
10869  , p_source_22            IN NUMBER
10870 --Accounting Line Type
10871  , p_source_24            IN NUMBER
10872 )
10873 IS
10874 
10875 l_component_type              VARCHAR2(80);
10876 l_component_code              VARCHAR2(30);
10877 l_component_type_code         VARCHAR2(1);
10878 l_component_appl_id           INTEGER;
10879 l_amb_context_code            VARCHAR2(30);
10880 l_entity_code                 VARCHAR2(30);
10881 l_event_class_code            VARCHAR2(30);
10882 l_ae_header_id                NUMBER;
10883 l_event_type_code             VARCHAR2(30);
10884 l_line_definition_code        VARCHAR2(30);
10885 l_line_definition_owner_code  VARCHAR2(1);
10886 --
10887 -- adr variables
10888 l_segment                     VARCHAR2(30);
10889 l_ccid                        NUMBER;
10890 l_adr_transaction_coa_id      NUMBER;
10891 l_adr_accounting_coa_id       NUMBER;
10892 l_adr_flexfield_segment_code  VARCHAR2(30);
10893 l_adr_flex_value_set_id       NUMBER;
10894 l_adr_value_type_code         VARCHAR2(30);
10895 l_adr_value_combination_id    NUMBER;
10896 l_adr_value_segment_code      VARCHAR2(30);
10897 
10898 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
10899 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
10900 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
10901 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
10902 
10903 -- 4262811 Variables ------------------------------------------------------------------------------------------
10904 l_entered_amt_idx             NUMBER;
10905 l_accted_amt_idx              NUMBER;
10906 l_acc_rev_flag                VARCHAR2(1);
10907 l_accrual_line_num            NUMBER;
10908 l_tmp_amt                     NUMBER;
10909 l_acc_rev_natural_side_code   VARCHAR2(1);
10910 
10911 l_num_entries                 NUMBER;
10912 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
10913 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
10914 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
10915 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
10916 l_recog_line_1                NUMBER;
10917 l_recog_line_2                NUMBER;
10918 
10919 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
10920 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
10921 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
10922 
10923 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
10924 
10925 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
10926 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
10927 
10928 ---------------------------------------------------------------------------------------------------------------
10929 
10930 
10931 --
10932 -- bulk performance
10933 --
10934 l_balance_type_code           VARCHAR2(1);
10935 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
10936 l_log_module                  VARCHAR2(240);
10937 
10938 --
10939 -- Upgrade strategy
10940 --
10941 l_actual_upg_option           VARCHAR2(1);
10942 l_enc_upg_option           VARCHAR2(1);
10943 
10944 --
10945 BEGIN
10946 --
10947 IF g_log_enabled THEN
10948       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_23';
10949 END IF;
10950 --
10951 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10952 
10953       trace
10954          (p_msg      => 'BEGIN of AcctLineType_23'
10955          ,p_level    => C_LEVEL_PROCEDURE
10956          ,p_module   => l_log_module);
10957 
10958 END IF;
10959 --
10960 l_component_type             := 'AMB_JLT';
10961 l_component_code             := 'COST_UPDATE_ADJUSTMENT';
10962 l_component_type_code        := 'S';
10963 l_component_appl_id          :=  707;
10964 l_amb_context_code           := 'DEFAULT';
10965 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
10966 l_event_class_code           := 'USER_DEFINE';
10967 l_event_type_code            := 'UIPV_TXFR';
10968 l_line_definition_owner_code := 'S';
10969 l_line_definition_code       := 'USER_IPV_TXFR';
10970 --
10971 l_balance_type_code          := 'A';
10972 l_segment                     := NULL;
10973 l_ccid                        := NULL;
10974 l_adr_transaction_coa_id      := NULL;
10975 l_adr_accounting_coa_id       := NULL;
10976 l_adr_flexfield_segment_code  := NULL;
10977 l_adr_flex_value_set_id       := NULL;
10978 l_adr_value_type_code         := NULL;
10979 l_adr_value_combination_id    := NULL;
10980 l_adr_value_segment_code      := NULL;
10981 
10982 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
10983 l_bflow_class_code           := '';    -- 4219869 Business Flow
10984 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
10985 l_budgetary_control_flag     := 'N';
10986 
10987 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
10988 l_bflow_applied_to_amt       := NULL; -- 5132302
10989 l_entered_amt_idx            := NULL;          -- 4262811
10990 l_accted_amt_idx             := NULL;          -- 4262811
10991 l_acc_rev_flag               := NULL;          -- 4262811
10992 l_accrual_line_num           := NULL;          -- 4262811
10993 l_tmp_amt                    := NULL;          -- 4262811
10994 --
10995  
10996 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
10997     l_balance_type_code <> 'B' THEN
10998 IF NVL(p_source_24,9E125) =  2
10999  THEN 
11000 
11001    --
11002    XLA_AE_LINES_PKG.SetNewLine;
11003 
11004    p_balance_type_code          := l_balance_type_code;
11005    -- set the flag so later we will know whether the gain loss line needs to be created
11006    
11007    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
11008      p_actual_flag :='A';
11009    END IF;
11010 
11011    --
11012    -- bulk performance
11013    --
11014    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
11015                                       p_header_num   => 0); -- 4262811
11016    --
11017    -- set accounting line options
11018    --
11019    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
11020            p_natural_side_code          => 'D'
11021          , p_gain_or_loss_flag          => 'N'
11022          , p_gl_transfer_mode_code      => 'S'
11023          , p_acct_entry_type_code       => 'A'
11024          , p_switch_side_flag           => 'Y'
11025          , p_merge_duplicate_code       => 'N'
11026          );
11027    --
11028    l_acc_rev_natural_side_code := 'C';  -- 4262811
11029    -- 
11030    --
11031    -- set accounting line type info
11032    --
11033    xla_ae_lines_pkg.SetAcctLineType
11034       (p_component_type             => l_component_type
11035       ,p_event_type_code            => l_event_type_code
11036       ,p_line_definition_owner_code => l_line_definition_owner_code
11037       ,p_line_definition_code       => l_line_definition_code
11038       ,p_accounting_line_code       => l_component_code
11039       ,p_accounting_line_type_code  => l_component_type_code
11040       ,p_accounting_line_appl_id    => l_component_appl_id
11041       ,p_amb_context_code           => l_amb_context_code
11042       ,p_entity_code                => l_entity_code
11043       ,p_event_class_code           => l_event_class_code);
11044    --
11045    -- set accounting class
11046    --
11047    xla_ae_lines_pkg.SetAcctClass(
11048            p_accounting_class_code  => 'COST_UPDATE_ADJUSTMENT'
11049          , p_ae_header_id           => l_ae_header_id
11050          );
11051 
11052    --
11053    -- set rounding class
11054    --
11055    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
11056                       'COST_UPDATE_ADJUSTMENT';
11057 
11058    --
11059    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
11060    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
11061    --
11062    -- bulk performance
11063    --
11064    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
11065 
11066    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
11067       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
11068 
11069    -- 4955764
11070    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11071       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
11072 
11073    -- 4458381 Public Sector Enh
11074    
11075    --
11076    -- set accounting attributes for the line type
11077    --
11078    l_entered_amt_idx := 3;
11079    l_accted_amt_idx  := 8;
11080    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
11081    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
11082    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
11083    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
11084    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
11085    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
11086    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
11087    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
11088    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
11089    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
11090    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
11091    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
11092    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
11093    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
11094    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
11095    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
11096    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
11097 
11098    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
11099    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
11100 
11101    ---------------------------------------------------------------------------------------------------------------
11102    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
11103    ---------------------------------------------------------------------------------------------------------------
11104    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
11105 
11106    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11107    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11108 
11109    IF xla_accounting_cache_pkg.GetValueChar
11110          (p_source_code         => 'LEDGER_CATEGORY_CODE'
11111          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
11112    AND l_bflow_method_code = 'PRIOR_ENTRY'
11113 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
11114    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
11115          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
11116        )
11117    THEN
11118          xla_ae_lines_pkg.BflowUpgEntry
11119            (p_business_method_code    => l_bflow_method_code
11120            ,p_business_class_code     => l_bflow_class_code
11121            ,p_balance_type            => l_balance_type_code);
11122    ELSE
11123       NULL;
11124 -- No business flow processing for business flow method of NONE.
11125    END IF;
11126 
11127    --
11128    -- call analytical criteria
11129    --
11130    
11131    --
11132    -- call description
11133    --
11134    -- No description or it is inherited.
11135    --
11136    -- call ADRs
11137    -- Bug 4922099
11138    --
11139    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11140         (NVL(l_actual_upg_option, 'N') = 'O') OR
11141         (NVL(l_enc_upg_option, 'N') = 'O')
11142       )
11143    THEN
11144    NULL;
11145    --
11146    --
11147    
11148   l_ccid := AcctDerRule_4(
11149            p_application_id           => p_application_id
11150          , p_ae_header_id             => l_ae_header_id 
11151 , p_source_4 => p_source_4
11152          , x_transaction_coa_id       => l_adr_transaction_coa_id
11153          , x_accounting_coa_id        => l_adr_accounting_coa_id
11154          , x_value_type_code          => l_adr_value_type_code
11155          , p_side                     => 'NA'
11156    );
11157 
11158    xla_ae_lines_pkg.set_ccid(
11159     p_code_combination_id          => l_ccid
11160   , p_value_type_code              => l_adr_value_type_code
11161   , p_transaction_coa_id           => l_adr_transaction_coa_id
11162   , p_accounting_coa_id            => l_adr_accounting_coa_id
11163   , p_adr_code                     => 'CST_DEFAULT'
11164   , p_adr_type_code                => 'S'
11165   , p_component_type               => l_component_type
11166   , p_component_code               => l_component_code
11167   , p_component_type_code          => l_component_type_code
11168   , p_component_appl_id            => l_component_appl_id
11169   , p_amb_context_code             => l_amb_context_code
11170   , p_side                         => 'NA'
11171   );
11172 
11173 
11174    --
11175    --
11176    END IF;
11177    --
11178    -- Bug 4922099
11179    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
11180           (NVL(l_enc_upg_option, 'N') = 'O')
11181         ) AND
11182         (l_bflow_method_code = 'PRIOR_ENTRY')
11183       )
11184    THEN
11185       IF
11186       --
11187       1 = 2
11188       --
11189       THEN
11190       xla_accounting_err_pkg.build_message
11191                                     (p_appli_s_name            => 'XLA'
11192                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11193                                     ,p_token_1                 => 'LINE_NUMBER'
11194                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
11195                                     ,p_token_2                 => 'LINE_TYPE_NAME'
11196                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
11197                                                                              l_component_type
11198                                                                             ,l_component_code
11199                                                                             ,l_component_type_code
11200                                                                             ,l_component_appl_id
11201                                                                             ,l_amb_context_code
11202                                                                             ,l_entity_code
11203                                                                             ,l_event_class_code
11204                                                                            )
11205                                     ,p_token_3                 => 'OWNER'
11206                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
11207                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
11208                                                                           ,p_lookup_code    => l_component_type_code
11209                                                                          )
11210                                     ,p_token_4                 => 'PRODUCT_NAME'
11211                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
11212                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
11213                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
11214                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
11215                                     ,p_ae_header_id            =>  NULL
11216                                        );
11217 
11218         IF (C_LEVEL_ERROR>= g_log_level) THEN
11219                  trace
11220                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11221                       ,p_level    => C_LEVEL_ERROR
11222                       ,p_module   => l_log_module);
11223         END IF;
11224       END IF;
11225    END IF;
11226    --
11227    --
11228    ------------------------------------------------------------------------------------------------
11229    -- 4219869 Business Flow
11230    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
11231    -- Prior Entry.  Currently, the following code is always generated.
11232    ------------------------------------------------------------------------------------------------
11233    XLA_AE_LINES_PKG.ValidateCurrentLine;
11234 
11235    ------------------------------------------------------------------------------------
11236    -- 4219869 Business Flow
11237    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
11238    ------------------------------------------------------------------------------------
11239    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11240 
11241    ----------------------------------------------------------------------------------
11242    -- 4219869 Business Flow
11243    -- Update journal entry status -- Need to generate this within IF <condition>
11244    ----------------------------------------------------------------------------------
11245    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11246          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
11247          ,p_balance_type_code => l_balance_type_code
11248          );
11249 
11250    -------------------------------------------------------------------------------------------
11251    -- 4262811 - Generate the Accrual Reversal lines
11252    -------------------------------------------------------------------------------------------
11253    BEGIN
11254       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
11255                               (g_array_event(p_event_id).array_value_num('header_index'));
11256       IF l_acc_rev_flag IS NULL THEN
11257          l_acc_rev_flag := 'N';
11258       END IF;
11259    EXCEPTION
11260       WHEN OTHERS THEN
11261          l_acc_rev_flag := 'N';
11262    END;
11263    --
11264    IF (l_acc_rev_flag = 'Y') THEN
11265 
11266        -- 4645092  ------------------------------------------------------------------------------
11267        -- To allow MPA report to determine if it should generate report process
11268        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
11269        ------------------------------------------------------------------------------------------
11270 
11271        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
11272        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
11273    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
11274    -- call ADRs
11275    -- Bug 4922099
11276    --
11277    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11278         (NVL(l_actual_upg_option, 'N') = 'O') OR
11279         (NVL(l_enc_upg_option, 'N') = 'O')
11280       )
11281    THEN
11282    NULL;
11283    --
11284    --
11285    
11286   l_ccid := AcctDerRule_4(
11287            p_application_id           => p_application_id
11288          , p_ae_header_id             => l_ae_header_id 
11289 , p_source_4 => p_source_4
11290          , x_transaction_coa_id       => l_adr_transaction_coa_id
11291          , x_accounting_coa_id        => l_adr_accounting_coa_id
11292          , x_value_type_code          => l_adr_value_type_code
11293          , p_side                     => 'NA'
11294    );
11295 
11296    xla_ae_lines_pkg.set_ccid(
11297     p_code_combination_id          => l_ccid
11298   , p_value_type_code              => l_adr_value_type_code
11299   , p_transaction_coa_id           => l_adr_transaction_coa_id
11300   , p_accounting_coa_id            => l_adr_accounting_coa_id
11301   , p_adr_code                     => 'CST_DEFAULT'
11302   , p_adr_type_code                => 'S'
11303   , p_component_type               => l_component_type
11304   , p_component_code               => l_component_code
11305   , p_component_type_code          => l_component_type_code
11306   , p_component_appl_id            => l_component_appl_id
11307   , p_amb_context_code             => l_amb_context_code
11308   , p_side                         => 'NA'
11309   );
11310 
11311 
11312    --
11313    --
11314    END IF;
11315 
11316        --
11317        -- Update the line information that should be overwritten
11318        --
11319        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
11320                                          p_header_num   => 1);
11321        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
11322 
11323        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
11324 
11325        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
11326           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
11327        END IF;
11328 
11329       --
11330       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
11331       --
11332       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
11333           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
11334       ELSE
11335           ---------------------------------------------------------------------------------------------------
11336           -- 4262811a Switch Sign
11337           ---------------------------------------------------------------------------------------------------
11338           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
11339           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11340                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11341           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11342                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11343           -- 5132302
11344           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
11345                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11346 
11347       END IF;
11348 
11349       -- 4955764
11350       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11351       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
11352 
11353 
11354       XLA_AE_LINES_PKG.ValidateCurrentLine;
11355       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11356 
11357       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11358                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
11359                ,p_balance_type_code => l_balance_type_code);
11360 
11361    END IF;
11362 
11363    -----------------------------------------------------------------------------------------
11364    -- 4262811 Multiperiod Accounting
11365    -----------------------------------------------------------------------------------------
11366      -- No MPA option is assigned.
11367 
11368 
11369 END IF;
11370 END IF;
11371 --
11372 
11373 --
11374 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11375    trace
11376       (p_msg      => 'END of AcctLineType_23'
11377       ,p_level    => C_LEVEL_PROCEDURE
11378       ,p_module   => l_log_module);
11379 END IF;
11380 --
11381 EXCEPTION
11382   WHEN xla_exceptions_pkg.application_exception THEN
11383       RAISE;
11384   WHEN OTHERS THEN
11385        xla_exceptions_pkg.raise_message
11386            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_23');
11387 END AcctLineType_23;
11388 --
11389 
11390 ---------------------------------------
11391 --
11392 -- PRIVATE FUNCTION
11393 --         AcctLineType_24
11394 --
11395 ---------------------------------------
11396 PROCEDURE AcctLineType_24 (
11397   p_application_id        IN NUMBER
11398  ,p_event_id              IN NUMBER
11399  ,p_calculate_acctd_flag  IN VARCHAR2
11400  ,p_calculate_g_l_flag    IN VARCHAR2
11401  ,p_actual_flag           IN OUT VARCHAR2
11402  ,p_balance_type_code     OUT VARCHAR2
11403  ,p_gain_or_loss_ref      OUT VARCHAR2
11404  
11405 --Cost Management Default Account
11406  , p_source_4            IN NUMBER
11407 --DISTRIBUTION_IDENTIFIER
11408  , p_source_11            IN NUMBER
11409 --Distribution Type
11410  , p_source_12            IN VARCHAR2
11411  , p_source_12_meaning    IN VARCHAR2
11412 --Entered Currency Code
11413  , p_source_15            IN VARCHAR2
11414 --Entered Amount
11415  , p_source_18            IN NUMBER
11416 --Currency Conversion Date
11417  , p_source_19            IN DATE
11418 --Currency Conversion Rate
11419  , p_source_20            IN NUMBER
11420 --Currency Conversion Type
11421  , p_source_21            IN VARCHAR2
11422 --Accounted Amount
11423  , p_source_22            IN NUMBER
11424 --Accounting Line Type
11425  , p_source_24            IN NUMBER
11426 )
11427 IS
11428 
11429 l_component_type              VARCHAR2(80);
11430 l_component_code              VARCHAR2(30);
11431 l_component_type_code         VARCHAR2(1);
11432 l_component_appl_id           INTEGER;
11433 l_amb_context_code            VARCHAR2(30);
11434 l_entity_code                 VARCHAR2(30);
11435 l_event_class_code            VARCHAR2(30);
11436 l_ae_header_id                NUMBER;
11437 l_event_type_code             VARCHAR2(30);
11438 l_line_definition_code        VARCHAR2(30);
11439 l_line_definition_owner_code  VARCHAR2(1);
11440 --
11441 -- adr variables
11442 l_segment                     VARCHAR2(30);
11443 l_ccid                        NUMBER;
11444 l_adr_transaction_coa_id      NUMBER;
11445 l_adr_accounting_coa_id       NUMBER;
11446 l_adr_flexfield_segment_code  VARCHAR2(30);
11447 l_adr_flex_value_set_id       NUMBER;
11448 l_adr_value_type_code         VARCHAR2(30);
11449 l_adr_value_combination_id    NUMBER;
11450 l_adr_value_segment_code      VARCHAR2(30);
11451 
11452 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
11453 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
11454 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
11455 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
11456 
11457 -- 4262811 Variables ------------------------------------------------------------------------------------------
11458 l_entered_amt_idx             NUMBER;
11459 l_accted_amt_idx              NUMBER;
11460 l_acc_rev_flag                VARCHAR2(1);
11461 l_accrual_line_num            NUMBER;
11462 l_tmp_amt                     NUMBER;
11463 l_acc_rev_natural_side_code   VARCHAR2(1);
11464 
11465 l_num_entries                 NUMBER;
11466 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
11467 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
11468 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
11469 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
11470 l_recog_line_1                NUMBER;
11471 l_recog_line_2                NUMBER;
11472 
11473 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
11474 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
11475 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
11476 
11477 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
11478 
11479 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
11480 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
11481 
11482 ---------------------------------------------------------------------------------------------------------------
11483 
11484 
11485 --
11486 -- bulk performance
11487 --
11488 l_balance_type_code           VARCHAR2(1);
11489 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
11490 l_log_module                  VARCHAR2(240);
11491 
11492 --
11493 -- Upgrade strategy
11494 --
11495 l_actual_upg_option           VARCHAR2(1);
11496 l_enc_upg_option           VARCHAR2(1);
11497 
11498 --
11499 BEGIN
11500 --
11501 IF g_log_enabled THEN
11502       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_24';
11503 END IF;
11504 --
11505 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11506 
11507       trace
11508          (p_msg      => 'BEGIN of AcctLineType_24'
11509          ,p_level    => C_LEVEL_PROCEDURE
11510          ,p_module   => l_log_module);
11511 
11512 END IF;
11513 --
11514 l_component_type             := 'AMB_JLT';
11515 l_component_code             := 'COST_UPDATE_ADJUSTMENT';
11516 l_component_type_code        := 'S';
11517 l_component_appl_id          :=  707;
11518 l_amb_context_code           := 'DEFAULT';
11519 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
11520 l_event_class_code           := 'USER_DEFINE';
11521 l_event_type_code            := 'UAVG_COST_UPD';
11522 l_line_definition_owner_code := 'S';
11523 l_line_definition_code       := 'USER_COST_UPD';
11524 --
11525 l_balance_type_code          := 'A';
11526 l_segment                     := NULL;
11527 l_ccid                        := NULL;
11528 l_adr_transaction_coa_id      := NULL;
11529 l_adr_accounting_coa_id       := NULL;
11530 l_adr_flexfield_segment_code  := NULL;
11531 l_adr_flex_value_set_id       := NULL;
11532 l_adr_value_type_code         := NULL;
11533 l_adr_value_combination_id    := NULL;
11534 l_adr_value_segment_code      := NULL;
11535 
11536 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
11537 l_bflow_class_code           := '';    -- 4219869 Business Flow
11538 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
11539 l_budgetary_control_flag     := 'N';
11540 
11541 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
11542 l_bflow_applied_to_amt       := NULL; -- 5132302
11543 l_entered_amt_idx            := NULL;          -- 4262811
11544 l_accted_amt_idx             := NULL;          -- 4262811
11545 l_acc_rev_flag               := NULL;          -- 4262811
11546 l_accrual_line_num           := NULL;          -- 4262811
11547 l_tmp_amt                    := NULL;          -- 4262811
11548 --
11549  
11550 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
11551     l_balance_type_code <> 'B' THEN
11552 IF NVL(p_source_24,9E125) =  2
11553  THEN 
11554 
11555    --
11556    XLA_AE_LINES_PKG.SetNewLine;
11557 
11558    p_balance_type_code          := l_balance_type_code;
11559    -- set the flag so later we will know whether the gain loss line needs to be created
11560    
11561    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
11562      p_actual_flag :='A';
11563    END IF;
11564 
11565    --
11566    -- bulk performance
11567    --
11568    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
11569                                       p_header_num   => 0); -- 4262811
11570    --
11571    -- set accounting line options
11572    --
11573    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
11574            p_natural_side_code          => 'D'
11575          , p_gain_or_loss_flag          => 'N'
11576          , p_gl_transfer_mode_code      => 'S'
11577          , p_acct_entry_type_code       => 'A'
11578          , p_switch_side_flag           => 'Y'
11579          , p_merge_duplicate_code       => 'N'
11580          );
11581    --
11582    l_acc_rev_natural_side_code := 'C';  -- 4262811
11583    -- 
11584    --
11585    -- set accounting line type info
11586    --
11587    xla_ae_lines_pkg.SetAcctLineType
11588       (p_component_type             => l_component_type
11589       ,p_event_type_code            => l_event_type_code
11590       ,p_line_definition_owner_code => l_line_definition_owner_code
11591       ,p_line_definition_code       => l_line_definition_code
11592       ,p_accounting_line_code       => l_component_code
11593       ,p_accounting_line_type_code  => l_component_type_code
11594       ,p_accounting_line_appl_id    => l_component_appl_id
11595       ,p_amb_context_code           => l_amb_context_code
11596       ,p_entity_code                => l_entity_code
11597       ,p_event_class_code           => l_event_class_code);
11598    --
11599    -- set accounting class
11600    --
11601    xla_ae_lines_pkg.SetAcctClass(
11602            p_accounting_class_code  => 'COST_UPDATE_ADJUSTMENT'
11603          , p_ae_header_id           => l_ae_header_id
11604          );
11605 
11606    --
11607    -- set rounding class
11608    --
11609    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
11610                       'COST_UPDATE_ADJUSTMENT';
11611 
11612    --
11613    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
11614    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
11615    --
11616    -- bulk performance
11617    --
11618    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
11619 
11620    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
11621       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
11622 
11623    -- 4955764
11624    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11625       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
11626 
11627    -- 4458381 Public Sector Enh
11628    
11629    --
11630    -- set accounting attributes for the line type
11631    --
11632    l_entered_amt_idx := 3;
11633    l_accted_amt_idx  := 8;
11634    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
11635    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
11636    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
11637    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
11638    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
11639    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
11640    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
11641    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
11642    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
11643    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
11644    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
11645    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
11646    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
11647    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
11648    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
11649    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
11650    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
11651 
11652    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
11653    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
11654 
11655    ---------------------------------------------------------------------------------------------------------------
11656    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
11657    ---------------------------------------------------------------------------------------------------------------
11658    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
11659 
11660    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11661    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11662 
11663    IF xla_accounting_cache_pkg.GetValueChar
11664          (p_source_code         => 'LEDGER_CATEGORY_CODE'
11665          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
11666    AND l_bflow_method_code = 'PRIOR_ENTRY'
11667 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
11668    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
11669          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
11670        )
11671    THEN
11672          xla_ae_lines_pkg.BflowUpgEntry
11673            (p_business_method_code    => l_bflow_method_code
11674            ,p_business_class_code     => l_bflow_class_code
11675            ,p_balance_type            => l_balance_type_code);
11676    ELSE
11677       NULL;
11678 -- No business flow processing for business flow method of NONE.
11679    END IF;
11680 
11681    --
11682    -- call analytical criteria
11683    --
11684    
11685    --
11686    -- call description
11687    --
11688    -- No description or it is inherited.
11689    --
11690    -- call ADRs
11691    -- Bug 4922099
11692    --
11693    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11694         (NVL(l_actual_upg_option, 'N') = 'O') OR
11695         (NVL(l_enc_upg_option, 'N') = 'O')
11696       )
11697    THEN
11698    NULL;
11699    --
11700    --
11701    
11702   l_ccid := AcctDerRule_4(
11703            p_application_id           => p_application_id
11704          , p_ae_header_id             => l_ae_header_id 
11705 , p_source_4 => p_source_4
11706          , x_transaction_coa_id       => l_adr_transaction_coa_id
11707          , x_accounting_coa_id        => l_adr_accounting_coa_id
11708          , x_value_type_code          => l_adr_value_type_code
11709          , p_side                     => 'NA'
11710    );
11711 
11712    xla_ae_lines_pkg.set_ccid(
11713     p_code_combination_id          => l_ccid
11714   , p_value_type_code              => l_adr_value_type_code
11715   , p_transaction_coa_id           => l_adr_transaction_coa_id
11716   , p_accounting_coa_id            => l_adr_accounting_coa_id
11717   , p_adr_code                     => 'CST_DEFAULT'
11718   , p_adr_type_code                => 'S'
11719   , p_component_type               => l_component_type
11720   , p_component_code               => l_component_code
11721   , p_component_type_code          => l_component_type_code
11722   , p_component_appl_id            => l_component_appl_id
11723   , p_amb_context_code             => l_amb_context_code
11724   , p_side                         => 'NA'
11725   );
11726 
11727 
11728    --
11729    --
11730    END IF;
11731    --
11732    -- Bug 4922099
11733    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
11734           (NVL(l_enc_upg_option, 'N') = 'O')
11735         ) AND
11736         (l_bflow_method_code = 'PRIOR_ENTRY')
11737       )
11738    THEN
11739       IF
11740       --
11741       1 = 2
11742       --
11743       THEN
11744       xla_accounting_err_pkg.build_message
11745                                     (p_appli_s_name            => 'XLA'
11746                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11747                                     ,p_token_1                 => 'LINE_NUMBER'
11748                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
11749                                     ,p_token_2                 => 'LINE_TYPE_NAME'
11750                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
11751                                                                              l_component_type
11752                                                                             ,l_component_code
11753                                                                             ,l_component_type_code
11754                                                                             ,l_component_appl_id
11755                                                                             ,l_amb_context_code
11756                                                                             ,l_entity_code
11757                                                                             ,l_event_class_code
11758                                                                            )
11759                                     ,p_token_3                 => 'OWNER'
11760                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
11761                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
11762                                                                           ,p_lookup_code    => l_component_type_code
11763                                                                          )
11764                                     ,p_token_4                 => 'PRODUCT_NAME'
11765                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
11766                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
11767                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
11768                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
11769                                     ,p_ae_header_id            =>  NULL
11770                                        );
11771 
11772         IF (C_LEVEL_ERROR>= g_log_level) THEN
11773                  trace
11774                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11775                       ,p_level    => C_LEVEL_ERROR
11776                       ,p_module   => l_log_module);
11777         END IF;
11778       END IF;
11779    END IF;
11780    --
11781    --
11782    ------------------------------------------------------------------------------------------------
11783    -- 4219869 Business Flow
11784    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
11785    -- Prior Entry.  Currently, the following code is always generated.
11786    ------------------------------------------------------------------------------------------------
11787    XLA_AE_LINES_PKG.ValidateCurrentLine;
11788 
11789    ------------------------------------------------------------------------------------
11790    -- 4219869 Business Flow
11791    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
11792    ------------------------------------------------------------------------------------
11793    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11794 
11795    ----------------------------------------------------------------------------------
11796    -- 4219869 Business Flow
11797    -- Update journal entry status -- Need to generate this within IF <condition>
11798    ----------------------------------------------------------------------------------
11799    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11800          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
11801          ,p_balance_type_code => l_balance_type_code
11802          );
11803 
11804    -------------------------------------------------------------------------------------------
11805    -- 4262811 - Generate the Accrual Reversal lines
11806    -------------------------------------------------------------------------------------------
11807    BEGIN
11808       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
11809                               (g_array_event(p_event_id).array_value_num('header_index'));
11810       IF l_acc_rev_flag IS NULL THEN
11811          l_acc_rev_flag := 'N';
11812       END IF;
11813    EXCEPTION
11814       WHEN OTHERS THEN
11815          l_acc_rev_flag := 'N';
11816    END;
11817    --
11818    IF (l_acc_rev_flag = 'Y') THEN
11819 
11820        -- 4645092  ------------------------------------------------------------------------------
11821        -- To allow MPA report to determine if it should generate report process
11822        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
11823        ------------------------------------------------------------------------------------------
11824 
11825        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
11826        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
11827    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
11828    -- call ADRs
11829    -- Bug 4922099
11830    --
11831    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11832         (NVL(l_actual_upg_option, 'N') = 'O') OR
11833         (NVL(l_enc_upg_option, 'N') = 'O')
11834       )
11835    THEN
11836    NULL;
11837    --
11838    --
11839    
11840   l_ccid := AcctDerRule_4(
11841            p_application_id           => p_application_id
11842          , p_ae_header_id             => l_ae_header_id 
11843 , p_source_4 => p_source_4
11844          , x_transaction_coa_id       => l_adr_transaction_coa_id
11845          , x_accounting_coa_id        => l_adr_accounting_coa_id
11846          , x_value_type_code          => l_adr_value_type_code
11847          , p_side                     => 'NA'
11848    );
11849 
11850    xla_ae_lines_pkg.set_ccid(
11851     p_code_combination_id          => l_ccid
11852   , p_value_type_code              => l_adr_value_type_code
11853   , p_transaction_coa_id           => l_adr_transaction_coa_id
11854   , p_accounting_coa_id            => l_adr_accounting_coa_id
11855   , p_adr_code                     => 'CST_DEFAULT'
11856   , p_adr_type_code                => 'S'
11857   , p_component_type               => l_component_type
11858   , p_component_code               => l_component_code
11859   , p_component_type_code          => l_component_type_code
11860   , p_component_appl_id            => l_component_appl_id
11861   , p_amb_context_code             => l_amb_context_code
11862   , p_side                         => 'NA'
11863   );
11864 
11865 
11866    --
11867    --
11868    END IF;
11869 
11870        --
11871        -- Update the line information that should be overwritten
11872        --
11873        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
11874                                          p_header_num   => 1);
11875        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
11876 
11877        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
11878 
11879        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
11880           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
11881        END IF;
11882 
11883       --
11884       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
11885       --
11886       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
11887           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
11888       ELSE
11889           ---------------------------------------------------------------------------------------------------
11890           -- 4262811a Switch Sign
11891           ---------------------------------------------------------------------------------------------------
11892           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
11893           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11894                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11895           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11896                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11897           -- 5132302
11898           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
11899                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11900 
11901       END IF;
11902 
11903       -- 4955764
11904       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11905       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
11906 
11907 
11908       XLA_AE_LINES_PKG.ValidateCurrentLine;
11909       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11910 
11911       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11912                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
11913                ,p_balance_type_code => l_balance_type_code);
11914 
11915    END IF;
11916 
11917    -----------------------------------------------------------------------------------------
11918    -- 4262811 Multiperiod Accounting
11919    -----------------------------------------------------------------------------------------
11920      -- No MPA option is assigned.
11921 
11922 
11923 END IF;
11924 END IF;
11925 --
11926 
11927 --
11928 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11929    trace
11930       (p_msg      => 'END of AcctLineType_24'
11931       ,p_level    => C_LEVEL_PROCEDURE
11932       ,p_module   => l_log_module);
11933 END IF;
11934 --
11935 EXCEPTION
11936   WHEN xla_exceptions_pkg.application_exception THEN
11937       RAISE;
11938   WHEN OTHERS THEN
11939        xla_exceptions_pkg.raise_message
11940            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_24');
11941 END AcctLineType_24;
11942 --
11943 
11944 ---------------------------------------
11945 --
11946 -- PRIVATE FUNCTION
11947 --         AcctLineType_25
11948 --
11949 ---------------------------------------
11950 PROCEDURE AcctLineType_25 (
11951   p_application_id        IN NUMBER
11952  ,p_event_id              IN NUMBER
11953  ,p_calculate_acctd_flag  IN VARCHAR2
11954  ,p_calculate_g_l_flag    IN VARCHAR2
11955  ,p_actual_flag           IN OUT VARCHAR2
11956  ,p_balance_type_code     OUT VARCHAR2
11957  ,p_gain_or_loss_ref      OUT VARCHAR2
11958  
11959 --Cost Management Default Account
11960  , p_source_4            IN NUMBER
11961 --DISTRIBUTION_IDENTIFIER
11962  , p_source_11            IN NUMBER
11963 --Distribution Type
11964  , p_source_12            IN VARCHAR2
11965  , p_source_12_meaning    IN VARCHAR2
11966 --Entered Currency Code
11967  , p_source_15            IN VARCHAR2
11968 --Entered Amount
11969  , p_source_18            IN NUMBER
11970 --Currency Conversion Date
11971  , p_source_19            IN DATE
11972 --Currency Conversion Rate
11973  , p_source_20            IN NUMBER
11974 --Currency Conversion Type
11975  , p_source_21            IN VARCHAR2
11976 --Accounted Amount
11977  , p_source_22            IN NUMBER
11978 --Accounting Line Type
11979  , p_source_24            IN NUMBER
11980 )
11981 IS
11982 
11983 l_component_type              VARCHAR2(80);
11984 l_component_code              VARCHAR2(30);
11985 l_component_type_code         VARCHAR2(1);
11986 l_component_appl_id           INTEGER;
11987 l_amb_context_code            VARCHAR2(30);
11988 l_entity_code                 VARCHAR2(30);
11989 l_event_class_code            VARCHAR2(30);
11990 l_ae_header_id                NUMBER;
11991 l_event_type_code             VARCHAR2(30);
11992 l_line_definition_code        VARCHAR2(30);
11993 l_line_definition_owner_code  VARCHAR2(1);
11994 --
11995 -- adr variables
11996 l_segment                     VARCHAR2(30);
11997 l_ccid                        NUMBER;
11998 l_adr_transaction_coa_id      NUMBER;
11999 l_adr_accounting_coa_id       NUMBER;
12000 l_adr_flexfield_segment_code  VARCHAR2(30);
12001 l_adr_flex_value_set_id       NUMBER;
12002 l_adr_value_type_code         VARCHAR2(30);
12003 l_adr_value_combination_id    NUMBER;
12004 l_adr_value_segment_code      VARCHAR2(30);
12005 
12006 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
12007 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
12008 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
12009 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
12010 
12011 -- 4262811 Variables ------------------------------------------------------------------------------------------
12012 l_entered_amt_idx             NUMBER;
12013 l_accted_amt_idx              NUMBER;
12014 l_acc_rev_flag                VARCHAR2(1);
12015 l_accrual_line_num            NUMBER;
12016 l_tmp_amt                     NUMBER;
12017 l_acc_rev_natural_side_code   VARCHAR2(1);
12018 
12019 l_num_entries                 NUMBER;
12020 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
12021 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
12022 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
12023 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
12024 l_recog_line_1                NUMBER;
12025 l_recog_line_2                NUMBER;
12026 
12027 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
12028 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
12029 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
12030 
12031 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
12032 
12033 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
12034 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
12035 
12036 ---------------------------------------------------------------------------------------------------------------
12037 
12038 
12039 --
12040 -- bulk performance
12041 --
12042 l_balance_type_code           VARCHAR2(1);
12043 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
12044 l_log_module                  VARCHAR2(240);
12045 
12046 --
12047 -- Upgrade strategy
12048 --
12049 l_actual_upg_option           VARCHAR2(1);
12050 l_enc_upg_option           VARCHAR2(1);
12051 
12052 --
12053 BEGIN
12054 --
12055 IF g_log_enabled THEN
12056       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_25';
12057 END IF;
12058 --
12059 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12060 
12061       trace
12062          (p_msg      => 'BEGIN of AcctLineType_25'
12063          ,p_level    => C_LEVEL_PROCEDURE
12064          ,p_module   => l_log_module);
12065 
12066 END IF;
12067 --
12068 l_component_type             := 'AMB_JLT';
12069 l_component_code             := 'COST_UPDATE_ADJUSTMENT';
12070 l_component_type_code        := 'S';
12071 l_component_appl_id          :=  707;
12072 l_amb_context_code           := 'DEFAULT';
12073 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
12074 l_event_class_code           := 'MTL_COST_UPD';
12075 l_event_type_code            := 'MTL_COST_UPD_ALL';
12076 l_line_definition_owner_code := 'S';
12077 l_line_definition_code       := 'MTL_COST_UPD';
12078 --
12079 l_balance_type_code          := 'A';
12080 l_segment                     := NULL;
12081 l_ccid                        := NULL;
12082 l_adr_transaction_coa_id      := NULL;
12083 l_adr_accounting_coa_id       := NULL;
12084 l_adr_flexfield_segment_code  := NULL;
12085 l_adr_flex_value_set_id       := NULL;
12086 l_adr_value_type_code         := NULL;
12087 l_adr_value_combination_id    := NULL;
12088 l_adr_value_segment_code      := NULL;
12089 
12090 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
12091 l_bflow_class_code           := '';    -- 4219869 Business Flow
12092 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
12093 l_budgetary_control_flag     := 'N';
12094 
12095 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
12096 l_bflow_applied_to_amt       := NULL; -- 5132302
12097 l_entered_amt_idx            := NULL;          -- 4262811
12098 l_accted_amt_idx             := NULL;          -- 4262811
12099 l_acc_rev_flag               := NULL;          -- 4262811
12100 l_accrual_line_num           := NULL;          -- 4262811
12101 l_tmp_amt                    := NULL;          -- 4262811
12102 --
12103  
12104 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
12105     l_balance_type_code <> 'B' THEN
12106 IF NVL(p_source_24,9E125) =  2
12107  THEN 
12108 
12109    --
12110    XLA_AE_LINES_PKG.SetNewLine;
12111 
12112    p_balance_type_code          := l_balance_type_code;
12113    -- set the flag so later we will know whether the gain loss line needs to be created
12114    
12115    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
12116      p_actual_flag :='A';
12117    END IF;
12118 
12119    --
12120    -- bulk performance
12121    --
12122    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
12123                                       p_header_num   => 0); -- 4262811
12124    --
12125    -- set accounting line options
12126    --
12127    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
12128            p_natural_side_code          => 'D'
12129          , p_gain_or_loss_flag          => 'N'
12130          , p_gl_transfer_mode_code      => 'S'
12131          , p_acct_entry_type_code       => 'A'
12132          , p_switch_side_flag           => 'Y'
12133          , p_merge_duplicate_code       => 'N'
12134          );
12135    --
12136    l_acc_rev_natural_side_code := 'C';  -- 4262811
12137    -- 
12138    --
12139    -- set accounting line type info
12140    --
12141    xla_ae_lines_pkg.SetAcctLineType
12142       (p_component_type             => l_component_type
12143       ,p_event_type_code            => l_event_type_code
12144       ,p_line_definition_owner_code => l_line_definition_owner_code
12145       ,p_line_definition_code       => l_line_definition_code
12146       ,p_accounting_line_code       => l_component_code
12147       ,p_accounting_line_type_code  => l_component_type_code
12148       ,p_accounting_line_appl_id    => l_component_appl_id
12149       ,p_amb_context_code           => l_amb_context_code
12150       ,p_entity_code                => l_entity_code
12151       ,p_event_class_code           => l_event_class_code);
12152    --
12153    -- set accounting class
12154    --
12155    xla_ae_lines_pkg.SetAcctClass(
12156            p_accounting_class_code  => 'COST_UPDATE_ADJUSTMENT'
12157          , p_ae_header_id           => l_ae_header_id
12158          );
12159 
12160    --
12161    -- set rounding class
12162    --
12163    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
12164                       'COST_UPDATE_ADJUSTMENT';
12165 
12166    --
12167    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
12168    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
12169    --
12170    -- bulk performance
12171    --
12172    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
12173 
12174    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
12175       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
12176 
12177    -- 4955764
12178    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12179       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
12180 
12181    -- 4458381 Public Sector Enh
12182    
12183    --
12184    -- set accounting attributes for the line type
12185    --
12186    l_entered_amt_idx := 3;
12187    l_accted_amt_idx  := 8;
12188    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
12189    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
12190    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
12191    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
12192    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
12193    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
12194    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
12195    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
12196    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
12197    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
12198    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
12199    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
12200    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
12201    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
12202    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
12203    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
12204    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
12205 
12206    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
12207    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
12208 
12209    ---------------------------------------------------------------------------------------------------------------
12210    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
12211    ---------------------------------------------------------------------------------------------------------------
12212    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
12213 
12214    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12215    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12216 
12217    IF xla_accounting_cache_pkg.GetValueChar
12218          (p_source_code         => 'LEDGER_CATEGORY_CODE'
12219          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
12220    AND l_bflow_method_code = 'PRIOR_ENTRY'
12221 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
12222    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
12223          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
12224        )
12225    THEN
12226          xla_ae_lines_pkg.BflowUpgEntry
12227            (p_business_method_code    => l_bflow_method_code
12228            ,p_business_class_code     => l_bflow_class_code
12229            ,p_balance_type            => l_balance_type_code);
12230    ELSE
12231       NULL;
12232 -- No business flow processing for business flow method of NONE.
12233    END IF;
12234 
12235    --
12236    -- call analytical criteria
12237    --
12238    
12239    --
12240    -- call description
12241    --
12242    -- No description or it is inherited.
12243    --
12244    -- call ADRs
12245    -- Bug 4922099
12246    --
12247    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12248         (NVL(l_actual_upg_option, 'N') = 'O') OR
12249         (NVL(l_enc_upg_option, 'N') = 'O')
12250       )
12251    THEN
12252    NULL;
12253    --
12254    --
12255    
12256   l_ccid := AcctDerRule_4(
12257            p_application_id           => p_application_id
12258          , p_ae_header_id             => l_ae_header_id 
12259 , p_source_4 => p_source_4
12260          , x_transaction_coa_id       => l_adr_transaction_coa_id
12261          , x_accounting_coa_id        => l_adr_accounting_coa_id
12262          , x_value_type_code          => l_adr_value_type_code
12263          , p_side                     => 'NA'
12264    );
12265 
12266    xla_ae_lines_pkg.set_ccid(
12267     p_code_combination_id          => l_ccid
12268   , p_value_type_code              => l_adr_value_type_code
12269   , p_transaction_coa_id           => l_adr_transaction_coa_id
12270   , p_accounting_coa_id            => l_adr_accounting_coa_id
12271   , p_adr_code                     => 'CST_DEFAULT'
12272   , p_adr_type_code                => 'S'
12273   , p_component_type               => l_component_type
12274   , p_component_code               => l_component_code
12275   , p_component_type_code          => l_component_type_code
12276   , p_component_appl_id            => l_component_appl_id
12277   , p_amb_context_code             => l_amb_context_code
12278   , p_side                         => 'NA'
12279   );
12280 
12281 
12282    --
12283    --
12284    END IF;
12285    --
12286    -- Bug 4922099
12287    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
12288           (NVL(l_enc_upg_option, 'N') = 'O')
12289         ) AND
12290         (l_bflow_method_code = 'PRIOR_ENTRY')
12291       )
12292    THEN
12293       IF
12294       --
12295       1 = 2
12296       --
12297       THEN
12298       xla_accounting_err_pkg.build_message
12299                                     (p_appli_s_name            => 'XLA'
12300                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12301                                     ,p_token_1                 => 'LINE_NUMBER'
12302                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
12303                                     ,p_token_2                 => 'LINE_TYPE_NAME'
12304                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
12305                                                                              l_component_type
12306                                                                             ,l_component_code
12307                                                                             ,l_component_type_code
12308                                                                             ,l_component_appl_id
12309                                                                             ,l_amb_context_code
12310                                                                             ,l_entity_code
12311                                                                             ,l_event_class_code
12312                                                                            )
12313                                     ,p_token_3                 => 'OWNER'
12314                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
12315                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
12316                                                                           ,p_lookup_code    => l_component_type_code
12317                                                                          )
12318                                     ,p_token_4                 => 'PRODUCT_NAME'
12319                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
12320                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
12321                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
12322                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
12323                                     ,p_ae_header_id            =>  NULL
12324                                        );
12325 
12326         IF (C_LEVEL_ERROR>= g_log_level) THEN
12327                  trace
12328                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12329                       ,p_level    => C_LEVEL_ERROR
12330                       ,p_module   => l_log_module);
12331         END IF;
12332       END IF;
12333    END IF;
12334    --
12335    --
12336    ------------------------------------------------------------------------------------------------
12337    -- 4219869 Business Flow
12338    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
12339    -- Prior Entry.  Currently, the following code is always generated.
12340    ------------------------------------------------------------------------------------------------
12341    XLA_AE_LINES_PKG.ValidateCurrentLine;
12342 
12343    ------------------------------------------------------------------------------------
12344    -- 4219869 Business Flow
12345    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
12346    ------------------------------------------------------------------------------------
12347    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12348 
12349    ----------------------------------------------------------------------------------
12350    -- 4219869 Business Flow
12351    -- Update journal entry status -- Need to generate this within IF <condition>
12352    ----------------------------------------------------------------------------------
12353    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12354          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
12355          ,p_balance_type_code => l_balance_type_code
12356          );
12357 
12358    -------------------------------------------------------------------------------------------
12359    -- 4262811 - Generate the Accrual Reversal lines
12360    -------------------------------------------------------------------------------------------
12361    BEGIN
12362       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
12363                               (g_array_event(p_event_id).array_value_num('header_index'));
12364       IF l_acc_rev_flag IS NULL THEN
12365          l_acc_rev_flag := 'N';
12366       END IF;
12367    EXCEPTION
12368       WHEN OTHERS THEN
12369          l_acc_rev_flag := 'N';
12370    END;
12371    --
12372    IF (l_acc_rev_flag = 'Y') THEN
12373 
12374        -- 4645092  ------------------------------------------------------------------------------
12375        -- To allow MPA report to determine if it should generate report process
12376        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
12377        ------------------------------------------------------------------------------------------
12378 
12379        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
12380        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
12381    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
12382    -- call ADRs
12383    -- Bug 4922099
12384    --
12385    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12386         (NVL(l_actual_upg_option, 'N') = 'O') OR
12387         (NVL(l_enc_upg_option, 'N') = 'O')
12388       )
12389    THEN
12390    NULL;
12391    --
12392    --
12393    
12394   l_ccid := AcctDerRule_4(
12395            p_application_id           => p_application_id
12396          , p_ae_header_id             => l_ae_header_id 
12397 , p_source_4 => p_source_4
12398          , x_transaction_coa_id       => l_adr_transaction_coa_id
12399          , x_accounting_coa_id        => l_adr_accounting_coa_id
12400          , x_value_type_code          => l_adr_value_type_code
12401          , p_side                     => 'NA'
12402    );
12403 
12404    xla_ae_lines_pkg.set_ccid(
12405     p_code_combination_id          => l_ccid
12406   , p_value_type_code              => l_adr_value_type_code
12407   , p_transaction_coa_id           => l_adr_transaction_coa_id
12408   , p_accounting_coa_id            => l_adr_accounting_coa_id
12409   , p_adr_code                     => 'CST_DEFAULT'
12410   , p_adr_type_code                => 'S'
12411   , p_component_type               => l_component_type
12412   , p_component_code               => l_component_code
12413   , p_component_type_code          => l_component_type_code
12414   , p_component_appl_id            => l_component_appl_id
12415   , p_amb_context_code             => l_amb_context_code
12416   , p_side                         => 'NA'
12417   );
12418 
12419 
12420    --
12421    --
12422    END IF;
12423 
12424        --
12425        -- Update the line information that should be overwritten
12426        --
12427        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
12428                                          p_header_num   => 1);
12429        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
12430 
12431        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
12432 
12433        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
12434           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
12435        END IF;
12436 
12437       --
12438       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
12439       --
12440       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
12441           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
12442       ELSE
12443           ---------------------------------------------------------------------------------------------------
12444           -- 4262811a Switch Sign
12445           ---------------------------------------------------------------------------------------------------
12446           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
12447           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12448                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12449           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12450                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12451           -- 5132302
12452           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
12453                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12454 
12455       END IF;
12456 
12457       -- 4955764
12458       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12459       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
12460 
12461 
12462       XLA_AE_LINES_PKG.ValidateCurrentLine;
12463       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12464 
12465       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12466                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
12467                ,p_balance_type_code => l_balance_type_code);
12468 
12469    END IF;
12470 
12471    -----------------------------------------------------------------------------------------
12472    -- 4262811 Multiperiod Accounting
12473    -----------------------------------------------------------------------------------------
12474      -- No MPA option is assigned.
12475 
12476 
12477 END IF;
12478 END IF;
12479 --
12480 
12481 --
12482 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12483    trace
12484       (p_msg      => 'END of AcctLineType_25'
12485       ,p_level    => C_LEVEL_PROCEDURE
12486       ,p_module   => l_log_module);
12487 END IF;
12488 --
12489 EXCEPTION
12490   WHEN xla_exceptions_pkg.application_exception THEN
12491       RAISE;
12492   WHEN OTHERS THEN
12493        xla_exceptions_pkg.raise_message
12494            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_25');
12495 END AcctLineType_25;
12496 --
12497 
12498 ---------------------------------------
12499 --
12500 -- PRIVATE FUNCTION
12501 --         AcctLineType_26
12502 --
12503 ---------------------------------------
12504 PROCEDURE AcctLineType_26 (
12505   p_application_id        IN NUMBER
12506  ,p_event_id              IN NUMBER
12507  ,p_calculate_acctd_flag  IN VARCHAR2
12508  ,p_calculate_g_l_flag    IN VARCHAR2
12509  ,p_actual_flag           IN OUT VARCHAR2
12510  ,p_balance_type_code     OUT VARCHAR2
12511  ,p_gain_or_loss_ref      OUT VARCHAR2
12512  
12513 --Cost Management Default Account
12514  , p_source_4            IN NUMBER
12515 --DISTRIBUTION_IDENTIFIER
12516  , p_source_11            IN NUMBER
12517 --Distribution Type
12518  , p_source_12            IN VARCHAR2
12519  , p_source_12_meaning    IN VARCHAR2
12520 --Entered Currency Code
12521  , p_source_15            IN VARCHAR2
12522 --Entered Amount
12523  , p_source_18            IN NUMBER
12524 --Currency Conversion Date
12525  , p_source_19            IN DATE
12526 --Currency Conversion Rate
12527  , p_source_20            IN NUMBER
12528 --Currency Conversion Type
12529  , p_source_21            IN VARCHAR2
12530 --Accounted Amount
12531  , p_source_22            IN NUMBER
12532 --Accounting Line Type
12533  , p_source_24            IN NUMBER
12534 )
12535 IS
12536 
12537 l_component_type              VARCHAR2(80);
12538 l_component_code              VARCHAR2(30);
12539 l_component_type_code         VARCHAR2(1);
12540 l_component_appl_id           INTEGER;
12541 l_amb_context_code            VARCHAR2(30);
12542 l_entity_code                 VARCHAR2(30);
12543 l_event_class_code            VARCHAR2(30);
12544 l_ae_header_id                NUMBER;
12545 l_event_type_code             VARCHAR2(30);
12546 l_line_definition_code        VARCHAR2(30);
12547 l_line_definition_owner_code  VARCHAR2(1);
12548 --
12549 -- adr variables
12550 l_segment                     VARCHAR2(30);
12551 l_ccid                        NUMBER;
12552 l_adr_transaction_coa_id      NUMBER;
12553 l_adr_accounting_coa_id       NUMBER;
12554 l_adr_flexfield_segment_code  VARCHAR2(30);
12555 l_adr_flex_value_set_id       NUMBER;
12556 l_adr_value_type_code         VARCHAR2(30);
12557 l_adr_value_combination_id    NUMBER;
12558 l_adr_value_segment_code      VARCHAR2(30);
12559 
12560 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
12561 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
12562 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
12563 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
12564 
12565 -- 4262811 Variables ------------------------------------------------------------------------------------------
12566 l_entered_amt_idx             NUMBER;
12567 l_accted_amt_idx              NUMBER;
12568 l_acc_rev_flag                VARCHAR2(1);
12569 l_accrual_line_num            NUMBER;
12570 l_tmp_amt                     NUMBER;
12571 l_acc_rev_natural_side_code   VARCHAR2(1);
12572 
12573 l_num_entries                 NUMBER;
12574 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
12575 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
12576 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
12577 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
12578 l_recog_line_1                NUMBER;
12579 l_recog_line_2                NUMBER;
12580 
12581 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
12582 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
12583 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
12584 
12585 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
12586 
12587 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
12588 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
12589 
12590 ---------------------------------------------------------------------------------------------------------------
12591 
12592 
12593 --
12594 -- bulk performance
12595 --
12596 l_balance_type_code           VARCHAR2(1);
12597 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
12598 l_log_module                  VARCHAR2(240);
12599 
12600 --
12601 -- Upgrade strategy
12602 --
12603 l_actual_upg_option           VARCHAR2(1);
12604 l_enc_upg_option           VARCHAR2(1);
12605 
12606 --
12607 BEGIN
12608 --
12609 IF g_log_enabled THEN
12610       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_26';
12611 END IF;
12612 --
12613 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12614 
12615       trace
12616          (p_msg      => 'BEGIN of AcctLineType_26'
12617          ,p_level    => C_LEVEL_PROCEDURE
12618          ,p_module   => l_log_module);
12619 
12620 END IF;
12621 --
12622 l_component_type             := 'AMB_JLT';
12623 l_component_code             := 'COST_UPDATE_ADJUSTMENT';
12624 l_component_type_code        := 'S';
12625 l_component_appl_id          :=  707;
12626 l_amb_context_code           := 'DEFAULT';
12627 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
12628 l_event_class_code           := 'SALES_ORDER';
12629 l_event_type_code            := 'SALES_ORDER_ALL';
12630 l_line_definition_owner_code := 'S';
12631 l_line_definition_code       := 'SALES_ORDER';
12632 --
12633 l_balance_type_code          := 'A';
12634 l_segment                     := NULL;
12635 l_ccid                        := NULL;
12636 l_adr_transaction_coa_id      := NULL;
12637 l_adr_accounting_coa_id       := NULL;
12638 l_adr_flexfield_segment_code  := NULL;
12639 l_adr_flex_value_set_id       := NULL;
12640 l_adr_value_type_code         := NULL;
12641 l_adr_value_combination_id    := NULL;
12642 l_adr_value_segment_code      := NULL;
12643 
12644 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
12645 l_bflow_class_code           := '';    -- 4219869 Business Flow
12646 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
12647 l_budgetary_control_flag     := 'N';
12648 
12649 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
12650 l_bflow_applied_to_amt       := NULL; -- 5132302
12651 l_entered_amt_idx            := NULL;          -- 4262811
12652 l_accted_amt_idx             := NULL;          -- 4262811
12653 l_acc_rev_flag               := NULL;          -- 4262811
12654 l_accrual_line_num           := NULL;          -- 4262811
12655 l_tmp_amt                    := NULL;          -- 4262811
12656 --
12657  
12658 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
12659     l_balance_type_code <> 'B' THEN
12660 IF NVL(p_source_24,9E125) =  37
12661  THEN 
12662 
12663    --
12664    XLA_AE_LINES_PKG.SetNewLine;
12665 
12666    p_balance_type_code          := l_balance_type_code;
12667    -- set the flag so later we will know whether the gain loss line needs to be created
12668    
12669    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
12670      p_actual_flag :='A';
12671    END IF;
12672 
12673    --
12674    -- bulk performance
12675    --
12676    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
12677                                       p_header_num   => 0); -- 4262811
12678    --
12679    -- set accounting line options
12680    --
12681    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
12682            p_natural_side_code          => 'D'
12683          , p_gain_or_loss_flag          => 'N'
12684          , p_gl_transfer_mode_code      => 'S'
12685          , p_acct_entry_type_code       => 'A'
12686          , p_switch_side_flag           => 'Y'
12687          , p_merge_duplicate_code       => 'N'
12688          );
12689    --
12690    l_acc_rev_natural_side_code := 'C';  -- 4262811
12691    -- 
12692    --
12693    -- set accounting line type info
12694    --
12695    xla_ae_lines_pkg.SetAcctLineType
12696       (p_component_type             => l_component_type
12697       ,p_event_type_code            => l_event_type_code
12698       ,p_line_definition_owner_code => l_line_definition_owner_code
12699       ,p_line_definition_code       => l_line_definition_code
12700       ,p_accounting_line_code       => l_component_code
12701       ,p_accounting_line_type_code  => l_component_type_code
12702       ,p_accounting_line_appl_id    => l_component_appl_id
12703       ,p_amb_context_code           => l_amb_context_code
12704       ,p_entity_code                => l_entity_code
12705       ,p_event_class_code           => l_event_class_code);
12706    --
12707    -- set accounting class
12708    --
12709    xla_ae_lines_pkg.SetAcctClass(
12710            p_accounting_class_code  => 'COST_UPDATE_ADJUSTMENT'
12711          , p_ae_header_id           => l_ae_header_id
12712          );
12713 
12714    --
12715    -- set rounding class
12716    --
12717    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
12718                       'COST_UPDATE_ADJUSTMENT';
12719 
12720    --
12721    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
12722    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
12723    --
12724    -- bulk performance
12725    --
12726    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
12727 
12728    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
12729       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
12730 
12731    -- 4955764
12732    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12733       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
12734 
12735    -- 4458381 Public Sector Enh
12736    
12737    --
12738    -- set accounting attributes for the line type
12739    --
12740    l_entered_amt_idx := 3;
12741    l_accted_amt_idx  := 8;
12742    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
12743    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
12744    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
12745    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
12746    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
12747    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
12748    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
12749    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
12750    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
12751    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
12752    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
12753    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
12754    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
12755    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
12756    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
12757    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
12758    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
12759 
12760    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
12761    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
12762 
12763    ---------------------------------------------------------------------------------------------------------------
12764    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
12765    ---------------------------------------------------------------------------------------------------------------
12766    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
12767 
12768    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12769    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12770 
12771    IF xla_accounting_cache_pkg.GetValueChar
12772          (p_source_code         => 'LEDGER_CATEGORY_CODE'
12773          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
12774    AND l_bflow_method_code = 'PRIOR_ENTRY'
12775 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
12776    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
12777          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
12778        )
12779    THEN
12780          xla_ae_lines_pkg.BflowUpgEntry
12781            (p_business_method_code    => l_bflow_method_code
12782            ,p_business_class_code     => l_bflow_class_code
12783            ,p_balance_type            => l_balance_type_code);
12784    ELSE
12785       NULL;
12786 -- No business flow processing for business flow method of NONE.
12787    END IF;
12788 
12789    --
12790    -- call analytical criteria
12791    --
12792    
12793    --
12794    -- call description
12795    --
12796    -- No description or it is inherited.
12797    --
12798    -- call ADRs
12799    -- Bug 4922099
12800    --
12801    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12802         (NVL(l_actual_upg_option, 'N') = 'O') OR
12803         (NVL(l_enc_upg_option, 'N') = 'O')
12804       )
12805    THEN
12806    NULL;
12807    --
12808    --
12809    
12810   l_ccid := AcctDerRule_4(
12811            p_application_id           => p_application_id
12812          , p_ae_header_id             => l_ae_header_id 
12813 , p_source_4 => p_source_4
12814          , x_transaction_coa_id       => l_adr_transaction_coa_id
12815          , x_accounting_coa_id        => l_adr_accounting_coa_id
12816          , x_value_type_code          => l_adr_value_type_code
12817          , p_side                     => 'NA'
12818    );
12819 
12820    xla_ae_lines_pkg.set_ccid(
12821     p_code_combination_id          => l_ccid
12822   , p_value_type_code              => l_adr_value_type_code
12823   , p_transaction_coa_id           => l_adr_transaction_coa_id
12824   , p_accounting_coa_id            => l_adr_accounting_coa_id
12825   , p_adr_code                     => 'CST_DEFAULT'
12826   , p_adr_type_code                => 'S'
12827   , p_component_type               => l_component_type
12828   , p_component_code               => l_component_code
12829   , p_component_type_code          => l_component_type_code
12830   , p_component_appl_id            => l_component_appl_id
12831   , p_amb_context_code             => l_amb_context_code
12832   , p_side                         => 'NA'
12833   );
12834 
12835 
12836    --
12837    --
12838    END IF;
12839    --
12840    -- Bug 4922099
12841    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
12842           (NVL(l_enc_upg_option, 'N') = 'O')
12843         ) AND
12844         (l_bflow_method_code = 'PRIOR_ENTRY')
12845       )
12846    THEN
12847       IF
12848       --
12849       1 = 2
12850       --
12851       THEN
12852       xla_accounting_err_pkg.build_message
12853                                     (p_appli_s_name            => 'XLA'
12854                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12855                                     ,p_token_1                 => 'LINE_NUMBER'
12856                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
12857                                     ,p_token_2                 => 'LINE_TYPE_NAME'
12858                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
12859                                                                              l_component_type
12860                                                                             ,l_component_code
12861                                                                             ,l_component_type_code
12862                                                                             ,l_component_appl_id
12863                                                                             ,l_amb_context_code
12864                                                                             ,l_entity_code
12865                                                                             ,l_event_class_code
12866                                                                            )
12867                                     ,p_token_3                 => 'OWNER'
12868                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
12869                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
12870                                                                           ,p_lookup_code    => l_component_type_code
12871                                                                          )
12872                                     ,p_token_4                 => 'PRODUCT_NAME'
12873                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
12874                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
12875                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
12876                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
12877                                     ,p_ae_header_id            =>  NULL
12878                                        );
12879 
12880         IF (C_LEVEL_ERROR>= g_log_level) THEN
12881                  trace
12882                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12883                       ,p_level    => C_LEVEL_ERROR
12884                       ,p_module   => l_log_module);
12885         END IF;
12886       END IF;
12887    END IF;
12888    --
12889    --
12890    ------------------------------------------------------------------------------------------------
12891    -- 4219869 Business Flow
12892    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
12893    -- Prior Entry.  Currently, the following code is always generated.
12894    ------------------------------------------------------------------------------------------------
12895    XLA_AE_LINES_PKG.ValidateCurrentLine;
12896 
12897    ------------------------------------------------------------------------------------
12898    -- 4219869 Business Flow
12899    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
12900    ------------------------------------------------------------------------------------
12901    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12902 
12903    ----------------------------------------------------------------------------------
12904    -- 4219869 Business Flow
12905    -- Update journal entry status -- Need to generate this within IF <condition>
12906    ----------------------------------------------------------------------------------
12907    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12908          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
12909          ,p_balance_type_code => l_balance_type_code
12910          );
12911 
12912    -------------------------------------------------------------------------------------------
12913    -- 4262811 - Generate the Accrual Reversal lines
12914    -------------------------------------------------------------------------------------------
12915    BEGIN
12916       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
12917                               (g_array_event(p_event_id).array_value_num('header_index'));
12918       IF l_acc_rev_flag IS NULL THEN
12919          l_acc_rev_flag := 'N';
12920       END IF;
12921    EXCEPTION
12922       WHEN OTHERS THEN
12923          l_acc_rev_flag := 'N';
12924    END;
12925    --
12926    IF (l_acc_rev_flag = 'Y') THEN
12927 
12928        -- 4645092  ------------------------------------------------------------------------------
12929        -- To allow MPA report to determine if it should generate report process
12930        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
12931        ------------------------------------------------------------------------------------------
12932 
12933        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
12934        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
12935    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
12936    -- call ADRs
12937    -- Bug 4922099
12938    --
12939    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12940         (NVL(l_actual_upg_option, 'N') = 'O') OR
12941         (NVL(l_enc_upg_option, 'N') = 'O')
12942       )
12943    THEN
12944    NULL;
12945    --
12946    --
12947    
12948   l_ccid := AcctDerRule_4(
12949            p_application_id           => p_application_id
12950          , p_ae_header_id             => l_ae_header_id 
12951 , p_source_4 => p_source_4
12952          , x_transaction_coa_id       => l_adr_transaction_coa_id
12953          , x_accounting_coa_id        => l_adr_accounting_coa_id
12954          , x_value_type_code          => l_adr_value_type_code
12955          , p_side                     => 'NA'
12956    );
12957 
12958    xla_ae_lines_pkg.set_ccid(
12959     p_code_combination_id          => l_ccid
12960   , p_value_type_code              => l_adr_value_type_code
12961   , p_transaction_coa_id           => l_adr_transaction_coa_id
12962   , p_accounting_coa_id            => l_adr_accounting_coa_id
12963   , p_adr_code                     => 'CST_DEFAULT'
12964   , p_adr_type_code                => 'S'
12965   , p_component_type               => l_component_type
12966   , p_component_code               => l_component_code
12967   , p_component_type_code          => l_component_type_code
12968   , p_component_appl_id            => l_component_appl_id
12969   , p_amb_context_code             => l_amb_context_code
12970   , p_side                         => 'NA'
12971   );
12972 
12973 
12974    --
12975    --
12976    END IF;
12977 
12978        --
12979        -- Update the line information that should be overwritten
12980        --
12981        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
12982                                          p_header_num   => 1);
12983        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
12984 
12985        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
12986 
12987        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
12988           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
12989        END IF;
12990 
12991       --
12992       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
12993       --
12994       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
12995           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
12996       ELSE
12997           ---------------------------------------------------------------------------------------------------
12998           -- 4262811a Switch Sign
12999           ---------------------------------------------------------------------------------------------------
13000           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
13001           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13002                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13003           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13004                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13005           -- 5132302
13006           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
13007                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13008 
13009       END IF;
13010 
13011       -- 4955764
13012       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13013       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
13014 
13015 
13016       XLA_AE_LINES_PKG.ValidateCurrentLine;
13017       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13018 
13019       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13020                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
13021                ,p_balance_type_code => l_balance_type_code);
13022 
13023    END IF;
13024 
13025    -----------------------------------------------------------------------------------------
13026    -- 4262811 Multiperiod Accounting
13027    -----------------------------------------------------------------------------------------
13028      -- No MPA option is assigned.
13029 
13030 
13031 END IF;
13032 END IF;
13033 --
13034 
13035 --
13036 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13037    trace
13038       (p_msg      => 'END of AcctLineType_26'
13039       ,p_level    => C_LEVEL_PROCEDURE
13040       ,p_module   => l_log_module);
13041 END IF;
13042 --
13043 EXCEPTION
13044   WHEN xla_exceptions_pkg.application_exception THEN
13045       RAISE;
13046   WHEN OTHERS THEN
13047        xla_exceptions_pkg.raise_message
13048            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_26');
13049 END AcctLineType_26;
13050 --
13051 
13052 ---------------------------------------
13053 --
13054 -- PRIVATE FUNCTION
13055 --         AcctLineType_27
13056 --
13057 ---------------------------------------
13058 PROCEDURE AcctLineType_27 (
13059   p_application_id        IN NUMBER
13060  ,p_event_id              IN NUMBER
13061  ,p_calculate_acctd_flag  IN VARCHAR2
13062  ,p_calculate_g_l_flag    IN VARCHAR2
13063  ,p_actual_flag           IN OUT VARCHAR2
13064  ,p_balance_type_code     OUT VARCHAR2
13065  ,p_gain_or_loss_ref      OUT VARCHAR2
13066  
13067 --Cost Management Default Account
13068  , p_source_4            IN NUMBER
13069 --DISTRIBUTION_IDENTIFIER
13070  , p_source_11            IN NUMBER
13071 --Distribution Type
13072  , p_source_12            IN VARCHAR2
13073  , p_source_12_meaning    IN VARCHAR2
13074 --Entered Currency Code
13075  , p_source_15            IN VARCHAR2
13076 --Entered Amount
13077  , p_source_18            IN NUMBER
13078 --Currency Conversion Date
13079  , p_source_19            IN DATE
13080 --Currency Conversion Rate
13081  , p_source_20            IN NUMBER
13082 --Currency Conversion Type
13083  , p_source_21            IN VARCHAR2
13084 --Accounted Amount
13085  , p_source_22            IN NUMBER
13086 --Accounting Line Type
13087  , p_source_24            IN NUMBER
13088 )
13089 IS
13090 
13091 l_component_type              VARCHAR2(80);
13092 l_component_code              VARCHAR2(30);
13093 l_component_type_code         VARCHAR2(1);
13094 l_component_appl_id           INTEGER;
13095 l_amb_context_code            VARCHAR2(30);
13096 l_entity_code                 VARCHAR2(30);
13097 l_event_class_code            VARCHAR2(30);
13098 l_ae_header_id                NUMBER;
13099 l_event_type_code             VARCHAR2(30);
13100 l_line_definition_code        VARCHAR2(30);
13101 l_line_definition_owner_code  VARCHAR2(1);
13102 --
13103 -- adr variables
13104 l_segment                     VARCHAR2(30);
13105 l_ccid                        NUMBER;
13106 l_adr_transaction_coa_id      NUMBER;
13107 l_adr_accounting_coa_id       NUMBER;
13108 l_adr_flexfield_segment_code  VARCHAR2(30);
13109 l_adr_flex_value_set_id       NUMBER;
13110 l_adr_value_type_code         VARCHAR2(30);
13111 l_adr_value_combination_id    NUMBER;
13112 l_adr_value_segment_code      VARCHAR2(30);
13113 
13114 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
13115 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
13116 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
13117 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
13118 
13119 -- 4262811 Variables ------------------------------------------------------------------------------------------
13120 l_entered_amt_idx             NUMBER;
13121 l_accted_amt_idx              NUMBER;
13122 l_acc_rev_flag                VARCHAR2(1);
13123 l_accrual_line_num            NUMBER;
13124 l_tmp_amt                     NUMBER;
13125 l_acc_rev_natural_side_code   VARCHAR2(1);
13126 
13127 l_num_entries                 NUMBER;
13128 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
13129 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
13130 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
13131 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
13132 l_recog_line_1                NUMBER;
13133 l_recog_line_2                NUMBER;
13134 
13135 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
13136 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
13137 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
13138 
13139 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
13140 
13141 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
13142 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
13143 
13144 ---------------------------------------------------------------------------------------------------------------
13145 
13146 
13147 --
13148 -- bulk performance
13149 --
13150 l_balance_type_code           VARCHAR2(1);
13151 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
13152 l_log_module                  VARCHAR2(240);
13153 
13154 --
13155 -- Upgrade strategy
13156 --
13157 l_actual_upg_option           VARCHAR2(1);
13158 l_enc_upg_option           VARCHAR2(1);
13159 
13160 --
13161 BEGIN
13162 --
13163 IF g_log_enabled THEN
13164       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_27';
13165 END IF;
13166 --
13167 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13168 
13169       trace
13170          (p_msg      => 'BEGIN of AcctLineType_27'
13171          ,p_level    => C_LEVEL_PROCEDURE
13172          ,p_module   => l_log_module);
13173 
13174 END IF;
13175 --
13176 l_component_type             := 'AMB_JLT';
13177 l_component_code             := 'COST_VARIANCE';
13178 l_component_type_code        := 'S';
13179 l_component_appl_id          :=  707;
13180 l_amb_context_code           := 'DEFAULT';
13181 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
13182 l_event_class_code           := 'USER_DEFINE';
13183 l_event_type_code            := 'UAVG_COST_UPD';
13184 l_line_definition_owner_code := 'S';
13185 l_line_definition_code       := 'USER_COST_UPD';
13186 --
13187 l_balance_type_code          := 'A';
13188 l_segment                     := NULL;
13189 l_ccid                        := NULL;
13190 l_adr_transaction_coa_id      := NULL;
13191 l_adr_accounting_coa_id       := NULL;
13192 l_adr_flexfield_segment_code  := NULL;
13193 l_adr_flex_value_set_id       := NULL;
13194 l_adr_value_type_code         := NULL;
13195 l_adr_value_combination_id    := NULL;
13196 l_adr_value_segment_code      := NULL;
13197 
13198 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
13199 l_bflow_class_code           := '';    -- 4219869 Business Flow
13200 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
13201 l_budgetary_control_flag     := 'N';
13202 
13203 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
13204 l_bflow_applied_to_amt       := NULL; -- 5132302
13205 l_entered_amt_idx            := NULL;          -- 4262811
13206 l_accted_amt_idx             := NULL;          -- 4262811
13207 l_acc_rev_flag               := NULL;          -- 4262811
13208 l_accrual_line_num           := NULL;          -- 4262811
13209 l_tmp_amt                    := NULL;          -- 4262811
13210 --
13211  
13212 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
13213     l_balance_type_code <> 'B' THEN
13214 IF NVL(p_source_24,9E125) =  13
13215  THEN 
13216 
13217    --
13218    XLA_AE_LINES_PKG.SetNewLine;
13219 
13220    p_balance_type_code          := l_balance_type_code;
13221    -- set the flag so later we will know whether the gain loss line needs to be created
13222    
13223    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
13224      p_actual_flag :='A';
13225    END IF;
13226 
13227    --
13228    -- bulk performance
13229    --
13230    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
13231                                       p_header_num   => 0); -- 4262811
13232    --
13233    -- set accounting line options
13234    --
13235    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
13236            p_natural_side_code          => 'D'
13237          , p_gain_or_loss_flag          => 'N'
13238          , p_gl_transfer_mode_code      => 'S'
13239          , p_acct_entry_type_code       => 'A'
13240          , p_switch_side_flag           => 'Y'
13241          , p_merge_duplicate_code       => 'N'
13242          );
13243    --
13244    l_acc_rev_natural_side_code := 'C';  -- 4262811
13245    -- 
13246    --
13247    -- set accounting line type info
13248    --
13249    xla_ae_lines_pkg.SetAcctLineType
13250       (p_component_type             => l_component_type
13251       ,p_event_type_code            => l_event_type_code
13252       ,p_line_definition_owner_code => l_line_definition_owner_code
13253       ,p_line_definition_code       => l_line_definition_code
13254       ,p_accounting_line_code       => l_component_code
13255       ,p_accounting_line_type_code  => l_component_type_code
13256       ,p_accounting_line_appl_id    => l_component_appl_id
13257       ,p_amb_context_code           => l_amb_context_code
13258       ,p_entity_code                => l_entity_code
13259       ,p_event_class_code           => l_event_class_code);
13260    --
13261    -- set accounting class
13262    --
13263    xla_ae_lines_pkg.SetAcctClass(
13264            p_accounting_class_code  => 'COST_VARIANCE'
13265          , p_ae_header_id           => l_ae_header_id
13266          );
13267 
13268    --
13269    -- set rounding class
13270    --
13271    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
13272                       'COST_VARIANCE';
13273 
13274    --
13275    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
13276    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
13277    --
13278    -- bulk performance
13279    --
13280    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
13281 
13282    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
13283       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
13284 
13285    -- 4955764
13286    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13287       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
13288 
13289    -- 4458381 Public Sector Enh
13290    
13291    --
13292    -- set accounting attributes for the line type
13293    --
13294    l_entered_amt_idx := 3;
13295    l_accted_amt_idx  := 8;
13296    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
13297    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
13298    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
13299    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
13300    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
13301    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
13302    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
13303    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
13304    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
13305    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
13306    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
13307    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
13308    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
13309    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
13310    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
13311    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
13312    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
13313 
13314    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
13315    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
13316 
13317    ---------------------------------------------------------------------------------------------------------------
13318    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
13319    ---------------------------------------------------------------------------------------------------------------
13320    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
13321 
13322    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13323    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13324 
13325    IF xla_accounting_cache_pkg.GetValueChar
13326          (p_source_code         => 'LEDGER_CATEGORY_CODE'
13327          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
13328    AND l_bflow_method_code = 'PRIOR_ENTRY'
13329 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
13330    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
13331          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
13332        )
13333    THEN
13334          xla_ae_lines_pkg.BflowUpgEntry
13335            (p_business_method_code    => l_bflow_method_code
13336            ,p_business_class_code     => l_bflow_class_code
13337            ,p_balance_type            => l_balance_type_code);
13338    ELSE
13339       NULL;
13340 -- No business flow processing for business flow method of NONE.
13341    END IF;
13342 
13343    --
13344    -- call analytical criteria
13345    --
13346    
13347    --
13348    -- call description
13349    --
13350    -- No description or it is inherited.
13351    --
13352    -- call ADRs
13353    -- Bug 4922099
13354    --
13355    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13356         (NVL(l_actual_upg_option, 'N') = 'O') OR
13357         (NVL(l_enc_upg_option, 'N') = 'O')
13358       )
13359    THEN
13360    NULL;
13361    --
13362    --
13363    
13364   l_ccid := AcctDerRule_4(
13365            p_application_id           => p_application_id
13366          , p_ae_header_id             => l_ae_header_id 
13367 , p_source_4 => p_source_4
13368          , x_transaction_coa_id       => l_adr_transaction_coa_id
13369          , x_accounting_coa_id        => l_adr_accounting_coa_id
13370          , x_value_type_code          => l_adr_value_type_code
13371          , p_side                     => 'NA'
13372    );
13373 
13374    xla_ae_lines_pkg.set_ccid(
13375     p_code_combination_id          => l_ccid
13376   , p_value_type_code              => l_adr_value_type_code
13377   , p_transaction_coa_id           => l_adr_transaction_coa_id
13378   , p_accounting_coa_id            => l_adr_accounting_coa_id
13379   , p_adr_code                     => 'CST_DEFAULT'
13380   , p_adr_type_code                => 'S'
13381   , p_component_type               => l_component_type
13382   , p_component_code               => l_component_code
13383   , p_component_type_code          => l_component_type_code
13384   , p_component_appl_id            => l_component_appl_id
13385   , p_amb_context_code             => l_amb_context_code
13386   , p_side                         => 'NA'
13387   );
13388 
13389 
13390    --
13391    --
13392    END IF;
13393    --
13394    -- Bug 4922099
13395    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
13396           (NVL(l_enc_upg_option, 'N') = 'O')
13397         ) AND
13398         (l_bflow_method_code = 'PRIOR_ENTRY')
13399       )
13400    THEN
13401       IF
13402       --
13403       1 = 2
13404       --
13405       THEN
13406       xla_accounting_err_pkg.build_message
13407                                     (p_appli_s_name            => 'XLA'
13408                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13409                                     ,p_token_1                 => 'LINE_NUMBER'
13410                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
13411                                     ,p_token_2                 => 'LINE_TYPE_NAME'
13412                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
13413                                                                              l_component_type
13414                                                                             ,l_component_code
13415                                                                             ,l_component_type_code
13416                                                                             ,l_component_appl_id
13417                                                                             ,l_amb_context_code
13418                                                                             ,l_entity_code
13419                                                                             ,l_event_class_code
13420                                                                            )
13421                                     ,p_token_3                 => 'OWNER'
13422                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
13423                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
13424                                                                           ,p_lookup_code    => l_component_type_code
13425                                                                          )
13426                                     ,p_token_4                 => 'PRODUCT_NAME'
13427                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
13428                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13429                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13430                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
13431                                     ,p_ae_header_id            =>  NULL
13432                                        );
13433 
13434         IF (C_LEVEL_ERROR>= g_log_level) THEN
13435                  trace
13436                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13437                       ,p_level    => C_LEVEL_ERROR
13438                       ,p_module   => l_log_module);
13439         END IF;
13440       END IF;
13441    END IF;
13442    --
13443    --
13444    ------------------------------------------------------------------------------------------------
13445    -- 4219869 Business Flow
13446    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
13447    -- Prior Entry.  Currently, the following code is always generated.
13448    ------------------------------------------------------------------------------------------------
13449    XLA_AE_LINES_PKG.ValidateCurrentLine;
13450 
13451    ------------------------------------------------------------------------------------
13452    -- 4219869 Business Flow
13453    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
13454    ------------------------------------------------------------------------------------
13455    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13456 
13457    ----------------------------------------------------------------------------------
13458    -- 4219869 Business Flow
13459    -- Update journal entry status -- Need to generate this within IF <condition>
13460    ----------------------------------------------------------------------------------
13461    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13462          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
13463          ,p_balance_type_code => l_balance_type_code
13464          );
13465 
13466    -------------------------------------------------------------------------------------------
13467    -- 4262811 - Generate the Accrual Reversal lines
13468    -------------------------------------------------------------------------------------------
13469    BEGIN
13470       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
13471                               (g_array_event(p_event_id).array_value_num('header_index'));
13472       IF l_acc_rev_flag IS NULL THEN
13473          l_acc_rev_flag := 'N';
13474       END IF;
13475    EXCEPTION
13476       WHEN OTHERS THEN
13477          l_acc_rev_flag := 'N';
13478    END;
13479    --
13480    IF (l_acc_rev_flag = 'Y') THEN
13481 
13482        -- 4645092  ------------------------------------------------------------------------------
13483        -- To allow MPA report to determine if it should generate report process
13484        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
13485        ------------------------------------------------------------------------------------------
13486 
13487        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
13488        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
13489    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
13490    -- call ADRs
13491    -- Bug 4922099
13492    --
13493    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13494         (NVL(l_actual_upg_option, 'N') = 'O') OR
13495         (NVL(l_enc_upg_option, 'N') = 'O')
13496       )
13497    THEN
13498    NULL;
13499    --
13500    --
13501    
13502   l_ccid := AcctDerRule_4(
13503            p_application_id           => p_application_id
13504          , p_ae_header_id             => l_ae_header_id 
13505 , p_source_4 => p_source_4
13506          , x_transaction_coa_id       => l_adr_transaction_coa_id
13507          , x_accounting_coa_id        => l_adr_accounting_coa_id
13508          , x_value_type_code          => l_adr_value_type_code
13509          , p_side                     => 'NA'
13510    );
13511 
13512    xla_ae_lines_pkg.set_ccid(
13513     p_code_combination_id          => l_ccid
13514   , p_value_type_code              => l_adr_value_type_code
13515   , p_transaction_coa_id           => l_adr_transaction_coa_id
13516   , p_accounting_coa_id            => l_adr_accounting_coa_id
13517   , p_adr_code                     => 'CST_DEFAULT'
13518   , p_adr_type_code                => 'S'
13519   , p_component_type               => l_component_type
13520   , p_component_code               => l_component_code
13521   , p_component_type_code          => l_component_type_code
13522   , p_component_appl_id            => l_component_appl_id
13523   , p_amb_context_code             => l_amb_context_code
13524   , p_side                         => 'NA'
13525   );
13526 
13527 
13528    --
13529    --
13530    END IF;
13531 
13532        --
13533        -- Update the line information that should be overwritten
13534        --
13535        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
13536                                          p_header_num   => 1);
13537        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
13538 
13539        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
13540 
13541        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
13542           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
13543        END IF;
13544 
13545       --
13546       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
13547       --
13548       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
13549           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
13550       ELSE
13551           ---------------------------------------------------------------------------------------------------
13552           -- 4262811a Switch Sign
13553           ---------------------------------------------------------------------------------------------------
13554           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
13555           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13556                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13557           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13558                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13559           -- 5132302
13560           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
13561                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13562 
13563       END IF;
13564 
13565       -- 4955764
13566       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13567       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
13568 
13569 
13570       XLA_AE_LINES_PKG.ValidateCurrentLine;
13571       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13572 
13573       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13574                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
13575                ,p_balance_type_code => l_balance_type_code);
13576 
13577    END IF;
13578 
13579    -----------------------------------------------------------------------------------------
13580    -- 4262811 Multiperiod Accounting
13581    -----------------------------------------------------------------------------------------
13582      -- No MPA option is assigned.
13583 
13584 
13585 END IF;
13586 END IF;
13587 --
13588 
13589 --
13590 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13591    trace
13592       (p_msg      => 'END of AcctLineType_27'
13593       ,p_level    => C_LEVEL_PROCEDURE
13594       ,p_module   => l_log_module);
13595 END IF;
13596 --
13597 EXCEPTION
13598   WHEN xla_exceptions_pkg.application_exception THEN
13599       RAISE;
13600   WHEN OTHERS THEN
13601        xla_exceptions_pkg.raise_message
13602            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_27');
13603 END AcctLineType_27;
13604 --
13605 
13606 ---------------------------------------
13607 --
13608 -- PRIVATE FUNCTION
13609 --         AcctLineType_28
13610 --
13611 ---------------------------------------
13612 PROCEDURE AcctLineType_28 (
13613   p_application_id        IN NUMBER
13614  ,p_event_id              IN NUMBER
13615  ,p_calculate_acctd_flag  IN VARCHAR2
13616  ,p_calculate_g_l_flag    IN VARCHAR2
13617  ,p_actual_flag           IN OUT VARCHAR2
13618  ,p_balance_type_code     OUT VARCHAR2
13619  ,p_gain_or_loss_ref      OUT VARCHAR2
13620  
13621 --Cost Management Default Account
13622  , p_source_4            IN NUMBER
13623 --DISTRIBUTION_IDENTIFIER
13624  , p_source_11            IN NUMBER
13625 --Distribution Type
13626  , p_source_12            IN VARCHAR2
13627  , p_source_12_meaning    IN VARCHAR2
13628 --Entered Currency Code
13629  , p_source_15            IN VARCHAR2
13630 --Entered Amount
13631  , p_source_18            IN NUMBER
13632 --Currency Conversion Date
13633  , p_source_19            IN DATE
13634 --Currency Conversion Rate
13635  , p_source_20            IN NUMBER
13636 --Currency Conversion Type
13637  , p_source_21            IN VARCHAR2
13638 --Accounted Amount
13639  , p_source_22            IN NUMBER
13640 --Accounting Line Type
13641  , p_source_24            IN NUMBER
13642 )
13643 IS
13644 
13645 l_component_type              VARCHAR2(80);
13646 l_component_code              VARCHAR2(30);
13647 l_component_type_code         VARCHAR2(1);
13648 l_component_appl_id           INTEGER;
13649 l_amb_context_code            VARCHAR2(30);
13650 l_entity_code                 VARCHAR2(30);
13651 l_event_class_code            VARCHAR2(30);
13652 l_ae_header_id                NUMBER;
13653 l_event_type_code             VARCHAR2(30);
13654 l_line_definition_code        VARCHAR2(30);
13655 l_line_definition_owner_code  VARCHAR2(1);
13656 --
13657 -- adr variables
13658 l_segment                     VARCHAR2(30);
13659 l_ccid                        NUMBER;
13660 l_adr_transaction_coa_id      NUMBER;
13661 l_adr_accounting_coa_id       NUMBER;
13662 l_adr_flexfield_segment_code  VARCHAR2(30);
13663 l_adr_flex_value_set_id       NUMBER;
13664 l_adr_value_type_code         VARCHAR2(30);
13665 l_adr_value_combination_id    NUMBER;
13666 l_adr_value_segment_code      VARCHAR2(30);
13667 
13668 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
13669 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
13670 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
13671 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
13672 
13673 -- 4262811 Variables ------------------------------------------------------------------------------------------
13674 l_entered_amt_idx             NUMBER;
13675 l_accted_amt_idx              NUMBER;
13676 l_acc_rev_flag                VARCHAR2(1);
13677 l_accrual_line_num            NUMBER;
13678 l_tmp_amt                     NUMBER;
13679 l_acc_rev_natural_side_code   VARCHAR2(1);
13680 
13681 l_num_entries                 NUMBER;
13682 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
13683 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
13684 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
13685 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
13686 l_recog_line_1                NUMBER;
13687 l_recog_line_2                NUMBER;
13688 
13689 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
13690 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
13691 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
13692 
13693 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
13694 
13695 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
13696 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
13697 
13698 ---------------------------------------------------------------------------------------------------------------
13699 
13700 
13701 --
13702 -- bulk performance
13703 --
13704 l_balance_type_code           VARCHAR2(1);
13705 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
13706 l_log_module                  VARCHAR2(240);
13707 
13708 --
13709 -- Upgrade strategy
13710 --
13711 l_actual_upg_option           VARCHAR2(1);
13712 l_enc_upg_option           VARCHAR2(1);
13713 
13714 --
13715 BEGIN
13716 --
13717 IF g_log_enabled THEN
13718       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_28';
13719 END IF;
13720 --
13721 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13722 
13723       trace
13724          (p_msg      => 'BEGIN of AcctLineType_28'
13725          ,p_level    => C_LEVEL_PROCEDURE
13726          ,p_module   => l_log_module);
13727 
13728 END IF;
13729 --
13730 l_component_type             := 'AMB_JLT';
13731 l_component_code             := 'COST_VARIANCE';
13732 l_component_type_code        := 'S';
13733 l_component_appl_id          :=  707;
13734 l_amb_context_code           := 'DEFAULT';
13735 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
13736 l_event_class_code           := 'USER_DEFINE';
13737 l_event_type_code            := 'UMISC_ISSUE';
13738 l_line_definition_owner_code := 'S';
13739 l_line_definition_code       := 'USER_ISSUE';
13740 --
13741 l_balance_type_code          := 'A';
13742 l_segment                     := NULL;
13743 l_ccid                        := NULL;
13744 l_adr_transaction_coa_id      := NULL;
13745 l_adr_accounting_coa_id       := NULL;
13746 l_adr_flexfield_segment_code  := NULL;
13747 l_adr_flex_value_set_id       := NULL;
13748 l_adr_value_type_code         := NULL;
13749 l_adr_value_combination_id    := NULL;
13750 l_adr_value_segment_code      := NULL;
13751 
13752 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
13753 l_bflow_class_code           := '';    -- 4219869 Business Flow
13754 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
13755 l_budgetary_control_flag     := 'N';
13756 
13757 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
13758 l_bflow_applied_to_amt       := NULL; -- 5132302
13759 l_entered_amt_idx            := NULL;          -- 4262811
13760 l_accted_amt_idx             := NULL;          -- 4262811
13761 l_acc_rev_flag               := NULL;          -- 4262811
13762 l_accrual_line_num           := NULL;          -- 4262811
13763 l_tmp_amt                    := NULL;          -- 4262811
13764 --
13765  
13766 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
13767     l_balance_type_code <> 'B' THEN
13768 IF NVL(p_source_24,9E125) =  13
13769  THEN 
13770 
13771    --
13772    XLA_AE_LINES_PKG.SetNewLine;
13773 
13774    p_balance_type_code          := l_balance_type_code;
13775    -- set the flag so later we will know whether the gain loss line needs to be created
13776    
13777    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
13778      p_actual_flag :='A';
13779    END IF;
13780 
13781    --
13782    -- bulk performance
13783    --
13784    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
13785                                       p_header_num   => 0); -- 4262811
13786    --
13787    -- set accounting line options
13788    --
13789    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
13790            p_natural_side_code          => 'D'
13791          , p_gain_or_loss_flag          => 'N'
13792          , p_gl_transfer_mode_code      => 'S'
13793          , p_acct_entry_type_code       => 'A'
13794          , p_switch_side_flag           => 'Y'
13795          , p_merge_duplicate_code       => 'N'
13796          );
13797    --
13798    l_acc_rev_natural_side_code := 'C';  -- 4262811
13799    -- 
13800    --
13801    -- set accounting line type info
13802    --
13803    xla_ae_lines_pkg.SetAcctLineType
13804       (p_component_type             => l_component_type
13805       ,p_event_type_code            => l_event_type_code
13806       ,p_line_definition_owner_code => l_line_definition_owner_code
13807       ,p_line_definition_code       => l_line_definition_code
13808       ,p_accounting_line_code       => l_component_code
13809       ,p_accounting_line_type_code  => l_component_type_code
13810       ,p_accounting_line_appl_id    => l_component_appl_id
13811       ,p_amb_context_code           => l_amb_context_code
13812       ,p_entity_code                => l_entity_code
13813       ,p_event_class_code           => l_event_class_code);
13814    --
13815    -- set accounting class
13816    --
13817    xla_ae_lines_pkg.SetAcctClass(
13818            p_accounting_class_code  => 'COST_VARIANCE'
13819          , p_ae_header_id           => l_ae_header_id
13820          );
13821 
13822    --
13823    -- set rounding class
13824    --
13825    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
13826                       'COST_VARIANCE';
13827 
13828    --
13829    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
13830    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
13831    --
13832    -- bulk performance
13833    --
13834    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
13835 
13836    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
13837       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
13838 
13839    -- 4955764
13840    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13841       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
13842 
13843    -- 4458381 Public Sector Enh
13844    
13845    --
13846    -- set accounting attributes for the line type
13847    --
13848    l_entered_amt_idx := 3;
13849    l_accted_amt_idx  := 8;
13850    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
13851    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
13852    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
13853    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
13854    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
13855    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
13856    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
13857    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
13858    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
13859    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
13860    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
13861    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
13862    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
13863    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
13864    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
13865    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
13866    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
13867 
13868    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
13869    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
13870 
13871    ---------------------------------------------------------------------------------------------------------------
13872    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
13873    ---------------------------------------------------------------------------------------------------------------
13874    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
13875 
13876    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13877    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13878 
13879    IF xla_accounting_cache_pkg.GetValueChar
13880          (p_source_code         => 'LEDGER_CATEGORY_CODE'
13881          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
13882    AND l_bflow_method_code = 'PRIOR_ENTRY'
13883 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
13884    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
13885          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
13886        )
13887    THEN
13888          xla_ae_lines_pkg.BflowUpgEntry
13889            (p_business_method_code    => l_bflow_method_code
13890            ,p_business_class_code     => l_bflow_class_code
13891            ,p_balance_type            => l_balance_type_code);
13892    ELSE
13893       NULL;
13894 -- No business flow processing for business flow method of NONE.
13895    END IF;
13896 
13897    --
13898    -- call analytical criteria
13899    --
13900    
13901    --
13902    -- call description
13903    --
13904    -- No description or it is inherited.
13905    --
13906    -- call ADRs
13907    -- Bug 4922099
13908    --
13909    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13910         (NVL(l_actual_upg_option, 'N') = 'O') OR
13911         (NVL(l_enc_upg_option, 'N') = 'O')
13912       )
13913    THEN
13914    NULL;
13915    --
13916    --
13917    
13918   l_ccid := AcctDerRule_4(
13919            p_application_id           => p_application_id
13920          , p_ae_header_id             => l_ae_header_id 
13921 , p_source_4 => p_source_4
13922          , x_transaction_coa_id       => l_adr_transaction_coa_id
13923          , x_accounting_coa_id        => l_adr_accounting_coa_id
13924          , x_value_type_code          => l_adr_value_type_code
13925          , p_side                     => 'NA'
13926    );
13927 
13928    xla_ae_lines_pkg.set_ccid(
13929     p_code_combination_id          => l_ccid
13930   , p_value_type_code              => l_adr_value_type_code
13931   , p_transaction_coa_id           => l_adr_transaction_coa_id
13932   , p_accounting_coa_id            => l_adr_accounting_coa_id
13933   , p_adr_code                     => 'CST_DEFAULT'
13934   , p_adr_type_code                => 'S'
13935   , p_component_type               => l_component_type
13936   , p_component_code               => l_component_code
13937   , p_component_type_code          => l_component_type_code
13938   , p_component_appl_id            => l_component_appl_id
13939   , p_amb_context_code             => l_amb_context_code
13940   , p_side                         => 'NA'
13941   );
13942 
13943 
13944    --
13945    --
13946    END IF;
13947    --
13948    -- Bug 4922099
13949    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
13950           (NVL(l_enc_upg_option, 'N') = 'O')
13951         ) AND
13952         (l_bflow_method_code = 'PRIOR_ENTRY')
13953       )
13954    THEN
13955       IF
13956       --
13957       1 = 2
13958       --
13959       THEN
13960       xla_accounting_err_pkg.build_message
13961                                     (p_appli_s_name            => 'XLA'
13962                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13963                                     ,p_token_1                 => 'LINE_NUMBER'
13964                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
13965                                     ,p_token_2                 => 'LINE_TYPE_NAME'
13966                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
13967                                                                              l_component_type
13968                                                                             ,l_component_code
13969                                                                             ,l_component_type_code
13970                                                                             ,l_component_appl_id
13971                                                                             ,l_amb_context_code
13972                                                                             ,l_entity_code
13973                                                                             ,l_event_class_code
13974                                                                            )
13975                                     ,p_token_3                 => 'OWNER'
13976                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
13977                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
13978                                                                           ,p_lookup_code    => l_component_type_code
13979                                                                          )
13980                                     ,p_token_4                 => 'PRODUCT_NAME'
13981                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
13982                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13983                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13984                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
13985                                     ,p_ae_header_id            =>  NULL
13986                                        );
13987 
13988         IF (C_LEVEL_ERROR>= g_log_level) THEN
13989                  trace
13990                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13991                       ,p_level    => C_LEVEL_ERROR
13992                       ,p_module   => l_log_module);
13993         END IF;
13994       END IF;
13995    END IF;
13996    --
13997    --
13998    ------------------------------------------------------------------------------------------------
13999    -- 4219869 Business Flow
14000    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
14001    -- Prior Entry.  Currently, the following code is always generated.
14002    ------------------------------------------------------------------------------------------------
14003    XLA_AE_LINES_PKG.ValidateCurrentLine;
14004 
14005    ------------------------------------------------------------------------------------
14006    -- 4219869 Business Flow
14007    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
14008    ------------------------------------------------------------------------------------
14009    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14010 
14011    ----------------------------------------------------------------------------------
14012    -- 4219869 Business Flow
14013    -- Update journal entry status -- Need to generate this within IF <condition>
14014    ----------------------------------------------------------------------------------
14015    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14016          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
14017          ,p_balance_type_code => l_balance_type_code
14018          );
14019 
14020    -------------------------------------------------------------------------------------------
14021    -- 4262811 - Generate the Accrual Reversal lines
14022    -------------------------------------------------------------------------------------------
14023    BEGIN
14024       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
14025                               (g_array_event(p_event_id).array_value_num('header_index'));
14026       IF l_acc_rev_flag IS NULL THEN
14027          l_acc_rev_flag := 'N';
14028       END IF;
14029    EXCEPTION
14030       WHEN OTHERS THEN
14031          l_acc_rev_flag := 'N';
14032    END;
14033    --
14034    IF (l_acc_rev_flag = 'Y') THEN
14035 
14036        -- 4645092  ------------------------------------------------------------------------------
14037        -- To allow MPA report to determine if it should generate report process
14038        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
14039        ------------------------------------------------------------------------------------------
14040 
14041        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
14042        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
14043    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
14044    -- call ADRs
14045    -- Bug 4922099
14046    --
14047    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14048         (NVL(l_actual_upg_option, 'N') = 'O') OR
14049         (NVL(l_enc_upg_option, 'N') = 'O')
14050       )
14051    THEN
14052    NULL;
14053    --
14054    --
14055    
14056   l_ccid := AcctDerRule_4(
14057            p_application_id           => p_application_id
14058          , p_ae_header_id             => l_ae_header_id 
14059 , p_source_4 => p_source_4
14060          , x_transaction_coa_id       => l_adr_transaction_coa_id
14061          , x_accounting_coa_id        => l_adr_accounting_coa_id
14062          , x_value_type_code          => l_adr_value_type_code
14063          , p_side                     => 'NA'
14064    );
14065 
14066    xla_ae_lines_pkg.set_ccid(
14067     p_code_combination_id          => l_ccid
14068   , p_value_type_code              => l_adr_value_type_code
14069   , p_transaction_coa_id           => l_adr_transaction_coa_id
14070   , p_accounting_coa_id            => l_adr_accounting_coa_id
14071   , p_adr_code                     => 'CST_DEFAULT'
14072   , p_adr_type_code                => 'S'
14073   , p_component_type               => l_component_type
14074   , p_component_code               => l_component_code
14075   , p_component_type_code          => l_component_type_code
14076   , p_component_appl_id            => l_component_appl_id
14077   , p_amb_context_code             => l_amb_context_code
14078   , p_side                         => 'NA'
14079   );
14080 
14081 
14082    --
14083    --
14084    END IF;
14085 
14086        --
14087        -- Update the line information that should be overwritten
14088        --
14089        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
14090                                          p_header_num   => 1);
14091        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
14092 
14093        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
14094 
14095        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
14096           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
14097        END IF;
14098 
14099       --
14100       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
14101       --
14102       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
14103           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
14104       ELSE
14105           ---------------------------------------------------------------------------------------------------
14106           -- 4262811a Switch Sign
14107           ---------------------------------------------------------------------------------------------------
14108           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
14109           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14110                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14111           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14112                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14113           -- 5132302
14114           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
14115                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14116 
14117       END IF;
14118 
14119       -- 4955764
14120       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14121       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
14122 
14123 
14124       XLA_AE_LINES_PKG.ValidateCurrentLine;
14125       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14126 
14127       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14128                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
14129                ,p_balance_type_code => l_balance_type_code);
14130 
14131    END IF;
14132 
14133    -----------------------------------------------------------------------------------------
14134    -- 4262811 Multiperiod Accounting
14135    -----------------------------------------------------------------------------------------
14136      -- No MPA option is assigned.
14137 
14138 
14139 END IF;
14140 END IF;
14141 --
14142 
14143 --
14144 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14145    trace
14146       (p_msg      => 'END of AcctLineType_28'
14147       ,p_level    => C_LEVEL_PROCEDURE
14148       ,p_module   => l_log_module);
14149 END IF;
14150 --
14151 EXCEPTION
14152   WHEN xla_exceptions_pkg.application_exception THEN
14153       RAISE;
14154   WHEN OTHERS THEN
14155        xla_exceptions_pkg.raise_message
14156            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_28');
14157 END AcctLineType_28;
14158 --
14159 
14160 ---------------------------------------
14161 --
14162 -- PRIVATE FUNCTION
14163 --         AcctLineType_29
14164 --
14165 ---------------------------------------
14166 PROCEDURE AcctLineType_29 (
14167   p_application_id        IN NUMBER
14168  ,p_event_id              IN NUMBER
14169  ,p_calculate_acctd_flag  IN VARCHAR2
14170  ,p_calculate_g_l_flag    IN VARCHAR2
14171  ,p_actual_flag           IN OUT VARCHAR2
14172  ,p_balance_type_code     OUT VARCHAR2
14173  ,p_gain_or_loss_ref      OUT VARCHAR2
14174  
14175 --Cost Management Default Account
14176  , p_source_4            IN NUMBER
14177 --Applied to Application ID
14178  , p_source_6            IN NUMBER
14179 --Applied to Distribution Link Type
14180  , p_source_7            IN VARCHAR2
14181 --Applied to Entity Code
14182  , p_source_8            IN VARCHAR2
14183 --DISTRIBUTION_IDENTIFIER
14184  , p_source_11            IN NUMBER
14185 --Distribution Type
14186  , p_source_12            IN VARCHAR2
14187  , p_source_12_meaning    IN VARCHAR2
14188 --Encumbrance Reversal Amount Entered
14189  , p_source_14            IN NUMBER
14190 --Entered Currency Code
14191  , p_source_15            IN VARCHAR2
14192 --Transaction Encumbrance Reversal Amount
14193  , p_source_16            IN NUMBER
14194 --Entered Amount
14195  , p_source_18            IN NUMBER
14196 --Currency Conversion Date
14197  , p_source_19            IN DATE
14198 --Currency Conversion Rate
14199  , p_source_20            IN NUMBER
14200 --Currency Conversion Type
14201  , p_source_21            IN VARCHAR2
14202 --Accounted Amount
14203  , p_source_22            IN NUMBER
14204 --Accounting Line Type
14205  , p_source_24            IN NUMBER
14206 --Costing Encumbrance Upgrade Option
14207  , p_source_27            IN VARCHAR2
14208 --TXN_PO_DISTRIBUTION_ID
14209  , p_source_28            IN NUMBER
14210 --TXN_PO_HEADER_ID
14211  , p_source_29            IN NUMBER
14212 --Requisition Budget Account
14213  , p_source_30            IN NUMBER
14214 --Requisition Encumbrance Type Identifier
14215  , p_source_31            IN NUMBER
14216 )
14217 IS
14218 
14219 l_component_type              VARCHAR2(80);
14220 l_component_code              VARCHAR2(30);
14221 l_component_type_code         VARCHAR2(1);
14222 l_component_appl_id           INTEGER;
14223 l_amb_context_code            VARCHAR2(30);
14224 l_entity_code                 VARCHAR2(30);
14225 l_event_class_code            VARCHAR2(30);
14226 l_ae_header_id                NUMBER;
14227 l_event_type_code             VARCHAR2(30);
14228 l_line_definition_code        VARCHAR2(30);
14229 l_line_definition_owner_code  VARCHAR2(1);
14230 --
14231 -- adr variables
14232 l_segment                     VARCHAR2(30);
14233 l_ccid                        NUMBER;
14234 l_adr_transaction_coa_id      NUMBER;
14235 l_adr_accounting_coa_id       NUMBER;
14236 l_adr_flexfield_segment_code  VARCHAR2(30);
14237 l_adr_flex_value_set_id       NUMBER;
14238 l_adr_value_type_code         VARCHAR2(30);
14239 l_adr_value_combination_id    NUMBER;
14240 l_adr_value_segment_code      VARCHAR2(30);
14241 
14242 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
14243 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
14244 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
14245 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
14246 
14247 -- 4262811 Variables ------------------------------------------------------------------------------------------
14248 l_entered_amt_idx             NUMBER;
14249 l_accted_amt_idx              NUMBER;
14250 l_acc_rev_flag                VARCHAR2(1);
14251 l_accrual_line_num            NUMBER;
14252 l_tmp_amt                     NUMBER;
14253 l_acc_rev_natural_side_code   VARCHAR2(1);
14254 
14255 l_num_entries                 NUMBER;
14256 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
14257 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
14258 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
14259 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
14260 l_recog_line_1                NUMBER;
14261 l_recog_line_2                NUMBER;
14262 
14263 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
14264 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
14265 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
14266 
14267 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
14268 
14269 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
14270 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
14271 
14272 ---------------------------------------------------------------------------------------------------------------
14273 
14274 
14275 --
14276 -- bulk performance
14277 --
14278 l_balance_type_code           VARCHAR2(1);
14279 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
14280 l_log_module                  VARCHAR2(240);
14281 
14282 --
14283 -- Upgrade strategy
14284 --
14285 l_actual_upg_option           VARCHAR2(1);
14286 l_enc_upg_option           VARCHAR2(1);
14287 
14288 --
14289 BEGIN
14290 --
14291 IF g_log_enabled THEN
14292       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_29';
14293 END IF;
14294 --
14295 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14296 
14297       trace
14298          (p_msg      => 'BEGIN of AcctLineType_29'
14299          ,p_level    => C_LEVEL_PROCEDURE
14300          ,p_module   => l_log_module);
14301 
14302 END IF;
14303 --
14304 l_component_type             := 'AMB_JLT';
14305 l_component_code             := 'COST_VARIANCE';
14306 l_component_type_code        := 'S';
14307 l_component_appl_id          :=  707;
14308 l_amb_context_code           := 'DEFAULT';
14309 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
14310 l_event_class_code           := 'DIR_INTERORG_RCPT';
14311 l_event_type_code            := 'DIR_INTERORG_RCPT_ALL';
14312 l_line_definition_owner_code := 'S';
14313 l_line_definition_code       := 'DIRECT_INTERORG_RCPT';
14314 --
14315 l_balance_type_code          := 'A';
14316 l_segment                     := NULL;
14317 l_ccid                        := NULL;
14318 l_adr_transaction_coa_id      := NULL;
14319 l_adr_accounting_coa_id       := NULL;
14320 l_adr_flexfield_segment_code  := NULL;
14321 l_adr_flex_value_set_id       := NULL;
14322 l_adr_value_type_code         := NULL;
14323 l_adr_value_combination_id    := NULL;
14324 l_adr_value_segment_code      := NULL;
14325 
14326 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
14327 l_bflow_class_code           := '';    -- 4219869 Business Flow
14328 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
14329 l_budgetary_control_flag     := 'N';
14330 
14331 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
14332 l_bflow_applied_to_amt       := NULL; -- 5132302
14333 l_entered_amt_idx            := NULL;          -- 4262811
14334 l_accted_amt_idx             := NULL;          -- 4262811
14335 l_acc_rev_flag               := NULL;          -- 4262811
14336 l_accrual_line_num           := NULL;          -- 4262811
14337 l_tmp_amt                    := NULL;          -- 4262811
14338 --
14339  
14340 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
14341     l_balance_type_code <> 'B' THEN
14342 IF NVL(p_source_24,9E125) =  13
14343  THEN 
14344 
14345    --
14346    XLA_AE_LINES_PKG.SetNewLine;
14347 
14348    p_balance_type_code          := l_balance_type_code;
14349    -- set the flag so later we will know whether the gain loss line needs to be created
14350    
14351    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
14352      p_actual_flag :='A';
14353    END IF;
14354 
14355    --
14356    -- bulk performance
14357    --
14358    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
14359                                       p_header_num   => 0); -- 4262811
14360    --
14361    -- set accounting line options
14362    --
14363    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
14364            p_natural_side_code          => 'D'
14365          , p_gain_or_loss_flag          => 'N'
14366          , p_gl_transfer_mode_code      => 'S'
14367          , p_acct_entry_type_code       => 'A'
14368          , p_switch_side_flag           => 'Y'
14369          , p_merge_duplicate_code       => 'N'
14370          );
14371    --
14372    l_acc_rev_natural_side_code := 'C';  -- 4262811
14373    -- 
14374    --
14375    -- set accounting line type info
14376    --
14377    xla_ae_lines_pkg.SetAcctLineType
14378       (p_component_type             => l_component_type
14379       ,p_event_type_code            => l_event_type_code
14380       ,p_line_definition_owner_code => l_line_definition_owner_code
14381       ,p_line_definition_code       => l_line_definition_code
14382       ,p_accounting_line_code       => l_component_code
14383       ,p_accounting_line_type_code  => l_component_type_code
14384       ,p_accounting_line_appl_id    => l_component_appl_id
14385       ,p_amb_context_code           => l_amb_context_code
14386       ,p_entity_code                => l_entity_code
14387       ,p_event_class_code           => l_event_class_code);
14388    --
14389    -- set accounting class
14390    --
14391    xla_ae_lines_pkg.SetAcctClass(
14392            p_accounting_class_code  => 'COST_VARIANCE'
14393          , p_ae_header_id           => l_ae_header_id
14394          );
14395 
14396    --
14397    -- set rounding class
14398    --
14399    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
14400                       'COST_VARIANCE';
14401 
14402    --
14403    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
14404    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
14405    --
14406    -- bulk performance
14407    --
14408    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
14409 
14410    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
14411       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
14412 
14413    -- 4955764
14414    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14415       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
14416 
14417    -- 4458381 Public Sector Enh
14418    
14419    --
14420    -- set accounting attributes for the line type
14421    --
14422    l_entered_amt_idx := 17;
14423    l_accted_amt_idx  := 22;
14424    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
14425    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
14426    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
14427    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
14428    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
14429    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
14430    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
14431    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
14432    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
14433    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
14434    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
14435    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
14436    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
14437    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
14438    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
14439    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
14440    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
14441    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
14442    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
14443    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
14444    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
14445    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
14446    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
14447    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
14448    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
14449    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
14450    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
14451    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
14452    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
14453    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
14454    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
14455    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
14456    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
14457    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
14458    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
14459    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
14460    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
14461    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
14462    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
14463    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
14464    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
14465    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
14466    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
14467    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
14468    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
14469    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
14470    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
14471    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
14472    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
14473 
14474    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
14475    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
14476 
14477    ---------------------------------------------------------------------------------------------------------------
14478    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
14479    ---------------------------------------------------------------------------------------------------------------
14480    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
14481 
14482    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14483    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14484 
14485    IF xla_accounting_cache_pkg.GetValueChar
14486          (p_source_code         => 'LEDGER_CATEGORY_CODE'
14487          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
14488    AND l_bflow_method_code = 'PRIOR_ENTRY'
14489 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
14490    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
14491          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
14492        )
14493    THEN
14494          xla_ae_lines_pkg.BflowUpgEntry
14495            (p_business_method_code    => l_bflow_method_code
14496            ,p_business_class_code     => l_bflow_class_code
14497            ,p_balance_type            => l_balance_type_code);
14498    ELSE
14499       NULL;
14500 -- No business flow processing for business flow method of NONE.
14501    END IF;
14502 
14503    --
14504    -- call analytical criteria
14505    --
14506    
14507    --
14508    -- call description
14509    --
14510    -- No description or it is inherited.
14511    --
14512    -- call ADRs
14513    -- Bug 4922099
14514    --
14515    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14516         (NVL(l_actual_upg_option, 'N') = 'O') OR
14517         (NVL(l_enc_upg_option, 'N') = 'O')
14518       )
14519    THEN
14520    NULL;
14521    --
14522    --
14523    
14524   l_ccid := AcctDerRule_4(
14525            p_application_id           => p_application_id
14526          , p_ae_header_id             => l_ae_header_id 
14527 , p_source_4 => p_source_4
14528          , x_transaction_coa_id       => l_adr_transaction_coa_id
14529          , x_accounting_coa_id        => l_adr_accounting_coa_id
14530          , x_value_type_code          => l_adr_value_type_code
14531          , p_side                     => 'NA'
14532    );
14533 
14534    xla_ae_lines_pkg.set_ccid(
14535     p_code_combination_id          => l_ccid
14536   , p_value_type_code              => l_adr_value_type_code
14537   , p_transaction_coa_id           => l_adr_transaction_coa_id
14538   , p_accounting_coa_id            => l_adr_accounting_coa_id
14539   , p_adr_code                     => 'CST_DEFAULT'
14540   , p_adr_type_code                => 'S'
14541   , p_component_type               => l_component_type
14542   , p_component_code               => l_component_code
14543   , p_component_type_code          => l_component_type_code
14544   , p_component_appl_id            => l_component_appl_id
14545   , p_amb_context_code             => l_amb_context_code
14546   , p_side                         => 'NA'
14547   );
14548 
14549 
14550    --
14551    --
14552    END IF;
14553    --
14554    -- Bug 4922099
14555    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
14556           (NVL(l_enc_upg_option, 'N') = 'O')
14557         ) AND
14558         (l_bflow_method_code = 'PRIOR_ENTRY')
14559       )
14560    THEN
14561       IF
14562       --
14563       1 = 2
14564       --
14565       THEN
14566       xla_accounting_err_pkg.build_message
14567                                     (p_appli_s_name            => 'XLA'
14568                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14569                                     ,p_token_1                 => 'LINE_NUMBER'
14570                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
14571                                     ,p_token_2                 => 'LINE_TYPE_NAME'
14572                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
14573                                                                              l_component_type
14574                                                                             ,l_component_code
14575                                                                             ,l_component_type_code
14576                                                                             ,l_component_appl_id
14577                                                                             ,l_amb_context_code
14578                                                                             ,l_entity_code
14579                                                                             ,l_event_class_code
14580                                                                            )
14581                                     ,p_token_3                 => 'OWNER'
14582                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
14583                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
14584                                                                           ,p_lookup_code    => l_component_type_code
14585                                                                          )
14586                                     ,p_token_4                 => 'PRODUCT_NAME'
14587                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
14588                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
14589                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
14590                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
14591                                     ,p_ae_header_id            =>  NULL
14592                                        );
14593 
14594         IF (C_LEVEL_ERROR>= g_log_level) THEN
14595                  trace
14596                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14597                       ,p_level    => C_LEVEL_ERROR
14598                       ,p_module   => l_log_module);
14599         END IF;
14600       END IF;
14601    END IF;
14602    --
14603    --
14604    ------------------------------------------------------------------------------------------------
14605    -- 4219869 Business Flow
14606    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
14607    -- Prior Entry.  Currently, the following code is always generated.
14608    ------------------------------------------------------------------------------------------------
14609    XLA_AE_LINES_PKG.ValidateCurrentLine;
14610 
14611    ------------------------------------------------------------------------------------
14612    -- 4219869 Business Flow
14613    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
14614    ------------------------------------------------------------------------------------
14615    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14616 
14617    ----------------------------------------------------------------------------------
14618    -- 4219869 Business Flow
14619    -- Update journal entry status -- Need to generate this within IF <condition>
14620    ----------------------------------------------------------------------------------
14621    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14622          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
14623          ,p_balance_type_code => l_balance_type_code
14624          );
14625 
14626    -------------------------------------------------------------------------------------------
14627    -- 4262811 - Generate the Accrual Reversal lines
14628    -------------------------------------------------------------------------------------------
14629    BEGIN
14630       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
14631                               (g_array_event(p_event_id).array_value_num('header_index'));
14632       IF l_acc_rev_flag IS NULL THEN
14633          l_acc_rev_flag := 'N';
14634       END IF;
14635    EXCEPTION
14636       WHEN OTHERS THEN
14637          l_acc_rev_flag := 'N';
14638    END;
14639    --
14640    IF (l_acc_rev_flag = 'Y') THEN
14641 
14642        -- 4645092  ------------------------------------------------------------------------------
14643        -- To allow MPA report to determine if it should generate report process
14644        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
14645        ------------------------------------------------------------------------------------------
14646 
14647        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
14648        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
14649    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
14650    -- call ADRs
14651    -- Bug 4922099
14652    --
14653    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14654         (NVL(l_actual_upg_option, 'N') = 'O') OR
14655         (NVL(l_enc_upg_option, 'N') = 'O')
14656       )
14657    THEN
14658    NULL;
14659    --
14660    --
14661    
14662   l_ccid := AcctDerRule_4(
14663            p_application_id           => p_application_id
14664          , p_ae_header_id             => l_ae_header_id 
14665 , p_source_4 => p_source_4
14666          , x_transaction_coa_id       => l_adr_transaction_coa_id
14667          , x_accounting_coa_id        => l_adr_accounting_coa_id
14668          , x_value_type_code          => l_adr_value_type_code
14669          , p_side                     => 'NA'
14670    );
14671 
14672    xla_ae_lines_pkg.set_ccid(
14673     p_code_combination_id          => l_ccid
14674   , p_value_type_code              => l_adr_value_type_code
14675   , p_transaction_coa_id           => l_adr_transaction_coa_id
14676   , p_accounting_coa_id            => l_adr_accounting_coa_id
14677   , p_adr_code                     => 'CST_DEFAULT'
14678   , p_adr_type_code                => 'S'
14679   , p_component_type               => l_component_type
14680   , p_component_code               => l_component_code
14681   , p_component_type_code          => l_component_type_code
14682   , p_component_appl_id            => l_component_appl_id
14683   , p_amb_context_code             => l_amb_context_code
14684   , p_side                         => 'NA'
14685   );
14686 
14687 
14688    --
14689    --
14690    END IF;
14691 
14692        --
14693        -- Update the line information that should be overwritten
14694        --
14695        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
14696                                          p_header_num   => 1);
14697        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
14698 
14699        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
14700 
14701        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
14702           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
14703        END IF;
14704 
14705       --
14706       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
14707       --
14708       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
14709           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
14710       ELSE
14711           ---------------------------------------------------------------------------------------------------
14712           -- 4262811a Switch Sign
14713           ---------------------------------------------------------------------------------------------------
14714           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
14715           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14716                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14717           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14718                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14719           -- 5132302
14720           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
14721                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14722 
14723       END IF;
14724 
14725       -- 4955764
14726       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14727       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
14728 
14729 
14730       XLA_AE_LINES_PKG.ValidateCurrentLine;
14731       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14732 
14733       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14734                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
14735                ,p_balance_type_code => l_balance_type_code);
14736 
14737    END IF;
14738 
14739    -----------------------------------------------------------------------------------------
14740    -- 4262811 Multiperiod Accounting
14741    -----------------------------------------------------------------------------------------
14742      -- No MPA option is assigned.
14743 
14744 
14745 END IF;
14746 END IF;
14747 --
14748 
14749 --
14750 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14751    trace
14752       (p_msg      => 'END of AcctLineType_29'
14753       ,p_level    => C_LEVEL_PROCEDURE
14754       ,p_module   => l_log_module);
14755 END IF;
14756 --
14757 EXCEPTION
14758   WHEN xla_exceptions_pkg.application_exception THEN
14759       RAISE;
14760   WHEN OTHERS THEN
14761        xla_exceptions_pkg.raise_message
14762            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_29');
14763 END AcctLineType_29;
14764 --
14765 
14766 ---------------------------------------
14767 --
14768 -- PRIVATE FUNCTION
14769 --         AcctLineType_30
14770 --
14771 ---------------------------------------
14772 PROCEDURE AcctLineType_30 (
14773   p_application_id        IN NUMBER
14774  ,p_event_id              IN NUMBER
14775  ,p_calculate_acctd_flag  IN VARCHAR2
14776  ,p_calculate_g_l_flag    IN VARCHAR2
14777  ,p_actual_flag           IN OUT VARCHAR2
14778  ,p_balance_type_code     OUT VARCHAR2
14779  ,p_gain_or_loss_ref      OUT VARCHAR2
14780  
14781 --Cost Management Default Account
14782  , p_source_4            IN NUMBER
14783 --DISTRIBUTION_IDENTIFIER
14784  , p_source_11            IN NUMBER
14785 --Distribution Type
14786  , p_source_12            IN VARCHAR2
14787  , p_source_12_meaning    IN VARCHAR2
14788 --Entered Currency Code
14789  , p_source_15            IN VARCHAR2
14790 --Entered Amount
14791  , p_source_18            IN NUMBER
14792 --Currency Conversion Date
14793  , p_source_19            IN DATE
14794 --Currency Conversion Rate
14795  , p_source_20            IN NUMBER
14796 --Currency Conversion Type
14797  , p_source_21            IN VARCHAR2
14798 --Accounted Amount
14799  , p_source_22            IN NUMBER
14800 --Accounting Line Type
14801  , p_source_24            IN NUMBER
14802 )
14803 IS
14804 
14805 l_component_type              VARCHAR2(80);
14806 l_component_code              VARCHAR2(30);
14807 l_component_type_code         VARCHAR2(1);
14808 l_component_appl_id           INTEGER;
14809 l_amb_context_code            VARCHAR2(30);
14810 l_entity_code                 VARCHAR2(30);
14811 l_event_class_code            VARCHAR2(30);
14812 l_ae_header_id                NUMBER;
14813 l_event_type_code             VARCHAR2(30);
14814 l_line_definition_code        VARCHAR2(30);
14815 l_line_definition_owner_code  VARCHAR2(1);
14816 --
14817 -- adr variables
14818 l_segment                     VARCHAR2(30);
14819 l_ccid                        NUMBER;
14820 l_adr_transaction_coa_id      NUMBER;
14821 l_adr_accounting_coa_id       NUMBER;
14822 l_adr_flexfield_segment_code  VARCHAR2(30);
14823 l_adr_flex_value_set_id       NUMBER;
14824 l_adr_value_type_code         VARCHAR2(30);
14825 l_adr_value_combination_id    NUMBER;
14826 l_adr_value_segment_code      VARCHAR2(30);
14827 
14828 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
14829 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
14830 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
14831 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
14832 
14833 -- 4262811 Variables ------------------------------------------------------------------------------------------
14834 l_entered_amt_idx             NUMBER;
14835 l_accted_amt_idx              NUMBER;
14836 l_acc_rev_flag                VARCHAR2(1);
14837 l_accrual_line_num            NUMBER;
14838 l_tmp_amt                     NUMBER;
14839 l_acc_rev_natural_side_code   VARCHAR2(1);
14840 
14841 l_num_entries                 NUMBER;
14842 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
14843 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
14844 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
14845 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
14846 l_recog_line_1                NUMBER;
14847 l_recog_line_2                NUMBER;
14848 
14849 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
14850 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
14851 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
14852 
14853 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
14854 
14855 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
14856 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
14857 
14858 ---------------------------------------------------------------------------------------------------------------
14859 
14860 
14861 --
14862 -- bulk performance
14863 --
14864 l_balance_type_code           VARCHAR2(1);
14865 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
14866 l_log_module                  VARCHAR2(240);
14867 
14868 --
14869 -- Upgrade strategy
14870 --
14871 l_actual_upg_option           VARCHAR2(1);
14872 l_enc_upg_option           VARCHAR2(1);
14873 
14874 --
14875 BEGIN
14876 --
14877 IF g_log_enabled THEN
14878       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_30';
14879 END IF;
14880 --
14881 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14882 
14883       trace
14884          (p_msg      => 'BEGIN of AcctLineType_30'
14885          ,p_level    => C_LEVEL_PROCEDURE
14886          ,p_module   => l_log_module);
14887 
14888 END IF;
14889 --
14890 l_component_type             := 'AMB_JLT';
14891 l_component_code             := 'COST_VARIANCE';
14892 l_component_type_code        := 'S';
14893 l_component_appl_id          :=  707;
14894 l_amb_context_code           := 'DEFAULT';
14895 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
14896 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
14897 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
14898 l_line_definition_owner_code := 'S';
14899 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_SHIP';
14900 --
14901 l_balance_type_code          := 'A';
14902 l_segment                     := NULL;
14903 l_ccid                        := NULL;
14904 l_adr_transaction_coa_id      := NULL;
14905 l_adr_accounting_coa_id       := NULL;
14906 l_adr_flexfield_segment_code  := NULL;
14907 l_adr_flex_value_set_id       := NULL;
14908 l_adr_value_type_code         := NULL;
14909 l_adr_value_combination_id    := NULL;
14910 l_adr_value_segment_code      := NULL;
14911 
14912 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
14913 l_bflow_class_code           := '';    -- 4219869 Business Flow
14914 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
14915 l_budgetary_control_flag     := 'N';
14916 
14917 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
14918 l_bflow_applied_to_amt       := NULL; -- 5132302
14919 l_entered_amt_idx            := NULL;          -- 4262811
14920 l_accted_amt_idx             := NULL;          -- 4262811
14921 l_acc_rev_flag               := NULL;          -- 4262811
14922 l_accrual_line_num           := NULL;          -- 4262811
14923 l_tmp_amt                    := NULL;          -- 4262811
14924 --
14925  
14926 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
14927     l_balance_type_code <> 'B' THEN
14928 IF NVL(p_source_24,9E125) =  13
14929  THEN 
14930 
14931    --
14932    XLA_AE_LINES_PKG.SetNewLine;
14933 
14934    p_balance_type_code          := l_balance_type_code;
14935    -- set the flag so later we will know whether the gain loss line needs to be created
14936    
14937    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
14938      p_actual_flag :='A';
14939    END IF;
14940 
14941    --
14942    -- bulk performance
14943    --
14944    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
14945                                       p_header_num   => 0); -- 4262811
14946    --
14947    -- set accounting line options
14948    --
14949    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
14950            p_natural_side_code          => 'D'
14951          , p_gain_or_loss_flag          => 'N'
14952          , p_gl_transfer_mode_code      => 'S'
14953          , p_acct_entry_type_code       => 'A'
14954          , p_switch_side_flag           => 'Y'
14955          , p_merge_duplicate_code       => 'N'
14956          );
14957    --
14958    l_acc_rev_natural_side_code := 'C';  -- 4262811
14959    -- 
14960    --
14961    -- set accounting line type info
14962    --
14963    xla_ae_lines_pkg.SetAcctLineType
14964       (p_component_type             => l_component_type
14965       ,p_event_type_code            => l_event_type_code
14966       ,p_line_definition_owner_code => l_line_definition_owner_code
14967       ,p_line_definition_code       => l_line_definition_code
14968       ,p_accounting_line_code       => l_component_code
14969       ,p_accounting_line_type_code  => l_component_type_code
14970       ,p_accounting_line_appl_id    => l_component_appl_id
14971       ,p_amb_context_code           => l_amb_context_code
14972       ,p_entity_code                => l_entity_code
14973       ,p_event_class_code           => l_event_class_code);
14974    --
14975    -- set accounting class
14976    --
14977    xla_ae_lines_pkg.SetAcctClass(
14978            p_accounting_class_code  => 'COST_VARIANCE'
14979          , p_ae_header_id           => l_ae_header_id
14980          );
14981 
14982    --
14983    -- set rounding class
14984    --
14985    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
14986                       'COST_VARIANCE';
14987 
14988    --
14989    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
14990    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
14991    --
14992    -- bulk performance
14993    --
14994    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
14995 
14996    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
14997       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
14998 
14999    -- 4955764
15000    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15001       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
15002 
15003    -- 4458381 Public Sector Enh
15004    
15005    --
15006    -- set accounting attributes for the line type
15007    --
15008    l_entered_amt_idx := 3;
15009    l_accted_amt_idx  := 8;
15010    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
15011    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
15012    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
15013    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
15014    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
15015    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
15016    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
15017    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
15018    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
15019    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
15020    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
15021    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
15022    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
15023    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
15024    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
15025    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
15026    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
15027 
15028    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
15029    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
15030 
15031    ---------------------------------------------------------------------------------------------------------------
15032    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
15033    ---------------------------------------------------------------------------------------------------------------
15034    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
15035 
15036    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15037    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15038 
15039    IF xla_accounting_cache_pkg.GetValueChar
15040          (p_source_code         => 'LEDGER_CATEGORY_CODE'
15041          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
15042    AND l_bflow_method_code = 'PRIOR_ENTRY'
15043 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
15044    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
15045          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
15046        )
15047    THEN
15048          xla_ae_lines_pkg.BflowUpgEntry
15049            (p_business_method_code    => l_bflow_method_code
15050            ,p_business_class_code     => l_bflow_class_code
15051            ,p_balance_type            => l_balance_type_code);
15052    ELSE
15053       NULL;
15054 -- No business flow processing for business flow method of NONE.
15055    END IF;
15056 
15057    --
15058    -- call analytical criteria
15059    --
15060    
15061    --
15062    -- call description
15063    --
15064    -- No description or it is inherited.
15065    --
15066    -- call ADRs
15067    -- Bug 4922099
15068    --
15069    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15070         (NVL(l_actual_upg_option, 'N') = 'O') OR
15071         (NVL(l_enc_upg_option, 'N') = 'O')
15072       )
15073    THEN
15074    NULL;
15075    --
15076    --
15077    
15078   l_ccid := AcctDerRule_4(
15079            p_application_id           => p_application_id
15080          , p_ae_header_id             => l_ae_header_id 
15081 , p_source_4 => p_source_4
15082          , x_transaction_coa_id       => l_adr_transaction_coa_id
15083          , x_accounting_coa_id        => l_adr_accounting_coa_id
15084          , x_value_type_code          => l_adr_value_type_code
15085          , p_side                     => 'NA'
15086    );
15087 
15088    xla_ae_lines_pkg.set_ccid(
15089     p_code_combination_id          => l_ccid
15090   , p_value_type_code              => l_adr_value_type_code
15091   , p_transaction_coa_id           => l_adr_transaction_coa_id
15092   , p_accounting_coa_id            => l_adr_accounting_coa_id
15093   , p_adr_code                     => 'CST_DEFAULT'
15094   , p_adr_type_code                => 'S'
15095   , p_component_type               => l_component_type
15096   , p_component_code               => l_component_code
15097   , p_component_type_code          => l_component_type_code
15098   , p_component_appl_id            => l_component_appl_id
15099   , p_amb_context_code             => l_amb_context_code
15100   , p_side                         => 'NA'
15101   );
15102 
15103 
15104    --
15105    --
15106    END IF;
15107    --
15108    -- Bug 4922099
15109    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
15110           (NVL(l_enc_upg_option, 'N') = 'O')
15111         ) AND
15112         (l_bflow_method_code = 'PRIOR_ENTRY')
15113       )
15114    THEN
15115       IF
15116       --
15117       1 = 2
15118       --
15119       THEN
15120       xla_accounting_err_pkg.build_message
15121                                     (p_appli_s_name            => 'XLA'
15122                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15123                                     ,p_token_1                 => 'LINE_NUMBER'
15124                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
15125                                     ,p_token_2                 => 'LINE_TYPE_NAME'
15126                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
15127                                                                              l_component_type
15128                                                                             ,l_component_code
15129                                                                             ,l_component_type_code
15130                                                                             ,l_component_appl_id
15131                                                                             ,l_amb_context_code
15132                                                                             ,l_entity_code
15133                                                                             ,l_event_class_code
15134                                                                            )
15135                                     ,p_token_3                 => 'OWNER'
15136                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
15137                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
15138                                                                           ,p_lookup_code    => l_component_type_code
15139                                                                          )
15140                                     ,p_token_4                 => 'PRODUCT_NAME'
15141                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
15142                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
15143                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
15144                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
15145                                     ,p_ae_header_id            =>  NULL
15146                                        );
15147 
15148         IF (C_LEVEL_ERROR>= g_log_level) THEN
15149                  trace
15150                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15151                       ,p_level    => C_LEVEL_ERROR
15152                       ,p_module   => l_log_module);
15153         END IF;
15154       END IF;
15155    END IF;
15156    --
15157    --
15158    ------------------------------------------------------------------------------------------------
15159    -- 4219869 Business Flow
15160    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
15161    -- Prior Entry.  Currently, the following code is always generated.
15162    ------------------------------------------------------------------------------------------------
15163    XLA_AE_LINES_PKG.ValidateCurrentLine;
15164 
15165    ------------------------------------------------------------------------------------
15166    -- 4219869 Business Flow
15167    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
15168    ------------------------------------------------------------------------------------
15169    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15170 
15171    ----------------------------------------------------------------------------------
15172    -- 4219869 Business Flow
15173    -- Update journal entry status -- Need to generate this within IF <condition>
15174    ----------------------------------------------------------------------------------
15175    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15176          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
15177          ,p_balance_type_code => l_balance_type_code
15178          );
15179 
15180    -------------------------------------------------------------------------------------------
15181    -- 4262811 - Generate the Accrual Reversal lines
15182    -------------------------------------------------------------------------------------------
15183    BEGIN
15184       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
15185                               (g_array_event(p_event_id).array_value_num('header_index'));
15186       IF l_acc_rev_flag IS NULL THEN
15187          l_acc_rev_flag := 'N';
15188       END IF;
15189    EXCEPTION
15190       WHEN OTHERS THEN
15191          l_acc_rev_flag := 'N';
15192    END;
15193    --
15194    IF (l_acc_rev_flag = 'Y') THEN
15195 
15196        -- 4645092  ------------------------------------------------------------------------------
15197        -- To allow MPA report to determine if it should generate report process
15198        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
15199        ------------------------------------------------------------------------------------------
15200 
15201        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
15202        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
15203    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
15204    -- call ADRs
15205    -- Bug 4922099
15206    --
15207    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15208         (NVL(l_actual_upg_option, 'N') = 'O') OR
15209         (NVL(l_enc_upg_option, 'N') = 'O')
15210       )
15211    THEN
15212    NULL;
15213    --
15214    --
15215    
15216   l_ccid := AcctDerRule_4(
15217            p_application_id           => p_application_id
15218          , p_ae_header_id             => l_ae_header_id 
15219 , p_source_4 => p_source_4
15220          , x_transaction_coa_id       => l_adr_transaction_coa_id
15221          , x_accounting_coa_id        => l_adr_accounting_coa_id
15222          , x_value_type_code          => l_adr_value_type_code
15223          , p_side                     => 'NA'
15224    );
15225 
15226    xla_ae_lines_pkg.set_ccid(
15227     p_code_combination_id          => l_ccid
15228   , p_value_type_code              => l_adr_value_type_code
15229   , p_transaction_coa_id           => l_adr_transaction_coa_id
15230   , p_accounting_coa_id            => l_adr_accounting_coa_id
15231   , p_adr_code                     => 'CST_DEFAULT'
15232   , p_adr_type_code                => 'S'
15233   , p_component_type               => l_component_type
15234   , p_component_code               => l_component_code
15235   , p_component_type_code          => l_component_type_code
15236   , p_component_appl_id            => l_component_appl_id
15237   , p_amb_context_code             => l_amb_context_code
15238   , p_side                         => 'NA'
15239   );
15240 
15241 
15242    --
15243    --
15244    END IF;
15245 
15246        --
15247        -- Update the line information that should be overwritten
15248        --
15249        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
15250                                          p_header_num   => 1);
15251        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
15252 
15253        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
15254 
15255        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
15256           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
15257        END IF;
15258 
15259       --
15260       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
15261       --
15262       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
15263           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
15264       ELSE
15265           ---------------------------------------------------------------------------------------------------
15266           -- 4262811a Switch Sign
15267           ---------------------------------------------------------------------------------------------------
15268           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
15269           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15270                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15271           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15272                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15273           -- 5132302
15274           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
15275                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15276 
15277       END IF;
15278 
15279       -- 4955764
15280       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15281       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
15282 
15283 
15284       XLA_AE_LINES_PKG.ValidateCurrentLine;
15285       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15286 
15287       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15288                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
15289                ,p_balance_type_code => l_balance_type_code);
15290 
15291    END IF;
15292 
15293    -----------------------------------------------------------------------------------------
15294    -- 4262811 Multiperiod Accounting
15295    -----------------------------------------------------------------------------------------
15296      -- No MPA option is assigned.
15297 
15298 
15299 END IF;
15300 END IF;
15301 --
15302 
15303 --
15304 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15305    trace
15306       (p_msg      => 'END of AcctLineType_30'
15307       ,p_level    => C_LEVEL_PROCEDURE
15308       ,p_module   => l_log_module);
15309 END IF;
15310 --
15311 EXCEPTION
15312   WHEN xla_exceptions_pkg.application_exception THEN
15313       RAISE;
15314   WHEN OTHERS THEN
15315        xla_exceptions_pkg.raise_message
15316            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_30');
15317 END AcctLineType_30;
15318 --
15319 
15320 ---------------------------------------
15321 --
15322 -- PRIVATE FUNCTION
15323 --         AcctLineType_31
15324 --
15325 ---------------------------------------
15326 PROCEDURE AcctLineType_31 (
15327   p_application_id        IN NUMBER
15328  ,p_event_id              IN NUMBER
15329  ,p_calculate_acctd_flag  IN VARCHAR2
15330  ,p_calculate_g_l_flag    IN VARCHAR2
15331  ,p_actual_flag           IN OUT VARCHAR2
15332  ,p_balance_type_code     OUT VARCHAR2
15333  ,p_gain_or_loss_ref      OUT VARCHAR2
15334  
15335 --Cost Management Default Account
15336  , p_source_4            IN NUMBER
15337 --DISTRIBUTION_IDENTIFIER
15338  , p_source_11            IN NUMBER
15339 --Distribution Type
15340  , p_source_12            IN VARCHAR2
15341  , p_source_12_meaning    IN VARCHAR2
15342 --Entered Currency Code
15343  , p_source_15            IN VARCHAR2
15344 --Entered Amount
15345  , p_source_18            IN NUMBER
15346 --Currency Conversion Date
15347  , p_source_19            IN DATE
15348 --Currency Conversion Rate
15349  , p_source_20            IN NUMBER
15350 --Currency Conversion Type
15351  , p_source_21            IN VARCHAR2
15352 --Accounted Amount
15353  , p_source_22            IN NUMBER
15354 --Accounting Line Type
15355  , p_source_24            IN NUMBER
15356 )
15357 IS
15358 
15359 l_component_type              VARCHAR2(80);
15360 l_component_code              VARCHAR2(30);
15361 l_component_type_code         VARCHAR2(1);
15362 l_component_appl_id           INTEGER;
15363 l_amb_context_code            VARCHAR2(30);
15364 l_entity_code                 VARCHAR2(30);
15365 l_event_class_code            VARCHAR2(30);
15366 l_ae_header_id                NUMBER;
15367 l_event_type_code             VARCHAR2(30);
15368 l_line_definition_code        VARCHAR2(30);
15369 l_line_definition_owner_code  VARCHAR2(1);
15370 --
15371 -- adr variables
15372 l_segment                     VARCHAR2(30);
15373 l_ccid                        NUMBER;
15374 l_adr_transaction_coa_id      NUMBER;
15375 l_adr_accounting_coa_id       NUMBER;
15376 l_adr_flexfield_segment_code  VARCHAR2(30);
15377 l_adr_flex_value_set_id       NUMBER;
15378 l_adr_value_type_code         VARCHAR2(30);
15379 l_adr_value_combination_id    NUMBER;
15380 l_adr_value_segment_code      VARCHAR2(30);
15381 
15382 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
15383 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
15384 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
15385 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
15386 
15387 -- 4262811 Variables ------------------------------------------------------------------------------------------
15388 l_entered_amt_idx             NUMBER;
15389 l_accted_amt_idx              NUMBER;
15390 l_acc_rev_flag                VARCHAR2(1);
15391 l_accrual_line_num            NUMBER;
15392 l_tmp_amt                     NUMBER;
15393 l_acc_rev_natural_side_code   VARCHAR2(1);
15394 
15395 l_num_entries                 NUMBER;
15396 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
15397 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
15398 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
15399 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
15400 l_recog_line_1                NUMBER;
15401 l_recog_line_2                NUMBER;
15402 
15403 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
15404 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
15405 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
15406 
15407 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
15408 
15409 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
15410 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
15411 
15412 ---------------------------------------------------------------------------------------------------------------
15413 
15414 
15415 --
15416 -- bulk performance
15417 --
15418 l_balance_type_code           VARCHAR2(1);
15419 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
15420 l_log_module                  VARCHAR2(240);
15421 
15422 --
15423 -- Upgrade strategy
15424 --
15425 l_actual_upg_option           VARCHAR2(1);
15426 l_enc_upg_option           VARCHAR2(1);
15427 
15428 --
15429 BEGIN
15430 --
15431 IF g_log_enabled THEN
15432       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_31';
15433 END IF;
15434 --
15435 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15436 
15437       trace
15438          (p_msg      => 'BEGIN of AcctLineType_31'
15439          ,p_level    => C_LEVEL_PROCEDURE
15440          ,p_module   => l_log_module);
15441 
15442 END IF;
15443 --
15444 l_component_type             := 'AMB_JLT';
15445 l_component_code             := 'COST_VARIANCE';
15446 l_component_type_code        := 'S';
15447 l_component_appl_id          :=  707;
15448 l_amb_context_code           := 'DEFAULT';
15449 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
15450 l_event_class_code           := 'INTRAORG_TXFR';
15451 l_event_type_code            := 'INTRAORG_TXFR_ALL';
15452 l_line_definition_owner_code := 'S';
15453 l_line_definition_code       := 'INTRAORG_TXFR';
15454 --
15455 l_balance_type_code          := 'A';
15456 l_segment                     := NULL;
15457 l_ccid                        := NULL;
15458 l_adr_transaction_coa_id      := NULL;
15459 l_adr_accounting_coa_id       := NULL;
15460 l_adr_flexfield_segment_code  := NULL;
15461 l_adr_flex_value_set_id       := NULL;
15462 l_adr_value_type_code         := NULL;
15463 l_adr_value_combination_id    := NULL;
15464 l_adr_value_segment_code      := NULL;
15465 
15466 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
15467 l_bflow_class_code           := '';    -- 4219869 Business Flow
15468 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
15469 l_budgetary_control_flag     := 'N';
15470 
15471 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
15472 l_bflow_applied_to_amt       := NULL; -- 5132302
15473 l_entered_amt_idx            := NULL;          -- 4262811
15474 l_accted_amt_idx             := NULL;          -- 4262811
15475 l_acc_rev_flag               := NULL;          -- 4262811
15476 l_accrual_line_num           := NULL;          -- 4262811
15477 l_tmp_amt                    := NULL;          -- 4262811
15478 --
15479  
15480 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
15481     l_balance_type_code <> 'B' THEN
15482 IF NVL(p_source_24,9E125) =  13
15483  THEN 
15484 
15485    --
15486    XLA_AE_LINES_PKG.SetNewLine;
15487 
15488    p_balance_type_code          := l_balance_type_code;
15489    -- set the flag so later we will know whether the gain loss line needs to be created
15490    
15491    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
15492      p_actual_flag :='A';
15493    END IF;
15494 
15495    --
15496    -- bulk performance
15497    --
15498    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
15499                                       p_header_num   => 0); -- 4262811
15500    --
15501    -- set accounting line options
15502    --
15503    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
15504            p_natural_side_code          => 'D'
15505          , p_gain_or_loss_flag          => 'N'
15506          , p_gl_transfer_mode_code      => 'S'
15507          , p_acct_entry_type_code       => 'A'
15508          , p_switch_side_flag           => 'Y'
15509          , p_merge_duplicate_code       => 'N'
15510          );
15511    --
15512    l_acc_rev_natural_side_code := 'C';  -- 4262811
15513    -- 
15514    --
15515    -- set accounting line type info
15516    --
15517    xla_ae_lines_pkg.SetAcctLineType
15518       (p_component_type             => l_component_type
15519       ,p_event_type_code            => l_event_type_code
15520       ,p_line_definition_owner_code => l_line_definition_owner_code
15521       ,p_line_definition_code       => l_line_definition_code
15522       ,p_accounting_line_code       => l_component_code
15523       ,p_accounting_line_type_code  => l_component_type_code
15524       ,p_accounting_line_appl_id    => l_component_appl_id
15525       ,p_amb_context_code           => l_amb_context_code
15526       ,p_entity_code                => l_entity_code
15527       ,p_event_class_code           => l_event_class_code);
15528    --
15529    -- set accounting class
15530    --
15531    xla_ae_lines_pkg.SetAcctClass(
15532            p_accounting_class_code  => 'COST_VARIANCE'
15533          , p_ae_header_id           => l_ae_header_id
15534          );
15535 
15536    --
15537    -- set rounding class
15538    --
15539    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
15540                       'COST_VARIANCE';
15541 
15542    --
15543    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
15544    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
15545    --
15546    -- bulk performance
15547    --
15548    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
15549 
15550    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
15551       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
15552 
15553    -- 4955764
15554    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15555       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
15556 
15557    -- 4458381 Public Sector Enh
15558    
15559    --
15560    -- set accounting attributes for the line type
15561    --
15562    l_entered_amt_idx := 3;
15563    l_accted_amt_idx  := 8;
15564    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
15565    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
15566    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
15567    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
15568    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
15569    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
15570    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
15571    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
15572    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
15573    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
15574    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
15575    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
15576    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
15577    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
15578    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
15579    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
15580    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
15581 
15582    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
15583    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
15584 
15585    ---------------------------------------------------------------------------------------------------------------
15586    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
15587    ---------------------------------------------------------------------------------------------------------------
15588    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
15589 
15590    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15591    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15592 
15593    IF xla_accounting_cache_pkg.GetValueChar
15594          (p_source_code         => 'LEDGER_CATEGORY_CODE'
15595          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
15596    AND l_bflow_method_code = 'PRIOR_ENTRY'
15597 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
15598    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
15599          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
15600        )
15601    THEN
15602          xla_ae_lines_pkg.BflowUpgEntry
15603            (p_business_method_code    => l_bflow_method_code
15604            ,p_business_class_code     => l_bflow_class_code
15605            ,p_balance_type            => l_balance_type_code);
15606    ELSE
15607       NULL;
15608 -- No business flow processing for business flow method of NONE.
15609    END IF;
15610 
15611    --
15612    -- call analytical criteria
15613    --
15614    
15615    --
15616    -- call description
15617    --
15618    -- No description or it is inherited.
15619    --
15620    -- call ADRs
15621    -- Bug 4922099
15622    --
15623    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15624         (NVL(l_actual_upg_option, 'N') = 'O') OR
15625         (NVL(l_enc_upg_option, 'N') = 'O')
15626       )
15627    THEN
15628    NULL;
15629    --
15630    --
15631    
15632   l_ccid := AcctDerRule_4(
15633            p_application_id           => p_application_id
15634          , p_ae_header_id             => l_ae_header_id 
15635 , p_source_4 => p_source_4
15636          , x_transaction_coa_id       => l_adr_transaction_coa_id
15637          , x_accounting_coa_id        => l_adr_accounting_coa_id
15638          , x_value_type_code          => l_adr_value_type_code
15639          , p_side                     => 'NA'
15640    );
15641 
15642    xla_ae_lines_pkg.set_ccid(
15643     p_code_combination_id          => l_ccid
15644   , p_value_type_code              => l_adr_value_type_code
15645   , p_transaction_coa_id           => l_adr_transaction_coa_id
15646   , p_accounting_coa_id            => l_adr_accounting_coa_id
15647   , p_adr_code                     => 'CST_DEFAULT'
15648   , p_adr_type_code                => 'S'
15649   , p_component_type               => l_component_type
15650   , p_component_code               => l_component_code
15651   , p_component_type_code          => l_component_type_code
15652   , p_component_appl_id            => l_component_appl_id
15653   , p_amb_context_code             => l_amb_context_code
15654   , p_side                         => 'NA'
15655   );
15656 
15657 
15658    --
15659    --
15660    END IF;
15661    --
15662    -- Bug 4922099
15663    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
15664           (NVL(l_enc_upg_option, 'N') = 'O')
15665         ) AND
15666         (l_bflow_method_code = 'PRIOR_ENTRY')
15667       )
15668    THEN
15669       IF
15670       --
15671       1 = 2
15672       --
15673       THEN
15674       xla_accounting_err_pkg.build_message
15675                                     (p_appli_s_name            => 'XLA'
15676                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15677                                     ,p_token_1                 => 'LINE_NUMBER'
15678                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
15679                                     ,p_token_2                 => 'LINE_TYPE_NAME'
15680                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
15681                                                                              l_component_type
15682                                                                             ,l_component_code
15683                                                                             ,l_component_type_code
15684                                                                             ,l_component_appl_id
15685                                                                             ,l_amb_context_code
15686                                                                             ,l_entity_code
15687                                                                             ,l_event_class_code
15688                                                                            )
15689                                     ,p_token_3                 => 'OWNER'
15690                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
15691                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
15692                                                                           ,p_lookup_code    => l_component_type_code
15693                                                                          )
15694                                     ,p_token_4                 => 'PRODUCT_NAME'
15695                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
15696                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
15697                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
15698                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
15699                                     ,p_ae_header_id            =>  NULL
15700                                        );
15701 
15702         IF (C_LEVEL_ERROR>= g_log_level) THEN
15703                  trace
15704                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15705                       ,p_level    => C_LEVEL_ERROR
15706                       ,p_module   => l_log_module);
15707         END IF;
15708       END IF;
15709    END IF;
15710    --
15711    --
15712    ------------------------------------------------------------------------------------------------
15713    -- 4219869 Business Flow
15714    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
15715    -- Prior Entry.  Currently, the following code is always generated.
15716    ------------------------------------------------------------------------------------------------
15717    XLA_AE_LINES_PKG.ValidateCurrentLine;
15718 
15719    ------------------------------------------------------------------------------------
15720    -- 4219869 Business Flow
15721    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
15722    ------------------------------------------------------------------------------------
15723    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15724 
15725    ----------------------------------------------------------------------------------
15726    -- 4219869 Business Flow
15727    -- Update journal entry status -- Need to generate this within IF <condition>
15728    ----------------------------------------------------------------------------------
15729    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15730          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
15731          ,p_balance_type_code => l_balance_type_code
15732          );
15733 
15734    -------------------------------------------------------------------------------------------
15735    -- 4262811 - Generate the Accrual Reversal lines
15736    -------------------------------------------------------------------------------------------
15737    BEGIN
15738       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
15739                               (g_array_event(p_event_id).array_value_num('header_index'));
15740       IF l_acc_rev_flag IS NULL THEN
15741          l_acc_rev_flag := 'N';
15742       END IF;
15743    EXCEPTION
15744       WHEN OTHERS THEN
15745          l_acc_rev_flag := 'N';
15746    END;
15747    --
15748    IF (l_acc_rev_flag = 'Y') THEN
15749 
15750        -- 4645092  ------------------------------------------------------------------------------
15751        -- To allow MPA report to determine if it should generate report process
15752        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
15753        ------------------------------------------------------------------------------------------
15754 
15755        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
15756        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
15757    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
15758    -- call ADRs
15759    -- Bug 4922099
15760    --
15761    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15762         (NVL(l_actual_upg_option, 'N') = 'O') OR
15763         (NVL(l_enc_upg_option, 'N') = 'O')
15764       )
15765    THEN
15766    NULL;
15767    --
15768    --
15769    
15770   l_ccid := AcctDerRule_4(
15771            p_application_id           => p_application_id
15772          , p_ae_header_id             => l_ae_header_id 
15773 , p_source_4 => p_source_4
15774          , x_transaction_coa_id       => l_adr_transaction_coa_id
15775          , x_accounting_coa_id        => l_adr_accounting_coa_id
15776          , x_value_type_code          => l_adr_value_type_code
15777          , p_side                     => 'NA'
15778    );
15779 
15780    xla_ae_lines_pkg.set_ccid(
15781     p_code_combination_id          => l_ccid
15782   , p_value_type_code              => l_adr_value_type_code
15783   , p_transaction_coa_id           => l_adr_transaction_coa_id
15784   , p_accounting_coa_id            => l_adr_accounting_coa_id
15785   , p_adr_code                     => 'CST_DEFAULT'
15786   , p_adr_type_code                => 'S'
15787   , p_component_type               => l_component_type
15788   , p_component_code               => l_component_code
15789   , p_component_type_code          => l_component_type_code
15790   , p_component_appl_id            => l_component_appl_id
15791   , p_amb_context_code             => l_amb_context_code
15792   , p_side                         => 'NA'
15793   );
15794 
15795 
15796    --
15797    --
15798    END IF;
15799 
15800        --
15801        -- Update the line information that should be overwritten
15802        --
15803        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
15804                                          p_header_num   => 1);
15805        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
15806 
15807        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
15808 
15809        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
15810           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
15811        END IF;
15812 
15813       --
15814       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
15815       --
15816       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
15817           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
15818       ELSE
15819           ---------------------------------------------------------------------------------------------------
15820           -- 4262811a Switch Sign
15821           ---------------------------------------------------------------------------------------------------
15822           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
15823           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15824                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15825           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15826                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15827           -- 5132302
15828           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
15829                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15830 
15831       END IF;
15832 
15833       -- 4955764
15834       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15835       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
15836 
15837 
15838       XLA_AE_LINES_PKG.ValidateCurrentLine;
15839       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15840 
15841       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15842                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
15843                ,p_balance_type_code => l_balance_type_code);
15844 
15845    END IF;
15846 
15847    -----------------------------------------------------------------------------------------
15848    -- 4262811 Multiperiod Accounting
15849    -----------------------------------------------------------------------------------------
15850      -- No MPA option is assigned.
15851 
15852 
15853 END IF;
15854 END IF;
15855 --
15856 
15857 --
15858 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15859    trace
15860       (p_msg      => 'END of AcctLineType_31'
15861       ,p_level    => C_LEVEL_PROCEDURE
15862       ,p_module   => l_log_module);
15863 END IF;
15864 --
15865 EXCEPTION
15866   WHEN xla_exceptions_pkg.application_exception THEN
15867       RAISE;
15868   WHEN OTHERS THEN
15869        xla_exceptions_pkg.raise_message
15870            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_31');
15871 END AcctLineType_31;
15872 --
15873 
15874 ---------------------------------------
15875 --
15876 -- PRIVATE FUNCTION
15877 --         AcctLineType_32
15878 --
15879 ---------------------------------------
15880 PROCEDURE AcctLineType_32 (
15881   p_application_id        IN NUMBER
15882  ,p_event_id              IN NUMBER
15883  ,p_calculate_acctd_flag  IN VARCHAR2
15884  ,p_calculate_g_l_flag    IN VARCHAR2
15885  ,p_actual_flag           IN OUT VARCHAR2
15886  ,p_balance_type_code     OUT VARCHAR2
15887  ,p_gain_or_loss_ref      OUT VARCHAR2
15888  
15889 --Cost Management Default Account
15890  , p_source_4            IN NUMBER
15891 --DISTRIBUTION_IDENTIFIER
15892  , p_source_11            IN NUMBER
15893 --Distribution Type
15894  , p_source_12            IN VARCHAR2
15895  , p_source_12_meaning    IN VARCHAR2
15896 --Entered Currency Code
15897  , p_source_15            IN VARCHAR2
15898 --Entered Amount
15899  , p_source_18            IN NUMBER
15900 --Currency Conversion Date
15901  , p_source_19            IN DATE
15902 --Currency Conversion Rate
15903  , p_source_20            IN NUMBER
15904 --Currency Conversion Type
15905  , p_source_21            IN VARCHAR2
15906 --Accounted Amount
15907  , p_source_22            IN NUMBER
15908 --Accounting Line Type
15909  , p_source_24            IN NUMBER
15910 )
15911 IS
15912 
15913 l_component_type              VARCHAR2(80);
15914 l_component_code              VARCHAR2(30);
15915 l_component_type_code         VARCHAR2(1);
15916 l_component_appl_id           INTEGER;
15917 l_amb_context_code            VARCHAR2(30);
15918 l_entity_code                 VARCHAR2(30);
15919 l_event_class_code            VARCHAR2(30);
15920 l_ae_header_id                NUMBER;
15921 l_event_type_code             VARCHAR2(30);
15922 l_line_definition_code        VARCHAR2(30);
15923 l_line_definition_owner_code  VARCHAR2(1);
15924 --
15925 -- adr variables
15926 l_segment                     VARCHAR2(30);
15927 l_ccid                        NUMBER;
15928 l_adr_transaction_coa_id      NUMBER;
15929 l_adr_accounting_coa_id       NUMBER;
15930 l_adr_flexfield_segment_code  VARCHAR2(30);
15931 l_adr_flex_value_set_id       NUMBER;
15932 l_adr_value_type_code         VARCHAR2(30);
15933 l_adr_value_combination_id    NUMBER;
15934 l_adr_value_segment_code      VARCHAR2(30);
15935 
15936 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
15937 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
15938 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
15939 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
15940 
15941 -- 4262811 Variables ------------------------------------------------------------------------------------------
15942 l_entered_amt_idx             NUMBER;
15943 l_accted_amt_idx              NUMBER;
15944 l_acc_rev_flag                VARCHAR2(1);
15945 l_accrual_line_num            NUMBER;
15946 l_tmp_amt                     NUMBER;
15947 l_acc_rev_natural_side_code   VARCHAR2(1);
15948 
15949 l_num_entries                 NUMBER;
15950 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
15951 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
15952 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
15953 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
15954 l_recog_line_1                NUMBER;
15955 l_recog_line_2                NUMBER;
15956 
15957 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
15958 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
15959 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
15960 
15961 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
15962 
15963 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
15964 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
15965 
15966 ---------------------------------------------------------------------------------------------------------------
15967 
15968 
15969 --
15970 -- bulk performance
15971 --
15972 l_balance_type_code           VARCHAR2(1);
15973 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
15974 l_log_module                  VARCHAR2(240);
15975 
15976 --
15977 -- Upgrade strategy
15978 --
15979 l_actual_upg_option           VARCHAR2(1);
15980 l_enc_upg_option           VARCHAR2(1);
15981 
15982 --
15983 BEGIN
15984 --
15985 IF g_log_enabled THEN
15986       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_32';
15987 END IF;
15988 --
15989 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15990 
15991       trace
15992          (p_msg      => 'BEGIN of AcctLineType_32'
15993          ,p_level    => C_LEVEL_PROCEDURE
15994          ,p_module   => l_log_module);
15995 
15996 END IF;
15997 --
15998 l_component_type             := 'AMB_JLT';
15999 l_component_code             := 'COST_VARIANCE';
16000 l_component_type_code        := 'S';
16001 l_component_appl_id          :=  707;
16002 l_amb_context_code           := 'DEFAULT';
16003 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
16004 l_event_class_code           := 'USER_DEFINE';
16005 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
16006 l_line_definition_owner_code := 'S';
16007 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_TP';
16008 --
16009 l_balance_type_code          := 'A';
16010 l_segment                     := NULL;
16011 l_ccid                        := NULL;
16012 l_adr_transaction_coa_id      := NULL;
16013 l_adr_accounting_coa_id       := NULL;
16014 l_adr_flexfield_segment_code  := NULL;
16015 l_adr_flex_value_set_id       := NULL;
16016 l_adr_value_type_code         := NULL;
16017 l_adr_value_combination_id    := NULL;
16018 l_adr_value_segment_code      := NULL;
16019 
16020 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
16021 l_bflow_class_code           := '';    -- 4219869 Business Flow
16022 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
16023 l_budgetary_control_flag     := 'N';
16024 
16025 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
16026 l_bflow_applied_to_amt       := NULL; -- 5132302
16027 l_entered_amt_idx            := NULL;          -- 4262811
16028 l_accted_amt_idx             := NULL;          -- 4262811
16029 l_acc_rev_flag               := NULL;          -- 4262811
16030 l_accrual_line_num           := NULL;          -- 4262811
16031 l_tmp_amt                    := NULL;          -- 4262811
16032 --
16033  
16034 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
16035     l_balance_type_code <> 'B' THEN
16036 IF NVL(p_source_24,9E125) =  13
16037  THEN 
16038 
16039    --
16040    XLA_AE_LINES_PKG.SetNewLine;
16041 
16042    p_balance_type_code          := l_balance_type_code;
16043    -- set the flag so later we will know whether the gain loss line needs to be created
16044    
16045    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
16046      p_actual_flag :='A';
16047    END IF;
16048 
16049    --
16050    -- bulk performance
16051    --
16052    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
16053                                       p_header_num   => 0); -- 4262811
16054    --
16055    -- set accounting line options
16056    --
16057    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
16058            p_natural_side_code          => 'D'
16059          , p_gain_or_loss_flag          => 'N'
16060          , p_gl_transfer_mode_code      => 'S'
16061          , p_acct_entry_type_code       => 'A'
16062          , p_switch_side_flag           => 'Y'
16063          , p_merge_duplicate_code       => 'N'
16064          );
16065    --
16066    l_acc_rev_natural_side_code := 'C';  -- 4262811
16067    -- 
16068    --
16069    -- set accounting line type info
16070    --
16071    xla_ae_lines_pkg.SetAcctLineType
16072       (p_component_type             => l_component_type
16073       ,p_event_type_code            => l_event_type_code
16074       ,p_line_definition_owner_code => l_line_definition_owner_code
16075       ,p_line_definition_code       => l_line_definition_code
16076       ,p_accounting_line_code       => l_component_code
16077       ,p_accounting_line_type_code  => l_component_type_code
16078       ,p_accounting_line_appl_id    => l_component_appl_id
16079       ,p_amb_context_code           => l_amb_context_code
16080       ,p_entity_code                => l_entity_code
16081       ,p_event_class_code           => l_event_class_code);
16082    --
16083    -- set accounting class
16084    --
16085    xla_ae_lines_pkg.SetAcctClass(
16086            p_accounting_class_code  => 'COST_VARIANCE'
16087          , p_ae_header_id           => l_ae_header_id
16088          );
16089 
16090    --
16091    -- set rounding class
16092    --
16093    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
16094                       'COST_VARIANCE';
16095 
16096    --
16097    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
16098    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
16099    --
16100    -- bulk performance
16101    --
16102    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
16103 
16104    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
16105       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
16106 
16107    -- 4955764
16108    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16109       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
16110 
16111    -- 4458381 Public Sector Enh
16112    
16113    --
16114    -- set accounting attributes for the line type
16115    --
16116    l_entered_amt_idx := 3;
16117    l_accted_amt_idx  := 8;
16118    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
16119    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
16120    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
16121    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
16122    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
16123    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
16124    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
16125    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
16126    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
16127    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
16128    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
16129    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
16130    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
16131    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
16132    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
16133    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
16134    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
16135 
16136    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
16137    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
16138 
16139    ---------------------------------------------------------------------------------------------------------------
16140    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
16141    ---------------------------------------------------------------------------------------------------------------
16142    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
16143 
16144    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16145    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16146 
16147    IF xla_accounting_cache_pkg.GetValueChar
16148          (p_source_code         => 'LEDGER_CATEGORY_CODE'
16149          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
16150    AND l_bflow_method_code = 'PRIOR_ENTRY'
16151 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
16152    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
16153          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
16154        )
16155    THEN
16156          xla_ae_lines_pkg.BflowUpgEntry
16157            (p_business_method_code    => l_bflow_method_code
16158            ,p_business_class_code     => l_bflow_class_code
16159            ,p_balance_type            => l_balance_type_code);
16160    ELSE
16161       NULL;
16162 -- No business flow processing for business flow method of NONE.
16163    END IF;
16164 
16165    --
16166    -- call analytical criteria
16167    --
16168    
16169    --
16170    -- call description
16171    --
16172    -- No description or it is inherited.
16173    --
16174    -- call ADRs
16175    -- Bug 4922099
16176    --
16177    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16178         (NVL(l_actual_upg_option, 'N') = 'O') OR
16179         (NVL(l_enc_upg_option, 'N') = 'O')
16180       )
16181    THEN
16182    NULL;
16183    --
16184    --
16185    
16186   l_ccid := AcctDerRule_4(
16187            p_application_id           => p_application_id
16188          , p_ae_header_id             => l_ae_header_id 
16189 , p_source_4 => p_source_4
16190          , x_transaction_coa_id       => l_adr_transaction_coa_id
16191          , x_accounting_coa_id        => l_adr_accounting_coa_id
16192          , x_value_type_code          => l_adr_value_type_code
16193          , p_side                     => 'NA'
16194    );
16195 
16196    xla_ae_lines_pkg.set_ccid(
16197     p_code_combination_id          => l_ccid
16198   , p_value_type_code              => l_adr_value_type_code
16199   , p_transaction_coa_id           => l_adr_transaction_coa_id
16200   , p_accounting_coa_id            => l_adr_accounting_coa_id
16201   , p_adr_code                     => 'CST_DEFAULT'
16202   , p_adr_type_code                => 'S'
16203   , p_component_type               => l_component_type
16204   , p_component_code               => l_component_code
16205   , p_component_type_code          => l_component_type_code
16206   , p_component_appl_id            => l_component_appl_id
16207   , p_amb_context_code             => l_amb_context_code
16208   , p_side                         => 'NA'
16209   );
16210 
16211 
16212    --
16213    --
16214    END IF;
16215    --
16216    -- Bug 4922099
16217    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
16218           (NVL(l_enc_upg_option, 'N') = 'O')
16219         ) AND
16220         (l_bflow_method_code = 'PRIOR_ENTRY')
16221       )
16222    THEN
16223       IF
16224       --
16225       1 = 2
16226       --
16227       THEN
16228       xla_accounting_err_pkg.build_message
16229                                     (p_appli_s_name            => 'XLA'
16230                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16231                                     ,p_token_1                 => 'LINE_NUMBER'
16232                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
16233                                     ,p_token_2                 => 'LINE_TYPE_NAME'
16234                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
16235                                                                              l_component_type
16236                                                                             ,l_component_code
16237                                                                             ,l_component_type_code
16238                                                                             ,l_component_appl_id
16239                                                                             ,l_amb_context_code
16240                                                                             ,l_entity_code
16241                                                                             ,l_event_class_code
16242                                                                            )
16243                                     ,p_token_3                 => 'OWNER'
16244                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
16245                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
16246                                                                           ,p_lookup_code    => l_component_type_code
16247                                                                          )
16248                                     ,p_token_4                 => 'PRODUCT_NAME'
16249                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
16250                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
16251                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
16252                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
16253                                     ,p_ae_header_id            =>  NULL
16254                                        );
16255 
16256         IF (C_LEVEL_ERROR>= g_log_level) THEN
16257                  trace
16258                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16259                       ,p_level    => C_LEVEL_ERROR
16260                       ,p_module   => l_log_module);
16261         END IF;
16262       END IF;
16263    END IF;
16264    --
16265    --
16266    ------------------------------------------------------------------------------------------------
16267    -- 4219869 Business Flow
16268    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
16269    -- Prior Entry.  Currently, the following code is always generated.
16270    ------------------------------------------------------------------------------------------------
16271    XLA_AE_LINES_PKG.ValidateCurrentLine;
16272 
16273    ------------------------------------------------------------------------------------
16274    -- 4219869 Business Flow
16275    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
16276    ------------------------------------------------------------------------------------
16277    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16278 
16279    ----------------------------------------------------------------------------------
16280    -- 4219869 Business Flow
16281    -- Update journal entry status -- Need to generate this within IF <condition>
16282    ----------------------------------------------------------------------------------
16283    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16284          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
16285          ,p_balance_type_code => l_balance_type_code
16286          );
16287 
16288    -------------------------------------------------------------------------------------------
16289    -- 4262811 - Generate the Accrual Reversal lines
16290    -------------------------------------------------------------------------------------------
16291    BEGIN
16292       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
16293                               (g_array_event(p_event_id).array_value_num('header_index'));
16294       IF l_acc_rev_flag IS NULL THEN
16295          l_acc_rev_flag := 'N';
16296       END IF;
16297    EXCEPTION
16298       WHEN OTHERS THEN
16299          l_acc_rev_flag := 'N';
16300    END;
16301    --
16302    IF (l_acc_rev_flag = 'Y') THEN
16303 
16304        -- 4645092  ------------------------------------------------------------------------------
16305        -- To allow MPA report to determine if it should generate report process
16306        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
16307        ------------------------------------------------------------------------------------------
16308 
16309        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
16310        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
16311    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
16312    -- call ADRs
16313    -- Bug 4922099
16314    --
16315    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16316         (NVL(l_actual_upg_option, 'N') = 'O') OR
16317         (NVL(l_enc_upg_option, 'N') = 'O')
16318       )
16319    THEN
16320    NULL;
16321    --
16322    --
16323    
16324   l_ccid := AcctDerRule_4(
16325            p_application_id           => p_application_id
16326          , p_ae_header_id             => l_ae_header_id 
16327 , p_source_4 => p_source_4
16328          , x_transaction_coa_id       => l_adr_transaction_coa_id
16329          , x_accounting_coa_id        => l_adr_accounting_coa_id
16330          , x_value_type_code          => l_adr_value_type_code
16331          , p_side                     => 'NA'
16332    );
16333 
16334    xla_ae_lines_pkg.set_ccid(
16335     p_code_combination_id          => l_ccid
16336   , p_value_type_code              => l_adr_value_type_code
16337   , p_transaction_coa_id           => l_adr_transaction_coa_id
16338   , p_accounting_coa_id            => l_adr_accounting_coa_id
16339   , p_adr_code                     => 'CST_DEFAULT'
16340   , p_adr_type_code                => 'S'
16341   , p_component_type               => l_component_type
16342   , p_component_code               => l_component_code
16343   , p_component_type_code          => l_component_type_code
16344   , p_component_appl_id            => l_component_appl_id
16345   , p_amb_context_code             => l_amb_context_code
16346   , p_side                         => 'NA'
16347   );
16348 
16349 
16350    --
16351    --
16352    END IF;
16353 
16354        --
16355        -- Update the line information that should be overwritten
16356        --
16357        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
16358                                          p_header_num   => 1);
16359        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
16360 
16361        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
16362 
16363        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
16364           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
16365        END IF;
16366 
16367       --
16368       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
16369       --
16370       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
16371           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
16372       ELSE
16373           ---------------------------------------------------------------------------------------------------
16374           -- 4262811a Switch Sign
16375           ---------------------------------------------------------------------------------------------------
16376           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
16377           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16378                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16379           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16380                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16381           -- 5132302
16382           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
16383                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16384 
16385       END IF;
16386 
16387       -- 4955764
16388       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16389       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
16390 
16391 
16392       XLA_AE_LINES_PKG.ValidateCurrentLine;
16393       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16394 
16395       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16396                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
16397                ,p_balance_type_code => l_balance_type_code);
16398 
16399    END IF;
16400 
16401    -----------------------------------------------------------------------------------------
16402    -- 4262811 Multiperiod Accounting
16403    -----------------------------------------------------------------------------------------
16404      -- No MPA option is assigned.
16405 
16406 
16407 END IF;
16408 END IF;
16409 --
16410 
16411 --
16412 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16413    trace
16414       (p_msg      => 'END of AcctLineType_32'
16415       ,p_level    => C_LEVEL_PROCEDURE
16416       ,p_module   => l_log_module);
16417 END IF;
16418 --
16419 EXCEPTION
16420   WHEN xla_exceptions_pkg.application_exception THEN
16421       RAISE;
16422   WHEN OTHERS THEN
16423        xla_exceptions_pkg.raise_message
16424            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_32');
16425 END AcctLineType_32;
16426 --
16427 
16428 ---------------------------------------
16429 --
16430 -- PRIVATE FUNCTION
16431 --         AcctLineType_33
16432 --
16433 ---------------------------------------
16434 PROCEDURE AcctLineType_33 (
16435   p_application_id        IN NUMBER
16436  ,p_event_id              IN NUMBER
16437  ,p_calculate_acctd_flag  IN VARCHAR2
16438  ,p_calculate_g_l_flag    IN VARCHAR2
16439  ,p_actual_flag           IN OUT VARCHAR2
16440  ,p_balance_type_code     OUT VARCHAR2
16441  ,p_gain_or_loss_ref      OUT VARCHAR2
16442  
16443 --Cost Management Default Account
16444  , p_source_4            IN NUMBER
16445 --DISTRIBUTION_IDENTIFIER
16446  , p_source_11            IN NUMBER
16447 --Distribution Type
16448  , p_source_12            IN VARCHAR2
16449  , p_source_12_meaning    IN VARCHAR2
16450 --Entered Currency Code
16451  , p_source_15            IN VARCHAR2
16452 --Entered Amount
16453  , p_source_18            IN NUMBER
16454 --Currency Conversion Date
16455  , p_source_19            IN DATE
16456 --Currency Conversion Rate
16457  , p_source_20            IN NUMBER
16458 --Currency Conversion Type
16459  , p_source_21            IN VARCHAR2
16460 --Accounted Amount
16461  , p_source_22            IN NUMBER
16462 --Accounting Line Type
16463  , p_source_24            IN NUMBER
16464 )
16465 IS
16466 
16467 l_component_type              VARCHAR2(80);
16468 l_component_code              VARCHAR2(30);
16469 l_component_type_code         VARCHAR2(1);
16470 l_component_appl_id           INTEGER;
16471 l_amb_context_code            VARCHAR2(30);
16472 l_entity_code                 VARCHAR2(30);
16473 l_event_class_code            VARCHAR2(30);
16474 l_ae_header_id                NUMBER;
16475 l_event_type_code             VARCHAR2(30);
16476 l_line_definition_code        VARCHAR2(30);
16477 l_line_definition_owner_code  VARCHAR2(1);
16478 --
16479 -- adr variables
16480 l_segment                     VARCHAR2(30);
16481 l_ccid                        NUMBER;
16482 l_adr_transaction_coa_id      NUMBER;
16483 l_adr_accounting_coa_id       NUMBER;
16484 l_adr_flexfield_segment_code  VARCHAR2(30);
16485 l_adr_flex_value_set_id       NUMBER;
16486 l_adr_value_type_code         VARCHAR2(30);
16487 l_adr_value_combination_id    NUMBER;
16488 l_adr_value_segment_code      VARCHAR2(30);
16489 
16490 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
16491 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
16492 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
16493 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
16494 
16495 -- 4262811 Variables ------------------------------------------------------------------------------------------
16496 l_entered_amt_idx             NUMBER;
16497 l_accted_amt_idx              NUMBER;
16498 l_acc_rev_flag                VARCHAR2(1);
16499 l_accrual_line_num            NUMBER;
16500 l_tmp_amt                     NUMBER;
16501 l_acc_rev_natural_side_code   VARCHAR2(1);
16502 
16503 l_num_entries                 NUMBER;
16504 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
16505 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
16506 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
16507 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
16508 l_recog_line_1                NUMBER;
16509 l_recog_line_2                NUMBER;
16510 
16511 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
16512 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
16513 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
16514 
16515 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
16516 
16517 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
16518 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
16519 
16520 ---------------------------------------------------------------------------------------------------------------
16521 
16522 
16523 --
16524 -- bulk performance
16525 --
16526 l_balance_type_code           VARCHAR2(1);
16527 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
16528 l_log_module                  VARCHAR2(240);
16529 
16530 --
16531 -- Upgrade strategy
16532 --
16533 l_actual_upg_option           VARCHAR2(1);
16534 l_enc_upg_option           VARCHAR2(1);
16535 
16536 --
16537 BEGIN
16538 --
16539 IF g_log_enabled THEN
16540       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_33';
16541 END IF;
16542 --
16543 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16544 
16545       trace
16546          (p_msg      => 'BEGIN of AcctLineType_33'
16547          ,p_level    => C_LEVEL_PROCEDURE
16548          ,p_module   => l_log_module);
16549 
16550 END IF;
16551 --
16552 l_component_type             := 'AMB_JLT';
16553 l_component_code             := 'COST_VARIANCE';
16554 l_component_type_code        := 'S';
16555 l_component_appl_id          :=  707;
16556 l_amb_context_code           := 'DEFAULT';
16557 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
16558 l_event_class_code           := 'USER_DEFINE';
16559 l_event_type_code            := 'UDIR_INTERORG_RCPT_TP';
16560 l_line_definition_owner_code := 'S';
16561 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_TP';
16562 --
16563 l_balance_type_code          := 'A';
16564 l_segment                     := NULL;
16565 l_ccid                        := NULL;
16566 l_adr_transaction_coa_id      := NULL;
16567 l_adr_accounting_coa_id       := NULL;
16568 l_adr_flexfield_segment_code  := NULL;
16569 l_adr_flex_value_set_id       := NULL;
16570 l_adr_value_type_code         := NULL;
16571 l_adr_value_combination_id    := NULL;
16572 l_adr_value_segment_code      := NULL;
16573 
16574 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
16575 l_bflow_class_code           := '';    -- 4219869 Business Flow
16576 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
16577 l_budgetary_control_flag     := 'N';
16578 
16579 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
16580 l_bflow_applied_to_amt       := NULL; -- 5132302
16581 l_entered_amt_idx            := NULL;          -- 4262811
16582 l_accted_amt_idx             := NULL;          -- 4262811
16583 l_acc_rev_flag               := NULL;          -- 4262811
16584 l_accrual_line_num           := NULL;          -- 4262811
16585 l_tmp_amt                    := NULL;          -- 4262811
16586 --
16587  
16588 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
16589     l_balance_type_code <> 'B' THEN
16590 IF NVL(p_source_24,9E125) =  13
16591  THEN 
16592 
16593    --
16594    XLA_AE_LINES_PKG.SetNewLine;
16595 
16596    p_balance_type_code          := l_balance_type_code;
16597    -- set the flag so later we will know whether the gain loss line needs to be created
16598    
16599    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
16600      p_actual_flag :='A';
16601    END IF;
16602 
16603    --
16604    -- bulk performance
16605    --
16606    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
16607                                       p_header_num   => 0); -- 4262811
16608    --
16609    -- set accounting line options
16610    --
16611    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
16612            p_natural_side_code          => 'D'
16613          , p_gain_or_loss_flag          => 'N'
16614          , p_gl_transfer_mode_code      => 'S'
16615          , p_acct_entry_type_code       => 'A'
16616          , p_switch_side_flag           => 'Y'
16617          , p_merge_duplicate_code       => 'N'
16618          );
16619    --
16620    l_acc_rev_natural_side_code := 'C';  -- 4262811
16621    -- 
16622    --
16623    -- set accounting line type info
16624    --
16625    xla_ae_lines_pkg.SetAcctLineType
16626       (p_component_type             => l_component_type
16627       ,p_event_type_code            => l_event_type_code
16628       ,p_line_definition_owner_code => l_line_definition_owner_code
16629       ,p_line_definition_code       => l_line_definition_code
16630       ,p_accounting_line_code       => l_component_code
16631       ,p_accounting_line_type_code  => l_component_type_code
16632       ,p_accounting_line_appl_id    => l_component_appl_id
16633       ,p_amb_context_code           => l_amb_context_code
16634       ,p_entity_code                => l_entity_code
16635       ,p_event_class_code           => l_event_class_code);
16636    --
16637    -- set accounting class
16638    --
16639    xla_ae_lines_pkg.SetAcctClass(
16640            p_accounting_class_code  => 'COST_VARIANCE'
16641          , p_ae_header_id           => l_ae_header_id
16642          );
16643 
16644    --
16645    -- set rounding class
16646    --
16647    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
16648                       'COST_VARIANCE';
16649 
16650    --
16651    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
16652    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
16653    --
16654    -- bulk performance
16655    --
16656    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
16657 
16658    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
16659       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
16660 
16661    -- 4955764
16662    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16663       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
16664 
16665    -- 4458381 Public Sector Enh
16666    
16667    --
16668    -- set accounting attributes for the line type
16669    --
16670    l_entered_amt_idx := 3;
16671    l_accted_amt_idx  := 8;
16672    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
16673    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
16674    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
16675    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
16676    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
16677    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
16678    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
16679    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
16680    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
16681    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
16682    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
16683    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
16684    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
16685    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
16686    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
16687    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
16688    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
16689 
16690    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
16691    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
16692 
16693    ---------------------------------------------------------------------------------------------------------------
16694    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
16695    ---------------------------------------------------------------------------------------------------------------
16696    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
16697 
16698    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16699    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16700 
16701    IF xla_accounting_cache_pkg.GetValueChar
16702          (p_source_code         => 'LEDGER_CATEGORY_CODE'
16703          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
16704    AND l_bflow_method_code = 'PRIOR_ENTRY'
16705 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
16706    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
16707          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
16708        )
16709    THEN
16710          xla_ae_lines_pkg.BflowUpgEntry
16711            (p_business_method_code    => l_bflow_method_code
16712            ,p_business_class_code     => l_bflow_class_code
16713            ,p_balance_type            => l_balance_type_code);
16714    ELSE
16715       NULL;
16716 -- No business flow processing for business flow method of NONE.
16717    END IF;
16718 
16719    --
16720    -- call analytical criteria
16721    --
16722    
16723    --
16724    -- call description
16725    --
16726    -- No description or it is inherited.
16727    --
16728    -- call ADRs
16729    -- Bug 4922099
16730    --
16731    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16732         (NVL(l_actual_upg_option, 'N') = 'O') OR
16733         (NVL(l_enc_upg_option, 'N') = 'O')
16734       )
16735    THEN
16736    NULL;
16737    --
16738    --
16739    
16740   l_ccid := AcctDerRule_4(
16741            p_application_id           => p_application_id
16742          , p_ae_header_id             => l_ae_header_id 
16743 , p_source_4 => p_source_4
16744          , x_transaction_coa_id       => l_adr_transaction_coa_id
16745          , x_accounting_coa_id        => l_adr_accounting_coa_id
16746          , x_value_type_code          => l_adr_value_type_code
16747          , p_side                     => 'NA'
16748    );
16749 
16750    xla_ae_lines_pkg.set_ccid(
16751     p_code_combination_id          => l_ccid
16752   , p_value_type_code              => l_adr_value_type_code
16753   , p_transaction_coa_id           => l_adr_transaction_coa_id
16754   , p_accounting_coa_id            => l_adr_accounting_coa_id
16755   , p_adr_code                     => 'CST_DEFAULT'
16756   , p_adr_type_code                => 'S'
16757   , p_component_type               => l_component_type
16758   , p_component_code               => l_component_code
16759   , p_component_type_code          => l_component_type_code
16760   , p_component_appl_id            => l_component_appl_id
16761   , p_amb_context_code             => l_amb_context_code
16762   , p_side                         => 'NA'
16763   );
16764 
16765 
16766    --
16767    --
16768    END IF;
16769    --
16770    -- Bug 4922099
16771    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
16772           (NVL(l_enc_upg_option, 'N') = 'O')
16773         ) AND
16774         (l_bflow_method_code = 'PRIOR_ENTRY')
16775       )
16776    THEN
16777       IF
16778       --
16779       1 = 2
16780       --
16781       THEN
16782       xla_accounting_err_pkg.build_message
16783                                     (p_appli_s_name            => 'XLA'
16784                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16785                                     ,p_token_1                 => 'LINE_NUMBER'
16786                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
16787                                     ,p_token_2                 => 'LINE_TYPE_NAME'
16788                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
16789                                                                              l_component_type
16790                                                                             ,l_component_code
16791                                                                             ,l_component_type_code
16792                                                                             ,l_component_appl_id
16793                                                                             ,l_amb_context_code
16794                                                                             ,l_entity_code
16795                                                                             ,l_event_class_code
16796                                                                            )
16797                                     ,p_token_3                 => 'OWNER'
16798                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
16799                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
16800                                                                           ,p_lookup_code    => l_component_type_code
16801                                                                          )
16802                                     ,p_token_4                 => 'PRODUCT_NAME'
16803                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
16804                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
16805                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
16806                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
16807                                     ,p_ae_header_id            =>  NULL
16808                                        );
16809 
16810         IF (C_LEVEL_ERROR>= g_log_level) THEN
16811                  trace
16812                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16813                       ,p_level    => C_LEVEL_ERROR
16814                       ,p_module   => l_log_module);
16815         END IF;
16816       END IF;
16817    END IF;
16818    --
16819    --
16820    ------------------------------------------------------------------------------------------------
16821    -- 4219869 Business Flow
16822    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
16823    -- Prior Entry.  Currently, the following code is always generated.
16824    ------------------------------------------------------------------------------------------------
16825    XLA_AE_LINES_PKG.ValidateCurrentLine;
16826 
16827    ------------------------------------------------------------------------------------
16828    -- 4219869 Business Flow
16829    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
16830    ------------------------------------------------------------------------------------
16831    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16832 
16833    ----------------------------------------------------------------------------------
16834    -- 4219869 Business Flow
16835    -- Update journal entry status -- Need to generate this within IF <condition>
16836    ----------------------------------------------------------------------------------
16837    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16838          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
16839          ,p_balance_type_code => l_balance_type_code
16840          );
16841 
16842    -------------------------------------------------------------------------------------------
16843    -- 4262811 - Generate the Accrual Reversal lines
16844    -------------------------------------------------------------------------------------------
16845    BEGIN
16846       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
16847                               (g_array_event(p_event_id).array_value_num('header_index'));
16848       IF l_acc_rev_flag IS NULL THEN
16849          l_acc_rev_flag := 'N';
16850       END IF;
16851    EXCEPTION
16852       WHEN OTHERS THEN
16853          l_acc_rev_flag := 'N';
16854    END;
16855    --
16856    IF (l_acc_rev_flag = 'Y') THEN
16857 
16858        -- 4645092  ------------------------------------------------------------------------------
16859        -- To allow MPA report to determine if it should generate report process
16860        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
16861        ------------------------------------------------------------------------------------------
16862 
16863        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
16864        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
16865    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
16866    -- call ADRs
16867    -- Bug 4922099
16868    --
16869    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16870         (NVL(l_actual_upg_option, 'N') = 'O') OR
16871         (NVL(l_enc_upg_option, 'N') = 'O')
16872       )
16873    THEN
16874    NULL;
16875    --
16876    --
16877    
16878   l_ccid := AcctDerRule_4(
16879            p_application_id           => p_application_id
16880          , p_ae_header_id             => l_ae_header_id 
16881 , p_source_4 => p_source_4
16882          , x_transaction_coa_id       => l_adr_transaction_coa_id
16883          , x_accounting_coa_id        => l_adr_accounting_coa_id
16884          , x_value_type_code          => l_adr_value_type_code
16885          , p_side                     => 'NA'
16886    );
16887 
16888    xla_ae_lines_pkg.set_ccid(
16889     p_code_combination_id          => l_ccid
16890   , p_value_type_code              => l_adr_value_type_code
16891   , p_transaction_coa_id           => l_adr_transaction_coa_id
16892   , p_accounting_coa_id            => l_adr_accounting_coa_id
16893   , p_adr_code                     => 'CST_DEFAULT'
16894   , p_adr_type_code                => 'S'
16895   , p_component_type               => l_component_type
16896   , p_component_code               => l_component_code
16897   , p_component_type_code          => l_component_type_code
16898   , p_component_appl_id            => l_component_appl_id
16899   , p_amb_context_code             => l_amb_context_code
16900   , p_side                         => 'NA'
16901   );
16902 
16903 
16904    --
16905    --
16906    END IF;
16907 
16908        --
16909        -- Update the line information that should be overwritten
16910        --
16911        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
16912                                          p_header_num   => 1);
16913        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
16914 
16915        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
16916 
16917        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
16918           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
16919        END IF;
16920 
16921       --
16922       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
16923       --
16924       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
16925           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
16926       ELSE
16927           ---------------------------------------------------------------------------------------------------
16928           -- 4262811a Switch Sign
16929           ---------------------------------------------------------------------------------------------------
16930           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
16931           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16932                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16933           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16934                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16935           -- 5132302
16936           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
16937                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16938 
16939       END IF;
16940 
16941       -- 4955764
16942       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16943       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
16944 
16945 
16946       XLA_AE_LINES_PKG.ValidateCurrentLine;
16947       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16948 
16949       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16950                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
16951                ,p_balance_type_code => l_balance_type_code);
16952 
16953    END IF;
16954 
16955    -----------------------------------------------------------------------------------------
16956    -- 4262811 Multiperiod Accounting
16957    -----------------------------------------------------------------------------------------
16958      -- No MPA option is assigned.
16959 
16960 
16961 END IF;
16962 END IF;
16963 --
16964 
16965 --
16966 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16967    trace
16968       (p_msg      => 'END of AcctLineType_33'
16969       ,p_level    => C_LEVEL_PROCEDURE
16970       ,p_module   => l_log_module);
16971 END IF;
16972 --
16973 EXCEPTION
16974   WHEN xla_exceptions_pkg.application_exception THEN
16975       RAISE;
16976   WHEN OTHERS THEN
16977        xla_exceptions_pkg.raise_message
16978            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_33');
16979 END AcctLineType_33;
16980 --
16981 
16982 ---------------------------------------
16983 --
16984 -- PRIVATE FUNCTION
16985 --         AcctLineType_34
16986 --
16987 ---------------------------------------
16988 PROCEDURE AcctLineType_34 (
16989   p_application_id        IN NUMBER
16990  ,p_event_id              IN NUMBER
16991  ,p_calculate_acctd_flag  IN VARCHAR2
16992  ,p_calculate_g_l_flag    IN VARCHAR2
16993  ,p_actual_flag           IN OUT VARCHAR2
16994  ,p_balance_type_code     OUT VARCHAR2
16995  ,p_gain_or_loss_ref      OUT VARCHAR2
16996  
16997 --Cost Management Default Account
16998  , p_source_4            IN NUMBER
16999 --DISTRIBUTION_IDENTIFIER
17000  , p_source_11            IN NUMBER
17001 --Distribution Type
17002  , p_source_12            IN VARCHAR2
17003  , p_source_12_meaning    IN VARCHAR2
17004 --Entered Currency Code
17005  , p_source_15            IN VARCHAR2
17006 --Entered Amount
17007  , p_source_18            IN NUMBER
17008 --Currency Conversion Date
17009  , p_source_19            IN DATE
17010 --Currency Conversion Rate
17011  , p_source_20            IN NUMBER
17012 --Currency Conversion Type
17013  , p_source_21            IN VARCHAR2
17014 --Accounted Amount
17015  , p_source_22            IN NUMBER
17016 --Accounting Line Type
17017  , p_source_24            IN NUMBER
17018 )
17019 IS
17020 
17021 l_component_type              VARCHAR2(80);
17022 l_component_code              VARCHAR2(30);
17023 l_component_type_code         VARCHAR2(1);
17024 l_component_appl_id           INTEGER;
17025 l_amb_context_code            VARCHAR2(30);
17026 l_entity_code                 VARCHAR2(30);
17027 l_event_class_code            VARCHAR2(30);
17028 l_ae_header_id                NUMBER;
17029 l_event_type_code             VARCHAR2(30);
17030 l_line_definition_code        VARCHAR2(30);
17031 l_line_definition_owner_code  VARCHAR2(1);
17032 --
17033 -- adr variables
17034 l_segment                     VARCHAR2(30);
17035 l_ccid                        NUMBER;
17036 l_adr_transaction_coa_id      NUMBER;
17037 l_adr_accounting_coa_id       NUMBER;
17038 l_adr_flexfield_segment_code  VARCHAR2(30);
17039 l_adr_flex_value_set_id       NUMBER;
17040 l_adr_value_type_code         VARCHAR2(30);
17041 l_adr_value_combination_id    NUMBER;
17042 l_adr_value_segment_code      VARCHAR2(30);
17043 
17044 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
17045 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
17046 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
17047 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
17048 
17049 -- 4262811 Variables ------------------------------------------------------------------------------------------
17050 l_entered_amt_idx             NUMBER;
17051 l_accted_amt_idx              NUMBER;
17052 l_acc_rev_flag                VARCHAR2(1);
17053 l_accrual_line_num            NUMBER;
17054 l_tmp_amt                     NUMBER;
17055 l_acc_rev_natural_side_code   VARCHAR2(1);
17056 
17057 l_num_entries                 NUMBER;
17058 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
17059 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
17060 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
17061 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
17062 l_recog_line_1                NUMBER;
17063 l_recog_line_2                NUMBER;
17064 
17065 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
17066 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
17067 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
17068 
17069 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
17070 
17071 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
17072 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
17073 
17074 ---------------------------------------------------------------------------------------------------------------
17075 
17076 
17077 --
17078 -- bulk performance
17079 --
17080 l_balance_type_code           VARCHAR2(1);
17081 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
17082 l_log_module                  VARCHAR2(240);
17083 
17084 --
17085 -- Upgrade strategy
17086 --
17087 l_actual_upg_option           VARCHAR2(1);
17088 l_enc_upg_option           VARCHAR2(1);
17089 
17090 --
17091 BEGIN
17092 --
17093 IF g_log_enabled THEN
17094       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_34';
17095 END IF;
17096 --
17097 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17098 
17099       trace
17100          (p_msg      => 'BEGIN of AcctLineType_34'
17101          ,p_level    => C_LEVEL_PROCEDURE
17102          ,p_module   => l_log_module);
17103 
17104 END IF;
17105 --
17106 l_component_type             := 'AMB_JLT';
17107 l_component_code             := 'COST_VARIANCE';
17108 l_component_type_code        := 'S';
17109 l_component_appl_id          :=  707;
17110 l_amb_context_code           := 'DEFAULT';
17111 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
17112 l_event_class_code           := 'SALES_ORDER';
17113 l_event_type_code            := 'SALES_ORDER_ALL';
17114 l_line_definition_owner_code := 'S';
17115 l_line_definition_code       := 'SALES_ORDER';
17116 --
17117 l_balance_type_code          := 'A';
17118 l_segment                     := NULL;
17119 l_ccid                        := NULL;
17120 l_adr_transaction_coa_id      := NULL;
17121 l_adr_accounting_coa_id       := NULL;
17122 l_adr_flexfield_segment_code  := NULL;
17123 l_adr_flex_value_set_id       := NULL;
17124 l_adr_value_type_code         := NULL;
17125 l_adr_value_combination_id    := NULL;
17126 l_adr_value_segment_code      := NULL;
17127 
17128 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
17129 l_bflow_class_code           := '';    -- 4219869 Business Flow
17130 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
17131 l_budgetary_control_flag     := 'N';
17132 
17133 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
17134 l_bflow_applied_to_amt       := NULL; -- 5132302
17135 l_entered_amt_idx            := NULL;          -- 4262811
17136 l_accted_amt_idx             := NULL;          -- 4262811
17137 l_acc_rev_flag               := NULL;          -- 4262811
17138 l_accrual_line_num           := NULL;          -- 4262811
17139 l_tmp_amt                    := NULL;          -- 4262811
17140 --
17141  
17142 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
17143     l_balance_type_code <> 'B' THEN
17144 IF NVL(p_source_24,9E125) =  13
17145  THEN 
17146 
17147    --
17148    XLA_AE_LINES_PKG.SetNewLine;
17149 
17150    p_balance_type_code          := l_balance_type_code;
17151    -- set the flag so later we will know whether the gain loss line needs to be created
17152    
17153    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
17154      p_actual_flag :='A';
17155    END IF;
17156 
17157    --
17158    -- bulk performance
17159    --
17160    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
17161                                       p_header_num   => 0); -- 4262811
17162    --
17163    -- set accounting line options
17164    --
17165    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
17166            p_natural_side_code          => 'D'
17167          , p_gain_or_loss_flag          => 'N'
17168          , p_gl_transfer_mode_code      => 'S'
17169          , p_acct_entry_type_code       => 'A'
17170          , p_switch_side_flag           => 'Y'
17171          , p_merge_duplicate_code       => 'N'
17172          );
17173    --
17174    l_acc_rev_natural_side_code := 'C';  -- 4262811
17175    -- 
17176    --
17177    -- set accounting line type info
17178    --
17179    xla_ae_lines_pkg.SetAcctLineType
17180       (p_component_type             => l_component_type
17181       ,p_event_type_code            => l_event_type_code
17182       ,p_line_definition_owner_code => l_line_definition_owner_code
17183       ,p_line_definition_code       => l_line_definition_code
17184       ,p_accounting_line_code       => l_component_code
17185       ,p_accounting_line_type_code  => l_component_type_code
17186       ,p_accounting_line_appl_id    => l_component_appl_id
17187       ,p_amb_context_code           => l_amb_context_code
17188       ,p_entity_code                => l_entity_code
17189       ,p_event_class_code           => l_event_class_code);
17190    --
17191    -- set accounting class
17192    --
17193    xla_ae_lines_pkg.SetAcctClass(
17194            p_accounting_class_code  => 'COST_VARIANCE'
17195          , p_ae_header_id           => l_ae_header_id
17196          );
17197 
17198    --
17199    -- set rounding class
17200    --
17201    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
17202                       'COST_VARIANCE';
17203 
17204    --
17205    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
17206    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
17207    --
17208    -- bulk performance
17209    --
17210    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
17211 
17212    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
17213       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
17214 
17215    -- 4955764
17216    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17217       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
17218 
17219    -- 4458381 Public Sector Enh
17220    
17221    --
17222    -- set accounting attributes for the line type
17223    --
17224    l_entered_amt_idx := 3;
17225    l_accted_amt_idx  := 8;
17226    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
17227    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
17228    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
17229    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
17230    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
17231    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
17232    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
17233    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
17234    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
17235    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
17236    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
17237    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
17238    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
17239    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
17240    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
17241    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
17242    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
17243 
17244    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
17245    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
17246 
17247    ---------------------------------------------------------------------------------------------------------------
17248    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
17249    ---------------------------------------------------------------------------------------------------------------
17250    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
17251 
17252    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17253    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17254 
17255    IF xla_accounting_cache_pkg.GetValueChar
17256          (p_source_code         => 'LEDGER_CATEGORY_CODE'
17257          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
17258    AND l_bflow_method_code = 'PRIOR_ENTRY'
17259 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
17260    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
17261          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
17262        )
17263    THEN
17264          xla_ae_lines_pkg.BflowUpgEntry
17265            (p_business_method_code    => l_bflow_method_code
17266            ,p_business_class_code     => l_bflow_class_code
17267            ,p_balance_type            => l_balance_type_code);
17268    ELSE
17269       NULL;
17270 -- No business flow processing for business flow method of NONE.
17271    END IF;
17272 
17273    --
17274    -- call analytical criteria
17275    --
17276    
17277    --
17278    -- call description
17279    --
17280    -- No description or it is inherited.
17281    --
17282    -- call ADRs
17283    -- Bug 4922099
17284    --
17285    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17286         (NVL(l_actual_upg_option, 'N') = 'O') OR
17287         (NVL(l_enc_upg_option, 'N') = 'O')
17288       )
17289    THEN
17290    NULL;
17291    --
17292    --
17293    
17294   l_ccid := AcctDerRule_4(
17295            p_application_id           => p_application_id
17296          , p_ae_header_id             => l_ae_header_id 
17297 , p_source_4 => p_source_4
17298          , x_transaction_coa_id       => l_adr_transaction_coa_id
17299          , x_accounting_coa_id        => l_adr_accounting_coa_id
17300          , x_value_type_code          => l_adr_value_type_code
17301          , p_side                     => 'NA'
17302    );
17303 
17304    xla_ae_lines_pkg.set_ccid(
17305     p_code_combination_id          => l_ccid
17306   , p_value_type_code              => l_adr_value_type_code
17307   , p_transaction_coa_id           => l_adr_transaction_coa_id
17308   , p_accounting_coa_id            => l_adr_accounting_coa_id
17309   , p_adr_code                     => 'CST_DEFAULT'
17310   , p_adr_type_code                => 'S'
17311   , p_component_type               => l_component_type
17312   , p_component_code               => l_component_code
17313   , p_component_type_code          => l_component_type_code
17314   , p_component_appl_id            => l_component_appl_id
17315   , p_amb_context_code             => l_amb_context_code
17316   , p_side                         => 'NA'
17317   );
17318 
17319 
17320    --
17321    --
17322    END IF;
17323    --
17324    -- Bug 4922099
17325    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
17326           (NVL(l_enc_upg_option, 'N') = 'O')
17327         ) AND
17328         (l_bflow_method_code = 'PRIOR_ENTRY')
17329       )
17330    THEN
17331       IF
17332       --
17333       1 = 2
17334       --
17335       THEN
17336       xla_accounting_err_pkg.build_message
17337                                     (p_appli_s_name            => 'XLA'
17338                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17339                                     ,p_token_1                 => 'LINE_NUMBER'
17340                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
17341                                     ,p_token_2                 => 'LINE_TYPE_NAME'
17342                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
17343                                                                              l_component_type
17344                                                                             ,l_component_code
17345                                                                             ,l_component_type_code
17346                                                                             ,l_component_appl_id
17347                                                                             ,l_amb_context_code
17348                                                                             ,l_entity_code
17349                                                                             ,l_event_class_code
17350                                                                            )
17351                                     ,p_token_3                 => 'OWNER'
17352                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
17353                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
17354                                                                           ,p_lookup_code    => l_component_type_code
17355                                                                          )
17356                                     ,p_token_4                 => 'PRODUCT_NAME'
17357                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
17358                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
17359                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
17360                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
17361                                     ,p_ae_header_id            =>  NULL
17362                                        );
17363 
17364         IF (C_LEVEL_ERROR>= g_log_level) THEN
17365                  trace
17366                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17367                       ,p_level    => C_LEVEL_ERROR
17368                       ,p_module   => l_log_module);
17369         END IF;
17370       END IF;
17371    END IF;
17372    --
17373    --
17374    ------------------------------------------------------------------------------------------------
17375    -- 4219869 Business Flow
17376    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
17377    -- Prior Entry.  Currently, the following code is always generated.
17378    ------------------------------------------------------------------------------------------------
17379    XLA_AE_LINES_PKG.ValidateCurrentLine;
17380 
17381    ------------------------------------------------------------------------------------
17382    -- 4219869 Business Flow
17383    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
17384    ------------------------------------------------------------------------------------
17385    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17386 
17387    ----------------------------------------------------------------------------------
17388    -- 4219869 Business Flow
17389    -- Update journal entry status -- Need to generate this within IF <condition>
17390    ----------------------------------------------------------------------------------
17391    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17392          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
17393          ,p_balance_type_code => l_balance_type_code
17394          );
17395 
17396    -------------------------------------------------------------------------------------------
17397    -- 4262811 - Generate the Accrual Reversal lines
17398    -------------------------------------------------------------------------------------------
17399    BEGIN
17400       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
17401                               (g_array_event(p_event_id).array_value_num('header_index'));
17402       IF l_acc_rev_flag IS NULL THEN
17403          l_acc_rev_flag := 'N';
17404       END IF;
17405    EXCEPTION
17406       WHEN OTHERS THEN
17407          l_acc_rev_flag := 'N';
17408    END;
17409    --
17410    IF (l_acc_rev_flag = 'Y') THEN
17411 
17412        -- 4645092  ------------------------------------------------------------------------------
17413        -- To allow MPA report to determine if it should generate report process
17414        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
17415        ------------------------------------------------------------------------------------------
17416 
17417        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
17418        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
17419    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
17420    -- call ADRs
17421    -- Bug 4922099
17422    --
17423    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17424         (NVL(l_actual_upg_option, 'N') = 'O') OR
17425         (NVL(l_enc_upg_option, 'N') = 'O')
17426       )
17427    THEN
17428    NULL;
17429    --
17430    --
17431    
17432   l_ccid := AcctDerRule_4(
17433            p_application_id           => p_application_id
17434          , p_ae_header_id             => l_ae_header_id 
17435 , p_source_4 => p_source_4
17436          , x_transaction_coa_id       => l_adr_transaction_coa_id
17437          , x_accounting_coa_id        => l_adr_accounting_coa_id
17438          , x_value_type_code          => l_adr_value_type_code
17439          , p_side                     => 'NA'
17440    );
17441 
17442    xla_ae_lines_pkg.set_ccid(
17443     p_code_combination_id          => l_ccid
17444   , p_value_type_code              => l_adr_value_type_code
17445   , p_transaction_coa_id           => l_adr_transaction_coa_id
17446   , p_accounting_coa_id            => l_adr_accounting_coa_id
17447   , p_adr_code                     => 'CST_DEFAULT'
17448   , p_adr_type_code                => 'S'
17449   , p_component_type               => l_component_type
17450   , p_component_code               => l_component_code
17451   , p_component_type_code          => l_component_type_code
17452   , p_component_appl_id            => l_component_appl_id
17453   , p_amb_context_code             => l_amb_context_code
17454   , p_side                         => 'NA'
17455   );
17456 
17457 
17458    --
17459    --
17460    END IF;
17461 
17462        --
17463        -- Update the line information that should be overwritten
17464        --
17465        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
17466                                          p_header_num   => 1);
17467        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
17468 
17469        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
17470 
17471        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
17472           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
17473        END IF;
17474 
17475       --
17476       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
17477       --
17478       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
17479           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
17480       ELSE
17481           ---------------------------------------------------------------------------------------------------
17482           -- 4262811a Switch Sign
17483           ---------------------------------------------------------------------------------------------------
17484           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
17485           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17486                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17487           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17488                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17489           -- 5132302
17490           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
17491                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17492 
17493       END IF;
17494 
17495       -- 4955764
17496       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17497       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
17498 
17499 
17500       XLA_AE_LINES_PKG.ValidateCurrentLine;
17501       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17502 
17503       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17504                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
17505                ,p_balance_type_code => l_balance_type_code);
17506 
17507    END IF;
17508 
17509    -----------------------------------------------------------------------------------------
17510    -- 4262811 Multiperiod Accounting
17511    -----------------------------------------------------------------------------------------
17512      -- No MPA option is assigned.
17513 
17514 
17515 END IF;
17516 END IF;
17517 --
17518 
17519 --
17520 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17521    trace
17522       (p_msg      => 'END of AcctLineType_34'
17523       ,p_level    => C_LEVEL_PROCEDURE
17524       ,p_module   => l_log_module);
17525 END IF;
17526 --
17527 EXCEPTION
17528   WHEN xla_exceptions_pkg.application_exception THEN
17529       RAISE;
17530   WHEN OTHERS THEN
17531        xla_exceptions_pkg.raise_message
17532            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_34');
17533 END AcctLineType_34;
17534 --
17535 
17536 ---------------------------------------
17537 --
17538 -- PRIVATE FUNCTION
17539 --         AcctLineType_35
17540 --
17541 ---------------------------------------
17542 PROCEDURE AcctLineType_35 (
17543   p_application_id        IN NUMBER
17544  ,p_event_id              IN NUMBER
17545  ,p_calculate_acctd_flag  IN VARCHAR2
17546  ,p_calculate_g_l_flag    IN VARCHAR2
17547  ,p_actual_flag           IN OUT VARCHAR2
17548  ,p_balance_type_code     OUT VARCHAR2
17549  ,p_gain_or_loss_ref      OUT VARCHAR2
17550  
17551 --Cost Management Default Account
17552  , p_source_4            IN NUMBER
17553 --DISTRIBUTION_IDENTIFIER
17554  , p_source_11            IN NUMBER
17555 --Distribution Type
17556  , p_source_12            IN VARCHAR2
17557  , p_source_12_meaning    IN VARCHAR2
17558 --Entered Currency Code
17559  , p_source_15            IN VARCHAR2
17560 --Entered Amount
17561  , p_source_18            IN NUMBER
17562 --Currency Conversion Date
17563  , p_source_19            IN DATE
17564 --Currency Conversion Rate
17565  , p_source_20            IN NUMBER
17566 --Currency Conversion Type
17567  , p_source_21            IN VARCHAR2
17568 --Accounted Amount
17569  , p_source_22            IN NUMBER
17570 --Accounting Line Type
17571  , p_source_24            IN NUMBER
17572 )
17573 IS
17574 
17575 l_component_type              VARCHAR2(80);
17576 l_component_code              VARCHAR2(30);
17577 l_component_type_code         VARCHAR2(1);
17578 l_component_appl_id           INTEGER;
17579 l_amb_context_code            VARCHAR2(30);
17580 l_entity_code                 VARCHAR2(30);
17581 l_event_class_code            VARCHAR2(30);
17582 l_ae_header_id                NUMBER;
17583 l_event_type_code             VARCHAR2(30);
17584 l_line_definition_code        VARCHAR2(30);
17585 l_line_definition_owner_code  VARCHAR2(1);
17586 --
17587 -- adr variables
17588 l_segment                     VARCHAR2(30);
17589 l_ccid                        NUMBER;
17590 l_adr_transaction_coa_id      NUMBER;
17591 l_adr_accounting_coa_id       NUMBER;
17592 l_adr_flexfield_segment_code  VARCHAR2(30);
17593 l_adr_flex_value_set_id       NUMBER;
17594 l_adr_value_type_code         VARCHAR2(30);
17595 l_adr_value_combination_id    NUMBER;
17596 l_adr_value_segment_code      VARCHAR2(30);
17597 
17598 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
17599 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
17600 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
17601 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
17602 
17603 -- 4262811 Variables ------------------------------------------------------------------------------------------
17604 l_entered_amt_idx             NUMBER;
17605 l_accted_amt_idx              NUMBER;
17606 l_acc_rev_flag                VARCHAR2(1);
17607 l_accrual_line_num            NUMBER;
17608 l_tmp_amt                     NUMBER;
17609 l_acc_rev_natural_side_code   VARCHAR2(1);
17610 
17611 l_num_entries                 NUMBER;
17612 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
17613 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
17614 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
17615 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
17616 l_recog_line_1                NUMBER;
17617 l_recog_line_2                NUMBER;
17618 
17619 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
17620 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
17621 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
17622 
17623 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
17624 
17625 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
17626 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
17627 
17628 ---------------------------------------------------------------------------------------------------------------
17629 
17630 
17631 --
17632 -- bulk performance
17633 --
17634 l_balance_type_code           VARCHAR2(1);
17635 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
17636 l_log_module                  VARCHAR2(240);
17637 
17638 --
17639 -- Upgrade strategy
17640 --
17641 l_actual_upg_option           VARCHAR2(1);
17642 l_enc_upg_option           VARCHAR2(1);
17643 
17644 --
17645 BEGIN
17646 --
17647 IF g_log_enabled THEN
17648       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_35';
17649 END IF;
17650 --
17651 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17652 
17653       trace
17654          (p_msg      => 'BEGIN of AcctLineType_35'
17655          ,p_level    => C_LEVEL_PROCEDURE
17656          ,p_module   => l_log_module);
17657 
17658 END IF;
17659 --
17660 l_component_type             := 'AMB_JLT';
17661 l_component_code             := 'COST_VARIANCE';
17662 l_component_type_code        := 'S';
17663 l_component_appl_id          :=  707;
17664 l_amb_context_code           := 'DEFAULT';
17665 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
17666 l_event_class_code           := 'MISC_ISSUE_RCPT';
17667 l_event_type_code            := 'MISC_ISSUE_RCPT_ALL';
17668 l_line_definition_owner_code := 'S';
17669 l_line_definition_code       := 'MISC_ISSUE_RCPT';
17670 --
17671 l_balance_type_code          := 'A';
17672 l_segment                     := NULL;
17673 l_ccid                        := NULL;
17674 l_adr_transaction_coa_id      := NULL;
17675 l_adr_accounting_coa_id       := NULL;
17676 l_adr_flexfield_segment_code  := NULL;
17677 l_adr_flex_value_set_id       := NULL;
17678 l_adr_value_type_code         := NULL;
17679 l_adr_value_combination_id    := NULL;
17680 l_adr_value_segment_code      := NULL;
17681 
17682 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
17683 l_bflow_class_code           := '';    -- 4219869 Business Flow
17684 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
17685 l_budgetary_control_flag     := 'N';
17686 
17687 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
17688 l_bflow_applied_to_amt       := NULL; -- 5132302
17689 l_entered_amt_idx            := NULL;          -- 4262811
17690 l_accted_amt_idx             := NULL;          -- 4262811
17691 l_acc_rev_flag               := NULL;          -- 4262811
17692 l_accrual_line_num           := NULL;          -- 4262811
17693 l_tmp_amt                    := NULL;          -- 4262811
17694 --
17695  
17696 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
17697     l_balance_type_code <> 'B' THEN
17698 IF NVL(p_source_24,9E125) =  13
17699  THEN 
17700 
17701    --
17702    XLA_AE_LINES_PKG.SetNewLine;
17703 
17704    p_balance_type_code          := l_balance_type_code;
17705    -- set the flag so later we will know whether the gain loss line needs to be created
17706    
17707    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
17708      p_actual_flag :='A';
17709    END IF;
17710 
17711    --
17712    -- bulk performance
17713    --
17714    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
17715                                       p_header_num   => 0); -- 4262811
17716    --
17717    -- set accounting line options
17718    --
17719    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
17720            p_natural_side_code          => 'D'
17721          , p_gain_or_loss_flag          => 'N'
17722          , p_gl_transfer_mode_code      => 'S'
17723          , p_acct_entry_type_code       => 'A'
17724          , p_switch_side_flag           => 'Y'
17725          , p_merge_duplicate_code       => 'N'
17726          );
17727    --
17728    l_acc_rev_natural_side_code := 'C';  -- 4262811
17729    -- 
17730    --
17731    -- set accounting line type info
17732    --
17733    xla_ae_lines_pkg.SetAcctLineType
17734       (p_component_type             => l_component_type
17735       ,p_event_type_code            => l_event_type_code
17736       ,p_line_definition_owner_code => l_line_definition_owner_code
17737       ,p_line_definition_code       => l_line_definition_code
17738       ,p_accounting_line_code       => l_component_code
17739       ,p_accounting_line_type_code  => l_component_type_code
17740       ,p_accounting_line_appl_id    => l_component_appl_id
17741       ,p_amb_context_code           => l_amb_context_code
17742       ,p_entity_code                => l_entity_code
17743       ,p_event_class_code           => l_event_class_code);
17744    --
17745    -- set accounting class
17746    --
17747    xla_ae_lines_pkg.SetAcctClass(
17748            p_accounting_class_code  => 'COST_VARIANCE'
17749          , p_ae_header_id           => l_ae_header_id
17750          );
17751 
17752    --
17753    -- set rounding class
17754    --
17755    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
17756                       'COST_VARIANCE';
17757 
17758    --
17759    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
17760    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
17761    --
17762    -- bulk performance
17763    --
17764    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
17765 
17766    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
17767       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
17768 
17769    -- 4955764
17770    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17771       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
17772 
17773    -- 4458381 Public Sector Enh
17774    
17775    --
17776    -- set accounting attributes for the line type
17777    --
17778    l_entered_amt_idx := 3;
17779    l_accted_amt_idx  := 8;
17780    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
17781    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
17782    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
17783    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
17784    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
17785    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
17786    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
17787    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
17788    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
17789    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
17790    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
17791    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
17792    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
17793    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
17794    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
17795    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
17796    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
17797 
17798    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
17799    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
17800 
17801    ---------------------------------------------------------------------------------------------------------------
17802    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
17803    ---------------------------------------------------------------------------------------------------------------
17804    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
17805 
17806    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17807    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17808 
17809    IF xla_accounting_cache_pkg.GetValueChar
17810          (p_source_code         => 'LEDGER_CATEGORY_CODE'
17811          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
17812    AND l_bflow_method_code = 'PRIOR_ENTRY'
17813 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
17814    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
17815          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
17816        )
17817    THEN
17818          xla_ae_lines_pkg.BflowUpgEntry
17819            (p_business_method_code    => l_bflow_method_code
17820            ,p_business_class_code     => l_bflow_class_code
17821            ,p_balance_type            => l_balance_type_code);
17822    ELSE
17823       NULL;
17824 -- No business flow processing for business flow method of NONE.
17825    END IF;
17826 
17827    --
17828    -- call analytical criteria
17829    --
17830    
17831    --
17832    -- call description
17833    --
17834    -- No description or it is inherited.
17835    --
17836    -- call ADRs
17837    -- Bug 4922099
17838    --
17839    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17840         (NVL(l_actual_upg_option, 'N') = 'O') OR
17841         (NVL(l_enc_upg_option, 'N') = 'O')
17842       )
17843    THEN
17844    NULL;
17845    --
17846    --
17847    
17848   l_ccid := AcctDerRule_4(
17849            p_application_id           => p_application_id
17850          , p_ae_header_id             => l_ae_header_id 
17851 , p_source_4 => p_source_4
17852          , x_transaction_coa_id       => l_adr_transaction_coa_id
17853          , x_accounting_coa_id        => l_adr_accounting_coa_id
17854          , x_value_type_code          => l_adr_value_type_code
17855          , p_side                     => 'NA'
17856    );
17857 
17858    xla_ae_lines_pkg.set_ccid(
17859     p_code_combination_id          => l_ccid
17860   , p_value_type_code              => l_adr_value_type_code
17861   , p_transaction_coa_id           => l_adr_transaction_coa_id
17862   , p_accounting_coa_id            => l_adr_accounting_coa_id
17863   , p_adr_code                     => 'CST_DEFAULT'
17864   , p_adr_type_code                => 'S'
17865   , p_component_type               => l_component_type
17866   , p_component_code               => l_component_code
17867   , p_component_type_code          => l_component_type_code
17868   , p_component_appl_id            => l_component_appl_id
17869   , p_amb_context_code             => l_amb_context_code
17870   , p_side                         => 'NA'
17871   );
17872 
17873 
17874    --
17875    --
17876    END IF;
17877    --
17878    -- Bug 4922099
17879    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
17880           (NVL(l_enc_upg_option, 'N') = 'O')
17881         ) AND
17882         (l_bflow_method_code = 'PRIOR_ENTRY')
17883       )
17884    THEN
17885       IF
17886       --
17887       1 = 2
17888       --
17889       THEN
17890       xla_accounting_err_pkg.build_message
17891                                     (p_appli_s_name            => 'XLA'
17892                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17893                                     ,p_token_1                 => 'LINE_NUMBER'
17894                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
17895                                     ,p_token_2                 => 'LINE_TYPE_NAME'
17896                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
17897                                                                              l_component_type
17898                                                                             ,l_component_code
17899                                                                             ,l_component_type_code
17900                                                                             ,l_component_appl_id
17901                                                                             ,l_amb_context_code
17902                                                                             ,l_entity_code
17903                                                                             ,l_event_class_code
17904                                                                            )
17905                                     ,p_token_3                 => 'OWNER'
17906                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
17907                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
17908                                                                           ,p_lookup_code    => l_component_type_code
17909                                                                          )
17910                                     ,p_token_4                 => 'PRODUCT_NAME'
17911                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
17912                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
17913                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
17914                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
17915                                     ,p_ae_header_id            =>  NULL
17916                                        );
17917 
17918         IF (C_LEVEL_ERROR>= g_log_level) THEN
17919                  trace
17920                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17921                       ,p_level    => C_LEVEL_ERROR
17922                       ,p_module   => l_log_module);
17923         END IF;
17924       END IF;
17925    END IF;
17926    --
17927    --
17928    ------------------------------------------------------------------------------------------------
17929    -- 4219869 Business Flow
17930    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
17931    -- Prior Entry.  Currently, the following code is always generated.
17932    ------------------------------------------------------------------------------------------------
17933    XLA_AE_LINES_PKG.ValidateCurrentLine;
17934 
17935    ------------------------------------------------------------------------------------
17936    -- 4219869 Business Flow
17937    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
17938    ------------------------------------------------------------------------------------
17939    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17940 
17941    ----------------------------------------------------------------------------------
17942    -- 4219869 Business Flow
17943    -- Update journal entry status -- Need to generate this within IF <condition>
17944    ----------------------------------------------------------------------------------
17945    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17946          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
17947          ,p_balance_type_code => l_balance_type_code
17948          );
17949 
17950    -------------------------------------------------------------------------------------------
17951    -- 4262811 - Generate the Accrual Reversal lines
17952    -------------------------------------------------------------------------------------------
17953    BEGIN
17954       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
17955                               (g_array_event(p_event_id).array_value_num('header_index'));
17956       IF l_acc_rev_flag IS NULL THEN
17957          l_acc_rev_flag := 'N';
17958       END IF;
17959    EXCEPTION
17960       WHEN OTHERS THEN
17961          l_acc_rev_flag := 'N';
17962    END;
17963    --
17964    IF (l_acc_rev_flag = 'Y') THEN
17965 
17966        -- 4645092  ------------------------------------------------------------------------------
17967        -- To allow MPA report to determine if it should generate report process
17968        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
17969        ------------------------------------------------------------------------------------------
17970 
17971        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
17972        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
17973    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
17974    -- call ADRs
17975    -- Bug 4922099
17976    --
17977    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17978         (NVL(l_actual_upg_option, 'N') = 'O') OR
17979         (NVL(l_enc_upg_option, 'N') = 'O')
17980       )
17981    THEN
17982    NULL;
17983    --
17984    --
17985    
17986   l_ccid := AcctDerRule_4(
17987            p_application_id           => p_application_id
17988          , p_ae_header_id             => l_ae_header_id 
17989 , p_source_4 => p_source_4
17990          , x_transaction_coa_id       => l_adr_transaction_coa_id
17991          , x_accounting_coa_id        => l_adr_accounting_coa_id
17992          , x_value_type_code          => l_adr_value_type_code
17993          , p_side                     => 'NA'
17994    );
17995 
17996    xla_ae_lines_pkg.set_ccid(
17997     p_code_combination_id          => l_ccid
17998   , p_value_type_code              => l_adr_value_type_code
17999   , p_transaction_coa_id           => l_adr_transaction_coa_id
18000   , p_accounting_coa_id            => l_adr_accounting_coa_id
18001   , p_adr_code                     => 'CST_DEFAULT'
18002   , p_adr_type_code                => 'S'
18003   , p_component_type               => l_component_type
18004   , p_component_code               => l_component_code
18005   , p_component_type_code          => l_component_type_code
18006   , p_component_appl_id            => l_component_appl_id
18007   , p_amb_context_code             => l_amb_context_code
18008   , p_side                         => 'NA'
18009   );
18010 
18011 
18012    --
18013    --
18014    END IF;
18015 
18016        --
18017        -- Update the line information that should be overwritten
18018        --
18019        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
18020                                          p_header_num   => 1);
18021        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
18022 
18023        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
18024 
18025        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
18026           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
18027        END IF;
18028 
18029       --
18030       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
18031       --
18032       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
18033           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
18034       ELSE
18035           ---------------------------------------------------------------------------------------------------
18036           -- 4262811a Switch Sign
18037           ---------------------------------------------------------------------------------------------------
18038           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
18039           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18040                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18041           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18042                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18043           -- 5132302
18044           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
18045                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18046 
18047       END IF;
18048 
18049       -- 4955764
18050       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18051       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
18052 
18053 
18054       XLA_AE_LINES_PKG.ValidateCurrentLine;
18055       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18056 
18057       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18058                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
18059                ,p_balance_type_code => l_balance_type_code);
18060 
18061    END IF;
18062 
18063    -----------------------------------------------------------------------------------------
18064    -- 4262811 Multiperiod Accounting
18065    -----------------------------------------------------------------------------------------
18066      -- No MPA option is assigned.
18067 
18068 
18069 END IF;
18070 END IF;
18071 --
18072 
18073 --
18074 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18075    trace
18076       (p_msg      => 'END of AcctLineType_35'
18077       ,p_level    => C_LEVEL_PROCEDURE
18078       ,p_module   => l_log_module);
18079 END IF;
18080 --
18081 EXCEPTION
18082   WHEN xla_exceptions_pkg.application_exception THEN
18083       RAISE;
18084   WHEN OTHERS THEN
18085        xla_exceptions_pkg.raise_message
18086            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_35');
18087 END AcctLineType_35;
18088 --
18089 
18090 ---------------------------------------
18091 --
18092 -- PRIVATE FUNCTION
18093 --         AcctLineType_36
18094 --
18095 ---------------------------------------
18096 PROCEDURE AcctLineType_36 (
18097   p_application_id        IN NUMBER
18098  ,p_event_id              IN NUMBER
18099  ,p_calculate_acctd_flag  IN VARCHAR2
18100  ,p_calculate_g_l_flag    IN VARCHAR2
18101  ,p_actual_flag           IN OUT VARCHAR2
18102  ,p_balance_type_code     OUT VARCHAR2
18103  ,p_gain_or_loss_ref      OUT VARCHAR2
18104  
18105 --Cost Management Default Account
18106  , p_source_4            IN NUMBER
18107 --Applied to Application ID
18108  , p_source_6            IN NUMBER
18109 --Applied to Distribution Link Type
18110  , p_source_7            IN VARCHAR2
18111 --Applied to Entity Code
18112  , p_source_8            IN VARCHAR2
18113 --DISTRIBUTION_IDENTIFIER
18114  , p_source_11            IN NUMBER
18115 --Distribution Type
18116  , p_source_12            IN VARCHAR2
18117  , p_source_12_meaning    IN VARCHAR2
18118 --Encumbrance Reversal Amount Entered
18119  , p_source_14            IN NUMBER
18120 --Entered Currency Code
18121  , p_source_15            IN VARCHAR2
18122 --Transaction Encumbrance Reversal Amount
18123  , p_source_16            IN NUMBER
18124 --Entered Amount
18125  , p_source_18            IN NUMBER
18126 --Currency Conversion Date
18127  , p_source_19            IN DATE
18128 --Currency Conversion Rate
18129  , p_source_20            IN NUMBER
18130 --Currency Conversion Type
18131  , p_source_21            IN VARCHAR2
18132 --Accounted Amount
18133  , p_source_22            IN NUMBER
18134 --Accounting Line Type
18135  , p_source_24            IN NUMBER
18136 --Costing Encumbrance Upgrade Option
18137  , p_source_27            IN VARCHAR2
18138 --TXN_PO_DISTRIBUTION_ID
18139  , p_source_28            IN NUMBER
18140 --TXN_PO_HEADER_ID
18141  , p_source_29            IN NUMBER
18142 --Requisition Budget Account
18143  , p_source_30            IN NUMBER
18144 --Requisition Encumbrance Type Identifier
18145  , p_source_31            IN NUMBER
18146 )
18147 IS
18148 
18149 l_component_type              VARCHAR2(80);
18150 l_component_code              VARCHAR2(30);
18151 l_component_type_code         VARCHAR2(1);
18152 l_component_appl_id           INTEGER;
18153 l_amb_context_code            VARCHAR2(30);
18154 l_entity_code                 VARCHAR2(30);
18155 l_event_class_code            VARCHAR2(30);
18156 l_ae_header_id                NUMBER;
18157 l_event_type_code             VARCHAR2(30);
18158 l_line_definition_code        VARCHAR2(30);
18159 l_line_definition_owner_code  VARCHAR2(1);
18160 --
18161 -- adr variables
18162 l_segment                     VARCHAR2(30);
18163 l_ccid                        NUMBER;
18164 l_adr_transaction_coa_id      NUMBER;
18165 l_adr_accounting_coa_id       NUMBER;
18166 l_adr_flexfield_segment_code  VARCHAR2(30);
18167 l_adr_flex_value_set_id       NUMBER;
18168 l_adr_value_type_code         VARCHAR2(30);
18169 l_adr_value_combination_id    NUMBER;
18170 l_adr_value_segment_code      VARCHAR2(30);
18171 
18172 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
18173 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
18174 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
18175 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
18176 
18177 -- 4262811 Variables ------------------------------------------------------------------------------------------
18178 l_entered_amt_idx             NUMBER;
18179 l_accted_amt_idx              NUMBER;
18180 l_acc_rev_flag                VARCHAR2(1);
18181 l_accrual_line_num            NUMBER;
18182 l_tmp_amt                     NUMBER;
18183 l_acc_rev_natural_side_code   VARCHAR2(1);
18184 
18185 l_num_entries                 NUMBER;
18186 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
18187 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
18188 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
18189 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
18190 l_recog_line_1                NUMBER;
18191 l_recog_line_2                NUMBER;
18192 
18193 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
18194 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
18195 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
18196 
18197 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
18198 
18199 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
18200 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
18201 
18202 ---------------------------------------------------------------------------------------------------------------
18203 
18204 
18205 --
18206 -- bulk performance
18207 --
18208 l_balance_type_code           VARCHAR2(1);
18209 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
18210 l_log_module                  VARCHAR2(240);
18211 
18212 --
18213 -- Upgrade strategy
18214 --
18215 l_actual_upg_option           VARCHAR2(1);
18216 l_enc_upg_option           VARCHAR2(1);
18217 
18218 --
18219 BEGIN
18220 --
18221 IF g_log_enabled THEN
18222       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_36';
18223 END IF;
18224 --
18225 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18226 
18227       trace
18228          (p_msg      => 'BEGIN of AcctLineType_36'
18229          ,p_level    => C_LEVEL_PROCEDURE
18230          ,p_module   => l_log_module);
18231 
18232 END IF;
18233 --
18234 l_component_type             := 'AMB_JLT';
18235 l_component_code             := 'COST_VARIANCE';
18236 l_component_type_code        := 'S';
18237 l_component_appl_id          :=  707;
18238 l_amb_context_code           := 'DEFAULT';
18239 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
18240 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
18241 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
18242 l_line_definition_owner_code := 'S';
18243 l_line_definition_code       := 'FOB_RCPT_RECIPIENT_RCPT';
18244 --
18245 l_balance_type_code          := 'A';
18246 l_segment                     := NULL;
18247 l_ccid                        := NULL;
18248 l_adr_transaction_coa_id      := NULL;
18249 l_adr_accounting_coa_id       := NULL;
18250 l_adr_flexfield_segment_code  := NULL;
18251 l_adr_flex_value_set_id       := NULL;
18252 l_adr_value_type_code         := NULL;
18253 l_adr_value_combination_id    := NULL;
18254 l_adr_value_segment_code      := NULL;
18255 
18256 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
18257 l_bflow_class_code           := '';    -- 4219869 Business Flow
18258 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
18259 l_budgetary_control_flag     := 'N';
18260 
18261 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
18262 l_bflow_applied_to_amt       := NULL; -- 5132302
18263 l_entered_amt_idx            := NULL;          -- 4262811
18264 l_accted_amt_idx             := NULL;          -- 4262811
18265 l_acc_rev_flag               := NULL;          -- 4262811
18266 l_accrual_line_num           := NULL;          -- 4262811
18267 l_tmp_amt                    := NULL;          -- 4262811
18268 --
18269  
18270 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
18271     l_balance_type_code <> 'B' THEN
18272 IF NVL(p_source_24,9E125) =  13
18273  THEN 
18274 
18275    --
18276    XLA_AE_LINES_PKG.SetNewLine;
18277 
18278    p_balance_type_code          := l_balance_type_code;
18279    -- set the flag so later we will know whether the gain loss line needs to be created
18280    
18281    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
18282      p_actual_flag :='A';
18283    END IF;
18284 
18285    --
18286    -- bulk performance
18287    --
18288    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
18289                                       p_header_num   => 0); -- 4262811
18290    --
18291    -- set accounting line options
18292    --
18293    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
18294            p_natural_side_code          => 'D'
18295          , p_gain_or_loss_flag          => 'N'
18296          , p_gl_transfer_mode_code      => 'S'
18297          , p_acct_entry_type_code       => 'A'
18298          , p_switch_side_flag           => 'Y'
18299          , p_merge_duplicate_code       => 'N'
18300          );
18301    --
18302    l_acc_rev_natural_side_code := 'C';  -- 4262811
18303    -- 
18304    --
18305    -- set accounting line type info
18306    --
18307    xla_ae_lines_pkg.SetAcctLineType
18308       (p_component_type             => l_component_type
18309       ,p_event_type_code            => l_event_type_code
18310       ,p_line_definition_owner_code => l_line_definition_owner_code
18311       ,p_line_definition_code       => l_line_definition_code
18312       ,p_accounting_line_code       => l_component_code
18313       ,p_accounting_line_type_code  => l_component_type_code
18314       ,p_accounting_line_appl_id    => l_component_appl_id
18315       ,p_amb_context_code           => l_amb_context_code
18316       ,p_entity_code                => l_entity_code
18317       ,p_event_class_code           => l_event_class_code);
18318    --
18319    -- set accounting class
18320    --
18321    xla_ae_lines_pkg.SetAcctClass(
18322            p_accounting_class_code  => 'COST_VARIANCE'
18323          , p_ae_header_id           => l_ae_header_id
18324          );
18325 
18326    --
18327    -- set rounding class
18328    --
18329    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
18330                       'COST_VARIANCE';
18331 
18332    --
18333    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
18334    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
18335    --
18336    -- bulk performance
18337    --
18338    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
18339 
18340    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
18341       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
18342 
18343    -- 4955764
18344    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18345       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
18346 
18347    -- 4458381 Public Sector Enh
18348    
18349    --
18350    -- set accounting attributes for the line type
18351    --
18352    l_entered_amt_idx := 17;
18353    l_accted_amt_idx  := 22;
18354    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
18355    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
18356    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
18357    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
18358    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
18359    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
18360    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
18361    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
18362    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
18363    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
18364    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
18365    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
18366    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
18367    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
18368    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
18369    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
18370    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
18371    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
18372    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
18373    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
18374    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
18375    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
18376    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
18377    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
18378    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
18379    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
18380    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
18381    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
18382    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
18383    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
18384    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
18385    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
18386    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
18387    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
18388    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
18389    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
18390    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
18391    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
18392    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
18393    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
18394    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
18395    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
18396    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
18397    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
18398    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
18399    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
18400    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
18401    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
18402    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
18403 
18404    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
18405    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
18406 
18407    ---------------------------------------------------------------------------------------------------------------
18408    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
18409    ---------------------------------------------------------------------------------------------------------------
18410    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
18411 
18412    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18413    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18414 
18415    IF xla_accounting_cache_pkg.GetValueChar
18416          (p_source_code         => 'LEDGER_CATEGORY_CODE'
18417          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
18418    AND l_bflow_method_code = 'PRIOR_ENTRY'
18419 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
18420    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
18421          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
18422        )
18423    THEN
18424          xla_ae_lines_pkg.BflowUpgEntry
18425            (p_business_method_code    => l_bflow_method_code
18426            ,p_business_class_code     => l_bflow_class_code
18427            ,p_balance_type            => l_balance_type_code);
18428    ELSE
18429       NULL;
18430 -- No business flow processing for business flow method of NONE.
18431    END IF;
18432 
18433    --
18434    -- call analytical criteria
18435    --
18436    
18437    --
18438    -- call description
18439    --
18440    -- No description or it is inherited.
18441    --
18442    -- call ADRs
18443    -- Bug 4922099
18444    --
18445    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18446         (NVL(l_actual_upg_option, 'N') = 'O') OR
18447         (NVL(l_enc_upg_option, 'N') = 'O')
18448       )
18449    THEN
18450    NULL;
18451    --
18452    --
18453    
18454   l_ccid := AcctDerRule_4(
18455            p_application_id           => p_application_id
18456          , p_ae_header_id             => l_ae_header_id 
18457 , p_source_4 => p_source_4
18458          , x_transaction_coa_id       => l_adr_transaction_coa_id
18459          , x_accounting_coa_id        => l_adr_accounting_coa_id
18460          , x_value_type_code          => l_adr_value_type_code
18461          , p_side                     => 'NA'
18462    );
18463 
18464    xla_ae_lines_pkg.set_ccid(
18465     p_code_combination_id          => l_ccid
18466   , p_value_type_code              => l_adr_value_type_code
18467   , p_transaction_coa_id           => l_adr_transaction_coa_id
18468   , p_accounting_coa_id            => l_adr_accounting_coa_id
18469   , p_adr_code                     => 'CST_DEFAULT'
18470   , p_adr_type_code                => 'S'
18471   , p_component_type               => l_component_type
18472   , p_component_code               => l_component_code
18473   , p_component_type_code          => l_component_type_code
18474   , p_component_appl_id            => l_component_appl_id
18475   , p_amb_context_code             => l_amb_context_code
18476   , p_side                         => 'NA'
18477   );
18478 
18479 
18480    --
18481    --
18482    END IF;
18483    --
18484    -- Bug 4922099
18485    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
18486           (NVL(l_enc_upg_option, 'N') = 'O')
18487         ) AND
18488         (l_bflow_method_code = 'PRIOR_ENTRY')
18489       )
18490    THEN
18491       IF
18492       --
18493       1 = 2
18494       --
18495       THEN
18496       xla_accounting_err_pkg.build_message
18497                                     (p_appli_s_name            => 'XLA'
18498                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18499                                     ,p_token_1                 => 'LINE_NUMBER'
18500                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
18501                                     ,p_token_2                 => 'LINE_TYPE_NAME'
18502                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
18503                                                                              l_component_type
18504                                                                             ,l_component_code
18505                                                                             ,l_component_type_code
18506                                                                             ,l_component_appl_id
18507                                                                             ,l_amb_context_code
18508                                                                             ,l_entity_code
18509                                                                             ,l_event_class_code
18510                                                                            )
18511                                     ,p_token_3                 => 'OWNER'
18512                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
18513                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
18514                                                                           ,p_lookup_code    => l_component_type_code
18515                                                                          )
18516                                     ,p_token_4                 => 'PRODUCT_NAME'
18517                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
18518                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
18519                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
18520                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
18521                                     ,p_ae_header_id            =>  NULL
18522                                        );
18523 
18524         IF (C_LEVEL_ERROR>= g_log_level) THEN
18525                  trace
18526                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18527                       ,p_level    => C_LEVEL_ERROR
18528                       ,p_module   => l_log_module);
18529         END IF;
18530       END IF;
18531    END IF;
18532    --
18533    --
18534    ------------------------------------------------------------------------------------------------
18535    -- 4219869 Business Flow
18536    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
18537    -- Prior Entry.  Currently, the following code is always generated.
18538    ------------------------------------------------------------------------------------------------
18539    XLA_AE_LINES_PKG.ValidateCurrentLine;
18540 
18541    ------------------------------------------------------------------------------------
18542    -- 4219869 Business Flow
18543    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
18544    ------------------------------------------------------------------------------------
18545    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18546 
18547    ----------------------------------------------------------------------------------
18548    -- 4219869 Business Flow
18549    -- Update journal entry status -- Need to generate this within IF <condition>
18550    ----------------------------------------------------------------------------------
18551    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18552          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
18553          ,p_balance_type_code => l_balance_type_code
18554          );
18555 
18556    -------------------------------------------------------------------------------------------
18557    -- 4262811 - Generate the Accrual Reversal lines
18558    -------------------------------------------------------------------------------------------
18559    BEGIN
18560       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
18561                               (g_array_event(p_event_id).array_value_num('header_index'));
18562       IF l_acc_rev_flag IS NULL THEN
18563          l_acc_rev_flag := 'N';
18564       END IF;
18565    EXCEPTION
18566       WHEN OTHERS THEN
18567          l_acc_rev_flag := 'N';
18568    END;
18569    --
18570    IF (l_acc_rev_flag = 'Y') THEN
18571 
18572        -- 4645092  ------------------------------------------------------------------------------
18573        -- To allow MPA report to determine if it should generate report process
18574        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
18575        ------------------------------------------------------------------------------------------
18576 
18577        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
18578        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
18579    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
18580    -- call ADRs
18581    -- Bug 4922099
18582    --
18583    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18584         (NVL(l_actual_upg_option, 'N') = 'O') OR
18585         (NVL(l_enc_upg_option, 'N') = 'O')
18586       )
18587    THEN
18588    NULL;
18589    --
18590    --
18591    
18592   l_ccid := AcctDerRule_4(
18593            p_application_id           => p_application_id
18594          , p_ae_header_id             => l_ae_header_id 
18595 , p_source_4 => p_source_4
18596          , x_transaction_coa_id       => l_adr_transaction_coa_id
18597          , x_accounting_coa_id        => l_adr_accounting_coa_id
18598          , x_value_type_code          => l_adr_value_type_code
18599          , p_side                     => 'NA'
18600    );
18601 
18602    xla_ae_lines_pkg.set_ccid(
18603     p_code_combination_id          => l_ccid
18604   , p_value_type_code              => l_adr_value_type_code
18605   , p_transaction_coa_id           => l_adr_transaction_coa_id
18606   , p_accounting_coa_id            => l_adr_accounting_coa_id
18607   , p_adr_code                     => 'CST_DEFAULT'
18608   , p_adr_type_code                => 'S'
18609   , p_component_type               => l_component_type
18610   , p_component_code               => l_component_code
18611   , p_component_type_code          => l_component_type_code
18612   , p_component_appl_id            => l_component_appl_id
18613   , p_amb_context_code             => l_amb_context_code
18614   , p_side                         => 'NA'
18615   );
18616 
18617 
18618    --
18619    --
18620    END IF;
18621 
18622        --
18623        -- Update the line information that should be overwritten
18624        --
18625        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
18626                                          p_header_num   => 1);
18627        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
18628 
18629        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
18630 
18631        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
18632           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
18633        END IF;
18634 
18635       --
18636       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
18637       --
18638       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
18639           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
18640       ELSE
18641           ---------------------------------------------------------------------------------------------------
18642           -- 4262811a Switch Sign
18643           ---------------------------------------------------------------------------------------------------
18644           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
18645           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18646                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18647           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18648                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18649           -- 5132302
18650           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
18651                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18652 
18653       END IF;
18654 
18655       -- 4955764
18656       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18657       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
18658 
18659 
18660       XLA_AE_LINES_PKG.ValidateCurrentLine;
18661       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18662 
18663       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18664                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
18665                ,p_balance_type_code => l_balance_type_code);
18666 
18667    END IF;
18668 
18669    -----------------------------------------------------------------------------------------
18670    -- 4262811 Multiperiod Accounting
18671    -----------------------------------------------------------------------------------------
18672      -- No MPA option is assigned.
18673 
18674 
18675 END IF;
18676 END IF;
18677 --
18678 
18679 --
18680 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18681    trace
18682       (p_msg      => 'END of AcctLineType_36'
18683       ,p_level    => C_LEVEL_PROCEDURE
18684       ,p_module   => l_log_module);
18685 END IF;
18686 --
18687 EXCEPTION
18688   WHEN xla_exceptions_pkg.application_exception THEN
18689       RAISE;
18690   WHEN OTHERS THEN
18691        xla_exceptions_pkg.raise_message
18692            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_36');
18693 END AcctLineType_36;
18694 --
18695 
18696 ---------------------------------------
18697 --
18698 -- PRIVATE FUNCTION
18699 --         AcctLineType_37
18700 --
18701 ---------------------------------------
18702 PROCEDURE AcctLineType_37 (
18703   p_application_id        IN NUMBER
18704  ,p_event_id              IN NUMBER
18705  ,p_calculate_acctd_flag  IN VARCHAR2
18706  ,p_calculate_g_l_flag    IN VARCHAR2
18707  ,p_actual_flag           IN OUT VARCHAR2
18708  ,p_balance_type_code     OUT VARCHAR2
18709  ,p_gain_or_loss_ref      OUT VARCHAR2
18710  
18711 --Cost Management Default Account
18712  , p_source_4            IN NUMBER
18713 --DISTRIBUTION_IDENTIFIER
18714  , p_source_11            IN NUMBER
18715 --Distribution Type
18716  , p_source_12            IN VARCHAR2
18717  , p_source_12_meaning    IN VARCHAR2
18718 --Entered Currency Code
18719  , p_source_15            IN VARCHAR2
18720 --Entered Amount
18721  , p_source_18            IN NUMBER
18722 --Currency Conversion Date
18723  , p_source_19            IN DATE
18724 --Currency Conversion Rate
18725  , p_source_20            IN NUMBER
18726 --Currency Conversion Type
18727  , p_source_21            IN VARCHAR2
18728 --Accounted Amount
18729  , p_source_22            IN NUMBER
18730 --Accounting Line Type
18731  , p_source_24            IN NUMBER
18732 )
18733 IS
18734 
18735 l_component_type              VARCHAR2(80);
18736 l_component_code              VARCHAR2(30);
18737 l_component_type_code         VARCHAR2(1);
18738 l_component_appl_id           INTEGER;
18739 l_amb_context_code            VARCHAR2(30);
18740 l_entity_code                 VARCHAR2(30);
18741 l_event_class_code            VARCHAR2(30);
18742 l_ae_header_id                NUMBER;
18743 l_event_type_code             VARCHAR2(30);
18744 l_line_definition_code        VARCHAR2(30);
18745 l_line_definition_owner_code  VARCHAR2(1);
18746 --
18747 -- adr variables
18748 l_segment                     VARCHAR2(30);
18749 l_ccid                        NUMBER;
18750 l_adr_transaction_coa_id      NUMBER;
18751 l_adr_accounting_coa_id       NUMBER;
18752 l_adr_flexfield_segment_code  VARCHAR2(30);
18753 l_adr_flex_value_set_id       NUMBER;
18754 l_adr_value_type_code         VARCHAR2(30);
18755 l_adr_value_combination_id    NUMBER;
18756 l_adr_value_segment_code      VARCHAR2(30);
18757 
18758 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
18759 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
18760 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
18761 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
18762 
18763 -- 4262811 Variables ------------------------------------------------------------------------------------------
18764 l_entered_amt_idx             NUMBER;
18765 l_accted_amt_idx              NUMBER;
18766 l_acc_rev_flag                VARCHAR2(1);
18767 l_accrual_line_num            NUMBER;
18768 l_tmp_amt                     NUMBER;
18769 l_acc_rev_natural_side_code   VARCHAR2(1);
18770 
18771 l_num_entries                 NUMBER;
18772 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
18773 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
18774 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
18775 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
18776 l_recog_line_1                NUMBER;
18777 l_recog_line_2                NUMBER;
18778 
18779 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
18780 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
18781 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
18782 
18783 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
18784 
18785 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
18786 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
18787 
18788 ---------------------------------------------------------------------------------------------------------------
18789 
18790 
18791 --
18792 -- bulk performance
18793 --
18794 l_balance_type_code           VARCHAR2(1);
18795 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
18796 l_log_module                  VARCHAR2(240);
18797 
18798 --
18799 -- Upgrade strategy
18800 --
18801 l_actual_upg_option           VARCHAR2(1);
18802 l_enc_upg_option           VARCHAR2(1);
18803 
18804 --
18805 BEGIN
18806 --
18807 IF g_log_enabled THEN
18808       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_37';
18809 END IF;
18810 --
18811 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18812 
18813       trace
18814          (p_msg      => 'BEGIN of AcctLineType_37'
18815          ,p_level    => C_LEVEL_PROCEDURE
18816          ,p_module   => l_log_module);
18817 
18818 END IF;
18819 --
18820 l_component_type             := 'AMB_JLT';
18821 l_component_code             := 'COST_VARIANCE';
18822 l_component_type_code        := 'S';
18823 l_component_appl_id          :=  707;
18824 l_amb_context_code           := 'DEFAULT';
18825 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
18826 l_event_class_code           := 'USER_DEFINE';
18827 l_event_type_code            := 'USUB_TXFR';
18828 l_line_definition_owner_code := 'S';
18829 l_line_definition_code       := 'USER_SUB_TXFR';
18830 --
18831 l_balance_type_code          := 'A';
18832 l_segment                     := NULL;
18833 l_ccid                        := NULL;
18834 l_adr_transaction_coa_id      := NULL;
18835 l_adr_accounting_coa_id       := NULL;
18836 l_adr_flexfield_segment_code  := NULL;
18837 l_adr_flex_value_set_id       := NULL;
18838 l_adr_value_type_code         := NULL;
18839 l_adr_value_combination_id    := NULL;
18840 l_adr_value_segment_code      := NULL;
18841 
18842 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
18843 l_bflow_class_code           := '';    -- 4219869 Business Flow
18844 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
18845 l_budgetary_control_flag     := 'N';
18846 
18847 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
18848 l_bflow_applied_to_amt       := NULL; -- 5132302
18849 l_entered_amt_idx            := NULL;          -- 4262811
18850 l_accted_amt_idx             := NULL;          -- 4262811
18851 l_acc_rev_flag               := NULL;          -- 4262811
18852 l_accrual_line_num           := NULL;          -- 4262811
18853 l_tmp_amt                    := NULL;          -- 4262811
18854 --
18855  
18856 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
18857     l_balance_type_code <> 'B' THEN
18858 IF NVL(p_source_24,9E125) =  13
18859  THEN 
18860 
18861    --
18862    XLA_AE_LINES_PKG.SetNewLine;
18863 
18864    p_balance_type_code          := l_balance_type_code;
18865    -- set the flag so later we will know whether the gain loss line needs to be created
18866    
18867    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
18868      p_actual_flag :='A';
18869    END IF;
18870 
18871    --
18872    -- bulk performance
18873    --
18874    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
18875                                       p_header_num   => 0); -- 4262811
18876    --
18877    -- set accounting line options
18878    --
18879    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
18880            p_natural_side_code          => 'D'
18881          , p_gain_or_loss_flag          => 'N'
18882          , p_gl_transfer_mode_code      => 'S'
18883          , p_acct_entry_type_code       => 'A'
18884          , p_switch_side_flag           => 'Y'
18885          , p_merge_duplicate_code       => 'N'
18886          );
18887    --
18888    l_acc_rev_natural_side_code := 'C';  -- 4262811
18889    -- 
18890    --
18891    -- set accounting line type info
18892    --
18893    xla_ae_lines_pkg.SetAcctLineType
18894       (p_component_type             => l_component_type
18895       ,p_event_type_code            => l_event_type_code
18896       ,p_line_definition_owner_code => l_line_definition_owner_code
18897       ,p_line_definition_code       => l_line_definition_code
18898       ,p_accounting_line_code       => l_component_code
18899       ,p_accounting_line_type_code  => l_component_type_code
18900       ,p_accounting_line_appl_id    => l_component_appl_id
18901       ,p_amb_context_code           => l_amb_context_code
18902       ,p_entity_code                => l_entity_code
18903       ,p_event_class_code           => l_event_class_code);
18904    --
18905    -- set accounting class
18906    --
18907    xla_ae_lines_pkg.SetAcctClass(
18908            p_accounting_class_code  => 'COST_VARIANCE'
18909          , p_ae_header_id           => l_ae_header_id
18910          );
18911 
18912    --
18913    -- set rounding class
18914    --
18915    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
18916                       'COST_VARIANCE';
18917 
18918    --
18919    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
18920    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
18921    --
18922    -- bulk performance
18923    --
18924    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
18925 
18926    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
18927       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
18928 
18929    -- 4955764
18930    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18931       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
18932 
18933    -- 4458381 Public Sector Enh
18934    
18935    --
18936    -- set accounting attributes for the line type
18937    --
18938    l_entered_amt_idx := 3;
18939    l_accted_amt_idx  := 8;
18940    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
18941    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
18942    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
18943    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
18944    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
18945    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
18946    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
18947    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
18948    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
18949    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
18950    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
18951    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
18952    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
18953    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
18954    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
18955    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
18956    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
18957 
18958    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
18959    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
18960 
18961    ---------------------------------------------------------------------------------------------------------------
18962    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
18963    ---------------------------------------------------------------------------------------------------------------
18964    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
18965 
18966    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18967    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18968 
18969    IF xla_accounting_cache_pkg.GetValueChar
18970          (p_source_code         => 'LEDGER_CATEGORY_CODE'
18971          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
18972    AND l_bflow_method_code = 'PRIOR_ENTRY'
18973 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
18974    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
18975          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
18976        )
18977    THEN
18978          xla_ae_lines_pkg.BflowUpgEntry
18979            (p_business_method_code    => l_bflow_method_code
18980            ,p_business_class_code     => l_bflow_class_code
18981            ,p_balance_type            => l_balance_type_code);
18982    ELSE
18983       NULL;
18984 -- No business flow processing for business flow method of NONE.
18985    END IF;
18986 
18987    --
18988    -- call analytical criteria
18989    --
18990    
18991    --
18992    -- call description
18993    --
18994    -- No description or it is inherited.
18995    --
18996    -- call ADRs
18997    -- Bug 4922099
18998    --
18999    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19000         (NVL(l_actual_upg_option, 'N') = 'O') OR
19001         (NVL(l_enc_upg_option, 'N') = 'O')
19002       )
19003    THEN
19004    NULL;
19005    --
19006    --
19007    
19008   l_ccid := AcctDerRule_4(
19009            p_application_id           => p_application_id
19010          , p_ae_header_id             => l_ae_header_id 
19011 , p_source_4 => p_source_4
19012          , x_transaction_coa_id       => l_adr_transaction_coa_id
19013          , x_accounting_coa_id        => l_adr_accounting_coa_id
19014          , x_value_type_code          => l_adr_value_type_code
19015          , p_side                     => 'NA'
19016    );
19017 
19018    xla_ae_lines_pkg.set_ccid(
19019     p_code_combination_id          => l_ccid
19020   , p_value_type_code              => l_adr_value_type_code
19021   , p_transaction_coa_id           => l_adr_transaction_coa_id
19022   , p_accounting_coa_id            => l_adr_accounting_coa_id
19023   , p_adr_code                     => 'CST_DEFAULT'
19024   , p_adr_type_code                => 'S'
19025   , p_component_type               => l_component_type
19026   , p_component_code               => l_component_code
19027   , p_component_type_code          => l_component_type_code
19028   , p_component_appl_id            => l_component_appl_id
19029   , p_amb_context_code             => l_amb_context_code
19030   , p_side                         => 'NA'
19031   );
19032 
19033 
19034    --
19035    --
19036    END IF;
19037    --
19038    -- Bug 4922099
19039    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
19040           (NVL(l_enc_upg_option, 'N') = 'O')
19041         ) AND
19042         (l_bflow_method_code = 'PRIOR_ENTRY')
19043       )
19044    THEN
19045       IF
19046       --
19047       1 = 2
19048       --
19049       THEN
19050       xla_accounting_err_pkg.build_message
19051                                     (p_appli_s_name            => 'XLA'
19052                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19053                                     ,p_token_1                 => 'LINE_NUMBER'
19054                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
19055                                     ,p_token_2                 => 'LINE_TYPE_NAME'
19056                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
19057                                                                              l_component_type
19058                                                                             ,l_component_code
19059                                                                             ,l_component_type_code
19060                                                                             ,l_component_appl_id
19061                                                                             ,l_amb_context_code
19062                                                                             ,l_entity_code
19063                                                                             ,l_event_class_code
19064                                                                            )
19065                                     ,p_token_3                 => 'OWNER'
19066                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
19067                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
19068                                                                           ,p_lookup_code    => l_component_type_code
19069                                                                          )
19070                                     ,p_token_4                 => 'PRODUCT_NAME'
19071                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
19072                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
19073                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
19074                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
19075                                     ,p_ae_header_id            =>  NULL
19076                                        );
19077 
19078         IF (C_LEVEL_ERROR>= g_log_level) THEN
19079                  trace
19080                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19081                       ,p_level    => C_LEVEL_ERROR
19082                       ,p_module   => l_log_module);
19083         END IF;
19084       END IF;
19085    END IF;
19086    --
19087    --
19088    ------------------------------------------------------------------------------------------------
19089    -- 4219869 Business Flow
19090    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
19091    -- Prior Entry.  Currently, the following code is always generated.
19092    ------------------------------------------------------------------------------------------------
19093    XLA_AE_LINES_PKG.ValidateCurrentLine;
19094 
19095    ------------------------------------------------------------------------------------
19096    -- 4219869 Business Flow
19097    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
19098    ------------------------------------------------------------------------------------
19099    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19100 
19101    ----------------------------------------------------------------------------------
19102    -- 4219869 Business Flow
19103    -- Update journal entry status -- Need to generate this within IF <condition>
19104    ----------------------------------------------------------------------------------
19105    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19106          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
19107          ,p_balance_type_code => l_balance_type_code
19108          );
19109 
19110    -------------------------------------------------------------------------------------------
19111    -- 4262811 - Generate the Accrual Reversal lines
19112    -------------------------------------------------------------------------------------------
19113    BEGIN
19114       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
19115                               (g_array_event(p_event_id).array_value_num('header_index'));
19116       IF l_acc_rev_flag IS NULL THEN
19117          l_acc_rev_flag := 'N';
19118       END IF;
19119    EXCEPTION
19120       WHEN OTHERS THEN
19121          l_acc_rev_flag := 'N';
19122    END;
19123    --
19124    IF (l_acc_rev_flag = 'Y') THEN
19125 
19126        -- 4645092  ------------------------------------------------------------------------------
19127        -- To allow MPA report to determine if it should generate report process
19128        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
19129        ------------------------------------------------------------------------------------------
19130 
19131        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
19132        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
19133    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
19134    -- call ADRs
19135    -- Bug 4922099
19136    --
19137    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19138         (NVL(l_actual_upg_option, 'N') = 'O') OR
19139         (NVL(l_enc_upg_option, 'N') = 'O')
19140       )
19141    THEN
19142    NULL;
19143    --
19144    --
19145    
19146   l_ccid := AcctDerRule_4(
19147            p_application_id           => p_application_id
19148          , p_ae_header_id             => l_ae_header_id 
19149 , p_source_4 => p_source_4
19150          , x_transaction_coa_id       => l_adr_transaction_coa_id
19151          , x_accounting_coa_id        => l_adr_accounting_coa_id
19152          , x_value_type_code          => l_adr_value_type_code
19153          , p_side                     => 'NA'
19154    );
19155 
19156    xla_ae_lines_pkg.set_ccid(
19157     p_code_combination_id          => l_ccid
19158   , p_value_type_code              => l_adr_value_type_code
19159   , p_transaction_coa_id           => l_adr_transaction_coa_id
19160   , p_accounting_coa_id            => l_adr_accounting_coa_id
19161   , p_adr_code                     => 'CST_DEFAULT'
19162   , p_adr_type_code                => 'S'
19163   , p_component_type               => l_component_type
19164   , p_component_code               => l_component_code
19165   , p_component_type_code          => l_component_type_code
19166   , p_component_appl_id            => l_component_appl_id
19167   , p_amb_context_code             => l_amb_context_code
19168   , p_side                         => 'NA'
19169   );
19170 
19171 
19172    --
19173    --
19174    END IF;
19175 
19176        --
19177        -- Update the line information that should be overwritten
19178        --
19179        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
19180                                          p_header_num   => 1);
19181        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
19182 
19183        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
19184 
19185        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
19186           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
19187        END IF;
19188 
19189       --
19190       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
19191       --
19192       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
19193           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
19194       ELSE
19195           ---------------------------------------------------------------------------------------------------
19196           -- 4262811a Switch Sign
19197           ---------------------------------------------------------------------------------------------------
19198           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
19199           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19200                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19201           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19202                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19203           -- 5132302
19204           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
19205                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19206 
19207       END IF;
19208 
19209       -- 4955764
19210       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19211       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
19212 
19213 
19214       XLA_AE_LINES_PKG.ValidateCurrentLine;
19215       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19216 
19217       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19218                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
19219                ,p_balance_type_code => l_balance_type_code);
19220 
19221    END IF;
19222 
19223    -----------------------------------------------------------------------------------------
19224    -- 4262811 Multiperiod Accounting
19225    -----------------------------------------------------------------------------------------
19226      -- No MPA option is assigned.
19227 
19228 
19229 END IF;
19230 END IF;
19231 --
19232 
19233 --
19234 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19235    trace
19236       (p_msg      => 'END of AcctLineType_37'
19237       ,p_level    => C_LEVEL_PROCEDURE
19238       ,p_module   => l_log_module);
19239 END IF;
19240 --
19241 EXCEPTION
19242   WHEN xla_exceptions_pkg.application_exception THEN
19243       RAISE;
19244   WHEN OTHERS THEN
19245        xla_exceptions_pkg.raise_message
19246            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_37');
19247 END AcctLineType_37;
19248 --
19249 
19250 ---------------------------------------
19251 --
19252 -- PRIVATE FUNCTION
19253 --         AcctLineType_38
19254 --
19255 ---------------------------------------
19256 PROCEDURE AcctLineType_38 (
19257   p_application_id        IN NUMBER
19258  ,p_event_id              IN NUMBER
19259  ,p_calculate_acctd_flag  IN VARCHAR2
19260  ,p_calculate_g_l_flag    IN VARCHAR2
19261  ,p_actual_flag           IN OUT VARCHAR2
19262  ,p_balance_type_code     OUT VARCHAR2
19263  ,p_gain_or_loss_ref      OUT VARCHAR2
19264  
19265 --Cost Management Default Account
19266  , p_source_4            IN NUMBER
19267 --DISTRIBUTION_IDENTIFIER
19268  , p_source_11            IN NUMBER
19269 --Distribution Type
19270  , p_source_12            IN VARCHAR2
19271  , p_source_12_meaning    IN VARCHAR2
19272 --Entered Currency Code
19273  , p_source_15            IN VARCHAR2
19274 --Entered Amount
19275  , p_source_18            IN NUMBER
19276 --Currency Conversion Date
19277  , p_source_19            IN DATE
19278 --Currency Conversion Rate
19279  , p_source_20            IN NUMBER
19280 --Currency Conversion Type
19281  , p_source_21            IN VARCHAR2
19282 --Accounted Amount
19283  , p_source_22            IN NUMBER
19284 --Accounting Line Type
19285  , p_source_24            IN NUMBER
19286 )
19287 IS
19288 
19289 l_component_type              VARCHAR2(80);
19290 l_component_code              VARCHAR2(30);
19291 l_component_type_code         VARCHAR2(1);
19292 l_component_appl_id           INTEGER;
19293 l_amb_context_code            VARCHAR2(30);
19294 l_entity_code                 VARCHAR2(30);
19295 l_event_class_code            VARCHAR2(30);
19296 l_ae_header_id                NUMBER;
19297 l_event_type_code             VARCHAR2(30);
19298 l_line_definition_code        VARCHAR2(30);
19299 l_line_definition_owner_code  VARCHAR2(1);
19300 --
19301 -- adr variables
19302 l_segment                     VARCHAR2(30);
19303 l_ccid                        NUMBER;
19304 l_adr_transaction_coa_id      NUMBER;
19305 l_adr_accounting_coa_id       NUMBER;
19306 l_adr_flexfield_segment_code  VARCHAR2(30);
19307 l_adr_flex_value_set_id       NUMBER;
19308 l_adr_value_type_code         VARCHAR2(30);
19309 l_adr_value_combination_id    NUMBER;
19310 l_adr_value_segment_code      VARCHAR2(30);
19311 
19312 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
19313 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
19314 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
19315 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
19316 
19317 -- 4262811 Variables ------------------------------------------------------------------------------------------
19318 l_entered_amt_idx             NUMBER;
19319 l_accted_amt_idx              NUMBER;
19320 l_acc_rev_flag                VARCHAR2(1);
19321 l_accrual_line_num            NUMBER;
19322 l_tmp_amt                     NUMBER;
19323 l_acc_rev_natural_side_code   VARCHAR2(1);
19324 
19325 l_num_entries                 NUMBER;
19326 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
19327 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
19328 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
19329 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
19330 l_recog_line_1                NUMBER;
19331 l_recog_line_2                NUMBER;
19332 
19333 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
19334 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
19335 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
19336 
19337 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
19338 
19339 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
19340 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
19341 
19342 ---------------------------------------------------------------------------------------------------------------
19343 
19344 
19345 --
19346 -- bulk performance
19347 --
19348 l_balance_type_code           VARCHAR2(1);
19349 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
19350 l_log_module                  VARCHAR2(240);
19351 
19352 --
19353 -- Upgrade strategy
19354 --
19355 l_actual_upg_option           VARCHAR2(1);
19356 l_enc_upg_option           VARCHAR2(1);
19357 
19358 --
19359 BEGIN
19360 --
19361 IF g_log_enabled THEN
19362       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_38';
19363 END IF;
19364 --
19365 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19366 
19367       trace
19368          (p_msg      => 'BEGIN of AcctLineType_38'
19369          ,p_level    => C_LEVEL_PROCEDURE
19370          ,p_module   => l_log_module);
19371 
19372 END IF;
19373 --
19374 l_component_type             := 'AMB_JLT';
19375 l_component_code             := 'COST_VARIANCE';
19376 l_component_type_code        := 'S';
19377 l_component_appl_id          :=  707;
19378 l_amb_context_code           := 'DEFAULT';
19379 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
19380 l_event_class_code           := 'USER_DEFINE';
19381 l_event_type_code            := 'UDIR_INTERORG_RCPT_NO_TP';
19382 l_line_definition_owner_code := 'S';
19383 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_NO_TP';
19384 --
19385 l_balance_type_code          := 'A';
19386 l_segment                     := NULL;
19387 l_ccid                        := NULL;
19388 l_adr_transaction_coa_id      := NULL;
19389 l_adr_accounting_coa_id       := NULL;
19390 l_adr_flexfield_segment_code  := NULL;
19391 l_adr_flex_value_set_id       := NULL;
19392 l_adr_value_type_code         := NULL;
19393 l_adr_value_combination_id    := NULL;
19394 l_adr_value_segment_code      := NULL;
19395 
19396 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
19397 l_bflow_class_code           := '';    -- 4219869 Business Flow
19398 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
19399 l_budgetary_control_flag     := 'N';
19400 
19401 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
19402 l_bflow_applied_to_amt       := NULL; -- 5132302
19403 l_entered_amt_idx            := NULL;          -- 4262811
19404 l_accted_amt_idx             := NULL;          -- 4262811
19405 l_acc_rev_flag               := NULL;          -- 4262811
19406 l_accrual_line_num           := NULL;          -- 4262811
19407 l_tmp_amt                    := NULL;          -- 4262811
19408 --
19409  
19410 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
19411     l_balance_type_code <> 'B' THEN
19412 IF NVL(p_source_24,9E125) =  13
19413  THEN 
19414 
19415    --
19416    XLA_AE_LINES_PKG.SetNewLine;
19417 
19418    p_balance_type_code          := l_balance_type_code;
19419    -- set the flag so later we will know whether the gain loss line needs to be created
19420    
19421    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
19422      p_actual_flag :='A';
19423    END IF;
19424 
19425    --
19426    -- bulk performance
19427    --
19428    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
19429                                       p_header_num   => 0); -- 4262811
19430    --
19431    -- set accounting line options
19432    --
19433    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
19434            p_natural_side_code          => 'D'
19435          , p_gain_or_loss_flag          => 'N'
19436          , p_gl_transfer_mode_code      => 'S'
19437          , p_acct_entry_type_code       => 'A'
19438          , p_switch_side_flag           => 'Y'
19439          , p_merge_duplicate_code       => 'N'
19440          );
19441    --
19442    l_acc_rev_natural_side_code := 'C';  -- 4262811
19443    -- 
19444    --
19445    -- set accounting line type info
19446    --
19447    xla_ae_lines_pkg.SetAcctLineType
19448       (p_component_type             => l_component_type
19449       ,p_event_type_code            => l_event_type_code
19450       ,p_line_definition_owner_code => l_line_definition_owner_code
19451       ,p_line_definition_code       => l_line_definition_code
19452       ,p_accounting_line_code       => l_component_code
19453       ,p_accounting_line_type_code  => l_component_type_code
19454       ,p_accounting_line_appl_id    => l_component_appl_id
19455       ,p_amb_context_code           => l_amb_context_code
19456       ,p_entity_code                => l_entity_code
19457       ,p_event_class_code           => l_event_class_code);
19458    --
19459    -- set accounting class
19460    --
19461    xla_ae_lines_pkg.SetAcctClass(
19462            p_accounting_class_code  => 'COST_VARIANCE'
19463          , p_ae_header_id           => l_ae_header_id
19464          );
19465 
19466    --
19467    -- set rounding class
19468    --
19469    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
19470                       'COST_VARIANCE';
19471 
19472    --
19473    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
19474    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
19475    --
19476    -- bulk performance
19477    --
19478    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
19479 
19480    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
19481       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
19482 
19483    -- 4955764
19484    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19485       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
19486 
19487    -- 4458381 Public Sector Enh
19488    
19489    --
19490    -- set accounting attributes for the line type
19491    --
19492    l_entered_amt_idx := 3;
19493    l_accted_amt_idx  := 8;
19494    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
19495    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
19496    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
19497    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
19498    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
19499    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
19500    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
19501    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
19502    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
19503    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
19504    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
19505    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
19506    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
19507    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
19508    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
19509    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
19510    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
19511 
19512    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
19513    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
19514 
19515    ---------------------------------------------------------------------------------------------------------------
19516    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
19517    ---------------------------------------------------------------------------------------------------------------
19518    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
19519 
19520    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19521    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19522 
19523    IF xla_accounting_cache_pkg.GetValueChar
19524          (p_source_code         => 'LEDGER_CATEGORY_CODE'
19525          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
19526    AND l_bflow_method_code = 'PRIOR_ENTRY'
19527 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
19528    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
19529          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
19530        )
19531    THEN
19532          xla_ae_lines_pkg.BflowUpgEntry
19533            (p_business_method_code    => l_bflow_method_code
19534            ,p_business_class_code     => l_bflow_class_code
19535            ,p_balance_type            => l_balance_type_code);
19536    ELSE
19537       NULL;
19538 -- No business flow processing for business flow method of NONE.
19539    END IF;
19540 
19541    --
19542    -- call analytical criteria
19543    --
19544    
19545    --
19546    -- call description
19547    --
19548    -- No description or it is inherited.
19549    --
19550    -- call ADRs
19551    -- Bug 4922099
19552    --
19553    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19554         (NVL(l_actual_upg_option, 'N') = 'O') OR
19555         (NVL(l_enc_upg_option, 'N') = 'O')
19556       )
19557    THEN
19558    NULL;
19559    --
19560    --
19561    
19562   l_ccid := AcctDerRule_4(
19563            p_application_id           => p_application_id
19564          , p_ae_header_id             => l_ae_header_id 
19565 , p_source_4 => p_source_4
19566          , x_transaction_coa_id       => l_adr_transaction_coa_id
19567          , x_accounting_coa_id        => l_adr_accounting_coa_id
19568          , x_value_type_code          => l_adr_value_type_code
19569          , p_side                     => 'NA'
19570    );
19571 
19572    xla_ae_lines_pkg.set_ccid(
19573     p_code_combination_id          => l_ccid
19574   , p_value_type_code              => l_adr_value_type_code
19575   , p_transaction_coa_id           => l_adr_transaction_coa_id
19576   , p_accounting_coa_id            => l_adr_accounting_coa_id
19577   , p_adr_code                     => 'CST_DEFAULT'
19578   , p_adr_type_code                => 'S'
19579   , p_component_type               => l_component_type
19580   , p_component_code               => l_component_code
19581   , p_component_type_code          => l_component_type_code
19582   , p_component_appl_id            => l_component_appl_id
19583   , p_amb_context_code             => l_amb_context_code
19584   , p_side                         => 'NA'
19585   );
19586 
19587 
19588    --
19589    --
19590    END IF;
19591    --
19592    -- Bug 4922099
19593    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
19594           (NVL(l_enc_upg_option, 'N') = 'O')
19595         ) AND
19596         (l_bflow_method_code = 'PRIOR_ENTRY')
19597       )
19598    THEN
19599       IF
19600       --
19601       1 = 2
19602       --
19603       THEN
19604       xla_accounting_err_pkg.build_message
19605                                     (p_appli_s_name            => 'XLA'
19606                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19607                                     ,p_token_1                 => 'LINE_NUMBER'
19608                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
19609                                     ,p_token_2                 => 'LINE_TYPE_NAME'
19610                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
19611                                                                              l_component_type
19612                                                                             ,l_component_code
19613                                                                             ,l_component_type_code
19614                                                                             ,l_component_appl_id
19615                                                                             ,l_amb_context_code
19616                                                                             ,l_entity_code
19617                                                                             ,l_event_class_code
19618                                                                            )
19619                                     ,p_token_3                 => 'OWNER'
19620                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
19621                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
19622                                                                           ,p_lookup_code    => l_component_type_code
19623                                                                          )
19624                                     ,p_token_4                 => 'PRODUCT_NAME'
19625                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
19626                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
19627                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
19628                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
19629                                     ,p_ae_header_id            =>  NULL
19630                                        );
19631 
19632         IF (C_LEVEL_ERROR>= g_log_level) THEN
19633                  trace
19634                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19635                       ,p_level    => C_LEVEL_ERROR
19636                       ,p_module   => l_log_module);
19637         END IF;
19638       END IF;
19639    END IF;
19640    --
19641    --
19642    ------------------------------------------------------------------------------------------------
19643    -- 4219869 Business Flow
19644    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
19645    -- Prior Entry.  Currently, the following code is always generated.
19646    ------------------------------------------------------------------------------------------------
19647    XLA_AE_LINES_PKG.ValidateCurrentLine;
19648 
19649    ------------------------------------------------------------------------------------
19650    -- 4219869 Business Flow
19651    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
19652    ------------------------------------------------------------------------------------
19653    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19654 
19655    ----------------------------------------------------------------------------------
19656    -- 4219869 Business Flow
19657    -- Update journal entry status -- Need to generate this within IF <condition>
19658    ----------------------------------------------------------------------------------
19659    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19660          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
19661          ,p_balance_type_code => l_balance_type_code
19662          );
19663 
19664    -------------------------------------------------------------------------------------------
19665    -- 4262811 - Generate the Accrual Reversal lines
19666    -------------------------------------------------------------------------------------------
19667    BEGIN
19668       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
19669                               (g_array_event(p_event_id).array_value_num('header_index'));
19670       IF l_acc_rev_flag IS NULL THEN
19671          l_acc_rev_flag := 'N';
19672       END IF;
19673    EXCEPTION
19674       WHEN OTHERS THEN
19675          l_acc_rev_flag := 'N';
19676    END;
19677    --
19678    IF (l_acc_rev_flag = 'Y') THEN
19679 
19680        -- 4645092  ------------------------------------------------------------------------------
19681        -- To allow MPA report to determine if it should generate report process
19682        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
19683        ------------------------------------------------------------------------------------------
19684 
19685        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
19686        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
19687    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
19688    -- call ADRs
19689    -- Bug 4922099
19690    --
19691    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19692         (NVL(l_actual_upg_option, 'N') = 'O') OR
19693         (NVL(l_enc_upg_option, 'N') = 'O')
19694       )
19695    THEN
19696    NULL;
19697    --
19698    --
19699    
19700   l_ccid := AcctDerRule_4(
19701            p_application_id           => p_application_id
19702          , p_ae_header_id             => l_ae_header_id 
19703 , p_source_4 => p_source_4
19704          , x_transaction_coa_id       => l_adr_transaction_coa_id
19705          , x_accounting_coa_id        => l_adr_accounting_coa_id
19706          , x_value_type_code          => l_adr_value_type_code
19707          , p_side                     => 'NA'
19708    );
19709 
19710    xla_ae_lines_pkg.set_ccid(
19711     p_code_combination_id          => l_ccid
19712   , p_value_type_code              => l_adr_value_type_code
19713   , p_transaction_coa_id           => l_adr_transaction_coa_id
19714   , p_accounting_coa_id            => l_adr_accounting_coa_id
19715   , p_adr_code                     => 'CST_DEFAULT'
19716   , p_adr_type_code                => 'S'
19717   , p_component_type               => l_component_type
19718   , p_component_code               => l_component_code
19719   , p_component_type_code          => l_component_type_code
19720   , p_component_appl_id            => l_component_appl_id
19721   , p_amb_context_code             => l_amb_context_code
19722   , p_side                         => 'NA'
19723   );
19724 
19725 
19726    --
19727    --
19728    END IF;
19729 
19730        --
19731        -- Update the line information that should be overwritten
19732        --
19733        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
19734                                          p_header_num   => 1);
19735        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
19736 
19737        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
19738 
19739        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
19740           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
19741        END IF;
19742 
19743       --
19744       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
19745       --
19746       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
19747           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
19748       ELSE
19749           ---------------------------------------------------------------------------------------------------
19750           -- 4262811a Switch Sign
19751           ---------------------------------------------------------------------------------------------------
19752           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
19753           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19754                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19755           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19756                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19757           -- 5132302
19758           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
19759                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19760 
19761       END IF;
19762 
19763       -- 4955764
19764       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19765       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
19766 
19767 
19768       XLA_AE_LINES_PKG.ValidateCurrentLine;
19769       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19770 
19771       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19772                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
19773                ,p_balance_type_code => l_balance_type_code);
19774 
19775    END IF;
19776 
19777    -----------------------------------------------------------------------------------------
19778    -- 4262811 Multiperiod Accounting
19779    -----------------------------------------------------------------------------------------
19780      -- No MPA option is assigned.
19781 
19782 
19783 END IF;
19784 END IF;
19785 --
19786 
19787 --
19788 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19789    trace
19790       (p_msg      => 'END of AcctLineType_38'
19791       ,p_level    => C_LEVEL_PROCEDURE
19792       ,p_module   => l_log_module);
19793 END IF;
19794 --
19795 EXCEPTION
19796   WHEN xla_exceptions_pkg.application_exception THEN
19797       RAISE;
19798   WHEN OTHERS THEN
19799        xla_exceptions_pkg.raise_message
19800            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_38');
19801 END AcctLineType_38;
19802 --
19803 
19804 ---------------------------------------
19805 --
19806 -- PRIVATE FUNCTION
19807 --         AcctLineType_39
19808 --
19809 ---------------------------------------
19810 PROCEDURE AcctLineType_39 (
19811   p_application_id        IN NUMBER
19812  ,p_event_id              IN NUMBER
19813  ,p_calculate_acctd_flag  IN VARCHAR2
19814  ,p_calculate_g_l_flag    IN VARCHAR2
19815  ,p_actual_flag           IN OUT VARCHAR2
19816  ,p_balance_type_code     OUT VARCHAR2
19817  ,p_gain_or_loss_ref      OUT VARCHAR2
19818  
19819 --Cost Management Default Account
19820  , p_source_4            IN NUMBER
19821 --DISTRIBUTION_IDENTIFIER
19822  , p_source_11            IN NUMBER
19823 --Distribution Type
19824  , p_source_12            IN VARCHAR2
19825  , p_source_12_meaning    IN VARCHAR2
19826 --Entered Currency Code
19827  , p_source_15            IN VARCHAR2
19828 --Entered Amount
19829  , p_source_18            IN NUMBER
19830 --Currency Conversion Date
19831  , p_source_19            IN DATE
19832 --Currency Conversion Rate
19833  , p_source_20            IN NUMBER
19834 --Currency Conversion Type
19835  , p_source_21            IN VARCHAR2
19836 --Accounted Amount
19837  , p_source_22            IN NUMBER
19838 --Accounting Line Type
19839  , p_source_24            IN NUMBER
19840 )
19841 IS
19842 
19843 l_component_type              VARCHAR2(80);
19844 l_component_code              VARCHAR2(30);
19845 l_component_type_code         VARCHAR2(1);
19846 l_component_appl_id           INTEGER;
19847 l_amb_context_code            VARCHAR2(30);
19848 l_entity_code                 VARCHAR2(30);
19849 l_event_class_code            VARCHAR2(30);
19850 l_ae_header_id                NUMBER;
19851 l_event_type_code             VARCHAR2(30);
19852 l_line_definition_code        VARCHAR2(30);
19853 l_line_definition_owner_code  VARCHAR2(1);
19854 --
19855 -- adr variables
19856 l_segment                     VARCHAR2(30);
19857 l_ccid                        NUMBER;
19858 l_adr_transaction_coa_id      NUMBER;
19859 l_adr_accounting_coa_id       NUMBER;
19860 l_adr_flexfield_segment_code  VARCHAR2(30);
19861 l_adr_flex_value_set_id       NUMBER;
19862 l_adr_value_type_code         VARCHAR2(30);
19863 l_adr_value_combination_id    NUMBER;
19864 l_adr_value_segment_code      VARCHAR2(30);
19865 
19866 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
19867 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
19868 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
19869 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
19870 
19871 -- 4262811 Variables ------------------------------------------------------------------------------------------
19872 l_entered_amt_idx             NUMBER;
19873 l_accted_amt_idx              NUMBER;
19874 l_acc_rev_flag                VARCHAR2(1);
19875 l_accrual_line_num            NUMBER;
19876 l_tmp_amt                     NUMBER;
19877 l_acc_rev_natural_side_code   VARCHAR2(1);
19878 
19879 l_num_entries                 NUMBER;
19880 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
19881 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
19882 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
19883 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
19884 l_recog_line_1                NUMBER;
19885 l_recog_line_2                NUMBER;
19886 
19887 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
19888 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
19889 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
19890 
19891 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
19892 
19893 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
19894 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
19895 
19896 ---------------------------------------------------------------------------------------------------------------
19897 
19898 
19899 --
19900 -- bulk performance
19901 --
19902 l_balance_type_code           VARCHAR2(1);
19903 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
19904 l_log_module                  VARCHAR2(240);
19905 
19906 --
19907 -- Upgrade strategy
19908 --
19909 l_actual_upg_option           VARCHAR2(1);
19910 l_enc_upg_option           VARCHAR2(1);
19911 
19912 --
19913 BEGIN
19914 --
19915 IF g_log_enabled THEN
19916       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_39';
19917 END IF;
19918 --
19919 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19920 
19921       trace
19922          (p_msg      => 'BEGIN of AcctLineType_39'
19923          ,p_level    => C_LEVEL_PROCEDURE
19924          ,p_module   => l_log_module);
19925 
19926 END IF;
19927 --
19928 l_component_type             := 'AMB_JLT';
19929 l_component_code             := 'COST_VARIANCE';
19930 l_component_type_code        := 'S';
19931 l_component_appl_id          :=  707;
19932 l_amb_context_code           := 'DEFAULT';
19933 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
19934 l_event_class_code           := 'USER_DEFINE';
19935 l_event_type_code            := 'UDIR_INTERORG_RCPT';
19936 l_line_definition_owner_code := 'S';
19937 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT';
19938 --
19939 l_balance_type_code          := 'A';
19940 l_segment                     := NULL;
19941 l_ccid                        := NULL;
19942 l_adr_transaction_coa_id      := NULL;
19943 l_adr_accounting_coa_id       := NULL;
19944 l_adr_flexfield_segment_code  := NULL;
19945 l_adr_flex_value_set_id       := NULL;
19946 l_adr_value_type_code         := NULL;
19947 l_adr_value_combination_id    := NULL;
19948 l_adr_value_segment_code      := NULL;
19949 
19950 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
19951 l_bflow_class_code           := '';    -- 4219869 Business Flow
19952 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
19953 l_budgetary_control_flag     := 'N';
19954 
19955 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
19956 l_bflow_applied_to_amt       := NULL; -- 5132302
19957 l_entered_amt_idx            := NULL;          -- 4262811
19958 l_accted_amt_idx             := NULL;          -- 4262811
19959 l_acc_rev_flag               := NULL;          -- 4262811
19960 l_accrual_line_num           := NULL;          -- 4262811
19961 l_tmp_amt                    := NULL;          -- 4262811
19962 --
19963  
19964 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
19965     l_balance_type_code <> 'B' THEN
19966 IF NVL(p_source_24,9E125) =  13
19967  THEN 
19968 
19969    --
19970    XLA_AE_LINES_PKG.SetNewLine;
19971 
19972    p_balance_type_code          := l_balance_type_code;
19973    -- set the flag so later we will know whether the gain loss line needs to be created
19974    
19975    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
19976      p_actual_flag :='A';
19977    END IF;
19978 
19979    --
19980    -- bulk performance
19981    --
19982    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
19983                                       p_header_num   => 0); -- 4262811
19984    --
19985    -- set accounting line options
19986    --
19987    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
19988            p_natural_side_code          => 'D'
19989          , p_gain_or_loss_flag          => 'N'
19990          , p_gl_transfer_mode_code      => 'S'
19991          , p_acct_entry_type_code       => 'A'
19992          , p_switch_side_flag           => 'Y'
19993          , p_merge_duplicate_code       => 'N'
19994          );
19995    --
19996    l_acc_rev_natural_side_code := 'C';  -- 4262811
19997    -- 
19998    --
19999    -- set accounting line type info
20000    --
20001    xla_ae_lines_pkg.SetAcctLineType
20002       (p_component_type             => l_component_type
20003       ,p_event_type_code            => l_event_type_code
20004       ,p_line_definition_owner_code => l_line_definition_owner_code
20005       ,p_line_definition_code       => l_line_definition_code
20006       ,p_accounting_line_code       => l_component_code
20007       ,p_accounting_line_type_code  => l_component_type_code
20008       ,p_accounting_line_appl_id    => l_component_appl_id
20009       ,p_amb_context_code           => l_amb_context_code
20010       ,p_entity_code                => l_entity_code
20011       ,p_event_class_code           => l_event_class_code);
20012    --
20013    -- set accounting class
20014    --
20015    xla_ae_lines_pkg.SetAcctClass(
20016            p_accounting_class_code  => 'COST_VARIANCE'
20017          , p_ae_header_id           => l_ae_header_id
20018          );
20019 
20020    --
20021    -- set rounding class
20022    --
20023    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
20024                       'COST_VARIANCE';
20025 
20026    --
20027    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
20028    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
20029    --
20030    -- bulk performance
20031    --
20032    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
20033 
20034    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
20035       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
20036 
20037    -- 4955764
20038    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20039       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
20040 
20041    -- 4458381 Public Sector Enh
20042    
20043    --
20044    -- set accounting attributes for the line type
20045    --
20046    l_entered_amt_idx := 3;
20047    l_accted_amt_idx  := 8;
20048    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
20049    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
20050    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
20051    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
20052    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
20053    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
20054    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
20055    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
20056    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
20057    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
20058    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
20059    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
20060    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
20061    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
20062    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
20063    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
20064    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
20065 
20066    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
20067    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
20068 
20069    ---------------------------------------------------------------------------------------------------------------
20070    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
20071    ---------------------------------------------------------------------------------------------------------------
20072    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
20073 
20074    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20075    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20076 
20077    IF xla_accounting_cache_pkg.GetValueChar
20078          (p_source_code         => 'LEDGER_CATEGORY_CODE'
20079          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
20080    AND l_bflow_method_code = 'PRIOR_ENTRY'
20081 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
20082    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
20083          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
20084        )
20085    THEN
20086          xla_ae_lines_pkg.BflowUpgEntry
20087            (p_business_method_code    => l_bflow_method_code
20088            ,p_business_class_code     => l_bflow_class_code
20089            ,p_balance_type            => l_balance_type_code);
20090    ELSE
20091       NULL;
20092 -- No business flow processing for business flow method of NONE.
20093    END IF;
20094 
20095    --
20096    -- call analytical criteria
20097    --
20098    
20099    --
20100    -- call description
20101    --
20102    -- No description or it is inherited.
20103    --
20104    -- call ADRs
20105    -- Bug 4922099
20106    --
20107    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20108         (NVL(l_actual_upg_option, 'N') = 'O') OR
20109         (NVL(l_enc_upg_option, 'N') = 'O')
20110       )
20111    THEN
20112    NULL;
20113    --
20114    --
20115    
20116   l_ccid := AcctDerRule_4(
20117            p_application_id           => p_application_id
20118          , p_ae_header_id             => l_ae_header_id 
20119 , p_source_4 => p_source_4
20120          , x_transaction_coa_id       => l_adr_transaction_coa_id
20121          , x_accounting_coa_id        => l_adr_accounting_coa_id
20122          , x_value_type_code          => l_adr_value_type_code
20123          , p_side                     => 'NA'
20124    );
20125 
20126    xla_ae_lines_pkg.set_ccid(
20127     p_code_combination_id          => l_ccid
20128   , p_value_type_code              => l_adr_value_type_code
20129   , p_transaction_coa_id           => l_adr_transaction_coa_id
20130   , p_accounting_coa_id            => l_adr_accounting_coa_id
20131   , p_adr_code                     => 'CST_DEFAULT'
20132   , p_adr_type_code                => 'S'
20133   , p_component_type               => l_component_type
20134   , p_component_code               => l_component_code
20135   , p_component_type_code          => l_component_type_code
20136   , p_component_appl_id            => l_component_appl_id
20137   , p_amb_context_code             => l_amb_context_code
20138   , p_side                         => 'NA'
20139   );
20140 
20141 
20142    --
20143    --
20144    END IF;
20145    --
20146    -- Bug 4922099
20147    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
20148           (NVL(l_enc_upg_option, 'N') = 'O')
20149         ) AND
20150         (l_bflow_method_code = 'PRIOR_ENTRY')
20151       )
20152    THEN
20153       IF
20154       --
20155       1 = 2
20156       --
20157       THEN
20158       xla_accounting_err_pkg.build_message
20159                                     (p_appli_s_name            => 'XLA'
20160                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20161                                     ,p_token_1                 => 'LINE_NUMBER'
20162                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
20163                                     ,p_token_2                 => 'LINE_TYPE_NAME'
20164                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
20165                                                                              l_component_type
20166                                                                             ,l_component_code
20167                                                                             ,l_component_type_code
20168                                                                             ,l_component_appl_id
20169                                                                             ,l_amb_context_code
20170                                                                             ,l_entity_code
20171                                                                             ,l_event_class_code
20172                                                                            )
20173                                     ,p_token_3                 => 'OWNER'
20174                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
20175                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
20176                                                                           ,p_lookup_code    => l_component_type_code
20177                                                                          )
20178                                     ,p_token_4                 => 'PRODUCT_NAME'
20179                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
20180                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
20181                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
20182                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
20183                                     ,p_ae_header_id            =>  NULL
20184                                        );
20185 
20186         IF (C_LEVEL_ERROR>= g_log_level) THEN
20187                  trace
20188                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20189                       ,p_level    => C_LEVEL_ERROR
20190                       ,p_module   => l_log_module);
20191         END IF;
20192       END IF;
20193    END IF;
20194    --
20195    --
20196    ------------------------------------------------------------------------------------------------
20197    -- 4219869 Business Flow
20198    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
20199    -- Prior Entry.  Currently, the following code is always generated.
20200    ------------------------------------------------------------------------------------------------
20201    XLA_AE_LINES_PKG.ValidateCurrentLine;
20202 
20203    ------------------------------------------------------------------------------------
20204    -- 4219869 Business Flow
20205    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
20206    ------------------------------------------------------------------------------------
20207    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20208 
20209    ----------------------------------------------------------------------------------
20210    -- 4219869 Business Flow
20211    -- Update journal entry status -- Need to generate this within IF <condition>
20212    ----------------------------------------------------------------------------------
20213    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20214          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
20215          ,p_balance_type_code => l_balance_type_code
20216          );
20217 
20218    -------------------------------------------------------------------------------------------
20219    -- 4262811 - Generate the Accrual Reversal lines
20220    -------------------------------------------------------------------------------------------
20221    BEGIN
20222       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
20223                               (g_array_event(p_event_id).array_value_num('header_index'));
20224       IF l_acc_rev_flag IS NULL THEN
20225          l_acc_rev_flag := 'N';
20226       END IF;
20227    EXCEPTION
20228       WHEN OTHERS THEN
20229          l_acc_rev_flag := 'N';
20230    END;
20231    --
20232    IF (l_acc_rev_flag = 'Y') THEN
20233 
20234        -- 4645092  ------------------------------------------------------------------------------
20235        -- To allow MPA report to determine if it should generate report process
20236        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
20237        ------------------------------------------------------------------------------------------
20238 
20239        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
20240        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
20241    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
20242    -- call ADRs
20243    -- Bug 4922099
20244    --
20245    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20246         (NVL(l_actual_upg_option, 'N') = 'O') OR
20247         (NVL(l_enc_upg_option, 'N') = 'O')
20248       )
20249    THEN
20250    NULL;
20251    --
20252    --
20253    
20254   l_ccid := AcctDerRule_4(
20255            p_application_id           => p_application_id
20256          , p_ae_header_id             => l_ae_header_id 
20257 , p_source_4 => p_source_4
20258          , x_transaction_coa_id       => l_adr_transaction_coa_id
20259          , x_accounting_coa_id        => l_adr_accounting_coa_id
20260          , x_value_type_code          => l_adr_value_type_code
20261          , p_side                     => 'NA'
20262    );
20263 
20264    xla_ae_lines_pkg.set_ccid(
20265     p_code_combination_id          => l_ccid
20266   , p_value_type_code              => l_adr_value_type_code
20267   , p_transaction_coa_id           => l_adr_transaction_coa_id
20268   , p_accounting_coa_id            => l_adr_accounting_coa_id
20269   , p_adr_code                     => 'CST_DEFAULT'
20270   , p_adr_type_code                => 'S'
20271   , p_component_type               => l_component_type
20272   , p_component_code               => l_component_code
20273   , p_component_type_code          => l_component_type_code
20274   , p_component_appl_id            => l_component_appl_id
20275   , p_amb_context_code             => l_amb_context_code
20276   , p_side                         => 'NA'
20277   );
20278 
20279 
20280    --
20281    --
20282    END IF;
20283 
20284        --
20285        -- Update the line information that should be overwritten
20286        --
20287        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
20288                                          p_header_num   => 1);
20289        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
20290 
20291        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
20292 
20293        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
20294           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
20295        END IF;
20296 
20297       --
20298       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
20299       --
20300       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
20301           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
20302       ELSE
20303           ---------------------------------------------------------------------------------------------------
20304           -- 4262811a Switch Sign
20305           ---------------------------------------------------------------------------------------------------
20306           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
20307           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20308                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20309           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20310                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20311           -- 5132302
20312           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
20313                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20314 
20315       END IF;
20316 
20317       -- 4955764
20318       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20319       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
20320 
20321 
20322       XLA_AE_LINES_PKG.ValidateCurrentLine;
20323       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20324 
20325       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20326                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
20327                ,p_balance_type_code => l_balance_type_code);
20328 
20329    END IF;
20330 
20331    -----------------------------------------------------------------------------------------
20332    -- 4262811 Multiperiod Accounting
20333    -----------------------------------------------------------------------------------------
20334      -- No MPA option is assigned.
20335 
20336 
20337 END IF;
20338 END IF;
20339 --
20340 
20341 --
20342 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20343    trace
20344       (p_msg      => 'END of AcctLineType_39'
20345       ,p_level    => C_LEVEL_PROCEDURE
20346       ,p_module   => l_log_module);
20347 END IF;
20348 --
20349 EXCEPTION
20350   WHEN xla_exceptions_pkg.application_exception THEN
20351       RAISE;
20352   WHEN OTHERS THEN
20353        xla_exceptions_pkg.raise_message
20354            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_39');
20355 END AcctLineType_39;
20356 --
20357 
20358 ---------------------------------------
20359 --
20360 -- PRIVATE FUNCTION
20361 --         AcctLineType_40
20362 --
20363 ---------------------------------------
20364 PROCEDURE AcctLineType_40 (
20365   p_application_id        IN NUMBER
20366  ,p_event_id              IN NUMBER
20367  ,p_calculate_acctd_flag  IN VARCHAR2
20368  ,p_calculate_g_l_flag    IN VARCHAR2
20369  ,p_actual_flag           IN OUT VARCHAR2
20370  ,p_balance_type_code     OUT VARCHAR2
20371  ,p_gain_or_loss_ref      OUT VARCHAR2
20372  
20373 --Cost Management Default Account
20374  , p_source_4            IN NUMBER
20375 --Applied to Application ID
20376  , p_source_6            IN NUMBER
20377 --Applied to Distribution Link Type
20378  , p_source_7            IN VARCHAR2
20379 --Applied to Entity Code
20380  , p_source_8            IN VARCHAR2
20381 --Applied To Purchase Document Identifier
20382  , p_source_10            IN NUMBER
20383 --DISTRIBUTION_IDENTIFIER
20384  , p_source_11            IN NUMBER
20385 --Distribution Type
20386  , p_source_12            IN VARCHAR2
20387  , p_source_12_meaning    IN VARCHAR2
20388 --PO Budget Account
20389  , p_source_13            IN NUMBER
20390 --Encumbrance Reversal Amount Entered
20391  , p_source_14            IN NUMBER
20392 --Entered Currency Code
20393  , p_source_15            IN VARCHAR2
20394 --Transaction Encumbrance Reversal Amount
20395  , p_source_16            IN NUMBER
20396 --Entered Amount
20397  , p_source_18            IN NUMBER
20398 --Currency Conversion Date
20399  , p_source_19            IN DATE
20400 --Currency Conversion Rate
20401  , p_source_20            IN NUMBER
20402 --Currency Conversion Type
20403  , p_source_21            IN VARCHAR2
20404 --Accounted Amount
20405  , p_source_22            IN NUMBER
20406 --Purchasing Encumbrance Type Identifier
20407  , p_source_23            IN NUMBER
20408 --Accounting Line Type
20409  , p_source_24            IN NUMBER
20410 --Costing Encumbrance Upgrade Option
20411  , p_source_27            IN VARCHAR2
20412 --TXN_PO_DISTRIBUTION_ID
20413  , p_source_28            IN NUMBER
20414 )
20415 IS
20416 
20417 l_component_type              VARCHAR2(80);
20418 l_component_code              VARCHAR2(30);
20419 l_component_type_code         VARCHAR2(1);
20420 l_component_appl_id           INTEGER;
20421 l_amb_context_code            VARCHAR2(30);
20422 l_entity_code                 VARCHAR2(30);
20423 l_event_class_code            VARCHAR2(30);
20424 l_ae_header_id                NUMBER;
20425 l_event_type_code             VARCHAR2(30);
20426 l_line_definition_code        VARCHAR2(30);
20427 l_line_definition_owner_code  VARCHAR2(1);
20428 --
20429 -- adr variables
20430 l_segment                     VARCHAR2(30);
20431 l_ccid                        NUMBER;
20432 l_adr_transaction_coa_id      NUMBER;
20433 l_adr_accounting_coa_id       NUMBER;
20434 l_adr_flexfield_segment_code  VARCHAR2(30);
20435 l_adr_flex_value_set_id       NUMBER;
20436 l_adr_value_type_code         VARCHAR2(30);
20437 l_adr_value_combination_id    NUMBER;
20438 l_adr_value_segment_code      VARCHAR2(30);
20439 
20440 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
20441 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
20442 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
20443 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
20444 
20445 -- 4262811 Variables ------------------------------------------------------------------------------------------
20446 l_entered_amt_idx             NUMBER;
20447 l_accted_amt_idx              NUMBER;
20448 l_acc_rev_flag                VARCHAR2(1);
20449 l_accrual_line_num            NUMBER;
20450 l_tmp_amt                     NUMBER;
20451 l_acc_rev_natural_side_code   VARCHAR2(1);
20452 
20453 l_num_entries                 NUMBER;
20454 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
20455 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
20456 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
20457 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
20458 l_recog_line_1                NUMBER;
20459 l_recog_line_2                NUMBER;
20460 
20461 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
20462 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
20463 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
20464 
20465 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
20466 
20467 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
20468 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
20469 
20470 ---------------------------------------------------------------------------------------------------------------
20471 
20472 
20473 --
20474 -- bulk performance
20475 --
20476 l_balance_type_code           VARCHAR2(1);
20477 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
20478 l_log_module                  VARCHAR2(240);
20479 
20480 --
20481 -- Upgrade strategy
20482 --
20483 l_actual_upg_option           VARCHAR2(1);
20484 l_enc_upg_option           VARCHAR2(1);
20485 
20486 --
20487 BEGIN
20488 --
20489 IF g_log_enabled THEN
20490       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_40';
20491 END IF;
20492 --
20493 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20494 
20495       trace
20496          (p_msg      => 'BEGIN of AcctLineType_40'
20497          ,p_level    => C_LEVEL_PROCEDURE
20498          ,p_module   => l_log_module);
20499 
20500 END IF;
20501 --
20502 l_component_type             := 'AMB_JLT';
20503 l_component_code             := 'COST_VARIANCE';
20504 l_component_type_code        := 'S';
20505 l_component_appl_id          :=  707;
20506 l_amb_context_code           := 'DEFAULT';
20507 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
20508 l_event_class_code           := 'PURCHASE_ORDER';
20509 l_event_type_code            := 'PURCHASE_ORDER_ALL';
20510 l_line_definition_owner_code := 'S';
20511 l_line_definition_code       := 'PURCHASE_ORDER';
20512 --
20513 l_balance_type_code          := 'A';
20514 l_segment                     := NULL;
20515 l_ccid                        := NULL;
20516 l_adr_transaction_coa_id      := NULL;
20517 l_adr_accounting_coa_id       := NULL;
20518 l_adr_flexfield_segment_code  := NULL;
20519 l_adr_flex_value_set_id       := NULL;
20520 l_adr_value_type_code         := NULL;
20521 l_adr_value_combination_id    := NULL;
20522 l_adr_value_segment_code      := NULL;
20523 
20524 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
20525 l_bflow_class_code           := '';    -- 4219869 Business Flow
20526 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
20527 l_budgetary_control_flag     := 'N';
20528 
20529 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
20530 l_bflow_applied_to_amt       := NULL; -- 5132302
20531 l_entered_amt_idx            := NULL;          -- 4262811
20532 l_accted_amt_idx             := NULL;          -- 4262811
20533 l_acc_rev_flag               := NULL;          -- 4262811
20534 l_accrual_line_num           := NULL;          -- 4262811
20535 l_tmp_amt                    := NULL;          -- 4262811
20536 --
20537  
20538 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
20539     l_balance_type_code <> 'B' THEN
20540 IF NVL(p_source_24,9E125) =  13
20541  THEN 
20542 
20543    --
20544    XLA_AE_LINES_PKG.SetNewLine;
20545 
20546    p_balance_type_code          := l_balance_type_code;
20547    -- set the flag so later we will know whether the gain loss line needs to be created
20548    
20549    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
20550      p_actual_flag :='A';
20551    END IF;
20552 
20553    --
20554    -- bulk performance
20555    --
20556    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
20557                                       p_header_num   => 0); -- 4262811
20558    --
20559    -- set accounting line options
20560    --
20561    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
20562            p_natural_side_code          => 'D'
20563          , p_gain_or_loss_flag          => 'N'
20564          , p_gl_transfer_mode_code      => 'S'
20565          , p_acct_entry_type_code       => 'A'
20566          , p_switch_side_flag           => 'Y'
20567          , p_merge_duplicate_code       => 'N'
20568          );
20569    --
20570    l_acc_rev_natural_side_code := 'C';  -- 4262811
20571    -- 
20572    --
20573    -- set accounting line type info
20574    --
20575    xla_ae_lines_pkg.SetAcctLineType
20576       (p_component_type             => l_component_type
20577       ,p_event_type_code            => l_event_type_code
20578       ,p_line_definition_owner_code => l_line_definition_owner_code
20579       ,p_line_definition_code       => l_line_definition_code
20580       ,p_accounting_line_code       => l_component_code
20581       ,p_accounting_line_type_code  => l_component_type_code
20582       ,p_accounting_line_appl_id    => l_component_appl_id
20583       ,p_amb_context_code           => l_amb_context_code
20584       ,p_entity_code                => l_entity_code
20585       ,p_event_class_code           => l_event_class_code);
20586    --
20587    -- set accounting class
20588    --
20589    xla_ae_lines_pkg.SetAcctClass(
20590            p_accounting_class_code  => 'COST_VARIANCE'
20591          , p_ae_header_id           => l_ae_header_id
20592          );
20593 
20594    --
20595    -- set rounding class
20596    --
20597    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
20598                       'COST_VARIANCE';
20599 
20600    --
20601    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
20602    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
20603    --
20604    -- bulk performance
20605    --
20606    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
20607 
20608    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
20609       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
20610 
20611    -- 4955764
20612    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20613       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
20614 
20615    -- 4458381 Public Sector Enh
20616    
20617    --
20618    -- set accounting attributes for the line type
20619    --
20620    l_entered_amt_idx := 17;
20621    l_accted_amt_idx  := 22;
20622    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
20623    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
20624    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
20625    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
20626    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
20627    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
20628    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
20629    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
20630    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
20631    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
20632    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_10);
20633    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
20634    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
20635    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
20636    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
20637    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
20638    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_13);
20639    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
20640    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
20641    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
20642    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
20643    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
20644    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
20645    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
20646    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_13);
20647    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
20648    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
20649    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
20650    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
20651    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
20652    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
20653    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
20654    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
20655    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
20656    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
20657    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
20658    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
20659    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
20660    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
20661    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
20662    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
20663    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
20664    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
20665    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
20666    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
20667    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
20668    l_rec_acct_attrs.array_num_value(23)  := p_source_23;
20669    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
20670    l_rec_acct_attrs.array_num_value(24)  := p_source_23;
20671 
20672    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
20673    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
20674 
20675    ---------------------------------------------------------------------------------------------------------------
20676    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
20677    ---------------------------------------------------------------------------------------------------------------
20678    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
20679 
20680    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20681    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20682 
20683    IF xla_accounting_cache_pkg.GetValueChar
20684          (p_source_code         => 'LEDGER_CATEGORY_CODE'
20685          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
20686    AND l_bflow_method_code = 'PRIOR_ENTRY'
20687 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
20688    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
20689          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
20690        )
20691    THEN
20692          xla_ae_lines_pkg.BflowUpgEntry
20693            (p_business_method_code    => l_bflow_method_code
20694            ,p_business_class_code     => l_bflow_class_code
20695            ,p_balance_type            => l_balance_type_code);
20696    ELSE
20697       NULL;
20698 -- No business flow processing for business flow method of NONE.
20699    END IF;
20700 
20701    --
20702    -- call analytical criteria
20703    --
20704    
20705    --
20706    -- call description
20707    --
20708    -- No description or it is inherited.
20709    --
20710    -- call ADRs
20711    -- Bug 4922099
20712    --
20713    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20714         (NVL(l_actual_upg_option, 'N') = 'O') OR
20715         (NVL(l_enc_upg_option, 'N') = 'O')
20716       )
20717    THEN
20718    NULL;
20719    --
20720    --
20721    
20722   l_ccid := AcctDerRule_4(
20723            p_application_id           => p_application_id
20724          , p_ae_header_id             => l_ae_header_id 
20725 , p_source_4 => p_source_4
20726          , x_transaction_coa_id       => l_adr_transaction_coa_id
20727          , x_accounting_coa_id        => l_adr_accounting_coa_id
20728          , x_value_type_code          => l_adr_value_type_code
20729          , p_side                     => 'NA'
20730    );
20731 
20732    xla_ae_lines_pkg.set_ccid(
20733     p_code_combination_id          => l_ccid
20734   , p_value_type_code              => l_adr_value_type_code
20735   , p_transaction_coa_id           => l_adr_transaction_coa_id
20736   , p_accounting_coa_id            => l_adr_accounting_coa_id
20737   , p_adr_code                     => 'CST_DEFAULT'
20738   , p_adr_type_code                => 'S'
20739   , p_component_type               => l_component_type
20740   , p_component_code               => l_component_code
20741   , p_component_type_code          => l_component_type_code
20742   , p_component_appl_id            => l_component_appl_id
20743   , p_amb_context_code             => l_amb_context_code
20744   , p_side                         => 'NA'
20745   );
20746 
20747 
20748    --
20749    --
20750    END IF;
20751    --
20752    -- Bug 4922099
20753    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
20754           (NVL(l_enc_upg_option, 'N') = 'O')
20755         ) AND
20756         (l_bflow_method_code = 'PRIOR_ENTRY')
20757       )
20758    THEN
20759       IF
20760       --
20761       1 = 2
20762       --
20763       THEN
20764       xla_accounting_err_pkg.build_message
20765                                     (p_appli_s_name            => 'XLA'
20766                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20767                                     ,p_token_1                 => 'LINE_NUMBER'
20768                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
20769                                     ,p_token_2                 => 'LINE_TYPE_NAME'
20770                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
20771                                                                              l_component_type
20772                                                                             ,l_component_code
20773                                                                             ,l_component_type_code
20774                                                                             ,l_component_appl_id
20775                                                                             ,l_amb_context_code
20776                                                                             ,l_entity_code
20777                                                                             ,l_event_class_code
20778                                                                            )
20779                                     ,p_token_3                 => 'OWNER'
20780                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
20781                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
20782                                                                           ,p_lookup_code    => l_component_type_code
20783                                                                          )
20784                                     ,p_token_4                 => 'PRODUCT_NAME'
20785                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
20786                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
20787                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
20788                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
20789                                     ,p_ae_header_id            =>  NULL
20790                                        );
20791 
20792         IF (C_LEVEL_ERROR>= g_log_level) THEN
20793                  trace
20794                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20795                       ,p_level    => C_LEVEL_ERROR
20796                       ,p_module   => l_log_module);
20797         END IF;
20798       END IF;
20799    END IF;
20800    --
20801    --
20802    ------------------------------------------------------------------------------------------------
20803    -- 4219869 Business Flow
20804    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
20805    -- Prior Entry.  Currently, the following code is always generated.
20806    ------------------------------------------------------------------------------------------------
20807    XLA_AE_LINES_PKG.ValidateCurrentLine;
20808 
20809    ------------------------------------------------------------------------------------
20810    -- 4219869 Business Flow
20811    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
20812    ------------------------------------------------------------------------------------
20813    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20814 
20815    ----------------------------------------------------------------------------------
20816    -- 4219869 Business Flow
20817    -- Update journal entry status -- Need to generate this within IF <condition>
20818    ----------------------------------------------------------------------------------
20819    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20820          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
20821          ,p_balance_type_code => l_balance_type_code
20822          );
20823 
20824    -------------------------------------------------------------------------------------------
20825    -- 4262811 - Generate the Accrual Reversal lines
20826    -------------------------------------------------------------------------------------------
20827    BEGIN
20828       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
20829                               (g_array_event(p_event_id).array_value_num('header_index'));
20830       IF l_acc_rev_flag IS NULL THEN
20831          l_acc_rev_flag := 'N';
20832       END IF;
20833    EXCEPTION
20834       WHEN OTHERS THEN
20835          l_acc_rev_flag := 'N';
20836    END;
20837    --
20838    IF (l_acc_rev_flag = 'Y') THEN
20839 
20840        -- 4645092  ------------------------------------------------------------------------------
20841        -- To allow MPA report to determine if it should generate report process
20842        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
20843        ------------------------------------------------------------------------------------------
20844 
20845        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
20846        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
20847    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
20848    -- call ADRs
20849    -- Bug 4922099
20850    --
20851    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20852         (NVL(l_actual_upg_option, 'N') = 'O') OR
20853         (NVL(l_enc_upg_option, 'N') = 'O')
20854       )
20855    THEN
20856    NULL;
20857    --
20858    --
20859    
20860   l_ccid := AcctDerRule_4(
20861            p_application_id           => p_application_id
20862          , p_ae_header_id             => l_ae_header_id 
20863 , p_source_4 => p_source_4
20864          , x_transaction_coa_id       => l_adr_transaction_coa_id
20865          , x_accounting_coa_id        => l_adr_accounting_coa_id
20866          , x_value_type_code          => l_adr_value_type_code
20867          , p_side                     => 'NA'
20868    );
20869 
20870    xla_ae_lines_pkg.set_ccid(
20871     p_code_combination_id          => l_ccid
20872   , p_value_type_code              => l_adr_value_type_code
20873   , p_transaction_coa_id           => l_adr_transaction_coa_id
20874   , p_accounting_coa_id            => l_adr_accounting_coa_id
20875   , p_adr_code                     => 'CST_DEFAULT'
20876   , p_adr_type_code                => 'S'
20877   , p_component_type               => l_component_type
20878   , p_component_code               => l_component_code
20879   , p_component_type_code          => l_component_type_code
20880   , p_component_appl_id            => l_component_appl_id
20881   , p_amb_context_code             => l_amb_context_code
20882   , p_side                         => 'NA'
20883   );
20884 
20885 
20886    --
20887    --
20888    END IF;
20889 
20890        --
20891        -- Update the line information that should be overwritten
20892        --
20893        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
20894                                          p_header_num   => 1);
20895        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
20896 
20897        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
20898 
20899        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
20900           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
20901        END IF;
20902 
20903       --
20904       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
20905       --
20906       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
20907           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
20908       ELSE
20909           ---------------------------------------------------------------------------------------------------
20910           -- 4262811a Switch Sign
20911           ---------------------------------------------------------------------------------------------------
20912           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
20913           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20914                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20915           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20916                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20917           -- 5132302
20918           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
20919                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20920 
20921       END IF;
20922 
20923       -- 4955764
20924       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20925       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
20926 
20927 
20928       XLA_AE_LINES_PKG.ValidateCurrentLine;
20929       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20930 
20931       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20932                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
20933                ,p_balance_type_code => l_balance_type_code);
20934 
20935    END IF;
20936 
20937    -----------------------------------------------------------------------------------------
20938    -- 4262811 Multiperiod Accounting
20939    -----------------------------------------------------------------------------------------
20940      -- No MPA option is assigned.
20941 
20942 
20943 END IF;
20944 END IF;
20945 --
20946 
20947 --
20948 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20949    trace
20950       (p_msg      => 'END of AcctLineType_40'
20951       ,p_level    => C_LEVEL_PROCEDURE
20952       ,p_module   => l_log_module);
20953 END IF;
20954 --
20955 EXCEPTION
20956   WHEN xla_exceptions_pkg.application_exception THEN
20957       RAISE;
20958   WHEN OTHERS THEN
20959        xla_exceptions_pkg.raise_message
20960            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_40');
20961 END AcctLineType_40;
20962 --
20963 
20964 ---------------------------------------
20965 --
20966 -- PRIVATE FUNCTION
20967 --         AcctLineType_41
20968 --
20969 ---------------------------------------
20970 PROCEDURE AcctLineType_41 (
20971   p_application_id        IN NUMBER
20972  ,p_event_id              IN NUMBER
20973  ,p_calculate_acctd_flag  IN VARCHAR2
20974  ,p_calculate_g_l_flag    IN VARCHAR2
20975  ,p_actual_flag           IN OUT VARCHAR2
20976  ,p_balance_type_code     OUT VARCHAR2
20977  ,p_gain_or_loss_ref      OUT VARCHAR2
20978  
20979 --Cost Management Default Account
20980  , p_source_4            IN NUMBER
20981 --DISTRIBUTION_IDENTIFIER
20982  , p_source_11            IN NUMBER
20983 --Distribution Type
20984  , p_source_12            IN VARCHAR2
20985  , p_source_12_meaning    IN VARCHAR2
20986 --Entered Currency Code
20987  , p_source_15            IN VARCHAR2
20988 --Entered Amount
20989  , p_source_18            IN NUMBER
20990 --Currency Conversion Date
20991  , p_source_19            IN DATE
20992 --Currency Conversion Rate
20993  , p_source_20            IN NUMBER
20994 --Currency Conversion Type
20995  , p_source_21            IN VARCHAR2
20996 --Accounted Amount
20997  , p_source_22            IN NUMBER
20998 --Accounting Line Type
20999  , p_source_24            IN NUMBER
21000 )
21001 IS
21002 
21003 l_component_type              VARCHAR2(80);
21004 l_component_code              VARCHAR2(30);
21005 l_component_type_code         VARCHAR2(1);
21006 l_component_appl_id           INTEGER;
21007 l_amb_context_code            VARCHAR2(30);
21008 l_entity_code                 VARCHAR2(30);
21009 l_event_class_code            VARCHAR2(30);
21010 l_ae_header_id                NUMBER;
21011 l_event_type_code             VARCHAR2(30);
21012 l_line_definition_code        VARCHAR2(30);
21013 l_line_definition_owner_code  VARCHAR2(1);
21014 --
21015 -- adr variables
21016 l_segment                     VARCHAR2(30);
21017 l_ccid                        NUMBER;
21018 l_adr_transaction_coa_id      NUMBER;
21019 l_adr_accounting_coa_id       NUMBER;
21020 l_adr_flexfield_segment_code  VARCHAR2(30);
21021 l_adr_flex_value_set_id       NUMBER;
21022 l_adr_value_type_code         VARCHAR2(30);
21023 l_adr_value_combination_id    NUMBER;
21024 l_adr_value_segment_code      VARCHAR2(30);
21025 
21026 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
21027 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
21028 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
21029 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
21030 
21031 -- 4262811 Variables ------------------------------------------------------------------------------------------
21032 l_entered_amt_idx             NUMBER;
21033 l_accted_amt_idx              NUMBER;
21034 l_acc_rev_flag                VARCHAR2(1);
21035 l_accrual_line_num            NUMBER;
21036 l_tmp_amt                     NUMBER;
21037 l_acc_rev_natural_side_code   VARCHAR2(1);
21038 
21039 l_num_entries                 NUMBER;
21040 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
21041 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
21042 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
21043 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
21044 l_recog_line_1                NUMBER;
21045 l_recog_line_2                NUMBER;
21046 
21047 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
21048 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
21049 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
21050 
21051 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
21052 
21053 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
21054 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
21055 
21056 ---------------------------------------------------------------------------------------------------------------
21057 
21058 
21059 --
21060 -- bulk performance
21061 --
21062 l_balance_type_code           VARCHAR2(1);
21063 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
21064 l_log_module                  VARCHAR2(240);
21065 
21066 --
21067 -- Upgrade strategy
21068 --
21069 l_actual_upg_option           VARCHAR2(1);
21070 l_enc_upg_option           VARCHAR2(1);
21071 
21072 --
21073 BEGIN
21074 --
21075 IF g_log_enabled THEN
21076       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_41';
21077 END IF;
21078 --
21079 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21080 
21081       trace
21082          (p_msg      => 'BEGIN of AcctLineType_41'
21083          ,p_level    => C_LEVEL_PROCEDURE
21084          ,p_module   => l_log_module);
21085 
21086 END IF;
21087 --
21088 l_component_type             := 'AMB_JLT';
21089 l_component_code             := 'COST_VARIANCE';
21090 l_component_type_code        := 'S';
21091 l_component_appl_id          :=  707;
21092 l_amb_context_code           := 'DEFAULT';
21093 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
21094 l_event_class_code           := 'MTL_COST_UPD';
21095 l_event_type_code            := 'MTL_COST_UPD_ALL';
21096 l_line_definition_owner_code := 'S';
21097 l_line_definition_code       := 'MTL_COST_UPD';
21098 --
21099 l_balance_type_code          := 'A';
21100 l_segment                     := NULL;
21101 l_ccid                        := NULL;
21102 l_adr_transaction_coa_id      := NULL;
21103 l_adr_accounting_coa_id       := NULL;
21104 l_adr_flexfield_segment_code  := NULL;
21105 l_adr_flex_value_set_id       := NULL;
21106 l_adr_value_type_code         := NULL;
21107 l_adr_value_combination_id    := NULL;
21108 l_adr_value_segment_code      := NULL;
21109 
21110 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
21111 l_bflow_class_code           := '';    -- 4219869 Business Flow
21112 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
21113 l_budgetary_control_flag     := 'N';
21114 
21115 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
21116 l_bflow_applied_to_amt       := NULL; -- 5132302
21117 l_entered_amt_idx            := NULL;          -- 4262811
21118 l_accted_amt_idx             := NULL;          -- 4262811
21119 l_acc_rev_flag               := NULL;          -- 4262811
21120 l_accrual_line_num           := NULL;          -- 4262811
21121 l_tmp_amt                    := NULL;          -- 4262811
21122 --
21123  
21124 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
21125     l_balance_type_code <> 'B' THEN
21126 IF NVL(p_source_24,9E125) =  13
21127  THEN 
21128 
21129    --
21130    XLA_AE_LINES_PKG.SetNewLine;
21131 
21132    p_balance_type_code          := l_balance_type_code;
21133    -- set the flag so later we will know whether the gain loss line needs to be created
21134    
21135    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
21136      p_actual_flag :='A';
21137    END IF;
21138 
21139    --
21140    -- bulk performance
21141    --
21142    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
21143                                       p_header_num   => 0); -- 4262811
21144    --
21145    -- set accounting line options
21146    --
21147    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
21148            p_natural_side_code          => 'D'
21149          , p_gain_or_loss_flag          => 'N'
21150          , p_gl_transfer_mode_code      => 'S'
21151          , p_acct_entry_type_code       => 'A'
21152          , p_switch_side_flag           => 'Y'
21153          , p_merge_duplicate_code       => 'N'
21154          );
21155    --
21156    l_acc_rev_natural_side_code := 'C';  -- 4262811
21157    -- 
21158    --
21159    -- set accounting line type info
21160    --
21161    xla_ae_lines_pkg.SetAcctLineType
21162       (p_component_type             => l_component_type
21163       ,p_event_type_code            => l_event_type_code
21164       ,p_line_definition_owner_code => l_line_definition_owner_code
21165       ,p_line_definition_code       => l_line_definition_code
21166       ,p_accounting_line_code       => l_component_code
21167       ,p_accounting_line_type_code  => l_component_type_code
21168       ,p_accounting_line_appl_id    => l_component_appl_id
21169       ,p_amb_context_code           => l_amb_context_code
21170       ,p_entity_code                => l_entity_code
21171       ,p_event_class_code           => l_event_class_code);
21172    --
21173    -- set accounting class
21174    --
21175    xla_ae_lines_pkg.SetAcctClass(
21176            p_accounting_class_code  => 'COST_VARIANCE'
21177          , p_ae_header_id           => l_ae_header_id
21178          );
21179 
21180    --
21181    -- set rounding class
21182    --
21183    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
21184                       'COST_VARIANCE';
21185 
21186    --
21187    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
21188    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
21189    --
21190    -- bulk performance
21191    --
21192    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
21193 
21194    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
21195       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
21196 
21197    -- 4955764
21198    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21199       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
21200 
21201    -- 4458381 Public Sector Enh
21202    
21203    --
21204    -- set accounting attributes for the line type
21205    --
21206    l_entered_amt_idx := 3;
21207    l_accted_amt_idx  := 8;
21208    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
21209    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
21210    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
21211    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
21212    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
21213    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
21214    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
21215    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
21216    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
21217    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
21218    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
21219    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
21220    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
21221    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
21222    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
21223    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
21224    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
21225 
21226    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
21227    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
21228 
21229    ---------------------------------------------------------------------------------------------------------------
21230    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
21231    ---------------------------------------------------------------------------------------------------------------
21232    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
21233 
21234    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21235    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21236 
21237    IF xla_accounting_cache_pkg.GetValueChar
21238          (p_source_code         => 'LEDGER_CATEGORY_CODE'
21239          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
21240    AND l_bflow_method_code = 'PRIOR_ENTRY'
21241 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
21242    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
21243          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
21244        )
21245    THEN
21246          xla_ae_lines_pkg.BflowUpgEntry
21247            (p_business_method_code    => l_bflow_method_code
21248            ,p_business_class_code     => l_bflow_class_code
21249            ,p_balance_type            => l_balance_type_code);
21250    ELSE
21251       NULL;
21252 -- No business flow processing for business flow method of NONE.
21253    END IF;
21254 
21255    --
21256    -- call analytical criteria
21257    --
21258    
21259    --
21260    -- call description
21261    --
21262    -- No description or it is inherited.
21263    --
21264    -- call ADRs
21265    -- Bug 4922099
21266    --
21267    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21268         (NVL(l_actual_upg_option, 'N') = 'O') OR
21269         (NVL(l_enc_upg_option, 'N') = 'O')
21270       )
21271    THEN
21272    NULL;
21273    --
21274    --
21275    
21276   l_ccid := AcctDerRule_4(
21277            p_application_id           => p_application_id
21278          , p_ae_header_id             => l_ae_header_id 
21279 , p_source_4 => p_source_4
21280          , x_transaction_coa_id       => l_adr_transaction_coa_id
21281          , x_accounting_coa_id        => l_adr_accounting_coa_id
21282          , x_value_type_code          => l_adr_value_type_code
21283          , p_side                     => 'NA'
21284    );
21285 
21286    xla_ae_lines_pkg.set_ccid(
21287     p_code_combination_id          => l_ccid
21288   , p_value_type_code              => l_adr_value_type_code
21289   , p_transaction_coa_id           => l_adr_transaction_coa_id
21290   , p_accounting_coa_id            => l_adr_accounting_coa_id
21291   , p_adr_code                     => 'CST_DEFAULT'
21292   , p_adr_type_code                => 'S'
21293   , p_component_type               => l_component_type
21294   , p_component_code               => l_component_code
21295   , p_component_type_code          => l_component_type_code
21296   , p_component_appl_id            => l_component_appl_id
21297   , p_amb_context_code             => l_amb_context_code
21298   , p_side                         => 'NA'
21299   );
21300 
21301 
21302    --
21303    --
21304    END IF;
21305    --
21306    -- Bug 4922099
21307    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
21308           (NVL(l_enc_upg_option, 'N') = 'O')
21309         ) AND
21310         (l_bflow_method_code = 'PRIOR_ENTRY')
21311       )
21312    THEN
21313       IF
21314       --
21315       1 = 2
21316       --
21317       THEN
21318       xla_accounting_err_pkg.build_message
21319                                     (p_appli_s_name            => 'XLA'
21320                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21321                                     ,p_token_1                 => 'LINE_NUMBER'
21322                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
21323                                     ,p_token_2                 => 'LINE_TYPE_NAME'
21324                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
21325                                                                              l_component_type
21326                                                                             ,l_component_code
21327                                                                             ,l_component_type_code
21328                                                                             ,l_component_appl_id
21329                                                                             ,l_amb_context_code
21330                                                                             ,l_entity_code
21331                                                                             ,l_event_class_code
21332                                                                            )
21333                                     ,p_token_3                 => 'OWNER'
21334                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
21335                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
21336                                                                           ,p_lookup_code    => l_component_type_code
21337                                                                          )
21338                                     ,p_token_4                 => 'PRODUCT_NAME'
21339                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
21340                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
21341                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
21342                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
21343                                     ,p_ae_header_id            =>  NULL
21344                                        );
21345 
21346         IF (C_LEVEL_ERROR>= g_log_level) THEN
21347                  trace
21348                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21349                       ,p_level    => C_LEVEL_ERROR
21350                       ,p_module   => l_log_module);
21351         END IF;
21352       END IF;
21353    END IF;
21354    --
21355    --
21356    ------------------------------------------------------------------------------------------------
21357    -- 4219869 Business Flow
21358    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
21359    -- Prior Entry.  Currently, the following code is always generated.
21360    ------------------------------------------------------------------------------------------------
21361    XLA_AE_LINES_PKG.ValidateCurrentLine;
21362 
21363    ------------------------------------------------------------------------------------
21364    -- 4219869 Business Flow
21365    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
21366    ------------------------------------------------------------------------------------
21367    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21368 
21369    ----------------------------------------------------------------------------------
21370    -- 4219869 Business Flow
21371    -- Update journal entry status -- Need to generate this within IF <condition>
21372    ----------------------------------------------------------------------------------
21373    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21374          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
21375          ,p_balance_type_code => l_balance_type_code
21376          );
21377 
21378    -------------------------------------------------------------------------------------------
21379    -- 4262811 - Generate the Accrual Reversal lines
21380    -------------------------------------------------------------------------------------------
21381    BEGIN
21382       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
21383                               (g_array_event(p_event_id).array_value_num('header_index'));
21384       IF l_acc_rev_flag IS NULL THEN
21385          l_acc_rev_flag := 'N';
21386       END IF;
21387    EXCEPTION
21388       WHEN OTHERS THEN
21389          l_acc_rev_flag := 'N';
21390    END;
21391    --
21392    IF (l_acc_rev_flag = 'Y') THEN
21393 
21394        -- 4645092  ------------------------------------------------------------------------------
21395        -- To allow MPA report to determine if it should generate report process
21396        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
21397        ------------------------------------------------------------------------------------------
21398 
21399        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
21400        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
21401    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
21402    -- call ADRs
21403    -- Bug 4922099
21404    --
21405    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21406         (NVL(l_actual_upg_option, 'N') = 'O') OR
21407         (NVL(l_enc_upg_option, 'N') = 'O')
21408       )
21409    THEN
21410    NULL;
21411    --
21412    --
21413    
21414   l_ccid := AcctDerRule_4(
21415            p_application_id           => p_application_id
21416          , p_ae_header_id             => l_ae_header_id 
21417 , p_source_4 => p_source_4
21418          , x_transaction_coa_id       => l_adr_transaction_coa_id
21419          , x_accounting_coa_id        => l_adr_accounting_coa_id
21420          , x_value_type_code          => l_adr_value_type_code
21421          , p_side                     => 'NA'
21422    );
21423 
21424    xla_ae_lines_pkg.set_ccid(
21425     p_code_combination_id          => l_ccid
21426   , p_value_type_code              => l_adr_value_type_code
21427   , p_transaction_coa_id           => l_adr_transaction_coa_id
21428   , p_accounting_coa_id            => l_adr_accounting_coa_id
21429   , p_adr_code                     => 'CST_DEFAULT'
21430   , p_adr_type_code                => 'S'
21431   , p_component_type               => l_component_type
21432   , p_component_code               => l_component_code
21433   , p_component_type_code          => l_component_type_code
21434   , p_component_appl_id            => l_component_appl_id
21435   , p_amb_context_code             => l_amb_context_code
21436   , p_side                         => 'NA'
21437   );
21438 
21439 
21440    --
21441    --
21442    END IF;
21443 
21444        --
21445        -- Update the line information that should be overwritten
21446        --
21447        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
21448                                          p_header_num   => 1);
21449        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
21450 
21451        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
21452 
21453        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
21454           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
21455        END IF;
21456 
21457       --
21458       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
21459       --
21460       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
21461           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
21462       ELSE
21463           ---------------------------------------------------------------------------------------------------
21464           -- 4262811a Switch Sign
21465           ---------------------------------------------------------------------------------------------------
21466           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
21467           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21468                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21469           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21470                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21471           -- 5132302
21472           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
21473                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21474 
21475       END IF;
21476 
21477       -- 4955764
21478       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21479       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
21480 
21481 
21482       XLA_AE_LINES_PKG.ValidateCurrentLine;
21483       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21484 
21485       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21486                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
21487                ,p_balance_type_code => l_balance_type_code);
21488 
21489    END IF;
21490 
21491    -----------------------------------------------------------------------------------------
21492    -- 4262811 Multiperiod Accounting
21493    -----------------------------------------------------------------------------------------
21494      -- No MPA option is assigned.
21495 
21496 
21497 END IF;
21498 END IF;
21499 --
21500 
21501 --
21502 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21503    trace
21504       (p_msg      => 'END of AcctLineType_41'
21505       ,p_level    => C_LEVEL_PROCEDURE
21506       ,p_module   => l_log_module);
21507 END IF;
21508 --
21509 EXCEPTION
21510   WHEN xla_exceptions_pkg.application_exception THEN
21511       RAISE;
21512   WHEN OTHERS THEN
21513        xla_exceptions_pkg.raise_message
21514            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_41');
21515 END AcctLineType_41;
21516 --
21517 
21518 ---------------------------------------
21519 --
21520 -- PRIVATE FUNCTION
21521 --         AcctLineType_42
21522 --
21523 ---------------------------------------
21524 PROCEDURE AcctLineType_42 (
21525   p_application_id        IN NUMBER
21526  ,p_event_id              IN NUMBER
21527  ,p_calculate_acctd_flag  IN VARCHAR2
21528  ,p_calculate_g_l_flag    IN VARCHAR2
21529  ,p_actual_flag           IN OUT VARCHAR2
21530  ,p_balance_type_code     OUT VARCHAR2
21531  ,p_gain_or_loss_ref      OUT VARCHAR2
21532  
21533 --Cost Management Default Account
21534  , p_source_4            IN NUMBER
21535 --DISTRIBUTION_IDENTIFIER
21536  , p_source_11            IN NUMBER
21537 --Distribution Type
21538  , p_source_12            IN VARCHAR2
21539  , p_source_12_meaning    IN VARCHAR2
21540 --Entered Currency Code
21541  , p_source_15            IN VARCHAR2
21542 --Entered Amount
21543  , p_source_18            IN NUMBER
21544 --Currency Conversion Date
21545  , p_source_19            IN DATE
21546 --Currency Conversion Rate
21547  , p_source_20            IN NUMBER
21548 --Currency Conversion Type
21549  , p_source_21            IN VARCHAR2
21550 --Accounted Amount
21551  , p_source_22            IN NUMBER
21552 --Accounting Line Type
21553  , p_source_24            IN NUMBER
21554 )
21555 IS
21556 
21557 l_component_type              VARCHAR2(80);
21558 l_component_code              VARCHAR2(30);
21559 l_component_type_code         VARCHAR2(1);
21560 l_component_appl_id           INTEGER;
21561 l_amb_context_code            VARCHAR2(30);
21562 l_entity_code                 VARCHAR2(30);
21563 l_event_class_code            VARCHAR2(30);
21564 l_ae_header_id                NUMBER;
21565 l_event_type_code             VARCHAR2(30);
21566 l_line_definition_code        VARCHAR2(30);
21567 l_line_definition_owner_code  VARCHAR2(1);
21568 --
21569 -- adr variables
21570 l_segment                     VARCHAR2(30);
21571 l_ccid                        NUMBER;
21572 l_adr_transaction_coa_id      NUMBER;
21573 l_adr_accounting_coa_id       NUMBER;
21574 l_adr_flexfield_segment_code  VARCHAR2(30);
21575 l_adr_flex_value_set_id       NUMBER;
21576 l_adr_value_type_code         VARCHAR2(30);
21577 l_adr_value_combination_id    NUMBER;
21578 l_adr_value_segment_code      VARCHAR2(30);
21579 
21580 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
21581 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
21582 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
21583 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
21584 
21585 -- 4262811 Variables ------------------------------------------------------------------------------------------
21586 l_entered_amt_idx             NUMBER;
21587 l_accted_amt_idx              NUMBER;
21588 l_acc_rev_flag                VARCHAR2(1);
21589 l_accrual_line_num            NUMBER;
21590 l_tmp_amt                     NUMBER;
21591 l_acc_rev_natural_side_code   VARCHAR2(1);
21592 
21593 l_num_entries                 NUMBER;
21594 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
21595 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
21596 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
21597 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
21598 l_recog_line_1                NUMBER;
21599 l_recog_line_2                NUMBER;
21600 
21601 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
21602 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
21603 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
21604 
21605 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
21606 
21607 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
21608 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
21609 
21610 ---------------------------------------------------------------------------------------------------------------
21611 
21612 
21613 --
21614 -- bulk performance
21615 --
21616 l_balance_type_code           VARCHAR2(1);
21617 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
21618 l_log_module                  VARCHAR2(240);
21619 
21620 --
21621 -- Upgrade strategy
21622 --
21623 l_actual_upg_option           VARCHAR2(1);
21624 l_enc_upg_option           VARCHAR2(1);
21625 
21626 --
21627 BEGIN
21628 --
21629 IF g_log_enabled THEN
21630       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_42';
21631 END IF;
21632 --
21633 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21634 
21635       trace
21636          (p_msg      => 'BEGIN of AcctLineType_42'
21637          ,p_level    => C_LEVEL_PROCEDURE
21638          ,p_module   => l_log_module);
21639 
21640 END IF;
21641 --
21642 l_component_type             := 'AMB_JLT';
21643 l_component_code             := 'COST_VARIANCE';
21644 l_component_type_code        := 'S';
21645 l_component_appl_id          :=  707;
21646 l_amb_context_code           := 'DEFAULT';
21647 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
21648 l_event_class_code           := 'WIP_MTL';
21649 l_event_type_code            := 'WIP_MTL_ALL';
21650 l_line_definition_owner_code := 'S';
21651 l_line_definition_code       := 'WIP_MTL';
21652 --
21653 l_balance_type_code          := 'A';
21654 l_segment                     := NULL;
21655 l_ccid                        := NULL;
21656 l_adr_transaction_coa_id      := NULL;
21657 l_adr_accounting_coa_id       := NULL;
21658 l_adr_flexfield_segment_code  := NULL;
21659 l_adr_flex_value_set_id       := NULL;
21660 l_adr_value_type_code         := NULL;
21661 l_adr_value_combination_id    := NULL;
21662 l_adr_value_segment_code      := NULL;
21663 
21664 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
21665 l_bflow_class_code           := '';    -- 4219869 Business Flow
21666 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
21667 l_budgetary_control_flag     := 'N';
21668 
21669 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
21670 l_bflow_applied_to_amt       := NULL; -- 5132302
21671 l_entered_amt_idx            := NULL;          -- 4262811
21672 l_accted_amt_idx             := NULL;          -- 4262811
21673 l_acc_rev_flag               := NULL;          -- 4262811
21674 l_accrual_line_num           := NULL;          -- 4262811
21675 l_tmp_amt                    := NULL;          -- 4262811
21676 --
21677  
21678 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
21679     l_balance_type_code <> 'B' THEN
21680 IF NVL(p_source_24,9E125) =  13
21681  THEN 
21682 
21683    --
21684    XLA_AE_LINES_PKG.SetNewLine;
21685 
21686    p_balance_type_code          := l_balance_type_code;
21687    -- set the flag so later we will know whether the gain loss line needs to be created
21688    
21689    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
21690      p_actual_flag :='A';
21691    END IF;
21692 
21693    --
21694    -- bulk performance
21695    --
21696    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
21697                                       p_header_num   => 0); -- 4262811
21698    --
21699    -- set accounting line options
21700    --
21701    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
21702            p_natural_side_code          => 'D'
21703          , p_gain_or_loss_flag          => 'N'
21704          , p_gl_transfer_mode_code      => 'S'
21705          , p_acct_entry_type_code       => 'A'
21706          , p_switch_side_flag           => 'Y'
21707          , p_merge_duplicate_code       => 'N'
21708          );
21709    --
21710    l_acc_rev_natural_side_code := 'C';  -- 4262811
21711    -- 
21712    --
21713    -- set accounting line type info
21714    --
21715    xla_ae_lines_pkg.SetAcctLineType
21716       (p_component_type             => l_component_type
21717       ,p_event_type_code            => l_event_type_code
21718       ,p_line_definition_owner_code => l_line_definition_owner_code
21719       ,p_line_definition_code       => l_line_definition_code
21720       ,p_accounting_line_code       => l_component_code
21721       ,p_accounting_line_type_code  => l_component_type_code
21722       ,p_accounting_line_appl_id    => l_component_appl_id
21723       ,p_amb_context_code           => l_amb_context_code
21724       ,p_entity_code                => l_entity_code
21725       ,p_event_class_code           => l_event_class_code);
21726    --
21727    -- set accounting class
21728    --
21729    xla_ae_lines_pkg.SetAcctClass(
21730            p_accounting_class_code  => 'COST_VARIANCE'
21731          , p_ae_header_id           => l_ae_header_id
21732          );
21733 
21734    --
21735    -- set rounding class
21736    --
21737    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
21738                       'COST_VARIANCE';
21739 
21740    --
21741    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
21742    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
21743    --
21744    -- bulk performance
21745    --
21746    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
21747 
21748    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
21749       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
21750 
21751    -- 4955764
21752    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21753       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
21754 
21755    -- 4458381 Public Sector Enh
21756    
21757    --
21758    -- set accounting attributes for the line type
21759    --
21760    l_entered_amt_idx := 3;
21761    l_accted_amt_idx  := 8;
21762    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
21763    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
21764    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
21765    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
21766    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
21767    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
21768    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
21769    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
21770    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
21771    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
21772    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
21773    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
21774    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
21775    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
21776    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
21777    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
21778    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
21779 
21780    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
21781    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
21782 
21783    ---------------------------------------------------------------------------------------------------------------
21784    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
21785    ---------------------------------------------------------------------------------------------------------------
21786    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
21787 
21788    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21789    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21790 
21791    IF xla_accounting_cache_pkg.GetValueChar
21792          (p_source_code         => 'LEDGER_CATEGORY_CODE'
21793          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
21794    AND l_bflow_method_code = 'PRIOR_ENTRY'
21795 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
21796    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
21797          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
21798        )
21799    THEN
21800          xla_ae_lines_pkg.BflowUpgEntry
21801            (p_business_method_code    => l_bflow_method_code
21802            ,p_business_class_code     => l_bflow_class_code
21803            ,p_balance_type            => l_balance_type_code);
21804    ELSE
21805       NULL;
21806 -- No business flow processing for business flow method of NONE.
21807    END IF;
21808 
21809    --
21810    -- call analytical criteria
21811    --
21812    
21813    --
21814    -- call description
21815    --
21816    -- No description or it is inherited.
21817    --
21818    -- call ADRs
21819    -- Bug 4922099
21820    --
21821    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21822         (NVL(l_actual_upg_option, 'N') = 'O') OR
21823         (NVL(l_enc_upg_option, 'N') = 'O')
21824       )
21825    THEN
21826    NULL;
21827    --
21828    --
21829    
21830   l_ccid := AcctDerRule_4(
21831            p_application_id           => p_application_id
21832          , p_ae_header_id             => l_ae_header_id 
21833 , p_source_4 => p_source_4
21834          , x_transaction_coa_id       => l_adr_transaction_coa_id
21835          , x_accounting_coa_id        => l_adr_accounting_coa_id
21836          , x_value_type_code          => l_adr_value_type_code
21837          , p_side                     => 'NA'
21838    );
21839 
21840    xla_ae_lines_pkg.set_ccid(
21841     p_code_combination_id          => l_ccid
21842   , p_value_type_code              => l_adr_value_type_code
21843   , p_transaction_coa_id           => l_adr_transaction_coa_id
21844   , p_accounting_coa_id            => l_adr_accounting_coa_id
21845   , p_adr_code                     => 'CST_DEFAULT'
21846   , p_adr_type_code                => 'S'
21847   , p_component_type               => l_component_type
21848   , p_component_code               => l_component_code
21849   , p_component_type_code          => l_component_type_code
21850   , p_component_appl_id            => l_component_appl_id
21851   , p_amb_context_code             => l_amb_context_code
21852   , p_side                         => 'NA'
21853   );
21854 
21855 
21856    --
21857    --
21858    END IF;
21859    --
21860    -- Bug 4922099
21861    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
21862           (NVL(l_enc_upg_option, 'N') = 'O')
21863         ) AND
21864         (l_bflow_method_code = 'PRIOR_ENTRY')
21865       )
21866    THEN
21867       IF
21868       --
21869       1 = 2
21870       --
21871       THEN
21872       xla_accounting_err_pkg.build_message
21873                                     (p_appli_s_name            => 'XLA'
21874                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21875                                     ,p_token_1                 => 'LINE_NUMBER'
21876                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
21877                                     ,p_token_2                 => 'LINE_TYPE_NAME'
21878                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
21879                                                                              l_component_type
21880                                                                             ,l_component_code
21881                                                                             ,l_component_type_code
21882                                                                             ,l_component_appl_id
21883                                                                             ,l_amb_context_code
21884                                                                             ,l_entity_code
21885                                                                             ,l_event_class_code
21886                                                                            )
21887                                     ,p_token_3                 => 'OWNER'
21888                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
21889                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
21890                                                                           ,p_lookup_code    => l_component_type_code
21891                                                                          )
21892                                     ,p_token_4                 => 'PRODUCT_NAME'
21893                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
21894                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
21895                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
21896                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
21897                                     ,p_ae_header_id            =>  NULL
21898                                        );
21899 
21900         IF (C_LEVEL_ERROR>= g_log_level) THEN
21901                  trace
21902                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21903                       ,p_level    => C_LEVEL_ERROR
21904                       ,p_module   => l_log_module);
21905         END IF;
21906       END IF;
21907    END IF;
21908    --
21909    --
21910    ------------------------------------------------------------------------------------------------
21911    -- 4219869 Business Flow
21912    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
21913    -- Prior Entry.  Currently, the following code is always generated.
21914    ------------------------------------------------------------------------------------------------
21915    XLA_AE_LINES_PKG.ValidateCurrentLine;
21916 
21917    ------------------------------------------------------------------------------------
21918    -- 4219869 Business Flow
21919    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
21920    ------------------------------------------------------------------------------------
21921    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21922 
21923    ----------------------------------------------------------------------------------
21924    -- 4219869 Business Flow
21925    -- Update journal entry status -- Need to generate this within IF <condition>
21926    ----------------------------------------------------------------------------------
21927    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21928          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
21929          ,p_balance_type_code => l_balance_type_code
21930          );
21931 
21932    -------------------------------------------------------------------------------------------
21933    -- 4262811 - Generate the Accrual Reversal lines
21934    -------------------------------------------------------------------------------------------
21935    BEGIN
21936       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
21937                               (g_array_event(p_event_id).array_value_num('header_index'));
21938       IF l_acc_rev_flag IS NULL THEN
21939          l_acc_rev_flag := 'N';
21940       END IF;
21941    EXCEPTION
21942       WHEN OTHERS THEN
21943          l_acc_rev_flag := 'N';
21944    END;
21945    --
21946    IF (l_acc_rev_flag = 'Y') THEN
21947 
21948        -- 4645092  ------------------------------------------------------------------------------
21949        -- To allow MPA report to determine if it should generate report process
21950        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
21951        ------------------------------------------------------------------------------------------
21952 
21953        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
21954        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
21955    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
21956    -- call ADRs
21957    -- Bug 4922099
21958    --
21959    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21960         (NVL(l_actual_upg_option, 'N') = 'O') OR
21961         (NVL(l_enc_upg_option, 'N') = 'O')
21962       )
21963    THEN
21964    NULL;
21965    --
21966    --
21967    
21968   l_ccid := AcctDerRule_4(
21969            p_application_id           => p_application_id
21970          , p_ae_header_id             => l_ae_header_id 
21971 , p_source_4 => p_source_4
21972          , x_transaction_coa_id       => l_adr_transaction_coa_id
21973          , x_accounting_coa_id        => l_adr_accounting_coa_id
21974          , x_value_type_code          => l_adr_value_type_code
21975          , p_side                     => 'NA'
21976    );
21977 
21978    xla_ae_lines_pkg.set_ccid(
21979     p_code_combination_id          => l_ccid
21980   , p_value_type_code              => l_adr_value_type_code
21981   , p_transaction_coa_id           => l_adr_transaction_coa_id
21982   , p_accounting_coa_id            => l_adr_accounting_coa_id
21983   , p_adr_code                     => 'CST_DEFAULT'
21984   , p_adr_type_code                => 'S'
21985   , p_component_type               => l_component_type
21986   , p_component_code               => l_component_code
21987   , p_component_type_code          => l_component_type_code
21988   , p_component_appl_id            => l_component_appl_id
21989   , p_amb_context_code             => l_amb_context_code
21990   , p_side                         => 'NA'
21991   );
21992 
21993 
21994    --
21995    --
21996    END IF;
21997 
21998        --
21999        -- Update the line information that should be overwritten
22000        --
22001        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
22002                                          p_header_num   => 1);
22003        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
22004 
22005        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
22006 
22007        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
22008           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
22009        END IF;
22010 
22011       --
22012       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
22013       --
22014       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
22015           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
22016       ELSE
22017           ---------------------------------------------------------------------------------------------------
22018           -- 4262811a Switch Sign
22019           ---------------------------------------------------------------------------------------------------
22020           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
22021           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22022                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22023           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22024                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22025           -- 5132302
22026           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
22027                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22028 
22029       END IF;
22030 
22031       -- 4955764
22032       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22033       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
22034 
22035 
22036       XLA_AE_LINES_PKG.ValidateCurrentLine;
22037       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22038 
22039       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22040                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
22041                ,p_balance_type_code => l_balance_type_code);
22042 
22043    END IF;
22044 
22045    -----------------------------------------------------------------------------------------
22046    -- 4262811 Multiperiod Accounting
22047    -----------------------------------------------------------------------------------------
22048      -- No MPA option is assigned.
22049 
22050 
22051 END IF;
22052 END IF;
22053 --
22054 
22055 --
22056 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22057    trace
22058       (p_msg      => 'END of AcctLineType_42'
22059       ,p_level    => C_LEVEL_PROCEDURE
22060       ,p_module   => l_log_module);
22061 END IF;
22062 --
22063 EXCEPTION
22064   WHEN xla_exceptions_pkg.application_exception THEN
22065       RAISE;
22066   WHEN OTHERS THEN
22067        xla_exceptions_pkg.raise_message
22068            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_42');
22069 END AcctLineType_42;
22070 --
22071 
22072 ---------------------------------------
22073 --
22074 -- PRIVATE FUNCTION
22075 --         AcctLineType_43
22076 --
22077 ---------------------------------------
22078 PROCEDURE AcctLineType_43 (
22079   p_application_id        IN NUMBER
22080  ,p_event_id              IN NUMBER
22081  ,p_calculate_acctd_flag  IN VARCHAR2
22082  ,p_calculate_g_l_flag    IN VARCHAR2
22083  ,p_actual_flag           IN OUT VARCHAR2
22084  ,p_balance_type_code     OUT VARCHAR2
22085  ,p_gain_or_loss_ref      OUT VARCHAR2
22086  
22087 --Cost Management Default Account
22088  , p_source_4            IN NUMBER
22089 --DISTRIBUTION_IDENTIFIER
22090  , p_source_11            IN NUMBER
22091 --Distribution Type
22092  , p_source_12            IN VARCHAR2
22093  , p_source_12_meaning    IN VARCHAR2
22094 --Entered Currency Code
22095  , p_source_15            IN VARCHAR2
22096 --Entered Amount
22097  , p_source_18            IN NUMBER
22098 --Currency Conversion Date
22099  , p_source_19            IN DATE
22100 --Currency Conversion Rate
22101  , p_source_20            IN NUMBER
22102 --Currency Conversion Type
22103  , p_source_21            IN VARCHAR2
22104 --Accounted Amount
22105  , p_source_22            IN NUMBER
22106 --Accounting Line Type
22107  , p_source_24            IN NUMBER
22108 )
22109 IS
22110 
22111 l_component_type              VARCHAR2(80);
22112 l_component_code              VARCHAR2(30);
22113 l_component_type_code         VARCHAR2(1);
22114 l_component_appl_id           INTEGER;
22115 l_amb_context_code            VARCHAR2(30);
22116 l_entity_code                 VARCHAR2(30);
22117 l_event_class_code            VARCHAR2(30);
22118 l_ae_header_id                NUMBER;
22119 l_event_type_code             VARCHAR2(30);
22120 l_line_definition_code        VARCHAR2(30);
22121 l_line_definition_owner_code  VARCHAR2(1);
22122 --
22123 -- adr variables
22124 l_segment                     VARCHAR2(30);
22125 l_ccid                        NUMBER;
22126 l_adr_transaction_coa_id      NUMBER;
22127 l_adr_accounting_coa_id       NUMBER;
22128 l_adr_flexfield_segment_code  VARCHAR2(30);
22129 l_adr_flex_value_set_id       NUMBER;
22130 l_adr_value_type_code         VARCHAR2(30);
22131 l_adr_value_combination_id    NUMBER;
22132 l_adr_value_segment_code      VARCHAR2(30);
22133 
22134 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
22135 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
22136 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
22137 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
22138 
22139 -- 4262811 Variables ------------------------------------------------------------------------------------------
22140 l_entered_amt_idx             NUMBER;
22141 l_accted_amt_idx              NUMBER;
22142 l_acc_rev_flag                VARCHAR2(1);
22143 l_accrual_line_num            NUMBER;
22144 l_tmp_amt                     NUMBER;
22145 l_acc_rev_natural_side_code   VARCHAR2(1);
22146 
22147 l_num_entries                 NUMBER;
22148 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
22149 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
22150 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
22151 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
22152 l_recog_line_1                NUMBER;
22153 l_recog_line_2                NUMBER;
22154 
22155 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
22156 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
22157 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
22158 
22159 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
22160 
22161 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
22162 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
22163 
22164 ---------------------------------------------------------------------------------------------------------------
22165 
22166 
22167 --
22168 -- bulk performance
22169 --
22170 l_balance_type_code           VARCHAR2(1);
22171 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
22172 l_log_module                  VARCHAR2(240);
22173 
22174 --
22175 -- Upgrade strategy
22176 --
22177 l_actual_upg_option           VARCHAR2(1);
22178 l_enc_upg_option           VARCHAR2(1);
22179 
22180 --
22181 BEGIN
22182 --
22183 IF g_log_enabled THEN
22184       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_43';
22185 END IF;
22186 --
22187 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22188 
22189       trace
22190          (p_msg      => 'BEGIN of AcctLineType_43'
22191          ,p_level    => C_LEVEL_PROCEDURE
22192          ,p_module   => l_log_module);
22193 
22194 END IF;
22195 --
22196 l_component_type             := 'AMB_JLT';
22197 l_component_code             := 'COST_VARIANCE';
22198 l_component_type_code        := 'S';
22199 l_component_appl_id          :=  707;
22200 l_amb_context_code           := 'DEFAULT';
22201 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
22202 l_event_class_code           := 'USER_DEFINE';
22203 l_event_type_code            := 'UIPV_TXFR';
22204 l_line_definition_owner_code := 'S';
22205 l_line_definition_code       := 'USER_IPV_TXFR';
22206 --
22207 l_balance_type_code          := 'A';
22208 l_segment                     := NULL;
22209 l_ccid                        := NULL;
22210 l_adr_transaction_coa_id      := NULL;
22211 l_adr_accounting_coa_id       := NULL;
22212 l_adr_flexfield_segment_code  := NULL;
22213 l_adr_flex_value_set_id       := NULL;
22214 l_adr_value_type_code         := NULL;
22215 l_adr_value_combination_id    := NULL;
22216 l_adr_value_segment_code      := NULL;
22217 
22218 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
22219 l_bflow_class_code           := '';    -- 4219869 Business Flow
22220 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
22221 l_budgetary_control_flag     := 'N';
22222 
22223 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
22224 l_bflow_applied_to_amt       := NULL; -- 5132302
22225 l_entered_amt_idx            := NULL;          -- 4262811
22226 l_accted_amt_idx             := NULL;          -- 4262811
22227 l_acc_rev_flag               := NULL;          -- 4262811
22228 l_accrual_line_num           := NULL;          -- 4262811
22229 l_tmp_amt                    := NULL;          -- 4262811
22230 --
22231  
22232 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
22233     l_balance_type_code <> 'B' THEN
22234 IF NVL(p_source_24,9E125) =  13
22235  THEN 
22236 
22237    --
22238    XLA_AE_LINES_PKG.SetNewLine;
22239 
22240    p_balance_type_code          := l_balance_type_code;
22241    -- set the flag so later we will know whether the gain loss line needs to be created
22242    
22243    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
22244      p_actual_flag :='A';
22245    END IF;
22246 
22247    --
22248    -- bulk performance
22249    --
22250    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
22251                                       p_header_num   => 0); -- 4262811
22252    --
22253    -- set accounting line options
22254    --
22255    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
22256            p_natural_side_code          => 'D'
22257          , p_gain_or_loss_flag          => 'N'
22258          , p_gl_transfer_mode_code      => 'S'
22259          , p_acct_entry_type_code       => 'A'
22260          , p_switch_side_flag           => 'Y'
22261          , p_merge_duplicate_code       => 'N'
22262          );
22263    --
22264    l_acc_rev_natural_side_code := 'C';  -- 4262811
22265    -- 
22266    --
22267    -- set accounting line type info
22268    --
22269    xla_ae_lines_pkg.SetAcctLineType
22270       (p_component_type             => l_component_type
22271       ,p_event_type_code            => l_event_type_code
22272       ,p_line_definition_owner_code => l_line_definition_owner_code
22273       ,p_line_definition_code       => l_line_definition_code
22274       ,p_accounting_line_code       => l_component_code
22275       ,p_accounting_line_type_code  => l_component_type_code
22276       ,p_accounting_line_appl_id    => l_component_appl_id
22277       ,p_amb_context_code           => l_amb_context_code
22278       ,p_entity_code                => l_entity_code
22279       ,p_event_class_code           => l_event_class_code);
22280    --
22281    -- set accounting class
22282    --
22283    xla_ae_lines_pkg.SetAcctClass(
22284            p_accounting_class_code  => 'COST_VARIANCE'
22285          , p_ae_header_id           => l_ae_header_id
22286          );
22287 
22288    --
22289    -- set rounding class
22290    --
22291    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
22292                       'COST_VARIANCE';
22293 
22294    --
22295    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
22296    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
22297    --
22298    -- bulk performance
22299    --
22300    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
22301 
22302    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
22303       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
22304 
22305    -- 4955764
22306    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22307       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
22308 
22309    -- 4458381 Public Sector Enh
22310    
22311    --
22312    -- set accounting attributes for the line type
22313    --
22314    l_entered_amt_idx := 3;
22315    l_accted_amt_idx  := 8;
22316    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
22317    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
22318    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
22319    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
22320    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
22321    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
22322    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
22323    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
22324    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
22325    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
22326    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
22327    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
22328    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
22329    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
22330    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
22331    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
22332    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
22333 
22334    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
22335    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
22336 
22337    ---------------------------------------------------------------------------------------------------------------
22338    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
22339    ---------------------------------------------------------------------------------------------------------------
22340    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
22341 
22342    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22343    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22344 
22345    IF xla_accounting_cache_pkg.GetValueChar
22346          (p_source_code         => 'LEDGER_CATEGORY_CODE'
22347          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
22348    AND l_bflow_method_code = 'PRIOR_ENTRY'
22349 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
22350    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
22351          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
22352        )
22353    THEN
22354          xla_ae_lines_pkg.BflowUpgEntry
22355            (p_business_method_code    => l_bflow_method_code
22356            ,p_business_class_code     => l_bflow_class_code
22357            ,p_balance_type            => l_balance_type_code);
22358    ELSE
22359       NULL;
22360 -- No business flow processing for business flow method of NONE.
22361    END IF;
22362 
22363    --
22364    -- call analytical criteria
22365    --
22366    
22367    --
22368    -- call description
22369    --
22370    -- No description or it is inherited.
22371    --
22372    -- call ADRs
22373    -- Bug 4922099
22374    --
22375    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22376         (NVL(l_actual_upg_option, 'N') = 'O') OR
22377         (NVL(l_enc_upg_option, 'N') = 'O')
22378       )
22379    THEN
22380    NULL;
22381    --
22382    --
22383    
22384   l_ccid := AcctDerRule_4(
22385            p_application_id           => p_application_id
22386          , p_ae_header_id             => l_ae_header_id 
22387 , p_source_4 => p_source_4
22388          , x_transaction_coa_id       => l_adr_transaction_coa_id
22389          , x_accounting_coa_id        => l_adr_accounting_coa_id
22390          , x_value_type_code          => l_adr_value_type_code
22391          , p_side                     => 'NA'
22392    );
22393 
22394    xla_ae_lines_pkg.set_ccid(
22395     p_code_combination_id          => l_ccid
22396   , p_value_type_code              => l_adr_value_type_code
22397   , p_transaction_coa_id           => l_adr_transaction_coa_id
22398   , p_accounting_coa_id            => l_adr_accounting_coa_id
22399   , p_adr_code                     => 'CST_DEFAULT'
22400   , p_adr_type_code                => 'S'
22401   , p_component_type               => l_component_type
22402   , p_component_code               => l_component_code
22403   , p_component_type_code          => l_component_type_code
22404   , p_component_appl_id            => l_component_appl_id
22405   , p_amb_context_code             => l_amb_context_code
22406   , p_side                         => 'NA'
22407   );
22408 
22409 
22410    --
22411    --
22412    END IF;
22413    --
22414    -- Bug 4922099
22415    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
22416           (NVL(l_enc_upg_option, 'N') = 'O')
22417         ) AND
22418         (l_bflow_method_code = 'PRIOR_ENTRY')
22419       )
22420    THEN
22421       IF
22422       --
22423       1 = 2
22424       --
22425       THEN
22426       xla_accounting_err_pkg.build_message
22427                                     (p_appli_s_name            => 'XLA'
22428                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22429                                     ,p_token_1                 => 'LINE_NUMBER'
22430                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
22431                                     ,p_token_2                 => 'LINE_TYPE_NAME'
22432                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
22433                                                                              l_component_type
22434                                                                             ,l_component_code
22435                                                                             ,l_component_type_code
22436                                                                             ,l_component_appl_id
22437                                                                             ,l_amb_context_code
22438                                                                             ,l_entity_code
22439                                                                             ,l_event_class_code
22440                                                                            )
22441                                     ,p_token_3                 => 'OWNER'
22442                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
22443                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
22444                                                                           ,p_lookup_code    => l_component_type_code
22445                                                                          )
22446                                     ,p_token_4                 => 'PRODUCT_NAME'
22447                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
22448                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
22449                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
22450                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
22451                                     ,p_ae_header_id            =>  NULL
22452                                        );
22453 
22454         IF (C_LEVEL_ERROR>= g_log_level) THEN
22455                  trace
22456                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22457                       ,p_level    => C_LEVEL_ERROR
22458                       ,p_module   => l_log_module);
22459         END IF;
22460       END IF;
22461    END IF;
22462    --
22463    --
22464    ------------------------------------------------------------------------------------------------
22465    -- 4219869 Business Flow
22466    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
22467    -- Prior Entry.  Currently, the following code is always generated.
22468    ------------------------------------------------------------------------------------------------
22469    XLA_AE_LINES_PKG.ValidateCurrentLine;
22470 
22471    ------------------------------------------------------------------------------------
22472    -- 4219869 Business Flow
22473    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
22474    ------------------------------------------------------------------------------------
22475    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22476 
22477    ----------------------------------------------------------------------------------
22478    -- 4219869 Business Flow
22479    -- Update journal entry status -- Need to generate this within IF <condition>
22480    ----------------------------------------------------------------------------------
22481    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22482          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
22483          ,p_balance_type_code => l_balance_type_code
22484          );
22485 
22486    -------------------------------------------------------------------------------------------
22487    -- 4262811 - Generate the Accrual Reversal lines
22488    -------------------------------------------------------------------------------------------
22489    BEGIN
22490       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
22491                               (g_array_event(p_event_id).array_value_num('header_index'));
22492       IF l_acc_rev_flag IS NULL THEN
22493          l_acc_rev_flag := 'N';
22494       END IF;
22495    EXCEPTION
22496       WHEN OTHERS THEN
22497          l_acc_rev_flag := 'N';
22498    END;
22499    --
22500    IF (l_acc_rev_flag = 'Y') THEN
22501 
22502        -- 4645092  ------------------------------------------------------------------------------
22503        -- To allow MPA report to determine if it should generate report process
22504        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
22505        ------------------------------------------------------------------------------------------
22506 
22507        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
22508        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
22509    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
22510    -- call ADRs
22511    -- Bug 4922099
22512    --
22513    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22514         (NVL(l_actual_upg_option, 'N') = 'O') OR
22515         (NVL(l_enc_upg_option, 'N') = 'O')
22516       )
22517    THEN
22518    NULL;
22519    --
22520    --
22521    
22522   l_ccid := AcctDerRule_4(
22523            p_application_id           => p_application_id
22524          , p_ae_header_id             => l_ae_header_id 
22525 , p_source_4 => p_source_4
22526          , x_transaction_coa_id       => l_adr_transaction_coa_id
22527          , x_accounting_coa_id        => l_adr_accounting_coa_id
22528          , x_value_type_code          => l_adr_value_type_code
22529          , p_side                     => 'NA'
22530    );
22531 
22532    xla_ae_lines_pkg.set_ccid(
22533     p_code_combination_id          => l_ccid
22534   , p_value_type_code              => l_adr_value_type_code
22535   , p_transaction_coa_id           => l_adr_transaction_coa_id
22536   , p_accounting_coa_id            => l_adr_accounting_coa_id
22537   , p_adr_code                     => 'CST_DEFAULT'
22538   , p_adr_type_code                => 'S'
22539   , p_component_type               => l_component_type
22540   , p_component_code               => l_component_code
22541   , p_component_type_code          => l_component_type_code
22542   , p_component_appl_id            => l_component_appl_id
22543   , p_amb_context_code             => l_amb_context_code
22544   , p_side                         => 'NA'
22545   );
22546 
22547 
22548    --
22549    --
22550    END IF;
22551 
22552        --
22553        -- Update the line information that should be overwritten
22554        --
22555        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
22556                                          p_header_num   => 1);
22557        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
22558 
22559        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
22560 
22561        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
22562           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
22563        END IF;
22564 
22565       --
22566       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
22567       --
22568       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
22569           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
22570       ELSE
22571           ---------------------------------------------------------------------------------------------------
22572           -- 4262811a Switch Sign
22573           ---------------------------------------------------------------------------------------------------
22574           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
22575           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22576                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22577           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22578                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22579           -- 5132302
22580           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
22581                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22582 
22583       END IF;
22584 
22585       -- 4955764
22586       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22587       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
22588 
22589 
22590       XLA_AE_LINES_PKG.ValidateCurrentLine;
22591       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22592 
22593       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22594                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
22595                ,p_balance_type_code => l_balance_type_code);
22596 
22597    END IF;
22598 
22599    -----------------------------------------------------------------------------------------
22600    -- 4262811 Multiperiod Accounting
22601    -----------------------------------------------------------------------------------------
22602      -- No MPA option is assigned.
22603 
22604 
22605 END IF;
22606 END IF;
22607 --
22608 
22609 --
22610 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22611    trace
22612       (p_msg      => 'END of AcctLineType_43'
22613       ,p_level    => C_LEVEL_PROCEDURE
22614       ,p_module   => l_log_module);
22615 END IF;
22616 --
22617 EXCEPTION
22618   WHEN xla_exceptions_pkg.application_exception THEN
22619       RAISE;
22620   WHEN OTHERS THEN
22621        xla_exceptions_pkg.raise_message
22622            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_43');
22623 END AcctLineType_43;
22624 --
22625 
22626 ---------------------------------------
22627 --
22628 -- PRIVATE FUNCTION
22629 --         AcctLineType_44
22630 --
22631 ---------------------------------------
22632 PROCEDURE AcctLineType_44 (
22633   p_application_id        IN NUMBER
22634  ,p_event_id              IN NUMBER
22635  ,p_calculate_acctd_flag  IN VARCHAR2
22636  ,p_calculate_g_l_flag    IN VARCHAR2
22637  ,p_actual_flag           IN OUT VARCHAR2
22638  ,p_balance_type_code     OUT VARCHAR2
22639  ,p_gain_or_loss_ref      OUT VARCHAR2
22640  
22641 --Cost Management Default Account
22642  , p_source_4            IN NUMBER
22643 --DISTRIBUTION_IDENTIFIER
22644  , p_source_11            IN NUMBER
22645 --Distribution Type
22646  , p_source_12            IN VARCHAR2
22647  , p_source_12_meaning    IN VARCHAR2
22648 --Entered Currency Code
22649  , p_source_15            IN VARCHAR2
22650 --Entered Amount
22651  , p_source_18            IN NUMBER
22652 --Currency Conversion Date
22653  , p_source_19            IN DATE
22654 --Currency Conversion Rate
22655  , p_source_20            IN NUMBER
22656 --Currency Conversion Type
22657  , p_source_21            IN VARCHAR2
22658 --Accounted Amount
22659  , p_source_22            IN NUMBER
22660 --Accounting Line Type
22661  , p_source_24            IN NUMBER
22662 )
22663 IS
22664 
22665 l_component_type              VARCHAR2(80);
22666 l_component_code              VARCHAR2(30);
22667 l_component_type_code         VARCHAR2(1);
22668 l_component_appl_id           INTEGER;
22669 l_amb_context_code            VARCHAR2(30);
22670 l_entity_code                 VARCHAR2(30);
22671 l_event_class_code            VARCHAR2(30);
22672 l_ae_header_id                NUMBER;
22673 l_event_type_code             VARCHAR2(30);
22674 l_line_definition_code        VARCHAR2(30);
22675 l_line_definition_owner_code  VARCHAR2(1);
22676 --
22677 -- adr variables
22678 l_segment                     VARCHAR2(30);
22679 l_ccid                        NUMBER;
22680 l_adr_transaction_coa_id      NUMBER;
22681 l_adr_accounting_coa_id       NUMBER;
22682 l_adr_flexfield_segment_code  VARCHAR2(30);
22683 l_adr_flex_value_set_id       NUMBER;
22684 l_adr_value_type_code         VARCHAR2(30);
22685 l_adr_value_combination_id    NUMBER;
22686 l_adr_value_segment_code      VARCHAR2(30);
22687 
22688 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
22689 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
22690 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
22691 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
22692 
22693 -- 4262811 Variables ------------------------------------------------------------------------------------------
22694 l_entered_amt_idx             NUMBER;
22695 l_accted_amt_idx              NUMBER;
22696 l_acc_rev_flag                VARCHAR2(1);
22697 l_accrual_line_num            NUMBER;
22698 l_tmp_amt                     NUMBER;
22699 l_acc_rev_natural_side_code   VARCHAR2(1);
22700 
22701 l_num_entries                 NUMBER;
22702 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
22703 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
22704 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
22705 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
22706 l_recog_line_1                NUMBER;
22707 l_recog_line_2                NUMBER;
22708 
22709 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
22710 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
22711 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
22712 
22713 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
22714 
22715 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
22716 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
22717 
22718 ---------------------------------------------------------------------------------------------------------------
22719 
22720 
22721 --
22722 -- bulk performance
22723 --
22724 l_balance_type_code           VARCHAR2(1);
22725 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
22726 l_log_module                  VARCHAR2(240);
22727 
22728 --
22729 -- Upgrade strategy
22730 --
22731 l_actual_upg_option           VARCHAR2(1);
22732 l_enc_upg_option           VARCHAR2(1);
22733 
22734 --
22735 BEGIN
22736 --
22737 IF g_log_enabled THEN
22738       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_44';
22739 END IF;
22740 --
22741 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22742 
22743       trace
22744          (p_msg      => 'BEGIN of AcctLineType_44'
22745          ,p_level    => C_LEVEL_PROCEDURE
22746          ,p_module   => l_log_module);
22747 
22748 END IF;
22749 --
22750 l_component_type             := 'AMB_JLT';
22751 l_component_code             := 'COST_VARIANCE';
22752 l_component_type_code        := 'S';
22753 l_component_appl_id          :=  707;
22754 l_amb_context_code           := 'DEFAULT';
22755 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
22756 l_event_class_code           := 'USER_DEFINE';
22757 l_event_type_code            := 'UCG_TXFR';
22758 l_line_definition_owner_code := 'S';
22759 l_line_definition_code       := 'USER_CG_TXFR';
22760 --
22761 l_balance_type_code          := 'A';
22762 l_segment                     := NULL;
22763 l_ccid                        := NULL;
22764 l_adr_transaction_coa_id      := NULL;
22765 l_adr_accounting_coa_id       := NULL;
22766 l_adr_flexfield_segment_code  := NULL;
22767 l_adr_flex_value_set_id       := NULL;
22768 l_adr_value_type_code         := NULL;
22769 l_adr_value_combination_id    := NULL;
22770 l_adr_value_segment_code      := NULL;
22771 
22772 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
22773 l_bflow_class_code           := '';    -- 4219869 Business Flow
22774 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
22775 l_budgetary_control_flag     := 'N';
22776 
22777 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
22778 l_bflow_applied_to_amt       := NULL; -- 5132302
22779 l_entered_amt_idx            := NULL;          -- 4262811
22780 l_accted_amt_idx             := NULL;          -- 4262811
22781 l_acc_rev_flag               := NULL;          -- 4262811
22782 l_accrual_line_num           := NULL;          -- 4262811
22783 l_tmp_amt                    := NULL;          -- 4262811
22784 --
22785  
22786 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
22787     l_balance_type_code <> 'B' THEN
22788 IF NVL(p_source_24,9E125) =  13
22789  THEN 
22790 
22791    --
22792    XLA_AE_LINES_PKG.SetNewLine;
22793 
22794    p_balance_type_code          := l_balance_type_code;
22795    -- set the flag so later we will know whether the gain loss line needs to be created
22796    
22797    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
22798      p_actual_flag :='A';
22799    END IF;
22800 
22801    --
22802    -- bulk performance
22803    --
22804    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
22805                                       p_header_num   => 0); -- 4262811
22806    --
22807    -- set accounting line options
22808    --
22809    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
22810            p_natural_side_code          => 'D'
22811          , p_gain_or_loss_flag          => 'N'
22812          , p_gl_transfer_mode_code      => 'S'
22813          , p_acct_entry_type_code       => 'A'
22814          , p_switch_side_flag           => 'Y'
22815          , p_merge_duplicate_code       => 'N'
22816          );
22817    --
22818    l_acc_rev_natural_side_code := 'C';  -- 4262811
22819    -- 
22820    --
22821    -- set accounting line type info
22822    --
22823    xla_ae_lines_pkg.SetAcctLineType
22824       (p_component_type             => l_component_type
22825       ,p_event_type_code            => l_event_type_code
22826       ,p_line_definition_owner_code => l_line_definition_owner_code
22827       ,p_line_definition_code       => l_line_definition_code
22828       ,p_accounting_line_code       => l_component_code
22829       ,p_accounting_line_type_code  => l_component_type_code
22830       ,p_accounting_line_appl_id    => l_component_appl_id
22831       ,p_amb_context_code           => l_amb_context_code
22832       ,p_entity_code                => l_entity_code
22833       ,p_event_class_code           => l_event_class_code);
22834    --
22835    -- set accounting class
22836    --
22837    xla_ae_lines_pkg.SetAcctClass(
22838            p_accounting_class_code  => 'COST_VARIANCE'
22839          , p_ae_header_id           => l_ae_header_id
22840          );
22841 
22842    --
22843    -- set rounding class
22844    --
22845    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
22846                       'COST_VARIANCE';
22847 
22848    --
22849    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
22850    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
22851    --
22852    -- bulk performance
22853    --
22854    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
22855 
22856    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
22857       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
22858 
22859    -- 4955764
22860    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22861       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
22862 
22863    -- 4458381 Public Sector Enh
22864    
22865    --
22866    -- set accounting attributes for the line type
22867    --
22868    l_entered_amt_idx := 3;
22869    l_accted_amt_idx  := 8;
22870    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
22871    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
22872    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
22873    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
22874    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
22875    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
22876    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
22877    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
22878    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
22879    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
22880    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
22881    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
22882    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
22883    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
22884    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
22885    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
22886    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
22887 
22888    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
22889    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
22890 
22891    ---------------------------------------------------------------------------------------------------------------
22892    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
22893    ---------------------------------------------------------------------------------------------------------------
22894    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
22895 
22896    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22897    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22898 
22899    IF xla_accounting_cache_pkg.GetValueChar
22900          (p_source_code         => 'LEDGER_CATEGORY_CODE'
22901          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
22902    AND l_bflow_method_code = 'PRIOR_ENTRY'
22903 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
22904    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
22905          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
22906        )
22907    THEN
22908          xla_ae_lines_pkg.BflowUpgEntry
22909            (p_business_method_code    => l_bflow_method_code
22910            ,p_business_class_code     => l_bflow_class_code
22911            ,p_balance_type            => l_balance_type_code);
22912    ELSE
22913       NULL;
22914 -- No business flow processing for business flow method of NONE.
22915    END IF;
22916 
22917    --
22918    -- call analytical criteria
22919    --
22920    
22921    --
22922    -- call description
22923    --
22924    -- No description or it is inherited.
22925    --
22926    -- call ADRs
22927    -- Bug 4922099
22928    --
22929    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22930         (NVL(l_actual_upg_option, 'N') = 'O') OR
22931         (NVL(l_enc_upg_option, 'N') = 'O')
22932       )
22933    THEN
22934    NULL;
22935    --
22936    --
22937    
22938   l_ccid := AcctDerRule_4(
22939            p_application_id           => p_application_id
22940          , p_ae_header_id             => l_ae_header_id 
22941 , p_source_4 => p_source_4
22942          , x_transaction_coa_id       => l_adr_transaction_coa_id
22943          , x_accounting_coa_id        => l_adr_accounting_coa_id
22944          , x_value_type_code          => l_adr_value_type_code
22945          , p_side                     => 'NA'
22946    );
22947 
22948    xla_ae_lines_pkg.set_ccid(
22949     p_code_combination_id          => l_ccid
22950   , p_value_type_code              => l_adr_value_type_code
22951   , p_transaction_coa_id           => l_adr_transaction_coa_id
22952   , p_accounting_coa_id            => l_adr_accounting_coa_id
22953   , p_adr_code                     => 'CST_DEFAULT'
22954   , p_adr_type_code                => 'S'
22955   , p_component_type               => l_component_type
22956   , p_component_code               => l_component_code
22957   , p_component_type_code          => l_component_type_code
22958   , p_component_appl_id            => l_component_appl_id
22959   , p_amb_context_code             => l_amb_context_code
22960   , p_side                         => 'NA'
22961   );
22962 
22963 
22964    --
22965    --
22966    END IF;
22967    --
22968    -- Bug 4922099
22969    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
22970           (NVL(l_enc_upg_option, 'N') = 'O')
22971         ) AND
22972         (l_bflow_method_code = 'PRIOR_ENTRY')
22973       )
22974    THEN
22975       IF
22976       --
22977       1 = 2
22978       --
22979       THEN
22980       xla_accounting_err_pkg.build_message
22981                                     (p_appli_s_name            => 'XLA'
22982                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22983                                     ,p_token_1                 => 'LINE_NUMBER'
22984                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
22985                                     ,p_token_2                 => 'LINE_TYPE_NAME'
22986                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
22987                                                                              l_component_type
22988                                                                             ,l_component_code
22989                                                                             ,l_component_type_code
22990                                                                             ,l_component_appl_id
22991                                                                             ,l_amb_context_code
22992                                                                             ,l_entity_code
22993                                                                             ,l_event_class_code
22994                                                                            )
22995                                     ,p_token_3                 => 'OWNER'
22996                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
22997                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
22998                                                                           ,p_lookup_code    => l_component_type_code
22999                                                                          )
23000                                     ,p_token_4                 => 'PRODUCT_NAME'
23001                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
23002                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
23003                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
23004                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
23005                                     ,p_ae_header_id            =>  NULL
23006                                        );
23007 
23008         IF (C_LEVEL_ERROR>= g_log_level) THEN
23009                  trace
23010                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23011                       ,p_level    => C_LEVEL_ERROR
23012                       ,p_module   => l_log_module);
23013         END IF;
23014       END IF;
23015    END IF;
23016    --
23017    --
23018    ------------------------------------------------------------------------------------------------
23019    -- 4219869 Business Flow
23020    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
23021    -- Prior Entry.  Currently, the following code is always generated.
23022    ------------------------------------------------------------------------------------------------
23023    XLA_AE_LINES_PKG.ValidateCurrentLine;
23024 
23025    ------------------------------------------------------------------------------------
23026    -- 4219869 Business Flow
23027    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
23028    ------------------------------------------------------------------------------------
23029    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23030 
23031    ----------------------------------------------------------------------------------
23032    -- 4219869 Business Flow
23033    -- Update journal entry status -- Need to generate this within IF <condition>
23034    ----------------------------------------------------------------------------------
23035    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23036          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
23037          ,p_balance_type_code => l_balance_type_code
23038          );
23039 
23040    -------------------------------------------------------------------------------------------
23041    -- 4262811 - Generate the Accrual Reversal lines
23042    -------------------------------------------------------------------------------------------
23043    BEGIN
23044       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
23045                               (g_array_event(p_event_id).array_value_num('header_index'));
23046       IF l_acc_rev_flag IS NULL THEN
23047          l_acc_rev_flag := 'N';
23048       END IF;
23049    EXCEPTION
23050       WHEN OTHERS THEN
23051          l_acc_rev_flag := 'N';
23052    END;
23053    --
23054    IF (l_acc_rev_flag = 'Y') THEN
23055 
23056        -- 4645092  ------------------------------------------------------------------------------
23057        -- To allow MPA report to determine if it should generate report process
23058        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
23059        ------------------------------------------------------------------------------------------
23060 
23061        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
23062        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
23063    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
23064    -- call ADRs
23065    -- Bug 4922099
23066    --
23067    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23068         (NVL(l_actual_upg_option, 'N') = 'O') OR
23069         (NVL(l_enc_upg_option, 'N') = 'O')
23070       )
23071    THEN
23072    NULL;
23073    --
23074    --
23075    
23076   l_ccid := AcctDerRule_4(
23077            p_application_id           => p_application_id
23078          , p_ae_header_id             => l_ae_header_id 
23079 , p_source_4 => p_source_4
23080          , x_transaction_coa_id       => l_adr_transaction_coa_id
23081          , x_accounting_coa_id        => l_adr_accounting_coa_id
23082          , x_value_type_code          => l_adr_value_type_code
23083          , p_side                     => 'NA'
23084    );
23085 
23086    xla_ae_lines_pkg.set_ccid(
23087     p_code_combination_id          => l_ccid
23088   , p_value_type_code              => l_adr_value_type_code
23089   , p_transaction_coa_id           => l_adr_transaction_coa_id
23090   , p_accounting_coa_id            => l_adr_accounting_coa_id
23091   , p_adr_code                     => 'CST_DEFAULT'
23092   , p_adr_type_code                => 'S'
23093   , p_component_type               => l_component_type
23094   , p_component_code               => l_component_code
23095   , p_component_type_code          => l_component_type_code
23096   , p_component_appl_id            => l_component_appl_id
23097   , p_amb_context_code             => l_amb_context_code
23098   , p_side                         => 'NA'
23099   );
23100 
23101 
23102    --
23103    --
23104    END IF;
23105 
23106        --
23107        -- Update the line information that should be overwritten
23108        --
23109        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
23110                                          p_header_num   => 1);
23111        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
23112 
23113        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
23114 
23115        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
23116           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
23117        END IF;
23118 
23119       --
23120       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
23121       --
23122       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
23123           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
23124       ELSE
23125           ---------------------------------------------------------------------------------------------------
23126           -- 4262811a Switch Sign
23127           ---------------------------------------------------------------------------------------------------
23128           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
23129           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23130                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23131           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23132                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23133           -- 5132302
23134           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
23135                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23136 
23137       END IF;
23138 
23139       -- 4955764
23140       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23141       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
23142 
23143 
23144       XLA_AE_LINES_PKG.ValidateCurrentLine;
23145       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23146 
23147       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23148                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
23149                ,p_balance_type_code => l_balance_type_code);
23150 
23151    END IF;
23152 
23153    -----------------------------------------------------------------------------------------
23154    -- 4262811 Multiperiod Accounting
23155    -----------------------------------------------------------------------------------------
23156      -- No MPA option is assigned.
23157 
23158 
23159 END IF;
23160 END IF;
23161 --
23162 
23163 --
23164 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23165    trace
23166       (p_msg      => 'END of AcctLineType_44'
23167       ,p_level    => C_LEVEL_PROCEDURE
23168       ,p_module   => l_log_module);
23169 END IF;
23170 --
23171 EXCEPTION
23172   WHEN xla_exceptions_pkg.application_exception THEN
23173       RAISE;
23174   WHEN OTHERS THEN
23175        xla_exceptions_pkg.raise_message
23176            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_44');
23177 END AcctLineType_44;
23178 --
23179 
23180 ---------------------------------------
23181 --
23182 -- PRIVATE FUNCTION
23183 --         AcctLineType_45
23184 --
23185 ---------------------------------------
23186 PROCEDURE AcctLineType_45 (
23187   p_application_id        IN NUMBER
23188  ,p_event_id              IN NUMBER
23189  ,p_calculate_acctd_flag  IN VARCHAR2
23190  ,p_calculate_g_l_flag    IN VARCHAR2
23191  ,p_actual_flag           IN OUT VARCHAR2
23192  ,p_balance_type_code     OUT VARCHAR2
23193  ,p_gain_or_loss_ref      OUT VARCHAR2
23194  
23195 --Cost Management Default Account
23196  , p_source_4            IN NUMBER
23197 --DISTRIBUTION_IDENTIFIER
23198  , p_source_11            IN NUMBER
23199 --Distribution Type
23200  , p_source_12            IN VARCHAR2
23201  , p_source_12_meaning    IN VARCHAR2
23202 --Entered Currency Code
23203  , p_source_15            IN VARCHAR2
23204 --Entered Amount
23205  , p_source_18            IN NUMBER
23206 --Currency Conversion Date
23207  , p_source_19            IN DATE
23208 --Currency Conversion Rate
23209  , p_source_20            IN NUMBER
23210 --Currency Conversion Type
23211  , p_source_21            IN VARCHAR2
23212 --Accounted Amount
23213  , p_source_22            IN NUMBER
23214 --Accounting Line Type
23215  , p_source_24            IN NUMBER
23216 )
23217 IS
23218 
23219 l_component_type              VARCHAR2(80);
23220 l_component_code              VARCHAR2(30);
23221 l_component_type_code         VARCHAR2(1);
23222 l_component_appl_id           INTEGER;
23223 l_amb_context_code            VARCHAR2(30);
23224 l_entity_code                 VARCHAR2(30);
23225 l_event_class_code            VARCHAR2(30);
23226 l_ae_header_id                NUMBER;
23227 l_event_type_code             VARCHAR2(30);
23228 l_line_definition_code        VARCHAR2(30);
23229 l_line_definition_owner_code  VARCHAR2(1);
23230 --
23231 -- adr variables
23232 l_segment                     VARCHAR2(30);
23233 l_ccid                        NUMBER;
23234 l_adr_transaction_coa_id      NUMBER;
23235 l_adr_accounting_coa_id       NUMBER;
23236 l_adr_flexfield_segment_code  VARCHAR2(30);
23237 l_adr_flex_value_set_id       NUMBER;
23238 l_adr_value_type_code         VARCHAR2(30);
23239 l_adr_value_combination_id    NUMBER;
23240 l_adr_value_segment_code      VARCHAR2(30);
23241 
23242 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
23243 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
23244 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
23245 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
23246 
23247 -- 4262811 Variables ------------------------------------------------------------------------------------------
23248 l_entered_amt_idx             NUMBER;
23249 l_accted_amt_idx              NUMBER;
23250 l_acc_rev_flag                VARCHAR2(1);
23251 l_accrual_line_num            NUMBER;
23252 l_tmp_amt                     NUMBER;
23253 l_acc_rev_natural_side_code   VARCHAR2(1);
23254 
23255 l_num_entries                 NUMBER;
23256 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
23257 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
23258 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
23259 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
23260 l_recog_line_1                NUMBER;
23261 l_recog_line_2                NUMBER;
23262 
23263 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
23264 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
23265 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
23266 
23267 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
23268 
23269 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
23270 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
23271 
23272 ---------------------------------------------------------------------------------------------------------------
23273 
23274 
23275 --
23276 -- bulk performance
23277 --
23278 l_balance_type_code           VARCHAR2(1);
23279 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
23280 l_log_module                  VARCHAR2(240);
23281 
23282 --
23283 -- Upgrade strategy
23284 --
23285 l_actual_upg_option           VARCHAR2(1);
23286 l_enc_upg_option           VARCHAR2(1);
23287 
23288 --
23289 BEGIN
23290 --
23291 IF g_log_enabled THEN
23292       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_45';
23293 END IF;
23294 --
23295 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23296 
23297       trace
23298          (p_msg      => 'BEGIN of AcctLineType_45'
23299          ,p_level    => C_LEVEL_PROCEDURE
23300          ,p_module   => l_log_module);
23301 
23302 END IF;
23303 --
23304 l_component_type             := 'AMB_JLT';
23305 l_component_code             := 'COST_VARIANCE';
23306 l_component_type_code        := 'S';
23307 l_component_appl_id          :=  707;
23308 l_amb_context_code           := 'DEFAULT';
23309 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
23310 l_event_class_code           := 'CON_INV_OWNR_TXFR';
23311 l_event_type_code            := 'CON_INV_OWNR_TXFR_ALL';
23312 l_line_definition_owner_code := 'S';
23313 l_line_definition_code       := 'CON_INV_OWNR_TXFR';
23314 --
23315 l_balance_type_code          := 'A';
23316 l_segment                     := NULL;
23317 l_ccid                        := NULL;
23318 l_adr_transaction_coa_id      := NULL;
23319 l_adr_accounting_coa_id       := NULL;
23320 l_adr_flexfield_segment_code  := NULL;
23321 l_adr_flex_value_set_id       := NULL;
23322 l_adr_value_type_code         := NULL;
23323 l_adr_value_combination_id    := NULL;
23324 l_adr_value_segment_code      := NULL;
23325 
23326 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
23327 l_bflow_class_code           := '';    -- 4219869 Business Flow
23328 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
23329 l_budgetary_control_flag     := 'N';
23330 
23331 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
23332 l_bflow_applied_to_amt       := NULL; -- 5132302
23333 l_entered_amt_idx            := NULL;          -- 4262811
23334 l_accted_amt_idx             := NULL;          -- 4262811
23335 l_acc_rev_flag               := NULL;          -- 4262811
23336 l_accrual_line_num           := NULL;          -- 4262811
23337 l_tmp_amt                    := NULL;          -- 4262811
23338 --
23339  
23340 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
23341     l_balance_type_code <> 'B' THEN
23342 IF NVL(p_source_24,9E125) =  13
23343  THEN 
23344 
23345    --
23346    XLA_AE_LINES_PKG.SetNewLine;
23347 
23348    p_balance_type_code          := l_balance_type_code;
23349    -- set the flag so later we will know whether the gain loss line needs to be created
23350    
23351    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
23352      p_actual_flag :='A';
23353    END IF;
23354 
23355    --
23356    -- bulk performance
23357    --
23358    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
23359                                       p_header_num   => 0); -- 4262811
23360    --
23361    -- set accounting line options
23362    --
23363    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
23364            p_natural_side_code          => 'D'
23365          , p_gain_or_loss_flag          => 'N'
23366          , p_gl_transfer_mode_code      => 'S'
23367          , p_acct_entry_type_code       => 'A'
23368          , p_switch_side_flag           => 'Y'
23369          , p_merge_duplicate_code       => 'N'
23370          );
23371    --
23372    l_acc_rev_natural_side_code := 'C';  -- 4262811
23373    -- 
23374    --
23375    -- set accounting line type info
23376    --
23377    xla_ae_lines_pkg.SetAcctLineType
23378       (p_component_type             => l_component_type
23379       ,p_event_type_code            => l_event_type_code
23380       ,p_line_definition_owner_code => l_line_definition_owner_code
23381       ,p_line_definition_code       => l_line_definition_code
23382       ,p_accounting_line_code       => l_component_code
23383       ,p_accounting_line_type_code  => l_component_type_code
23384       ,p_accounting_line_appl_id    => l_component_appl_id
23385       ,p_amb_context_code           => l_amb_context_code
23386       ,p_entity_code                => l_entity_code
23387       ,p_event_class_code           => l_event_class_code);
23388    --
23389    -- set accounting class
23390    --
23391    xla_ae_lines_pkg.SetAcctClass(
23392            p_accounting_class_code  => 'COST_VARIANCE'
23393          , p_ae_header_id           => l_ae_header_id
23394          );
23395 
23396    --
23397    -- set rounding class
23398    --
23399    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
23400                       'COST_VARIANCE';
23401 
23402    --
23403    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
23404    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
23405    --
23406    -- bulk performance
23407    --
23408    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
23409 
23410    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
23411       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
23412 
23413    -- 4955764
23414    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23415       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
23416 
23417    -- 4458381 Public Sector Enh
23418    
23419    --
23420    -- set accounting attributes for the line type
23421    --
23422    l_entered_amt_idx := 3;
23423    l_accted_amt_idx  := 8;
23424    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
23425    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
23426    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
23427    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
23428    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
23429    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
23430    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
23431    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
23432    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
23433    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
23434    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
23435    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
23436    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
23437    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
23438    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
23439    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
23440    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
23441 
23442    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
23443    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
23444 
23445    ---------------------------------------------------------------------------------------------------------------
23446    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
23447    ---------------------------------------------------------------------------------------------------------------
23448    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
23449 
23450    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23451    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23452 
23453    IF xla_accounting_cache_pkg.GetValueChar
23454          (p_source_code         => 'LEDGER_CATEGORY_CODE'
23455          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
23456    AND l_bflow_method_code = 'PRIOR_ENTRY'
23457 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
23458    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
23459          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
23460        )
23461    THEN
23462          xla_ae_lines_pkg.BflowUpgEntry
23463            (p_business_method_code    => l_bflow_method_code
23464            ,p_business_class_code     => l_bflow_class_code
23465            ,p_balance_type            => l_balance_type_code);
23466    ELSE
23467       NULL;
23468 -- No business flow processing for business flow method of NONE.
23469    END IF;
23470 
23471    --
23472    -- call analytical criteria
23473    --
23474    
23475    --
23476    -- call description
23477    --
23478    -- No description or it is inherited.
23479    --
23480    -- call ADRs
23481    -- Bug 4922099
23482    --
23483    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23484         (NVL(l_actual_upg_option, 'N') = 'O') OR
23485         (NVL(l_enc_upg_option, 'N') = 'O')
23486       )
23487    THEN
23488    NULL;
23489    --
23490    --
23491    
23492   l_ccid := AcctDerRule_4(
23493            p_application_id           => p_application_id
23494          , p_ae_header_id             => l_ae_header_id 
23495 , p_source_4 => p_source_4
23496          , x_transaction_coa_id       => l_adr_transaction_coa_id
23497          , x_accounting_coa_id        => l_adr_accounting_coa_id
23498          , x_value_type_code          => l_adr_value_type_code
23499          , p_side                     => 'NA'
23500    );
23501 
23502    xla_ae_lines_pkg.set_ccid(
23503     p_code_combination_id          => l_ccid
23504   , p_value_type_code              => l_adr_value_type_code
23505   , p_transaction_coa_id           => l_adr_transaction_coa_id
23506   , p_accounting_coa_id            => l_adr_accounting_coa_id
23507   , p_adr_code                     => 'CST_DEFAULT'
23508   , p_adr_type_code                => 'S'
23509   , p_component_type               => l_component_type
23510   , p_component_code               => l_component_code
23511   , p_component_type_code          => l_component_type_code
23512   , p_component_appl_id            => l_component_appl_id
23513   , p_amb_context_code             => l_amb_context_code
23514   , p_side                         => 'NA'
23515   );
23516 
23517 
23518    --
23519    --
23520    END IF;
23521    --
23522    -- Bug 4922099
23523    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
23524           (NVL(l_enc_upg_option, 'N') = 'O')
23525         ) AND
23526         (l_bflow_method_code = 'PRIOR_ENTRY')
23527       )
23528    THEN
23529       IF
23530       --
23531       1 = 2
23532       --
23533       THEN
23534       xla_accounting_err_pkg.build_message
23535                                     (p_appli_s_name            => 'XLA'
23536                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23537                                     ,p_token_1                 => 'LINE_NUMBER'
23538                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
23539                                     ,p_token_2                 => 'LINE_TYPE_NAME'
23540                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
23541                                                                              l_component_type
23542                                                                             ,l_component_code
23543                                                                             ,l_component_type_code
23544                                                                             ,l_component_appl_id
23545                                                                             ,l_amb_context_code
23546                                                                             ,l_entity_code
23547                                                                             ,l_event_class_code
23548                                                                            )
23549                                     ,p_token_3                 => 'OWNER'
23550                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
23551                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
23552                                                                           ,p_lookup_code    => l_component_type_code
23553                                                                          )
23554                                     ,p_token_4                 => 'PRODUCT_NAME'
23555                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
23556                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
23557                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
23558                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
23559                                     ,p_ae_header_id            =>  NULL
23560                                        );
23561 
23562         IF (C_LEVEL_ERROR>= g_log_level) THEN
23563                  trace
23564                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23565                       ,p_level    => C_LEVEL_ERROR
23566                       ,p_module   => l_log_module);
23567         END IF;
23568       END IF;
23569    END IF;
23570    --
23571    --
23572    ------------------------------------------------------------------------------------------------
23573    -- 4219869 Business Flow
23574    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
23575    -- Prior Entry.  Currently, the following code is always generated.
23576    ------------------------------------------------------------------------------------------------
23577    XLA_AE_LINES_PKG.ValidateCurrentLine;
23578 
23579    ------------------------------------------------------------------------------------
23580    -- 4219869 Business Flow
23581    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
23582    ------------------------------------------------------------------------------------
23583    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23584 
23585    ----------------------------------------------------------------------------------
23586    -- 4219869 Business Flow
23587    -- Update journal entry status -- Need to generate this within IF <condition>
23588    ----------------------------------------------------------------------------------
23589    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23590          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
23591          ,p_balance_type_code => l_balance_type_code
23592          );
23593 
23594    -------------------------------------------------------------------------------------------
23595    -- 4262811 - Generate the Accrual Reversal lines
23596    -------------------------------------------------------------------------------------------
23597    BEGIN
23598       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
23599                               (g_array_event(p_event_id).array_value_num('header_index'));
23600       IF l_acc_rev_flag IS NULL THEN
23601          l_acc_rev_flag := 'N';
23602       END IF;
23603    EXCEPTION
23604       WHEN OTHERS THEN
23605          l_acc_rev_flag := 'N';
23606    END;
23607    --
23608    IF (l_acc_rev_flag = 'Y') THEN
23609 
23610        -- 4645092  ------------------------------------------------------------------------------
23611        -- To allow MPA report to determine if it should generate report process
23612        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
23613        ------------------------------------------------------------------------------------------
23614 
23615        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
23616        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
23617    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
23618    -- call ADRs
23619    -- Bug 4922099
23620    --
23621    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23622         (NVL(l_actual_upg_option, 'N') = 'O') OR
23623         (NVL(l_enc_upg_option, 'N') = 'O')
23624       )
23625    THEN
23626    NULL;
23627    --
23628    --
23629    
23630   l_ccid := AcctDerRule_4(
23631            p_application_id           => p_application_id
23632          , p_ae_header_id             => l_ae_header_id 
23633 , p_source_4 => p_source_4
23634          , x_transaction_coa_id       => l_adr_transaction_coa_id
23635          , x_accounting_coa_id        => l_adr_accounting_coa_id
23636          , x_value_type_code          => l_adr_value_type_code
23637          , p_side                     => 'NA'
23638    );
23639 
23640    xla_ae_lines_pkg.set_ccid(
23641     p_code_combination_id          => l_ccid
23642   , p_value_type_code              => l_adr_value_type_code
23643   , p_transaction_coa_id           => l_adr_transaction_coa_id
23644   , p_accounting_coa_id            => l_adr_accounting_coa_id
23645   , p_adr_code                     => 'CST_DEFAULT'
23646   , p_adr_type_code                => 'S'
23647   , p_component_type               => l_component_type
23648   , p_component_code               => l_component_code
23649   , p_component_type_code          => l_component_type_code
23650   , p_component_appl_id            => l_component_appl_id
23651   , p_amb_context_code             => l_amb_context_code
23652   , p_side                         => 'NA'
23653   );
23654 
23655 
23656    --
23657    --
23658    END IF;
23659 
23660        --
23661        -- Update the line information that should be overwritten
23662        --
23663        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
23664                                          p_header_num   => 1);
23665        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
23666 
23667        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
23668 
23669        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
23670           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
23671        END IF;
23672 
23673       --
23674       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
23675       --
23676       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
23677           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
23678       ELSE
23679           ---------------------------------------------------------------------------------------------------
23680           -- 4262811a Switch Sign
23681           ---------------------------------------------------------------------------------------------------
23682           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
23683           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23684                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23685           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23686                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23687           -- 5132302
23688           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
23689                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23690 
23691       END IF;
23692 
23693       -- 4955764
23694       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23695       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
23696 
23697 
23698       XLA_AE_LINES_PKG.ValidateCurrentLine;
23699       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23700 
23701       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23702                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
23703                ,p_balance_type_code => l_balance_type_code);
23704 
23705    END IF;
23706 
23707    -----------------------------------------------------------------------------------------
23708    -- 4262811 Multiperiod Accounting
23709    -----------------------------------------------------------------------------------------
23710      -- No MPA option is assigned.
23711 
23712 
23713 END IF;
23714 END IF;
23715 --
23716 
23717 --
23718 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23719    trace
23720       (p_msg      => 'END of AcctLineType_45'
23721       ,p_level    => C_LEVEL_PROCEDURE
23722       ,p_module   => l_log_module);
23723 END IF;
23724 --
23725 EXCEPTION
23726   WHEN xla_exceptions_pkg.application_exception THEN
23727       RAISE;
23728   WHEN OTHERS THEN
23729        xla_exceptions_pkg.raise_message
23730            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_45');
23731 END AcctLineType_45;
23732 --
23733 
23734 ---------------------------------------
23735 --
23736 -- PRIVATE FUNCTION
23737 --         AcctLineType_46
23738 --
23739 ---------------------------------------
23740 PROCEDURE AcctLineType_46 (
23741   p_application_id        IN NUMBER
23742  ,p_event_id              IN NUMBER
23743  ,p_calculate_acctd_flag  IN VARCHAR2
23744  ,p_calculate_g_l_flag    IN VARCHAR2
23745  ,p_actual_flag           IN OUT VARCHAR2
23746  ,p_balance_type_code     OUT VARCHAR2
23747  ,p_gain_or_loss_ref      OUT VARCHAR2
23748  
23749 --Cost Management Default Account
23750  , p_source_4            IN NUMBER
23751 --DISTRIBUTION_IDENTIFIER
23752  , p_source_11            IN NUMBER
23753 --Distribution Type
23754  , p_source_12            IN VARCHAR2
23755  , p_source_12_meaning    IN VARCHAR2
23756 --Entered Currency Code
23757  , p_source_15            IN VARCHAR2
23758 --Entered Amount
23759  , p_source_18            IN NUMBER
23760 --Currency Conversion Date
23761  , p_source_19            IN DATE
23762 --Currency Conversion Rate
23763  , p_source_20            IN NUMBER
23764 --Currency Conversion Type
23765  , p_source_21            IN VARCHAR2
23766 --Accounted Amount
23767  , p_source_22            IN NUMBER
23768 --Accounting Line Type
23769  , p_source_24            IN NUMBER
23770 )
23771 IS
23772 
23773 l_component_type              VARCHAR2(80);
23774 l_component_code              VARCHAR2(30);
23775 l_component_type_code         VARCHAR2(1);
23776 l_component_appl_id           INTEGER;
23777 l_amb_context_code            VARCHAR2(30);
23778 l_entity_code                 VARCHAR2(30);
23779 l_event_class_code            VARCHAR2(30);
23780 l_ae_header_id                NUMBER;
23781 l_event_type_code             VARCHAR2(30);
23782 l_line_definition_code        VARCHAR2(30);
23783 l_line_definition_owner_code  VARCHAR2(1);
23784 --
23785 -- adr variables
23786 l_segment                     VARCHAR2(30);
23787 l_ccid                        NUMBER;
23788 l_adr_transaction_coa_id      NUMBER;
23789 l_adr_accounting_coa_id       NUMBER;
23790 l_adr_flexfield_segment_code  VARCHAR2(30);
23791 l_adr_flex_value_set_id       NUMBER;
23792 l_adr_value_type_code         VARCHAR2(30);
23793 l_adr_value_combination_id    NUMBER;
23794 l_adr_value_segment_code      VARCHAR2(30);
23795 
23796 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
23797 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
23798 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
23799 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
23800 
23801 -- 4262811 Variables ------------------------------------------------------------------------------------------
23802 l_entered_amt_idx             NUMBER;
23803 l_accted_amt_idx              NUMBER;
23804 l_acc_rev_flag                VARCHAR2(1);
23805 l_accrual_line_num            NUMBER;
23806 l_tmp_amt                     NUMBER;
23807 l_acc_rev_natural_side_code   VARCHAR2(1);
23808 
23809 l_num_entries                 NUMBER;
23810 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
23811 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
23812 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
23813 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
23814 l_recog_line_1                NUMBER;
23815 l_recog_line_2                NUMBER;
23816 
23817 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
23818 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
23819 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
23820 
23821 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
23822 
23823 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
23824 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
23825 
23826 ---------------------------------------------------------------------------------------------------------------
23827 
23828 
23829 --
23830 -- bulk performance
23831 --
23832 l_balance_type_code           VARCHAR2(1);
23833 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
23834 l_log_module                  VARCHAR2(240);
23835 
23836 --
23837 -- Upgrade strategy
23838 --
23839 l_actual_upg_option           VARCHAR2(1);
23840 l_enc_upg_option           VARCHAR2(1);
23841 
23842 --
23843 BEGIN
23844 --
23845 IF g_log_enabled THEN
23846       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_46';
23847 END IF;
23848 --
23849 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23850 
23851       trace
23852          (p_msg      => 'BEGIN of AcctLineType_46'
23853          ,p_level    => C_LEVEL_PROCEDURE
23854          ,p_module   => l_log_module);
23855 
23856 END IF;
23857 --
23858 l_component_type             := 'AMB_JLT';
23859 l_component_code             := 'COST_VARIANCE';
23860 l_component_type_code        := 'S';
23861 l_component_appl_id          :=  707;
23862 l_amb_context_code           := 'DEFAULT';
23863 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
23864 l_event_class_code           := 'USER_DEFINE';
23865 l_event_type_code            := 'UMISC_RCPT';
23866 l_line_definition_owner_code := 'S';
23867 l_line_definition_code       := 'USER_RCPT';
23868 --
23869 l_balance_type_code          := 'A';
23870 l_segment                     := NULL;
23871 l_ccid                        := NULL;
23872 l_adr_transaction_coa_id      := NULL;
23873 l_adr_accounting_coa_id       := NULL;
23874 l_adr_flexfield_segment_code  := NULL;
23875 l_adr_flex_value_set_id       := NULL;
23876 l_adr_value_type_code         := NULL;
23877 l_adr_value_combination_id    := NULL;
23878 l_adr_value_segment_code      := NULL;
23879 
23880 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
23881 l_bflow_class_code           := '';    -- 4219869 Business Flow
23882 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
23883 l_budgetary_control_flag     := 'N';
23884 
23885 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
23886 l_bflow_applied_to_amt       := NULL; -- 5132302
23887 l_entered_amt_idx            := NULL;          -- 4262811
23888 l_accted_amt_idx             := NULL;          -- 4262811
23889 l_acc_rev_flag               := NULL;          -- 4262811
23890 l_accrual_line_num           := NULL;          -- 4262811
23891 l_tmp_amt                    := NULL;          -- 4262811
23892 --
23893  
23894 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
23895     l_balance_type_code <> 'B' THEN
23896 IF NVL(p_source_24,9E125) =  13
23897  THEN 
23898 
23899    --
23900    XLA_AE_LINES_PKG.SetNewLine;
23901 
23902    p_balance_type_code          := l_balance_type_code;
23903    -- set the flag so later we will know whether the gain loss line needs to be created
23904    
23905    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
23906      p_actual_flag :='A';
23907    END IF;
23908 
23909    --
23910    -- bulk performance
23911    --
23912    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
23913                                       p_header_num   => 0); -- 4262811
23914    --
23915    -- set accounting line options
23916    --
23917    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
23918            p_natural_side_code          => 'D'
23919          , p_gain_or_loss_flag          => 'N'
23920          , p_gl_transfer_mode_code      => 'S'
23921          , p_acct_entry_type_code       => 'A'
23922          , p_switch_side_flag           => 'Y'
23923          , p_merge_duplicate_code       => 'N'
23924          );
23925    --
23926    l_acc_rev_natural_side_code := 'C';  -- 4262811
23927    -- 
23928    --
23929    -- set accounting line type info
23930    --
23931    xla_ae_lines_pkg.SetAcctLineType
23932       (p_component_type             => l_component_type
23933       ,p_event_type_code            => l_event_type_code
23934       ,p_line_definition_owner_code => l_line_definition_owner_code
23935       ,p_line_definition_code       => l_line_definition_code
23936       ,p_accounting_line_code       => l_component_code
23937       ,p_accounting_line_type_code  => l_component_type_code
23938       ,p_accounting_line_appl_id    => l_component_appl_id
23939       ,p_amb_context_code           => l_amb_context_code
23940       ,p_entity_code                => l_entity_code
23941       ,p_event_class_code           => l_event_class_code);
23942    --
23943    -- set accounting class
23944    --
23945    xla_ae_lines_pkg.SetAcctClass(
23946            p_accounting_class_code  => 'COST_VARIANCE'
23947          , p_ae_header_id           => l_ae_header_id
23948          );
23949 
23950    --
23951    -- set rounding class
23952    --
23953    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
23954                       'COST_VARIANCE';
23955 
23956    --
23957    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
23958    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
23959    --
23960    -- bulk performance
23961    --
23962    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
23963 
23964    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
23965       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
23966 
23967    -- 4955764
23968    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23969       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
23970 
23971    -- 4458381 Public Sector Enh
23972    
23973    --
23974    -- set accounting attributes for the line type
23975    --
23976    l_entered_amt_idx := 3;
23977    l_accted_amt_idx  := 8;
23978    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
23979    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
23980    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
23981    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
23982    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
23983    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
23984    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
23985    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
23986    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
23987    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
23988    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
23989    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
23990    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
23991    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
23992    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
23993    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
23994    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
23995 
23996    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
23997    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
23998 
23999    ---------------------------------------------------------------------------------------------------------------
24000    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
24001    ---------------------------------------------------------------------------------------------------------------
24002    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
24003 
24004    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24005    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24006 
24007    IF xla_accounting_cache_pkg.GetValueChar
24008          (p_source_code         => 'LEDGER_CATEGORY_CODE'
24009          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
24010    AND l_bflow_method_code = 'PRIOR_ENTRY'
24011 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
24012    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
24013          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
24014        )
24015    THEN
24016          xla_ae_lines_pkg.BflowUpgEntry
24017            (p_business_method_code    => l_bflow_method_code
24018            ,p_business_class_code     => l_bflow_class_code
24019            ,p_balance_type            => l_balance_type_code);
24020    ELSE
24021       NULL;
24022 -- No business flow processing for business flow method of NONE.
24023    END IF;
24024 
24025    --
24026    -- call analytical criteria
24027    --
24028    
24029    --
24030    -- call description
24031    --
24032    -- No description or it is inherited.
24033    --
24034    -- call ADRs
24035    -- Bug 4922099
24036    --
24037    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24038         (NVL(l_actual_upg_option, 'N') = 'O') OR
24039         (NVL(l_enc_upg_option, 'N') = 'O')
24040       )
24041    THEN
24042    NULL;
24043    --
24044    --
24045    
24046   l_ccid := AcctDerRule_4(
24047            p_application_id           => p_application_id
24048          , p_ae_header_id             => l_ae_header_id 
24049 , p_source_4 => p_source_4
24050          , x_transaction_coa_id       => l_adr_transaction_coa_id
24051          , x_accounting_coa_id        => l_adr_accounting_coa_id
24052          , x_value_type_code          => l_adr_value_type_code
24053          , p_side                     => 'NA'
24054    );
24055 
24056    xla_ae_lines_pkg.set_ccid(
24057     p_code_combination_id          => l_ccid
24058   , p_value_type_code              => l_adr_value_type_code
24059   , p_transaction_coa_id           => l_adr_transaction_coa_id
24060   , p_accounting_coa_id            => l_adr_accounting_coa_id
24061   , p_adr_code                     => 'CST_DEFAULT'
24062   , p_adr_type_code                => 'S'
24063   , p_component_type               => l_component_type
24064   , p_component_code               => l_component_code
24065   , p_component_type_code          => l_component_type_code
24066   , p_component_appl_id            => l_component_appl_id
24067   , p_amb_context_code             => l_amb_context_code
24068   , p_side                         => 'NA'
24069   );
24070 
24071 
24072    --
24073    --
24074    END IF;
24075    --
24076    -- Bug 4922099
24077    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
24078           (NVL(l_enc_upg_option, 'N') = 'O')
24079         ) AND
24080         (l_bflow_method_code = 'PRIOR_ENTRY')
24081       )
24082    THEN
24083       IF
24084       --
24085       1 = 2
24086       --
24087       THEN
24088       xla_accounting_err_pkg.build_message
24089                                     (p_appli_s_name            => 'XLA'
24090                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24091                                     ,p_token_1                 => 'LINE_NUMBER'
24092                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
24093                                     ,p_token_2                 => 'LINE_TYPE_NAME'
24094                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
24095                                                                              l_component_type
24096                                                                             ,l_component_code
24097                                                                             ,l_component_type_code
24098                                                                             ,l_component_appl_id
24099                                                                             ,l_amb_context_code
24100                                                                             ,l_entity_code
24101                                                                             ,l_event_class_code
24102                                                                            )
24103                                     ,p_token_3                 => 'OWNER'
24104                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
24105                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
24106                                                                           ,p_lookup_code    => l_component_type_code
24107                                                                          )
24108                                     ,p_token_4                 => 'PRODUCT_NAME'
24109                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
24110                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
24111                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
24112                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
24113                                     ,p_ae_header_id            =>  NULL
24114                                        );
24115 
24116         IF (C_LEVEL_ERROR>= g_log_level) THEN
24117                  trace
24118                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24119                       ,p_level    => C_LEVEL_ERROR
24120                       ,p_module   => l_log_module);
24121         END IF;
24122       END IF;
24123    END IF;
24124    --
24125    --
24126    ------------------------------------------------------------------------------------------------
24127    -- 4219869 Business Flow
24128    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
24129    -- Prior Entry.  Currently, the following code is always generated.
24130    ------------------------------------------------------------------------------------------------
24131    XLA_AE_LINES_PKG.ValidateCurrentLine;
24132 
24133    ------------------------------------------------------------------------------------
24134    -- 4219869 Business Flow
24135    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
24136    ------------------------------------------------------------------------------------
24137    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24138 
24139    ----------------------------------------------------------------------------------
24140    -- 4219869 Business Flow
24141    -- Update journal entry status -- Need to generate this within IF <condition>
24142    ----------------------------------------------------------------------------------
24143    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24144          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
24145          ,p_balance_type_code => l_balance_type_code
24146          );
24147 
24148    -------------------------------------------------------------------------------------------
24149    -- 4262811 - Generate the Accrual Reversal lines
24150    -------------------------------------------------------------------------------------------
24151    BEGIN
24152       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
24153                               (g_array_event(p_event_id).array_value_num('header_index'));
24154       IF l_acc_rev_flag IS NULL THEN
24155          l_acc_rev_flag := 'N';
24156       END IF;
24157    EXCEPTION
24158       WHEN OTHERS THEN
24159          l_acc_rev_flag := 'N';
24160    END;
24161    --
24162    IF (l_acc_rev_flag = 'Y') THEN
24163 
24164        -- 4645092  ------------------------------------------------------------------------------
24165        -- To allow MPA report to determine if it should generate report process
24166        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
24167        ------------------------------------------------------------------------------------------
24168 
24169        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
24170        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
24171    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
24172    -- call ADRs
24173    -- Bug 4922099
24174    --
24175    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24176         (NVL(l_actual_upg_option, 'N') = 'O') OR
24177         (NVL(l_enc_upg_option, 'N') = 'O')
24178       )
24179    THEN
24180    NULL;
24181    --
24182    --
24183    
24184   l_ccid := AcctDerRule_4(
24185            p_application_id           => p_application_id
24186          , p_ae_header_id             => l_ae_header_id 
24187 , p_source_4 => p_source_4
24188          , x_transaction_coa_id       => l_adr_transaction_coa_id
24189          , x_accounting_coa_id        => l_adr_accounting_coa_id
24190          , x_value_type_code          => l_adr_value_type_code
24191          , p_side                     => 'NA'
24192    );
24193 
24194    xla_ae_lines_pkg.set_ccid(
24195     p_code_combination_id          => l_ccid
24196   , p_value_type_code              => l_adr_value_type_code
24197   , p_transaction_coa_id           => l_adr_transaction_coa_id
24198   , p_accounting_coa_id            => l_adr_accounting_coa_id
24199   , p_adr_code                     => 'CST_DEFAULT'
24200   , p_adr_type_code                => 'S'
24201   , p_component_type               => l_component_type
24202   , p_component_code               => l_component_code
24203   , p_component_type_code          => l_component_type_code
24204   , p_component_appl_id            => l_component_appl_id
24205   , p_amb_context_code             => l_amb_context_code
24206   , p_side                         => 'NA'
24207   );
24208 
24209 
24210    --
24211    --
24212    END IF;
24213 
24214        --
24215        -- Update the line information that should be overwritten
24216        --
24217        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
24218                                          p_header_num   => 1);
24219        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
24220 
24221        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
24222 
24223        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
24224           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
24225        END IF;
24226 
24227       --
24228       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
24229       --
24230       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
24231           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
24232       ELSE
24233           ---------------------------------------------------------------------------------------------------
24234           -- 4262811a Switch Sign
24235           ---------------------------------------------------------------------------------------------------
24236           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
24237           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24238                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24239           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24240                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24241           -- 5132302
24242           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
24243                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24244 
24245       END IF;
24246 
24247       -- 4955764
24248       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24249       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
24250 
24251 
24252       XLA_AE_LINES_PKG.ValidateCurrentLine;
24253       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24254 
24255       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24256                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
24257                ,p_balance_type_code => l_balance_type_code);
24258 
24259    END IF;
24260 
24261    -----------------------------------------------------------------------------------------
24262    -- 4262811 Multiperiod Accounting
24263    -----------------------------------------------------------------------------------------
24264      -- No MPA option is assigned.
24265 
24266 
24267 END IF;
24268 END IF;
24269 --
24270 
24271 --
24272 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24273    trace
24274       (p_msg      => 'END of AcctLineType_46'
24275       ,p_level    => C_LEVEL_PROCEDURE
24276       ,p_module   => l_log_module);
24277 END IF;
24278 --
24279 EXCEPTION
24280   WHEN xla_exceptions_pkg.application_exception THEN
24281       RAISE;
24282   WHEN OTHERS THEN
24283        xla_exceptions_pkg.raise_message
24284            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_46');
24285 END AcctLineType_46;
24286 --
24287 
24288 ---------------------------------------
24289 --
24290 -- PRIVATE FUNCTION
24291 --         AcctLineType_47
24292 --
24293 ---------------------------------------
24294 PROCEDURE AcctLineType_47 (
24295   p_application_id        IN NUMBER
24296  ,p_event_id              IN NUMBER
24297  ,p_calculate_acctd_flag  IN VARCHAR2
24298  ,p_calculate_g_l_flag    IN VARCHAR2
24299  ,p_actual_flag           IN OUT VARCHAR2
24300  ,p_balance_type_code     OUT VARCHAR2
24301  ,p_gain_or_loss_ref      OUT VARCHAR2
24302  
24303 --Cost Management Default Account
24304  , p_source_4            IN NUMBER
24305 --DISTRIBUTION_IDENTIFIER
24306  , p_source_11            IN NUMBER
24307 --Distribution Type
24308  , p_source_12            IN VARCHAR2
24309  , p_source_12_meaning    IN VARCHAR2
24310 --Entered Currency Code
24311  , p_source_15            IN VARCHAR2
24312 --Entered Amount
24313  , p_source_18            IN NUMBER
24314 --Currency Conversion Date
24315  , p_source_19            IN DATE
24316 --Currency Conversion Rate
24317  , p_source_20            IN NUMBER
24318 --Currency Conversion Type
24319  , p_source_21            IN VARCHAR2
24320 --Accounted Amount
24321  , p_source_22            IN NUMBER
24322 --Accounting Line Type
24323  , p_source_24            IN NUMBER
24324 )
24325 IS
24326 
24327 l_component_type              VARCHAR2(80);
24328 l_component_code              VARCHAR2(30);
24329 l_component_type_code         VARCHAR2(1);
24330 l_component_appl_id           INTEGER;
24331 l_amb_context_code            VARCHAR2(30);
24332 l_entity_code                 VARCHAR2(30);
24333 l_event_class_code            VARCHAR2(30);
24334 l_ae_header_id                NUMBER;
24335 l_event_type_code             VARCHAR2(30);
24336 l_line_definition_code        VARCHAR2(30);
24337 l_line_definition_owner_code  VARCHAR2(1);
24338 --
24339 -- adr variables
24340 l_segment                     VARCHAR2(30);
24341 l_ccid                        NUMBER;
24342 l_adr_transaction_coa_id      NUMBER;
24343 l_adr_accounting_coa_id       NUMBER;
24344 l_adr_flexfield_segment_code  VARCHAR2(30);
24345 l_adr_flex_value_set_id       NUMBER;
24346 l_adr_value_type_code         VARCHAR2(30);
24347 l_adr_value_combination_id    NUMBER;
24348 l_adr_value_segment_code      VARCHAR2(30);
24349 
24350 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
24351 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
24352 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
24353 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
24354 
24355 -- 4262811 Variables ------------------------------------------------------------------------------------------
24356 l_entered_amt_idx             NUMBER;
24357 l_accted_amt_idx              NUMBER;
24358 l_acc_rev_flag                VARCHAR2(1);
24359 l_accrual_line_num            NUMBER;
24360 l_tmp_amt                     NUMBER;
24361 l_acc_rev_natural_side_code   VARCHAR2(1);
24362 
24363 l_num_entries                 NUMBER;
24364 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
24365 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
24366 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
24367 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
24368 l_recog_line_1                NUMBER;
24369 l_recog_line_2                NUMBER;
24370 
24371 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
24372 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
24373 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
24374 
24375 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
24376 
24377 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
24378 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
24379 
24380 ---------------------------------------------------------------------------------------------------------------
24381 
24382 
24383 --
24384 -- bulk performance
24385 --
24386 l_balance_type_code           VARCHAR2(1);
24387 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
24388 l_log_module                  VARCHAR2(240);
24389 
24390 --
24391 -- Upgrade strategy
24392 --
24393 l_actual_upg_option           VARCHAR2(1);
24394 l_enc_upg_option           VARCHAR2(1);
24395 
24396 --
24397 BEGIN
24398 --
24399 IF g_log_enabled THEN
24400       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_47';
24401 END IF;
24402 --
24403 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24404 
24405       trace
24406          (p_msg      => 'BEGIN of AcctLineType_47'
24407          ,p_level    => C_LEVEL_PROCEDURE
24408          ,p_module   => l_log_module);
24409 
24410 END IF;
24411 --
24412 l_component_type             := 'AMB_JLT';
24413 l_component_code             := 'COST_VARIANCE';
24414 l_component_type_code        := 'S';
24415 l_component_appl_id          :=  707;
24416 l_amb_context_code           := 'DEFAULT';
24417 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
24418 l_event_class_code           := 'USER_DEFINE';
24419 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
24420 l_line_definition_owner_code := 'S';
24421 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
24422 --
24423 l_balance_type_code          := 'A';
24424 l_segment                     := NULL;
24425 l_ccid                        := NULL;
24426 l_adr_transaction_coa_id      := NULL;
24427 l_adr_accounting_coa_id       := NULL;
24428 l_adr_flexfield_segment_code  := NULL;
24429 l_adr_flex_value_set_id       := NULL;
24430 l_adr_value_type_code         := NULL;
24431 l_adr_value_combination_id    := NULL;
24432 l_adr_value_segment_code      := NULL;
24433 
24434 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
24435 l_bflow_class_code           := '';    -- 4219869 Business Flow
24436 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
24437 l_budgetary_control_flag     := 'N';
24438 
24439 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
24440 l_bflow_applied_to_amt       := NULL; -- 5132302
24441 l_entered_amt_idx            := NULL;          -- 4262811
24442 l_accted_amt_idx             := NULL;          -- 4262811
24443 l_acc_rev_flag               := NULL;          -- 4262811
24444 l_accrual_line_num           := NULL;          -- 4262811
24445 l_tmp_amt                    := NULL;          -- 4262811
24446 --
24447  
24448 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
24449     l_balance_type_code <> 'B' THEN
24450 IF NVL(p_source_24,9E125) =  13
24451  THEN 
24452 
24453    --
24454    XLA_AE_LINES_PKG.SetNewLine;
24455 
24456    p_balance_type_code          := l_balance_type_code;
24457    -- set the flag so later we will know whether the gain loss line needs to be created
24458    
24459    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
24460      p_actual_flag :='A';
24461    END IF;
24462 
24463    --
24464    -- bulk performance
24465    --
24466    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
24467                                       p_header_num   => 0); -- 4262811
24468    --
24469    -- set accounting line options
24470    --
24471    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
24472            p_natural_side_code          => 'D'
24473          , p_gain_or_loss_flag          => 'N'
24474          , p_gl_transfer_mode_code      => 'S'
24475          , p_acct_entry_type_code       => 'A'
24476          , p_switch_side_flag           => 'Y'
24477          , p_merge_duplicate_code       => 'N'
24478          );
24479    --
24480    l_acc_rev_natural_side_code := 'C';  -- 4262811
24481    -- 
24482    --
24483    -- set accounting line type info
24484    --
24485    xla_ae_lines_pkg.SetAcctLineType
24486       (p_component_type             => l_component_type
24487       ,p_event_type_code            => l_event_type_code
24488       ,p_line_definition_owner_code => l_line_definition_owner_code
24489       ,p_line_definition_code       => l_line_definition_code
24490       ,p_accounting_line_code       => l_component_code
24491       ,p_accounting_line_type_code  => l_component_type_code
24492       ,p_accounting_line_appl_id    => l_component_appl_id
24493       ,p_amb_context_code           => l_amb_context_code
24494       ,p_entity_code                => l_entity_code
24495       ,p_event_class_code           => l_event_class_code);
24496    --
24497    -- set accounting class
24498    --
24499    xla_ae_lines_pkg.SetAcctClass(
24500            p_accounting_class_code  => 'COST_VARIANCE'
24501          , p_ae_header_id           => l_ae_header_id
24502          );
24503 
24504    --
24505    -- set rounding class
24506    --
24507    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
24508                       'COST_VARIANCE';
24509 
24510    --
24511    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
24512    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
24513    --
24514    -- bulk performance
24515    --
24516    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
24517 
24518    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
24519       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
24520 
24521    -- 4955764
24522    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24523       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
24524 
24525    -- 4458381 Public Sector Enh
24526    
24527    --
24528    -- set accounting attributes for the line type
24529    --
24530    l_entered_amt_idx := 3;
24531    l_accted_amt_idx  := 8;
24532    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
24533    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
24534    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
24535    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
24536    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
24537    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
24538    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
24539    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
24540    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
24541    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
24542    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
24543    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
24544    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
24545    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
24546    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
24547    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
24548    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
24549 
24550    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
24551    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
24552 
24553    ---------------------------------------------------------------------------------------------------------------
24554    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
24555    ---------------------------------------------------------------------------------------------------------------
24556    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
24557 
24558    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24559    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24560 
24561    IF xla_accounting_cache_pkg.GetValueChar
24562          (p_source_code         => 'LEDGER_CATEGORY_CODE'
24563          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
24564    AND l_bflow_method_code = 'PRIOR_ENTRY'
24565 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
24566    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
24567          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
24568        )
24569    THEN
24570          xla_ae_lines_pkg.BflowUpgEntry
24571            (p_business_method_code    => l_bflow_method_code
24572            ,p_business_class_code     => l_bflow_class_code
24573            ,p_balance_type            => l_balance_type_code);
24574    ELSE
24575       NULL;
24576 -- No business flow processing for business flow method of NONE.
24577    END IF;
24578 
24579    --
24580    -- call analytical criteria
24581    --
24582    
24583    --
24584    -- call description
24585    --
24586    -- No description or it is inherited.
24587    --
24588    -- call ADRs
24589    -- Bug 4922099
24590    --
24591    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24592         (NVL(l_actual_upg_option, 'N') = 'O') OR
24593         (NVL(l_enc_upg_option, 'N') = 'O')
24594       )
24595    THEN
24596    NULL;
24597    --
24598    --
24599    
24600   l_ccid := AcctDerRule_4(
24601            p_application_id           => p_application_id
24602          , p_ae_header_id             => l_ae_header_id 
24603 , p_source_4 => p_source_4
24604          , x_transaction_coa_id       => l_adr_transaction_coa_id
24605          , x_accounting_coa_id        => l_adr_accounting_coa_id
24606          , x_value_type_code          => l_adr_value_type_code
24607          , p_side                     => 'NA'
24608    );
24609 
24610    xla_ae_lines_pkg.set_ccid(
24611     p_code_combination_id          => l_ccid
24612   , p_value_type_code              => l_adr_value_type_code
24613   , p_transaction_coa_id           => l_adr_transaction_coa_id
24614   , p_accounting_coa_id            => l_adr_accounting_coa_id
24615   , p_adr_code                     => 'CST_DEFAULT'
24616   , p_adr_type_code                => 'S'
24617   , p_component_type               => l_component_type
24618   , p_component_code               => l_component_code
24619   , p_component_type_code          => l_component_type_code
24620   , p_component_appl_id            => l_component_appl_id
24621   , p_amb_context_code             => l_amb_context_code
24622   , p_side                         => 'NA'
24623   );
24624 
24625 
24626    --
24627    --
24628    END IF;
24629    --
24630    -- Bug 4922099
24631    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
24632           (NVL(l_enc_upg_option, 'N') = 'O')
24633         ) AND
24634         (l_bflow_method_code = 'PRIOR_ENTRY')
24635       )
24636    THEN
24637       IF
24638       --
24639       1 = 2
24640       --
24641       THEN
24642       xla_accounting_err_pkg.build_message
24643                                     (p_appli_s_name            => 'XLA'
24644                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24645                                     ,p_token_1                 => 'LINE_NUMBER'
24646                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
24647                                     ,p_token_2                 => 'LINE_TYPE_NAME'
24648                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
24649                                                                              l_component_type
24650                                                                             ,l_component_code
24651                                                                             ,l_component_type_code
24652                                                                             ,l_component_appl_id
24653                                                                             ,l_amb_context_code
24654                                                                             ,l_entity_code
24655                                                                             ,l_event_class_code
24656                                                                            )
24657                                     ,p_token_3                 => 'OWNER'
24658                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
24659                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
24660                                                                           ,p_lookup_code    => l_component_type_code
24661                                                                          )
24662                                     ,p_token_4                 => 'PRODUCT_NAME'
24663                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
24664                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
24665                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
24666                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
24667                                     ,p_ae_header_id            =>  NULL
24668                                        );
24669 
24670         IF (C_LEVEL_ERROR>= g_log_level) THEN
24671                  trace
24672                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24673                       ,p_level    => C_LEVEL_ERROR
24674                       ,p_module   => l_log_module);
24675         END IF;
24676       END IF;
24677    END IF;
24678    --
24679    --
24680    ------------------------------------------------------------------------------------------------
24681    -- 4219869 Business Flow
24682    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
24683    -- Prior Entry.  Currently, the following code is always generated.
24684    ------------------------------------------------------------------------------------------------
24685    XLA_AE_LINES_PKG.ValidateCurrentLine;
24686 
24687    ------------------------------------------------------------------------------------
24688    -- 4219869 Business Flow
24689    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
24690    ------------------------------------------------------------------------------------
24691    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24692 
24693    ----------------------------------------------------------------------------------
24694    -- 4219869 Business Flow
24695    -- Update journal entry status -- Need to generate this within IF <condition>
24696    ----------------------------------------------------------------------------------
24697    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24698          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
24699          ,p_balance_type_code => l_balance_type_code
24700          );
24701 
24702    -------------------------------------------------------------------------------------------
24703    -- 4262811 - Generate the Accrual Reversal lines
24704    -------------------------------------------------------------------------------------------
24705    BEGIN
24706       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
24707                               (g_array_event(p_event_id).array_value_num('header_index'));
24708       IF l_acc_rev_flag IS NULL THEN
24709          l_acc_rev_flag := 'N';
24710       END IF;
24711    EXCEPTION
24712       WHEN OTHERS THEN
24713          l_acc_rev_flag := 'N';
24714    END;
24715    --
24716    IF (l_acc_rev_flag = 'Y') THEN
24717 
24718        -- 4645092  ------------------------------------------------------------------------------
24719        -- To allow MPA report to determine if it should generate report process
24720        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
24721        ------------------------------------------------------------------------------------------
24722 
24723        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
24724        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
24725    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
24726    -- call ADRs
24727    -- Bug 4922099
24728    --
24729    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24730         (NVL(l_actual_upg_option, 'N') = 'O') OR
24731         (NVL(l_enc_upg_option, 'N') = 'O')
24732       )
24733    THEN
24734    NULL;
24735    --
24736    --
24737    
24738   l_ccid := AcctDerRule_4(
24739            p_application_id           => p_application_id
24740          , p_ae_header_id             => l_ae_header_id 
24741 , p_source_4 => p_source_4
24742          , x_transaction_coa_id       => l_adr_transaction_coa_id
24743          , x_accounting_coa_id        => l_adr_accounting_coa_id
24744          , x_value_type_code          => l_adr_value_type_code
24745          , p_side                     => 'NA'
24746    );
24747 
24748    xla_ae_lines_pkg.set_ccid(
24749     p_code_combination_id          => l_ccid
24750   , p_value_type_code              => l_adr_value_type_code
24751   , p_transaction_coa_id           => l_adr_transaction_coa_id
24752   , p_accounting_coa_id            => l_adr_accounting_coa_id
24753   , p_adr_code                     => 'CST_DEFAULT'
24754   , p_adr_type_code                => 'S'
24755   , p_component_type               => l_component_type
24756   , p_component_code               => l_component_code
24757   , p_component_type_code          => l_component_type_code
24758   , p_component_appl_id            => l_component_appl_id
24759   , p_amb_context_code             => l_amb_context_code
24760   , p_side                         => 'NA'
24761   );
24762 
24763 
24764    --
24765    --
24766    END IF;
24767 
24768        --
24769        -- Update the line information that should be overwritten
24770        --
24771        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
24772                                          p_header_num   => 1);
24773        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
24774 
24775        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
24776 
24777        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
24778           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
24779        END IF;
24780 
24781       --
24782       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
24783       --
24784       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
24785           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
24786       ELSE
24787           ---------------------------------------------------------------------------------------------------
24788           -- 4262811a Switch Sign
24789           ---------------------------------------------------------------------------------------------------
24790           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
24791           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24792                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24793           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24794                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24795           -- 5132302
24796           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
24797                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24798 
24799       END IF;
24800 
24801       -- 4955764
24802       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24803       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
24804 
24805 
24806       XLA_AE_LINES_PKG.ValidateCurrentLine;
24807       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24808 
24809       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24810                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
24811                ,p_balance_type_code => l_balance_type_code);
24812 
24813    END IF;
24814 
24815    -----------------------------------------------------------------------------------------
24816    -- 4262811 Multiperiod Accounting
24817    -----------------------------------------------------------------------------------------
24818      -- No MPA option is assigned.
24819 
24820 
24821 END IF;
24822 END IF;
24823 --
24824 
24825 --
24826 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24827    trace
24828       (p_msg      => 'END of AcctLineType_47'
24829       ,p_level    => C_LEVEL_PROCEDURE
24830       ,p_module   => l_log_module);
24831 END IF;
24832 --
24833 EXCEPTION
24834   WHEN xla_exceptions_pkg.application_exception THEN
24835       RAISE;
24836   WHEN OTHERS THEN
24837        xla_exceptions_pkg.raise_message
24838            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_47');
24839 END AcctLineType_47;
24840 --
24841 
24842 ---------------------------------------
24843 --
24844 -- PRIVATE FUNCTION
24845 --         AcctLineType_48
24846 --
24847 ---------------------------------------
24848 PROCEDURE AcctLineType_48 (
24849   p_application_id        IN NUMBER
24850  ,p_event_id              IN NUMBER
24851  ,p_calculate_acctd_flag  IN VARCHAR2
24852  ,p_calculate_g_l_flag    IN VARCHAR2
24853  ,p_actual_flag           IN OUT VARCHAR2
24854  ,p_balance_type_code     OUT VARCHAR2
24855  ,p_gain_or_loss_ref      OUT VARCHAR2
24856  
24857 --Cost Management Default Account
24858  , p_source_4            IN NUMBER
24859 --DISTRIBUTION_IDENTIFIER
24860  , p_source_11            IN NUMBER
24861 --Distribution Type
24862  , p_source_12            IN VARCHAR2
24863  , p_source_12_meaning    IN VARCHAR2
24864 --Entered Currency Code
24865  , p_source_15            IN VARCHAR2
24866 --Entered Amount
24867  , p_source_18            IN NUMBER
24868 --Currency Conversion Date
24869  , p_source_19            IN DATE
24870 --Currency Conversion Rate
24871  , p_source_20            IN NUMBER
24872 --Currency Conversion Type
24873  , p_source_21            IN VARCHAR2
24874 --Accounted Amount
24875  , p_source_22            IN NUMBER
24876 --Accounting Line Type
24877  , p_source_24            IN NUMBER
24878 )
24879 IS
24880 
24881 l_component_type              VARCHAR2(80);
24882 l_component_code              VARCHAR2(30);
24883 l_component_type_code         VARCHAR2(1);
24884 l_component_appl_id           INTEGER;
24885 l_amb_context_code            VARCHAR2(30);
24886 l_entity_code                 VARCHAR2(30);
24887 l_event_class_code            VARCHAR2(30);
24888 l_ae_header_id                NUMBER;
24889 l_event_type_code             VARCHAR2(30);
24890 l_line_definition_code        VARCHAR2(30);
24891 l_line_definition_owner_code  VARCHAR2(1);
24892 --
24893 -- adr variables
24894 l_segment                     VARCHAR2(30);
24895 l_ccid                        NUMBER;
24896 l_adr_transaction_coa_id      NUMBER;
24897 l_adr_accounting_coa_id       NUMBER;
24898 l_adr_flexfield_segment_code  VARCHAR2(30);
24899 l_adr_flex_value_set_id       NUMBER;
24900 l_adr_value_type_code         VARCHAR2(30);
24901 l_adr_value_combination_id    NUMBER;
24902 l_adr_value_segment_code      VARCHAR2(30);
24903 
24904 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
24905 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
24906 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
24907 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
24908 
24909 -- 4262811 Variables ------------------------------------------------------------------------------------------
24910 l_entered_amt_idx             NUMBER;
24911 l_accted_amt_idx              NUMBER;
24912 l_acc_rev_flag                VARCHAR2(1);
24913 l_accrual_line_num            NUMBER;
24914 l_tmp_amt                     NUMBER;
24915 l_acc_rev_natural_side_code   VARCHAR2(1);
24916 
24917 l_num_entries                 NUMBER;
24918 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
24919 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
24920 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
24921 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
24922 l_recog_line_1                NUMBER;
24923 l_recog_line_2                NUMBER;
24924 
24925 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
24926 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
24927 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
24928 
24929 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
24930 
24931 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
24932 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
24933 
24934 ---------------------------------------------------------------------------------------------------------------
24935 
24936 
24937 --
24938 -- bulk performance
24939 --
24940 l_balance_type_code           VARCHAR2(1);
24941 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
24942 l_log_module                  VARCHAR2(240);
24943 
24944 --
24945 -- Upgrade strategy
24946 --
24947 l_actual_upg_option           VARCHAR2(1);
24948 l_enc_upg_option           VARCHAR2(1);
24949 
24950 --
24951 BEGIN
24952 --
24953 IF g_log_enabled THEN
24954       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_48';
24955 END IF;
24956 --
24957 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24958 
24959       trace
24960          (p_msg      => 'BEGIN of AcctLineType_48'
24961          ,p_level    => C_LEVEL_PROCEDURE
24962          ,p_module   => l_log_module);
24963 
24964 END IF;
24965 --
24966 l_component_type             := 'AMB_JLT';
24967 l_component_code             := 'DEFERRED_COGS';
24968 l_component_type_code        := 'S';
24969 l_component_appl_id          :=  707;
24970 l_amb_context_code           := 'DEFAULT';
24971 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
24972 l_event_class_code           := 'SALES_ORDER';
24973 l_event_type_code            := 'SALES_ORDER_ALL';
24974 l_line_definition_owner_code := 'S';
24975 l_line_definition_code       := 'SALES_ORDER';
24976 --
24977 l_balance_type_code          := 'A';
24978 l_segment                     := NULL;
24979 l_ccid                        := NULL;
24980 l_adr_transaction_coa_id      := NULL;
24981 l_adr_accounting_coa_id       := NULL;
24982 l_adr_flexfield_segment_code  := NULL;
24983 l_adr_flex_value_set_id       := NULL;
24984 l_adr_value_type_code         := NULL;
24985 l_adr_value_combination_id    := NULL;
24986 l_adr_value_segment_code      := NULL;
24987 
24988 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
24989 l_bflow_class_code           := '';    -- 4219869 Business Flow
24990 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
24991 l_budgetary_control_flag     := 'N';
24992 
24993 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
24994 l_bflow_applied_to_amt       := NULL; -- 5132302
24995 l_entered_amt_idx            := NULL;          -- 4262811
24996 l_accted_amt_idx             := NULL;          -- 4262811
24997 l_acc_rev_flag               := NULL;          -- 4262811
24998 l_accrual_line_num           := NULL;          -- 4262811
24999 l_tmp_amt                    := NULL;          -- 4262811
25000 --
25001  
25002 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
25003     l_balance_type_code <> 'B' THEN
25004 IF NVL(p_source_24,9E125) =  36
25005  THEN 
25006 
25007    --
25008    XLA_AE_LINES_PKG.SetNewLine;
25009 
25010    p_balance_type_code          := l_balance_type_code;
25011    -- set the flag so later we will know whether the gain loss line needs to be created
25012    
25013    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
25014      p_actual_flag :='A';
25015    END IF;
25016 
25017    --
25018    -- bulk performance
25019    --
25020    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
25021                                       p_header_num   => 0); -- 4262811
25022    --
25023    -- set accounting line options
25024    --
25025    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
25026            p_natural_side_code          => 'D'
25027          , p_gain_or_loss_flag          => 'N'
25028          , p_gl_transfer_mode_code      => 'S'
25029          , p_acct_entry_type_code       => 'A'
25030          , p_switch_side_flag           => 'Y'
25031          , p_merge_duplicate_code       => 'N'
25032          );
25033    --
25034    l_acc_rev_natural_side_code := 'C';  -- 4262811
25035    -- 
25036    --
25037    -- set accounting line type info
25038    --
25039    xla_ae_lines_pkg.SetAcctLineType
25040       (p_component_type             => l_component_type
25041       ,p_event_type_code            => l_event_type_code
25042       ,p_line_definition_owner_code => l_line_definition_owner_code
25043       ,p_line_definition_code       => l_line_definition_code
25044       ,p_accounting_line_code       => l_component_code
25045       ,p_accounting_line_type_code  => l_component_type_code
25046       ,p_accounting_line_appl_id    => l_component_appl_id
25047       ,p_amb_context_code           => l_amb_context_code
25048       ,p_entity_code                => l_entity_code
25049       ,p_event_class_code           => l_event_class_code);
25050    --
25051    -- set accounting class
25052    --
25053    xla_ae_lines_pkg.SetAcctClass(
25054            p_accounting_class_code  => 'DEFERRED_COGS'
25055          , p_ae_header_id           => l_ae_header_id
25056          );
25057 
25058    --
25059    -- set rounding class
25060    --
25061    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
25062                       'DEFERRED_COGS';
25063 
25064    --
25065    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
25066    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
25067    --
25068    -- bulk performance
25069    --
25070    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
25071 
25072    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
25073       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
25074 
25075    -- 4955764
25076    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25077       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
25078 
25079    -- 4458381 Public Sector Enh
25080    
25081    --
25082    -- set accounting attributes for the line type
25083    --
25084    l_entered_amt_idx := 3;
25085    l_accted_amt_idx  := 8;
25086    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
25087    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
25088    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
25089    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
25090    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
25091    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
25092    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
25093    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
25094    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
25095    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
25096    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
25097    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
25098    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
25099    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
25100    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
25101    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
25102    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
25103 
25104    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
25105    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
25106 
25107    ---------------------------------------------------------------------------------------------------------------
25108    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
25109    ---------------------------------------------------------------------------------------------------------------
25110    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
25111 
25112    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25113    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25114 
25115    IF xla_accounting_cache_pkg.GetValueChar
25116          (p_source_code         => 'LEDGER_CATEGORY_CODE'
25117          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
25118    AND l_bflow_method_code = 'PRIOR_ENTRY'
25119 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
25120    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
25121          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
25122        )
25123    THEN
25124          xla_ae_lines_pkg.BflowUpgEntry
25125            (p_business_method_code    => l_bflow_method_code
25126            ,p_business_class_code     => l_bflow_class_code
25127            ,p_balance_type            => l_balance_type_code);
25128    ELSE
25129       NULL;
25130 -- No business flow processing for business flow method of NONE.
25131    END IF;
25132 
25133    --
25134    -- call analytical criteria
25135    --
25136    
25137    --
25138    -- call description
25139    --
25140    -- No description or it is inherited.
25141    --
25142    -- call ADRs
25143    -- Bug 4922099
25144    --
25145    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25146         (NVL(l_actual_upg_option, 'N') = 'O') OR
25147         (NVL(l_enc_upg_option, 'N') = 'O')
25148       )
25149    THEN
25150    NULL;
25151    --
25152    --
25153    
25154   l_ccid := AcctDerRule_4(
25155            p_application_id           => p_application_id
25156          , p_ae_header_id             => l_ae_header_id 
25157 , p_source_4 => p_source_4
25158          , x_transaction_coa_id       => l_adr_transaction_coa_id
25159          , x_accounting_coa_id        => l_adr_accounting_coa_id
25160          , x_value_type_code          => l_adr_value_type_code
25161          , p_side                     => 'NA'
25162    );
25163 
25164    xla_ae_lines_pkg.set_ccid(
25165     p_code_combination_id          => l_ccid
25166   , p_value_type_code              => l_adr_value_type_code
25167   , p_transaction_coa_id           => l_adr_transaction_coa_id
25168   , p_accounting_coa_id            => l_adr_accounting_coa_id
25169   , p_adr_code                     => 'CST_DEFAULT'
25170   , p_adr_type_code                => 'S'
25171   , p_component_type               => l_component_type
25172   , p_component_code               => l_component_code
25173   , p_component_type_code          => l_component_type_code
25174   , p_component_appl_id            => l_component_appl_id
25175   , p_amb_context_code             => l_amb_context_code
25176   , p_side                         => 'NA'
25177   );
25178 
25179 
25180    --
25181    --
25182    END IF;
25183    --
25184    -- Bug 4922099
25185    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
25186           (NVL(l_enc_upg_option, 'N') = 'O')
25187         ) AND
25188         (l_bflow_method_code = 'PRIOR_ENTRY')
25189       )
25190    THEN
25191       IF
25192       --
25193       1 = 2
25194       --
25195       THEN
25196       xla_accounting_err_pkg.build_message
25197                                     (p_appli_s_name            => 'XLA'
25198                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25199                                     ,p_token_1                 => 'LINE_NUMBER'
25200                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
25201                                     ,p_token_2                 => 'LINE_TYPE_NAME'
25202                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
25203                                                                              l_component_type
25204                                                                             ,l_component_code
25205                                                                             ,l_component_type_code
25206                                                                             ,l_component_appl_id
25207                                                                             ,l_amb_context_code
25208                                                                             ,l_entity_code
25209                                                                             ,l_event_class_code
25210                                                                            )
25211                                     ,p_token_3                 => 'OWNER'
25212                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
25213                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
25214                                                                           ,p_lookup_code    => l_component_type_code
25215                                                                          )
25216                                     ,p_token_4                 => 'PRODUCT_NAME'
25217                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
25218                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
25219                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
25220                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
25221                                     ,p_ae_header_id            =>  NULL
25222                                        );
25223 
25224         IF (C_LEVEL_ERROR>= g_log_level) THEN
25225                  trace
25226                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25227                       ,p_level    => C_LEVEL_ERROR
25228                       ,p_module   => l_log_module);
25229         END IF;
25230       END IF;
25231    END IF;
25232    --
25233    --
25234    ------------------------------------------------------------------------------------------------
25235    -- 4219869 Business Flow
25236    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
25237    -- Prior Entry.  Currently, the following code is always generated.
25238    ------------------------------------------------------------------------------------------------
25239    XLA_AE_LINES_PKG.ValidateCurrentLine;
25240 
25241    ------------------------------------------------------------------------------------
25242    -- 4219869 Business Flow
25243    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
25244    ------------------------------------------------------------------------------------
25245    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25246 
25247    ----------------------------------------------------------------------------------
25248    -- 4219869 Business Flow
25249    -- Update journal entry status -- Need to generate this within IF <condition>
25250    ----------------------------------------------------------------------------------
25251    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25252          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
25253          ,p_balance_type_code => l_balance_type_code
25254          );
25255 
25256    -------------------------------------------------------------------------------------------
25257    -- 4262811 - Generate the Accrual Reversal lines
25258    -------------------------------------------------------------------------------------------
25259    BEGIN
25260       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
25261                               (g_array_event(p_event_id).array_value_num('header_index'));
25262       IF l_acc_rev_flag IS NULL THEN
25263          l_acc_rev_flag := 'N';
25264       END IF;
25265    EXCEPTION
25266       WHEN OTHERS THEN
25267          l_acc_rev_flag := 'N';
25268    END;
25269    --
25270    IF (l_acc_rev_flag = 'Y') THEN
25271 
25272        -- 4645092  ------------------------------------------------------------------------------
25273        -- To allow MPA report to determine if it should generate report process
25274        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
25275        ------------------------------------------------------------------------------------------
25276 
25277        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
25278        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
25279    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
25280    -- call ADRs
25281    -- Bug 4922099
25282    --
25283    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25284         (NVL(l_actual_upg_option, 'N') = 'O') OR
25285         (NVL(l_enc_upg_option, 'N') = 'O')
25286       )
25287    THEN
25288    NULL;
25289    --
25290    --
25291    
25292   l_ccid := AcctDerRule_4(
25293            p_application_id           => p_application_id
25294          , p_ae_header_id             => l_ae_header_id 
25295 , p_source_4 => p_source_4
25296          , x_transaction_coa_id       => l_adr_transaction_coa_id
25297          , x_accounting_coa_id        => l_adr_accounting_coa_id
25298          , x_value_type_code          => l_adr_value_type_code
25299          , p_side                     => 'NA'
25300    );
25301 
25302    xla_ae_lines_pkg.set_ccid(
25303     p_code_combination_id          => l_ccid
25304   , p_value_type_code              => l_adr_value_type_code
25305   , p_transaction_coa_id           => l_adr_transaction_coa_id
25306   , p_accounting_coa_id            => l_adr_accounting_coa_id
25307   , p_adr_code                     => 'CST_DEFAULT'
25308   , p_adr_type_code                => 'S'
25309   , p_component_type               => l_component_type
25310   , p_component_code               => l_component_code
25311   , p_component_type_code          => l_component_type_code
25312   , p_component_appl_id            => l_component_appl_id
25313   , p_amb_context_code             => l_amb_context_code
25314   , p_side                         => 'NA'
25315   );
25316 
25317 
25318    --
25319    --
25320    END IF;
25321 
25322        --
25323        -- Update the line information that should be overwritten
25324        --
25325        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
25326                                          p_header_num   => 1);
25327        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
25328 
25329        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
25330 
25331        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
25332           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
25333        END IF;
25334 
25335       --
25336       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
25337       --
25338       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
25339           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
25340       ELSE
25341           ---------------------------------------------------------------------------------------------------
25342           -- 4262811a Switch Sign
25343           ---------------------------------------------------------------------------------------------------
25344           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
25345           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25346                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25347           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25348                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25349           -- 5132302
25350           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
25351                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25352 
25353       END IF;
25354 
25355       -- 4955764
25356       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25357       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
25358 
25359 
25360       XLA_AE_LINES_PKG.ValidateCurrentLine;
25361       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25362 
25363       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25364                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
25365                ,p_balance_type_code => l_balance_type_code);
25366 
25367    END IF;
25368 
25369    -----------------------------------------------------------------------------------------
25370    -- 4262811 Multiperiod Accounting
25371    -----------------------------------------------------------------------------------------
25372      -- No MPA option is assigned.
25373 
25374 
25375 END IF;
25376 END IF;
25377 --
25378 
25379 --
25380 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25381    trace
25382       (p_msg      => 'END of AcctLineType_48'
25383       ,p_level    => C_LEVEL_PROCEDURE
25384       ,p_module   => l_log_module);
25385 END IF;
25386 --
25387 EXCEPTION
25388   WHEN xla_exceptions_pkg.application_exception THEN
25389       RAISE;
25390   WHEN OTHERS THEN
25391        xla_exceptions_pkg.raise_message
25392            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_48');
25393 END AcctLineType_48;
25394 --
25395 
25396 ---------------------------------------
25397 --
25398 -- PRIVATE FUNCTION
25399 --         AcctLineType_49
25400 --
25401 ---------------------------------------
25402 PROCEDURE AcctLineType_49 (
25403   p_application_id        IN NUMBER
25404  ,p_event_id              IN NUMBER
25405  ,p_calculate_acctd_flag  IN VARCHAR2
25406  ,p_calculate_g_l_flag    IN VARCHAR2
25407  ,p_actual_flag           IN OUT VARCHAR2
25408  ,p_balance_type_code     OUT VARCHAR2
25409  ,p_gain_or_loss_ref      OUT VARCHAR2
25410  
25411 --Cost Management Default Account
25412  , p_source_4            IN NUMBER
25413 --DISTRIBUTION_IDENTIFIER
25414  , p_source_11            IN NUMBER
25415 --Distribution Type
25416  , p_source_12            IN VARCHAR2
25417  , p_source_12_meaning    IN VARCHAR2
25418 --Entered Currency Code
25419  , p_source_15            IN VARCHAR2
25420 --Entered Amount
25421  , p_source_18            IN NUMBER
25422 --Currency Conversion Date
25423  , p_source_19            IN DATE
25424 --Currency Conversion Rate
25425  , p_source_20            IN NUMBER
25426 --Currency Conversion Type
25427  , p_source_21            IN VARCHAR2
25428 --Accounted Amount
25429  , p_source_22            IN NUMBER
25430 --Accounting Line Type
25431  , p_source_24            IN NUMBER
25432 )
25433 IS
25434 
25435 l_component_type              VARCHAR2(80);
25436 l_component_code              VARCHAR2(30);
25437 l_component_type_code         VARCHAR2(1);
25438 l_component_appl_id           INTEGER;
25439 l_amb_context_code            VARCHAR2(30);
25440 l_entity_code                 VARCHAR2(30);
25441 l_event_class_code            VARCHAR2(30);
25442 l_ae_header_id                NUMBER;
25443 l_event_type_code             VARCHAR2(30);
25444 l_line_definition_code        VARCHAR2(30);
25445 l_line_definition_owner_code  VARCHAR2(1);
25446 --
25447 -- adr variables
25448 l_segment                     VARCHAR2(30);
25449 l_ccid                        NUMBER;
25450 l_adr_transaction_coa_id      NUMBER;
25451 l_adr_accounting_coa_id       NUMBER;
25452 l_adr_flexfield_segment_code  VARCHAR2(30);
25453 l_adr_flex_value_set_id       NUMBER;
25454 l_adr_value_type_code         VARCHAR2(30);
25455 l_adr_value_combination_id    NUMBER;
25456 l_adr_value_segment_code      VARCHAR2(30);
25457 
25458 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
25459 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
25460 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
25461 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
25462 
25463 -- 4262811 Variables ------------------------------------------------------------------------------------------
25464 l_entered_amt_idx             NUMBER;
25465 l_accted_amt_idx              NUMBER;
25466 l_acc_rev_flag                VARCHAR2(1);
25467 l_accrual_line_num            NUMBER;
25468 l_tmp_amt                     NUMBER;
25469 l_acc_rev_natural_side_code   VARCHAR2(1);
25470 
25471 l_num_entries                 NUMBER;
25472 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
25473 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
25474 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
25475 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
25476 l_recog_line_1                NUMBER;
25477 l_recog_line_2                NUMBER;
25478 
25479 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
25480 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
25481 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
25482 
25483 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
25484 
25485 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
25486 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
25487 
25488 ---------------------------------------------------------------------------------------------------------------
25489 
25490 
25491 --
25492 -- bulk performance
25493 --
25494 l_balance_type_code           VARCHAR2(1);
25495 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
25496 l_log_module                  VARCHAR2(240);
25497 
25498 --
25499 -- Upgrade strategy
25500 --
25501 l_actual_upg_option           VARCHAR2(1);
25502 l_enc_upg_option           VARCHAR2(1);
25503 
25504 --
25505 BEGIN
25506 --
25507 IF g_log_enabled THEN
25508       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_49';
25509 END IF;
25510 --
25511 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25512 
25513       trace
25514          (p_msg      => 'BEGIN of AcctLineType_49'
25515          ,p_level    => C_LEVEL_PROCEDURE
25516          ,p_module   => l_log_module);
25517 
25518 END IF;
25519 --
25520 l_component_type             := 'AMB_JLT';
25521 l_component_code             := 'EST_SCRAP_ABSORPTION';
25522 l_component_type_code        := 'S';
25523 l_component_appl_id          :=  707;
25524 l_amb_context_code           := 'DEFAULT';
25525 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
25526 l_event_class_code           := 'ABSORPTION';
25527 l_event_type_code            := 'ABSORPTION_ALL';
25528 l_line_definition_owner_code := 'S';
25529 l_line_definition_code       := 'ABSORPTION';
25530 --
25531 l_balance_type_code          := 'A';
25532 l_segment                     := NULL;
25533 l_ccid                        := NULL;
25534 l_adr_transaction_coa_id      := NULL;
25535 l_adr_accounting_coa_id       := NULL;
25536 l_adr_flexfield_segment_code  := NULL;
25537 l_adr_flex_value_set_id       := NULL;
25538 l_adr_value_type_code         := NULL;
25539 l_adr_value_combination_id    := NULL;
25540 l_adr_value_segment_code      := NULL;
25541 
25542 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
25543 l_bflow_class_code           := '';    -- 4219869 Business Flow
25544 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
25545 l_budgetary_control_flag     := 'N';
25546 
25547 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
25548 l_bflow_applied_to_amt       := NULL; -- 5132302
25549 l_entered_amt_idx            := NULL;          -- 4262811
25550 l_accted_amt_idx             := NULL;          -- 4262811
25551 l_acc_rev_flag               := NULL;          -- 4262811
25552 l_accrual_line_num           := NULL;          -- 4262811
25553 l_tmp_amt                    := NULL;          -- 4262811
25554 --
25555  
25556 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
25557     l_balance_type_code <> 'B' THEN
25558 IF NVL(p_source_24,9E125) =  29
25559  THEN 
25560 
25561    --
25562    XLA_AE_LINES_PKG.SetNewLine;
25563 
25564    p_balance_type_code          := l_balance_type_code;
25565    -- set the flag so later we will know whether the gain loss line needs to be created
25566    
25567    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
25568      p_actual_flag :='A';
25569    END IF;
25570 
25571    --
25572    -- bulk performance
25573    --
25574    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
25575                                       p_header_num   => 0); -- 4262811
25576    --
25577    -- set accounting line options
25578    --
25579    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
25580            p_natural_side_code          => 'D'
25581          , p_gain_or_loss_flag          => 'N'
25582          , p_gl_transfer_mode_code      => 'S'
25583          , p_acct_entry_type_code       => 'A'
25584          , p_switch_side_flag           => 'Y'
25585          , p_merge_duplicate_code       => 'N'
25586          );
25587    --
25588    l_acc_rev_natural_side_code := 'C';  -- 4262811
25589    -- 
25590    --
25591    -- set accounting line type info
25592    --
25593    xla_ae_lines_pkg.SetAcctLineType
25594       (p_component_type             => l_component_type
25595       ,p_event_type_code            => l_event_type_code
25596       ,p_line_definition_owner_code => l_line_definition_owner_code
25597       ,p_line_definition_code       => l_line_definition_code
25598       ,p_accounting_line_code       => l_component_code
25599       ,p_accounting_line_type_code  => l_component_type_code
25600       ,p_accounting_line_appl_id    => l_component_appl_id
25601       ,p_amb_context_code           => l_amb_context_code
25602       ,p_entity_code                => l_entity_code
25603       ,p_event_class_code           => l_event_class_code);
25604    --
25605    -- set accounting class
25606    --
25607    xla_ae_lines_pkg.SetAcctClass(
25608            p_accounting_class_code  => 'ESTIMATED_SCRAP_ABSORPTION'
25609          , p_ae_header_id           => l_ae_header_id
25610          );
25611 
25612    --
25613    -- set rounding class
25614    --
25615    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
25616                       'ESTIMATED_SCRAP_ABSORPTION';
25617 
25618    --
25619    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
25620    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
25621    --
25622    -- bulk performance
25623    --
25624    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
25625 
25626    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
25627       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
25628 
25629    -- 4955764
25630    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25631       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
25632 
25633    -- 4458381 Public Sector Enh
25634    
25635    --
25636    -- set accounting attributes for the line type
25637    --
25638    l_entered_amt_idx := 3;
25639    l_accted_amt_idx  := 8;
25640    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
25641    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
25642    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
25643    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
25644    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
25645    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
25646    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
25647    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
25648    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
25649    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
25650    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
25651    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
25652    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
25653    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
25654    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
25655    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
25656    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
25657 
25658    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
25659    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
25660 
25661    ---------------------------------------------------------------------------------------------------------------
25662    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
25663    ---------------------------------------------------------------------------------------------------------------
25664    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
25665 
25666    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25667    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25668 
25669    IF xla_accounting_cache_pkg.GetValueChar
25670          (p_source_code         => 'LEDGER_CATEGORY_CODE'
25671          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
25672    AND l_bflow_method_code = 'PRIOR_ENTRY'
25673 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
25674    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
25675          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
25676        )
25677    THEN
25678          xla_ae_lines_pkg.BflowUpgEntry
25679            (p_business_method_code    => l_bflow_method_code
25680            ,p_business_class_code     => l_bflow_class_code
25681            ,p_balance_type            => l_balance_type_code);
25682    ELSE
25683       NULL;
25684 -- No business flow processing for business flow method of NONE.
25685    END IF;
25686 
25687    --
25688    -- call analytical criteria
25689    --
25690    
25691    --
25692    -- call description
25693    --
25694    -- No description or it is inherited.
25695    --
25696    -- call ADRs
25697    -- Bug 4922099
25698    --
25699    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25700         (NVL(l_actual_upg_option, 'N') = 'O') OR
25701         (NVL(l_enc_upg_option, 'N') = 'O')
25702       )
25703    THEN
25704    NULL;
25705    --
25706    --
25707    
25708   l_ccid := AcctDerRule_4(
25709            p_application_id           => p_application_id
25710          , p_ae_header_id             => l_ae_header_id 
25711 , p_source_4 => p_source_4
25712          , x_transaction_coa_id       => l_adr_transaction_coa_id
25713          , x_accounting_coa_id        => l_adr_accounting_coa_id
25714          , x_value_type_code          => l_adr_value_type_code
25715          , p_side                     => 'NA'
25716    );
25717 
25718    xla_ae_lines_pkg.set_ccid(
25719     p_code_combination_id          => l_ccid
25720   , p_value_type_code              => l_adr_value_type_code
25721   , p_transaction_coa_id           => l_adr_transaction_coa_id
25722   , p_accounting_coa_id            => l_adr_accounting_coa_id
25723   , p_adr_code                     => 'CST_DEFAULT'
25724   , p_adr_type_code                => 'S'
25725   , p_component_type               => l_component_type
25726   , p_component_code               => l_component_code
25727   , p_component_type_code          => l_component_type_code
25728   , p_component_appl_id            => l_component_appl_id
25729   , p_amb_context_code             => l_amb_context_code
25730   , p_side                         => 'NA'
25731   );
25732 
25733 
25734    --
25735    --
25736    END IF;
25737    --
25738    -- Bug 4922099
25739    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
25740           (NVL(l_enc_upg_option, 'N') = 'O')
25741         ) AND
25742         (l_bflow_method_code = 'PRIOR_ENTRY')
25743       )
25744    THEN
25745       IF
25746       --
25747       1 = 2
25748       --
25749       THEN
25750       xla_accounting_err_pkg.build_message
25751                                     (p_appli_s_name            => 'XLA'
25752                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25753                                     ,p_token_1                 => 'LINE_NUMBER'
25754                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
25755                                     ,p_token_2                 => 'LINE_TYPE_NAME'
25756                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
25757                                                                              l_component_type
25758                                                                             ,l_component_code
25759                                                                             ,l_component_type_code
25760                                                                             ,l_component_appl_id
25761                                                                             ,l_amb_context_code
25762                                                                             ,l_entity_code
25763                                                                             ,l_event_class_code
25764                                                                            )
25765                                     ,p_token_3                 => 'OWNER'
25766                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
25767                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
25768                                                                           ,p_lookup_code    => l_component_type_code
25769                                                                          )
25770                                     ,p_token_4                 => 'PRODUCT_NAME'
25771                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
25772                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
25773                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
25774                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
25775                                     ,p_ae_header_id            =>  NULL
25776                                        );
25777 
25778         IF (C_LEVEL_ERROR>= g_log_level) THEN
25779                  trace
25780                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25781                       ,p_level    => C_LEVEL_ERROR
25782                       ,p_module   => l_log_module);
25783         END IF;
25784       END IF;
25785    END IF;
25786    --
25787    --
25788    ------------------------------------------------------------------------------------------------
25789    -- 4219869 Business Flow
25790    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
25791    -- Prior Entry.  Currently, the following code is always generated.
25792    ------------------------------------------------------------------------------------------------
25793    XLA_AE_LINES_PKG.ValidateCurrentLine;
25794 
25795    ------------------------------------------------------------------------------------
25796    -- 4219869 Business Flow
25797    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
25798    ------------------------------------------------------------------------------------
25799    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25800 
25801    ----------------------------------------------------------------------------------
25802    -- 4219869 Business Flow
25803    -- Update journal entry status -- Need to generate this within IF <condition>
25804    ----------------------------------------------------------------------------------
25805    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25806          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
25807          ,p_balance_type_code => l_balance_type_code
25808          );
25809 
25810    -------------------------------------------------------------------------------------------
25811    -- 4262811 - Generate the Accrual Reversal lines
25812    -------------------------------------------------------------------------------------------
25813    BEGIN
25814       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
25815                               (g_array_event(p_event_id).array_value_num('header_index'));
25816       IF l_acc_rev_flag IS NULL THEN
25817          l_acc_rev_flag := 'N';
25818       END IF;
25819    EXCEPTION
25820       WHEN OTHERS THEN
25821          l_acc_rev_flag := 'N';
25822    END;
25823    --
25824    IF (l_acc_rev_flag = 'Y') THEN
25825 
25826        -- 4645092  ------------------------------------------------------------------------------
25827        -- To allow MPA report to determine if it should generate report process
25828        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
25829        ------------------------------------------------------------------------------------------
25830 
25831        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
25832        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
25833    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
25834    -- call ADRs
25835    -- Bug 4922099
25836    --
25837    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25838         (NVL(l_actual_upg_option, 'N') = 'O') OR
25839         (NVL(l_enc_upg_option, 'N') = 'O')
25840       )
25841    THEN
25842    NULL;
25843    --
25844    --
25845    
25846   l_ccid := AcctDerRule_4(
25847            p_application_id           => p_application_id
25848          , p_ae_header_id             => l_ae_header_id 
25849 , p_source_4 => p_source_4
25850          , x_transaction_coa_id       => l_adr_transaction_coa_id
25851          , x_accounting_coa_id        => l_adr_accounting_coa_id
25852          , x_value_type_code          => l_adr_value_type_code
25853          , p_side                     => 'NA'
25854    );
25855 
25856    xla_ae_lines_pkg.set_ccid(
25857     p_code_combination_id          => l_ccid
25858   , p_value_type_code              => l_adr_value_type_code
25859   , p_transaction_coa_id           => l_adr_transaction_coa_id
25860   , p_accounting_coa_id            => l_adr_accounting_coa_id
25861   , p_adr_code                     => 'CST_DEFAULT'
25862   , p_adr_type_code                => 'S'
25863   , p_component_type               => l_component_type
25864   , p_component_code               => l_component_code
25865   , p_component_type_code          => l_component_type_code
25866   , p_component_appl_id            => l_component_appl_id
25867   , p_amb_context_code             => l_amb_context_code
25868   , p_side                         => 'NA'
25869   );
25870 
25871 
25872    --
25873    --
25874    END IF;
25875 
25876        --
25877        -- Update the line information that should be overwritten
25878        --
25879        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
25880                                          p_header_num   => 1);
25881        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
25882 
25883        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
25884 
25885        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
25886           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
25887        END IF;
25888 
25889       --
25890       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
25891       --
25892       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
25893           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
25894       ELSE
25895           ---------------------------------------------------------------------------------------------------
25896           -- 4262811a Switch Sign
25897           ---------------------------------------------------------------------------------------------------
25898           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
25899           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25900                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25901           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25902                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25903           -- 5132302
25904           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
25905                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25906 
25907       END IF;
25908 
25909       -- 4955764
25910       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25911       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
25912 
25913 
25914       XLA_AE_LINES_PKG.ValidateCurrentLine;
25915       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25916 
25917       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25918                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
25919                ,p_balance_type_code => l_balance_type_code);
25920 
25921    END IF;
25922 
25923    -----------------------------------------------------------------------------------------
25924    -- 4262811 Multiperiod Accounting
25925    -----------------------------------------------------------------------------------------
25926      -- No MPA option is assigned.
25927 
25928 
25929 END IF;
25930 END IF;
25931 --
25932 
25933 --
25934 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25935    trace
25936       (p_msg      => 'END of AcctLineType_49'
25937       ,p_level    => C_LEVEL_PROCEDURE
25938       ,p_module   => l_log_module);
25939 END IF;
25940 --
25941 EXCEPTION
25942   WHEN xla_exceptions_pkg.application_exception THEN
25943       RAISE;
25944   WHEN OTHERS THEN
25945        xla_exceptions_pkg.raise_message
25946            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_49');
25947 END AcctLineType_49;
25948 --
25949 
25950 ---------------------------------------
25951 --
25952 -- PRIVATE FUNCTION
25953 --         AcctLineType_50
25954 --
25955 ---------------------------------------
25956 PROCEDURE AcctLineType_50 (
25957   p_application_id        IN NUMBER
25958  ,p_event_id              IN NUMBER
25959  ,p_calculate_acctd_flag  IN VARCHAR2
25960  ,p_calculate_g_l_flag    IN VARCHAR2
25961  ,p_actual_flag           IN OUT VARCHAR2
25962  ,p_balance_type_code     OUT VARCHAR2
25963  ,p_gain_or_loss_ref      OUT VARCHAR2
25964  
25965 --Cost Management Default Account
25966  , p_source_4            IN NUMBER
25967 --Receiving Accounting Line Type
25968  , p_source_5            IN VARCHAR2
25969 --DISTRIBUTION_IDENTIFIER
25970  , p_source_11            IN NUMBER
25971 --Distribution Type
25972  , p_source_12            IN VARCHAR2
25973  , p_source_12_meaning    IN VARCHAR2
25974 --Entered Amount
25975  , p_source_18            IN NUMBER
25976 --Accounted Amount
25977  , p_source_22            IN NUMBER
25978 --Entered Currency Code
25979  , p_source_32            IN VARCHAR2
25980 --Currency Conversion Date
25981  , p_source_33            IN DATE
25982 --Currency Conversion Rate
25983  , p_source_34            IN NUMBER
25984 )
25985 IS
25986 
25987 l_component_type              VARCHAR2(80);
25988 l_component_code              VARCHAR2(30);
25989 l_component_type_code         VARCHAR2(1);
25990 l_component_appl_id           INTEGER;
25991 l_amb_context_code            VARCHAR2(30);
25992 l_entity_code                 VARCHAR2(30);
25993 l_event_class_code            VARCHAR2(30);
25994 l_ae_header_id                NUMBER;
25995 l_event_type_code             VARCHAR2(30);
25996 l_line_definition_code        VARCHAR2(30);
25997 l_line_definition_owner_code  VARCHAR2(1);
25998 --
25999 -- adr variables
26000 l_segment                     VARCHAR2(30);
26001 l_ccid                        NUMBER;
26002 l_adr_transaction_coa_id      NUMBER;
26003 l_adr_accounting_coa_id       NUMBER;
26004 l_adr_flexfield_segment_code  VARCHAR2(30);
26005 l_adr_flex_value_set_id       NUMBER;
26006 l_adr_value_type_code         VARCHAR2(30);
26007 l_adr_value_combination_id    NUMBER;
26008 l_adr_value_segment_code      VARCHAR2(30);
26009 
26010 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
26011 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
26012 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
26013 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
26014 
26015 -- 4262811 Variables ------------------------------------------------------------------------------------------
26016 l_entered_amt_idx             NUMBER;
26017 l_accted_amt_idx              NUMBER;
26018 l_acc_rev_flag                VARCHAR2(1);
26019 l_accrual_line_num            NUMBER;
26020 l_tmp_amt                     NUMBER;
26021 l_acc_rev_natural_side_code   VARCHAR2(1);
26022 
26023 l_num_entries                 NUMBER;
26024 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
26025 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
26026 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
26027 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
26028 l_recog_line_1                NUMBER;
26029 l_recog_line_2                NUMBER;
26030 
26031 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
26032 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
26033 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
26034 
26035 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
26036 
26037 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
26038 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
26039 
26040 ---------------------------------------------------------------------------------------------------------------
26041 
26042 
26043 --
26044 -- bulk performance
26045 --
26046 l_balance_type_code           VARCHAR2(1);
26047 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
26048 l_log_module                  VARCHAR2(240);
26049 
26050 --
26051 -- Upgrade strategy
26052 --
26053 l_actual_upg_option           VARCHAR2(1);
26054 l_enc_upg_option           VARCHAR2(1);
26055 
26056 --
26057 BEGIN
26058 --
26059 IF g_log_enabled THEN
26060       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_50';
26061 END IF;
26062 --
26063 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26064 
26065       trace
26066          (p_msg      => 'BEGIN of AcctLineType_50'
26067          ,p_level    => C_LEVEL_PROCEDURE
26068          ,p_module   => l_log_module);
26069 
26070 END IF;
26071 --
26072 l_component_type             := 'AMB_JLT';
26073 l_component_code             := 'EXPENSE';
26074 l_component_type_code        := 'S';
26075 l_component_appl_id          :=  707;
26076 l_amb_context_code           := 'DEFAULT';
26077 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
26078 l_event_class_code           := 'LDD_COST_ADJ_DEL';
26079 l_event_type_code            := 'LDD_COST_ADJ_DEL_ALL';
26080 l_line_definition_owner_code := 'S';
26081 l_line_definition_code       := 'LDD_COST_ADJ_DEL';
26082 --
26083 l_balance_type_code          := 'A';
26084 l_segment                     := NULL;
26085 l_ccid                        := NULL;
26086 l_adr_transaction_coa_id      := NULL;
26087 l_adr_accounting_coa_id       := NULL;
26088 l_adr_flexfield_segment_code  := NULL;
26089 l_adr_flex_value_set_id       := NULL;
26090 l_adr_value_type_code         := NULL;
26091 l_adr_value_combination_id    := NULL;
26092 l_adr_value_segment_code      := NULL;
26093 
26094 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
26095 l_bflow_class_code           := '';    -- 4219869 Business Flow
26096 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
26097 l_budgetary_control_flag     := 'N';
26098 
26099 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
26100 l_bflow_applied_to_amt       := NULL; -- 5132302
26101 l_entered_amt_idx            := NULL;          -- 4262811
26102 l_accted_amt_idx             := NULL;          -- 4262811
26103 l_acc_rev_flag               := NULL;          -- 4262811
26104 l_accrual_line_num           := NULL;          -- 4262811
26105 l_tmp_amt                    := NULL;          -- 4262811
26106 --
26107  
26108 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
26109     l_balance_type_code <> 'B' THEN
26110 IF NVL(p_source_5,'
26111 ') =  'Expense'
26112  THEN 
26113 
26114    --
26115    XLA_AE_LINES_PKG.SetNewLine;
26116 
26117    p_balance_type_code          := l_balance_type_code;
26118    -- set the flag so later we will know whether the gain loss line needs to be created
26119    
26120    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
26121      p_actual_flag :='A';
26122    END IF;
26123 
26124    --
26125    -- bulk performance
26126    --
26127    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
26128                                       p_header_num   => 0); -- 4262811
26129    --
26130    -- set accounting line options
26131    --
26132    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
26133            p_natural_side_code          => 'D'
26134          , p_gain_or_loss_flag          => 'N'
26135          , p_gl_transfer_mode_code      => 'S'
26136          , p_acct_entry_type_code       => 'A'
26137          , p_switch_side_flag           => 'Y'
26138          , p_merge_duplicate_code       => 'N'
26139          );
26140    --
26141    l_acc_rev_natural_side_code := 'C';  -- 4262811
26142    -- 
26143    --
26144    -- set accounting line type info
26145    --
26146    xla_ae_lines_pkg.SetAcctLineType
26147       (p_component_type             => l_component_type
26148       ,p_event_type_code            => l_event_type_code
26149       ,p_line_definition_owner_code => l_line_definition_owner_code
26150       ,p_line_definition_code       => l_line_definition_code
26151       ,p_accounting_line_code       => l_component_code
26152       ,p_accounting_line_type_code  => l_component_type_code
26153       ,p_accounting_line_appl_id    => l_component_appl_id
26154       ,p_amb_context_code           => l_amb_context_code
26155       ,p_entity_code                => l_entity_code
26156       ,p_event_class_code           => l_event_class_code);
26157    --
26158    -- set accounting class
26159    --
26160    xla_ae_lines_pkg.SetAcctClass(
26161            p_accounting_class_code  => 'EXPENSE'
26162          , p_ae_header_id           => l_ae_header_id
26163          );
26164 
26165    --
26166    -- set rounding class
26167    --
26168    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
26169                       'EXPENSE';
26170 
26171    --
26172    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
26173    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
26174    --
26175    -- bulk performance
26176    --
26177    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
26178 
26179    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
26180       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
26181 
26182    -- 4955764
26183    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26184       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
26185 
26186    -- 4458381 Public Sector Enh
26187    
26188    --
26189    -- set accounting attributes for the line type
26190    --
26191    l_entered_amt_idx := 3;
26192    l_accted_amt_idx  := 7;
26193    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
26194    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
26195    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
26196    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
26197    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
26198    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
26199    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
26200    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
26201    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
26202    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
26203    l_rec_acct_attrs.array_date_value(5)  := p_source_33;
26204    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
26205    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
26206    l_rec_acct_attrs.array_acct_attr_code(7) := 'LEDGER_AMOUNT';
26207    l_rec_acct_attrs.array_num_value(7)  := p_source_22;
26208 
26209    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
26210    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
26211 
26212    ---------------------------------------------------------------------------------------------------------------
26213    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
26214    ---------------------------------------------------------------------------------------------------------------
26215    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
26216 
26217    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26218    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26219 
26220    IF xla_accounting_cache_pkg.GetValueChar
26221          (p_source_code         => 'LEDGER_CATEGORY_CODE'
26222          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
26223    AND l_bflow_method_code = 'PRIOR_ENTRY'
26224 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
26225    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
26226          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
26227        )
26228    THEN
26229          xla_ae_lines_pkg.BflowUpgEntry
26230            (p_business_method_code    => l_bflow_method_code
26231            ,p_business_class_code     => l_bflow_class_code
26232            ,p_balance_type            => l_balance_type_code);
26233    ELSE
26234       NULL;
26235 -- No business flow processing for business flow method of NONE.
26236    END IF;
26237 
26238    --
26239    -- call analytical criteria
26240    --
26241    
26242    --
26243    -- call description
26244    --
26245    -- No description or it is inherited.
26246    --
26247    -- call ADRs
26248    -- Bug 4922099
26249    --
26250    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26251         (NVL(l_actual_upg_option, 'N') = 'O') OR
26252         (NVL(l_enc_upg_option, 'N') = 'O')
26253       )
26254    THEN
26255    NULL;
26256    --
26257    --
26258    
26259   l_ccid := AcctDerRule_4(
26260            p_application_id           => p_application_id
26261          , p_ae_header_id             => l_ae_header_id 
26262 , p_source_4 => p_source_4
26263          , x_transaction_coa_id       => l_adr_transaction_coa_id
26264          , x_accounting_coa_id        => l_adr_accounting_coa_id
26265          , x_value_type_code          => l_adr_value_type_code
26266          , p_side                     => 'NA'
26267    );
26268 
26269    xla_ae_lines_pkg.set_ccid(
26270     p_code_combination_id          => l_ccid
26271   , p_value_type_code              => l_adr_value_type_code
26272   , p_transaction_coa_id           => l_adr_transaction_coa_id
26273   , p_accounting_coa_id            => l_adr_accounting_coa_id
26274   , p_adr_code                     => 'CST_DEFAULT'
26275   , p_adr_type_code                => 'S'
26276   , p_component_type               => l_component_type
26277   , p_component_code               => l_component_code
26278   , p_component_type_code          => l_component_type_code
26279   , p_component_appl_id            => l_component_appl_id
26280   , p_amb_context_code             => l_amb_context_code
26281   , p_side                         => 'NA'
26282   );
26283 
26284 
26285    --
26286    --
26287    END IF;
26288    --
26289    -- Bug 4922099
26290    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
26291           (NVL(l_enc_upg_option, 'N') = 'O')
26292         ) AND
26293         (l_bflow_method_code = 'PRIOR_ENTRY')
26294       )
26295    THEN
26296       IF
26297       --
26298       1 = 2
26299       --
26300       THEN
26301       xla_accounting_err_pkg.build_message
26302                                     (p_appli_s_name            => 'XLA'
26303                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26304                                     ,p_token_1                 => 'LINE_NUMBER'
26305                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
26306                                     ,p_token_2                 => 'LINE_TYPE_NAME'
26307                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
26308                                                                              l_component_type
26309                                                                             ,l_component_code
26310                                                                             ,l_component_type_code
26311                                                                             ,l_component_appl_id
26312                                                                             ,l_amb_context_code
26313                                                                             ,l_entity_code
26314                                                                             ,l_event_class_code
26315                                                                            )
26316                                     ,p_token_3                 => 'OWNER'
26317                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
26318                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
26319                                                                           ,p_lookup_code    => l_component_type_code
26320                                                                          )
26321                                     ,p_token_4                 => 'PRODUCT_NAME'
26322                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
26323                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
26324                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
26325                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
26326                                     ,p_ae_header_id            =>  NULL
26327                                        );
26328 
26329         IF (C_LEVEL_ERROR>= g_log_level) THEN
26330                  trace
26331                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26332                       ,p_level    => C_LEVEL_ERROR
26333                       ,p_module   => l_log_module);
26334         END IF;
26335       END IF;
26336    END IF;
26337    --
26338    --
26339    ------------------------------------------------------------------------------------------------
26340    -- 4219869 Business Flow
26341    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
26342    -- Prior Entry.  Currently, the following code is always generated.
26343    ------------------------------------------------------------------------------------------------
26344    XLA_AE_LINES_PKG.ValidateCurrentLine;
26345 
26346    ------------------------------------------------------------------------------------
26347    -- 4219869 Business Flow
26348    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
26349    ------------------------------------------------------------------------------------
26350    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26351 
26352    ----------------------------------------------------------------------------------
26353    -- 4219869 Business Flow
26354    -- Update journal entry status -- Need to generate this within IF <condition>
26355    ----------------------------------------------------------------------------------
26356    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26357          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
26358          ,p_balance_type_code => l_balance_type_code
26359          );
26360 
26361    -------------------------------------------------------------------------------------------
26362    -- 4262811 - Generate the Accrual Reversal lines
26363    -------------------------------------------------------------------------------------------
26364    BEGIN
26365       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
26366                               (g_array_event(p_event_id).array_value_num('header_index'));
26367       IF l_acc_rev_flag IS NULL THEN
26368          l_acc_rev_flag := 'N';
26369       END IF;
26370    EXCEPTION
26371       WHEN OTHERS THEN
26372          l_acc_rev_flag := 'N';
26373    END;
26374    --
26375    IF (l_acc_rev_flag = 'Y') THEN
26376 
26377        -- 4645092  ------------------------------------------------------------------------------
26378        -- To allow MPA report to determine if it should generate report process
26379        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
26380        ------------------------------------------------------------------------------------------
26381 
26382        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
26383        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
26384    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
26385    -- call ADRs
26386    -- Bug 4922099
26387    --
26388    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26389         (NVL(l_actual_upg_option, 'N') = 'O') OR
26390         (NVL(l_enc_upg_option, 'N') = 'O')
26391       )
26392    THEN
26393    NULL;
26394    --
26395    --
26396    
26397   l_ccid := AcctDerRule_4(
26398            p_application_id           => p_application_id
26399          , p_ae_header_id             => l_ae_header_id 
26400 , p_source_4 => p_source_4
26401          , x_transaction_coa_id       => l_adr_transaction_coa_id
26402          , x_accounting_coa_id        => l_adr_accounting_coa_id
26403          , x_value_type_code          => l_adr_value_type_code
26404          , p_side                     => 'NA'
26405    );
26406 
26407    xla_ae_lines_pkg.set_ccid(
26408     p_code_combination_id          => l_ccid
26409   , p_value_type_code              => l_adr_value_type_code
26410   , p_transaction_coa_id           => l_adr_transaction_coa_id
26411   , p_accounting_coa_id            => l_adr_accounting_coa_id
26412   , p_adr_code                     => 'CST_DEFAULT'
26413   , p_adr_type_code                => 'S'
26414   , p_component_type               => l_component_type
26415   , p_component_code               => l_component_code
26416   , p_component_type_code          => l_component_type_code
26417   , p_component_appl_id            => l_component_appl_id
26418   , p_amb_context_code             => l_amb_context_code
26419   , p_side                         => 'NA'
26420   );
26421 
26422 
26423    --
26424    --
26425    END IF;
26426 
26427        --
26428        -- Update the line information that should be overwritten
26429        --
26430        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
26431                                          p_header_num   => 1);
26432        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
26433 
26434        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
26435 
26436        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
26437           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
26438        END IF;
26439 
26440       --
26441       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
26442       --
26443       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
26444           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
26445       ELSE
26446           ---------------------------------------------------------------------------------------------------
26447           -- 4262811a Switch Sign
26448           ---------------------------------------------------------------------------------------------------
26449           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
26450           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26451                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26452           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26453                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26454           -- 5132302
26455           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
26456                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26457 
26458       END IF;
26459 
26460       -- 4955764
26461       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26462       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
26463 
26464 
26465       XLA_AE_LINES_PKG.ValidateCurrentLine;
26466       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26467 
26468       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26469                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
26470                ,p_balance_type_code => l_balance_type_code);
26471 
26472    END IF;
26473 
26474    -----------------------------------------------------------------------------------------
26475    -- 4262811 Multiperiod Accounting
26476    -----------------------------------------------------------------------------------------
26477      -- No MPA option is assigned.
26478 
26479 
26480 END IF;
26481 END IF;
26482 --
26483 
26484 --
26485 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26486    trace
26487       (p_msg      => 'END of AcctLineType_50'
26488       ,p_level    => C_LEVEL_PROCEDURE
26489       ,p_module   => l_log_module);
26490 END IF;
26491 --
26492 EXCEPTION
26493   WHEN xla_exceptions_pkg.application_exception THEN
26494       RAISE;
26495   WHEN OTHERS THEN
26496        xla_exceptions_pkg.raise_message
26497            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_50');
26498 END AcctLineType_50;
26499 --
26500 
26501 ---------------------------------------
26502 --
26503 -- PRIVATE FUNCTION
26504 --         AcctLineType_51
26505 --
26506 ---------------------------------------
26507 PROCEDURE AcctLineType_51 (
26508   p_application_id        IN NUMBER
26509  ,p_event_id              IN NUMBER
26510  ,p_calculate_acctd_flag  IN VARCHAR2
26511  ,p_calculate_g_l_flag    IN VARCHAR2
26512  ,p_actual_flag           IN OUT VARCHAR2
26513  ,p_balance_type_code     OUT VARCHAR2
26514  ,p_gain_or_loss_ref      OUT VARCHAR2
26515  
26516 --Cost Management Default Account
26517  , p_source_4            IN NUMBER
26518 --DISTRIBUTION_IDENTIFIER
26519  , p_source_11            IN NUMBER
26520 --Distribution Type
26521  , p_source_12            IN VARCHAR2
26522  , p_source_12_meaning    IN VARCHAR2
26523 --Entered Currency Code
26524  , p_source_15            IN VARCHAR2
26525 --Entered Amount
26526  , p_source_18            IN NUMBER
26527 --Currency Conversion Date
26528  , p_source_19            IN DATE
26529 --Currency Conversion Rate
26530  , p_source_20            IN NUMBER
26531 --Currency Conversion Type
26532  , p_source_21            IN VARCHAR2
26533 --Accounted Amount
26534  , p_source_22            IN NUMBER
26535 --Accounting Line Type
26536  , p_source_24            IN NUMBER
26537 )
26538 IS
26539 
26540 l_component_type              VARCHAR2(80);
26541 l_component_code              VARCHAR2(30);
26542 l_component_type_code         VARCHAR2(1);
26543 l_component_appl_id           INTEGER;
26544 l_amb_context_code            VARCHAR2(30);
26545 l_entity_code                 VARCHAR2(30);
26546 l_event_class_code            VARCHAR2(30);
26547 l_ae_header_id                NUMBER;
26548 l_event_type_code             VARCHAR2(30);
26549 l_line_definition_code        VARCHAR2(30);
26550 l_line_definition_owner_code  VARCHAR2(1);
26551 --
26552 -- adr variables
26553 l_segment                     VARCHAR2(30);
26554 l_ccid                        NUMBER;
26555 l_adr_transaction_coa_id      NUMBER;
26556 l_adr_accounting_coa_id       NUMBER;
26557 l_adr_flexfield_segment_code  VARCHAR2(30);
26558 l_adr_flex_value_set_id       NUMBER;
26559 l_adr_value_type_code         VARCHAR2(30);
26560 l_adr_value_combination_id    NUMBER;
26561 l_adr_value_segment_code      VARCHAR2(30);
26562 
26563 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
26564 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
26565 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
26566 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
26567 
26568 -- 4262811 Variables ------------------------------------------------------------------------------------------
26569 l_entered_amt_idx             NUMBER;
26570 l_accted_amt_idx              NUMBER;
26571 l_acc_rev_flag                VARCHAR2(1);
26572 l_accrual_line_num            NUMBER;
26573 l_tmp_amt                     NUMBER;
26574 l_acc_rev_natural_side_code   VARCHAR2(1);
26575 
26576 l_num_entries                 NUMBER;
26577 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
26578 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
26579 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
26580 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
26581 l_recog_line_1                NUMBER;
26582 l_recog_line_2                NUMBER;
26583 
26584 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
26585 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
26586 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
26587 
26588 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
26589 
26590 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
26591 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
26592 
26593 ---------------------------------------------------------------------------------------------------------------
26594 
26595 
26596 --
26597 -- bulk performance
26598 --
26599 l_balance_type_code           VARCHAR2(1);
26600 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
26601 l_log_module                  VARCHAR2(240);
26602 
26603 --
26604 -- Upgrade strategy
26605 --
26606 l_actual_upg_option           VARCHAR2(1);
26607 l_enc_upg_option           VARCHAR2(1);
26608 
26609 --
26610 BEGIN
26611 --
26612 IF g_log_enabled THEN
26613       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_51';
26614 END IF;
26615 --
26616 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26617 
26618       trace
26619          (p_msg      => 'BEGIN of AcctLineType_51'
26620          ,p_level    => C_LEVEL_PROCEDURE
26621          ,p_module   => l_log_module);
26622 
26623 END IF;
26624 --
26625 l_component_type             := 'AMB_JLT';
26626 l_component_code             := 'EXPENSE';
26627 l_component_type_code        := 'S';
26628 l_component_appl_id          :=  707;
26629 l_amb_context_code           := 'DEFAULT';
26630 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
26631 l_event_class_code           := 'USER_DEFINE';
26632 l_event_type_code            := 'UAVG_COST_UPD';
26633 l_line_definition_owner_code := 'S';
26634 l_line_definition_code       := 'USER_COST_UPD';
26635 --
26636 l_balance_type_code          := 'A';
26637 l_segment                     := NULL;
26638 l_ccid                        := NULL;
26639 l_adr_transaction_coa_id      := NULL;
26640 l_adr_accounting_coa_id       := NULL;
26641 l_adr_flexfield_segment_code  := NULL;
26642 l_adr_flex_value_set_id       := NULL;
26643 l_adr_value_type_code         := NULL;
26644 l_adr_value_combination_id    := NULL;
26645 l_adr_value_segment_code      := NULL;
26646 
26647 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
26648 l_bflow_class_code           := '';    -- 4219869 Business Flow
26649 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
26650 l_budgetary_control_flag     := 'N';
26651 
26652 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
26653 l_bflow_applied_to_amt       := NULL; -- 5132302
26654 l_entered_amt_idx            := NULL;          -- 4262811
26655 l_accted_amt_idx             := NULL;          -- 4262811
26656 l_acc_rev_flag               := NULL;          -- 4262811
26657 l_accrual_line_num           := NULL;          -- 4262811
26658 l_tmp_amt                    := NULL;          -- 4262811
26659 --
26660  
26661 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
26662     l_balance_type_code <> 'B' THEN
26663 IF NVL(p_source_24,9E125) =  20
26664  THEN 
26665 
26666    --
26667    XLA_AE_LINES_PKG.SetNewLine;
26668 
26669    p_balance_type_code          := l_balance_type_code;
26670    -- set the flag so later we will know whether the gain loss line needs to be created
26671    
26672    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
26673      p_actual_flag :='A';
26674    END IF;
26675 
26676    --
26677    -- bulk performance
26678    --
26679    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
26680                                       p_header_num   => 0); -- 4262811
26681    --
26682    -- set accounting line options
26683    --
26684    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
26685            p_natural_side_code          => 'D'
26686          , p_gain_or_loss_flag          => 'N'
26687          , p_gl_transfer_mode_code      => 'S'
26688          , p_acct_entry_type_code       => 'A'
26689          , p_switch_side_flag           => 'Y'
26690          , p_merge_duplicate_code       => 'N'
26691          );
26692    --
26693    l_acc_rev_natural_side_code := 'C';  -- 4262811
26694    -- 
26695    --
26696    -- set accounting line type info
26697    --
26698    xla_ae_lines_pkg.SetAcctLineType
26699       (p_component_type             => l_component_type
26700       ,p_event_type_code            => l_event_type_code
26701       ,p_line_definition_owner_code => l_line_definition_owner_code
26702       ,p_line_definition_code       => l_line_definition_code
26703       ,p_accounting_line_code       => l_component_code
26704       ,p_accounting_line_type_code  => l_component_type_code
26705       ,p_accounting_line_appl_id    => l_component_appl_id
26706       ,p_amb_context_code           => l_amb_context_code
26707       ,p_entity_code                => l_entity_code
26708       ,p_event_class_code           => l_event_class_code);
26709    --
26710    -- set accounting class
26711    --
26712    xla_ae_lines_pkg.SetAcctClass(
26713            p_accounting_class_code  => 'EXPENSE'
26714          , p_ae_header_id           => l_ae_header_id
26715          );
26716 
26717    --
26718    -- set rounding class
26719    --
26720    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
26721                       'EXPENSE';
26722 
26723    --
26724    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
26725    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
26726    --
26727    -- bulk performance
26728    --
26729    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
26730 
26731    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
26732       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
26733 
26734    -- 4955764
26735    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26736       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
26737 
26738    -- 4458381 Public Sector Enh
26739    
26740    --
26741    -- set accounting attributes for the line type
26742    --
26743    l_entered_amt_idx := 3;
26744    l_accted_amt_idx  := 8;
26745    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
26746    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
26747    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
26748    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
26749    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
26750    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
26751    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
26752    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
26753    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
26754    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
26755    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
26756    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
26757    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
26758    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
26759    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
26760    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
26761    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
26762 
26763    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
26764    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
26765 
26766    ---------------------------------------------------------------------------------------------------------------
26767    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
26768    ---------------------------------------------------------------------------------------------------------------
26769    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
26770 
26771    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26772    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26773 
26774    IF xla_accounting_cache_pkg.GetValueChar
26775          (p_source_code         => 'LEDGER_CATEGORY_CODE'
26776          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
26777    AND l_bflow_method_code = 'PRIOR_ENTRY'
26778 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
26779    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
26780          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
26781        )
26782    THEN
26783          xla_ae_lines_pkg.BflowUpgEntry
26784            (p_business_method_code    => l_bflow_method_code
26785            ,p_business_class_code     => l_bflow_class_code
26786            ,p_balance_type            => l_balance_type_code);
26787    ELSE
26788       NULL;
26789 -- No business flow processing for business flow method of NONE.
26790    END IF;
26791 
26792    --
26793    -- call analytical criteria
26794    --
26795    
26796    --
26797    -- call description
26798    --
26799    -- No description or it is inherited.
26800    --
26801    -- call ADRs
26802    -- Bug 4922099
26803    --
26804    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26805         (NVL(l_actual_upg_option, 'N') = 'O') OR
26806         (NVL(l_enc_upg_option, 'N') = 'O')
26807       )
26808    THEN
26809    NULL;
26810    --
26811    --
26812    
26813   l_ccid := AcctDerRule_4(
26814            p_application_id           => p_application_id
26815          , p_ae_header_id             => l_ae_header_id 
26816 , p_source_4 => p_source_4
26817          , x_transaction_coa_id       => l_adr_transaction_coa_id
26818          , x_accounting_coa_id        => l_adr_accounting_coa_id
26819          , x_value_type_code          => l_adr_value_type_code
26820          , p_side                     => 'NA'
26821    );
26822 
26823    xla_ae_lines_pkg.set_ccid(
26824     p_code_combination_id          => l_ccid
26825   , p_value_type_code              => l_adr_value_type_code
26826   , p_transaction_coa_id           => l_adr_transaction_coa_id
26827   , p_accounting_coa_id            => l_adr_accounting_coa_id
26828   , p_adr_code                     => 'CST_DEFAULT'
26829   , p_adr_type_code                => 'S'
26830   , p_component_type               => l_component_type
26831   , p_component_code               => l_component_code
26832   , p_component_type_code          => l_component_type_code
26833   , p_component_appl_id            => l_component_appl_id
26834   , p_amb_context_code             => l_amb_context_code
26835   , p_side                         => 'NA'
26836   );
26837 
26838 
26839    --
26840    --
26841    END IF;
26842    --
26843    -- Bug 4922099
26844    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
26845           (NVL(l_enc_upg_option, 'N') = 'O')
26846         ) AND
26847         (l_bflow_method_code = 'PRIOR_ENTRY')
26848       )
26849    THEN
26850       IF
26851       --
26852       1 = 2
26853       --
26854       THEN
26855       xla_accounting_err_pkg.build_message
26856                                     (p_appli_s_name            => 'XLA'
26857                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26858                                     ,p_token_1                 => 'LINE_NUMBER'
26859                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
26860                                     ,p_token_2                 => 'LINE_TYPE_NAME'
26861                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
26862                                                                              l_component_type
26863                                                                             ,l_component_code
26864                                                                             ,l_component_type_code
26865                                                                             ,l_component_appl_id
26866                                                                             ,l_amb_context_code
26867                                                                             ,l_entity_code
26868                                                                             ,l_event_class_code
26869                                                                            )
26870                                     ,p_token_3                 => 'OWNER'
26871                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
26872                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
26873                                                                           ,p_lookup_code    => l_component_type_code
26874                                                                          )
26875                                     ,p_token_4                 => 'PRODUCT_NAME'
26876                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
26877                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
26878                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
26879                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
26880                                     ,p_ae_header_id            =>  NULL
26881                                        );
26882 
26883         IF (C_LEVEL_ERROR>= g_log_level) THEN
26884                  trace
26885                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26886                       ,p_level    => C_LEVEL_ERROR
26887                       ,p_module   => l_log_module);
26888         END IF;
26889       END IF;
26890    END IF;
26891    --
26892    --
26893    ------------------------------------------------------------------------------------------------
26894    -- 4219869 Business Flow
26895    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
26896    -- Prior Entry.  Currently, the following code is always generated.
26897    ------------------------------------------------------------------------------------------------
26898    XLA_AE_LINES_PKG.ValidateCurrentLine;
26899 
26900    ------------------------------------------------------------------------------------
26901    -- 4219869 Business Flow
26902    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
26903    ------------------------------------------------------------------------------------
26904    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26905 
26906    ----------------------------------------------------------------------------------
26907    -- 4219869 Business Flow
26908    -- Update journal entry status -- Need to generate this within IF <condition>
26909    ----------------------------------------------------------------------------------
26910    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26911          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
26912          ,p_balance_type_code => l_balance_type_code
26913          );
26914 
26915    -------------------------------------------------------------------------------------------
26916    -- 4262811 - Generate the Accrual Reversal lines
26917    -------------------------------------------------------------------------------------------
26918    BEGIN
26919       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
26920                               (g_array_event(p_event_id).array_value_num('header_index'));
26921       IF l_acc_rev_flag IS NULL THEN
26922          l_acc_rev_flag := 'N';
26923       END IF;
26924    EXCEPTION
26925       WHEN OTHERS THEN
26926          l_acc_rev_flag := 'N';
26927    END;
26928    --
26929    IF (l_acc_rev_flag = 'Y') THEN
26930 
26931        -- 4645092  ------------------------------------------------------------------------------
26932        -- To allow MPA report to determine if it should generate report process
26933        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
26934        ------------------------------------------------------------------------------------------
26935 
26936        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
26937        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
26938    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
26939    -- call ADRs
26940    -- Bug 4922099
26941    --
26942    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26943         (NVL(l_actual_upg_option, 'N') = 'O') OR
26944         (NVL(l_enc_upg_option, 'N') = 'O')
26945       )
26946    THEN
26947    NULL;
26948    --
26949    --
26950    
26951   l_ccid := AcctDerRule_4(
26952            p_application_id           => p_application_id
26953          , p_ae_header_id             => l_ae_header_id 
26954 , p_source_4 => p_source_4
26955          , x_transaction_coa_id       => l_adr_transaction_coa_id
26956          , x_accounting_coa_id        => l_adr_accounting_coa_id
26957          , x_value_type_code          => l_adr_value_type_code
26958          , p_side                     => 'NA'
26959    );
26960 
26961    xla_ae_lines_pkg.set_ccid(
26962     p_code_combination_id          => l_ccid
26963   , p_value_type_code              => l_adr_value_type_code
26964   , p_transaction_coa_id           => l_adr_transaction_coa_id
26965   , p_accounting_coa_id            => l_adr_accounting_coa_id
26966   , p_adr_code                     => 'CST_DEFAULT'
26967   , p_adr_type_code                => 'S'
26968   , p_component_type               => l_component_type
26969   , p_component_code               => l_component_code
26970   , p_component_type_code          => l_component_type_code
26971   , p_component_appl_id            => l_component_appl_id
26972   , p_amb_context_code             => l_amb_context_code
26973   , p_side                         => 'NA'
26974   );
26975 
26976 
26977    --
26978    --
26979    END IF;
26980 
26981        --
26982        -- Update the line information that should be overwritten
26983        --
26984        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
26985                                          p_header_num   => 1);
26986        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
26987 
26988        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
26989 
26990        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
26991           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
26992        END IF;
26993 
26994       --
26995       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
26996       --
26997       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
26998           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
26999       ELSE
27000           ---------------------------------------------------------------------------------------------------
27001           -- 4262811a Switch Sign
27002           ---------------------------------------------------------------------------------------------------
27003           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
27004           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27005                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27006           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27007                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27008           -- 5132302
27009           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
27010                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27011 
27012       END IF;
27013 
27014       -- 4955764
27015       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27016       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
27017 
27018 
27019       XLA_AE_LINES_PKG.ValidateCurrentLine;
27020       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27021 
27022       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27023                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
27024                ,p_balance_type_code => l_balance_type_code);
27025 
27026    END IF;
27027 
27028    -----------------------------------------------------------------------------------------
27029    -- 4262811 Multiperiod Accounting
27030    -----------------------------------------------------------------------------------------
27031      -- No MPA option is assigned.
27032 
27033 
27034 END IF;
27035 END IF;
27036 --
27037 
27038 --
27039 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27040    trace
27041       (p_msg      => 'END of AcctLineType_51'
27042       ,p_level    => C_LEVEL_PROCEDURE
27043       ,p_module   => l_log_module);
27044 END IF;
27045 --
27046 EXCEPTION
27047   WHEN xla_exceptions_pkg.application_exception THEN
27048       RAISE;
27049   WHEN OTHERS THEN
27050        xla_exceptions_pkg.raise_message
27051            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_51');
27052 END AcctLineType_51;
27053 --
27054 
27055 ---------------------------------------
27056 --
27057 -- PRIVATE FUNCTION
27058 --         AcctLineType_52
27059 --
27060 ---------------------------------------
27061 PROCEDURE AcctLineType_52 (
27062   p_application_id        IN NUMBER
27063  ,p_event_id              IN NUMBER
27064  ,p_calculate_acctd_flag  IN VARCHAR2
27065  ,p_calculate_g_l_flag    IN VARCHAR2
27066  ,p_actual_flag           IN OUT VARCHAR2
27067  ,p_balance_type_code     OUT VARCHAR2
27068  ,p_gain_or_loss_ref      OUT VARCHAR2
27069  
27070 --Cost Management Default Account
27071  , p_source_4            IN NUMBER
27072 --DISTRIBUTION_IDENTIFIER
27073  , p_source_11            IN NUMBER
27074 --Distribution Type
27075  , p_source_12            IN VARCHAR2
27076  , p_source_12_meaning    IN VARCHAR2
27077 --Entered Currency Code
27078  , p_source_15            IN VARCHAR2
27079 --Entered Amount
27080  , p_source_18            IN NUMBER
27081 --Currency Conversion Date
27082  , p_source_19            IN DATE
27083 --Currency Conversion Rate
27084  , p_source_20            IN NUMBER
27085 --Currency Conversion Type
27086  , p_source_21            IN VARCHAR2
27087 --Accounted Amount
27088  , p_source_22            IN NUMBER
27089 --Accounting Line Type
27090  , p_source_24            IN NUMBER
27091 )
27092 IS
27093 
27094 l_component_type              VARCHAR2(80);
27095 l_component_code              VARCHAR2(30);
27096 l_component_type_code         VARCHAR2(1);
27097 l_component_appl_id           INTEGER;
27098 l_amb_context_code            VARCHAR2(30);
27099 l_entity_code                 VARCHAR2(30);
27100 l_event_class_code            VARCHAR2(30);
27101 l_ae_header_id                NUMBER;
27102 l_event_type_code             VARCHAR2(30);
27103 l_line_definition_code        VARCHAR2(30);
27104 l_line_definition_owner_code  VARCHAR2(1);
27105 --
27106 -- adr variables
27107 l_segment                     VARCHAR2(30);
27108 l_ccid                        NUMBER;
27109 l_adr_transaction_coa_id      NUMBER;
27110 l_adr_accounting_coa_id       NUMBER;
27111 l_adr_flexfield_segment_code  VARCHAR2(30);
27112 l_adr_flex_value_set_id       NUMBER;
27113 l_adr_value_type_code         VARCHAR2(30);
27114 l_adr_value_combination_id    NUMBER;
27115 l_adr_value_segment_code      VARCHAR2(30);
27116 
27117 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
27118 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
27119 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
27120 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
27121 
27122 -- 4262811 Variables ------------------------------------------------------------------------------------------
27123 l_entered_amt_idx             NUMBER;
27124 l_accted_amt_idx              NUMBER;
27125 l_acc_rev_flag                VARCHAR2(1);
27126 l_accrual_line_num            NUMBER;
27127 l_tmp_amt                     NUMBER;
27128 l_acc_rev_natural_side_code   VARCHAR2(1);
27129 
27130 l_num_entries                 NUMBER;
27131 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
27132 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
27133 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
27134 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
27135 l_recog_line_1                NUMBER;
27136 l_recog_line_2                NUMBER;
27137 
27138 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
27139 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
27140 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
27141 
27142 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
27143 
27144 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
27145 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
27146 
27147 ---------------------------------------------------------------------------------------------------------------
27148 
27149 
27150 --
27151 -- bulk performance
27152 --
27153 l_balance_type_code           VARCHAR2(1);
27154 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
27155 l_log_module                  VARCHAR2(240);
27156 
27157 --
27158 -- Upgrade strategy
27159 --
27160 l_actual_upg_option           VARCHAR2(1);
27161 l_enc_upg_option           VARCHAR2(1);
27162 
27163 --
27164 BEGIN
27165 --
27166 IF g_log_enabled THEN
27167       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_52';
27168 END IF;
27169 --
27170 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27171 
27172       trace
27173          (p_msg      => 'BEGIN of AcctLineType_52'
27174          ,p_level    => C_LEVEL_PROCEDURE
27175          ,p_module   => l_log_module);
27176 
27177 END IF;
27178 --
27179 l_component_type             := 'AMB_JLT';
27180 l_component_code             := 'EXPENSE';
27181 l_component_type_code        := 'S';
27182 l_component_appl_id          :=  707;
27183 l_amb_context_code           := 'DEFAULT';
27184 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
27185 l_event_class_code           := 'MTL_COST_UPD';
27186 l_event_type_code            := 'MTL_COST_UPD_ALL';
27187 l_line_definition_owner_code := 'S';
27188 l_line_definition_code       := 'MTL_COST_UPD';
27189 --
27190 l_balance_type_code          := 'A';
27191 l_segment                     := NULL;
27192 l_ccid                        := NULL;
27193 l_adr_transaction_coa_id      := NULL;
27194 l_adr_accounting_coa_id       := NULL;
27195 l_adr_flexfield_segment_code  := NULL;
27196 l_adr_flex_value_set_id       := NULL;
27197 l_adr_value_type_code         := NULL;
27198 l_adr_value_combination_id    := NULL;
27199 l_adr_value_segment_code      := NULL;
27200 
27201 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
27202 l_bflow_class_code           := '';    -- 4219869 Business Flow
27203 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
27204 l_budgetary_control_flag     := 'N';
27205 
27206 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
27207 l_bflow_applied_to_amt       := NULL; -- 5132302
27208 l_entered_amt_idx            := NULL;          -- 4262811
27209 l_accted_amt_idx             := NULL;          -- 4262811
27210 l_acc_rev_flag               := NULL;          -- 4262811
27211 l_accrual_line_num           := NULL;          -- 4262811
27212 l_tmp_amt                    := NULL;          -- 4262811
27213 --
27214  
27215 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
27216     l_balance_type_code <> 'B' THEN
27217 IF NVL(p_source_24,9E125) =  20
27218  THEN 
27219 
27220    --
27221    XLA_AE_LINES_PKG.SetNewLine;
27222 
27223    p_balance_type_code          := l_balance_type_code;
27224    -- set the flag so later we will know whether the gain loss line needs to be created
27225    
27226    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
27227      p_actual_flag :='A';
27228    END IF;
27229 
27230    --
27231    -- bulk performance
27232    --
27233    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
27234                                       p_header_num   => 0); -- 4262811
27235    --
27236    -- set accounting line options
27237    --
27238    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
27239            p_natural_side_code          => 'D'
27240          , p_gain_or_loss_flag          => 'N'
27241          , p_gl_transfer_mode_code      => 'S'
27242          , p_acct_entry_type_code       => 'A'
27243          , p_switch_side_flag           => 'Y'
27244          , p_merge_duplicate_code       => 'N'
27245          );
27246    --
27247    l_acc_rev_natural_side_code := 'C';  -- 4262811
27248    -- 
27249    --
27250    -- set accounting line type info
27251    --
27252    xla_ae_lines_pkg.SetAcctLineType
27253       (p_component_type             => l_component_type
27254       ,p_event_type_code            => l_event_type_code
27255       ,p_line_definition_owner_code => l_line_definition_owner_code
27256       ,p_line_definition_code       => l_line_definition_code
27257       ,p_accounting_line_code       => l_component_code
27258       ,p_accounting_line_type_code  => l_component_type_code
27259       ,p_accounting_line_appl_id    => l_component_appl_id
27260       ,p_amb_context_code           => l_amb_context_code
27261       ,p_entity_code                => l_entity_code
27262       ,p_event_class_code           => l_event_class_code);
27263    --
27264    -- set accounting class
27265    --
27266    xla_ae_lines_pkg.SetAcctClass(
27267            p_accounting_class_code  => 'EXPENSE'
27268          , p_ae_header_id           => l_ae_header_id
27269          );
27270 
27271    --
27272    -- set rounding class
27273    --
27274    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
27275                       'EXPENSE';
27276 
27277    --
27278    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
27279    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
27280    --
27281    -- bulk performance
27282    --
27283    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
27284 
27285    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
27286       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
27287 
27288    -- 4955764
27289    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27290       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
27291 
27292    -- 4458381 Public Sector Enh
27293    
27294    --
27295    -- set accounting attributes for the line type
27296    --
27297    l_entered_amt_idx := 3;
27298    l_accted_amt_idx  := 8;
27299    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
27300    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
27301    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
27302    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
27303    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
27304    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
27305    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
27306    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
27307    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
27308    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
27309    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
27310    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
27311    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
27312    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
27313    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
27314    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
27315    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
27316 
27317    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
27318    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
27319 
27320    ---------------------------------------------------------------------------------------------------------------
27321    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
27322    ---------------------------------------------------------------------------------------------------------------
27323    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
27324 
27325    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27326    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27327 
27328    IF xla_accounting_cache_pkg.GetValueChar
27329          (p_source_code         => 'LEDGER_CATEGORY_CODE'
27330          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
27331    AND l_bflow_method_code = 'PRIOR_ENTRY'
27332 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
27333    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
27334          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
27335        )
27336    THEN
27337          xla_ae_lines_pkg.BflowUpgEntry
27338            (p_business_method_code    => l_bflow_method_code
27339            ,p_business_class_code     => l_bflow_class_code
27340            ,p_balance_type            => l_balance_type_code);
27341    ELSE
27342       NULL;
27343 -- No business flow processing for business flow method of NONE.
27344    END IF;
27345 
27346    --
27347    -- call analytical criteria
27348    --
27349    
27350    --
27351    -- call description
27352    --
27353    -- No description or it is inherited.
27354    --
27355    -- call ADRs
27356    -- Bug 4922099
27357    --
27358    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27359         (NVL(l_actual_upg_option, 'N') = 'O') OR
27360         (NVL(l_enc_upg_option, 'N') = 'O')
27361       )
27362    THEN
27363    NULL;
27364    --
27365    --
27366    
27367   l_ccid := AcctDerRule_4(
27368            p_application_id           => p_application_id
27369          , p_ae_header_id             => l_ae_header_id 
27370 , p_source_4 => p_source_4
27371          , x_transaction_coa_id       => l_adr_transaction_coa_id
27372          , x_accounting_coa_id        => l_adr_accounting_coa_id
27373          , x_value_type_code          => l_adr_value_type_code
27374          , p_side                     => 'NA'
27375    );
27376 
27377    xla_ae_lines_pkg.set_ccid(
27378     p_code_combination_id          => l_ccid
27379   , p_value_type_code              => l_adr_value_type_code
27380   , p_transaction_coa_id           => l_adr_transaction_coa_id
27381   , p_accounting_coa_id            => l_adr_accounting_coa_id
27382   , p_adr_code                     => 'CST_DEFAULT'
27383   , p_adr_type_code                => 'S'
27384   , p_component_type               => l_component_type
27385   , p_component_code               => l_component_code
27386   , p_component_type_code          => l_component_type_code
27387   , p_component_appl_id            => l_component_appl_id
27388   , p_amb_context_code             => l_amb_context_code
27389   , p_side                         => 'NA'
27390   );
27391 
27392 
27393    --
27394    --
27395    END IF;
27396    --
27397    -- Bug 4922099
27398    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
27399           (NVL(l_enc_upg_option, 'N') = 'O')
27400         ) AND
27401         (l_bflow_method_code = 'PRIOR_ENTRY')
27402       )
27403    THEN
27404       IF
27405       --
27406       1 = 2
27407       --
27408       THEN
27409       xla_accounting_err_pkg.build_message
27410                                     (p_appli_s_name            => 'XLA'
27411                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27412                                     ,p_token_1                 => 'LINE_NUMBER'
27413                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
27414                                     ,p_token_2                 => 'LINE_TYPE_NAME'
27415                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
27416                                                                              l_component_type
27417                                                                             ,l_component_code
27418                                                                             ,l_component_type_code
27419                                                                             ,l_component_appl_id
27420                                                                             ,l_amb_context_code
27421                                                                             ,l_entity_code
27422                                                                             ,l_event_class_code
27423                                                                            )
27424                                     ,p_token_3                 => 'OWNER'
27425                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
27426                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
27427                                                                           ,p_lookup_code    => l_component_type_code
27428                                                                          )
27429                                     ,p_token_4                 => 'PRODUCT_NAME'
27430                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
27431                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
27432                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
27433                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
27434                                     ,p_ae_header_id            =>  NULL
27435                                        );
27436 
27437         IF (C_LEVEL_ERROR>= g_log_level) THEN
27438                  trace
27439                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27440                       ,p_level    => C_LEVEL_ERROR
27441                       ,p_module   => l_log_module);
27442         END IF;
27443       END IF;
27444    END IF;
27445    --
27446    --
27447    ------------------------------------------------------------------------------------------------
27448    -- 4219869 Business Flow
27449    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
27450    -- Prior Entry.  Currently, the following code is always generated.
27451    ------------------------------------------------------------------------------------------------
27452    XLA_AE_LINES_PKG.ValidateCurrentLine;
27453 
27454    ------------------------------------------------------------------------------------
27455    -- 4219869 Business Flow
27456    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
27457    ------------------------------------------------------------------------------------
27458    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27459 
27460    ----------------------------------------------------------------------------------
27461    -- 4219869 Business Flow
27462    -- Update journal entry status -- Need to generate this within IF <condition>
27463    ----------------------------------------------------------------------------------
27464    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27465          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
27466          ,p_balance_type_code => l_balance_type_code
27467          );
27468 
27469    -------------------------------------------------------------------------------------------
27470    -- 4262811 - Generate the Accrual Reversal lines
27471    -------------------------------------------------------------------------------------------
27472    BEGIN
27473       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
27474                               (g_array_event(p_event_id).array_value_num('header_index'));
27475       IF l_acc_rev_flag IS NULL THEN
27476          l_acc_rev_flag := 'N';
27477       END IF;
27478    EXCEPTION
27479       WHEN OTHERS THEN
27480          l_acc_rev_flag := 'N';
27481    END;
27482    --
27483    IF (l_acc_rev_flag = 'Y') THEN
27484 
27485        -- 4645092  ------------------------------------------------------------------------------
27486        -- To allow MPA report to determine if it should generate report process
27487        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
27488        ------------------------------------------------------------------------------------------
27489 
27490        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
27491        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
27492    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
27493    -- call ADRs
27494    -- Bug 4922099
27495    --
27496    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27497         (NVL(l_actual_upg_option, 'N') = 'O') OR
27498         (NVL(l_enc_upg_option, 'N') = 'O')
27499       )
27500    THEN
27501    NULL;
27502    --
27503    --
27504    
27505   l_ccid := AcctDerRule_4(
27506            p_application_id           => p_application_id
27507          , p_ae_header_id             => l_ae_header_id 
27508 , p_source_4 => p_source_4
27509          , x_transaction_coa_id       => l_adr_transaction_coa_id
27510          , x_accounting_coa_id        => l_adr_accounting_coa_id
27511          , x_value_type_code          => l_adr_value_type_code
27512          , p_side                     => 'NA'
27513    );
27514 
27515    xla_ae_lines_pkg.set_ccid(
27516     p_code_combination_id          => l_ccid
27517   , p_value_type_code              => l_adr_value_type_code
27518   , p_transaction_coa_id           => l_adr_transaction_coa_id
27519   , p_accounting_coa_id            => l_adr_accounting_coa_id
27520   , p_adr_code                     => 'CST_DEFAULT'
27521   , p_adr_type_code                => 'S'
27522   , p_component_type               => l_component_type
27523   , p_component_code               => l_component_code
27524   , p_component_type_code          => l_component_type_code
27525   , p_component_appl_id            => l_component_appl_id
27526   , p_amb_context_code             => l_amb_context_code
27527   , p_side                         => 'NA'
27528   );
27529 
27530 
27531    --
27532    --
27533    END IF;
27534 
27535        --
27536        -- Update the line information that should be overwritten
27537        --
27538        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
27539                                          p_header_num   => 1);
27540        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
27541 
27542        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
27543 
27544        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
27545           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
27546        END IF;
27547 
27548       --
27549       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
27550       --
27551       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
27552           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
27553       ELSE
27554           ---------------------------------------------------------------------------------------------------
27555           -- 4262811a Switch Sign
27556           ---------------------------------------------------------------------------------------------------
27557           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
27558           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27559                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27560           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27561                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27562           -- 5132302
27563           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
27564                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27565 
27566       END IF;
27567 
27568       -- 4955764
27569       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27570       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
27571 
27572 
27573       XLA_AE_LINES_PKG.ValidateCurrentLine;
27574       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27575 
27576       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27577                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
27578                ,p_balance_type_code => l_balance_type_code);
27579 
27580    END IF;
27581 
27582    -----------------------------------------------------------------------------------------
27583    -- 4262811 Multiperiod Accounting
27584    -----------------------------------------------------------------------------------------
27585      -- No MPA option is assigned.
27586 
27587 
27588 END IF;
27589 END IF;
27590 --
27591 
27592 --
27593 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27594    trace
27595       (p_msg      => 'END of AcctLineType_52'
27596       ,p_level    => C_LEVEL_PROCEDURE
27597       ,p_module   => l_log_module);
27598 END IF;
27599 --
27600 EXCEPTION
27601   WHEN xla_exceptions_pkg.application_exception THEN
27602       RAISE;
27603   WHEN OTHERS THEN
27604        xla_exceptions_pkg.raise_message
27605            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_52');
27606 END AcctLineType_52;
27607 --
27608 
27609 ---------------------------------------
27610 --
27611 -- PRIVATE FUNCTION
27612 --         AcctLineType_53
27613 --
27614 ---------------------------------------
27615 PROCEDURE AcctLineType_53 (
27616   p_application_id        IN NUMBER
27617  ,p_event_id              IN NUMBER
27618  ,p_calculate_acctd_flag  IN VARCHAR2
27619  ,p_calculate_g_l_flag    IN VARCHAR2
27620  ,p_actual_flag           IN OUT VARCHAR2
27621  ,p_balance_type_code     OUT VARCHAR2
27622  ,p_gain_or_loss_ref      OUT VARCHAR2
27623  
27624 --Cost Management Default Account
27625  , p_source_4            IN NUMBER
27626 --Applied to Application ID
27627  , p_source_6            IN NUMBER
27628 --Applied to Distribution Link Type
27629  , p_source_7            IN VARCHAR2
27630 --Applied to Entity Code
27631  , p_source_8            IN VARCHAR2
27632 --DISTRIBUTION_IDENTIFIER
27633  , p_source_11            IN NUMBER
27634 --Distribution Type
27635  , p_source_12            IN VARCHAR2
27636  , p_source_12_meaning    IN VARCHAR2
27637 --Encumbrance Reversal Amount Entered
27638  , p_source_14            IN NUMBER
27639 --Entered Currency Code
27640  , p_source_15            IN VARCHAR2
27641 --Transaction Encumbrance Reversal Amount
27642  , p_source_16            IN NUMBER
27643 --Entered Amount
27644  , p_source_18            IN NUMBER
27645 --Currency Conversion Date
27646  , p_source_19            IN DATE
27647 --Currency Conversion Rate
27648  , p_source_20            IN NUMBER
27649 --Currency Conversion Type
27650  , p_source_21            IN VARCHAR2
27651 --Accounted Amount
27652  , p_source_22            IN NUMBER
27653 --Accounting Line Type
27654  , p_source_24            IN NUMBER
27655 --Costing Encumbrance Upgrade Option
27656  , p_source_27            IN VARCHAR2
27657 --TXN_PO_DISTRIBUTION_ID
27658  , p_source_28            IN NUMBER
27659 --TXN_PO_HEADER_ID
27660  , p_source_29            IN NUMBER
27661 --Requisition Budget Account
27662  , p_source_30            IN NUMBER
27663 --Requisition Encumbrance Type Identifier
27664  , p_source_31            IN NUMBER
27665 )
27666 IS
27667 
27668 l_component_type              VARCHAR2(80);
27669 l_component_code              VARCHAR2(30);
27670 l_component_type_code         VARCHAR2(1);
27671 l_component_appl_id           INTEGER;
27672 l_amb_context_code            VARCHAR2(30);
27673 l_entity_code                 VARCHAR2(30);
27674 l_event_class_code            VARCHAR2(30);
27675 l_ae_header_id                NUMBER;
27676 l_event_type_code             VARCHAR2(30);
27677 l_line_definition_code        VARCHAR2(30);
27678 l_line_definition_owner_code  VARCHAR2(1);
27679 --
27680 -- adr variables
27681 l_segment                     VARCHAR2(30);
27682 l_ccid                        NUMBER;
27683 l_adr_transaction_coa_id      NUMBER;
27684 l_adr_accounting_coa_id       NUMBER;
27685 l_adr_flexfield_segment_code  VARCHAR2(30);
27686 l_adr_flex_value_set_id       NUMBER;
27687 l_adr_value_type_code         VARCHAR2(30);
27688 l_adr_value_combination_id    NUMBER;
27689 l_adr_value_segment_code      VARCHAR2(30);
27690 
27691 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
27692 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
27693 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
27694 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
27695 
27696 -- 4262811 Variables ------------------------------------------------------------------------------------------
27697 l_entered_amt_idx             NUMBER;
27698 l_accted_amt_idx              NUMBER;
27699 l_acc_rev_flag                VARCHAR2(1);
27700 l_accrual_line_num            NUMBER;
27701 l_tmp_amt                     NUMBER;
27702 l_acc_rev_natural_side_code   VARCHAR2(1);
27703 
27704 l_num_entries                 NUMBER;
27705 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
27706 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
27707 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
27708 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
27709 l_recog_line_1                NUMBER;
27710 l_recog_line_2                NUMBER;
27711 
27712 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
27713 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
27714 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
27715 
27716 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
27717 
27718 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
27719 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
27720 
27721 ---------------------------------------------------------------------------------------------------------------
27722 
27723 
27724 --
27725 -- bulk performance
27726 --
27727 l_balance_type_code           VARCHAR2(1);
27728 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
27729 l_log_module                  VARCHAR2(240);
27730 
27731 --
27732 -- Upgrade strategy
27733 --
27734 l_actual_upg_option           VARCHAR2(1);
27735 l_enc_upg_option           VARCHAR2(1);
27736 
27737 --
27738 BEGIN
27739 --
27740 IF g_log_enabled THEN
27741       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_53';
27742 END IF;
27743 --
27744 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27745 
27746       trace
27747          (p_msg      => 'BEGIN of AcctLineType_53'
27748          ,p_level    => C_LEVEL_PROCEDURE
27749          ,p_module   => l_log_module);
27750 
27751 END IF;
27752 --
27753 l_component_type             := 'AMB_JLT';
27754 l_component_code             := 'INTERCOMPANY_ACCRUAL';
27755 l_component_type_code        := 'S';
27756 l_component_appl_id          :=  707;
27757 l_amb_context_code           := 'DEFAULT';
27758 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
27759 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
27760 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
27761 l_line_definition_owner_code := 'S';
27762 l_line_definition_code       := 'FOB_RCPT_RECIPIENT_RCPT';
27763 --
27764 l_balance_type_code          := 'A';
27765 l_segment                     := NULL;
27766 l_ccid                        := NULL;
27767 l_adr_transaction_coa_id      := NULL;
27768 l_adr_accounting_coa_id       := NULL;
27769 l_adr_flexfield_segment_code  := NULL;
27770 l_adr_flex_value_set_id       := NULL;
27771 l_adr_value_type_code         := NULL;
27772 l_adr_value_combination_id    := NULL;
27773 l_adr_value_segment_code      := NULL;
27774 
27775 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
27776 l_bflow_class_code           := '';    -- 4219869 Business Flow
27777 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
27778 l_budgetary_control_flag     := 'N';
27779 
27780 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
27781 l_bflow_applied_to_amt       := NULL; -- 5132302
27782 l_entered_amt_idx            := NULL;          -- 4262811
27783 l_accted_amt_idx             := NULL;          -- 4262811
27784 l_acc_rev_flag               := NULL;          -- 4262811
27785 l_accrual_line_num           := NULL;          -- 4262811
27786 l_tmp_amt                    := NULL;          -- 4262811
27787 --
27788  
27789 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
27790     l_balance_type_code <> 'B' THEN
27791 IF NVL(p_source_24,9E125) =  2 AND 
27792 p_source_22 <  0
27793  THEN 
27794 
27795    --
27796    XLA_AE_LINES_PKG.SetNewLine;
27797 
27798    p_balance_type_code          := l_balance_type_code;
27799    -- set the flag so later we will know whether the gain loss line needs to be created
27800    
27801    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
27802      p_actual_flag :='A';
27803    END IF;
27804 
27805    --
27806    -- bulk performance
27807    --
27808    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
27809                                       p_header_num   => 0); -- 4262811
27810    --
27811    -- set accounting line options
27812    --
27813    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
27814            p_natural_side_code          => 'D'
27815          , p_gain_or_loss_flag          => 'N'
27816          , p_gl_transfer_mode_code      => 'S'
27817          , p_acct_entry_type_code       => 'A'
27818          , p_switch_side_flag           => 'Y'
27819          , p_merge_duplicate_code       => 'N'
27820          );
27821    --
27822    l_acc_rev_natural_side_code := 'C';  -- 4262811
27823    -- 
27824    --
27825    -- set accounting line type info
27826    --
27827    xla_ae_lines_pkg.SetAcctLineType
27828       (p_component_type             => l_component_type
27829       ,p_event_type_code            => l_event_type_code
27830       ,p_line_definition_owner_code => l_line_definition_owner_code
27831       ,p_line_definition_code       => l_line_definition_code
27832       ,p_accounting_line_code       => l_component_code
27833       ,p_accounting_line_type_code  => l_component_type_code
27834       ,p_accounting_line_appl_id    => l_component_appl_id
27835       ,p_amb_context_code           => l_amb_context_code
27836       ,p_entity_code                => l_entity_code
27837       ,p_event_class_code           => l_event_class_code);
27838    --
27839    -- set accounting class
27840    --
27841    xla_ae_lines_pkg.SetAcctClass(
27842            p_accounting_class_code  => 'INTERCOMPANY_ACCRUAL'
27843          , p_ae_header_id           => l_ae_header_id
27844          );
27845 
27846    --
27847    -- set rounding class
27848    --
27849    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
27850                       'INTERCOMPANY_ACCRUAL';
27851 
27852    --
27853    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
27854    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
27855    --
27856    -- bulk performance
27857    --
27858    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
27859 
27860    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
27861       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
27862 
27863    -- 4955764
27864    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27865       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
27866 
27867    -- 4458381 Public Sector Enh
27868    
27869    --
27870    -- set accounting attributes for the line type
27871    --
27872    l_entered_amt_idx := 17;
27873    l_accted_amt_idx  := 22;
27874    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
27875    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
27876    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
27877    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
27878    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
27879    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
27880    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
27881    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
27882    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
27883    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
27884    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
27885    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
27886    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
27887    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
27888    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
27889    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
27890    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
27891    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
27892    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
27893    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
27894    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
27895    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
27896    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
27897    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
27898    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
27899    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
27900    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
27901    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
27902    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
27903    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
27904    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
27905    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
27906    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
27907    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
27908    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
27909    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
27910    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
27911    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
27912    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
27913    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
27914    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
27915    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
27916    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
27917    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
27918    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
27919    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
27920    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
27921    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
27922    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
27923 
27924    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
27925    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
27926 
27927    ---------------------------------------------------------------------------------------------------------------
27928    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
27929    ---------------------------------------------------------------------------------------------------------------
27930    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
27931 
27932    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27933    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27934 
27935    IF xla_accounting_cache_pkg.GetValueChar
27936          (p_source_code         => 'LEDGER_CATEGORY_CODE'
27937          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
27938    AND l_bflow_method_code = 'PRIOR_ENTRY'
27939 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
27940    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
27941          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
27942        )
27943    THEN
27944          xla_ae_lines_pkg.BflowUpgEntry
27945            (p_business_method_code    => l_bflow_method_code
27946            ,p_business_class_code     => l_bflow_class_code
27947            ,p_balance_type            => l_balance_type_code);
27948    ELSE
27949       NULL;
27950 -- No business flow processing for business flow method of NONE.
27951    END IF;
27952 
27953    --
27954    -- call analytical criteria
27955    --
27956    
27957    --
27958    -- call description
27959    --
27960    -- No description or it is inherited.
27961    --
27962    -- call ADRs
27963    -- Bug 4922099
27964    --
27965    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27966         (NVL(l_actual_upg_option, 'N') = 'O') OR
27967         (NVL(l_enc_upg_option, 'N') = 'O')
27968       )
27969    THEN
27970    NULL;
27971    --
27972    --
27973    
27974   l_ccid := AcctDerRule_4(
27975            p_application_id           => p_application_id
27976          , p_ae_header_id             => l_ae_header_id 
27977 , p_source_4 => p_source_4
27978          , x_transaction_coa_id       => l_adr_transaction_coa_id
27979          , x_accounting_coa_id        => l_adr_accounting_coa_id
27980          , x_value_type_code          => l_adr_value_type_code
27981          , p_side                     => 'NA'
27982    );
27983 
27984    xla_ae_lines_pkg.set_ccid(
27985     p_code_combination_id          => l_ccid
27986   , p_value_type_code              => l_adr_value_type_code
27987   , p_transaction_coa_id           => l_adr_transaction_coa_id
27988   , p_accounting_coa_id            => l_adr_accounting_coa_id
27989   , p_adr_code                     => 'CST_DEFAULT'
27990   , p_adr_type_code                => 'S'
27991   , p_component_type               => l_component_type
27992   , p_component_code               => l_component_code
27993   , p_component_type_code          => l_component_type_code
27994   , p_component_appl_id            => l_component_appl_id
27995   , p_amb_context_code             => l_amb_context_code
27996   , p_side                         => 'NA'
27997   );
27998 
27999 
28000    --
28001    --
28002    END IF;
28003    --
28004    -- Bug 4922099
28005    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
28006           (NVL(l_enc_upg_option, 'N') = 'O')
28007         ) AND
28008         (l_bflow_method_code = 'PRIOR_ENTRY')
28009       )
28010    THEN
28011       IF
28012       --
28013       1 = 2
28014       --
28015       THEN
28016       xla_accounting_err_pkg.build_message
28017                                     (p_appli_s_name            => 'XLA'
28018                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28019                                     ,p_token_1                 => 'LINE_NUMBER'
28020                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
28021                                     ,p_token_2                 => 'LINE_TYPE_NAME'
28022                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
28023                                                                              l_component_type
28024                                                                             ,l_component_code
28025                                                                             ,l_component_type_code
28026                                                                             ,l_component_appl_id
28027                                                                             ,l_amb_context_code
28028                                                                             ,l_entity_code
28029                                                                             ,l_event_class_code
28030                                                                            )
28031                                     ,p_token_3                 => 'OWNER'
28032                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
28033                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
28034                                                                           ,p_lookup_code    => l_component_type_code
28035                                                                          )
28036                                     ,p_token_4                 => 'PRODUCT_NAME'
28037                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
28038                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
28039                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
28040                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
28041                                     ,p_ae_header_id            =>  NULL
28042                                        );
28043 
28044         IF (C_LEVEL_ERROR>= g_log_level) THEN
28045                  trace
28046                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28047                       ,p_level    => C_LEVEL_ERROR
28048                       ,p_module   => l_log_module);
28049         END IF;
28050       END IF;
28051    END IF;
28052    --
28053    --
28054    ------------------------------------------------------------------------------------------------
28055    -- 4219869 Business Flow
28056    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
28057    -- Prior Entry.  Currently, the following code is always generated.
28058    ------------------------------------------------------------------------------------------------
28059    XLA_AE_LINES_PKG.ValidateCurrentLine;
28060 
28061    ------------------------------------------------------------------------------------
28062    -- 4219869 Business Flow
28063    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
28064    ------------------------------------------------------------------------------------
28065    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28066 
28067    ----------------------------------------------------------------------------------
28068    -- 4219869 Business Flow
28069    -- Update journal entry status -- Need to generate this within IF <condition>
28070    ----------------------------------------------------------------------------------
28071    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28072          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
28073          ,p_balance_type_code => l_balance_type_code
28074          );
28075 
28076    -------------------------------------------------------------------------------------------
28077    -- 4262811 - Generate the Accrual Reversal lines
28078    -------------------------------------------------------------------------------------------
28079    BEGIN
28080       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
28081                               (g_array_event(p_event_id).array_value_num('header_index'));
28082       IF l_acc_rev_flag IS NULL THEN
28083          l_acc_rev_flag := 'N';
28084       END IF;
28085    EXCEPTION
28086       WHEN OTHERS THEN
28087          l_acc_rev_flag := 'N';
28088    END;
28089    --
28090    IF (l_acc_rev_flag = 'Y') THEN
28091 
28092        -- 4645092  ------------------------------------------------------------------------------
28093        -- To allow MPA report to determine if it should generate report process
28094        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
28095        ------------------------------------------------------------------------------------------
28096 
28097        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
28098        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
28099    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
28100    -- call ADRs
28101    -- Bug 4922099
28102    --
28103    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28104         (NVL(l_actual_upg_option, 'N') = 'O') OR
28105         (NVL(l_enc_upg_option, 'N') = 'O')
28106       )
28107    THEN
28108    NULL;
28109    --
28110    --
28111    
28112   l_ccid := AcctDerRule_4(
28113            p_application_id           => p_application_id
28114          , p_ae_header_id             => l_ae_header_id 
28115 , p_source_4 => p_source_4
28116          , x_transaction_coa_id       => l_adr_transaction_coa_id
28117          , x_accounting_coa_id        => l_adr_accounting_coa_id
28118          , x_value_type_code          => l_adr_value_type_code
28119          , p_side                     => 'NA'
28120    );
28121 
28122    xla_ae_lines_pkg.set_ccid(
28123     p_code_combination_id          => l_ccid
28124   , p_value_type_code              => l_adr_value_type_code
28125   , p_transaction_coa_id           => l_adr_transaction_coa_id
28126   , p_accounting_coa_id            => l_adr_accounting_coa_id
28127   , p_adr_code                     => 'CST_DEFAULT'
28128   , p_adr_type_code                => 'S'
28129   , p_component_type               => l_component_type
28130   , p_component_code               => l_component_code
28131   , p_component_type_code          => l_component_type_code
28132   , p_component_appl_id            => l_component_appl_id
28133   , p_amb_context_code             => l_amb_context_code
28134   , p_side                         => 'NA'
28135   );
28136 
28137 
28138    --
28139    --
28140    END IF;
28141 
28142        --
28143        -- Update the line information that should be overwritten
28144        --
28145        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
28146                                          p_header_num   => 1);
28147        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
28148 
28149        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
28150 
28151        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
28152           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
28153        END IF;
28154 
28155       --
28156       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
28157       --
28158       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
28159           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
28160       ELSE
28161           ---------------------------------------------------------------------------------------------------
28162           -- 4262811a Switch Sign
28163           ---------------------------------------------------------------------------------------------------
28164           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
28165           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28166                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28167           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28168                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28169           -- 5132302
28170           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
28171                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28172 
28173       END IF;
28174 
28175       -- 4955764
28176       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28177       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
28178 
28179 
28180       XLA_AE_LINES_PKG.ValidateCurrentLine;
28181       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28182 
28183       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28184                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
28185                ,p_balance_type_code => l_balance_type_code);
28186 
28187    END IF;
28188 
28189    -----------------------------------------------------------------------------------------
28190    -- 4262811 Multiperiod Accounting
28191    -----------------------------------------------------------------------------------------
28192      -- No MPA option is assigned.
28193 
28194 
28195 END IF;
28196 END IF;
28197 --
28198 
28199 --
28200 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28201    trace
28202       (p_msg      => 'END of AcctLineType_53'
28203       ,p_level    => C_LEVEL_PROCEDURE
28204       ,p_module   => l_log_module);
28205 END IF;
28206 --
28207 EXCEPTION
28208   WHEN xla_exceptions_pkg.application_exception THEN
28209       RAISE;
28210   WHEN OTHERS THEN
28211        xla_exceptions_pkg.raise_message
28212            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_53');
28213 END AcctLineType_53;
28214 --
28215 
28216 ---------------------------------------
28217 --
28218 -- PRIVATE FUNCTION
28219 --         AcctLineType_54
28220 --
28221 ---------------------------------------
28222 PROCEDURE AcctLineType_54 (
28223   p_application_id        IN NUMBER
28224  ,p_event_id              IN NUMBER
28225  ,p_calculate_acctd_flag  IN VARCHAR2
28226  ,p_calculate_g_l_flag    IN VARCHAR2
28227  ,p_actual_flag           IN OUT VARCHAR2
28228  ,p_balance_type_code     OUT VARCHAR2
28229  ,p_gain_or_loss_ref      OUT VARCHAR2
28230  
28231 --Cost Management Default Account
28232  , p_source_4            IN NUMBER
28233 --DISTRIBUTION_IDENTIFIER
28234  , p_source_11            IN NUMBER
28235 --Distribution Type
28236  , p_source_12            IN VARCHAR2
28237  , p_source_12_meaning    IN VARCHAR2
28238 --Entered Currency Code
28239  , p_source_15            IN VARCHAR2
28240 --Entered Amount
28241  , p_source_18            IN NUMBER
28242 --Currency Conversion Date
28243  , p_source_19            IN DATE
28244 --Currency Conversion Rate
28245  , p_source_20            IN NUMBER
28246 --Currency Conversion Type
28247  , p_source_21            IN VARCHAR2
28248 --Accounted Amount
28249  , p_source_22            IN NUMBER
28250 --Accounting Line Type
28251  , p_source_24            IN NUMBER
28252 )
28253 IS
28254 
28255 l_component_type              VARCHAR2(80);
28256 l_component_code              VARCHAR2(30);
28257 l_component_type_code         VARCHAR2(1);
28258 l_component_appl_id           INTEGER;
28259 l_amb_context_code            VARCHAR2(30);
28260 l_entity_code                 VARCHAR2(30);
28261 l_event_class_code            VARCHAR2(30);
28262 l_ae_header_id                NUMBER;
28263 l_event_type_code             VARCHAR2(30);
28264 l_line_definition_code        VARCHAR2(30);
28265 l_line_definition_owner_code  VARCHAR2(1);
28266 --
28267 -- adr variables
28268 l_segment                     VARCHAR2(30);
28269 l_ccid                        NUMBER;
28270 l_adr_transaction_coa_id      NUMBER;
28271 l_adr_accounting_coa_id       NUMBER;
28272 l_adr_flexfield_segment_code  VARCHAR2(30);
28273 l_adr_flex_value_set_id       NUMBER;
28274 l_adr_value_type_code         VARCHAR2(30);
28275 l_adr_value_combination_id    NUMBER;
28276 l_adr_value_segment_code      VARCHAR2(30);
28277 
28278 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
28279 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
28280 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
28281 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
28282 
28283 -- 4262811 Variables ------------------------------------------------------------------------------------------
28284 l_entered_amt_idx             NUMBER;
28285 l_accted_amt_idx              NUMBER;
28286 l_acc_rev_flag                VARCHAR2(1);
28287 l_accrual_line_num            NUMBER;
28288 l_tmp_amt                     NUMBER;
28289 l_acc_rev_natural_side_code   VARCHAR2(1);
28290 
28291 l_num_entries                 NUMBER;
28292 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
28293 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
28294 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
28295 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
28296 l_recog_line_1                NUMBER;
28297 l_recog_line_2                NUMBER;
28298 
28299 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
28300 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
28301 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
28302 
28303 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
28304 
28305 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
28306 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
28307 
28308 ---------------------------------------------------------------------------------------------------------------
28309 
28310 
28311 --
28312 -- bulk performance
28313 --
28314 l_balance_type_code           VARCHAR2(1);
28315 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
28316 l_log_module                  VARCHAR2(240);
28317 
28318 --
28319 -- Upgrade strategy
28320 --
28321 l_actual_upg_option           VARCHAR2(1);
28322 l_enc_upg_option           VARCHAR2(1);
28323 
28324 --
28325 BEGIN
28326 --
28327 IF g_log_enabled THEN
28328       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_54';
28329 END IF;
28330 --
28331 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28332 
28333       trace
28334          (p_msg      => 'BEGIN of AcctLineType_54'
28335          ,p_level    => C_LEVEL_PROCEDURE
28336          ,p_module   => l_log_module);
28337 
28338 END IF;
28339 --
28340 l_component_type             := 'AMB_JLT';
28341 l_component_code             := 'INTERCOMPANY_ACCRUAL';
28342 l_component_type_code        := 'S';
28343 l_component_appl_id          :=  707;
28344 l_amb_context_code           := 'DEFAULT';
28345 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
28346 l_event_class_code           := 'USER_DEFINE';
28347 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
28348 l_line_definition_owner_code := 'S';
28349 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
28350 --
28351 l_balance_type_code          := 'A';
28352 l_segment                     := NULL;
28353 l_ccid                        := NULL;
28354 l_adr_transaction_coa_id      := NULL;
28355 l_adr_accounting_coa_id       := NULL;
28356 l_adr_flexfield_segment_code  := NULL;
28357 l_adr_flex_value_set_id       := NULL;
28358 l_adr_value_type_code         := NULL;
28359 l_adr_value_combination_id    := NULL;
28360 l_adr_value_segment_code      := NULL;
28361 
28362 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
28363 l_bflow_class_code           := '';    -- 4219869 Business Flow
28364 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
28365 l_budgetary_control_flag     := 'N';
28366 
28367 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
28368 l_bflow_applied_to_amt       := NULL; -- 5132302
28369 l_entered_amt_idx            := NULL;          -- 4262811
28370 l_accted_amt_idx             := NULL;          -- 4262811
28371 l_acc_rev_flag               := NULL;          -- 4262811
28372 l_accrual_line_num           := NULL;          -- 4262811
28373 l_tmp_amt                    := NULL;          -- 4262811
28374 --
28375  
28376 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
28377     l_balance_type_code <> 'B' THEN
28378 IF NVL(p_source_24,9E125) =  2 AND 
28379 p_source_22 <  0
28380  THEN 
28381 
28382    --
28383    XLA_AE_LINES_PKG.SetNewLine;
28384 
28385    p_balance_type_code          := l_balance_type_code;
28386    -- set the flag so later we will know whether the gain loss line needs to be created
28387    
28388    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
28389      p_actual_flag :='A';
28390    END IF;
28391 
28392    --
28393    -- bulk performance
28394    --
28395    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
28396                                       p_header_num   => 0); -- 4262811
28397    --
28398    -- set accounting line options
28399    --
28400    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
28401            p_natural_side_code          => 'D'
28402          , p_gain_or_loss_flag          => 'N'
28403          , p_gl_transfer_mode_code      => 'S'
28404          , p_acct_entry_type_code       => 'A'
28405          , p_switch_side_flag           => 'Y'
28406          , p_merge_duplicate_code       => 'N'
28407          );
28408    --
28409    l_acc_rev_natural_side_code := 'C';  -- 4262811
28410    -- 
28411    --
28412    -- set accounting line type info
28413    --
28414    xla_ae_lines_pkg.SetAcctLineType
28415       (p_component_type             => l_component_type
28416       ,p_event_type_code            => l_event_type_code
28417       ,p_line_definition_owner_code => l_line_definition_owner_code
28418       ,p_line_definition_code       => l_line_definition_code
28419       ,p_accounting_line_code       => l_component_code
28420       ,p_accounting_line_type_code  => l_component_type_code
28421       ,p_accounting_line_appl_id    => l_component_appl_id
28422       ,p_amb_context_code           => l_amb_context_code
28423       ,p_entity_code                => l_entity_code
28424       ,p_event_class_code           => l_event_class_code);
28425    --
28426    -- set accounting class
28427    --
28428    xla_ae_lines_pkg.SetAcctClass(
28429            p_accounting_class_code  => 'INTERCOMPANY_ACCRUAL'
28430          , p_ae_header_id           => l_ae_header_id
28431          );
28432 
28433    --
28434    -- set rounding class
28435    --
28436    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
28437                       'INTERCOMPANY_ACCRUAL';
28438 
28439    --
28440    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
28441    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
28442    --
28443    -- bulk performance
28444    --
28445    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
28446 
28447    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
28448       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
28449 
28450    -- 4955764
28451    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28452       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
28453 
28454    -- 4458381 Public Sector Enh
28455    
28456    --
28457    -- set accounting attributes for the line type
28458    --
28459    l_entered_amt_idx := 3;
28460    l_accted_amt_idx  := 8;
28461    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
28462    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
28463    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
28464    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
28465    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
28466    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
28467    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
28468    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
28469    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
28470    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
28471    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
28472    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
28473    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
28474    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
28475    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
28476    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
28477    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
28478 
28479    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
28480    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
28481 
28482    ---------------------------------------------------------------------------------------------------------------
28483    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
28484    ---------------------------------------------------------------------------------------------------------------
28485    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
28486 
28487    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28488    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28489 
28490    IF xla_accounting_cache_pkg.GetValueChar
28491          (p_source_code         => 'LEDGER_CATEGORY_CODE'
28492          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
28493    AND l_bflow_method_code = 'PRIOR_ENTRY'
28494 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
28495    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
28496          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
28497        )
28498    THEN
28499          xla_ae_lines_pkg.BflowUpgEntry
28500            (p_business_method_code    => l_bflow_method_code
28501            ,p_business_class_code     => l_bflow_class_code
28502            ,p_balance_type            => l_balance_type_code);
28503    ELSE
28504       NULL;
28505 -- No business flow processing for business flow method of NONE.
28506    END IF;
28507 
28508    --
28509    -- call analytical criteria
28510    --
28511    
28512    --
28513    -- call description
28514    --
28515    -- No description or it is inherited.
28516    --
28517    -- call ADRs
28518    -- Bug 4922099
28519    --
28520    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28521         (NVL(l_actual_upg_option, 'N') = 'O') OR
28522         (NVL(l_enc_upg_option, 'N') = 'O')
28523       )
28524    THEN
28525    NULL;
28526    --
28527    --
28528    
28529   l_ccid := AcctDerRule_4(
28530            p_application_id           => p_application_id
28531          , p_ae_header_id             => l_ae_header_id 
28532 , p_source_4 => p_source_4
28533          , x_transaction_coa_id       => l_adr_transaction_coa_id
28534          , x_accounting_coa_id        => l_adr_accounting_coa_id
28535          , x_value_type_code          => l_adr_value_type_code
28536          , p_side                     => 'NA'
28537    );
28538 
28539    xla_ae_lines_pkg.set_ccid(
28540     p_code_combination_id          => l_ccid
28541   , p_value_type_code              => l_adr_value_type_code
28542   , p_transaction_coa_id           => l_adr_transaction_coa_id
28543   , p_accounting_coa_id            => l_adr_accounting_coa_id
28544   , p_adr_code                     => 'CST_DEFAULT'
28545   , p_adr_type_code                => 'S'
28546   , p_component_type               => l_component_type
28547   , p_component_code               => l_component_code
28548   , p_component_type_code          => l_component_type_code
28549   , p_component_appl_id            => l_component_appl_id
28550   , p_amb_context_code             => l_amb_context_code
28551   , p_side                         => 'NA'
28552   );
28553 
28554 
28555    --
28556    --
28557    END IF;
28558    --
28559    -- Bug 4922099
28560    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
28561           (NVL(l_enc_upg_option, 'N') = 'O')
28562         ) AND
28563         (l_bflow_method_code = 'PRIOR_ENTRY')
28564       )
28565    THEN
28566       IF
28567       --
28568       1 = 2
28569       --
28570       THEN
28571       xla_accounting_err_pkg.build_message
28572                                     (p_appli_s_name            => 'XLA'
28573                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28574                                     ,p_token_1                 => 'LINE_NUMBER'
28575                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
28576                                     ,p_token_2                 => 'LINE_TYPE_NAME'
28577                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
28578                                                                              l_component_type
28579                                                                             ,l_component_code
28580                                                                             ,l_component_type_code
28581                                                                             ,l_component_appl_id
28582                                                                             ,l_amb_context_code
28583                                                                             ,l_entity_code
28584                                                                             ,l_event_class_code
28585                                                                            )
28586                                     ,p_token_3                 => 'OWNER'
28587                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
28588                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
28589                                                                           ,p_lookup_code    => l_component_type_code
28590                                                                          )
28591                                     ,p_token_4                 => 'PRODUCT_NAME'
28592                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
28593                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
28594                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
28595                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
28596                                     ,p_ae_header_id            =>  NULL
28597                                        );
28598 
28599         IF (C_LEVEL_ERROR>= g_log_level) THEN
28600                  trace
28601                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28602                       ,p_level    => C_LEVEL_ERROR
28603                       ,p_module   => l_log_module);
28604         END IF;
28605       END IF;
28606    END IF;
28607    --
28608    --
28609    ------------------------------------------------------------------------------------------------
28610    -- 4219869 Business Flow
28611    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
28612    -- Prior Entry.  Currently, the following code is always generated.
28613    ------------------------------------------------------------------------------------------------
28614    XLA_AE_LINES_PKG.ValidateCurrentLine;
28615 
28616    ------------------------------------------------------------------------------------
28617    -- 4219869 Business Flow
28618    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
28619    ------------------------------------------------------------------------------------
28620    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28621 
28622    ----------------------------------------------------------------------------------
28623    -- 4219869 Business Flow
28624    -- Update journal entry status -- Need to generate this within IF <condition>
28625    ----------------------------------------------------------------------------------
28626    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28627          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
28628          ,p_balance_type_code => l_balance_type_code
28629          );
28630 
28631    -------------------------------------------------------------------------------------------
28632    -- 4262811 - Generate the Accrual Reversal lines
28633    -------------------------------------------------------------------------------------------
28634    BEGIN
28635       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
28636                               (g_array_event(p_event_id).array_value_num('header_index'));
28637       IF l_acc_rev_flag IS NULL THEN
28638          l_acc_rev_flag := 'N';
28639       END IF;
28640    EXCEPTION
28641       WHEN OTHERS THEN
28642          l_acc_rev_flag := 'N';
28643    END;
28644    --
28645    IF (l_acc_rev_flag = 'Y') THEN
28646 
28647        -- 4645092  ------------------------------------------------------------------------------
28648        -- To allow MPA report to determine if it should generate report process
28649        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
28650        ------------------------------------------------------------------------------------------
28651 
28652        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
28653        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
28654    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
28655    -- call ADRs
28656    -- Bug 4922099
28657    --
28658    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28659         (NVL(l_actual_upg_option, 'N') = 'O') OR
28660         (NVL(l_enc_upg_option, 'N') = 'O')
28661       )
28662    THEN
28663    NULL;
28664    --
28665    --
28666    
28667   l_ccid := AcctDerRule_4(
28668            p_application_id           => p_application_id
28669          , p_ae_header_id             => l_ae_header_id 
28670 , p_source_4 => p_source_4
28671          , x_transaction_coa_id       => l_adr_transaction_coa_id
28672          , x_accounting_coa_id        => l_adr_accounting_coa_id
28673          , x_value_type_code          => l_adr_value_type_code
28674          , p_side                     => 'NA'
28675    );
28676 
28677    xla_ae_lines_pkg.set_ccid(
28678     p_code_combination_id          => l_ccid
28679   , p_value_type_code              => l_adr_value_type_code
28680   , p_transaction_coa_id           => l_adr_transaction_coa_id
28681   , p_accounting_coa_id            => l_adr_accounting_coa_id
28682   , p_adr_code                     => 'CST_DEFAULT'
28683   , p_adr_type_code                => 'S'
28684   , p_component_type               => l_component_type
28685   , p_component_code               => l_component_code
28686   , p_component_type_code          => l_component_type_code
28687   , p_component_appl_id            => l_component_appl_id
28688   , p_amb_context_code             => l_amb_context_code
28689   , p_side                         => 'NA'
28690   );
28691 
28692 
28693    --
28694    --
28695    END IF;
28696 
28697        --
28698        -- Update the line information that should be overwritten
28699        --
28700        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
28701                                          p_header_num   => 1);
28702        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
28703 
28704        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
28705 
28706        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
28707           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
28708        END IF;
28709 
28710       --
28711       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
28712       --
28713       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
28714           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
28715       ELSE
28716           ---------------------------------------------------------------------------------------------------
28717           -- 4262811a Switch Sign
28718           ---------------------------------------------------------------------------------------------------
28719           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
28720           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28721                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28722           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28723                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28724           -- 5132302
28725           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
28726                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28727 
28728       END IF;
28729 
28730       -- 4955764
28731       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28732       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
28733 
28734 
28735       XLA_AE_LINES_PKG.ValidateCurrentLine;
28736       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28737 
28738       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28739                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
28740                ,p_balance_type_code => l_balance_type_code);
28741 
28742    END IF;
28743 
28744    -----------------------------------------------------------------------------------------
28745    -- 4262811 Multiperiod Accounting
28746    -----------------------------------------------------------------------------------------
28747      -- No MPA option is assigned.
28748 
28749 
28750 END IF;
28751 END IF;
28752 --
28753 
28754 --
28755 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28756    trace
28757       (p_msg      => 'END of AcctLineType_54'
28758       ,p_level    => C_LEVEL_PROCEDURE
28759       ,p_module   => l_log_module);
28760 END IF;
28761 --
28762 EXCEPTION
28763   WHEN xla_exceptions_pkg.application_exception THEN
28764       RAISE;
28765   WHEN OTHERS THEN
28766        xla_exceptions_pkg.raise_message
28767            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_54');
28768 END AcctLineType_54;
28769 --
28770 
28771 ---------------------------------------
28772 --
28773 -- PRIVATE FUNCTION
28774 --         AcctLineType_55
28775 --
28776 ---------------------------------------
28777 PROCEDURE AcctLineType_55 (
28778   p_application_id        IN NUMBER
28779  ,p_event_id              IN NUMBER
28780  ,p_calculate_acctd_flag  IN VARCHAR2
28781  ,p_calculate_g_l_flag    IN VARCHAR2
28782  ,p_actual_flag           IN OUT VARCHAR2
28783  ,p_balance_type_code     OUT VARCHAR2
28784  ,p_gain_or_loss_ref      OUT VARCHAR2
28785  
28786 --Cost Management Default Account
28787  , p_source_4            IN NUMBER
28788 --DISTRIBUTION_IDENTIFIER
28789  , p_source_11            IN NUMBER
28790 --Distribution Type
28791  , p_source_12            IN VARCHAR2
28792  , p_source_12_meaning    IN VARCHAR2
28793 --Entered Currency Code
28794  , p_source_15            IN VARCHAR2
28795 --Entered Amount
28796  , p_source_18            IN NUMBER
28797 --Currency Conversion Date
28798  , p_source_19            IN DATE
28799 --Currency Conversion Rate
28800  , p_source_20            IN NUMBER
28801 --Currency Conversion Type
28802  , p_source_21            IN VARCHAR2
28803 --Accounted Amount
28804  , p_source_22            IN NUMBER
28805 --Accounting Line Type
28806  , p_source_24            IN NUMBER
28807 )
28808 IS
28809 
28810 l_component_type              VARCHAR2(80);
28811 l_component_code              VARCHAR2(30);
28812 l_component_type_code         VARCHAR2(1);
28813 l_component_appl_id           INTEGER;
28814 l_amb_context_code            VARCHAR2(30);
28815 l_entity_code                 VARCHAR2(30);
28816 l_event_class_code            VARCHAR2(30);
28817 l_ae_header_id                NUMBER;
28818 l_event_type_code             VARCHAR2(30);
28819 l_line_definition_code        VARCHAR2(30);
28820 l_line_definition_owner_code  VARCHAR2(1);
28821 --
28822 -- adr variables
28823 l_segment                     VARCHAR2(30);
28824 l_ccid                        NUMBER;
28825 l_adr_transaction_coa_id      NUMBER;
28826 l_adr_accounting_coa_id       NUMBER;
28827 l_adr_flexfield_segment_code  VARCHAR2(30);
28828 l_adr_flex_value_set_id       NUMBER;
28829 l_adr_value_type_code         VARCHAR2(30);
28830 l_adr_value_combination_id    NUMBER;
28831 l_adr_value_segment_code      VARCHAR2(30);
28832 
28833 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
28834 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
28835 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
28836 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
28837 
28838 -- 4262811 Variables ------------------------------------------------------------------------------------------
28839 l_entered_amt_idx             NUMBER;
28840 l_accted_amt_idx              NUMBER;
28841 l_acc_rev_flag                VARCHAR2(1);
28842 l_accrual_line_num            NUMBER;
28843 l_tmp_amt                     NUMBER;
28844 l_acc_rev_natural_side_code   VARCHAR2(1);
28845 
28846 l_num_entries                 NUMBER;
28847 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
28848 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
28849 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
28850 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
28851 l_recog_line_1                NUMBER;
28852 l_recog_line_2                NUMBER;
28853 
28854 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
28855 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
28856 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
28857 
28858 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
28859 
28860 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
28861 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
28862 
28863 ---------------------------------------------------------------------------------------------------------------
28864 
28865 
28866 --
28867 -- bulk performance
28868 --
28869 l_balance_type_code           VARCHAR2(1);
28870 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
28871 l_log_module                  VARCHAR2(240);
28872 
28873 --
28874 -- Upgrade strategy
28875 --
28876 l_actual_upg_option           VARCHAR2(1);
28877 l_enc_upg_option           VARCHAR2(1);
28878 
28879 --
28880 BEGIN
28881 --
28882 IF g_log_enabled THEN
28883       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_55';
28884 END IF;
28885 --
28886 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28887 
28888       trace
28889          (p_msg      => 'BEGIN of AcctLineType_55'
28890          ,p_level    => C_LEVEL_PROCEDURE
28891          ,p_module   => l_log_module);
28892 
28893 END IF;
28894 --
28895 l_component_type             := 'AMB_JLT';
28896 l_component_code             := 'INTERCOMPANY_ACCRUAL';
28897 l_component_type_code        := 'S';
28898 l_component_appl_id          :=  707;
28899 l_amb_context_code           := 'DEFAULT';
28900 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
28901 l_event_class_code           := 'USER_DEFINE';
28902 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
28903 l_line_definition_owner_code := 'S';
28904 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_TP';
28905 --
28906 l_balance_type_code          := 'A';
28907 l_segment                     := NULL;
28908 l_ccid                        := NULL;
28909 l_adr_transaction_coa_id      := NULL;
28910 l_adr_accounting_coa_id       := NULL;
28911 l_adr_flexfield_segment_code  := NULL;
28912 l_adr_flex_value_set_id       := NULL;
28913 l_adr_value_type_code         := NULL;
28914 l_adr_value_combination_id    := NULL;
28915 l_adr_value_segment_code      := NULL;
28916 
28917 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
28918 l_bflow_class_code           := '';    -- 4219869 Business Flow
28919 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
28920 l_budgetary_control_flag     := 'N';
28921 
28922 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
28923 l_bflow_applied_to_amt       := NULL; -- 5132302
28924 l_entered_amt_idx            := NULL;          -- 4262811
28925 l_accted_amt_idx             := NULL;          -- 4262811
28926 l_acc_rev_flag               := NULL;          -- 4262811
28927 l_accrual_line_num           := NULL;          -- 4262811
28928 l_tmp_amt                    := NULL;          -- 4262811
28929 --
28930  
28931 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
28932     l_balance_type_code <> 'B' THEN
28933 IF NVL(p_source_24,9E125) =  2 AND 
28934 p_source_22 <  0
28935  THEN 
28936 
28937    --
28938    XLA_AE_LINES_PKG.SetNewLine;
28939 
28940    p_balance_type_code          := l_balance_type_code;
28941    -- set the flag so later we will know whether the gain loss line needs to be created
28942    
28943    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
28944      p_actual_flag :='A';
28945    END IF;
28946 
28947    --
28948    -- bulk performance
28949    --
28950    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
28951                                       p_header_num   => 0); -- 4262811
28952    --
28953    -- set accounting line options
28954    --
28955    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
28956            p_natural_side_code          => 'D'
28957          , p_gain_or_loss_flag          => 'N'
28958          , p_gl_transfer_mode_code      => 'S'
28959          , p_acct_entry_type_code       => 'A'
28960          , p_switch_side_flag           => 'Y'
28961          , p_merge_duplicate_code       => 'N'
28962          );
28963    --
28964    l_acc_rev_natural_side_code := 'C';  -- 4262811
28965    -- 
28966    --
28967    -- set accounting line type info
28968    --
28969    xla_ae_lines_pkg.SetAcctLineType
28970       (p_component_type             => l_component_type
28971       ,p_event_type_code            => l_event_type_code
28972       ,p_line_definition_owner_code => l_line_definition_owner_code
28973       ,p_line_definition_code       => l_line_definition_code
28974       ,p_accounting_line_code       => l_component_code
28975       ,p_accounting_line_type_code  => l_component_type_code
28976       ,p_accounting_line_appl_id    => l_component_appl_id
28977       ,p_amb_context_code           => l_amb_context_code
28978       ,p_entity_code                => l_entity_code
28979       ,p_event_class_code           => l_event_class_code);
28980    --
28981    -- set accounting class
28982    --
28983    xla_ae_lines_pkg.SetAcctClass(
28984            p_accounting_class_code  => 'INTERCOMPANY_ACCRUAL'
28985          , p_ae_header_id           => l_ae_header_id
28986          );
28987 
28988    --
28989    -- set rounding class
28990    --
28991    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
28992                       'INTERCOMPANY_ACCRUAL';
28993 
28994    --
28995    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
28996    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
28997    --
28998    -- bulk performance
28999    --
29000    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
29001 
29002    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
29003       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
29004 
29005    -- 4955764
29006    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29007       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
29008 
29009    -- 4458381 Public Sector Enh
29010    
29011    --
29012    -- set accounting attributes for the line type
29013    --
29014    l_entered_amt_idx := 3;
29015    l_accted_amt_idx  := 8;
29016    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
29017    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
29018    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
29019    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
29020    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
29021    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
29022    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
29023    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
29024    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
29025    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
29026    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
29027    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
29028    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
29029    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
29030    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
29031    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
29032    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
29033 
29034    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
29035    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
29036 
29037    ---------------------------------------------------------------------------------------------------------------
29038    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
29039    ---------------------------------------------------------------------------------------------------------------
29040    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
29041 
29042    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29043    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29044 
29045    IF xla_accounting_cache_pkg.GetValueChar
29046          (p_source_code         => 'LEDGER_CATEGORY_CODE'
29047          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
29048    AND l_bflow_method_code = 'PRIOR_ENTRY'
29049 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
29050    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
29051          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
29052        )
29053    THEN
29054          xla_ae_lines_pkg.BflowUpgEntry
29055            (p_business_method_code    => l_bflow_method_code
29056            ,p_business_class_code     => l_bflow_class_code
29057            ,p_balance_type            => l_balance_type_code);
29058    ELSE
29059       NULL;
29060 -- No business flow processing for business flow method of NONE.
29061    END IF;
29062 
29063    --
29064    -- call analytical criteria
29065    --
29066    
29067    --
29068    -- call description
29069    --
29070    -- No description or it is inherited.
29071    --
29072    -- call ADRs
29073    -- Bug 4922099
29074    --
29075    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29076         (NVL(l_actual_upg_option, 'N') = 'O') OR
29077         (NVL(l_enc_upg_option, 'N') = 'O')
29078       )
29079    THEN
29080    NULL;
29081    --
29082    --
29083    
29084   l_ccid := AcctDerRule_4(
29085            p_application_id           => p_application_id
29086          , p_ae_header_id             => l_ae_header_id 
29087 , p_source_4 => p_source_4
29088          , x_transaction_coa_id       => l_adr_transaction_coa_id
29089          , x_accounting_coa_id        => l_adr_accounting_coa_id
29090          , x_value_type_code          => l_adr_value_type_code
29091          , p_side                     => 'NA'
29092    );
29093 
29094    xla_ae_lines_pkg.set_ccid(
29095     p_code_combination_id          => l_ccid
29096   , p_value_type_code              => l_adr_value_type_code
29097   , p_transaction_coa_id           => l_adr_transaction_coa_id
29098   , p_accounting_coa_id            => l_adr_accounting_coa_id
29099   , p_adr_code                     => 'CST_DEFAULT'
29100   , p_adr_type_code                => 'S'
29101   , p_component_type               => l_component_type
29102   , p_component_code               => l_component_code
29103   , p_component_type_code          => l_component_type_code
29104   , p_component_appl_id            => l_component_appl_id
29105   , p_amb_context_code             => l_amb_context_code
29106   , p_side                         => 'NA'
29107   );
29108 
29109 
29110    --
29111    --
29112    END IF;
29113    --
29114    -- Bug 4922099
29115    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
29116           (NVL(l_enc_upg_option, 'N') = 'O')
29117         ) AND
29118         (l_bflow_method_code = 'PRIOR_ENTRY')
29119       )
29120    THEN
29121       IF
29122       --
29123       1 = 2
29124       --
29125       THEN
29126       xla_accounting_err_pkg.build_message
29127                                     (p_appli_s_name            => 'XLA'
29128                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29129                                     ,p_token_1                 => 'LINE_NUMBER'
29130                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
29131                                     ,p_token_2                 => 'LINE_TYPE_NAME'
29132                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
29133                                                                              l_component_type
29134                                                                             ,l_component_code
29135                                                                             ,l_component_type_code
29136                                                                             ,l_component_appl_id
29137                                                                             ,l_amb_context_code
29138                                                                             ,l_entity_code
29139                                                                             ,l_event_class_code
29140                                                                            )
29141                                     ,p_token_3                 => 'OWNER'
29142                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
29143                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
29144                                                                           ,p_lookup_code    => l_component_type_code
29145                                                                          )
29146                                     ,p_token_4                 => 'PRODUCT_NAME'
29147                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
29148                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
29149                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
29150                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
29151                                     ,p_ae_header_id            =>  NULL
29152                                        );
29153 
29154         IF (C_LEVEL_ERROR>= g_log_level) THEN
29155                  trace
29156                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29157                       ,p_level    => C_LEVEL_ERROR
29158                       ,p_module   => l_log_module);
29159         END IF;
29160       END IF;
29161    END IF;
29162    --
29163    --
29164    ------------------------------------------------------------------------------------------------
29165    -- 4219869 Business Flow
29166    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
29167    -- Prior Entry.  Currently, the following code is always generated.
29168    ------------------------------------------------------------------------------------------------
29169    XLA_AE_LINES_PKG.ValidateCurrentLine;
29170 
29171    ------------------------------------------------------------------------------------
29172    -- 4219869 Business Flow
29173    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
29174    ------------------------------------------------------------------------------------
29175    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29176 
29177    ----------------------------------------------------------------------------------
29178    -- 4219869 Business Flow
29179    -- Update journal entry status -- Need to generate this within IF <condition>
29180    ----------------------------------------------------------------------------------
29181    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29182          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
29183          ,p_balance_type_code => l_balance_type_code
29184          );
29185 
29186    -------------------------------------------------------------------------------------------
29187    -- 4262811 - Generate the Accrual Reversal lines
29188    -------------------------------------------------------------------------------------------
29189    BEGIN
29190       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
29191                               (g_array_event(p_event_id).array_value_num('header_index'));
29192       IF l_acc_rev_flag IS NULL THEN
29193          l_acc_rev_flag := 'N';
29194       END IF;
29195    EXCEPTION
29196       WHEN OTHERS THEN
29197          l_acc_rev_flag := 'N';
29198    END;
29199    --
29200    IF (l_acc_rev_flag = 'Y') THEN
29201 
29202        -- 4645092  ------------------------------------------------------------------------------
29203        -- To allow MPA report to determine if it should generate report process
29204        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
29205        ------------------------------------------------------------------------------------------
29206 
29207        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
29208        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
29209    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
29210    -- call ADRs
29211    -- Bug 4922099
29212    --
29213    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29214         (NVL(l_actual_upg_option, 'N') = 'O') OR
29215         (NVL(l_enc_upg_option, 'N') = 'O')
29216       )
29217    THEN
29218    NULL;
29219    --
29220    --
29221    
29222   l_ccid := AcctDerRule_4(
29223            p_application_id           => p_application_id
29224          , p_ae_header_id             => l_ae_header_id 
29225 , p_source_4 => p_source_4
29226          , x_transaction_coa_id       => l_adr_transaction_coa_id
29227          , x_accounting_coa_id        => l_adr_accounting_coa_id
29228          , x_value_type_code          => l_adr_value_type_code
29229          , p_side                     => 'NA'
29230    );
29231 
29232    xla_ae_lines_pkg.set_ccid(
29233     p_code_combination_id          => l_ccid
29234   , p_value_type_code              => l_adr_value_type_code
29235   , p_transaction_coa_id           => l_adr_transaction_coa_id
29236   , p_accounting_coa_id            => l_adr_accounting_coa_id
29237   , p_adr_code                     => 'CST_DEFAULT'
29238   , p_adr_type_code                => 'S'
29239   , p_component_type               => l_component_type
29240   , p_component_code               => l_component_code
29241   , p_component_type_code          => l_component_type_code
29242   , p_component_appl_id            => l_component_appl_id
29243   , p_amb_context_code             => l_amb_context_code
29244   , p_side                         => 'NA'
29245   );
29246 
29247 
29248    --
29249    --
29250    END IF;
29251 
29252        --
29253        -- Update the line information that should be overwritten
29254        --
29255        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
29256                                          p_header_num   => 1);
29257        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
29258 
29259        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
29260 
29261        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
29262           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
29263        END IF;
29264 
29265       --
29266       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
29267       --
29268       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
29269           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
29270       ELSE
29271           ---------------------------------------------------------------------------------------------------
29272           -- 4262811a Switch Sign
29273           ---------------------------------------------------------------------------------------------------
29274           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
29275           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29276                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29277           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29278                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29279           -- 5132302
29280           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
29281                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29282 
29283       END IF;
29284 
29285       -- 4955764
29286       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29287       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
29288 
29289 
29290       XLA_AE_LINES_PKG.ValidateCurrentLine;
29291       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29292 
29293       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29294                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
29295                ,p_balance_type_code => l_balance_type_code);
29296 
29297    END IF;
29298 
29299    -----------------------------------------------------------------------------------------
29300    -- 4262811 Multiperiod Accounting
29301    -----------------------------------------------------------------------------------------
29302      -- No MPA option is assigned.
29303 
29304 
29305 END IF;
29306 END IF;
29307 --
29308 
29309 --
29310 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29311    trace
29312       (p_msg      => 'END of AcctLineType_55'
29313       ,p_level    => C_LEVEL_PROCEDURE
29314       ,p_module   => l_log_module);
29315 END IF;
29316 --
29317 EXCEPTION
29318   WHEN xla_exceptions_pkg.application_exception THEN
29319       RAISE;
29320   WHEN OTHERS THEN
29321        xla_exceptions_pkg.raise_message
29322            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_55');
29323 END AcctLineType_55;
29324 --
29325 
29326 ---------------------------------------
29327 --
29328 -- PRIVATE FUNCTION
29329 --         AcctLineType_56
29330 --
29331 ---------------------------------------
29332 PROCEDURE AcctLineType_56 (
29333   p_application_id        IN NUMBER
29334  ,p_event_id              IN NUMBER
29335  ,p_calculate_acctd_flag  IN VARCHAR2
29336  ,p_calculate_g_l_flag    IN VARCHAR2
29337  ,p_actual_flag           IN OUT VARCHAR2
29338  ,p_balance_type_code     OUT VARCHAR2
29339  ,p_gain_or_loss_ref      OUT VARCHAR2
29340  
29341 --Cost Management Default Account
29342  , p_source_4            IN NUMBER
29343 --DISTRIBUTION_IDENTIFIER
29344  , p_source_11            IN NUMBER
29345 --Distribution Type
29346  , p_source_12            IN VARCHAR2
29347  , p_source_12_meaning    IN VARCHAR2
29348 --Entered Currency Code
29349  , p_source_15            IN VARCHAR2
29350 --Entered Amount
29351  , p_source_18            IN NUMBER
29352 --Currency Conversion Date
29353  , p_source_19            IN DATE
29354 --Currency Conversion Rate
29355  , p_source_20            IN NUMBER
29356 --Currency Conversion Type
29357  , p_source_21            IN VARCHAR2
29358 --Accounted Amount
29359  , p_source_22            IN NUMBER
29360 --Accounting Line Type
29361  , p_source_24            IN NUMBER
29362 )
29363 IS
29364 
29365 l_component_type              VARCHAR2(80);
29366 l_component_code              VARCHAR2(30);
29367 l_component_type_code         VARCHAR2(1);
29368 l_component_appl_id           INTEGER;
29369 l_amb_context_code            VARCHAR2(30);
29370 l_entity_code                 VARCHAR2(30);
29371 l_event_class_code            VARCHAR2(30);
29372 l_ae_header_id                NUMBER;
29373 l_event_type_code             VARCHAR2(30);
29374 l_line_definition_code        VARCHAR2(30);
29375 l_line_definition_owner_code  VARCHAR2(1);
29376 --
29377 -- adr variables
29378 l_segment                     VARCHAR2(30);
29379 l_ccid                        NUMBER;
29380 l_adr_transaction_coa_id      NUMBER;
29381 l_adr_accounting_coa_id       NUMBER;
29382 l_adr_flexfield_segment_code  VARCHAR2(30);
29383 l_adr_flex_value_set_id       NUMBER;
29384 l_adr_value_type_code         VARCHAR2(30);
29385 l_adr_value_combination_id    NUMBER;
29386 l_adr_value_segment_code      VARCHAR2(30);
29387 
29388 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
29389 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
29390 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
29391 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
29392 
29393 -- 4262811 Variables ------------------------------------------------------------------------------------------
29394 l_entered_amt_idx             NUMBER;
29395 l_accted_amt_idx              NUMBER;
29396 l_acc_rev_flag                VARCHAR2(1);
29397 l_accrual_line_num            NUMBER;
29398 l_tmp_amt                     NUMBER;
29399 l_acc_rev_natural_side_code   VARCHAR2(1);
29400 
29401 l_num_entries                 NUMBER;
29402 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
29403 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
29404 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
29405 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
29406 l_recog_line_1                NUMBER;
29407 l_recog_line_2                NUMBER;
29408 
29409 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
29410 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
29411 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
29412 
29413 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
29414 
29415 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
29416 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
29417 
29418 ---------------------------------------------------------------------------------------------------------------
29419 
29420 
29421 --
29422 -- bulk performance
29423 --
29424 l_balance_type_code           VARCHAR2(1);
29425 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
29426 l_log_module                  VARCHAR2(240);
29427 
29428 --
29429 -- Upgrade strategy
29430 --
29431 l_actual_upg_option           VARCHAR2(1);
29432 l_enc_upg_option           VARCHAR2(1);
29433 
29434 --
29435 BEGIN
29436 --
29437 IF g_log_enabled THEN
29438       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_56';
29439 END IF;
29440 --
29441 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29442 
29443       trace
29444          (p_msg      => 'BEGIN of AcctLineType_56'
29445          ,p_level    => C_LEVEL_PROCEDURE
29446          ,p_module   => l_log_module);
29447 
29448 END IF;
29449 --
29450 l_component_type             := 'AMB_JLT';
29451 l_component_code             := 'INTERCOMPANY_ACCRUAL';
29452 l_component_type_code        := 'S';
29453 l_component_appl_id          :=  707;
29454 l_amb_context_code           := 'DEFAULT';
29455 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
29456 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
29457 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
29458 l_line_definition_owner_code := 'S';
29459 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_SHIP';
29460 --
29461 l_balance_type_code          := 'A';
29462 l_segment                     := NULL;
29463 l_ccid                        := NULL;
29464 l_adr_transaction_coa_id      := NULL;
29465 l_adr_accounting_coa_id       := NULL;
29466 l_adr_flexfield_segment_code  := NULL;
29467 l_adr_flex_value_set_id       := NULL;
29468 l_adr_value_type_code         := NULL;
29469 l_adr_value_combination_id    := NULL;
29470 l_adr_value_segment_code      := NULL;
29471 
29472 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
29473 l_bflow_class_code           := '';    -- 4219869 Business Flow
29474 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
29475 l_budgetary_control_flag     := 'N';
29476 
29477 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
29478 l_bflow_applied_to_amt       := NULL; -- 5132302
29479 l_entered_amt_idx            := NULL;          -- 4262811
29480 l_accted_amt_idx             := NULL;          -- 4262811
29481 l_acc_rev_flag               := NULL;          -- 4262811
29482 l_accrual_line_num           := NULL;          -- 4262811
29483 l_tmp_amt                    := NULL;          -- 4262811
29484 --
29485  
29486 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
29487     l_balance_type_code <> 'B' THEN
29488 IF NVL(p_source_24,9E125) =  2 AND 
29489 p_source_22 <  0
29490  THEN 
29491 
29492    --
29493    XLA_AE_LINES_PKG.SetNewLine;
29494 
29495    p_balance_type_code          := l_balance_type_code;
29496    -- set the flag so later we will know whether the gain loss line needs to be created
29497    
29498    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
29499      p_actual_flag :='A';
29500    END IF;
29501 
29502    --
29503    -- bulk performance
29504    --
29505    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
29506                                       p_header_num   => 0); -- 4262811
29507    --
29508    -- set accounting line options
29509    --
29510    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
29511            p_natural_side_code          => 'D'
29512          , p_gain_or_loss_flag          => 'N'
29513          , p_gl_transfer_mode_code      => 'S'
29514          , p_acct_entry_type_code       => 'A'
29515          , p_switch_side_flag           => 'Y'
29516          , p_merge_duplicate_code       => 'N'
29517          );
29518    --
29519    l_acc_rev_natural_side_code := 'C';  -- 4262811
29520    -- 
29521    --
29522    -- set accounting line type info
29523    --
29524    xla_ae_lines_pkg.SetAcctLineType
29525       (p_component_type             => l_component_type
29526       ,p_event_type_code            => l_event_type_code
29527       ,p_line_definition_owner_code => l_line_definition_owner_code
29528       ,p_line_definition_code       => l_line_definition_code
29529       ,p_accounting_line_code       => l_component_code
29530       ,p_accounting_line_type_code  => l_component_type_code
29531       ,p_accounting_line_appl_id    => l_component_appl_id
29532       ,p_amb_context_code           => l_amb_context_code
29533       ,p_entity_code                => l_entity_code
29534       ,p_event_class_code           => l_event_class_code);
29535    --
29536    -- set accounting class
29537    --
29538    xla_ae_lines_pkg.SetAcctClass(
29539            p_accounting_class_code  => 'INTERCOMPANY_ACCRUAL'
29540          , p_ae_header_id           => l_ae_header_id
29541          );
29542 
29543    --
29544    -- set rounding class
29545    --
29546    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
29547                       'INTERCOMPANY_ACCRUAL';
29548 
29549    --
29550    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
29551    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
29552    --
29553    -- bulk performance
29554    --
29555    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
29556 
29557    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
29558       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
29559 
29560    -- 4955764
29561    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29562       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
29563 
29564    -- 4458381 Public Sector Enh
29565    
29566    --
29567    -- set accounting attributes for the line type
29568    --
29569    l_entered_amt_idx := 3;
29570    l_accted_amt_idx  := 8;
29571    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
29572    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
29573    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
29574    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
29575    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
29576    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
29577    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
29578    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
29579    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
29580    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
29581    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
29582    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
29583    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
29584    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
29585    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
29586    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
29587    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
29588 
29589    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
29590    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
29591 
29592    ---------------------------------------------------------------------------------------------------------------
29593    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
29594    ---------------------------------------------------------------------------------------------------------------
29595    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
29596 
29597    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29598    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29599 
29600    IF xla_accounting_cache_pkg.GetValueChar
29601          (p_source_code         => 'LEDGER_CATEGORY_CODE'
29602          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
29603    AND l_bflow_method_code = 'PRIOR_ENTRY'
29604 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
29605    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
29606          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
29607        )
29608    THEN
29609          xla_ae_lines_pkg.BflowUpgEntry
29610            (p_business_method_code    => l_bflow_method_code
29611            ,p_business_class_code     => l_bflow_class_code
29612            ,p_balance_type            => l_balance_type_code);
29613    ELSE
29614       NULL;
29615 -- No business flow processing for business flow method of NONE.
29616    END IF;
29617 
29618    --
29619    -- call analytical criteria
29620    --
29621    
29622    --
29623    -- call description
29624    --
29625    -- No description or it is inherited.
29626    --
29627    -- call ADRs
29628    -- Bug 4922099
29629    --
29630    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29631         (NVL(l_actual_upg_option, 'N') = 'O') OR
29632         (NVL(l_enc_upg_option, 'N') = 'O')
29633       )
29634    THEN
29635    NULL;
29636    --
29637    --
29638    
29639   l_ccid := AcctDerRule_4(
29640            p_application_id           => p_application_id
29641          , p_ae_header_id             => l_ae_header_id 
29642 , p_source_4 => p_source_4
29643          , x_transaction_coa_id       => l_adr_transaction_coa_id
29644          , x_accounting_coa_id        => l_adr_accounting_coa_id
29645          , x_value_type_code          => l_adr_value_type_code
29646          , p_side                     => 'NA'
29647    );
29648 
29649    xla_ae_lines_pkg.set_ccid(
29650     p_code_combination_id          => l_ccid
29651   , p_value_type_code              => l_adr_value_type_code
29652   , p_transaction_coa_id           => l_adr_transaction_coa_id
29653   , p_accounting_coa_id            => l_adr_accounting_coa_id
29654   , p_adr_code                     => 'CST_DEFAULT'
29655   , p_adr_type_code                => 'S'
29656   , p_component_type               => l_component_type
29657   , p_component_code               => l_component_code
29658   , p_component_type_code          => l_component_type_code
29659   , p_component_appl_id            => l_component_appl_id
29660   , p_amb_context_code             => l_amb_context_code
29661   , p_side                         => 'NA'
29662   );
29663 
29664 
29665    --
29666    --
29667    END IF;
29668    --
29669    -- Bug 4922099
29670    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
29671           (NVL(l_enc_upg_option, 'N') = 'O')
29672         ) AND
29673         (l_bflow_method_code = 'PRIOR_ENTRY')
29674       )
29675    THEN
29676       IF
29677       --
29678       1 = 2
29679       --
29680       THEN
29681       xla_accounting_err_pkg.build_message
29682                                     (p_appli_s_name            => 'XLA'
29683                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29684                                     ,p_token_1                 => 'LINE_NUMBER'
29685                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
29686                                     ,p_token_2                 => 'LINE_TYPE_NAME'
29687                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
29688                                                                              l_component_type
29689                                                                             ,l_component_code
29690                                                                             ,l_component_type_code
29691                                                                             ,l_component_appl_id
29692                                                                             ,l_amb_context_code
29693                                                                             ,l_entity_code
29694                                                                             ,l_event_class_code
29695                                                                            )
29696                                     ,p_token_3                 => 'OWNER'
29697                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
29698                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
29699                                                                           ,p_lookup_code    => l_component_type_code
29700                                                                          )
29701                                     ,p_token_4                 => 'PRODUCT_NAME'
29702                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
29703                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
29704                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
29705                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
29706                                     ,p_ae_header_id            =>  NULL
29707                                        );
29708 
29709         IF (C_LEVEL_ERROR>= g_log_level) THEN
29710                  trace
29711                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29712                       ,p_level    => C_LEVEL_ERROR
29713                       ,p_module   => l_log_module);
29714         END IF;
29715       END IF;
29716    END IF;
29717    --
29718    --
29719    ------------------------------------------------------------------------------------------------
29720    -- 4219869 Business Flow
29721    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
29722    -- Prior Entry.  Currently, the following code is always generated.
29723    ------------------------------------------------------------------------------------------------
29724    XLA_AE_LINES_PKG.ValidateCurrentLine;
29725 
29726    ------------------------------------------------------------------------------------
29727    -- 4219869 Business Flow
29728    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
29729    ------------------------------------------------------------------------------------
29730    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29731 
29732    ----------------------------------------------------------------------------------
29733    -- 4219869 Business Flow
29734    -- Update journal entry status -- Need to generate this within IF <condition>
29735    ----------------------------------------------------------------------------------
29736    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29737          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
29738          ,p_balance_type_code => l_balance_type_code
29739          );
29740 
29741    -------------------------------------------------------------------------------------------
29742    -- 4262811 - Generate the Accrual Reversal lines
29743    -------------------------------------------------------------------------------------------
29744    BEGIN
29745       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
29746                               (g_array_event(p_event_id).array_value_num('header_index'));
29747       IF l_acc_rev_flag IS NULL THEN
29748          l_acc_rev_flag := 'N';
29749       END IF;
29750    EXCEPTION
29751       WHEN OTHERS THEN
29752          l_acc_rev_flag := 'N';
29753    END;
29754    --
29755    IF (l_acc_rev_flag = 'Y') THEN
29756 
29757        -- 4645092  ------------------------------------------------------------------------------
29758        -- To allow MPA report to determine if it should generate report process
29759        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
29760        ------------------------------------------------------------------------------------------
29761 
29762        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
29763        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
29764    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
29765    -- call ADRs
29766    -- Bug 4922099
29767    --
29768    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29769         (NVL(l_actual_upg_option, 'N') = 'O') OR
29770         (NVL(l_enc_upg_option, 'N') = 'O')
29771       )
29772    THEN
29773    NULL;
29774    --
29775    --
29776    
29777   l_ccid := AcctDerRule_4(
29778            p_application_id           => p_application_id
29779          , p_ae_header_id             => l_ae_header_id 
29780 , p_source_4 => p_source_4
29781          , x_transaction_coa_id       => l_adr_transaction_coa_id
29782          , x_accounting_coa_id        => l_adr_accounting_coa_id
29783          , x_value_type_code          => l_adr_value_type_code
29784          , p_side                     => 'NA'
29785    );
29786 
29787    xla_ae_lines_pkg.set_ccid(
29788     p_code_combination_id          => l_ccid
29789   , p_value_type_code              => l_adr_value_type_code
29790   , p_transaction_coa_id           => l_adr_transaction_coa_id
29791   , p_accounting_coa_id            => l_adr_accounting_coa_id
29792   , p_adr_code                     => 'CST_DEFAULT'
29793   , p_adr_type_code                => 'S'
29794   , p_component_type               => l_component_type
29795   , p_component_code               => l_component_code
29796   , p_component_type_code          => l_component_type_code
29797   , p_component_appl_id            => l_component_appl_id
29798   , p_amb_context_code             => l_amb_context_code
29799   , p_side                         => 'NA'
29800   );
29801 
29802 
29803    --
29804    --
29805    END IF;
29806 
29807        --
29808        -- Update the line information that should be overwritten
29809        --
29810        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
29811                                          p_header_num   => 1);
29812        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
29813 
29814        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
29815 
29816        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
29817           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
29818        END IF;
29819 
29820       --
29821       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
29822       --
29823       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
29824           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
29825       ELSE
29826           ---------------------------------------------------------------------------------------------------
29827           -- 4262811a Switch Sign
29828           ---------------------------------------------------------------------------------------------------
29829           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
29830           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29831                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29832           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29833                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29834           -- 5132302
29835           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
29836                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29837 
29838       END IF;
29839 
29840       -- 4955764
29841       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29842       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
29843 
29844 
29845       XLA_AE_LINES_PKG.ValidateCurrentLine;
29846       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29847 
29848       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29849                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
29850                ,p_balance_type_code => l_balance_type_code);
29851 
29852    END IF;
29853 
29854    -----------------------------------------------------------------------------------------
29855    -- 4262811 Multiperiod Accounting
29856    -----------------------------------------------------------------------------------------
29857      -- No MPA option is assigned.
29858 
29859 
29860 END IF;
29861 END IF;
29862 --
29863 
29864 --
29865 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29866    trace
29867       (p_msg      => 'END of AcctLineType_56'
29868       ,p_level    => C_LEVEL_PROCEDURE
29869       ,p_module   => l_log_module);
29870 END IF;
29871 --
29872 EXCEPTION
29873   WHEN xla_exceptions_pkg.application_exception THEN
29874       RAISE;
29875   WHEN OTHERS THEN
29876        xla_exceptions_pkg.raise_message
29877            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_56');
29878 END AcctLineType_56;
29879 --
29880 
29881 ---------------------------------------
29882 --
29883 -- PRIVATE FUNCTION
29884 --         AcctLineType_57
29885 --
29886 ---------------------------------------
29887 PROCEDURE AcctLineType_57 (
29888   p_application_id        IN NUMBER
29889  ,p_event_id              IN NUMBER
29890  ,p_calculate_acctd_flag  IN VARCHAR2
29891  ,p_calculate_g_l_flag    IN VARCHAR2
29892  ,p_actual_flag           IN OUT VARCHAR2
29893  ,p_balance_type_code     OUT VARCHAR2
29894  ,p_gain_or_loss_ref      OUT VARCHAR2
29895  
29896 --Cost Management Default Account
29897  , p_source_4            IN NUMBER
29898 --Receiving Accounting Line Type
29899  , p_source_5            IN VARCHAR2
29900 --DISTRIBUTION_IDENTIFIER
29901  , p_source_11            IN NUMBER
29902 --Distribution Type
29903  , p_source_12            IN VARCHAR2
29904  , p_source_12_meaning    IN VARCHAR2
29905 --Entered Currency Code
29906  , p_source_15            IN VARCHAR2
29907 --Entered Amount
29908  , p_source_18            IN NUMBER
29909 --Currency Conversion Date
29910  , p_source_19            IN DATE
29911 --Currency Conversion Rate
29912  , p_source_20            IN NUMBER
29913 --Currency Conversion Type
29914  , p_source_21            IN VARCHAR2
29915 --Accounted Amount
29916  , p_source_22            IN NUMBER
29917 )
29918 IS
29919 
29920 l_component_type              VARCHAR2(80);
29921 l_component_code              VARCHAR2(30);
29922 l_component_type_code         VARCHAR2(1);
29923 l_component_appl_id           INTEGER;
29924 l_amb_context_code            VARCHAR2(30);
29925 l_entity_code                 VARCHAR2(30);
29926 l_event_class_code            VARCHAR2(30);
29927 l_ae_header_id                NUMBER;
29928 l_event_type_code             VARCHAR2(30);
29929 l_line_definition_code        VARCHAR2(30);
29930 l_line_definition_owner_code  VARCHAR2(1);
29931 --
29932 -- adr variables
29933 l_segment                     VARCHAR2(30);
29934 l_ccid                        NUMBER;
29935 l_adr_transaction_coa_id      NUMBER;
29936 l_adr_accounting_coa_id       NUMBER;
29937 l_adr_flexfield_segment_code  VARCHAR2(30);
29938 l_adr_flex_value_set_id       NUMBER;
29939 l_adr_value_type_code         VARCHAR2(30);
29940 l_adr_value_combination_id    NUMBER;
29941 l_adr_value_segment_code      VARCHAR2(30);
29942 
29943 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
29944 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
29945 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
29946 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
29947 
29948 -- 4262811 Variables ------------------------------------------------------------------------------------------
29949 l_entered_amt_idx             NUMBER;
29950 l_accted_amt_idx              NUMBER;
29951 l_acc_rev_flag                VARCHAR2(1);
29952 l_accrual_line_num            NUMBER;
29953 l_tmp_amt                     NUMBER;
29954 l_acc_rev_natural_side_code   VARCHAR2(1);
29955 
29956 l_num_entries                 NUMBER;
29957 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
29958 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
29959 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
29960 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
29961 l_recog_line_1                NUMBER;
29962 l_recog_line_2                NUMBER;
29963 
29964 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
29965 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
29966 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
29967 
29968 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
29969 
29970 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
29971 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
29972 
29973 ---------------------------------------------------------------------------------------------------------------
29974 
29975 
29976 --
29977 -- bulk performance
29978 --
29979 l_balance_type_code           VARCHAR2(1);
29980 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
29981 l_log_module                  VARCHAR2(240);
29982 
29983 --
29984 -- Upgrade strategy
29985 --
29986 l_actual_upg_option           VARCHAR2(1);
29987 l_enc_upg_option           VARCHAR2(1);
29988 
29989 --
29990 BEGIN
29991 --
29992 IF g_log_enabled THEN
29993       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_57';
29994 END IF;
29995 --
29996 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29997 
29998       trace
29999          (p_msg      => 'BEGIN of AcctLineType_57'
30000          ,p_level    => C_LEVEL_PROCEDURE
30001          ,p_module   => l_log_module);
30002 
30003 END IF;
30004 --
30005 l_component_type             := 'AMB_JLT';
30006 l_component_code             := 'INTERCOMPANY_ACCRUAL';
30007 l_component_type_code        := 'S';
30008 l_component_appl_id          :=  707;
30009 l_amb_context_code           := 'DEFAULT';
30010 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
30011 l_event_class_code           := 'RCPT_REC_INSP';
30012 l_event_type_code            := 'RCPT_REC_INSP_ALL';
30013 l_line_definition_owner_code := 'S';
30014 l_line_definition_code       := 'RCPT_REC_INSP';
30015 --
30016 l_balance_type_code          := 'A';
30017 l_segment                     := NULL;
30018 l_ccid                        := NULL;
30019 l_adr_transaction_coa_id      := NULL;
30020 l_adr_accounting_coa_id       := NULL;
30021 l_adr_flexfield_segment_code  := NULL;
30022 l_adr_flex_value_set_id       := NULL;
30023 l_adr_value_type_code         := NULL;
30024 l_adr_value_combination_id    := NULL;
30025 l_adr_value_segment_code      := NULL;
30026 
30027 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
30028 l_bflow_class_code           := '';    -- 4219869 Business Flow
30029 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
30030 l_budgetary_control_flag     := 'N';
30031 
30032 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
30033 l_bflow_applied_to_amt       := NULL; -- 5132302
30034 l_entered_amt_idx            := NULL;          -- 4262811
30035 l_accted_amt_idx             := NULL;          -- 4262811
30036 l_acc_rev_flag               := NULL;          -- 4262811
30037 l_accrual_line_num           := NULL;          -- 4262811
30038 l_tmp_amt                    := NULL;          -- 4262811
30039 --
30040  
30041 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
30042     l_balance_type_code <> 'B' THEN
30043 IF NVL(p_source_5,'
30044 ') =  'IC Accrual'
30045  THEN 
30046 
30047    --
30048    XLA_AE_LINES_PKG.SetNewLine;
30049 
30050    p_balance_type_code          := l_balance_type_code;
30051    -- set the flag so later we will know whether the gain loss line needs to be created
30052    
30053    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
30054      p_actual_flag :='A';
30055    END IF;
30056 
30057    --
30058    -- bulk performance
30059    --
30060    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
30061                                       p_header_num   => 0); -- 4262811
30062    --
30063    -- set accounting line options
30064    --
30065    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
30066            p_natural_side_code          => 'D'
30067          , p_gain_or_loss_flag          => 'N'
30068          , p_gl_transfer_mode_code      => 'S'
30069          , p_acct_entry_type_code       => 'A'
30070          , p_switch_side_flag           => 'Y'
30071          , p_merge_duplicate_code       => 'N'
30072          );
30073    --
30074    l_acc_rev_natural_side_code := 'C';  -- 4262811
30075    -- 
30076    --
30077    -- set accounting line type info
30078    --
30079    xla_ae_lines_pkg.SetAcctLineType
30080       (p_component_type             => l_component_type
30081       ,p_event_type_code            => l_event_type_code
30082       ,p_line_definition_owner_code => l_line_definition_owner_code
30083       ,p_line_definition_code       => l_line_definition_code
30084       ,p_accounting_line_code       => l_component_code
30085       ,p_accounting_line_type_code  => l_component_type_code
30086       ,p_accounting_line_appl_id    => l_component_appl_id
30087       ,p_amb_context_code           => l_amb_context_code
30088       ,p_entity_code                => l_entity_code
30089       ,p_event_class_code           => l_event_class_code);
30090    --
30091    -- set accounting class
30092    --
30093    xla_ae_lines_pkg.SetAcctClass(
30094            p_accounting_class_code  => 'INTERCOMPANY_ACCRUAL'
30095          , p_ae_header_id           => l_ae_header_id
30096          );
30097 
30098    --
30099    -- set rounding class
30100    --
30101    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
30102                       'INTERCOMPANY_ACCRUAL';
30103 
30104    --
30105    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
30106    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
30107    --
30108    -- bulk performance
30109    --
30110    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
30111 
30112    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
30113       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
30114 
30115    -- 4955764
30116    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30117       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
30118 
30119    -- 4458381 Public Sector Enh
30120    
30121    --
30122    -- set accounting attributes for the line type
30123    --
30124    l_entered_amt_idx := 3;
30125    l_accted_amt_idx  := 8;
30126    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
30127    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
30128    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
30129    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
30130    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
30131    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
30132    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
30133    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
30134    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
30135    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
30136    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
30137    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
30138    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
30139    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
30140    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
30141    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
30142    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
30143 
30144    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
30145    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
30146 
30147    ---------------------------------------------------------------------------------------------------------------
30148    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
30149    ---------------------------------------------------------------------------------------------------------------
30150    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
30151 
30152    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30153    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30154 
30155    IF xla_accounting_cache_pkg.GetValueChar
30156          (p_source_code         => 'LEDGER_CATEGORY_CODE'
30157          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
30158    AND l_bflow_method_code = 'PRIOR_ENTRY'
30159 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
30160    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
30161          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
30162        )
30163    THEN
30164          xla_ae_lines_pkg.BflowUpgEntry
30165            (p_business_method_code    => l_bflow_method_code
30166            ,p_business_class_code     => l_bflow_class_code
30167            ,p_balance_type            => l_balance_type_code);
30168    ELSE
30169       NULL;
30170 -- No business flow processing for business flow method of NONE.
30171    END IF;
30172 
30173    --
30174    -- call analytical criteria
30175    --
30176    
30177    --
30178    -- call description
30179    --
30180    -- No description or it is inherited.
30181    --
30182    -- call ADRs
30183    -- Bug 4922099
30184    --
30185    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30186         (NVL(l_actual_upg_option, 'N') = 'O') OR
30187         (NVL(l_enc_upg_option, 'N') = 'O')
30188       )
30189    THEN
30190    NULL;
30191    --
30192    --
30193    
30194   l_ccid := AcctDerRule_4(
30195            p_application_id           => p_application_id
30196          , p_ae_header_id             => l_ae_header_id 
30197 , p_source_4 => p_source_4
30198          , x_transaction_coa_id       => l_adr_transaction_coa_id
30199          , x_accounting_coa_id        => l_adr_accounting_coa_id
30200          , x_value_type_code          => l_adr_value_type_code
30201          , p_side                     => 'NA'
30202    );
30203 
30204    xla_ae_lines_pkg.set_ccid(
30205     p_code_combination_id          => l_ccid
30206   , p_value_type_code              => l_adr_value_type_code
30207   , p_transaction_coa_id           => l_adr_transaction_coa_id
30208   , p_accounting_coa_id            => l_adr_accounting_coa_id
30209   , p_adr_code                     => 'CST_DEFAULT'
30210   , p_adr_type_code                => 'S'
30211   , p_component_type               => l_component_type
30212   , p_component_code               => l_component_code
30213   , p_component_type_code          => l_component_type_code
30214   , p_component_appl_id            => l_component_appl_id
30215   , p_amb_context_code             => l_amb_context_code
30216   , p_side                         => 'NA'
30217   );
30218 
30219 
30220    --
30221    --
30222    END IF;
30223    --
30224    -- Bug 4922099
30225    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
30226           (NVL(l_enc_upg_option, 'N') = 'O')
30227         ) AND
30228         (l_bflow_method_code = 'PRIOR_ENTRY')
30229       )
30230    THEN
30231       IF
30232       --
30233       1 = 2
30234       --
30235       THEN
30236       xla_accounting_err_pkg.build_message
30237                                     (p_appli_s_name            => 'XLA'
30238                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30239                                     ,p_token_1                 => 'LINE_NUMBER'
30240                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
30241                                     ,p_token_2                 => 'LINE_TYPE_NAME'
30242                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
30243                                                                              l_component_type
30244                                                                             ,l_component_code
30245                                                                             ,l_component_type_code
30246                                                                             ,l_component_appl_id
30247                                                                             ,l_amb_context_code
30248                                                                             ,l_entity_code
30249                                                                             ,l_event_class_code
30250                                                                            )
30251                                     ,p_token_3                 => 'OWNER'
30252                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
30253                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
30254                                                                           ,p_lookup_code    => l_component_type_code
30255                                                                          )
30256                                     ,p_token_4                 => 'PRODUCT_NAME'
30257                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
30258                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
30259                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
30260                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
30261                                     ,p_ae_header_id            =>  NULL
30262                                        );
30263 
30264         IF (C_LEVEL_ERROR>= g_log_level) THEN
30265                  trace
30266                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30267                       ,p_level    => C_LEVEL_ERROR
30268                       ,p_module   => l_log_module);
30269         END IF;
30270       END IF;
30271    END IF;
30272    --
30273    --
30274    ------------------------------------------------------------------------------------------------
30275    -- 4219869 Business Flow
30276    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
30277    -- Prior Entry.  Currently, the following code is always generated.
30278    ------------------------------------------------------------------------------------------------
30279    XLA_AE_LINES_PKG.ValidateCurrentLine;
30280 
30281    ------------------------------------------------------------------------------------
30282    -- 4219869 Business Flow
30283    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
30284    ------------------------------------------------------------------------------------
30285    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30286 
30287    ----------------------------------------------------------------------------------
30288    -- 4219869 Business Flow
30289    -- Update journal entry status -- Need to generate this within IF <condition>
30290    ----------------------------------------------------------------------------------
30291    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30292          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
30293          ,p_balance_type_code => l_balance_type_code
30294          );
30295 
30296    -------------------------------------------------------------------------------------------
30297    -- 4262811 - Generate the Accrual Reversal lines
30298    -------------------------------------------------------------------------------------------
30299    BEGIN
30300       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
30301                               (g_array_event(p_event_id).array_value_num('header_index'));
30302       IF l_acc_rev_flag IS NULL THEN
30303          l_acc_rev_flag := 'N';
30304       END IF;
30305    EXCEPTION
30306       WHEN OTHERS THEN
30307          l_acc_rev_flag := 'N';
30308    END;
30309    --
30310    IF (l_acc_rev_flag = 'Y') THEN
30311 
30312        -- 4645092  ------------------------------------------------------------------------------
30313        -- To allow MPA report to determine if it should generate report process
30314        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
30315        ------------------------------------------------------------------------------------------
30316 
30317        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
30318        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
30319    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
30320    -- call ADRs
30321    -- Bug 4922099
30322    --
30323    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30324         (NVL(l_actual_upg_option, 'N') = 'O') OR
30325         (NVL(l_enc_upg_option, 'N') = 'O')
30326       )
30327    THEN
30328    NULL;
30329    --
30330    --
30331    
30332   l_ccid := AcctDerRule_4(
30333            p_application_id           => p_application_id
30334          , p_ae_header_id             => l_ae_header_id 
30335 , p_source_4 => p_source_4
30336          , x_transaction_coa_id       => l_adr_transaction_coa_id
30337          , x_accounting_coa_id        => l_adr_accounting_coa_id
30338          , x_value_type_code          => l_adr_value_type_code
30339          , p_side                     => 'NA'
30340    );
30341 
30342    xla_ae_lines_pkg.set_ccid(
30343     p_code_combination_id          => l_ccid
30344   , p_value_type_code              => l_adr_value_type_code
30345   , p_transaction_coa_id           => l_adr_transaction_coa_id
30346   , p_accounting_coa_id            => l_adr_accounting_coa_id
30347   , p_adr_code                     => 'CST_DEFAULT'
30348   , p_adr_type_code                => 'S'
30349   , p_component_type               => l_component_type
30350   , p_component_code               => l_component_code
30351   , p_component_type_code          => l_component_type_code
30352   , p_component_appl_id            => l_component_appl_id
30353   , p_amb_context_code             => l_amb_context_code
30354   , p_side                         => 'NA'
30355   );
30356 
30357 
30358    --
30359    --
30360    END IF;
30361 
30362        --
30363        -- Update the line information that should be overwritten
30364        --
30365        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
30366                                          p_header_num   => 1);
30367        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
30368 
30369        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
30370 
30371        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
30372           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
30373        END IF;
30374 
30375       --
30376       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
30377       --
30378       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
30379           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
30380       ELSE
30381           ---------------------------------------------------------------------------------------------------
30382           -- 4262811a Switch Sign
30383           ---------------------------------------------------------------------------------------------------
30384           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
30385           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30386                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30387           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30388                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30389           -- 5132302
30390           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
30391                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30392 
30393       END IF;
30394 
30395       -- 4955764
30396       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30397       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
30398 
30399 
30400       XLA_AE_LINES_PKG.ValidateCurrentLine;
30401       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30402 
30403       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30404                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
30405                ,p_balance_type_code => l_balance_type_code);
30406 
30407    END IF;
30408 
30409    -----------------------------------------------------------------------------------------
30410    -- 4262811 Multiperiod Accounting
30411    -----------------------------------------------------------------------------------------
30412      -- No MPA option is assigned.
30413 
30414 
30415 END IF;
30416 END IF;
30417 --
30418 
30419 --
30420 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30421    trace
30422       (p_msg      => 'END of AcctLineType_57'
30423       ,p_level    => C_LEVEL_PROCEDURE
30424       ,p_module   => l_log_module);
30425 END IF;
30426 --
30427 EXCEPTION
30428   WHEN xla_exceptions_pkg.application_exception THEN
30429       RAISE;
30430   WHEN OTHERS THEN
30431        xla_exceptions_pkg.raise_message
30432            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_57');
30433 END AcctLineType_57;
30434 --
30435 
30436 ---------------------------------------
30437 --
30438 -- PRIVATE FUNCTION
30439 --         AcctLineType_58
30440 --
30441 ---------------------------------------
30442 PROCEDURE AcctLineType_58 (
30443   p_application_id        IN NUMBER
30444  ,p_event_id              IN NUMBER
30445  ,p_calculate_acctd_flag  IN VARCHAR2
30446  ,p_calculate_g_l_flag    IN VARCHAR2
30447  ,p_actual_flag           IN OUT VARCHAR2
30448  ,p_balance_type_code     OUT VARCHAR2
30449  ,p_gain_or_loss_ref      OUT VARCHAR2
30450  
30451 --Cost Management Default Account
30452  , p_source_4            IN NUMBER
30453 --DISTRIBUTION_IDENTIFIER
30454  , p_source_11            IN NUMBER
30455 --Distribution Type
30456  , p_source_12            IN VARCHAR2
30457  , p_source_12_meaning    IN VARCHAR2
30458 --Entered Currency Code
30459  , p_source_15            IN VARCHAR2
30460 --Entered Amount
30461  , p_source_18            IN NUMBER
30462 --Currency Conversion Date
30463  , p_source_19            IN DATE
30464 --Currency Conversion Rate
30465  , p_source_20            IN NUMBER
30466 --Currency Conversion Type
30467  , p_source_21            IN VARCHAR2
30468 --Accounted Amount
30469  , p_source_22            IN NUMBER
30470 --Accounting Line Type
30471  , p_source_24            IN NUMBER
30472 )
30473 IS
30474 
30475 l_component_type              VARCHAR2(80);
30476 l_component_code              VARCHAR2(30);
30477 l_component_type_code         VARCHAR2(1);
30478 l_component_appl_id           INTEGER;
30479 l_amb_context_code            VARCHAR2(30);
30480 l_entity_code                 VARCHAR2(30);
30481 l_event_class_code            VARCHAR2(30);
30482 l_ae_header_id                NUMBER;
30483 l_event_type_code             VARCHAR2(30);
30484 l_line_definition_code        VARCHAR2(30);
30485 l_line_definition_owner_code  VARCHAR2(1);
30486 --
30487 -- adr variables
30488 l_segment                     VARCHAR2(30);
30489 l_ccid                        NUMBER;
30490 l_adr_transaction_coa_id      NUMBER;
30491 l_adr_accounting_coa_id       NUMBER;
30492 l_adr_flexfield_segment_code  VARCHAR2(30);
30493 l_adr_flex_value_set_id       NUMBER;
30494 l_adr_value_type_code         VARCHAR2(30);
30495 l_adr_value_combination_id    NUMBER;
30496 l_adr_value_segment_code      VARCHAR2(30);
30497 
30498 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
30499 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
30500 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
30501 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
30502 
30503 -- 4262811 Variables ------------------------------------------------------------------------------------------
30504 l_entered_amt_idx             NUMBER;
30505 l_accted_amt_idx              NUMBER;
30506 l_acc_rev_flag                VARCHAR2(1);
30507 l_accrual_line_num            NUMBER;
30508 l_tmp_amt                     NUMBER;
30509 l_acc_rev_natural_side_code   VARCHAR2(1);
30510 
30511 l_num_entries                 NUMBER;
30512 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
30513 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
30514 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
30515 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
30516 l_recog_line_1                NUMBER;
30517 l_recog_line_2                NUMBER;
30518 
30519 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
30520 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
30521 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
30522 
30523 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
30524 
30525 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
30526 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
30527 
30528 ---------------------------------------------------------------------------------------------------------------
30529 
30530 
30531 --
30532 -- bulk performance
30533 --
30534 l_balance_type_code           VARCHAR2(1);
30535 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
30536 l_log_module                  VARCHAR2(240);
30537 
30538 --
30539 -- Upgrade strategy
30540 --
30541 l_actual_upg_option           VARCHAR2(1);
30542 l_enc_upg_option           VARCHAR2(1);
30543 
30544 --
30545 BEGIN
30546 --
30547 IF g_log_enabled THEN
30548       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_58';
30549 END IF;
30550 --
30551 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30552 
30553       trace
30554          (p_msg      => 'BEGIN of AcctLineType_58'
30555          ,p_level    => C_LEVEL_PROCEDURE
30556          ,p_module   => l_log_module);
30557 
30558 END IF;
30559 --
30560 l_component_type             := 'AMB_JLT';
30561 l_component_code             := 'INTERCOMPANY_ACCRUAL';
30562 l_component_type_code        := 'S';
30563 l_component_appl_id          :=  707;
30564 l_amb_context_code           := 'DEFAULT';
30565 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
30566 l_event_class_code           := 'LOG_INTERCOMPANY';
30567 l_event_type_code            := 'LOG_INTERCOMPANY_ALL';
30568 l_line_definition_owner_code := 'S';
30569 l_line_definition_code       := 'LOG_INTERCOMPANY';
30570 --
30571 l_balance_type_code          := 'A';
30572 l_segment                     := NULL;
30573 l_ccid                        := NULL;
30574 l_adr_transaction_coa_id      := NULL;
30575 l_adr_accounting_coa_id       := NULL;
30576 l_adr_flexfield_segment_code  := NULL;
30577 l_adr_flex_value_set_id       := NULL;
30578 l_adr_value_type_code         := NULL;
30579 l_adr_value_combination_id    := NULL;
30580 l_adr_value_segment_code      := NULL;
30581 
30582 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
30583 l_bflow_class_code           := '';    -- 4219869 Business Flow
30584 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
30585 l_budgetary_control_flag     := 'N';
30586 
30587 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
30588 l_bflow_applied_to_amt       := NULL; -- 5132302
30589 l_entered_amt_idx            := NULL;          -- 4262811
30590 l_accted_amt_idx             := NULL;          -- 4262811
30591 l_acc_rev_flag               := NULL;          -- 4262811
30592 l_accrual_line_num           := NULL;          -- 4262811
30593 l_tmp_amt                    := NULL;          -- 4262811
30594 --
30595  
30596 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
30597     l_balance_type_code <> 'B' THEN
30598 IF NVL(p_source_24,9E125) =  16
30599  THEN 
30600 
30601    --
30602    XLA_AE_LINES_PKG.SetNewLine;
30603 
30604    p_balance_type_code          := l_balance_type_code;
30605    -- set the flag so later we will know whether the gain loss line needs to be created
30606    
30607    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
30608      p_actual_flag :='A';
30609    END IF;
30610 
30611    --
30612    -- bulk performance
30613    --
30614    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
30615                                       p_header_num   => 0); -- 4262811
30616    --
30617    -- set accounting line options
30618    --
30619    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
30620            p_natural_side_code          => 'D'
30621          , p_gain_or_loss_flag          => 'N'
30622          , p_gl_transfer_mode_code      => 'S'
30623          , p_acct_entry_type_code       => 'A'
30624          , p_switch_side_flag           => 'Y'
30625          , p_merge_duplicate_code       => 'N'
30626          );
30627    --
30628    l_acc_rev_natural_side_code := 'C';  -- 4262811
30629    -- 
30630    --
30631    -- set accounting line type info
30632    --
30633    xla_ae_lines_pkg.SetAcctLineType
30634       (p_component_type             => l_component_type
30635       ,p_event_type_code            => l_event_type_code
30636       ,p_line_definition_owner_code => l_line_definition_owner_code
30637       ,p_line_definition_code       => l_line_definition_code
30638       ,p_accounting_line_code       => l_component_code
30639       ,p_accounting_line_type_code  => l_component_type_code
30640       ,p_accounting_line_appl_id    => l_component_appl_id
30641       ,p_amb_context_code           => l_amb_context_code
30642       ,p_entity_code                => l_entity_code
30643       ,p_event_class_code           => l_event_class_code);
30644    --
30645    -- set accounting class
30646    --
30647    xla_ae_lines_pkg.SetAcctClass(
30648            p_accounting_class_code  => 'INTERCOMPANY_ACCRUAL'
30649          , p_ae_header_id           => l_ae_header_id
30650          );
30651 
30652    --
30653    -- set rounding class
30654    --
30655    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
30656                       'INTERCOMPANY_ACCRUAL';
30657 
30658    --
30659    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
30660    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
30661    --
30662    -- bulk performance
30663    --
30664    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
30665 
30666    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
30667       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
30668 
30669    -- 4955764
30670    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30671       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
30672 
30673    -- 4458381 Public Sector Enh
30674    
30675    --
30676    -- set accounting attributes for the line type
30677    --
30678    l_entered_amt_idx := 3;
30679    l_accted_amt_idx  := 8;
30680    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
30681    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
30682    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
30683    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
30684    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
30685    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
30686    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
30687    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
30688    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
30689    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
30690    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
30691    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
30692    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
30693    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
30694    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
30695    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
30696    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
30697 
30698    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
30699    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
30700 
30701    ---------------------------------------------------------------------------------------------------------------
30702    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
30703    ---------------------------------------------------------------------------------------------------------------
30704    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
30705 
30706    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30707    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30708 
30709    IF xla_accounting_cache_pkg.GetValueChar
30710          (p_source_code         => 'LEDGER_CATEGORY_CODE'
30711          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
30712    AND l_bflow_method_code = 'PRIOR_ENTRY'
30713 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
30714    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
30715          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
30716        )
30717    THEN
30718          xla_ae_lines_pkg.BflowUpgEntry
30719            (p_business_method_code    => l_bflow_method_code
30720            ,p_business_class_code     => l_bflow_class_code
30721            ,p_balance_type            => l_balance_type_code);
30722    ELSE
30723       NULL;
30724 -- No business flow processing for business flow method of NONE.
30725    END IF;
30726 
30727    --
30728    -- call analytical criteria
30729    --
30730    
30731    --
30732    -- call description
30733    --
30734    -- No description or it is inherited.
30735    --
30736    -- call ADRs
30737    -- Bug 4922099
30738    --
30739    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30740         (NVL(l_actual_upg_option, 'N') = 'O') OR
30741         (NVL(l_enc_upg_option, 'N') = 'O')
30742       )
30743    THEN
30744    NULL;
30745    --
30746    --
30747    
30748   l_ccid := AcctDerRule_4(
30749            p_application_id           => p_application_id
30750          , p_ae_header_id             => l_ae_header_id 
30751 , p_source_4 => p_source_4
30752          , x_transaction_coa_id       => l_adr_transaction_coa_id
30753          , x_accounting_coa_id        => l_adr_accounting_coa_id
30754          , x_value_type_code          => l_adr_value_type_code
30755          , p_side                     => 'NA'
30756    );
30757 
30758    xla_ae_lines_pkg.set_ccid(
30759     p_code_combination_id          => l_ccid
30760   , p_value_type_code              => l_adr_value_type_code
30761   , p_transaction_coa_id           => l_adr_transaction_coa_id
30762   , p_accounting_coa_id            => l_adr_accounting_coa_id
30763   , p_adr_code                     => 'CST_DEFAULT'
30764   , p_adr_type_code                => 'S'
30765   , p_component_type               => l_component_type
30766   , p_component_code               => l_component_code
30767   , p_component_type_code          => l_component_type_code
30768   , p_component_appl_id            => l_component_appl_id
30769   , p_amb_context_code             => l_amb_context_code
30770   , p_side                         => 'NA'
30771   );
30772 
30773 
30774    --
30775    --
30776    END IF;
30777    --
30778    -- Bug 4922099
30779    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
30780           (NVL(l_enc_upg_option, 'N') = 'O')
30781         ) AND
30782         (l_bflow_method_code = 'PRIOR_ENTRY')
30783       )
30784    THEN
30785       IF
30786       --
30787       1 = 2
30788       --
30789       THEN
30790       xla_accounting_err_pkg.build_message
30791                                     (p_appli_s_name            => 'XLA'
30792                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30793                                     ,p_token_1                 => 'LINE_NUMBER'
30794                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
30795                                     ,p_token_2                 => 'LINE_TYPE_NAME'
30796                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
30797                                                                              l_component_type
30798                                                                             ,l_component_code
30799                                                                             ,l_component_type_code
30800                                                                             ,l_component_appl_id
30801                                                                             ,l_amb_context_code
30802                                                                             ,l_entity_code
30803                                                                             ,l_event_class_code
30804                                                                            )
30805                                     ,p_token_3                 => 'OWNER'
30806                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
30807                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
30808                                                                           ,p_lookup_code    => l_component_type_code
30809                                                                          )
30810                                     ,p_token_4                 => 'PRODUCT_NAME'
30811                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
30812                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
30813                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
30814                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
30815                                     ,p_ae_header_id            =>  NULL
30816                                        );
30817 
30818         IF (C_LEVEL_ERROR>= g_log_level) THEN
30819                  trace
30820                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30821                       ,p_level    => C_LEVEL_ERROR
30822                       ,p_module   => l_log_module);
30823         END IF;
30824       END IF;
30825    END IF;
30826    --
30827    --
30828    ------------------------------------------------------------------------------------------------
30829    -- 4219869 Business Flow
30830    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
30831    -- Prior Entry.  Currently, the following code is always generated.
30832    ------------------------------------------------------------------------------------------------
30833    XLA_AE_LINES_PKG.ValidateCurrentLine;
30834 
30835    ------------------------------------------------------------------------------------
30836    -- 4219869 Business Flow
30837    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
30838    ------------------------------------------------------------------------------------
30839    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30840 
30841    ----------------------------------------------------------------------------------
30842    -- 4219869 Business Flow
30843    -- Update journal entry status -- Need to generate this within IF <condition>
30844    ----------------------------------------------------------------------------------
30845    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30846          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
30847          ,p_balance_type_code => l_balance_type_code
30848          );
30849 
30850    -------------------------------------------------------------------------------------------
30851    -- 4262811 - Generate the Accrual Reversal lines
30852    -------------------------------------------------------------------------------------------
30853    BEGIN
30854       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
30855                               (g_array_event(p_event_id).array_value_num('header_index'));
30856       IF l_acc_rev_flag IS NULL THEN
30857          l_acc_rev_flag := 'N';
30858       END IF;
30859    EXCEPTION
30860       WHEN OTHERS THEN
30861          l_acc_rev_flag := 'N';
30862    END;
30863    --
30864    IF (l_acc_rev_flag = 'Y') THEN
30865 
30866        -- 4645092  ------------------------------------------------------------------------------
30867        -- To allow MPA report to determine if it should generate report process
30868        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
30869        ------------------------------------------------------------------------------------------
30870 
30871        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
30872        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
30873    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
30874    -- call ADRs
30875    -- Bug 4922099
30876    --
30877    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30878         (NVL(l_actual_upg_option, 'N') = 'O') OR
30879         (NVL(l_enc_upg_option, 'N') = 'O')
30880       )
30881    THEN
30882    NULL;
30883    --
30884    --
30885    
30886   l_ccid := AcctDerRule_4(
30887            p_application_id           => p_application_id
30888          , p_ae_header_id             => l_ae_header_id 
30889 , p_source_4 => p_source_4
30890          , x_transaction_coa_id       => l_adr_transaction_coa_id
30891          , x_accounting_coa_id        => l_adr_accounting_coa_id
30892          , x_value_type_code          => l_adr_value_type_code
30893          , p_side                     => 'NA'
30894    );
30895 
30896    xla_ae_lines_pkg.set_ccid(
30897     p_code_combination_id          => l_ccid
30898   , p_value_type_code              => l_adr_value_type_code
30899   , p_transaction_coa_id           => l_adr_transaction_coa_id
30900   , p_accounting_coa_id            => l_adr_accounting_coa_id
30901   , p_adr_code                     => 'CST_DEFAULT'
30902   , p_adr_type_code                => 'S'
30903   , p_component_type               => l_component_type
30904   , p_component_code               => l_component_code
30905   , p_component_type_code          => l_component_type_code
30906   , p_component_appl_id            => l_component_appl_id
30907   , p_amb_context_code             => l_amb_context_code
30908   , p_side                         => 'NA'
30909   );
30910 
30911 
30912    --
30913    --
30914    END IF;
30915 
30916        --
30917        -- Update the line information that should be overwritten
30918        --
30919        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
30920                                          p_header_num   => 1);
30921        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
30922 
30923        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
30924 
30925        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
30926           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
30927        END IF;
30928 
30929       --
30930       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
30931       --
30932       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
30933           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
30934       ELSE
30935           ---------------------------------------------------------------------------------------------------
30936           -- 4262811a Switch Sign
30937           ---------------------------------------------------------------------------------------------------
30938           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
30939           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30940                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30941           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30942                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30943           -- 5132302
30944           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
30945                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30946 
30947       END IF;
30948 
30949       -- 4955764
30950       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30951       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
30952 
30953 
30954       XLA_AE_LINES_PKG.ValidateCurrentLine;
30955       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30956 
30957       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30958                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
30959                ,p_balance_type_code => l_balance_type_code);
30960 
30961    END IF;
30962 
30963    -----------------------------------------------------------------------------------------
30964    -- 4262811 Multiperiod Accounting
30965    -----------------------------------------------------------------------------------------
30966      -- No MPA option is assigned.
30967 
30968 
30969 END IF;
30970 END IF;
30971 --
30972 
30973 --
30974 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30975    trace
30976       (p_msg      => 'END of AcctLineType_58'
30977       ,p_level    => C_LEVEL_PROCEDURE
30978       ,p_module   => l_log_module);
30979 END IF;
30980 --
30981 EXCEPTION
30982   WHEN xla_exceptions_pkg.application_exception THEN
30983       RAISE;
30984   WHEN OTHERS THEN
30985        xla_exceptions_pkg.raise_message
30986            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_58');
30987 END AcctLineType_58;
30988 --
30989 
30990 ---------------------------------------
30991 --
30992 -- PRIVATE FUNCTION
30993 --         AcctLineType_59
30994 --
30995 ---------------------------------------
30996 PROCEDURE AcctLineType_59 (
30997   p_application_id        IN NUMBER
30998  ,p_event_id              IN NUMBER
30999  ,p_calculate_acctd_flag  IN VARCHAR2
31000  ,p_calculate_g_l_flag    IN VARCHAR2
31001  ,p_actual_flag           IN OUT VARCHAR2
31002  ,p_balance_type_code     OUT VARCHAR2
31003  ,p_gain_or_loss_ref      OUT VARCHAR2
31004  
31005 --Cost Management Default Account
31006  , p_source_4            IN NUMBER
31007 --DISTRIBUTION_IDENTIFIER
31008  , p_source_11            IN NUMBER
31009 --Distribution Type
31010  , p_source_12            IN VARCHAR2
31011  , p_source_12_meaning    IN VARCHAR2
31012 --Entered Currency Code
31013  , p_source_15            IN VARCHAR2
31014 --Entered Amount
31015  , p_source_18            IN NUMBER
31016 --Currency Conversion Date
31017  , p_source_19            IN DATE
31018 --Currency Conversion Rate
31019  , p_source_20            IN NUMBER
31020 --Currency Conversion Type
31021  , p_source_21            IN VARCHAR2
31022 --Accounted Amount
31023  , p_source_22            IN NUMBER
31024 --Accounting Line Type
31025  , p_source_24            IN NUMBER
31026 --Transaction Action Name
31027  , p_source_35            IN NUMBER
31028  , p_source_35_meaning    IN VARCHAR2
31029 )
31030 IS
31031 
31032 l_component_type              VARCHAR2(80);
31033 l_component_code              VARCHAR2(30);
31034 l_component_type_code         VARCHAR2(1);
31035 l_component_appl_id           INTEGER;
31036 l_amb_context_code            VARCHAR2(30);
31037 l_entity_code                 VARCHAR2(30);
31038 l_event_class_code            VARCHAR2(30);
31039 l_ae_header_id                NUMBER;
31040 l_event_type_code             VARCHAR2(30);
31041 l_line_definition_code        VARCHAR2(30);
31042 l_line_definition_owner_code  VARCHAR2(1);
31043 --
31044 -- adr variables
31045 l_segment                     VARCHAR2(30);
31046 l_ccid                        NUMBER;
31047 l_adr_transaction_coa_id      NUMBER;
31048 l_adr_accounting_coa_id       NUMBER;
31049 l_adr_flexfield_segment_code  VARCHAR2(30);
31050 l_adr_flex_value_set_id       NUMBER;
31051 l_adr_value_type_code         VARCHAR2(30);
31052 l_adr_value_combination_id    NUMBER;
31053 l_adr_value_segment_code      VARCHAR2(30);
31054 
31055 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
31056 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
31057 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
31058 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
31059 
31060 -- 4262811 Variables ------------------------------------------------------------------------------------------
31061 l_entered_amt_idx             NUMBER;
31062 l_accted_amt_idx              NUMBER;
31063 l_acc_rev_flag                VARCHAR2(1);
31064 l_accrual_line_num            NUMBER;
31065 l_tmp_amt                     NUMBER;
31066 l_acc_rev_natural_side_code   VARCHAR2(1);
31067 
31068 l_num_entries                 NUMBER;
31069 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
31070 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
31071 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
31072 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
31073 l_recog_line_1                NUMBER;
31074 l_recog_line_2                NUMBER;
31075 
31076 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
31077 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
31078 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
31079 
31080 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
31081 
31082 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
31083 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
31084 
31085 ---------------------------------------------------------------------------------------------------------------
31086 
31087 
31088 --
31089 -- bulk performance
31090 --
31091 l_balance_type_code           VARCHAR2(1);
31092 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
31093 l_log_module                  VARCHAR2(240);
31094 
31095 --
31096 -- Upgrade strategy
31097 --
31098 l_actual_upg_option           VARCHAR2(1);
31099 l_enc_upg_option           VARCHAR2(1);
31100 
31101 --
31102 BEGIN
31103 --
31104 IF g_log_enabled THEN
31105       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_59';
31106 END IF;
31107 --
31108 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31109 
31110       trace
31111          (p_msg      => 'BEGIN of AcctLineType_59'
31112          ,p_level    => C_LEVEL_PROCEDURE
31113          ,p_module   => l_log_module);
31114 
31115 END IF;
31116 --
31117 l_component_type             := 'AMB_JLT';
31118 l_component_code             := 'INTERCOMPANY_COGS';
31119 l_component_type_code        := 'S';
31120 l_component_appl_id          :=  707;
31121 l_amb_context_code           := 'DEFAULT';
31122 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
31123 l_event_class_code           := 'LOG_INTERCOMPANY';
31124 l_event_type_code            := 'LOG_INTERCOMPANY_ALL';
31125 l_line_definition_owner_code := 'S';
31126 l_line_definition_code       := 'LOG_INTERCOMPANY';
31127 --
31128 l_balance_type_code          := 'A';
31129 l_segment                     := NULL;
31130 l_ccid                        := NULL;
31131 l_adr_transaction_coa_id      := NULL;
31132 l_adr_accounting_coa_id       := NULL;
31133 l_adr_flexfield_segment_code  := NULL;
31134 l_adr_flex_value_set_id       := NULL;
31135 l_adr_value_type_code         := NULL;
31136 l_adr_value_combination_id    := NULL;
31137 l_adr_value_segment_code      := NULL;
31138 
31139 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
31140 l_bflow_class_code           := '';    -- 4219869 Business Flow
31141 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
31142 l_budgetary_control_flag     := 'N';
31143 
31144 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
31145 l_bflow_applied_to_amt       := NULL; -- 5132302
31146 l_entered_amt_idx            := NULL;          -- 4262811
31147 l_accted_amt_idx             := NULL;          -- 4262811
31148 l_acc_rev_flag               := NULL;          -- 4262811
31149 l_accrual_line_num           := NULL;          -- 4262811
31150 l_tmp_amt                    := NULL;          -- 4262811
31151 --
31152  
31153 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
31154     l_balance_type_code <> 'B' THEN
31155 IF NVL(p_source_24,9E125) =  2 AND 
31156 ((p_source_22 >=  0 AND 
31157 NVL(p_source_35,9E125) =  9) OR 
31158 (p_source_22 <=  0 AND 
31159 NVL(p_source_35,9E125) =  14)
31160 ) THEN 
31161 
31162    --
31163    XLA_AE_LINES_PKG.SetNewLine;
31164 
31165    p_balance_type_code          := l_balance_type_code;
31166    -- set the flag so later we will know whether the gain loss line needs to be created
31167    
31168    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
31169      p_actual_flag :='A';
31170    END IF;
31171 
31172    --
31173    -- bulk performance
31174    --
31175    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
31176                                       p_header_num   => 0); -- 4262811
31177    --
31178    -- set accounting line options
31179    --
31180    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
31181            p_natural_side_code          => 'D'
31182          , p_gain_or_loss_flag          => 'N'
31183          , p_gl_transfer_mode_code      => 'S'
31184          , p_acct_entry_type_code       => 'A'
31185          , p_switch_side_flag           => 'Y'
31186          , p_merge_duplicate_code       => 'N'
31187          );
31188    --
31189    l_acc_rev_natural_side_code := 'C';  -- 4262811
31190    -- 
31191    --
31192    -- set accounting line type info
31193    --
31194    xla_ae_lines_pkg.SetAcctLineType
31195       (p_component_type             => l_component_type
31196       ,p_event_type_code            => l_event_type_code
31197       ,p_line_definition_owner_code => l_line_definition_owner_code
31198       ,p_line_definition_code       => l_line_definition_code
31199       ,p_accounting_line_code       => l_component_code
31200       ,p_accounting_line_type_code  => l_component_type_code
31201       ,p_accounting_line_appl_id    => l_component_appl_id
31202       ,p_amb_context_code           => l_amb_context_code
31203       ,p_entity_code                => l_entity_code
31204       ,p_event_class_code           => l_event_class_code);
31205    --
31206    -- set accounting class
31207    --
31208    xla_ae_lines_pkg.SetAcctClass(
31209            p_accounting_class_code  => 'INTERCOMPANY_COGS'
31210          , p_ae_header_id           => l_ae_header_id
31211          );
31212 
31213    --
31214    -- set rounding class
31215    --
31216    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
31217                       'INTERCOMPANY_COGS';
31218 
31219    --
31220    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
31221    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
31222    --
31223    -- bulk performance
31224    --
31225    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
31226 
31227    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
31228       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
31229 
31230    -- 4955764
31231    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31232       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
31233 
31234    -- 4458381 Public Sector Enh
31235    
31236    --
31237    -- set accounting attributes for the line type
31238    --
31239    l_entered_amt_idx := 3;
31240    l_accted_amt_idx  := 8;
31241    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
31242    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
31243    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
31244    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
31245    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
31246    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
31247    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
31248    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
31249    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
31250    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
31251    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
31252    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
31253    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
31254    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
31255    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
31256    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
31257    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
31258 
31259    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
31260    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
31261 
31262    ---------------------------------------------------------------------------------------------------------------
31263    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
31264    ---------------------------------------------------------------------------------------------------------------
31265    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
31266 
31267    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31268    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31269 
31270    IF xla_accounting_cache_pkg.GetValueChar
31271          (p_source_code         => 'LEDGER_CATEGORY_CODE'
31272          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
31273    AND l_bflow_method_code = 'PRIOR_ENTRY'
31274 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
31275    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
31276          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
31277        )
31278    THEN
31279          xla_ae_lines_pkg.BflowUpgEntry
31280            (p_business_method_code    => l_bflow_method_code
31281            ,p_business_class_code     => l_bflow_class_code
31282            ,p_balance_type            => l_balance_type_code);
31283    ELSE
31284       NULL;
31285 -- No business flow processing for business flow method of NONE.
31286    END IF;
31287 
31288    --
31289    -- call analytical criteria
31290    --
31291    
31292    --
31293    -- call description
31294    --
31295    -- No description or it is inherited.
31296    --
31297    -- call ADRs
31298    -- Bug 4922099
31299    --
31300    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31301         (NVL(l_actual_upg_option, 'N') = 'O') OR
31302         (NVL(l_enc_upg_option, 'N') = 'O')
31303       )
31304    THEN
31305    NULL;
31306    --
31307    --
31308    
31309   l_ccid := AcctDerRule_4(
31310            p_application_id           => p_application_id
31311          , p_ae_header_id             => l_ae_header_id 
31312 , p_source_4 => p_source_4
31313          , x_transaction_coa_id       => l_adr_transaction_coa_id
31314          , x_accounting_coa_id        => l_adr_accounting_coa_id
31315          , x_value_type_code          => l_adr_value_type_code
31316          , p_side                     => 'NA'
31317    );
31318 
31319    xla_ae_lines_pkg.set_ccid(
31320     p_code_combination_id          => l_ccid
31321   , p_value_type_code              => l_adr_value_type_code
31322   , p_transaction_coa_id           => l_adr_transaction_coa_id
31323   , p_accounting_coa_id            => l_adr_accounting_coa_id
31324   , p_adr_code                     => 'CST_DEFAULT'
31325   , p_adr_type_code                => 'S'
31326   , p_component_type               => l_component_type
31327   , p_component_code               => l_component_code
31328   , p_component_type_code          => l_component_type_code
31329   , p_component_appl_id            => l_component_appl_id
31330   , p_amb_context_code             => l_amb_context_code
31331   , p_side                         => 'NA'
31332   );
31333 
31334 
31335    --
31336    --
31337    END IF;
31338    --
31339    -- Bug 4922099
31340    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
31341           (NVL(l_enc_upg_option, 'N') = 'O')
31342         ) AND
31343         (l_bflow_method_code = 'PRIOR_ENTRY')
31344       )
31345    THEN
31346       IF
31347       --
31348       1 = 2
31349       --
31350       THEN
31351       xla_accounting_err_pkg.build_message
31352                                     (p_appli_s_name            => 'XLA'
31353                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31354                                     ,p_token_1                 => 'LINE_NUMBER'
31355                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
31356                                     ,p_token_2                 => 'LINE_TYPE_NAME'
31357                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
31358                                                                              l_component_type
31359                                                                             ,l_component_code
31360                                                                             ,l_component_type_code
31361                                                                             ,l_component_appl_id
31362                                                                             ,l_amb_context_code
31363                                                                             ,l_entity_code
31364                                                                             ,l_event_class_code
31365                                                                            )
31366                                     ,p_token_3                 => 'OWNER'
31367                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
31368                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
31369                                                                           ,p_lookup_code    => l_component_type_code
31370                                                                          )
31371                                     ,p_token_4                 => 'PRODUCT_NAME'
31372                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
31373                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
31374                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
31375                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
31376                                     ,p_ae_header_id            =>  NULL
31377                                        );
31378 
31379         IF (C_LEVEL_ERROR>= g_log_level) THEN
31380                  trace
31381                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31382                       ,p_level    => C_LEVEL_ERROR
31383                       ,p_module   => l_log_module);
31384         END IF;
31385       END IF;
31386    END IF;
31387    --
31388    --
31389    ------------------------------------------------------------------------------------------------
31390    -- 4219869 Business Flow
31391    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
31392    -- Prior Entry.  Currently, the following code is always generated.
31393    ------------------------------------------------------------------------------------------------
31394    XLA_AE_LINES_PKG.ValidateCurrentLine;
31395 
31396    ------------------------------------------------------------------------------------
31397    -- 4219869 Business Flow
31398    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
31399    ------------------------------------------------------------------------------------
31400    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31401 
31402    ----------------------------------------------------------------------------------
31403    -- 4219869 Business Flow
31404    -- Update journal entry status -- Need to generate this within IF <condition>
31405    ----------------------------------------------------------------------------------
31406    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31407          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
31408          ,p_balance_type_code => l_balance_type_code
31409          );
31410 
31411    -------------------------------------------------------------------------------------------
31412    -- 4262811 - Generate the Accrual Reversal lines
31413    -------------------------------------------------------------------------------------------
31414    BEGIN
31415       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
31416                               (g_array_event(p_event_id).array_value_num('header_index'));
31417       IF l_acc_rev_flag IS NULL THEN
31418          l_acc_rev_flag := 'N';
31419       END IF;
31420    EXCEPTION
31421       WHEN OTHERS THEN
31422          l_acc_rev_flag := 'N';
31423    END;
31424    --
31425    IF (l_acc_rev_flag = 'Y') THEN
31426 
31427        -- 4645092  ------------------------------------------------------------------------------
31428        -- To allow MPA report to determine if it should generate report process
31429        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
31430        ------------------------------------------------------------------------------------------
31431 
31432        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
31433        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
31434    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
31435    -- call ADRs
31436    -- Bug 4922099
31437    --
31438    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31439         (NVL(l_actual_upg_option, 'N') = 'O') OR
31440         (NVL(l_enc_upg_option, 'N') = 'O')
31441       )
31442    THEN
31443    NULL;
31444    --
31445    --
31446    
31447   l_ccid := AcctDerRule_4(
31448            p_application_id           => p_application_id
31449          , p_ae_header_id             => l_ae_header_id 
31450 , p_source_4 => p_source_4
31451          , x_transaction_coa_id       => l_adr_transaction_coa_id
31452          , x_accounting_coa_id        => l_adr_accounting_coa_id
31453          , x_value_type_code          => l_adr_value_type_code
31454          , p_side                     => 'NA'
31455    );
31456 
31457    xla_ae_lines_pkg.set_ccid(
31458     p_code_combination_id          => l_ccid
31459   , p_value_type_code              => l_adr_value_type_code
31460   , p_transaction_coa_id           => l_adr_transaction_coa_id
31461   , p_accounting_coa_id            => l_adr_accounting_coa_id
31462   , p_adr_code                     => 'CST_DEFAULT'
31463   , p_adr_type_code                => 'S'
31464   , p_component_type               => l_component_type
31465   , p_component_code               => l_component_code
31466   , p_component_type_code          => l_component_type_code
31467   , p_component_appl_id            => l_component_appl_id
31468   , p_amb_context_code             => l_amb_context_code
31469   , p_side                         => 'NA'
31470   );
31471 
31472 
31473    --
31474    --
31475    END IF;
31476 
31477        --
31478        -- Update the line information that should be overwritten
31479        --
31480        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
31481                                          p_header_num   => 1);
31482        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
31483 
31484        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
31485 
31486        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
31487           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
31488        END IF;
31489 
31490       --
31491       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
31492       --
31493       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
31494           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
31495       ELSE
31496           ---------------------------------------------------------------------------------------------------
31497           -- 4262811a Switch Sign
31498           ---------------------------------------------------------------------------------------------------
31499           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
31500           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31501                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31502           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31503                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31504           -- 5132302
31505           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
31506                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31507 
31508       END IF;
31509 
31510       -- 4955764
31511       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31512       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
31513 
31514 
31515       XLA_AE_LINES_PKG.ValidateCurrentLine;
31516       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31517 
31518       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31519                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
31520                ,p_balance_type_code => l_balance_type_code);
31521 
31522    END IF;
31523 
31524    -----------------------------------------------------------------------------------------
31525    -- 4262811 Multiperiod Accounting
31526    -----------------------------------------------------------------------------------------
31527      -- No MPA option is assigned.
31528 
31529 
31530 END IF;
31531 END IF;
31532 --
31533 
31534 --
31535 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31536    trace
31537       (p_msg      => 'END of AcctLineType_59'
31538       ,p_level    => C_LEVEL_PROCEDURE
31539       ,p_module   => l_log_module);
31540 END IF;
31541 --
31542 EXCEPTION
31543   WHEN xla_exceptions_pkg.application_exception THEN
31544       RAISE;
31545   WHEN OTHERS THEN
31546        xla_exceptions_pkg.raise_message
31547            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_59');
31548 END AcctLineType_59;
31549 --
31550 
31551 ---------------------------------------
31552 --
31553 -- PRIVATE FUNCTION
31554 --         AcctLineType_60
31555 --
31556 ---------------------------------------
31557 PROCEDURE AcctLineType_60 (
31558   p_application_id        IN NUMBER
31559  ,p_event_id              IN NUMBER
31560  ,p_calculate_acctd_flag  IN VARCHAR2
31561  ,p_calculate_g_l_flag    IN VARCHAR2
31562  ,p_actual_flag           IN OUT VARCHAR2
31563  ,p_balance_type_code     OUT VARCHAR2
31564  ,p_gain_or_loss_ref      OUT VARCHAR2
31565  
31566 --Cost Management Default Account
31567  , p_source_4            IN NUMBER
31568 --Receiving Accounting Line Type
31569  , p_source_5            IN VARCHAR2
31570 --DISTRIBUTION_IDENTIFIER
31571  , p_source_11            IN NUMBER
31572 --Distribution Type
31573  , p_source_12            IN VARCHAR2
31574  , p_source_12_meaning    IN VARCHAR2
31575 --Entered Currency Code
31576  , p_source_15            IN VARCHAR2
31577 --Entered Amount
31578  , p_source_18            IN NUMBER
31579 --Currency Conversion Date
31580  , p_source_19            IN DATE
31581 --Currency Conversion Rate
31582  , p_source_20            IN NUMBER
31583 --Currency Conversion Type
31584  , p_source_21            IN VARCHAR2
31585 --Accounted Amount
31586  , p_source_22            IN NUMBER
31587 )
31588 IS
31589 
31590 l_component_type              VARCHAR2(80);
31591 l_component_code              VARCHAR2(30);
31592 l_component_type_code         VARCHAR2(1);
31593 l_component_appl_id           INTEGER;
31594 l_amb_context_code            VARCHAR2(30);
31595 l_entity_code                 VARCHAR2(30);
31596 l_event_class_code            VARCHAR2(30);
31597 l_ae_header_id                NUMBER;
31598 l_event_type_code             VARCHAR2(30);
31599 l_line_definition_code        VARCHAR2(30);
31600 l_line_definition_owner_code  VARCHAR2(1);
31601 --
31602 -- adr variables
31603 l_segment                     VARCHAR2(30);
31604 l_ccid                        NUMBER;
31605 l_adr_transaction_coa_id      NUMBER;
31606 l_adr_accounting_coa_id       NUMBER;
31607 l_adr_flexfield_segment_code  VARCHAR2(30);
31608 l_adr_flex_value_set_id       NUMBER;
31609 l_adr_value_type_code         VARCHAR2(30);
31610 l_adr_value_combination_id    NUMBER;
31611 l_adr_value_segment_code      VARCHAR2(30);
31612 
31613 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
31614 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
31615 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
31616 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
31617 
31618 -- 4262811 Variables ------------------------------------------------------------------------------------------
31619 l_entered_amt_idx             NUMBER;
31620 l_accted_amt_idx              NUMBER;
31621 l_acc_rev_flag                VARCHAR2(1);
31622 l_accrual_line_num            NUMBER;
31623 l_tmp_amt                     NUMBER;
31624 l_acc_rev_natural_side_code   VARCHAR2(1);
31625 
31626 l_num_entries                 NUMBER;
31627 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
31628 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
31629 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
31630 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
31631 l_recog_line_1                NUMBER;
31632 l_recog_line_2                NUMBER;
31633 
31634 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
31635 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
31636 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
31637 
31638 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
31639 
31640 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
31641 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
31642 
31643 ---------------------------------------------------------------------------------------------------------------
31644 
31645 
31646 --
31647 -- bulk performance
31648 --
31649 l_balance_type_code           VARCHAR2(1);
31650 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
31651 l_log_module                  VARCHAR2(240);
31652 
31653 --
31654 -- Upgrade strategy
31655 --
31656 l_actual_upg_option           VARCHAR2(1);
31657 l_enc_upg_option           VARCHAR2(1);
31658 
31659 --
31660 BEGIN
31661 --
31662 IF g_log_enabled THEN
31663       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_60';
31664 END IF;
31665 --
31666 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31667 
31668       trace
31669          (p_msg      => 'BEGIN of AcctLineType_60'
31670          ,p_level    => C_LEVEL_PROCEDURE
31671          ,p_module   => l_log_module);
31672 
31673 END IF;
31674 --
31675 l_component_type             := 'AMB_JLT';
31676 l_component_code             := 'INTERCOMPANY_COGS';
31677 l_component_type_code        := 'S';
31678 l_component_appl_id          :=  707;
31679 l_amb_context_code           := 'DEFAULT';
31680 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
31681 l_event_class_code           := 'RETR_PRICE_ADJ_RCV';
31682 l_event_type_code            := 'RETR_PRICE_ADJ_RCV_ALL';
31683 l_line_definition_owner_code := 'S';
31684 l_line_definition_code       := 'RETR_PRICE_ADJ_RCV';
31685 --
31686 l_balance_type_code          := 'A';
31687 l_segment                     := NULL;
31688 l_ccid                        := NULL;
31689 l_adr_transaction_coa_id      := NULL;
31690 l_adr_accounting_coa_id       := NULL;
31691 l_adr_flexfield_segment_code  := NULL;
31692 l_adr_flex_value_set_id       := NULL;
31693 l_adr_value_type_code         := NULL;
31694 l_adr_value_combination_id    := NULL;
31695 l_adr_value_segment_code      := NULL;
31696 
31697 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
31698 l_bflow_class_code           := '';    -- 4219869 Business Flow
31699 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
31700 l_budgetary_control_flag     := 'N';
31701 
31702 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
31703 l_bflow_applied_to_amt       := NULL; -- 5132302
31704 l_entered_amt_idx            := NULL;          -- 4262811
31705 l_accted_amt_idx             := NULL;          -- 4262811
31706 l_acc_rev_flag               := NULL;          -- 4262811
31707 l_accrual_line_num           := NULL;          -- 4262811
31708 l_tmp_amt                    := NULL;          -- 4262811
31709 --
31710  
31711 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
31712     l_balance_type_code <> 'B' THEN
31713 IF NVL(p_source_5,'
31714 ') =  'IC Cost of Sales'
31715  THEN 
31716 
31717    --
31718    XLA_AE_LINES_PKG.SetNewLine;
31719 
31720    p_balance_type_code          := l_balance_type_code;
31721    -- set the flag so later we will know whether the gain loss line needs to be created
31722    
31723    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
31724      p_actual_flag :='A';
31725    END IF;
31726 
31727    --
31728    -- bulk performance
31729    --
31730    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
31731                                       p_header_num   => 0); -- 4262811
31732    --
31733    -- set accounting line options
31734    --
31735    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
31736            p_natural_side_code          => 'D'
31737          , p_gain_or_loss_flag          => 'N'
31738          , p_gl_transfer_mode_code      => 'S'
31739          , p_acct_entry_type_code       => 'A'
31740          , p_switch_side_flag           => 'Y'
31741          , p_merge_duplicate_code       => 'N'
31742          );
31743    --
31744    l_acc_rev_natural_side_code := 'C';  -- 4262811
31745    -- 
31746    --
31747    -- set accounting line type info
31748    --
31749    xla_ae_lines_pkg.SetAcctLineType
31750       (p_component_type             => l_component_type
31751       ,p_event_type_code            => l_event_type_code
31752       ,p_line_definition_owner_code => l_line_definition_owner_code
31753       ,p_line_definition_code       => l_line_definition_code
31754       ,p_accounting_line_code       => l_component_code
31755       ,p_accounting_line_type_code  => l_component_type_code
31756       ,p_accounting_line_appl_id    => l_component_appl_id
31757       ,p_amb_context_code           => l_amb_context_code
31758       ,p_entity_code                => l_entity_code
31759       ,p_event_class_code           => l_event_class_code);
31760    --
31761    -- set accounting class
31762    --
31763    xla_ae_lines_pkg.SetAcctClass(
31764            p_accounting_class_code  => 'INTERCOMPANY_COGS'
31765          , p_ae_header_id           => l_ae_header_id
31766          );
31767 
31768    --
31769    -- set rounding class
31770    --
31771    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
31772                       'INTERCOMPANY_COGS';
31773 
31774    --
31775    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
31776    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
31777    --
31778    -- bulk performance
31779    --
31780    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
31781 
31782    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
31783       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
31784 
31785    -- 4955764
31786    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31787       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
31788 
31789    -- 4458381 Public Sector Enh
31790    
31791    --
31792    -- set accounting attributes for the line type
31793    --
31794    l_entered_amt_idx := 3;
31795    l_accted_amt_idx  := 8;
31796    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
31797    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
31798    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
31799    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
31800    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
31801    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
31802    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
31803    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
31804    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
31805    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
31806    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
31807    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
31808    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
31809    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
31810    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
31811    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
31812    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
31813 
31814    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
31815    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
31816 
31817    ---------------------------------------------------------------------------------------------------------------
31818    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
31819    ---------------------------------------------------------------------------------------------------------------
31820    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
31821 
31822    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31823    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31824 
31825    IF xla_accounting_cache_pkg.GetValueChar
31826          (p_source_code         => 'LEDGER_CATEGORY_CODE'
31827          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
31828    AND l_bflow_method_code = 'PRIOR_ENTRY'
31829 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
31830    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
31831          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
31832        )
31833    THEN
31834          xla_ae_lines_pkg.BflowUpgEntry
31835            (p_business_method_code    => l_bflow_method_code
31836            ,p_business_class_code     => l_bflow_class_code
31837            ,p_balance_type            => l_balance_type_code);
31838    ELSE
31839       NULL;
31840 -- No business flow processing for business flow method of NONE.
31841    END IF;
31842 
31843    --
31844    -- call analytical criteria
31845    --
31846    
31847    --
31848    -- call description
31849    --
31850    -- No description or it is inherited.
31851    --
31852    -- call ADRs
31853    -- Bug 4922099
31854    --
31855    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31856         (NVL(l_actual_upg_option, 'N') = 'O') OR
31857         (NVL(l_enc_upg_option, 'N') = 'O')
31858       )
31859    THEN
31860    NULL;
31861    --
31862    --
31863    
31864   l_ccid := AcctDerRule_4(
31865            p_application_id           => p_application_id
31866          , p_ae_header_id             => l_ae_header_id 
31867 , p_source_4 => p_source_4
31868          , x_transaction_coa_id       => l_adr_transaction_coa_id
31869          , x_accounting_coa_id        => l_adr_accounting_coa_id
31870          , x_value_type_code          => l_adr_value_type_code
31871          , p_side                     => 'NA'
31872    );
31873 
31874    xla_ae_lines_pkg.set_ccid(
31875     p_code_combination_id          => l_ccid
31876   , p_value_type_code              => l_adr_value_type_code
31877   , p_transaction_coa_id           => l_adr_transaction_coa_id
31878   , p_accounting_coa_id            => l_adr_accounting_coa_id
31879   , p_adr_code                     => 'CST_DEFAULT'
31880   , p_adr_type_code                => 'S'
31881   , p_component_type               => l_component_type
31882   , p_component_code               => l_component_code
31883   , p_component_type_code          => l_component_type_code
31884   , p_component_appl_id            => l_component_appl_id
31885   , p_amb_context_code             => l_amb_context_code
31886   , p_side                         => 'NA'
31887   );
31888 
31889 
31890    --
31891    --
31892    END IF;
31893    --
31894    -- Bug 4922099
31895    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
31896           (NVL(l_enc_upg_option, 'N') = 'O')
31897         ) AND
31898         (l_bflow_method_code = 'PRIOR_ENTRY')
31899       )
31900    THEN
31901       IF
31902       --
31903       1 = 2
31904       --
31905       THEN
31906       xla_accounting_err_pkg.build_message
31907                                     (p_appli_s_name            => 'XLA'
31908                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31909                                     ,p_token_1                 => 'LINE_NUMBER'
31910                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
31911                                     ,p_token_2                 => 'LINE_TYPE_NAME'
31912                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
31913                                                                              l_component_type
31914                                                                             ,l_component_code
31915                                                                             ,l_component_type_code
31916                                                                             ,l_component_appl_id
31917                                                                             ,l_amb_context_code
31918                                                                             ,l_entity_code
31919                                                                             ,l_event_class_code
31920                                                                            )
31921                                     ,p_token_3                 => 'OWNER'
31922                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
31923                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
31924                                                                           ,p_lookup_code    => l_component_type_code
31925                                                                          )
31926                                     ,p_token_4                 => 'PRODUCT_NAME'
31927                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
31928                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
31929                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
31930                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
31931                                     ,p_ae_header_id            =>  NULL
31932                                        );
31933 
31934         IF (C_LEVEL_ERROR>= g_log_level) THEN
31935                  trace
31936                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31937                       ,p_level    => C_LEVEL_ERROR
31938                       ,p_module   => l_log_module);
31939         END IF;
31940       END IF;
31941    END IF;
31942    --
31943    --
31944    ------------------------------------------------------------------------------------------------
31945    -- 4219869 Business Flow
31946    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
31947    -- Prior Entry.  Currently, the following code is always generated.
31948    ------------------------------------------------------------------------------------------------
31949    XLA_AE_LINES_PKG.ValidateCurrentLine;
31950 
31951    ------------------------------------------------------------------------------------
31952    -- 4219869 Business Flow
31953    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
31954    ------------------------------------------------------------------------------------
31955    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31956 
31957    ----------------------------------------------------------------------------------
31958    -- 4219869 Business Flow
31959    -- Update journal entry status -- Need to generate this within IF <condition>
31960    ----------------------------------------------------------------------------------
31961    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31962          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
31963          ,p_balance_type_code => l_balance_type_code
31964          );
31965 
31966    -------------------------------------------------------------------------------------------
31967    -- 4262811 - Generate the Accrual Reversal lines
31968    -------------------------------------------------------------------------------------------
31969    BEGIN
31970       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
31971                               (g_array_event(p_event_id).array_value_num('header_index'));
31972       IF l_acc_rev_flag IS NULL THEN
31973          l_acc_rev_flag := 'N';
31974       END IF;
31975    EXCEPTION
31976       WHEN OTHERS THEN
31977          l_acc_rev_flag := 'N';
31978    END;
31979    --
31980    IF (l_acc_rev_flag = 'Y') THEN
31981 
31982        -- 4645092  ------------------------------------------------------------------------------
31983        -- To allow MPA report to determine if it should generate report process
31984        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
31985        ------------------------------------------------------------------------------------------
31986 
31987        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
31988        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
31989    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
31990    -- call ADRs
31991    -- Bug 4922099
31992    --
31993    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31994         (NVL(l_actual_upg_option, 'N') = 'O') OR
31995         (NVL(l_enc_upg_option, 'N') = 'O')
31996       )
31997    THEN
31998    NULL;
31999    --
32000    --
32001    
32002   l_ccid := AcctDerRule_4(
32003            p_application_id           => p_application_id
32004          , p_ae_header_id             => l_ae_header_id 
32005 , p_source_4 => p_source_4
32006          , x_transaction_coa_id       => l_adr_transaction_coa_id
32007          , x_accounting_coa_id        => l_adr_accounting_coa_id
32008          , x_value_type_code          => l_adr_value_type_code
32009          , p_side                     => 'NA'
32010    );
32011 
32012    xla_ae_lines_pkg.set_ccid(
32013     p_code_combination_id          => l_ccid
32014   , p_value_type_code              => l_adr_value_type_code
32015   , p_transaction_coa_id           => l_adr_transaction_coa_id
32016   , p_accounting_coa_id            => l_adr_accounting_coa_id
32017   , p_adr_code                     => 'CST_DEFAULT'
32018   , p_adr_type_code                => 'S'
32019   , p_component_type               => l_component_type
32020   , p_component_code               => l_component_code
32021   , p_component_type_code          => l_component_type_code
32022   , p_component_appl_id            => l_component_appl_id
32023   , p_amb_context_code             => l_amb_context_code
32024   , p_side                         => 'NA'
32025   );
32026 
32027 
32028    --
32029    --
32030    END IF;
32031 
32032        --
32033        -- Update the line information that should be overwritten
32034        --
32035        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
32036                                          p_header_num   => 1);
32037        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
32038 
32039        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
32040 
32041        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
32042           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
32043        END IF;
32044 
32045       --
32046       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
32047       --
32048       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
32049           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
32050       ELSE
32051           ---------------------------------------------------------------------------------------------------
32052           -- 4262811a Switch Sign
32053           ---------------------------------------------------------------------------------------------------
32054           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
32055           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32056                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32057           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32058                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32059           -- 5132302
32060           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
32061                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32062 
32063       END IF;
32064 
32065       -- 4955764
32066       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32067       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
32068 
32069 
32070       XLA_AE_LINES_PKG.ValidateCurrentLine;
32071       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32072 
32073       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32074                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
32075                ,p_balance_type_code => l_balance_type_code);
32076 
32077    END IF;
32078 
32079    -----------------------------------------------------------------------------------------
32080    -- 4262811 Multiperiod Accounting
32081    -----------------------------------------------------------------------------------------
32082      -- No MPA option is assigned.
32083 
32084 
32085 END IF;
32086 END IF;
32087 --
32088 
32089 --
32090 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32091    trace
32092       (p_msg      => 'END of AcctLineType_60'
32093       ,p_level    => C_LEVEL_PROCEDURE
32094       ,p_module   => l_log_module);
32095 END IF;
32096 --
32097 EXCEPTION
32098   WHEN xla_exceptions_pkg.application_exception THEN
32099       RAISE;
32100   WHEN OTHERS THEN
32101        xla_exceptions_pkg.raise_message
32102            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_60');
32103 END AcctLineType_60;
32104 --
32105 
32106 ---------------------------------------
32107 --
32108 -- PRIVATE FUNCTION
32109 --         AcctLineType_61
32110 --
32111 ---------------------------------------
32112 PROCEDURE AcctLineType_61 (
32113   p_application_id        IN NUMBER
32114  ,p_event_id              IN NUMBER
32115  ,p_calculate_acctd_flag  IN VARCHAR2
32116  ,p_calculate_g_l_flag    IN VARCHAR2
32117  ,p_actual_flag           IN OUT VARCHAR2
32118  ,p_balance_type_code     OUT VARCHAR2
32119  ,p_gain_or_loss_ref      OUT VARCHAR2
32120  
32121 --Cost Management Default Account
32122  , p_source_4            IN NUMBER
32123 --Receiving Accounting Line Type
32124  , p_source_5            IN VARCHAR2
32125 --DISTRIBUTION_IDENTIFIER
32126  , p_source_11            IN NUMBER
32127 --Distribution Type
32128  , p_source_12            IN VARCHAR2
32129  , p_source_12_meaning    IN VARCHAR2
32130 --Entered Currency Code
32131  , p_source_15            IN VARCHAR2
32132 --Entered Amount
32133  , p_source_18            IN NUMBER
32134 --Currency Conversion Date
32135  , p_source_19            IN DATE
32136 --Currency Conversion Rate
32137  , p_source_20            IN NUMBER
32138 --Currency Conversion Type
32139  , p_source_21            IN VARCHAR2
32140 --Accounted Amount
32141  , p_source_22            IN NUMBER
32142 )
32143 IS
32144 
32145 l_component_type              VARCHAR2(80);
32146 l_component_code              VARCHAR2(30);
32147 l_component_type_code         VARCHAR2(1);
32148 l_component_appl_id           INTEGER;
32149 l_amb_context_code            VARCHAR2(30);
32150 l_entity_code                 VARCHAR2(30);
32151 l_event_class_code            VARCHAR2(30);
32152 l_ae_header_id                NUMBER;
32153 l_event_type_code             VARCHAR2(30);
32154 l_line_definition_code        VARCHAR2(30);
32155 l_line_definition_owner_code  VARCHAR2(1);
32156 --
32157 -- adr variables
32158 l_segment                     VARCHAR2(30);
32159 l_ccid                        NUMBER;
32160 l_adr_transaction_coa_id      NUMBER;
32161 l_adr_accounting_coa_id       NUMBER;
32162 l_adr_flexfield_segment_code  VARCHAR2(30);
32163 l_adr_flex_value_set_id       NUMBER;
32164 l_adr_value_type_code         VARCHAR2(30);
32165 l_adr_value_combination_id    NUMBER;
32166 l_adr_value_segment_code      VARCHAR2(30);
32167 
32168 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
32169 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
32170 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
32171 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
32172 
32173 -- 4262811 Variables ------------------------------------------------------------------------------------------
32174 l_entered_amt_idx             NUMBER;
32175 l_accted_amt_idx              NUMBER;
32176 l_acc_rev_flag                VARCHAR2(1);
32177 l_accrual_line_num            NUMBER;
32178 l_tmp_amt                     NUMBER;
32179 l_acc_rev_natural_side_code   VARCHAR2(1);
32180 
32181 l_num_entries                 NUMBER;
32182 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
32183 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
32184 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
32185 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
32186 l_recog_line_1                NUMBER;
32187 l_recog_line_2                NUMBER;
32188 
32189 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
32190 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
32191 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
32192 
32193 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
32194 
32195 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
32196 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
32197 
32198 ---------------------------------------------------------------------------------------------------------------
32199 
32200 
32201 --
32202 -- bulk performance
32203 --
32204 l_balance_type_code           VARCHAR2(1);
32205 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
32206 l_log_module                  VARCHAR2(240);
32207 
32208 --
32209 -- Upgrade strategy
32210 --
32211 l_actual_upg_option           VARCHAR2(1);
32212 l_enc_upg_option           VARCHAR2(1);
32213 
32214 --
32215 BEGIN
32216 --
32217 IF g_log_enabled THEN
32218       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_61';
32219 END IF;
32220 --
32221 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32222 
32223       trace
32224          (p_msg      => 'BEGIN of AcctLineType_61'
32225          ,p_level    => C_LEVEL_PROCEDURE
32226          ,p_module   => l_log_module);
32227 
32228 END IF;
32229 --
32230 l_component_type             := 'AMB_JLT';
32231 l_component_code             := 'INTERCOMPANY_COGS';
32232 l_component_type_code        := 'S';
32233 l_component_appl_id          :=  707;
32234 l_amb_context_code           := 'DEFAULT';
32235 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
32236 l_event_class_code           := 'RCPT_REC_INSP';
32237 l_event_type_code            := 'RCPT_REC_INSP_ALL';
32238 l_line_definition_owner_code := 'S';
32239 l_line_definition_code       := 'RCPT_REC_INSP';
32240 --
32241 l_balance_type_code          := 'A';
32242 l_segment                     := NULL;
32243 l_ccid                        := NULL;
32244 l_adr_transaction_coa_id      := NULL;
32245 l_adr_accounting_coa_id       := NULL;
32246 l_adr_flexfield_segment_code  := NULL;
32247 l_adr_flex_value_set_id       := NULL;
32248 l_adr_value_type_code         := NULL;
32249 l_adr_value_combination_id    := NULL;
32250 l_adr_value_segment_code      := NULL;
32251 
32252 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
32253 l_bflow_class_code           := '';    -- 4219869 Business Flow
32254 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
32255 l_budgetary_control_flag     := 'N';
32256 
32257 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
32258 l_bflow_applied_to_amt       := NULL; -- 5132302
32259 l_entered_amt_idx            := NULL;          -- 4262811
32260 l_accted_amt_idx             := NULL;          -- 4262811
32261 l_acc_rev_flag               := NULL;          -- 4262811
32262 l_accrual_line_num           := NULL;          -- 4262811
32263 l_tmp_amt                    := NULL;          -- 4262811
32264 --
32265  
32266 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
32267     l_balance_type_code <> 'B' THEN
32268 IF NVL(p_source_5,'
32269 ') =  'IC Cost of Sales'
32270  THEN 
32271 
32272    --
32273    XLA_AE_LINES_PKG.SetNewLine;
32274 
32275    p_balance_type_code          := l_balance_type_code;
32276    -- set the flag so later we will know whether the gain loss line needs to be created
32277    
32278    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
32279      p_actual_flag :='A';
32280    END IF;
32281 
32282    --
32283    -- bulk performance
32284    --
32285    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
32286                                       p_header_num   => 0); -- 4262811
32287    --
32288    -- set accounting line options
32289    --
32290    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
32291            p_natural_side_code          => 'D'
32292          , p_gain_or_loss_flag          => 'N'
32293          , p_gl_transfer_mode_code      => 'S'
32294          , p_acct_entry_type_code       => 'A'
32295          , p_switch_side_flag           => 'Y'
32296          , p_merge_duplicate_code       => 'N'
32297          );
32298    --
32299    l_acc_rev_natural_side_code := 'C';  -- 4262811
32300    -- 
32301    --
32302    -- set accounting line type info
32303    --
32304    xla_ae_lines_pkg.SetAcctLineType
32305       (p_component_type             => l_component_type
32306       ,p_event_type_code            => l_event_type_code
32307       ,p_line_definition_owner_code => l_line_definition_owner_code
32308       ,p_line_definition_code       => l_line_definition_code
32309       ,p_accounting_line_code       => l_component_code
32310       ,p_accounting_line_type_code  => l_component_type_code
32311       ,p_accounting_line_appl_id    => l_component_appl_id
32312       ,p_amb_context_code           => l_amb_context_code
32313       ,p_entity_code                => l_entity_code
32314       ,p_event_class_code           => l_event_class_code);
32315    --
32316    -- set accounting class
32317    --
32318    xla_ae_lines_pkg.SetAcctClass(
32319            p_accounting_class_code  => 'INTERCOMPANY_COGS'
32320          , p_ae_header_id           => l_ae_header_id
32321          );
32322 
32323    --
32324    -- set rounding class
32325    --
32326    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
32327                       'INTERCOMPANY_COGS';
32328 
32329    --
32330    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
32331    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
32332    --
32333    -- bulk performance
32334    --
32335    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
32336 
32337    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
32338       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
32339 
32340    -- 4955764
32341    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32342       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
32343 
32344    -- 4458381 Public Sector Enh
32345    
32346    --
32347    -- set accounting attributes for the line type
32348    --
32349    l_entered_amt_idx := 3;
32350    l_accted_amt_idx  := 8;
32351    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
32352    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
32353    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
32354    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
32355    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
32356    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
32357    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
32358    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
32359    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
32360    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
32361    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
32362    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
32363    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
32364    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
32365    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
32366    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
32367    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
32368 
32369    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
32370    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
32371 
32372    ---------------------------------------------------------------------------------------------------------------
32373    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
32374    ---------------------------------------------------------------------------------------------------------------
32375    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
32376 
32377    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32378    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32379 
32380    IF xla_accounting_cache_pkg.GetValueChar
32381          (p_source_code         => 'LEDGER_CATEGORY_CODE'
32382          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
32383    AND l_bflow_method_code = 'PRIOR_ENTRY'
32384 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
32385    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
32386          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
32387        )
32388    THEN
32389          xla_ae_lines_pkg.BflowUpgEntry
32390            (p_business_method_code    => l_bflow_method_code
32391            ,p_business_class_code     => l_bflow_class_code
32392            ,p_balance_type            => l_balance_type_code);
32393    ELSE
32394       NULL;
32395 -- No business flow processing for business flow method of NONE.
32396    END IF;
32397 
32398    --
32399    -- call analytical criteria
32400    --
32401    
32402    --
32403    -- call description
32404    --
32405    -- No description or it is inherited.
32406    --
32407    -- call ADRs
32408    -- Bug 4922099
32409    --
32410    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32411         (NVL(l_actual_upg_option, 'N') = 'O') OR
32412         (NVL(l_enc_upg_option, 'N') = 'O')
32413       )
32414    THEN
32415    NULL;
32416    --
32417    --
32418    
32419   l_ccid := AcctDerRule_4(
32420            p_application_id           => p_application_id
32421          , p_ae_header_id             => l_ae_header_id 
32422 , p_source_4 => p_source_4
32423          , x_transaction_coa_id       => l_adr_transaction_coa_id
32424          , x_accounting_coa_id        => l_adr_accounting_coa_id
32425          , x_value_type_code          => l_adr_value_type_code
32426          , p_side                     => 'NA'
32427    );
32428 
32429    xla_ae_lines_pkg.set_ccid(
32430     p_code_combination_id          => l_ccid
32431   , p_value_type_code              => l_adr_value_type_code
32432   , p_transaction_coa_id           => l_adr_transaction_coa_id
32433   , p_accounting_coa_id            => l_adr_accounting_coa_id
32434   , p_adr_code                     => 'CST_DEFAULT'
32435   , p_adr_type_code                => 'S'
32436   , p_component_type               => l_component_type
32437   , p_component_code               => l_component_code
32438   , p_component_type_code          => l_component_type_code
32439   , p_component_appl_id            => l_component_appl_id
32440   , p_amb_context_code             => l_amb_context_code
32441   , p_side                         => 'NA'
32442   );
32443 
32444 
32445    --
32446    --
32447    END IF;
32448    --
32449    -- Bug 4922099
32450    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
32451           (NVL(l_enc_upg_option, 'N') = 'O')
32452         ) AND
32453         (l_bflow_method_code = 'PRIOR_ENTRY')
32454       )
32455    THEN
32456       IF
32457       --
32458       1 = 2
32459       --
32460       THEN
32461       xla_accounting_err_pkg.build_message
32462                                     (p_appli_s_name            => 'XLA'
32463                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32464                                     ,p_token_1                 => 'LINE_NUMBER'
32465                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
32466                                     ,p_token_2                 => 'LINE_TYPE_NAME'
32467                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
32468                                                                              l_component_type
32469                                                                             ,l_component_code
32470                                                                             ,l_component_type_code
32471                                                                             ,l_component_appl_id
32472                                                                             ,l_amb_context_code
32473                                                                             ,l_entity_code
32474                                                                             ,l_event_class_code
32475                                                                            )
32476                                     ,p_token_3                 => 'OWNER'
32477                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
32478                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
32479                                                                           ,p_lookup_code    => l_component_type_code
32480                                                                          )
32481                                     ,p_token_4                 => 'PRODUCT_NAME'
32482                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
32483                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
32484                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
32485                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
32486                                     ,p_ae_header_id            =>  NULL
32487                                        );
32488 
32489         IF (C_LEVEL_ERROR>= g_log_level) THEN
32490                  trace
32491                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32492                       ,p_level    => C_LEVEL_ERROR
32493                       ,p_module   => l_log_module);
32494         END IF;
32495       END IF;
32496    END IF;
32497    --
32498    --
32499    ------------------------------------------------------------------------------------------------
32500    -- 4219869 Business Flow
32501    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
32502    -- Prior Entry.  Currently, the following code is always generated.
32503    ------------------------------------------------------------------------------------------------
32504    XLA_AE_LINES_PKG.ValidateCurrentLine;
32505 
32506    ------------------------------------------------------------------------------------
32507    -- 4219869 Business Flow
32508    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
32509    ------------------------------------------------------------------------------------
32510    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32511 
32512    ----------------------------------------------------------------------------------
32513    -- 4219869 Business Flow
32514    -- Update journal entry status -- Need to generate this within IF <condition>
32515    ----------------------------------------------------------------------------------
32516    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32517          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
32518          ,p_balance_type_code => l_balance_type_code
32519          );
32520 
32521    -------------------------------------------------------------------------------------------
32522    -- 4262811 - Generate the Accrual Reversal lines
32523    -------------------------------------------------------------------------------------------
32524    BEGIN
32525       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
32526                               (g_array_event(p_event_id).array_value_num('header_index'));
32527       IF l_acc_rev_flag IS NULL THEN
32528          l_acc_rev_flag := 'N';
32529       END IF;
32530    EXCEPTION
32531       WHEN OTHERS THEN
32532          l_acc_rev_flag := 'N';
32533    END;
32534    --
32535    IF (l_acc_rev_flag = 'Y') THEN
32536 
32537        -- 4645092  ------------------------------------------------------------------------------
32538        -- To allow MPA report to determine if it should generate report process
32539        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
32540        ------------------------------------------------------------------------------------------
32541 
32542        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
32543        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
32544    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
32545    -- call ADRs
32546    -- Bug 4922099
32547    --
32548    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32549         (NVL(l_actual_upg_option, 'N') = 'O') OR
32550         (NVL(l_enc_upg_option, 'N') = 'O')
32551       )
32552    THEN
32553    NULL;
32554    --
32555    --
32556    
32557   l_ccid := AcctDerRule_4(
32558            p_application_id           => p_application_id
32559          , p_ae_header_id             => l_ae_header_id 
32560 , p_source_4 => p_source_4
32561          , x_transaction_coa_id       => l_adr_transaction_coa_id
32562          , x_accounting_coa_id        => l_adr_accounting_coa_id
32563          , x_value_type_code          => l_adr_value_type_code
32564          , p_side                     => 'NA'
32565    );
32566 
32567    xla_ae_lines_pkg.set_ccid(
32568     p_code_combination_id          => l_ccid
32569   , p_value_type_code              => l_adr_value_type_code
32570   , p_transaction_coa_id           => l_adr_transaction_coa_id
32571   , p_accounting_coa_id            => l_adr_accounting_coa_id
32572   , p_adr_code                     => 'CST_DEFAULT'
32573   , p_adr_type_code                => 'S'
32574   , p_component_type               => l_component_type
32575   , p_component_code               => l_component_code
32576   , p_component_type_code          => l_component_type_code
32577   , p_component_appl_id            => l_component_appl_id
32578   , p_amb_context_code             => l_amb_context_code
32579   , p_side                         => 'NA'
32580   );
32581 
32582 
32583    --
32584    --
32585    END IF;
32586 
32587        --
32588        -- Update the line information that should be overwritten
32589        --
32590        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
32591                                          p_header_num   => 1);
32592        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
32593 
32594        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
32595 
32596        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
32597           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
32598        END IF;
32599 
32600       --
32601       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
32602       --
32603       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
32604           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
32605       ELSE
32606           ---------------------------------------------------------------------------------------------------
32607           -- 4262811a Switch Sign
32608           ---------------------------------------------------------------------------------------------------
32609           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
32610           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32611                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32612           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32613                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32614           -- 5132302
32615           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
32616                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32617 
32618       END IF;
32619 
32620       -- 4955764
32621       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32622       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
32623 
32624 
32625       XLA_AE_LINES_PKG.ValidateCurrentLine;
32626       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32627 
32628       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32629                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
32630                ,p_balance_type_code => l_balance_type_code);
32631 
32632    END IF;
32633 
32634    -----------------------------------------------------------------------------------------
32635    -- 4262811 Multiperiod Accounting
32636    -----------------------------------------------------------------------------------------
32637      -- No MPA option is assigned.
32638 
32639 
32640 END IF;
32641 END IF;
32642 --
32643 
32644 --
32645 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32646    trace
32647       (p_msg      => 'END of AcctLineType_61'
32648       ,p_level    => C_LEVEL_PROCEDURE
32649       ,p_module   => l_log_module);
32650 END IF;
32651 --
32652 EXCEPTION
32653   WHEN xla_exceptions_pkg.application_exception THEN
32654       RAISE;
32655   WHEN OTHERS THEN
32656        xla_exceptions_pkg.raise_message
32657            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_61');
32658 END AcctLineType_61;
32659 --
32660 
32661 ---------------------------------------
32662 --
32663 -- PRIVATE FUNCTION
32664 --         AcctLineType_62
32665 --
32666 ---------------------------------------
32667 PROCEDURE AcctLineType_62 (
32668   p_application_id        IN NUMBER
32669  ,p_event_id              IN NUMBER
32670  ,p_calculate_acctd_flag  IN VARCHAR2
32671  ,p_calculate_g_l_flag    IN VARCHAR2
32672  ,p_actual_flag           IN OUT VARCHAR2
32673  ,p_balance_type_code     OUT VARCHAR2
32674  ,p_gain_or_loss_ref      OUT VARCHAR2
32675  
32676 --Cost Management Default Account
32677  , p_source_4            IN NUMBER
32678 --DISTRIBUTION_IDENTIFIER
32679  , p_source_11            IN NUMBER
32680 --Distribution Type
32681  , p_source_12            IN VARCHAR2
32682  , p_source_12_meaning    IN VARCHAR2
32683 --Entered Currency Code
32684  , p_source_15            IN VARCHAR2
32685 --Entered Amount
32686  , p_source_18            IN NUMBER
32687 --Currency Conversion Date
32688  , p_source_19            IN DATE
32689 --Currency Conversion Rate
32690  , p_source_20            IN NUMBER
32691 --Currency Conversion Type
32692  , p_source_21            IN VARCHAR2
32693 --Accounted Amount
32694  , p_source_22            IN NUMBER
32695 --Accounting Line Type
32696  , p_source_24            IN NUMBER
32697 )
32698 IS
32699 
32700 l_component_type              VARCHAR2(80);
32701 l_component_code              VARCHAR2(30);
32702 l_component_type_code         VARCHAR2(1);
32703 l_component_appl_id           INTEGER;
32704 l_amb_context_code            VARCHAR2(30);
32705 l_entity_code                 VARCHAR2(30);
32706 l_event_class_code            VARCHAR2(30);
32707 l_ae_header_id                NUMBER;
32708 l_event_type_code             VARCHAR2(30);
32709 l_line_definition_code        VARCHAR2(30);
32710 l_line_definition_owner_code  VARCHAR2(1);
32711 --
32712 -- adr variables
32713 l_segment                     VARCHAR2(30);
32714 l_ccid                        NUMBER;
32715 l_adr_transaction_coa_id      NUMBER;
32716 l_adr_accounting_coa_id       NUMBER;
32717 l_adr_flexfield_segment_code  VARCHAR2(30);
32718 l_adr_flex_value_set_id       NUMBER;
32719 l_adr_value_type_code         VARCHAR2(30);
32720 l_adr_value_combination_id    NUMBER;
32721 l_adr_value_segment_code      VARCHAR2(30);
32722 
32723 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
32724 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
32725 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
32726 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
32727 
32728 -- 4262811 Variables ------------------------------------------------------------------------------------------
32729 l_entered_amt_idx             NUMBER;
32730 l_accted_amt_idx              NUMBER;
32731 l_acc_rev_flag                VARCHAR2(1);
32732 l_accrual_line_num            NUMBER;
32733 l_tmp_amt                     NUMBER;
32734 l_acc_rev_natural_side_code   VARCHAR2(1);
32735 
32736 l_num_entries                 NUMBER;
32737 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
32738 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
32739 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
32740 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
32741 l_recog_line_1                NUMBER;
32742 l_recog_line_2                NUMBER;
32743 
32744 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
32745 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
32746 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
32747 
32748 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
32749 
32750 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
32751 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
32752 
32753 ---------------------------------------------------------------------------------------------------------------
32754 
32755 
32756 --
32757 -- bulk performance
32758 --
32759 l_balance_type_code           VARCHAR2(1);
32760 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
32761 l_log_module                  VARCHAR2(240);
32762 
32763 --
32764 -- Upgrade strategy
32765 --
32766 l_actual_upg_option           VARCHAR2(1);
32767 l_enc_upg_option           VARCHAR2(1);
32768 
32769 --
32770 BEGIN
32771 --
32772 IF g_log_enabled THEN
32773       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_62';
32774 END IF;
32775 --
32776 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32777 
32778       trace
32779          (p_msg      => 'BEGIN of AcctLineType_62'
32780          ,p_level    => C_LEVEL_PROCEDURE
32781          ,p_module   => l_log_module);
32782 
32783 END IF;
32784 --
32785 l_component_type             := 'AMB_JLT';
32786 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
32787 l_component_type_code        := 'S';
32788 l_component_appl_id          :=  707;
32789 l_amb_context_code           := 'DEFAULT';
32790 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
32791 l_event_class_code           := 'USER_DEFINE';
32792 l_event_type_code            := 'UDIR_INTERORG_SHIP_TP';
32793 l_line_definition_owner_code := 'S';
32794 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_TP';
32795 --
32796 l_balance_type_code          := 'A';
32797 l_segment                     := NULL;
32798 l_ccid                        := NULL;
32799 l_adr_transaction_coa_id      := NULL;
32800 l_adr_accounting_coa_id       := NULL;
32801 l_adr_flexfield_segment_code  := NULL;
32802 l_adr_flex_value_set_id       := NULL;
32803 l_adr_value_type_code         := NULL;
32804 l_adr_value_combination_id    := NULL;
32805 l_adr_value_segment_code      := NULL;
32806 
32807 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
32808 l_bflow_class_code           := '';    -- 4219869 Business Flow
32809 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
32810 l_budgetary_control_flag     := 'N';
32811 
32812 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
32813 l_bflow_applied_to_amt       := NULL; -- 5132302
32814 l_entered_amt_idx            := NULL;          -- 4262811
32815 l_accted_amt_idx             := NULL;          -- 4262811
32816 l_acc_rev_flag               := NULL;          -- 4262811
32817 l_accrual_line_num           := NULL;          -- 4262811
32818 l_tmp_amt                    := NULL;          -- 4262811
32819 --
32820  
32821 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
32822     l_balance_type_code <> 'B' THEN
32823 IF NVL(p_source_24,9E125) =  12
32824  THEN 
32825 
32826    --
32827    XLA_AE_LINES_PKG.SetNewLine;
32828 
32829    p_balance_type_code          := l_balance_type_code;
32830    -- set the flag so later we will know whether the gain loss line needs to be created
32831    
32832    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
32833      p_actual_flag :='A';
32834    END IF;
32835 
32836    --
32837    -- bulk performance
32838    --
32839    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
32840                                       p_header_num   => 0); -- 4262811
32841    --
32842    -- set accounting line options
32843    --
32844    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
32845            p_natural_side_code          => 'D'
32846          , p_gain_or_loss_flag          => 'N'
32847          , p_gl_transfer_mode_code      => 'S'
32848          , p_acct_entry_type_code       => 'A'
32849          , p_switch_side_flag           => 'Y'
32850          , p_merge_duplicate_code       => 'N'
32851          );
32852    --
32853    l_acc_rev_natural_side_code := 'C';  -- 4262811
32854    -- 
32855    --
32856    -- set accounting line type info
32857    --
32858    xla_ae_lines_pkg.SetAcctLineType
32859       (p_component_type             => l_component_type
32860       ,p_event_type_code            => l_event_type_code
32861       ,p_line_definition_owner_code => l_line_definition_owner_code
32862       ,p_line_definition_code       => l_line_definition_code
32863       ,p_accounting_line_code       => l_component_code
32864       ,p_accounting_line_type_code  => l_component_type_code
32865       ,p_accounting_line_appl_id    => l_component_appl_id
32866       ,p_amb_context_code           => l_amb_context_code
32867       ,p_entity_code                => l_entity_code
32868       ,p_event_class_code           => l_event_class_code);
32869    --
32870    -- set accounting class
32871    --
32872    xla_ae_lines_pkg.SetAcctClass(
32873            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
32874          , p_ae_header_id           => l_ae_header_id
32875          );
32876 
32877    --
32878    -- set rounding class
32879    --
32880    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
32881                       'INTERORG_FREIGHT_CHARGE';
32882 
32883    --
32884    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
32885    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
32886    --
32887    -- bulk performance
32888    --
32889    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
32890 
32891    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
32892       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
32893 
32894    -- 4955764
32895    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32896       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
32897 
32898    -- 4458381 Public Sector Enh
32899    
32900    --
32901    -- set accounting attributes for the line type
32902    --
32903    l_entered_amt_idx := 3;
32904    l_accted_amt_idx  := 8;
32905    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
32906    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
32907    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
32908    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
32909    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
32910    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
32911    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
32912    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
32913    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
32914    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
32915    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
32916    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
32917    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
32918    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
32919    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
32920    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
32921    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
32922 
32923    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
32924    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
32925 
32926    ---------------------------------------------------------------------------------------------------------------
32927    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
32928    ---------------------------------------------------------------------------------------------------------------
32929    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
32930 
32931    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32932    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32933 
32934    IF xla_accounting_cache_pkg.GetValueChar
32935          (p_source_code         => 'LEDGER_CATEGORY_CODE'
32936          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
32937    AND l_bflow_method_code = 'PRIOR_ENTRY'
32938 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
32939    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
32940          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
32941        )
32942    THEN
32943          xla_ae_lines_pkg.BflowUpgEntry
32944            (p_business_method_code    => l_bflow_method_code
32945            ,p_business_class_code     => l_bflow_class_code
32946            ,p_balance_type            => l_balance_type_code);
32947    ELSE
32948       NULL;
32949 -- No business flow processing for business flow method of NONE.
32950    END IF;
32951 
32952    --
32953    -- call analytical criteria
32954    --
32955    
32956    --
32957    -- call description
32958    --
32959    -- No description or it is inherited.
32960    --
32961    -- call ADRs
32962    -- Bug 4922099
32963    --
32964    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32965         (NVL(l_actual_upg_option, 'N') = 'O') OR
32966         (NVL(l_enc_upg_option, 'N') = 'O')
32967       )
32968    THEN
32969    NULL;
32970    --
32971    --
32972    
32973   l_ccid := AcctDerRule_4(
32974            p_application_id           => p_application_id
32975          , p_ae_header_id             => l_ae_header_id 
32976 , p_source_4 => p_source_4
32977          , x_transaction_coa_id       => l_adr_transaction_coa_id
32978          , x_accounting_coa_id        => l_adr_accounting_coa_id
32979          , x_value_type_code          => l_adr_value_type_code
32980          , p_side                     => 'NA'
32981    );
32982 
32983    xla_ae_lines_pkg.set_ccid(
32984     p_code_combination_id          => l_ccid
32985   , p_value_type_code              => l_adr_value_type_code
32986   , p_transaction_coa_id           => l_adr_transaction_coa_id
32987   , p_accounting_coa_id            => l_adr_accounting_coa_id
32988   , p_adr_code                     => 'CST_DEFAULT'
32989   , p_adr_type_code                => 'S'
32990   , p_component_type               => l_component_type
32991   , p_component_code               => l_component_code
32992   , p_component_type_code          => l_component_type_code
32993   , p_component_appl_id            => l_component_appl_id
32994   , p_amb_context_code             => l_amb_context_code
32995   , p_side                         => 'NA'
32996   );
32997 
32998 
32999    --
33000    --
33001    END IF;
33002    --
33003    -- Bug 4922099
33004    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
33005           (NVL(l_enc_upg_option, 'N') = 'O')
33006         ) AND
33007         (l_bflow_method_code = 'PRIOR_ENTRY')
33008       )
33009    THEN
33010       IF
33011       --
33012       1 = 2
33013       --
33014       THEN
33015       xla_accounting_err_pkg.build_message
33016                                     (p_appli_s_name            => 'XLA'
33017                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33018                                     ,p_token_1                 => 'LINE_NUMBER'
33019                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
33020                                     ,p_token_2                 => 'LINE_TYPE_NAME'
33021                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
33022                                                                              l_component_type
33023                                                                             ,l_component_code
33024                                                                             ,l_component_type_code
33025                                                                             ,l_component_appl_id
33026                                                                             ,l_amb_context_code
33027                                                                             ,l_entity_code
33028                                                                             ,l_event_class_code
33029                                                                            )
33030                                     ,p_token_3                 => 'OWNER'
33031                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
33032                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
33033                                                                           ,p_lookup_code    => l_component_type_code
33034                                                                          )
33035                                     ,p_token_4                 => 'PRODUCT_NAME'
33036                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
33037                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
33038                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
33039                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
33040                                     ,p_ae_header_id            =>  NULL
33041                                        );
33042 
33043         IF (C_LEVEL_ERROR>= g_log_level) THEN
33044                  trace
33045                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33046                       ,p_level    => C_LEVEL_ERROR
33047                       ,p_module   => l_log_module);
33048         END IF;
33049       END IF;
33050    END IF;
33051    --
33052    --
33053    ------------------------------------------------------------------------------------------------
33054    -- 4219869 Business Flow
33055    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
33056    -- Prior Entry.  Currently, the following code is always generated.
33057    ------------------------------------------------------------------------------------------------
33058    XLA_AE_LINES_PKG.ValidateCurrentLine;
33059 
33060    ------------------------------------------------------------------------------------
33061    -- 4219869 Business Flow
33062    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
33063    ------------------------------------------------------------------------------------
33064    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33065 
33066    ----------------------------------------------------------------------------------
33067    -- 4219869 Business Flow
33068    -- Update journal entry status -- Need to generate this within IF <condition>
33069    ----------------------------------------------------------------------------------
33070    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33071          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
33072          ,p_balance_type_code => l_balance_type_code
33073          );
33074 
33075    -------------------------------------------------------------------------------------------
33076    -- 4262811 - Generate the Accrual Reversal lines
33077    -------------------------------------------------------------------------------------------
33078    BEGIN
33079       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
33080                               (g_array_event(p_event_id).array_value_num('header_index'));
33081       IF l_acc_rev_flag IS NULL THEN
33082          l_acc_rev_flag := 'N';
33083       END IF;
33084    EXCEPTION
33085       WHEN OTHERS THEN
33086          l_acc_rev_flag := 'N';
33087    END;
33088    --
33089    IF (l_acc_rev_flag = 'Y') THEN
33090 
33091        -- 4645092  ------------------------------------------------------------------------------
33092        -- To allow MPA report to determine if it should generate report process
33093        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
33094        ------------------------------------------------------------------------------------------
33095 
33096        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
33097        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
33098    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
33099    -- call ADRs
33100    -- Bug 4922099
33101    --
33102    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33103         (NVL(l_actual_upg_option, 'N') = 'O') OR
33104         (NVL(l_enc_upg_option, 'N') = 'O')
33105       )
33106    THEN
33107    NULL;
33108    --
33109    --
33110    
33111   l_ccid := AcctDerRule_4(
33112            p_application_id           => p_application_id
33113          , p_ae_header_id             => l_ae_header_id 
33114 , p_source_4 => p_source_4
33115          , x_transaction_coa_id       => l_adr_transaction_coa_id
33116          , x_accounting_coa_id        => l_adr_accounting_coa_id
33117          , x_value_type_code          => l_adr_value_type_code
33118          , p_side                     => 'NA'
33119    );
33120 
33121    xla_ae_lines_pkg.set_ccid(
33122     p_code_combination_id          => l_ccid
33123   , p_value_type_code              => l_adr_value_type_code
33124   , p_transaction_coa_id           => l_adr_transaction_coa_id
33125   , p_accounting_coa_id            => l_adr_accounting_coa_id
33126   , p_adr_code                     => 'CST_DEFAULT'
33127   , p_adr_type_code                => 'S'
33128   , p_component_type               => l_component_type
33129   , p_component_code               => l_component_code
33130   , p_component_type_code          => l_component_type_code
33131   , p_component_appl_id            => l_component_appl_id
33132   , p_amb_context_code             => l_amb_context_code
33133   , p_side                         => 'NA'
33134   );
33135 
33136 
33137    --
33138    --
33139    END IF;
33140 
33141        --
33142        -- Update the line information that should be overwritten
33143        --
33144        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
33145                                          p_header_num   => 1);
33146        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
33147 
33148        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
33149 
33150        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
33151           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
33152        END IF;
33153 
33154       --
33155       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
33156       --
33157       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
33158           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
33159       ELSE
33160           ---------------------------------------------------------------------------------------------------
33161           -- 4262811a Switch Sign
33162           ---------------------------------------------------------------------------------------------------
33163           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
33164           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33165                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33166           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33167                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33168           -- 5132302
33169           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
33170                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33171 
33172       END IF;
33173 
33174       -- 4955764
33175       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33176       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
33177 
33178 
33179       XLA_AE_LINES_PKG.ValidateCurrentLine;
33180       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33181 
33182       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33183                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
33184                ,p_balance_type_code => l_balance_type_code);
33185 
33186    END IF;
33187 
33188    -----------------------------------------------------------------------------------------
33189    -- 4262811 Multiperiod Accounting
33190    -----------------------------------------------------------------------------------------
33191      -- No MPA option is assigned.
33192 
33193 
33194 END IF;
33195 END IF;
33196 --
33197 
33198 --
33199 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33200    trace
33201       (p_msg      => 'END of AcctLineType_62'
33202       ,p_level    => C_LEVEL_PROCEDURE
33203       ,p_module   => l_log_module);
33204 END IF;
33205 --
33206 EXCEPTION
33207   WHEN xla_exceptions_pkg.application_exception THEN
33208       RAISE;
33209   WHEN OTHERS THEN
33210        xla_exceptions_pkg.raise_message
33211            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_62');
33212 END AcctLineType_62;
33213 --
33214 
33215 ---------------------------------------
33216 --
33217 -- PRIVATE FUNCTION
33218 --         AcctLineType_63
33219 --
33220 ---------------------------------------
33221 PROCEDURE AcctLineType_63 (
33222   p_application_id        IN NUMBER
33223  ,p_event_id              IN NUMBER
33224  ,p_calculate_acctd_flag  IN VARCHAR2
33225  ,p_calculate_g_l_flag    IN VARCHAR2
33226  ,p_actual_flag           IN OUT VARCHAR2
33227  ,p_balance_type_code     OUT VARCHAR2
33228  ,p_gain_or_loss_ref      OUT VARCHAR2
33229  
33230 --Cost Management Default Account
33231  , p_source_4            IN NUMBER
33232 --DISTRIBUTION_IDENTIFIER
33233  , p_source_11            IN NUMBER
33234 --Distribution Type
33235  , p_source_12            IN VARCHAR2
33236  , p_source_12_meaning    IN VARCHAR2
33237 --Entered Currency Code
33238  , p_source_15            IN VARCHAR2
33239 --Entered Amount
33240  , p_source_18            IN NUMBER
33241 --Currency Conversion Date
33242  , p_source_19            IN DATE
33243 --Currency Conversion Rate
33244  , p_source_20            IN NUMBER
33245 --Currency Conversion Type
33246  , p_source_21            IN VARCHAR2
33247 --Accounted Amount
33248  , p_source_22            IN NUMBER
33249 --Accounting Line Type
33250  , p_source_24            IN NUMBER
33251 )
33252 IS
33253 
33254 l_component_type              VARCHAR2(80);
33255 l_component_code              VARCHAR2(30);
33256 l_component_type_code         VARCHAR2(1);
33257 l_component_appl_id           INTEGER;
33258 l_amb_context_code            VARCHAR2(30);
33259 l_entity_code                 VARCHAR2(30);
33260 l_event_class_code            VARCHAR2(30);
33261 l_ae_header_id                NUMBER;
33262 l_event_type_code             VARCHAR2(30);
33263 l_line_definition_code        VARCHAR2(30);
33264 l_line_definition_owner_code  VARCHAR2(1);
33265 --
33266 -- adr variables
33267 l_segment                     VARCHAR2(30);
33268 l_ccid                        NUMBER;
33269 l_adr_transaction_coa_id      NUMBER;
33270 l_adr_accounting_coa_id       NUMBER;
33271 l_adr_flexfield_segment_code  VARCHAR2(30);
33272 l_adr_flex_value_set_id       NUMBER;
33273 l_adr_value_type_code         VARCHAR2(30);
33274 l_adr_value_combination_id    NUMBER;
33275 l_adr_value_segment_code      VARCHAR2(30);
33276 
33277 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
33278 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
33279 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
33280 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
33281 
33282 -- 4262811 Variables ------------------------------------------------------------------------------------------
33283 l_entered_amt_idx             NUMBER;
33284 l_accted_amt_idx              NUMBER;
33285 l_acc_rev_flag                VARCHAR2(1);
33286 l_accrual_line_num            NUMBER;
33287 l_tmp_amt                     NUMBER;
33288 l_acc_rev_natural_side_code   VARCHAR2(1);
33289 
33290 l_num_entries                 NUMBER;
33291 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
33292 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
33293 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
33294 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
33295 l_recog_line_1                NUMBER;
33296 l_recog_line_2                NUMBER;
33297 
33298 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
33299 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
33300 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
33301 
33302 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
33303 
33304 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
33305 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
33306 
33307 ---------------------------------------------------------------------------------------------------------------
33308 
33309 
33310 --
33311 -- bulk performance
33312 --
33313 l_balance_type_code           VARCHAR2(1);
33314 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
33315 l_log_module                  VARCHAR2(240);
33316 
33317 --
33318 -- Upgrade strategy
33319 --
33320 l_actual_upg_option           VARCHAR2(1);
33321 l_enc_upg_option           VARCHAR2(1);
33322 
33323 --
33324 BEGIN
33325 --
33326 IF g_log_enabled THEN
33327       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_63';
33328 END IF;
33329 --
33330 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33331 
33332       trace
33333          (p_msg      => 'BEGIN of AcctLineType_63'
33334          ,p_level    => C_LEVEL_PROCEDURE
33335          ,p_module   => l_log_module);
33336 
33337 END IF;
33338 --
33339 l_component_type             := 'AMB_JLT';
33340 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
33341 l_component_type_code        := 'S';
33342 l_component_appl_id          :=  707;
33343 l_amb_context_code           := 'DEFAULT';
33344 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
33345 l_event_class_code           := 'USER_DEFINE';
33346 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
33347 l_line_definition_owner_code := 'S';
33348 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_TP';
33349 --
33350 l_balance_type_code          := 'A';
33351 l_segment                     := NULL;
33352 l_ccid                        := NULL;
33353 l_adr_transaction_coa_id      := NULL;
33354 l_adr_accounting_coa_id       := NULL;
33355 l_adr_flexfield_segment_code  := NULL;
33356 l_adr_flex_value_set_id       := NULL;
33357 l_adr_value_type_code         := NULL;
33358 l_adr_value_combination_id    := NULL;
33359 l_adr_value_segment_code      := NULL;
33360 
33361 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
33362 l_bflow_class_code           := '';    -- 4219869 Business Flow
33363 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
33364 l_budgetary_control_flag     := 'N';
33365 
33366 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
33367 l_bflow_applied_to_amt       := NULL; -- 5132302
33368 l_entered_amt_idx            := NULL;          -- 4262811
33369 l_accted_amt_idx             := NULL;          -- 4262811
33370 l_acc_rev_flag               := NULL;          -- 4262811
33371 l_accrual_line_num           := NULL;          -- 4262811
33372 l_tmp_amt                    := NULL;          -- 4262811
33373 --
33374  
33375 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
33376     l_balance_type_code <> 'B' THEN
33377 IF NVL(p_source_24,9E125) =  12
33378  THEN 
33379 
33380    --
33381    XLA_AE_LINES_PKG.SetNewLine;
33382 
33383    p_balance_type_code          := l_balance_type_code;
33384    -- set the flag so later we will know whether the gain loss line needs to be created
33385    
33386    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
33387      p_actual_flag :='A';
33388    END IF;
33389 
33390    --
33391    -- bulk performance
33392    --
33393    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
33394                                       p_header_num   => 0); -- 4262811
33395    --
33396    -- set accounting line options
33397    --
33398    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
33399            p_natural_side_code          => 'D'
33400          , p_gain_or_loss_flag          => 'N'
33401          , p_gl_transfer_mode_code      => 'S'
33402          , p_acct_entry_type_code       => 'A'
33403          , p_switch_side_flag           => 'Y'
33404          , p_merge_duplicate_code       => 'N'
33405          );
33406    --
33407    l_acc_rev_natural_side_code := 'C';  -- 4262811
33408    -- 
33409    --
33410    -- set accounting line type info
33411    --
33412    xla_ae_lines_pkg.SetAcctLineType
33413       (p_component_type             => l_component_type
33414       ,p_event_type_code            => l_event_type_code
33415       ,p_line_definition_owner_code => l_line_definition_owner_code
33416       ,p_line_definition_code       => l_line_definition_code
33417       ,p_accounting_line_code       => l_component_code
33418       ,p_accounting_line_type_code  => l_component_type_code
33419       ,p_accounting_line_appl_id    => l_component_appl_id
33420       ,p_amb_context_code           => l_amb_context_code
33421       ,p_entity_code                => l_entity_code
33422       ,p_event_class_code           => l_event_class_code);
33423    --
33424    -- set accounting class
33425    --
33426    xla_ae_lines_pkg.SetAcctClass(
33427            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
33428          , p_ae_header_id           => l_ae_header_id
33429          );
33430 
33431    --
33432    -- set rounding class
33433    --
33434    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
33435                       'INTERORG_FREIGHT_CHARGE';
33436 
33437    --
33438    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
33439    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
33440    --
33441    -- bulk performance
33442    --
33443    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
33444 
33445    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
33446       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
33447 
33448    -- 4955764
33449    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33450       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
33451 
33452    -- 4458381 Public Sector Enh
33453    
33454    --
33455    -- set accounting attributes for the line type
33456    --
33457    l_entered_amt_idx := 3;
33458    l_accted_amt_idx  := 8;
33459    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
33460    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
33461    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
33462    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
33463    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
33464    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
33465    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
33466    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
33467    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
33468    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
33469    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
33470    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
33471    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
33472    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
33473    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
33474    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
33475    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
33476 
33477    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
33478    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
33479 
33480    ---------------------------------------------------------------------------------------------------------------
33481    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
33482    ---------------------------------------------------------------------------------------------------------------
33483    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
33484 
33485    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33486    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33487 
33488    IF xla_accounting_cache_pkg.GetValueChar
33489          (p_source_code         => 'LEDGER_CATEGORY_CODE'
33490          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
33491    AND l_bflow_method_code = 'PRIOR_ENTRY'
33492 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
33493    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
33494          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
33495        )
33496    THEN
33497          xla_ae_lines_pkg.BflowUpgEntry
33498            (p_business_method_code    => l_bflow_method_code
33499            ,p_business_class_code     => l_bflow_class_code
33500            ,p_balance_type            => l_balance_type_code);
33501    ELSE
33502       NULL;
33503 -- No business flow processing for business flow method of NONE.
33504    END IF;
33505 
33506    --
33507    -- call analytical criteria
33508    --
33509    
33510    --
33511    -- call description
33512    --
33513    -- No description or it is inherited.
33514    --
33515    -- call ADRs
33516    -- Bug 4922099
33517    --
33518    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33519         (NVL(l_actual_upg_option, 'N') = 'O') OR
33520         (NVL(l_enc_upg_option, 'N') = 'O')
33521       )
33522    THEN
33523    NULL;
33524    --
33525    --
33526    
33527   l_ccid := AcctDerRule_4(
33528            p_application_id           => p_application_id
33529          , p_ae_header_id             => l_ae_header_id 
33530 , p_source_4 => p_source_4
33531          , x_transaction_coa_id       => l_adr_transaction_coa_id
33532          , x_accounting_coa_id        => l_adr_accounting_coa_id
33533          , x_value_type_code          => l_adr_value_type_code
33534          , p_side                     => 'NA'
33535    );
33536 
33537    xla_ae_lines_pkg.set_ccid(
33538     p_code_combination_id          => l_ccid
33539   , p_value_type_code              => l_adr_value_type_code
33540   , p_transaction_coa_id           => l_adr_transaction_coa_id
33541   , p_accounting_coa_id            => l_adr_accounting_coa_id
33542   , p_adr_code                     => 'CST_DEFAULT'
33543   , p_adr_type_code                => 'S'
33544   , p_component_type               => l_component_type
33545   , p_component_code               => l_component_code
33546   , p_component_type_code          => l_component_type_code
33547   , p_component_appl_id            => l_component_appl_id
33548   , p_amb_context_code             => l_amb_context_code
33549   , p_side                         => 'NA'
33550   );
33551 
33552 
33553    --
33554    --
33555    END IF;
33556    --
33557    -- Bug 4922099
33558    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
33559           (NVL(l_enc_upg_option, 'N') = 'O')
33560         ) AND
33561         (l_bflow_method_code = 'PRIOR_ENTRY')
33562       )
33563    THEN
33564       IF
33565       --
33566       1 = 2
33567       --
33568       THEN
33569       xla_accounting_err_pkg.build_message
33570                                     (p_appli_s_name            => 'XLA'
33571                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33572                                     ,p_token_1                 => 'LINE_NUMBER'
33573                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
33574                                     ,p_token_2                 => 'LINE_TYPE_NAME'
33575                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
33576                                                                              l_component_type
33577                                                                             ,l_component_code
33578                                                                             ,l_component_type_code
33579                                                                             ,l_component_appl_id
33580                                                                             ,l_amb_context_code
33581                                                                             ,l_entity_code
33582                                                                             ,l_event_class_code
33583                                                                            )
33584                                     ,p_token_3                 => 'OWNER'
33585                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
33586                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
33587                                                                           ,p_lookup_code    => l_component_type_code
33588                                                                          )
33589                                     ,p_token_4                 => 'PRODUCT_NAME'
33590                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
33591                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
33592                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
33593                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
33594                                     ,p_ae_header_id            =>  NULL
33595                                        );
33596 
33597         IF (C_LEVEL_ERROR>= g_log_level) THEN
33598                  trace
33599                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33600                       ,p_level    => C_LEVEL_ERROR
33601                       ,p_module   => l_log_module);
33602         END IF;
33603       END IF;
33604    END IF;
33605    --
33606    --
33607    ------------------------------------------------------------------------------------------------
33608    -- 4219869 Business Flow
33609    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
33610    -- Prior Entry.  Currently, the following code is always generated.
33611    ------------------------------------------------------------------------------------------------
33612    XLA_AE_LINES_PKG.ValidateCurrentLine;
33613 
33614    ------------------------------------------------------------------------------------
33615    -- 4219869 Business Flow
33616    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
33617    ------------------------------------------------------------------------------------
33618    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33619 
33620    ----------------------------------------------------------------------------------
33621    -- 4219869 Business Flow
33622    -- Update journal entry status -- Need to generate this within IF <condition>
33623    ----------------------------------------------------------------------------------
33624    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33625          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
33626          ,p_balance_type_code => l_balance_type_code
33627          );
33628 
33629    -------------------------------------------------------------------------------------------
33630    -- 4262811 - Generate the Accrual Reversal lines
33631    -------------------------------------------------------------------------------------------
33632    BEGIN
33633       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
33634                               (g_array_event(p_event_id).array_value_num('header_index'));
33635       IF l_acc_rev_flag IS NULL THEN
33636          l_acc_rev_flag := 'N';
33637       END IF;
33638    EXCEPTION
33639       WHEN OTHERS THEN
33640          l_acc_rev_flag := 'N';
33641    END;
33642    --
33643    IF (l_acc_rev_flag = 'Y') THEN
33644 
33645        -- 4645092  ------------------------------------------------------------------------------
33646        -- To allow MPA report to determine if it should generate report process
33647        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
33648        ------------------------------------------------------------------------------------------
33649 
33650        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
33651        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
33652    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
33653    -- call ADRs
33654    -- Bug 4922099
33655    --
33656    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33657         (NVL(l_actual_upg_option, 'N') = 'O') OR
33658         (NVL(l_enc_upg_option, 'N') = 'O')
33659       )
33660    THEN
33661    NULL;
33662    --
33663    --
33664    
33665   l_ccid := AcctDerRule_4(
33666            p_application_id           => p_application_id
33667          , p_ae_header_id             => l_ae_header_id 
33668 , p_source_4 => p_source_4
33669          , x_transaction_coa_id       => l_adr_transaction_coa_id
33670          , x_accounting_coa_id        => l_adr_accounting_coa_id
33671          , x_value_type_code          => l_adr_value_type_code
33672          , p_side                     => 'NA'
33673    );
33674 
33675    xla_ae_lines_pkg.set_ccid(
33676     p_code_combination_id          => l_ccid
33677   , p_value_type_code              => l_adr_value_type_code
33678   , p_transaction_coa_id           => l_adr_transaction_coa_id
33679   , p_accounting_coa_id            => l_adr_accounting_coa_id
33680   , p_adr_code                     => 'CST_DEFAULT'
33681   , p_adr_type_code                => 'S'
33682   , p_component_type               => l_component_type
33683   , p_component_code               => l_component_code
33684   , p_component_type_code          => l_component_type_code
33685   , p_component_appl_id            => l_component_appl_id
33686   , p_amb_context_code             => l_amb_context_code
33687   , p_side                         => 'NA'
33688   );
33689 
33690 
33691    --
33692    --
33693    END IF;
33694 
33695        --
33696        -- Update the line information that should be overwritten
33697        --
33698        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
33699                                          p_header_num   => 1);
33700        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
33701 
33702        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
33703 
33704        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
33705           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
33706        END IF;
33707 
33708       --
33709       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
33710       --
33711       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
33712           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
33713       ELSE
33714           ---------------------------------------------------------------------------------------------------
33715           -- 4262811a Switch Sign
33716           ---------------------------------------------------------------------------------------------------
33717           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
33718           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33719                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33720           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33721                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33722           -- 5132302
33723           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
33724                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33725 
33726       END IF;
33727 
33728       -- 4955764
33729       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33730       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
33731 
33732 
33733       XLA_AE_LINES_PKG.ValidateCurrentLine;
33734       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33735 
33736       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33737                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
33738                ,p_balance_type_code => l_balance_type_code);
33739 
33740    END IF;
33741 
33742    -----------------------------------------------------------------------------------------
33743    -- 4262811 Multiperiod Accounting
33744    -----------------------------------------------------------------------------------------
33745      -- No MPA option is assigned.
33746 
33747 
33748 END IF;
33749 END IF;
33750 --
33751 
33752 --
33753 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33754    trace
33755       (p_msg      => 'END of AcctLineType_63'
33756       ,p_level    => C_LEVEL_PROCEDURE
33757       ,p_module   => l_log_module);
33758 END IF;
33759 --
33760 EXCEPTION
33761   WHEN xla_exceptions_pkg.application_exception THEN
33762       RAISE;
33763   WHEN OTHERS THEN
33764        xla_exceptions_pkg.raise_message
33765            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_63');
33766 END AcctLineType_63;
33767 --
33768 
33769 ---------------------------------------
33770 --
33771 -- PRIVATE FUNCTION
33772 --         AcctLineType_64
33773 --
33774 ---------------------------------------
33775 PROCEDURE AcctLineType_64 (
33776   p_application_id        IN NUMBER
33777  ,p_event_id              IN NUMBER
33778  ,p_calculate_acctd_flag  IN VARCHAR2
33779  ,p_calculate_g_l_flag    IN VARCHAR2
33780  ,p_actual_flag           IN OUT VARCHAR2
33781  ,p_balance_type_code     OUT VARCHAR2
33782  ,p_gain_or_loss_ref      OUT VARCHAR2
33783  
33784 --Cost Management Default Account
33785  , p_source_4            IN NUMBER
33786 --DISTRIBUTION_IDENTIFIER
33787  , p_source_11            IN NUMBER
33788 --Distribution Type
33789  , p_source_12            IN VARCHAR2
33790  , p_source_12_meaning    IN VARCHAR2
33791 --Entered Currency Code
33792  , p_source_15            IN VARCHAR2
33793 --Entered Amount
33794  , p_source_18            IN NUMBER
33795 --Currency Conversion Date
33796  , p_source_19            IN DATE
33797 --Currency Conversion Rate
33798  , p_source_20            IN NUMBER
33799 --Currency Conversion Type
33800  , p_source_21            IN VARCHAR2
33801 --Accounted Amount
33802  , p_source_22            IN NUMBER
33803 --Accounting Line Type
33804  , p_source_24            IN NUMBER
33805 )
33806 IS
33807 
33808 l_component_type              VARCHAR2(80);
33809 l_component_code              VARCHAR2(30);
33810 l_component_type_code         VARCHAR2(1);
33811 l_component_appl_id           INTEGER;
33812 l_amb_context_code            VARCHAR2(30);
33813 l_entity_code                 VARCHAR2(30);
33814 l_event_class_code            VARCHAR2(30);
33815 l_ae_header_id                NUMBER;
33816 l_event_type_code             VARCHAR2(30);
33817 l_line_definition_code        VARCHAR2(30);
33818 l_line_definition_owner_code  VARCHAR2(1);
33819 --
33820 -- adr variables
33821 l_segment                     VARCHAR2(30);
33822 l_ccid                        NUMBER;
33823 l_adr_transaction_coa_id      NUMBER;
33824 l_adr_accounting_coa_id       NUMBER;
33825 l_adr_flexfield_segment_code  VARCHAR2(30);
33826 l_adr_flex_value_set_id       NUMBER;
33827 l_adr_value_type_code         VARCHAR2(30);
33828 l_adr_value_combination_id    NUMBER;
33829 l_adr_value_segment_code      VARCHAR2(30);
33830 
33831 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
33832 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
33833 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
33834 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
33835 
33836 -- 4262811 Variables ------------------------------------------------------------------------------------------
33837 l_entered_amt_idx             NUMBER;
33838 l_accted_amt_idx              NUMBER;
33839 l_acc_rev_flag                VARCHAR2(1);
33840 l_accrual_line_num            NUMBER;
33841 l_tmp_amt                     NUMBER;
33842 l_acc_rev_natural_side_code   VARCHAR2(1);
33843 
33844 l_num_entries                 NUMBER;
33845 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
33846 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
33847 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
33848 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
33849 l_recog_line_1                NUMBER;
33850 l_recog_line_2                NUMBER;
33851 
33852 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
33853 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
33854 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
33855 
33856 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
33857 
33858 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
33859 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
33860 
33861 ---------------------------------------------------------------------------------------------------------------
33862 
33863 
33864 --
33865 -- bulk performance
33866 --
33867 l_balance_type_code           VARCHAR2(1);
33868 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
33869 l_log_module                  VARCHAR2(240);
33870 
33871 --
33872 -- Upgrade strategy
33873 --
33874 l_actual_upg_option           VARCHAR2(1);
33875 l_enc_upg_option           VARCHAR2(1);
33876 
33877 --
33878 BEGIN
33879 --
33880 IF g_log_enabled THEN
33881       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_64';
33882 END IF;
33883 --
33884 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33885 
33886       trace
33887          (p_msg      => 'BEGIN of AcctLineType_64'
33888          ,p_level    => C_LEVEL_PROCEDURE
33889          ,p_module   => l_log_module);
33890 
33891 END IF;
33892 --
33893 l_component_type             := 'AMB_JLT';
33894 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
33895 l_component_type_code        := 'S';
33896 l_component_appl_id          :=  707;
33897 l_amb_context_code           := 'DEFAULT';
33898 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
33899 l_event_class_code           := 'USER_DEFINE';
33900 l_event_type_code            := 'UDIR_INTERORG_SHIP_NO_TP';
33901 l_line_definition_owner_code := 'S';
33902 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_NO_TP';
33903 --
33904 l_balance_type_code          := 'A';
33905 l_segment                     := NULL;
33906 l_ccid                        := NULL;
33907 l_adr_transaction_coa_id      := NULL;
33908 l_adr_accounting_coa_id       := NULL;
33909 l_adr_flexfield_segment_code  := NULL;
33910 l_adr_flex_value_set_id       := NULL;
33911 l_adr_value_type_code         := NULL;
33912 l_adr_value_combination_id    := NULL;
33913 l_adr_value_segment_code      := NULL;
33914 
33915 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
33916 l_bflow_class_code           := '';    -- 4219869 Business Flow
33917 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
33918 l_budgetary_control_flag     := 'N';
33919 
33920 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
33921 l_bflow_applied_to_amt       := NULL; -- 5132302
33922 l_entered_amt_idx            := NULL;          -- 4262811
33923 l_accted_amt_idx             := NULL;          -- 4262811
33924 l_acc_rev_flag               := NULL;          -- 4262811
33925 l_accrual_line_num           := NULL;          -- 4262811
33926 l_tmp_amt                    := NULL;          -- 4262811
33927 --
33928  
33929 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
33930     l_balance_type_code <> 'B' THEN
33931 IF NVL(p_source_24,9E125) =  12
33932  THEN 
33933 
33934    --
33935    XLA_AE_LINES_PKG.SetNewLine;
33936 
33937    p_balance_type_code          := l_balance_type_code;
33938    -- set the flag so later we will know whether the gain loss line needs to be created
33939    
33940    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
33941      p_actual_flag :='A';
33942    END IF;
33943 
33944    --
33945    -- bulk performance
33946    --
33947    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
33948                                       p_header_num   => 0); -- 4262811
33949    --
33950    -- set accounting line options
33951    --
33952    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
33953            p_natural_side_code          => 'D'
33954          , p_gain_or_loss_flag          => 'N'
33955          , p_gl_transfer_mode_code      => 'S'
33956          , p_acct_entry_type_code       => 'A'
33957          , p_switch_side_flag           => 'Y'
33958          , p_merge_duplicate_code       => 'N'
33959          );
33960    --
33961    l_acc_rev_natural_side_code := 'C';  -- 4262811
33962    -- 
33963    --
33964    -- set accounting line type info
33965    --
33966    xla_ae_lines_pkg.SetAcctLineType
33967       (p_component_type             => l_component_type
33968       ,p_event_type_code            => l_event_type_code
33969       ,p_line_definition_owner_code => l_line_definition_owner_code
33970       ,p_line_definition_code       => l_line_definition_code
33971       ,p_accounting_line_code       => l_component_code
33972       ,p_accounting_line_type_code  => l_component_type_code
33973       ,p_accounting_line_appl_id    => l_component_appl_id
33974       ,p_amb_context_code           => l_amb_context_code
33975       ,p_entity_code                => l_entity_code
33976       ,p_event_class_code           => l_event_class_code);
33977    --
33978    -- set accounting class
33979    --
33980    xla_ae_lines_pkg.SetAcctClass(
33981            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
33982          , p_ae_header_id           => l_ae_header_id
33983          );
33984 
33985    --
33986    -- set rounding class
33987    --
33988    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
33989                       'INTERORG_FREIGHT_CHARGE';
33990 
33991    --
33992    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
33993    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
33994    --
33995    -- bulk performance
33996    --
33997    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
33998 
33999    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
34000       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
34001 
34002    -- 4955764
34003    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34004       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
34005 
34006    -- 4458381 Public Sector Enh
34007    
34008    --
34009    -- set accounting attributes for the line type
34010    --
34011    l_entered_amt_idx := 3;
34012    l_accted_amt_idx  := 8;
34013    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
34014    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
34015    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
34016    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
34017    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
34018    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
34019    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
34020    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
34021    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
34022    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
34023    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
34024    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
34025    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
34026    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
34027    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
34028    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
34029    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
34030 
34031    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
34032    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
34033 
34034    ---------------------------------------------------------------------------------------------------------------
34035    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
34036    ---------------------------------------------------------------------------------------------------------------
34037    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
34038 
34039    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34040    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34041 
34042    IF xla_accounting_cache_pkg.GetValueChar
34043          (p_source_code         => 'LEDGER_CATEGORY_CODE'
34044          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
34045    AND l_bflow_method_code = 'PRIOR_ENTRY'
34046 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
34047    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
34048          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
34049        )
34050    THEN
34051          xla_ae_lines_pkg.BflowUpgEntry
34052            (p_business_method_code    => l_bflow_method_code
34053            ,p_business_class_code     => l_bflow_class_code
34054            ,p_balance_type            => l_balance_type_code);
34055    ELSE
34056       NULL;
34057 -- No business flow processing for business flow method of NONE.
34058    END IF;
34059 
34060    --
34061    -- call analytical criteria
34062    --
34063    
34064    --
34065    -- call description
34066    --
34067    -- No description or it is inherited.
34068    --
34069    -- call ADRs
34070    -- Bug 4922099
34071    --
34072    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34073         (NVL(l_actual_upg_option, 'N') = 'O') OR
34074         (NVL(l_enc_upg_option, 'N') = 'O')
34075       )
34076    THEN
34077    NULL;
34078    --
34079    --
34080    
34081   l_ccid := AcctDerRule_4(
34082            p_application_id           => p_application_id
34083          , p_ae_header_id             => l_ae_header_id 
34084 , p_source_4 => p_source_4
34085          , x_transaction_coa_id       => l_adr_transaction_coa_id
34086          , x_accounting_coa_id        => l_adr_accounting_coa_id
34087          , x_value_type_code          => l_adr_value_type_code
34088          , p_side                     => 'NA'
34089    );
34090 
34091    xla_ae_lines_pkg.set_ccid(
34092     p_code_combination_id          => l_ccid
34093   , p_value_type_code              => l_adr_value_type_code
34094   , p_transaction_coa_id           => l_adr_transaction_coa_id
34095   , p_accounting_coa_id            => l_adr_accounting_coa_id
34096   , p_adr_code                     => 'CST_DEFAULT'
34097   , p_adr_type_code                => 'S'
34098   , p_component_type               => l_component_type
34099   , p_component_code               => l_component_code
34100   , p_component_type_code          => l_component_type_code
34101   , p_component_appl_id            => l_component_appl_id
34102   , p_amb_context_code             => l_amb_context_code
34103   , p_side                         => 'NA'
34104   );
34105 
34106 
34107    --
34108    --
34109    END IF;
34110    --
34111    -- Bug 4922099
34112    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
34113           (NVL(l_enc_upg_option, 'N') = 'O')
34114         ) AND
34115         (l_bflow_method_code = 'PRIOR_ENTRY')
34116       )
34117    THEN
34118       IF
34119       --
34120       1 = 2
34121       --
34122       THEN
34123       xla_accounting_err_pkg.build_message
34124                                     (p_appli_s_name            => 'XLA'
34125                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34126                                     ,p_token_1                 => 'LINE_NUMBER'
34127                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
34128                                     ,p_token_2                 => 'LINE_TYPE_NAME'
34129                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
34130                                                                              l_component_type
34131                                                                             ,l_component_code
34132                                                                             ,l_component_type_code
34133                                                                             ,l_component_appl_id
34134                                                                             ,l_amb_context_code
34135                                                                             ,l_entity_code
34136                                                                             ,l_event_class_code
34137                                                                            )
34138                                     ,p_token_3                 => 'OWNER'
34139                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
34140                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
34141                                                                           ,p_lookup_code    => l_component_type_code
34142                                                                          )
34143                                     ,p_token_4                 => 'PRODUCT_NAME'
34144                                     ,p_value_4                 => 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                                     ,p_ae_header_id            =>  NULL
34149                                        );
34150 
34151         IF (C_LEVEL_ERROR>= g_log_level) THEN
34152                  trace
34153                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34154                       ,p_level    => C_LEVEL_ERROR
34155                       ,p_module   => l_log_module);
34156         END IF;
34157       END IF;
34158    END IF;
34159    --
34160    --
34161    ------------------------------------------------------------------------------------------------
34162    -- 4219869 Business Flow
34163    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
34164    -- Prior Entry.  Currently, the following code is always generated.
34165    ------------------------------------------------------------------------------------------------
34166    XLA_AE_LINES_PKG.ValidateCurrentLine;
34167 
34168    ------------------------------------------------------------------------------------
34169    -- 4219869 Business Flow
34170    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
34171    ------------------------------------------------------------------------------------
34172    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34173 
34174    ----------------------------------------------------------------------------------
34175    -- 4219869 Business Flow
34176    -- Update journal entry status -- Need to generate this within IF <condition>
34177    ----------------------------------------------------------------------------------
34178    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34179          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
34180          ,p_balance_type_code => l_balance_type_code
34181          );
34182 
34183    -------------------------------------------------------------------------------------------
34184    -- 4262811 - Generate the Accrual Reversal lines
34185    -------------------------------------------------------------------------------------------
34186    BEGIN
34187       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
34188                               (g_array_event(p_event_id).array_value_num('header_index'));
34189       IF l_acc_rev_flag IS NULL THEN
34190          l_acc_rev_flag := 'N';
34191       END IF;
34192    EXCEPTION
34193       WHEN OTHERS THEN
34194          l_acc_rev_flag := 'N';
34195    END;
34196    --
34197    IF (l_acc_rev_flag = 'Y') THEN
34198 
34199        -- 4645092  ------------------------------------------------------------------------------
34200        -- To allow MPA report to determine if it should generate report process
34201        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
34202        ------------------------------------------------------------------------------------------
34203 
34204        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
34205        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
34206    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
34207    -- call ADRs
34208    -- Bug 4922099
34209    --
34210    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34211         (NVL(l_actual_upg_option, 'N') = 'O') OR
34212         (NVL(l_enc_upg_option, 'N') = 'O')
34213       )
34214    THEN
34215    NULL;
34216    --
34217    --
34218    
34219   l_ccid := AcctDerRule_4(
34220            p_application_id           => p_application_id
34221          , p_ae_header_id             => l_ae_header_id 
34222 , p_source_4 => p_source_4
34223          , x_transaction_coa_id       => l_adr_transaction_coa_id
34224          , x_accounting_coa_id        => l_adr_accounting_coa_id
34225          , x_value_type_code          => l_adr_value_type_code
34226          , p_side                     => 'NA'
34227    );
34228 
34229    xla_ae_lines_pkg.set_ccid(
34230     p_code_combination_id          => l_ccid
34231   , p_value_type_code              => l_adr_value_type_code
34232   , p_transaction_coa_id           => l_adr_transaction_coa_id
34233   , p_accounting_coa_id            => l_adr_accounting_coa_id
34234   , p_adr_code                     => 'CST_DEFAULT'
34235   , p_adr_type_code                => 'S'
34236   , p_component_type               => l_component_type
34237   , p_component_code               => l_component_code
34238   , p_component_type_code          => l_component_type_code
34239   , p_component_appl_id            => l_component_appl_id
34240   , p_amb_context_code             => l_amb_context_code
34241   , p_side                         => 'NA'
34242   );
34243 
34244 
34245    --
34246    --
34247    END IF;
34248 
34249        --
34250        -- Update the line information that should be overwritten
34251        --
34252        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
34253                                          p_header_num   => 1);
34254        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
34255 
34256        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
34257 
34258        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
34259           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
34260        END IF;
34261 
34262       --
34263       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
34264       --
34265       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
34266           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
34267       ELSE
34268           ---------------------------------------------------------------------------------------------------
34269           -- 4262811a Switch Sign
34270           ---------------------------------------------------------------------------------------------------
34271           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
34272           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34273                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34274           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34275                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34276           -- 5132302
34277           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
34278                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34279 
34280       END IF;
34281 
34282       -- 4955764
34283       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34284       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
34285 
34286 
34287       XLA_AE_LINES_PKG.ValidateCurrentLine;
34288       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34289 
34290       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34291                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
34292                ,p_balance_type_code => l_balance_type_code);
34293 
34294    END IF;
34295 
34296    -----------------------------------------------------------------------------------------
34297    -- 4262811 Multiperiod Accounting
34298    -----------------------------------------------------------------------------------------
34299      -- No MPA option is assigned.
34300 
34301 
34302 END IF;
34303 END IF;
34304 --
34305 
34306 --
34307 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34308    trace
34309       (p_msg      => 'END of AcctLineType_64'
34310       ,p_level    => C_LEVEL_PROCEDURE
34311       ,p_module   => l_log_module);
34312 END IF;
34313 --
34314 EXCEPTION
34315   WHEN xla_exceptions_pkg.application_exception THEN
34316       RAISE;
34317   WHEN OTHERS THEN
34318        xla_exceptions_pkg.raise_message
34319            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_64');
34320 END AcctLineType_64;
34321 --
34322 
34323 ---------------------------------------
34324 --
34325 -- PRIVATE FUNCTION
34326 --         AcctLineType_65
34327 --
34328 ---------------------------------------
34329 PROCEDURE AcctLineType_65 (
34330   p_application_id        IN NUMBER
34331  ,p_event_id              IN NUMBER
34332  ,p_calculate_acctd_flag  IN VARCHAR2
34333  ,p_calculate_g_l_flag    IN VARCHAR2
34334  ,p_actual_flag           IN OUT VARCHAR2
34335  ,p_balance_type_code     OUT VARCHAR2
34336  ,p_gain_or_loss_ref      OUT VARCHAR2
34337  
34338 --Cost Management Default Account
34339  , p_source_4            IN NUMBER
34340 --Applied to Application ID
34341  , p_source_6            IN NUMBER
34342 --Applied to Distribution Link Type
34343  , p_source_7            IN VARCHAR2
34344 --Applied to Entity Code
34345  , p_source_8            IN VARCHAR2
34346 --DISTRIBUTION_IDENTIFIER
34347  , p_source_11            IN NUMBER
34348 --Distribution Type
34349  , p_source_12            IN VARCHAR2
34350  , p_source_12_meaning    IN VARCHAR2
34351 --Encumbrance Reversal Amount Entered
34352  , p_source_14            IN NUMBER
34353 --Entered Currency Code
34354  , p_source_15            IN VARCHAR2
34355 --Transaction Encumbrance Reversal Amount
34356  , p_source_16            IN NUMBER
34357 --Entered Amount
34358  , p_source_18            IN NUMBER
34359 --Currency Conversion Date
34360  , p_source_19            IN DATE
34361 --Currency Conversion Rate
34362  , p_source_20            IN NUMBER
34363 --Currency Conversion Type
34364  , p_source_21            IN VARCHAR2
34365 --Accounted Amount
34366  , p_source_22            IN NUMBER
34367 --Accounting Line Type
34368  , p_source_24            IN NUMBER
34369 --Costing Encumbrance Upgrade Option
34370  , p_source_27            IN VARCHAR2
34371 --TXN_PO_DISTRIBUTION_ID
34372  , p_source_28            IN NUMBER
34373 --TXN_PO_HEADER_ID
34374  , p_source_29            IN NUMBER
34375 --Requisition Budget Account
34376  , p_source_30            IN NUMBER
34377 --Requisition Encumbrance Type Identifier
34378  , p_source_31            IN NUMBER
34379 )
34380 IS
34381 
34382 l_component_type              VARCHAR2(80);
34383 l_component_code              VARCHAR2(30);
34384 l_component_type_code         VARCHAR2(1);
34385 l_component_appl_id           INTEGER;
34386 l_amb_context_code            VARCHAR2(30);
34387 l_entity_code                 VARCHAR2(30);
34388 l_event_class_code            VARCHAR2(30);
34389 l_ae_header_id                NUMBER;
34390 l_event_type_code             VARCHAR2(30);
34391 l_line_definition_code        VARCHAR2(30);
34392 l_line_definition_owner_code  VARCHAR2(1);
34393 --
34394 -- adr variables
34395 l_segment                     VARCHAR2(30);
34396 l_ccid                        NUMBER;
34397 l_adr_transaction_coa_id      NUMBER;
34398 l_adr_accounting_coa_id       NUMBER;
34399 l_adr_flexfield_segment_code  VARCHAR2(30);
34400 l_adr_flex_value_set_id       NUMBER;
34401 l_adr_value_type_code         VARCHAR2(30);
34402 l_adr_value_combination_id    NUMBER;
34403 l_adr_value_segment_code      VARCHAR2(30);
34404 
34405 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
34406 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
34407 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
34408 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
34409 
34410 -- 4262811 Variables ------------------------------------------------------------------------------------------
34411 l_entered_amt_idx             NUMBER;
34412 l_accted_amt_idx              NUMBER;
34413 l_acc_rev_flag                VARCHAR2(1);
34414 l_accrual_line_num            NUMBER;
34415 l_tmp_amt                     NUMBER;
34416 l_acc_rev_natural_side_code   VARCHAR2(1);
34417 
34418 l_num_entries                 NUMBER;
34419 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
34420 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
34421 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
34422 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
34423 l_recog_line_1                NUMBER;
34424 l_recog_line_2                NUMBER;
34425 
34426 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
34427 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
34428 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
34429 
34430 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
34431 
34432 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
34433 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
34434 
34435 ---------------------------------------------------------------------------------------------------------------
34436 
34437 
34438 --
34439 -- bulk performance
34440 --
34441 l_balance_type_code           VARCHAR2(1);
34442 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
34443 l_log_module                  VARCHAR2(240);
34444 
34445 --
34446 -- Upgrade strategy
34447 --
34448 l_actual_upg_option           VARCHAR2(1);
34449 l_enc_upg_option           VARCHAR2(1);
34450 
34451 --
34452 BEGIN
34453 --
34454 IF g_log_enabled THEN
34455       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_65';
34456 END IF;
34457 --
34458 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34459 
34460       trace
34461          (p_msg      => 'BEGIN of AcctLineType_65'
34462          ,p_level    => C_LEVEL_PROCEDURE
34463          ,p_module   => l_log_module);
34464 
34465 END IF;
34466 --
34467 l_component_type             := 'AMB_JLT';
34468 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
34469 l_component_type_code        := 'S';
34470 l_component_appl_id          :=  707;
34471 l_amb_context_code           := 'DEFAULT';
34472 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
34473 l_event_class_code           := 'DIR_INTERORG_RCPT';
34474 l_event_type_code            := 'DIR_INTERORG_RCPT_ALL';
34475 l_line_definition_owner_code := 'S';
34476 l_line_definition_code       := 'DIRECT_INTERORG_RCPT';
34477 --
34478 l_balance_type_code          := 'A';
34479 l_segment                     := NULL;
34480 l_ccid                        := NULL;
34481 l_adr_transaction_coa_id      := NULL;
34482 l_adr_accounting_coa_id       := NULL;
34483 l_adr_flexfield_segment_code  := NULL;
34484 l_adr_flex_value_set_id       := NULL;
34485 l_adr_value_type_code         := NULL;
34486 l_adr_value_combination_id    := NULL;
34487 l_adr_value_segment_code      := NULL;
34488 
34489 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
34490 l_bflow_class_code           := '';    -- 4219869 Business Flow
34491 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
34492 l_budgetary_control_flag     := 'N';
34493 
34494 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
34495 l_bflow_applied_to_amt       := NULL; -- 5132302
34496 l_entered_amt_idx            := NULL;          -- 4262811
34497 l_accted_amt_idx             := NULL;          -- 4262811
34498 l_acc_rev_flag               := NULL;          -- 4262811
34499 l_accrual_line_num           := NULL;          -- 4262811
34500 l_tmp_amt                    := NULL;          -- 4262811
34501 --
34502  
34503 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
34504     l_balance_type_code <> 'B' THEN
34505 IF NVL(p_source_24,9E125) =  12
34506  THEN 
34507 
34508    --
34509    XLA_AE_LINES_PKG.SetNewLine;
34510 
34511    p_balance_type_code          := l_balance_type_code;
34512    -- set the flag so later we will know whether the gain loss line needs to be created
34513    
34514    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
34515      p_actual_flag :='A';
34516    END IF;
34517 
34518    --
34519    -- bulk performance
34520    --
34521    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
34522                                       p_header_num   => 0); -- 4262811
34523    --
34524    -- set accounting line options
34525    --
34526    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
34527            p_natural_side_code          => 'D'
34528          , p_gain_or_loss_flag          => 'N'
34529          , p_gl_transfer_mode_code      => 'S'
34530          , p_acct_entry_type_code       => 'A'
34531          , p_switch_side_flag           => 'Y'
34532          , p_merge_duplicate_code       => 'N'
34533          );
34534    --
34535    l_acc_rev_natural_side_code := 'C';  -- 4262811
34536    -- 
34537    --
34538    -- set accounting line type info
34539    --
34540    xla_ae_lines_pkg.SetAcctLineType
34541       (p_component_type             => l_component_type
34542       ,p_event_type_code            => l_event_type_code
34543       ,p_line_definition_owner_code => l_line_definition_owner_code
34544       ,p_line_definition_code       => l_line_definition_code
34545       ,p_accounting_line_code       => l_component_code
34546       ,p_accounting_line_type_code  => l_component_type_code
34547       ,p_accounting_line_appl_id    => l_component_appl_id
34548       ,p_amb_context_code           => l_amb_context_code
34549       ,p_entity_code                => l_entity_code
34550       ,p_event_class_code           => l_event_class_code);
34551    --
34552    -- set accounting class
34553    --
34554    xla_ae_lines_pkg.SetAcctClass(
34555            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
34556          , p_ae_header_id           => l_ae_header_id
34557          );
34558 
34559    --
34560    -- set rounding class
34561    --
34562    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
34563                       'INTERORG_FREIGHT_CHARGE';
34564 
34565    --
34566    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
34567    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
34568    --
34569    -- bulk performance
34570    --
34571    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
34572 
34573    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
34574       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
34575 
34576    -- 4955764
34577    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34578       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
34579 
34580    -- 4458381 Public Sector Enh
34581    
34582    --
34583    -- set accounting attributes for the line type
34584    --
34585    l_entered_amt_idx := 17;
34586    l_accted_amt_idx  := 22;
34587    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
34588    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
34589    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
34590    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
34591    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
34592    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
34593    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
34594    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
34595    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
34596    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
34597    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
34598    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
34599    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
34600    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
34601    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
34602    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
34603    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
34604    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
34605    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
34606    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
34607    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
34608    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
34609    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
34610    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
34611    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
34612    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
34613    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
34614    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
34615    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
34616    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
34617    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
34618    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
34619    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
34620    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
34621    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
34622    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
34623    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
34624    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
34625    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
34626    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
34627    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
34628    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
34629    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
34630    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
34631    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
34632    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
34633    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
34634    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
34635    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
34636 
34637    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
34638    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
34639 
34640    ---------------------------------------------------------------------------------------------------------------
34641    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
34642    ---------------------------------------------------------------------------------------------------------------
34643    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
34644 
34645    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34646    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34647 
34648    IF xla_accounting_cache_pkg.GetValueChar
34649          (p_source_code         => 'LEDGER_CATEGORY_CODE'
34650          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
34651    AND l_bflow_method_code = 'PRIOR_ENTRY'
34652 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
34653    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
34654          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
34655        )
34656    THEN
34657          xla_ae_lines_pkg.BflowUpgEntry
34658            (p_business_method_code    => l_bflow_method_code
34659            ,p_business_class_code     => l_bflow_class_code
34660            ,p_balance_type            => l_balance_type_code);
34661    ELSE
34662       NULL;
34663 -- No business flow processing for business flow method of NONE.
34664    END IF;
34665 
34666    --
34667    -- call analytical criteria
34668    --
34669    
34670    --
34671    -- call description
34672    --
34673    -- No description or it is inherited.
34674    --
34675    -- call ADRs
34676    -- Bug 4922099
34677    --
34678    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34679         (NVL(l_actual_upg_option, 'N') = 'O') OR
34680         (NVL(l_enc_upg_option, 'N') = 'O')
34681       )
34682    THEN
34683    NULL;
34684    --
34685    --
34686    
34687   l_ccid := AcctDerRule_4(
34688            p_application_id           => p_application_id
34689          , p_ae_header_id             => l_ae_header_id 
34690 , p_source_4 => p_source_4
34691          , x_transaction_coa_id       => l_adr_transaction_coa_id
34692          , x_accounting_coa_id        => l_adr_accounting_coa_id
34693          , x_value_type_code          => l_adr_value_type_code
34694          , p_side                     => 'NA'
34695    );
34696 
34697    xla_ae_lines_pkg.set_ccid(
34698     p_code_combination_id          => l_ccid
34699   , p_value_type_code              => l_adr_value_type_code
34700   , p_transaction_coa_id           => l_adr_transaction_coa_id
34701   , p_accounting_coa_id            => l_adr_accounting_coa_id
34702   , p_adr_code                     => 'CST_DEFAULT'
34703   , p_adr_type_code                => 'S'
34704   , p_component_type               => l_component_type
34705   , p_component_code               => l_component_code
34706   , p_component_type_code          => l_component_type_code
34707   , p_component_appl_id            => l_component_appl_id
34708   , p_amb_context_code             => l_amb_context_code
34709   , p_side                         => 'NA'
34710   );
34711 
34712 
34713    --
34714    --
34715    END IF;
34716    --
34717    -- Bug 4922099
34718    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
34719           (NVL(l_enc_upg_option, 'N') = 'O')
34720         ) AND
34721         (l_bflow_method_code = 'PRIOR_ENTRY')
34722       )
34723    THEN
34724       IF
34725       --
34726       1 = 2
34727       --
34728       THEN
34729       xla_accounting_err_pkg.build_message
34730                                     (p_appli_s_name            => 'XLA'
34731                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34732                                     ,p_token_1                 => 'LINE_NUMBER'
34733                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
34734                                     ,p_token_2                 => 'LINE_TYPE_NAME'
34735                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
34736                                                                              l_component_type
34737                                                                             ,l_component_code
34738                                                                             ,l_component_type_code
34739                                                                             ,l_component_appl_id
34740                                                                             ,l_amb_context_code
34741                                                                             ,l_entity_code
34742                                                                             ,l_event_class_code
34743                                                                            )
34744                                     ,p_token_3                 => 'OWNER'
34745                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
34746                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
34747                                                                           ,p_lookup_code    => l_component_type_code
34748                                                                          )
34749                                     ,p_token_4                 => 'PRODUCT_NAME'
34750                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
34751                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
34752                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
34753                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
34754                                     ,p_ae_header_id            =>  NULL
34755                                        );
34756 
34757         IF (C_LEVEL_ERROR>= g_log_level) THEN
34758                  trace
34759                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34760                       ,p_level    => C_LEVEL_ERROR
34761                       ,p_module   => l_log_module);
34762         END IF;
34763       END IF;
34764    END IF;
34765    --
34766    --
34767    ------------------------------------------------------------------------------------------------
34768    -- 4219869 Business Flow
34769    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
34770    -- Prior Entry.  Currently, the following code is always generated.
34771    ------------------------------------------------------------------------------------------------
34772    XLA_AE_LINES_PKG.ValidateCurrentLine;
34773 
34774    ------------------------------------------------------------------------------------
34775    -- 4219869 Business Flow
34776    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
34777    ------------------------------------------------------------------------------------
34778    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34779 
34780    ----------------------------------------------------------------------------------
34781    -- 4219869 Business Flow
34782    -- Update journal entry status -- Need to generate this within IF <condition>
34783    ----------------------------------------------------------------------------------
34784    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34785          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
34786          ,p_balance_type_code => l_balance_type_code
34787          );
34788 
34789    -------------------------------------------------------------------------------------------
34790    -- 4262811 - Generate the Accrual Reversal lines
34791    -------------------------------------------------------------------------------------------
34792    BEGIN
34793       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
34794                               (g_array_event(p_event_id).array_value_num('header_index'));
34795       IF l_acc_rev_flag IS NULL THEN
34796          l_acc_rev_flag := 'N';
34797       END IF;
34798    EXCEPTION
34799       WHEN OTHERS THEN
34800          l_acc_rev_flag := 'N';
34801    END;
34802    --
34803    IF (l_acc_rev_flag = 'Y') THEN
34804 
34805        -- 4645092  ------------------------------------------------------------------------------
34806        -- To allow MPA report to determine if it should generate report process
34807        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
34808        ------------------------------------------------------------------------------------------
34809 
34810        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
34811        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
34812    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
34813    -- call ADRs
34814    -- Bug 4922099
34815    --
34816    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34817         (NVL(l_actual_upg_option, 'N') = 'O') OR
34818         (NVL(l_enc_upg_option, 'N') = 'O')
34819       )
34820    THEN
34821    NULL;
34822    --
34823    --
34824    
34825   l_ccid := AcctDerRule_4(
34826            p_application_id           => p_application_id
34827          , p_ae_header_id             => l_ae_header_id 
34828 , p_source_4 => p_source_4
34829          , x_transaction_coa_id       => l_adr_transaction_coa_id
34830          , x_accounting_coa_id        => l_adr_accounting_coa_id
34831          , x_value_type_code          => l_adr_value_type_code
34832          , p_side                     => 'NA'
34833    );
34834 
34835    xla_ae_lines_pkg.set_ccid(
34836     p_code_combination_id          => l_ccid
34837   , p_value_type_code              => l_adr_value_type_code
34838   , p_transaction_coa_id           => l_adr_transaction_coa_id
34839   , p_accounting_coa_id            => l_adr_accounting_coa_id
34840   , p_adr_code                     => 'CST_DEFAULT'
34841   , p_adr_type_code                => 'S'
34842   , p_component_type               => l_component_type
34843   , p_component_code               => l_component_code
34844   , p_component_type_code          => l_component_type_code
34845   , p_component_appl_id            => l_component_appl_id
34846   , p_amb_context_code             => l_amb_context_code
34847   , p_side                         => 'NA'
34848   );
34849 
34850 
34851    --
34852    --
34853    END IF;
34854 
34855        --
34856        -- Update the line information that should be overwritten
34857        --
34858        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
34859                                          p_header_num   => 1);
34860        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
34861 
34862        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
34863 
34864        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
34865           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
34866        END IF;
34867 
34868       --
34869       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
34870       --
34871       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
34872           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
34873       ELSE
34874           ---------------------------------------------------------------------------------------------------
34875           -- 4262811a Switch Sign
34876           ---------------------------------------------------------------------------------------------------
34877           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
34878           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34879                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34880           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34881                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34882           -- 5132302
34883           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
34884                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34885 
34886       END IF;
34887 
34888       -- 4955764
34889       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34890       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
34891 
34892 
34893       XLA_AE_LINES_PKG.ValidateCurrentLine;
34894       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34895 
34896       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34897                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
34898                ,p_balance_type_code => l_balance_type_code);
34899 
34900    END IF;
34901 
34902    -----------------------------------------------------------------------------------------
34903    -- 4262811 Multiperiod Accounting
34904    -----------------------------------------------------------------------------------------
34905      -- No MPA option is assigned.
34906 
34907 
34908 END IF;
34909 END IF;
34910 --
34911 
34912 --
34913 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34914    trace
34915       (p_msg      => 'END of AcctLineType_65'
34916       ,p_level    => C_LEVEL_PROCEDURE
34917       ,p_module   => l_log_module);
34918 END IF;
34919 --
34920 EXCEPTION
34921   WHEN xla_exceptions_pkg.application_exception THEN
34922       RAISE;
34923   WHEN OTHERS THEN
34924        xla_exceptions_pkg.raise_message
34925            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_65');
34926 END AcctLineType_65;
34927 --
34928 
34929 ---------------------------------------
34930 --
34931 -- PRIVATE FUNCTION
34932 --         AcctLineType_66
34933 --
34934 ---------------------------------------
34935 PROCEDURE AcctLineType_66 (
34936   p_application_id        IN NUMBER
34937  ,p_event_id              IN NUMBER
34938  ,p_calculate_acctd_flag  IN VARCHAR2
34939  ,p_calculate_g_l_flag    IN VARCHAR2
34940  ,p_actual_flag           IN OUT VARCHAR2
34941  ,p_balance_type_code     OUT VARCHAR2
34942  ,p_gain_or_loss_ref      OUT VARCHAR2
34943  
34944 --Cost Management Default Account
34945  , p_source_4            IN NUMBER
34946 --DISTRIBUTION_IDENTIFIER
34947  , p_source_11            IN NUMBER
34948 --Distribution Type
34949  , p_source_12            IN VARCHAR2
34950  , p_source_12_meaning    IN VARCHAR2
34951 --Entered Currency Code
34952  , p_source_15            IN VARCHAR2
34953 --Entered Amount
34954  , p_source_18            IN NUMBER
34955 --Currency Conversion Date
34956  , p_source_19            IN DATE
34957 --Currency Conversion Rate
34958  , p_source_20            IN NUMBER
34959 --Currency Conversion Type
34960  , p_source_21            IN VARCHAR2
34961 --Accounted Amount
34962  , p_source_22            IN NUMBER
34963 --Accounting Line Type
34964  , p_source_24            IN NUMBER
34965 )
34966 IS
34967 
34968 l_component_type              VARCHAR2(80);
34969 l_component_code              VARCHAR2(30);
34970 l_component_type_code         VARCHAR2(1);
34971 l_component_appl_id           INTEGER;
34972 l_amb_context_code            VARCHAR2(30);
34973 l_entity_code                 VARCHAR2(30);
34974 l_event_class_code            VARCHAR2(30);
34975 l_ae_header_id                NUMBER;
34976 l_event_type_code             VARCHAR2(30);
34977 l_line_definition_code        VARCHAR2(30);
34978 l_line_definition_owner_code  VARCHAR2(1);
34979 --
34980 -- adr variables
34981 l_segment                     VARCHAR2(30);
34982 l_ccid                        NUMBER;
34983 l_adr_transaction_coa_id      NUMBER;
34984 l_adr_accounting_coa_id       NUMBER;
34985 l_adr_flexfield_segment_code  VARCHAR2(30);
34986 l_adr_flex_value_set_id       NUMBER;
34987 l_adr_value_type_code         VARCHAR2(30);
34988 l_adr_value_combination_id    NUMBER;
34989 l_adr_value_segment_code      VARCHAR2(30);
34990 
34991 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
34992 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
34993 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
34994 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
34995 
34996 -- 4262811 Variables ------------------------------------------------------------------------------------------
34997 l_entered_amt_idx             NUMBER;
34998 l_accted_amt_idx              NUMBER;
34999 l_acc_rev_flag                VARCHAR2(1);
35000 l_accrual_line_num            NUMBER;
35001 l_tmp_amt                     NUMBER;
35002 l_acc_rev_natural_side_code   VARCHAR2(1);
35003 
35004 l_num_entries                 NUMBER;
35005 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
35006 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
35007 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
35008 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
35009 l_recog_line_1                NUMBER;
35010 l_recog_line_2                NUMBER;
35011 
35012 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
35013 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
35014 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
35015 
35016 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
35017 
35018 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
35019 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
35020 
35021 ---------------------------------------------------------------------------------------------------------------
35022 
35023 
35024 --
35025 -- bulk performance
35026 --
35027 l_balance_type_code           VARCHAR2(1);
35028 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
35029 l_log_module                  VARCHAR2(240);
35030 
35031 --
35032 -- Upgrade strategy
35033 --
35034 l_actual_upg_option           VARCHAR2(1);
35035 l_enc_upg_option           VARCHAR2(1);
35036 
35037 --
35038 BEGIN
35039 --
35040 IF g_log_enabled THEN
35041       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_66';
35042 END IF;
35043 --
35044 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35045 
35046       trace
35047          (p_msg      => 'BEGIN of AcctLineType_66'
35048          ,p_level    => C_LEVEL_PROCEDURE
35049          ,p_module   => l_log_module);
35050 
35051 END IF;
35052 --
35053 l_component_type             := 'AMB_JLT';
35054 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
35055 l_component_type_code        := 'S';
35056 l_component_appl_id          :=  707;
35057 l_amb_context_code           := 'DEFAULT';
35058 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
35059 l_event_class_code           := 'USER_DEFINE';
35060 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
35061 l_line_definition_owner_code := 'S';
35062 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
35063 --
35064 l_balance_type_code          := 'A';
35065 l_segment                     := NULL;
35066 l_ccid                        := NULL;
35067 l_adr_transaction_coa_id      := NULL;
35068 l_adr_accounting_coa_id       := NULL;
35069 l_adr_flexfield_segment_code  := NULL;
35070 l_adr_flex_value_set_id       := NULL;
35071 l_adr_value_type_code         := NULL;
35072 l_adr_value_combination_id    := NULL;
35073 l_adr_value_segment_code      := NULL;
35074 
35075 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
35076 l_bflow_class_code           := '';    -- 4219869 Business Flow
35077 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
35078 l_budgetary_control_flag     := 'N';
35079 
35080 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
35081 l_bflow_applied_to_amt       := NULL; -- 5132302
35082 l_entered_amt_idx            := NULL;          -- 4262811
35083 l_accted_amt_idx             := NULL;          -- 4262811
35084 l_acc_rev_flag               := NULL;          -- 4262811
35085 l_accrual_line_num           := NULL;          -- 4262811
35086 l_tmp_amt                    := NULL;          -- 4262811
35087 --
35088  
35089 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
35090     l_balance_type_code <> 'B' THEN
35091 IF NVL(p_source_24,9E125) =  12
35092  THEN 
35093 
35094    --
35095    XLA_AE_LINES_PKG.SetNewLine;
35096 
35097    p_balance_type_code          := l_balance_type_code;
35098    -- set the flag so later we will know whether the gain loss line needs to be created
35099    
35100    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
35101      p_actual_flag :='A';
35102    END IF;
35103 
35104    --
35105    -- bulk performance
35106    --
35107    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
35108                                       p_header_num   => 0); -- 4262811
35109    --
35110    -- set accounting line options
35111    --
35112    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
35113            p_natural_side_code          => 'D'
35114          , p_gain_or_loss_flag          => 'N'
35115          , p_gl_transfer_mode_code      => 'S'
35116          , p_acct_entry_type_code       => 'A'
35117          , p_switch_side_flag           => 'Y'
35118          , p_merge_duplicate_code       => 'N'
35119          );
35120    --
35121    l_acc_rev_natural_side_code := 'C';  -- 4262811
35122    -- 
35123    --
35124    -- set accounting line type info
35125    --
35126    xla_ae_lines_pkg.SetAcctLineType
35127       (p_component_type             => l_component_type
35128       ,p_event_type_code            => l_event_type_code
35129       ,p_line_definition_owner_code => l_line_definition_owner_code
35130       ,p_line_definition_code       => l_line_definition_code
35131       ,p_accounting_line_code       => l_component_code
35132       ,p_accounting_line_type_code  => l_component_type_code
35133       ,p_accounting_line_appl_id    => l_component_appl_id
35134       ,p_amb_context_code           => l_amb_context_code
35135       ,p_entity_code                => l_entity_code
35136       ,p_event_class_code           => l_event_class_code);
35137    --
35138    -- set accounting class
35139    --
35140    xla_ae_lines_pkg.SetAcctClass(
35141            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
35142          , p_ae_header_id           => l_ae_header_id
35143          );
35144 
35145    --
35146    -- set rounding class
35147    --
35148    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
35149                       'INTERORG_FREIGHT_CHARGE';
35150 
35151    --
35152    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
35153    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
35154    --
35155    -- bulk performance
35156    --
35157    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
35158 
35159    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
35160       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
35161 
35162    -- 4955764
35163    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35164       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
35165 
35166    -- 4458381 Public Sector Enh
35167    
35168    --
35169    -- set accounting attributes for the line type
35170    --
35171    l_entered_amt_idx := 3;
35172    l_accted_amt_idx  := 8;
35173    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
35174    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
35175    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
35176    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
35177    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
35178    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
35179    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
35180    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
35181    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
35182    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
35183    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
35184    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
35185    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
35186    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
35187    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
35188    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
35189    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
35190 
35191    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
35192    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
35193 
35194    ---------------------------------------------------------------------------------------------------------------
35195    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
35196    ---------------------------------------------------------------------------------------------------------------
35197    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
35198 
35199    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35200    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35201 
35202    IF xla_accounting_cache_pkg.GetValueChar
35203          (p_source_code         => 'LEDGER_CATEGORY_CODE'
35204          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
35205    AND l_bflow_method_code = 'PRIOR_ENTRY'
35206 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
35207    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
35208          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
35209        )
35210    THEN
35211          xla_ae_lines_pkg.BflowUpgEntry
35212            (p_business_method_code    => l_bflow_method_code
35213            ,p_business_class_code     => l_bflow_class_code
35214            ,p_balance_type            => l_balance_type_code);
35215    ELSE
35216       NULL;
35217 -- No business flow processing for business flow method of NONE.
35218    END IF;
35219 
35220    --
35221    -- call analytical criteria
35222    --
35223    
35224    --
35225    -- call description
35226    --
35227    -- No description or it is inherited.
35228    --
35229    -- call ADRs
35230    -- Bug 4922099
35231    --
35232    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35233         (NVL(l_actual_upg_option, 'N') = 'O') OR
35234         (NVL(l_enc_upg_option, 'N') = 'O')
35235       )
35236    THEN
35237    NULL;
35238    --
35239    --
35240    
35241   l_ccid := AcctDerRule_4(
35242            p_application_id           => p_application_id
35243          , p_ae_header_id             => l_ae_header_id 
35244 , p_source_4 => p_source_4
35245          , x_transaction_coa_id       => l_adr_transaction_coa_id
35246          , x_accounting_coa_id        => l_adr_accounting_coa_id
35247          , x_value_type_code          => l_adr_value_type_code
35248          , p_side                     => 'NA'
35249    );
35250 
35251    xla_ae_lines_pkg.set_ccid(
35252     p_code_combination_id          => l_ccid
35253   , p_value_type_code              => l_adr_value_type_code
35254   , p_transaction_coa_id           => l_adr_transaction_coa_id
35255   , p_accounting_coa_id            => l_adr_accounting_coa_id
35256   , p_adr_code                     => 'CST_DEFAULT'
35257   , p_adr_type_code                => 'S'
35258   , p_component_type               => l_component_type
35259   , p_component_code               => l_component_code
35260   , p_component_type_code          => l_component_type_code
35261   , p_component_appl_id            => l_component_appl_id
35262   , p_amb_context_code             => l_amb_context_code
35263   , p_side                         => 'NA'
35264   );
35265 
35266 
35267    --
35268    --
35269    END IF;
35270    --
35271    -- Bug 4922099
35272    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
35273           (NVL(l_enc_upg_option, 'N') = 'O')
35274         ) AND
35275         (l_bflow_method_code = 'PRIOR_ENTRY')
35276       )
35277    THEN
35278       IF
35279       --
35280       1 = 2
35281       --
35282       THEN
35283       xla_accounting_err_pkg.build_message
35284                                     (p_appli_s_name            => 'XLA'
35285                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35286                                     ,p_token_1                 => 'LINE_NUMBER'
35287                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
35288                                     ,p_token_2                 => 'LINE_TYPE_NAME'
35289                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
35290                                                                              l_component_type
35291                                                                             ,l_component_code
35292                                                                             ,l_component_type_code
35293                                                                             ,l_component_appl_id
35294                                                                             ,l_amb_context_code
35295                                                                             ,l_entity_code
35296                                                                             ,l_event_class_code
35297                                                                            )
35298                                     ,p_token_3                 => 'OWNER'
35299                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
35300                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
35301                                                                           ,p_lookup_code    => l_component_type_code
35302                                                                          )
35303                                     ,p_token_4                 => 'PRODUCT_NAME'
35304                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
35305                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
35306                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
35307                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
35308                                     ,p_ae_header_id            =>  NULL
35309                                        );
35310 
35311         IF (C_LEVEL_ERROR>= g_log_level) THEN
35312                  trace
35313                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35314                       ,p_level    => C_LEVEL_ERROR
35315                       ,p_module   => l_log_module);
35316         END IF;
35317       END IF;
35318    END IF;
35319    --
35320    --
35321    ------------------------------------------------------------------------------------------------
35322    -- 4219869 Business Flow
35323    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
35324    -- Prior Entry.  Currently, the following code is always generated.
35325    ------------------------------------------------------------------------------------------------
35326    XLA_AE_LINES_PKG.ValidateCurrentLine;
35327 
35328    ------------------------------------------------------------------------------------
35329    -- 4219869 Business Flow
35330    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
35331    ------------------------------------------------------------------------------------
35332    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35333 
35334    ----------------------------------------------------------------------------------
35335    -- 4219869 Business Flow
35336    -- Update journal entry status -- Need to generate this within IF <condition>
35337    ----------------------------------------------------------------------------------
35338    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35339          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
35340          ,p_balance_type_code => l_balance_type_code
35341          );
35342 
35343    -------------------------------------------------------------------------------------------
35344    -- 4262811 - Generate the Accrual Reversal lines
35345    -------------------------------------------------------------------------------------------
35346    BEGIN
35347       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
35348                               (g_array_event(p_event_id).array_value_num('header_index'));
35349       IF l_acc_rev_flag IS NULL THEN
35350          l_acc_rev_flag := 'N';
35351       END IF;
35352    EXCEPTION
35353       WHEN OTHERS THEN
35354          l_acc_rev_flag := 'N';
35355    END;
35356    --
35357    IF (l_acc_rev_flag = 'Y') THEN
35358 
35359        -- 4645092  ------------------------------------------------------------------------------
35360        -- To allow MPA report to determine if it should generate report process
35361        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
35362        ------------------------------------------------------------------------------------------
35363 
35364        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
35365        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
35366    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
35367    -- call ADRs
35368    -- Bug 4922099
35369    --
35370    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35371         (NVL(l_actual_upg_option, 'N') = 'O') OR
35372         (NVL(l_enc_upg_option, 'N') = 'O')
35373       )
35374    THEN
35375    NULL;
35376    --
35377    --
35378    
35379   l_ccid := AcctDerRule_4(
35380            p_application_id           => p_application_id
35381          , p_ae_header_id             => l_ae_header_id 
35382 , p_source_4 => p_source_4
35383          , x_transaction_coa_id       => l_adr_transaction_coa_id
35384          , x_accounting_coa_id        => l_adr_accounting_coa_id
35385          , x_value_type_code          => l_adr_value_type_code
35386          , p_side                     => 'NA'
35387    );
35388 
35389    xla_ae_lines_pkg.set_ccid(
35390     p_code_combination_id          => l_ccid
35391   , p_value_type_code              => l_adr_value_type_code
35392   , p_transaction_coa_id           => l_adr_transaction_coa_id
35393   , p_accounting_coa_id            => l_adr_accounting_coa_id
35394   , p_adr_code                     => 'CST_DEFAULT'
35395   , p_adr_type_code                => 'S'
35396   , p_component_type               => l_component_type
35397   , p_component_code               => l_component_code
35398   , p_component_type_code          => l_component_type_code
35399   , p_component_appl_id            => l_component_appl_id
35400   , p_amb_context_code             => l_amb_context_code
35401   , p_side                         => 'NA'
35402   );
35403 
35404 
35405    --
35406    --
35407    END IF;
35408 
35409        --
35410        -- Update the line information that should be overwritten
35411        --
35412        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
35413                                          p_header_num   => 1);
35414        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
35415 
35416        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
35417 
35418        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
35419           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
35420        END IF;
35421 
35422       --
35423       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
35424       --
35425       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
35426           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
35427       ELSE
35428           ---------------------------------------------------------------------------------------------------
35429           -- 4262811a Switch Sign
35430           ---------------------------------------------------------------------------------------------------
35431           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
35432           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35433                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35434           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35435                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35436           -- 5132302
35437           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
35438                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35439 
35440       END IF;
35441 
35442       -- 4955764
35443       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35444       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
35445 
35446 
35447       XLA_AE_LINES_PKG.ValidateCurrentLine;
35448       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35449 
35450       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35451                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
35452                ,p_balance_type_code => l_balance_type_code);
35453 
35454    END IF;
35455 
35456    -----------------------------------------------------------------------------------------
35457    -- 4262811 Multiperiod Accounting
35458    -----------------------------------------------------------------------------------------
35459      -- No MPA option is assigned.
35460 
35461 
35462 END IF;
35463 END IF;
35464 --
35465 
35466 --
35467 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35468    trace
35469       (p_msg      => 'END of AcctLineType_66'
35470       ,p_level    => C_LEVEL_PROCEDURE
35471       ,p_module   => l_log_module);
35472 END IF;
35473 --
35474 EXCEPTION
35475   WHEN xla_exceptions_pkg.application_exception THEN
35476       RAISE;
35477   WHEN OTHERS THEN
35478        xla_exceptions_pkg.raise_message
35479            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_66');
35480 END AcctLineType_66;
35481 --
35482 
35483 ---------------------------------------
35484 --
35485 -- PRIVATE FUNCTION
35486 --         AcctLineType_67
35487 --
35488 ---------------------------------------
35489 PROCEDURE AcctLineType_67 (
35490   p_application_id        IN NUMBER
35491  ,p_event_id              IN NUMBER
35492  ,p_calculate_acctd_flag  IN VARCHAR2
35493  ,p_calculate_g_l_flag    IN VARCHAR2
35494  ,p_actual_flag           IN OUT VARCHAR2
35495  ,p_balance_type_code     OUT VARCHAR2
35496  ,p_gain_or_loss_ref      OUT VARCHAR2
35497  
35498 --Cost Management Default Account
35499  , p_source_4            IN NUMBER
35500 --DISTRIBUTION_IDENTIFIER
35501  , p_source_11            IN NUMBER
35502 --Distribution Type
35503  , p_source_12            IN VARCHAR2
35504  , p_source_12_meaning    IN VARCHAR2
35505 --Entered Currency Code
35506  , p_source_15            IN VARCHAR2
35507 --Entered Amount
35508  , p_source_18            IN NUMBER
35509 --Currency Conversion Date
35510  , p_source_19            IN DATE
35511 --Currency Conversion Rate
35512  , p_source_20            IN NUMBER
35513 --Currency Conversion Type
35514  , p_source_21            IN VARCHAR2
35515 --Accounted Amount
35516  , p_source_22            IN NUMBER
35517 --Accounting Line Type
35518  , p_source_24            IN NUMBER
35519 )
35520 IS
35521 
35522 l_component_type              VARCHAR2(80);
35523 l_component_code              VARCHAR2(30);
35524 l_component_type_code         VARCHAR2(1);
35525 l_component_appl_id           INTEGER;
35526 l_amb_context_code            VARCHAR2(30);
35527 l_entity_code                 VARCHAR2(30);
35528 l_event_class_code            VARCHAR2(30);
35529 l_ae_header_id                NUMBER;
35530 l_event_type_code             VARCHAR2(30);
35531 l_line_definition_code        VARCHAR2(30);
35532 l_line_definition_owner_code  VARCHAR2(1);
35533 --
35534 -- adr variables
35535 l_segment                     VARCHAR2(30);
35536 l_ccid                        NUMBER;
35537 l_adr_transaction_coa_id      NUMBER;
35538 l_adr_accounting_coa_id       NUMBER;
35539 l_adr_flexfield_segment_code  VARCHAR2(30);
35540 l_adr_flex_value_set_id       NUMBER;
35541 l_adr_value_type_code         VARCHAR2(30);
35542 l_adr_value_combination_id    NUMBER;
35543 l_adr_value_segment_code      VARCHAR2(30);
35544 
35545 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
35546 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
35547 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
35548 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
35549 
35550 -- 4262811 Variables ------------------------------------------------------------------------------------------
35551 l_entered_amt_idx             NUMBER;
35552 l_accted_amt_idx              NUMBER;
35553 l_acc_rev_flag                VARCHAR2(1);
35554 l_accrual_line_num            NUMBER;
35555 l_tmp_amt                     NUMBER;
35556 l_acc_rev_natural_side_code   VARCHAR2(1);
35557 
35558 l_num_entries                 NUMBER;
35559 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
35560 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
35561 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
35562 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
35563 l_recog_line_1                NUMBER;
35564 l_recog_line_2                NUMBER;
35565 
35566 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
35567 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
35568 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
35569 
35570 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
35571 
35572 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
35573 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
35574 
35575 ---------------------------------------------------------------------------------------------------------------
35576 
35577 
35578 --
35579 -- bulk performance
35580 --
35581 l_balance_type_code           VARCHAR2(1);
35582 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
35583 l_log_module                  VARCHAR2(240);
35584 
35585 --
35586 -- Upgrade strategy
35587 --
35588 l_actual_upg_option           VARCHAR2(1);
35589 l_enc_upg_option           VARCHAR2(1);
35590 
35591 --
35592 BEGIN
35593 --
35594 IF g_log_enabled THEN
35595       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_67';
35596 END IF;
35597 --
35598 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35599 
35600       trace
35601          (p_msg      => 'BEGIN of AcctLineType_67'
35602          ,p_level    => C_LEVEL_PROCEDURE
35603          ,p_module   => l_log_module);
35604 
35605 END IF;
35606 --
35607 l_component_type             := 'AMB_JLT';
35608 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
35609 l_component_type_code        := 'S';
35610 l_component_appl_id          :=  707;
35611 l_amb_context_code           := 'DEFAULT';
35612 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
35613 l_event_class_code           := 'USER_DEFINE';
35614 l_event_type_code            := 'UDIR_INTERORG_RCPT_NO_TP';
35615 l_line_definition_owner_code := 'S';
35616 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_NO_TP';
35617 --
35618 l_balance_type_code          := 'A';
35619 l_segment                     := NULL;
35620 l_ccid                        := NULL;
35621 l_adr_transaction_coa_id      := NULL;
35622 l_adr_accounting_coa_id       := NULL;
35623 l_adr_flexfield_segment_code  := NULL;
35624 l_adr_flex_value_set_id       := NULL;
35625 l_adr_value_type_code         := NULL;
35626 l_adr_value_combination_id    := NULL;
35627 l_adr_value_segment_code      := NULL;
35628 
35629 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
35630 l_bflow_class_code           := '';    -- 4219869 Business Flow
35631 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
35632 l_budgetary_control_flag     := 'N';
35633 
35634 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
35635 l_bflow_applied_to_amt       := NULL; -- 5132302
35636 l_entered_amt_idx            := NULL;          -- 4262811
35637 l_accted_amt_idx             := NULL;          -- 4262811
35638 l_acc_rev_flag               := NULL;          -- 4262811
35639 l_accrual_line_num           := NULL;          -- 4262811
35640 l_tmp_amt                    := NULL;          -- 4262811
35641 --
35642  
35643 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
35644     l_balance_type_code <> 'B' THEN
35645 IF NVL(p_source_24,9E125) =  12
35646  THEN 
35647 
35648    --
35649    XLA_AE_LINES_PKG.SetNewLine;
35650 
35651    p_balance_type_code          := l_balance_type_code;
35652    -- set the flag so later we will know whether the gain loss line needs to be created
35653    
35654    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
35655      p_actual_flag :='A';
35656    END IF;
35657 
35658    --
35659    -- bulk performance
35660    --
35661    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
35662                                       p_header_num   => 0); -- 4262811
35663    --
35664    -- set accounting line options
35665    --
35666    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
35667            p_natural_side_code          => 'D'
35668          , p_gain_or_loss_flag          => 'N'
35669          , p_gl_transfer_mode_code      => 'S'
35670          , p_acct_entry_type_code       => 'A'
35671          , p_switch_side_flag           => 'Y'
35672          , p_merge_duplicate_code       => 'N'
35673          );
35674    --
35675    l_acc_rev_natural_side_code := 'C';  -- 4262811
35676    -- 
35677    --
35678    -- set accounting line type info
35679    --
35680    xla_ae_lines_pkg.SetAcctLineType
35681       (p_component_type             => l_component_type
35682       ,p_event_type_code            => l_event_type_code
35683       ,p_line_definition_owner_code => l_line_definition_owner_code
35684       ,p_line_definition_code       => l_line_definition_code
35685       ,p_accounting_line_code       => l_component_code
35686       ,p_accounting_line_type_code  => l_component_type_code
35687       ,p_accounting_line_appl_id    => l_component_appl_id
35688       ,p_amb_context_code           => l_amb_context_code
35689       ,p_entity_code                => l_entity_code
35690       ,p_event_class_code           => l_event_class_code);
35691    --
35692    -- set accounting class
35693    --
35694    xla_ae_lines_pkg.SetAcctClass(
35695            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
35696          , p_ae_header_id           => l_ae_header_id
35697          );
35698 
35699    --
35700    -- set rounding class
35701    --
35702    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
35703                       'INTERORG_FREIGHT_CHARGE';
35704 
35705    --
35706    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
35707    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
35708    --
35709    -- bulk performance
35710    --
35711    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
35712 
35713    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
35714       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
35715 
35716    -- 4955764
35717    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35718       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
35719 
35720    -- 4458381 Public Sector Enh
35721    
35722    --
35723    -- set accounting attributes for the line type
35724    --
35725    l_entered_amt_idx := 3;
35726    l_accted_amt_idx  := 8;
35727    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
35728    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
35729    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
35730    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
35731    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
35732    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
35733    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
35734    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
35735    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
35736    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
35737    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
35738    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
35739    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
35740    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
35741    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
35742    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
35743    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
35744 
35745    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
35746    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
35747 
35748    ---------------------------------------------------------------------------------------------------------------
35749    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
35750    ---------------------------------------------------------------------------------------------------------------
35751    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
35752 
35753    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35754    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35755 
35756    IF xla_accounting_cache_pkg.GetValueChar
35757          (p_source_code         => 'LEDGER_CATEGORY_CODE'
35758          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
35759    AND l_bflow_method_code = 'PRIOR_ENTRY'
35760 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
35761    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
35762          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
35763        )
35764    THEN
35765          xla_ae_lines_pkg.BflowUpgEntry
35766            (p_business_method_code    => l_bflow_method_code
35767            ,p_business_class_code     => l_bflow_class_code
35768            ,p_balance_type            => l_balance_type_code);
35769    ELSE
35770       NULL;
35771 -- No business flow processing for business flow method of NONE.
35772    END IF;
35773 
35774    --
35775    -- call analytical criteria
35776    --
35777    
35778    --
35779    -- call description
35780    --
35781    -- No description or it is inherited.
35782    --
35783    -- call ADRs
35784    -- Bug 4922099
35785    --
35786    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35787         (NVL(l_actual_upg_option, 'N') = 'O') OR
35788         (NVL(l_enc_upg_option, 'N') = 'O')
35789       )
35790    THEN
35791    NULL;
35792    --
35793    --
35794    
35795   l_ccid := AcctDerRule_4(
35796            p_application_id           => p_application_id
35797          , p_ae_header_id             => l_ae_header_id 
35798 , p_source_4 => p_source_4
35799          , x_transaction_coa_id       => l_adr_transaction_coa_id
35800          , x_accounting_coa_id        => l_adr_accounting_coa_id
35801          , x_value_type_code          => l_adr_value_type_code
35802          , p_side                     => 'NA'
35803    );
35804 
35805    xla_ae_lines_pkg.set_ccid(
35806     p_code_combination_id          => l_ccid
35807   , p_value_type_code              => l_adr_value_type_code
35808   , p_transaction_coa_id           => l_adr_transaction_coa_id
35809   , p_accounting_coa_id            => l_adr_accounting_coa_id
35810   , p_adr_code                     => 'CST_DEFAULT'
35811   , p_adr_type_code                => 'S'
35812   , p_component_type               => l_component_type
35813   , p_component_code               => l_component_code
35814   , p_component_type_code          => l_component_type_code
35815   , p_component_appl_id            => l_component_appl_id
35816   , p_amb_context_code             => l_amb_context_code
35817   , p_side                         => 'NA'
35818   );
35819 
35820 
35821    --
35822    --
35823    END IF;
35824    --
35825    -- Bug 4922099
35826    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
35827           (NVL(l_enc_upg_option, 'N') = 'O')
35828         ) AND
35829         (l_bflow_method_code = 'PRIOR_ENTRY')
35830       )
35831    THEN
35832       IF
35833       --
35834       1 = 2
35835       --
35836       THEN
35837       xla_accounting_err_pkg.build_message
35838                                     (p_appli_s_name            => 'XLA'
35839                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35840                                     ,p_token_1                 => 'LINE_NUMBER'
35841                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
35842                                     ,p_token_2                 => 'LINE_TYPE_NAME'
35843                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
35844                                                                              l_component_type
35845                                                                             ,l_component_code
35846                                                                             ,l_component_type_code
35847                                                                             ,l_component_appl_id
35848                                                                             ,l_amb_context_code
35849                                                                             ,l_entity_code
35850                                                                             ,l_event_class_code
35851                                                                            )
35852                                     ,p_token_3                 => 'OWNER'
35853                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
35854                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
35855                                                                           ,p_lookup_code    => l_component_type_code
35856                                                                          )
35857                                     ,p_token_4                 => 'PRODUCT_NAME'
35858                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
35859                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
35860                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
35861                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
35862                                     ,p_ae_header_id            =>  NULL
35863                                        );
35864 
35865         IF (C_LEVEL_ERROR>= g_log_level) THEN
35866                  trace
35867                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35868                       ,p_level    => C_LEVEL_ERROR
35869                       ,p_module   => l_log_module);
35870         END IF;
35871       END IF;
35872    END IF;
35873    --
35874    --
35875    ------------------------------------------------------------------------------------------------
35876    -- 4219869 Business Flow
35877    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
35878    -- Prior Entry.  Currently, the following code is always generated.
35879    ------------------------------------------------------------------------------------------------
35880    XLA_AE_LINES_PKG.ValidateCurrentLine;
35881 
35882    ------------------------------------------------------------------------------------
35883    -- 4219869 Business Flow
35884    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
35885    ------------------------------------------------------------------------------------
35886    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35887 
35888    ----------------------------------------------------------------------------------
35889    -- 4219869 Business Flow
35890    -- Update journal entry status -- Need to generate this within IF <condition>
35891    ----------------------------------------------------------------------------------
35892    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35893          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
35894          ,p_balance_type_code => l_balance_type_code
35895          );
35896 
35897    -------------------------------------------------------------------------------------------
35898    -- 4262811 - Generate the Accrual Reversal lines
35899    -------------------------------------------------------------------------------------------
35900    BEGIN
35901       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
35902                               (g_array_event(p_event_id).array_value_num('header_index'));
35903       IF l_acc_rev_flag IS NULL THEN
35904          l_acc_rev_flag := 'N';
35905       END IF;
35906    EXCEPTION
35907       WHEN OTHERS THEN
35908          l_acc_rev_flag := 'N';
35909    END;
35910    --
35911    IF (l_acc_rev_flag = 'Y') THEN
35912 
35913        -- 4645092  ------------------------------------------------------------------------------
35914        -- To allow MPA report to determine if it should generate report process
35915        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
35916        ------------------------------------------------------------------------------------------
35917 
35918        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
35919        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
35920    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
35921    -- call ADRs
35922    -- Bug 4922099
35923    --
35924    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35925         (NVL(l_actual_upg_option, 'N') = 'O') OR
35926         (NVL(l_enc_upg_option, 'N') = 'O')
35927       )
35928    THEN
35929    NULL;
35930    --
35931    --
35932    
35933   l_ccid := AcctDerRule_4(
35934            p_application_id           => p_application_id
35935          , p_ae_header_id             => l_ae_header_id 
35936 , p_source_4 => p_source_4
35937          , x_transaction_coa_id       => l_adr_transaction_coa_id
35938          , x_accounting_coa_id        => l_adr_accounting_coa_id
35939          , x_value_type_code          => l_adr_value_type_code
35940          , p_side                     => 'NA'
35941    );
35942 
35943    xla_ae_lines_pkg.set_ccid(
35944     p_code_combination_id          => l_ccid
35945   , p_value_type_code              => l_adr_value_type_code
35946   , p_transaction_coa_id           => l_adr_transaction_coa_id
35947   , p_accounting_coa_id            => l_adr_accounting_coa_id
35948   , p_adr_code                     => 'CST_DEFAULT'
35949   , p_adr_type_code                => 'S'
35950   , p_component_type               => l_component_type
35951   , p_component_code               => l_component_code
35952   , p_component_type_code          => l_component_type_code
35953   , p_component_appl_id            => l_component_appl_id
35954   , p_amb_context_code             => l_amb_context_code
35955   , p_side                         => 'NA'
35956   );
35957 
35958 
35959    --
35960    --
35961    END IF;
35962 
35963        --
35964        -- Update the line information that should be overwritten
35965        --
35966        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
35967                                          p_header_num   => 1);
35968        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
35969 
35970        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
35971 
35972        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
35973           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
35974        END IF;
35975 
35976       --
35977       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
35978       --
35979       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
35980           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
35981       ELSE
35982           ---------------------------------------------------------------------------------------------------
35983           -- 4262811a Switch Sign
35984           ---------------------------------------------------------------------------------------------------
35985           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
35986           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35987                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35988           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35989                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35990           -- 5132302
35991           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
35992                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35993 
35994       END IF;
35995 
35996       -- 4955764
35997       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35998       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
35999 
36000 
36001       XLA_AE_LINES_PKG.ValidateCurrentLine;
36002       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36003 
36004       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36005                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
36006                ,p_balance_type_code => l_balance_type_code);
36007 
36008    END IF;
36009 
36010    -----------------------------------------------------------------------------------------
36011    -- 4262811 Multiperiod Accounting
36012    -----------------------------------------------------------------------------------------
36013      -- No MPA option is assigned.
36014 
36015 
36016 END IF;
36017 END IF;
36018 --
36019 
36020 --
36021 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36022    trace
36023       (p_msg      => 'END of AcctLineType_67'
36024       ,p_level    => C_LEVEL_PROCEDURE
36025       ,p_module   => l_log_module);
36026 END IF;
36027 --
36028 EXCEPTION
36029   WHEN xla_exceptions_pkg.application_exception THEN
36030       RAISE;
36031   WHEN OTHERS THEN
36032        xla_exceptions_pkg.raise_message
36033            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_67');
36034 END AcctLineType_67;
36035 --
36036 
36037 ---------------------------------------
36038 --
36039 -- PRIVATE FUNCTION
36040 --         AcctLineType_68
36041 --
36042 ---------------------------------------
36043 PROCEDURE AcctLineType_68 (
36044   p_application_id        IN NUMBER
36045  ,p_event_id              IN NUMBER
36046  ,p_calculate_acctd_flag  IN VARCHAR2
36047  ,p_calculate_g_l_flag    IN VARCHAR2
36048  ,p_actual_flag           IN OUT VARCHAR2
36049  ,p_balance_type_code     OUT VARCHAR2
36050  ,p_gain_or_loss_ref      OUT VARCHAR2
36051  
36052 --Cost Management Default Account
36053  , p_source_4            IN NUMBER
36054 --DISTRIBUTION_IDENTIFIER
36055  , p_source_11            IN NUMBER
36056 --Distribution Type
36057  , p_source_12            IN VARCHAR2
36058  , p_source_12_meaning    IN VARCHAR2
36059 --Entered Currency Code
36060  , p_source_15            IN VARCHAR2
36061 --Entered Amount
36062  , p_source_18            IN NUMBER
36063 --Currency Conversion Date
36064  , p_source_19            IN DATE
36065 --Currency Conversion Rate
36066  , p_source_20            IN NUMBER
36067 --Currency Conversion Type
36068  , p_source_21            IN VARCHAR2
36069 --Accounted Amount
36070  , p_source_22            IN NUMBER
36071 --Accounting Line Type
36072  , p_source_24            IN NUMBER
36073 )
36074 IS
36075 
36076 l_component_type              VARCHAR2(80);
36077 l_component_code              VARCHAR2(30);
36078 l_component_type_code         VARCHAR2(1);
36079 l_component_appl_id           INTEGER;
36080 l_amb_context_code            VARCHAR2(30);
36081 l_entity_code                 VARCHAR2(30);
36082 l_event_class_code            VARCHAR2(30);
36083 l_ae_header_id                NUMBER;
36084 l_event_type_code             VARCHAR2(30);
36085 l_line_definition_code        VARCHAR2(30);
36086 l_line_definition_owner_code  VARCHAR2(1);
36087 --
36088 -- adr variables
36089 l_segment                     VARCHAR2(30);
36090 l_ccid                        NUMBER;
36091 l_adr_transaction_coa_id      NUMBER;
36092 l_adr_accounting_coa_id       NUMBER;
36093 l_adr_flexfield_segment_code  VARCHAR2(30);
36094 l_adr_flex_value_set_id       NUMBER;
36095 l_adr_value_type_code         VARCHAR2(30);
36096 l_adr_value_combination_id    NUMBER;
36097 l_adr_value_segment_code      VARCHAR2(30);
36098 
36099 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
36100 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
36101 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
36102 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
36103 
36104 -- 4262811 Variables ------------------------------------------------------------------------------------------
36105 l_entered_amt_idx             NUMBER;
36106 l_accted_amt_idx              NUMBER;
36107 l_acc_rev_flag                VARCHAR2(1);
36108 l_accrual_line_num            NUMBER;
36109 l_tmp_amt                     NUMBER;
36110 l_acc_rev_natural_side_code   VARCHAR2(1);
36111 
36112 l_num_entries                 NUMBER;
36113 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
36114 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
36115 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
36116 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
36117 l_recog_line_1                NUMBER;
36118 l_recog_line_2                NUMBER;
36119 
36120 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
36121 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
36122 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
36123 
36124 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
36125 
36126 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
36127 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
36128 
36129 ---------------------------------------------------------------------------------------------------------------
36130 
36131 
36132 --
36133 -- bulk performance
36134 --
36135 l_balance_type_code           VARCHAR2(1);
36136 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
36137 l_log_module                  VARCHAR2(240);
36138 
36139 --
36140 -- Upgrade strategy
36141 --
36142 l_actual_upg_option           VARCHAR2(1);
36143 l_enc_upg_option           VARCHAR2(1);
36144 
36145 --
36146 BEGIN
36147 --
36148 IF g_log_enabled THEN
36149       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_68';
36150 END IF;
36151 --
36152 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36153 
36154       trace
36155          (p_msg      => 'BEGIN of AcctLineType_68'
36156          ,p_level    => C_LEVEL_PROCEDURE
36157          ,p_module   => l_log_module);
36158 
36159 END IF;
36160 --
36161 l_component_type             := 'AMB_JLT';
36162 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
36163 l_component_type_code        := 'S';
36164 l_component_appl_id          :=  707;
36165 l_amb_context_code           := 'DEFAULT';
36166 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
36167 l_event_class_code           := 'DIR_INTERORG_SHIP';
36168 l_event_type_code            := 'DIR_INTERORG_SHIP_ALL';
36169 l_line_definition_owner_code := 'S';
36170 l_line_definition_code       := 'DIRECT_INTERORG_SHIP';
36171 --
36172 l_balance_type_code          := 'A';
36173 l_segment                     := NULL;
36174 l_ccid                        := NULL;
36175 l_adr_transaction_coa_id      := NULL;
36176 l_adr_accounting_coa_id       := NULL;
36177 l_adr_flexfield_segment_code  := NULL;
36178 l_adr_flex_value_set_id       := NULL;
36179 l_adr_value_type_code         := NULL;
36180 l_adr_value_combination_id    := NULL;
36181 l_adr_value_segment_code      := NULL;
36182 
36183 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
36184 l_bflow_class_code           := '';    -- 4219869 Business Flow
36185 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
36186 l_budgetary_control_flag     := 'N';
36187 
36188 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
36189 l_bflow_applied_to_amt       := NULL; -- 5132302
36190 l_entered_amt_idx            := NULL;          -- 4262811
36191 l_accted_amt_idx             := NULL;          -- 4262811
36192 l_acc_rev_flag               := NULL;          -- 4262811
36193 l_accrual_line_num           := NULL;          -- 4262811
36194 l_tmp_amt                    := NULL;          -- 4262811
36195 --
36196  
36197 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
36198     l_balance_type_code <> 'B' THEN
36199 IF NVL(p_source_24,9E125) =  12
36200  THEN 
36201 
36202    --
36203    XLA_AE_LINES_PKG.SetNewLine;
36204 
36205    p_balance_type_code          := l_balance_type_code;
36206    -- set the flag so later we will know whether the gain loss line needs to be created
36207    
36208    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
36209      p_actual_flag :='A';
36210    END IF;
36211 
36212    --
36213    -- bulk performance
36214    --
36215    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
36216                                       p_header_num   => 0); -- 4262811
36217    --
36218    -- set accounting line options
36219    --
36220    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
36221            p_natural_side_code          => 'D'
36222          , p_gain_or_loss_flag          => 'N'
36223          , p_gl_transfer_mode_code      => 'S'
36224          , p_acct_entry_type_code       => 'A'
36225          , p_switch_side_flag           => 'Y'
36226          , p_merge_duplicate_code       => 'N'
36227          );
36228    --
36229    l_acc_rev_natural_side_code := 'C';  -- 4262811
36230    -- 
36231    --
36232    -- set accounting line type info
36233    --
36234    xla_ae_lines_pkg.SetAcctLineType
36235       (p_component_type             => l_component_type
36236       ,p_event_type_code            => l_event_type_code
36237       ,p_line_definition_owner_code => l_line_definition_owner_code
36238       ,p_line_definition_code       => l_line_definition_code
36239       ,p_accounting_line_code       => l_component_code
36240       ,p_accounting_line_type_code  => l_component_type_code
36241       ,p_accounting_line_appl_id    => l_component_appl_id
36242       ,p_amb_context_code           => l_amb_context_code
36243       ,p_entity_code                => l_entity_code
36244       ,p_event_class_code           => l_event_class_code);
36245    --
36246    -- set accounting class
36247    --
36248    xla_ae_lines_pkg.SetAcctClass(
36249            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
36250          , p_ae_header_id           => l_ae_header_id
36251          );
36252 
36253    --
36254    -- set rounding class
36255    --
36256    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
36257                       'INTERORG_FREIGHT_CHARGE';
36258 
36259    --
36260    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
36261    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
36262    --
36263    -- bulk performance
36264    --
36265    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
36266 
36267    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
36268       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
36269 
36270    -- 4955764
36271    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36272       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
36273 
36274    -- 4458381 Public Sector Enh
36275    
36276    --
36277    -- set accounting attributes for the line type
36278    --
36279    l_entered_amt_idx := 3;
36280    l_accted_amt_idx  := 8;
36281    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
36282    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
36283    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
36284    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
36285    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
36286    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
36287    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
36288    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
36289    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
36290    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
36291    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
36292    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
36293    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
36294    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
36295    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
36296    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
36297    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
36298 
36299    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
36300    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
36301 
36302    ---------------------------------------------------------------------------------------------------------------
36303    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
36304    ---------------------------------------------------------------------------------------------------------------
36305    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
36306 
36307    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36308    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36309 
36310    IF xla_accounting_cache_pkg.GetValueChar
36311          (p_source_code         => 'LEDGER_CATEGORY_CODE'
36312          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
36313    AND l_bflow_method_code = 'PRIOR_ENTRY'
36314 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
36315    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
36316          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
36317        )
36318    THEN
36319          xla_ae_lines_pkg.BflowUpgEntry
36320            (p_business_method_code    => l_bflow_method_code
36321            ,p_business_class_code     => l_bflow_class_code
36322            ,p_balance_type            => l_balance_type_code);
36323    ELSE
36324       NULL;
36325 -- No business flow processing for business flow method of NONE.
36326    END IF;
36327 
36328    --
36329    -- call analytical criteria
36330    --
36331    
36332    --
36333    -- call description
36334    --
36335    -- No description or it is inherited.
36336    --
36337    -- call ADRs
36338    -- Bug 4922099
36339    --
36340    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36341         (NVL(l_actual_upg_option, 'N') = 'O') OR
36342         (NVL(l_enc_upg_option, 'N') = 'O')
36343       )
36344    THEN
36345    NULL;
36346    --
36347    --
36348    
36349   l_ccid := AcctDerRule_4(
36350            p_application_id           => p_application_id
36351          , p_ae_header_id             => l_ae_header_id 
36352 , p_source_4 => p_source_4
36353          , x_transaction_coa_id       => l_adr_transaction_coa_id
36354          , x_accounting_coa_id        => l_adr_accounting_coa_id
36355          , x_value_type_code          => l_adr_value_type_code
36356          , p_side                     => 'NA'
36357    );
36358 
36359    xla_ae_lines_pkg.set_ccid(
36360     p_code_combination_id          => l_ccid
36361   , p_value_type_code              => l_adr_value_type_code
36362   , p_transaction_coa_id           => l_adr_transaction_coa_id
36363   , p_accounting_coa_id            => l_adr_accounting_coa_id
36364   , p_adr_code                     => 'CST_DEFAULT'
36365   , p_adr_type_code                => 'S'
36366   , p_component_type               => l_component_type
36367   , p_component_code               => l_component_code
36368   , p_component_type_code          => l_component_type_code
36369   , p_component_appl_id            => l_component_appl_id
36370   , p_amb_context_code             => l_amb_context_code
36371   , p_side                         => 'NA'
36372   );
36373 
36374 
36375    --
36376    --
36377    END IF;
36378    --
36379    -- Bug 4922099
36380    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
36381           (NVL(l_enc_upg_option, 'N') = 'O')
36382         ) AND
36383         (l_bflow_method_code = 'PRIOR_ENTRY')
36384       )
36385    THEN
36386       IF
36387       --
36388       1 = 2
36389       --
36390       THEN
36391       xla_accounting_err_pkg.build_message
36392                                     (p_appli_s_name            => 'XLA'
36393                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36394                                     ,p_token_1                 => 'LINE_NUMBER'
36395                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
36396                                     ,p_token_2                 => 'LINE_TYPE_NAME'
36397                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
36398                                                                              l_component_type
36399                                                                             ,l_component_code
36400                                                                             ,l_component_type_code
36401                                                                             ,l_component_appl_id
36402                                                                             ,l_amb_context_code
36403                                                                             ,l_entity_code
36404                                                                             ,l_event_class_code
36405                                                                            )
36406                                     ,p_token_3                 => 'OWNER'
36407                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
36408                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
36409                                                                           ,p_lookup_code    => l_component_type_code
36410                                                                          )
36411                                     ,p_token_4                 => 'PRODUCT_NAME'
36412                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
36413                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
36414                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
36415                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
36416                                     ,p_ae_header_id            =>  NULL
36417                                        );
36418 
36419         IF (C_LEVEL_ERROR>= g_log_level) THEN
36420                  trace
36421                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36422                       ,p_level    => C_LEVEL_ERROR
36423                       ,p_module   => l_log_module);
36424         END IF;
36425       END IF;
36426    END IF;
36427    --
36428    --
36429    ------------------------------------------------------------------------------------------------
36430    -- 4219869 Business Flow
36431    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
36432    -- Prior Entry.  Currently, the following code is always generated.
36433    ------------------------------------------------------------------------------------------------
36434    XLA_AE_LINES_PKG.ValidateCurrentLine;
36435 
36436    ------------------------------------------------------------------------------------
36437    -- 4219869 Business Flow
36438    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
36439    ------------------------------------------------------------------------------------
36440    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36441 
36442    ----------------------------------------------------------------------------------
36443    -- 4219869 Business Flow
36444    -- Update journal entry status -- Need to generate this within IF <condition>
36445    ----------------------------------------------------------------------------------
36446    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36447          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
36448          ,p_balance_type_code => l_balance_type_code
36449          );
36450 
36451    -------------------------------------------------------------------------------------------
36452    -- 4262811 - Generate the Accrual Reversal lines
36453    -------------------------------------------------------------------------------------------
36454    BEGIN
36455       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
36456                               (g_array_event(p_event_id).array_value_num('header_index'));
36457       IF l_acc_rev_flag IS NULL THEN
36458          l_acc_rev_flag := 'N';
36459       END IF;
36460    EXCEPTION
36461       WHEN OTHERS THEN
36462          l_acc_rev_flag := 'N';
36463    END;
36464    --
36465    IF (l_acc_rev_flag = 'Y') THEN
36466 
36467        -- 4645092  ------------------------------------------------------------------------------
36468        -- To allow MPA report to determine if it should generate report process
36469        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
36470        ------------------------------------------------------------------------------------------
36471 
36472        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
36473        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
36474    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
36475    -- call ADRs
36476    -- Bug 4922099
36477    --
36478    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36479         (NVL(l_actual_upg_option, 'N') = 'O') OR
36480         (NVL(l_enc_upg_option, 'N') = 'O')
36481       )
36482    THEN
36483    NULL;
36484    --
36485    --
36486    
36487   l_ccid := AcctDerRule_4(
36488            p_application_id           => p_application_id
36489          , p_ae_header_id             => l_ae_header_id 
36490 , p_source_4 => p_source_4
36491          , x_transaction_coa_id       => l_adr_transaction_coa_id
36492          , x_accounting_coa_id        => l_adr_accounting_coa_id
36493          , x_value_type_code          => l_adr_value_type_code
36494          , p_side                     => 'NA'
36495    );
36496 
36497    xla_ae_lines_pkg.set_ccid(
36498     p_code_combination_id          => l_ccid
36499   , p_value_type_code              => l_adr_value_type_code
36500   , p_transaction_coa_id           => l_adr_transaction_coa_id
36501   , p_accounting_coa_id            => l_adr_accounting_coa_id
36502   , p_adr_code                     => 'CST_DEFAULT'
36503   , p_adr_type_code                => 'S'
36504   , p_component_type               => l_component_type
36505   , p_component_code               => l_component_code
36506   , p_component_type_code          => l_component_type_code
36507   , p_component_appl_id            => l_component_appl_id
36508   , p_amb_context_code             => l_amb_context_code
36509   , p_side                         => 'NA'
36510   );
36511 
36512 
36513    --
36514    --
36515    END IF;
36516 
36517        --
36518        -- Update the line information that should be overwritten
36519        --
36520        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
36521                                          p_header_num   => 1);
36522        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
36523 
36524        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
36525 
36526        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
36527           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
36528        END IF;
36529 
36530       --
36531       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
36532       --
36533       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
36534           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
36535       ELSE
36536           ---------------------------------------------------------------------------------------------------
36537           -- 4262811a Switch Sign
36538           ---------------------------------------------------------------------------------------------------
36539           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
36540           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36541                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36542           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36543                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36544           -- 5132302
36545           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
36546                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36547 
36548       END IF;
36549 
36550       -- 4955764
36551       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36552       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
36553 
36554 
36555       XLA_AE_LINES_PKG.ValidateCurrentLine;
36556       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36557 
36558       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36559                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
36560                ,p_balance_type_code => l_balance_type_code);
36561 
36562    END IF;
36563 
36564    -----------------------------------------------------------------------------------------
36565    -- 4262811 Multiperiod Accounting
36566    -----------------------------------------------------------------------------------------
36567      -- No MPA option is assigned.
36568 
36569 
36570 END IF;
36571 END IF;
36572 --
36573 
36574 --
36575 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36576    trace
36577       (p_msg      => 'END of AcctLineType_68'
36578       ,p_level    => C_LEVEL_PROCEDURE
36579       ,p_module   => l_log_module);
36580 END IF;
36581 --
36582 EXCEPTION
36583   WHEN xla_exceptions_pkg.application_exception THEN
36584       RAISE;
36585   WHEN OTHERS THEN
36586        xla_exceptions_pkg.raise_message
36587            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_68');
36588 END AcctLineType_68;
36589 --
36590 
36591 ---------------------------------------
36592 --
36593 -- PRIVATE FUNCTION
36594 --         AcctLineType_69
36595 --
36596 ---------------------------------------
36597 PROCEDURE AcctLineType_69 (
36598   p_application_id        IN NUMBER
36599  ,p_event_id              IN NUMBER
36600  ,p_calculate_acctd_flag  IN VARCHAR2
36601  ,p_calculate_g_l_flag    IN VARCHAR2
36602  ,p_actual_flag           IN OUT VARCHAR2
36603  ,p_balance_type_code     OUT VARCHAR2
36604  ,p_gain_or_loss_ref      OUT VARCHAR2
36605  
36606 --Cost Management Default Account
36607  , p_source_4            IN NUMBER
36608 --DISTRIBUTION_IDENTIFIER
36609  , p_source_11            IN NUMBER
36610 --Distribution Type
36611  , p_source_12            IN VARCHAR2
36612  , p_source_12_meaning    IN VARCHAR2
36613 --Entered Currency Code
36614  , p_source_15            IN VARCHAR2
36615 --Entered Amount
36616  , p_source_18            IN NUMBER
36617 --Currency Conversion Date
36618  , p_source_19            IN DATE
36619 --Currency Conversion Rate
36620  , p_source_20            IN NUMBER
36621 --Currency Conversion Type
36622  , p_source_21            IN VARCHAR2
36623 --Accounted Amount
36624  , p_source_22            IN NUMBER
36625 --Accounting Line Type
36626  , p_source_24            IN NUMBER
36627 )
36628 IS
36629 
36630 l_component_type              VARCHAR2(80);
36631 l_component_code              VARCHAR2(30);
36632 l_component_type_code         VARCHAR2(1);
36633 l_component_appl_id           INTEGER;
36634 l_amb_context_code            VARCHAR2(30);
36635 l_entity_code                 VARCHAR2(30);
36636 l_event_class_code            VARCHAR2(30);
36637 l_ae_header_id                NUMBER;
36638 l_event_type_code             VARCHAR2(30);
36639 l_line_definition_code        VARCHAR2(30);
36640 l_line_definition_owner_code  VARCHAR2(1);
36641 --
36642 -- adr variables
36643 l_segment                     VARCHAR2(30);
36644 l_ccid                        NUMBER;
36645 l_adr_transaction_coa_id      NUMBER;
36646 l_adr_accounting_coa_id       NUMBER;
36647 l_adr_flexfield_segment_code  VARCHAR2(30);
36648 l_adr_flex_value_set_id       NUMBER;
36649 l_adr_value_type_code         VARCHAR2(30);
36650 l_adr_value_combination_id    NUMBER;
36651 l_adr_value_segment_code      VARCHAR2(30);
36652 
36653 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
36654 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
36655 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
36656 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
36657 
36658 -- 4262811 Variables ------------------------------------------------------------------------------------------
36659 l_entered_amt_idx             NUMBER;
36660 l_accted_amt_idx              NUMBER;
36661 l_acc_rev_flag                VARCHAR2(1);
36662 l_accrual_line_num            NUMBER;
36663 l_tmp_amt                     NUMBER;
36664 l_acc_rev_natural_side_code   VARCHAR2(1);
36665 
36666 l_num_entries                 NUMBER;
36667 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
36668 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
36669 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
36670 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
36671 l_recog_line_1                NUMBER;
36672 l_recog_line_2                NUMBER;
36673 
36674 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
36675 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
36676 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
36677 
36678 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
36679 
36680 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
36681 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
36682 
36683 ---------------------------------------------------------------------------------------------------------------
36684 
36685 
36686 --
36687 -- bulk performance
36688 --
36689 l_balance_type_code           VARCHAR2(1);
36690 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
36691 l_log_module                  VARCHAR2(240);
36692 
36693 --
36694 -- Upgrade strategy
36695 --
36696 l_actual_upg_option           VARCHAR2(1);
36697 l_enc_upg_option           VARCHAR2(1);
36698 
36699 --
36700 BEGIN
36701 --
36702 IF g_log_enabled THEN
36703       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_69';
36704 END IF;
36705 --
36706 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36707 
36708       trace
36709          (p_msg      => 'BEGIN of AcctLineType_69'
36710          ,p_level    => C_LEVEL_PROCEDURE
36711          ,p_module   => l_log_module);
36712 
36713 END IF;
36714 --
36715 l_component_type             := 'AMB_JLT';
36716 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
36717 l_component_type_code        := 'S';
36718 l_component_appl_id          :=  707;
36719 l_amb_context_code           := 'DEFAULT';
36720 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
36721 l_event_class_code           := 'USER_DEFINE';
36722 l_event_type_code            := 'UDIR_INTERORG_RCPT_TP';
36723 l_line_definition_owner_code := 'S';
36724 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_TP';
36725 --
36726 l_balance_type_code          := 'A';
36727 l_segment                     := NULL;
36728 l_ccid                        := NULL;
36729 l_adr_transaction_coa_id      := NULL;
36730 l_adr_accounting_coa_id       := NULL;
36731 l_adr_flexfield_segment_code  := NULL;
36732 l_adr_flex_value_set_id       := NULL;
36733 l_adr_value_type_code         := NULL;
36734 l_adr_value_combination_id    := NULL;
36735 l_adr_value_segment_code      := NULL;
36736 
36737 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
36738 l_bflow_class_code           := '';    -- 4219869 Business Flow
36739 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
36740 l_budgetary_control_flag     := 'N';
36741 
36742 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
36743 l_bflow_applied_to_amt       := NULL; -- 5132302
36744 l_entered_amt_idx            := NULL;          -- 4262811
36745 l_accted_amt_idx             := NULL;          -- 4262811
36746 l_acc_rev_flag               := NULL;          -- 4262811
36747 l_accrual_line_num           := NULL;          -- 4262811
36748 l_tmp_amt                    := NULL;          -- 4262811
36749 --
36750  
36751 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
36752     l_balance_type_code <> 'B' THEN
36753 IF NVL(p_source_24,9E125) =  12
36754  THEN 
36755 
36756    --
36757    XLA_AE_LINES_PKG.SetNewLine;
36758 
36759    p_balance_type_code          := l_balance_type_code;
36760    -- set the flag so later we will know whether the gain loss line needs to be created
36761    
36762    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
36763      p_actual_flag :='A';
36764    END IF;
36765 
36766    --
36767    -- bulk performance
36768    --
36769    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
36770                                       p_header_num   => 0); -- 4262811
36771    --
36772    -- set accounting line options
36773    --
36774    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
36775            p_natural_side_code          => 'D'
36776          , p_gain_or_loss_flag          => 'N'
36777          , p_gl_transfer_mode_code      => 'S'
36778          , p_acct_entry_type_code       => 'A'
36779          , p_switch_side_flag           => 'Y'
36780          , p_merge_duplicate_code       => 'N'
36781          );
36782    --
36783    l_acc_rev_natural_side_code := 'C';  -- 4262811
36784    -- 
36785    --
36786    -- set accounting line type info
36787    --
36788    xla_ae_lines_pkg.SetAcctLineType
36789       (p_component_type             => l_component_type
36790       ,p_event_type_code            => l_event_type_code
36791       ,p_line_definition_owner_code => l_line_definition_owner_code
36792       ,p_line_definition_code       => l_line_definition_code
36793       ,p_accounting_line_code       => l_component_code
36794       ,p_accounting_line_type_code  => l_component_type_code
36795       ,p_accounting_line_appl_id    => l_component_appl_id
36796       ,p_amb_context_code           => l_amb_context_code
36797       ,p_entity_code                => l_entity_code
36798       ,p_event_class_code           => l_event_class_code);
36799    --
36800    -- set accounting class
36801    --
36802    xla_ae_lines_pkg.SetAcctClass(
36803            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
36804          , p_ae_header_id           => l_ae_header_id
36805          );
36806 
36807    --
36808    -- set rounding class
36809    --
36810    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
36811                       'INTERORG_FREIGHT_CHARGE';
36812 
36813    --
36814    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
36815    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
36816    --
36817    -- bulk performance
36818    --
36819    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
36820 
36821    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
36822       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
36823 
36824    -- 4955764
36825    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36826       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
36827 
36828    -- 4458381 Public Sector Enh
36829    
36830    --
36831    -- set accounting attributes for the line type
36832    --
36833    l_entered_amt_idx := 3;
36834    l_accted_amt_idx  := 8;
36835    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
36836    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
36837    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
36838    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
36839    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
36840    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
36841    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
36842    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
36843    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
36844    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
36845    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
36846    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
36847    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
36848    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
36849    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
36850    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
36851    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
36852 
36853    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
36854    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
36855 
36856    ---------------------------------------------------------------------------------------------------------------
36857    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
36858    ---------------------------------------------------------------------------------------------------------------
36859    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
36860 
36861    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36862    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36863 
36864    IF xla_accounting_cache_pkg.GetValueChar
36865          (p_source_code         => 'LEDGER_CATEGORY_CODE'
36866          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
36867    AND l_bflow_method_code = 'PRIOR_ENTRY'
36868 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
36869    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
36870          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
36871        )
36872    THEN
36873          xla_ae_lines_pkg.BflowUpgEntry
36874            (p_business_method_code    => l_bflow_method_code
36875            ,p_business_class_code     => l_bflow_class_code
36876            ,p_balance_type            => l_balance_type_code);
36877    ELSE
36878       NULL;
36879 -- No business flow processing for business flow method of NONE.
36880    END IF;
36881 
36882    --
36883    -- call analytical criteria
36884    --
36885    
36886    --
36887    -- call description
36888    --
36889    -- No description or it is inherited.
36890    --
36891    -- call ADRs
36892    -- Bug 4922099
36893    --
36894    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36895         (NVL(l_actual_upg_option, 'N') = 'O') OR
36896         (NVL(l_enc_upg_option, 'N') = 'O')
36897       )
36898    THEN
36899    NULL;
36900    --
36901    --
36902    
36903   l_ccid := AcctDerRule_4(
36904            p_application_id           => p_application_id
36905          , p_ae_header_id             => l_ae_header_id 
36906 , p_source_4 => p_source_4
36907          , x_transaction_coa_id       => l_adr_transaction_coa_id
36908          , x_accounting_coa_id        => l_adr_accounting_coa_id
36909          , x_value_type_code          => l_adr_value_type_code
36910          , p_side                     => 'NA'
36911    );
36912 
36913    xla_ae_lines_pkg.set_ccid(
36914     p_code_combination_id          => l_ccid
36915   , p_value_type_code              => l_adr_value_type_code
36916   , p_transaction_coa_id           => l_adr_transaction_coa_id
36917   , p_accounting_coa_id            => l_adr_accounting_coa_id
36918   , p_adr_code                     => 'CST_DEFAULT'
36919   , p_adr_type_code                => 'S'
36920   , p_component_type               => l_component_type
36921   , p_component_code               => l_component_code
36922   , p_component_type_code          => l_component_type_code
36923   , p_component_appl_id            => l_component_appl_id
36924   , p_amb_context_code             => l_amb_context_code
36925   , p_side                         => 'NA'
36926   );
36927 
36928 
36929    --
36930    --
36931    END IF;
36932    --
36933    -- Bug 4922099
36934    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
36935           (NVL(l_enc_upg_option, 'N') = 'O')
36936         ) AND
36937         (l_bflow_method_code = 'PRIOR_ENTRY')
36938       )
36939    THEN
36940       IF
36941       --
36942       1 = 2
36943       --
36944       THEN
36945       xla_accounting_err_pkg.build_message
36946                                     (p_appli_s_name            => 'XLA'
36947                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36948                                     ,p_token_1                 => 'LINE_NUMBER'
36949                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
36950                                     ,p_token_2                 => 'LINE_TYPE_NAME'
36951                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
36952                                                                              l_component_type
36953                                                                             ,l_component_code
36954                                                                             ,l_component_type_code
36955                                                                             ,l_component_appl_id
36956                                                                             ,l_amb_context_code
36957                                                                             ,l_entity_code
36958                                                                             ,l_event_class_code
36959                                                                            )
36960                                     ,p_token_3                 => 'OWNER'
36961                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
36962                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
36963                                                                           ,p_lookup_code    => l_component_type_code
36964                                                                          )
36965                                     ,p_token_4                 => 'PRODUCT_NAME'
36966                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
36967                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
36968                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
36969                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
36970                                     ,p_ae_header_id            =>  NULL
36971                                        );
36972 
36973         IF (C_LEVEL_ERROR>= g_log_level) THEN
36974                  trace
36975                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36976                       ,p_level    => C_LEVEL_ERROR
36977                       ,p_module   => l_log_module);
36978         END IF;
36979       END IF;
36980    END IF;
36981    --
36982    --
36983    ------------------------------------------------------------------------------------------------
36984    -- 4219869 Business Flow
36985    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
36986    -- Prior Entry.  Currently, the following code is always generated.
36987    ------------------------------------------------------------------------------------------------
36988    XLA_AE_LINES_PKG.ValidateCurrentLine;
36989 
36990    ------------------------------------------------------------------------------------
36991    -- 4219869 Business Flow
36992    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
36993    ------------------------------------------------------------------------------------
36994    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36995 
36996    ----------------------------------------------------------------------------------
36997    -- 4219869 Business Flow
36998    -- Update journal entry status -- Need to generate this within IF <condition>
36999    ----------------------------------------------------------------------------------
37000    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37001          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
37002          ,p_balance_type_code => l_balance_type_code
37003          );
37004 
37005    -------------------------------------------------------------------------------------------
37006    -- 4262811 - Generate the Accrual Reversal lines
37007    -------------------------------------------------------------------------------------------
37008    BEGIN
37009       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
37010                               (g_array_event(p_event_id).array_value_num('header_index'));
37011       IF l_acc_rev_flag IS NULL THEN
37012          l_acc_rev_flag := 'N';
37013       END IF;
37014    EXCEPTION
37015       WHEN OTHERS THEN
37016          l_acc_rev_flag := 'N';
37017    END;
37018    --
37019    IF (l_acc_rev_flag = 'Y') THEN
37020 
37021        -- 4645092  ------------------------------------------------------------------------------
37022        -- To allow MPA report to determine if it should generate report process
37023        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
37024        ------------------------------------------------------------------------------------------
37025 
37026        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
37027        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
37028    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
37029    -- call ADRs
37030    -- Bug 4922099
37031    --
37032    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
37033         (NVL(l_actual_upg_option, 'N') = 'O') OR
37034         (NVL(l_enc_upg_option, 'N') = 'O')
37035       )
37036    THEN
37037    NULL;
37038    --
37039    --
37040    
37041   l_ccid := AcctDerRule_4(
37042            p_application_id           => p_application_id
37043          , p_ae_header_id             => l_ae_header_id 
37044 , p_source_4 => p_source_4
37045          , x_transaction_coa_id       => l_adr_transaction_coa_id
37046          , x_accounting_coa_id        => l_adr_accounting_coa_id
37047          , x_value_type_code          => l_adr_value_type_code
37048          , p_side                     => 'NA'
37049    );
37050 
37051    xla_ae_lines_pkg.set_ccid(
37052     p_code_combination_id          => l_ccid
37053   , p_value_type_code              => l_adr_value_type_code
37054   , p_transaction_coa_id           => l_adr_transaction_coa_id
37055   , p_accounting_coa_id            => l_adr_accounting_coa_id
37056   , p_adr_code                     => 'CST_DEFAULT'
37057   , p_adr_type_code                => 'S'
37058   , p_component_type               => l_component_type
37059   , p_component_code               => l_component_code
37060   , p_component_type_code          => l_component_type_code
37061   , p_component_appl_id            => l_component_appl_id
37062   , p_amb_context_code             => l_amb_context_code
37063   , p_side                         => 'NA'
37064   );
37065 
37066 
37067    --
37068    --
37069    END IF;
37070 
37071        --
37072        -- Update the line information that should be overwritten
37073        --
37074        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
37075                                          p_header_num   => 1);
37076        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
37077 
37078        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
37079 
37080        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
37081           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
37082        END IF;
37083 
37084       --
37085       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
37086       --
37087       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
37088           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
37089       ELSE
37090           ---------------------------------------------------------------------------------------------------
37091           -- 4262811a Switch Sign
37092           ---------------------------------------------------------------------------------------------------
37093           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
37094           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37095                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37096           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37097                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37098           -- 5132302
37099           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
37100                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37101 
37102       END IF;
37103 
37104       -- 4955764
37105       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37106       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
37107 
37108 
37109       XLA_AE_LINES_PKG.ValidateCurrentLine;
37110       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37111 
37112       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37113                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
37114                ,p_balance_type_code => l_balance_type_code);
37115 
37116    END IF;
37117 
37118    -----------------------------------------------------------------------------------------
37119    -- 4262811 Multiperiod Accounting
37120    -----------------------------------------------------------------------------------------
37121      -- No MPA option is assigned.
37122 
37123 
37124 END IF;
37125 END IF;
37126 --
37127 
37128 --
37129 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37130    trace
37131       (p_msg      => 'END of AcctLineType_69'
37132       ,p_level    => C_LEVEL_PROCEDURE
37133       ,p_module   => l_log_module);
37134 END IF;
37135 --
37136 EXCEPTION
37137   WHEN xla_exceptions_pkg.application_exception THEN
37138       RAISE;
37139   WHEN OTHERS THEN
37140        xla_exceptions_pkg.raise_message
37141            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_69');
37142 END AcctLineType_69;
37143 --
37144 
37145 ---------------------------------------
37146 --
37147 -- PRIVATE FUNCTION
37148 --         AcctLineType_70
37149 --
37150 ---------------------------------------
37151 PROCEDURE AcctLineType_70 (
37152   p_application_id        IN NUMBER
37153  ,p_event_id              IN NUMBER
37154  ,p_calculate_acctd_flag  IN VARCHAR2
37155  ,p_calculate_g_l_flag    IN VARCHAR2
37156  ,p_actual_flag           IN OUT VARCHAR2
37157  ,p_balance_type_code     OUT VARCHAR2
37158  ,p_gain_or_loss_ref      OUT VARCHAR2
37159  
37160 --Cost Management Default Account
37161  , p_source_4            IN NUMBER
37162 --DISTRIBUTION_IDENTIFIER
37163  , p_source_11            IN NUMBER
37164 --Distribution Type
37165  , p_source_12            IN VARCHAR2
37166  , p_source_12_meaning    IN VARCHAR2
37167 --Entered Currency Code
37168  , p_source_15            IN VARCHAR2
37169 --Entered Amount
37170  , p_source_18            IN NUMBER
37171 --Currency Conversion Date
37172  , p_source_19            IN DATE
37173 --Currency Conversion Rate
37174  , p_source_20            IN NUMBER
37175 --Currency Conversion Type
37176  , p_source_21            IN VARCHAR2
37177 --Accounted Amount
37178  , p_source_22            IN NUMBER
37179 --Accounting Line Type
37180  , p_source_24            IN NUMBER
37181 )
37182 IS
37183 
37184 l_component_type              VARCHAR2(80);
37185 l_component_code              VARCHAR2(30);
37186 l_component_type_code         VARCHAR2(1);
37187 l_component_appl_id           INTEGER;
37188 l_amb_context_code            VARCHAR2(30);
37189 l_entity_code                 VARCHAR2(30);
37190 l_event_class_code            VARCHAR2(30);
37191 l_ae_header_id                NUMBER;
37192 l_event_type_code             VARCHAR2(30);
37193 l_line_definition_code        VARCHAR2(30);
37194 l_line_definition_owner_code  VARCHAR2(1);
37195 --
37196 -- adr variables
37197 l_segment                     VARCHAR2(30);
37198 l_ccid                        NUMBER;
37199 l_adr_transaction_coa_id      NUMBER;
37200 l_adr_accounting_coa_id       NUMBER;
37201 l_adr_flexfield_segment_code  VARCHAR2(30);
37202 l_adr_flex_value_set_id       NUMBER;
37203 l_adr_value_type_code         VARCHAR2(30);
37204 l_adr_value_combination_id    NUMBER;
37205 l_adr_value_segment_code      VARCHAR2(30);
37206 
37207 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
37208 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
37209 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
37210 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
37211 
37212 -- 4262811 Variables ------------------------------------------------------------------------------------------
37213 l_entered_amt_idx             NUMBER;
37214 l_accted_amt_idx              NUMBER;
37215 l_acc_rev_flag                VARCHAR2(1);
37216 l_accrual_line_num            NUMBER;
37217 l_tmp_amt                     NUMBER;
37218 l_acc_rev_natural_side_code   VARCHAR2(1);
37219 
37220 l_num_entries                 NUMBER;
37221 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
37222 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
37223 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
37224 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
37225 l_recog_line_1                NUMBER;
37226 l_recog_line_2                NUMBER;
37227 
37228 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
37229 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
37230 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
37231 
37232 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
37233 
37234 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
37235 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
37236 
37237 ---------------------------------------------------------------------------------------------------------------
37238 
37239 
37240 --
37241 -- bulk performance
37242 --
37243 l_balance_type_code           VARCHAR2(1);
37244 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
37245 l_log_module                  VARCHAR2(240);
37246 
37247 --
37248 -- Upgrade strategy
37249 --
37250 l_actual_upg_option           VARCHAR2(1);
37251 l_enc_upg_option           VARCHAR2(1);
37252 
37253 --
37254 BEGIN
37255 --
37256 IF g_log_enabled THEN
37257       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_70';
37258 END IF;
37259 --
37260 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37261 
37262       trace
37263          (p_msg      => 'BEGIN of AcctLineType_70'
37264          ,p_level    => C_LEVEL_PROCEDURE
37265          ,p_module   => l_log_module);
37266 
37267 END IF;
37268 --
37269 l_component_type             := 'AMB_JLT';
37270 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
37271 l_component_type_code        := 'S';
37272 l_component_appl_id          :=  707;
37273 l_amb_context_code           := 'DEFAULT';
37274 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
37275 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
37276 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_ALL';
37277 l_line_definition_owner_code := 'S';
37278 l_line_definition_code       := 'FOB_RCPT_SENDER_RCPT';
37279 --
37280 l_balance_type_code          := 'A';
37281 l_segment                     := NULL;
37282 l_ccid                        := NULL;
37283 l_adr_transaction_coa_id      := NULL;
37284 l_adr_accounting_coa_id       := NULL;
37285 l_adr_flexfield_segment_code  := NULL;
37286 l_adr_flex_value_set_id       := NULL;
37287 l_adr_value_type_code         := NULL;
37288 l_adr_value_combination_id    := NULL;
37289 l_adr_value_segment_code      := NULL;
37290 
37291 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
37292 l_bflow_class_code           := '';    -- 4219869 Business Flow
37293 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
37294 l_budgetary_control_flag     := 'N';
37295 
37296 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
37297 l_bflow_applied_to_amt       := NULL; -- 5132302
37298 l_entered_amt_idx            := NULL;          -- 4262811
37299 l_accted_amt_idx             := NULL;          -- 4262811
37300 l_acc_rev_flag               := NULL;          -- 4262811
37301 l_accrual_line_num           := NULL;          -- 4262811
37302 l_tmp_amt                    := NULL;          -- 4262811
37303 --
37304  
37305 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
37306     l_balance_type_code <> 'B' THEN
37307 IF NVL(p_source_24,9E125) =  12
37308  THEN 
37309 
37310    --
37311    XLA_AE_LINES_PKG.SetNewLine;
37312 
37313    p_balance_type_code          := l_balance_type_code;
37314    -- set the flag so later we will know whether the gain loss line needs to be created
37315    
37316    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
37317      p_actual_flag :='A';
37318    END IF;
37319 
37320    --
37321    -- bulk performance
37322    --
37323    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
37324                                       p_header_num   => 0); -- 4262811
37325    --
37326    -- set accounting line options
37327    --
37328    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
37329            p_natural_side_code          => 'D'
37330          , p_gain_or_loss_flag          => 'N'
37331          , p_gl_transfer_mode_code      => 'S'
37332          , p_acct_entry_type_code       => 'A'
37333          , p_switch_side_flag           => 'Y'
37334          , p_merge_duplicate_code       => 'N'
37335          );
37336    --
37337    l_acc_rev_natural_side_code := 'C';  -- 4262811
37338    -- 
37339    --
37340    -- set accounting line type info
37341    --
37342    xla_ae_lines_pkg.SetAcctLineType
37343       (p_component_type             => l_component_type
37344       ,p_event_type_code            => l_event_type_code
37345       ,p_line_definition_owner_code => l_line_definition_owner_code
37346       ,p_line_definition_code       => l_line_definition_code
37347       ,p_accounting_line_code       => l_component_code
37348       ,p_accounting_line_type_code  => l_component_type_code
37349       ,p_accounting_line_appl_id    => l_component_appl_id
37350       ,p_amb_context_code           => l_amb_context_code
37351       ,p_entity_code                => l_entity_code
37352       ,p_event_class_code           => l_event_class_code);
37353    --
37354    -- set accounting class
37355    --
37356    xla_ae_lines_pkg.SetAcctClass(
37357            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
37358          , p_ae_header_id           => l_ae_header_id
37359          );
37360 
37361    --
37362    -- set rounding class
37363    --
37364    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
37365                       'INTERORG_FREIGHT_CHARGE';
37366 
37367    --
37368    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
37369    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
37370    --
37371    -- bulk performance
37372    --
37373    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
37374 
37375    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
37376       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
37377 
37378    -- 4955764
37379    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37380       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
37381 
37382    -- 4458381 Public Sector Enh
37383    
37384    --
37385    -- set accounting attributes for the line type
37386    --
37387    l_entered_amt_idx := 3;
37388    l_accted_amt_idx  := 8;
37389    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
37390    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
37391    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
37392    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
37393    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
37394    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
37395    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
37396    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
37397    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
37398    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
37399    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
37400    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
37401    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
37402    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
37403    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
37404    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
37405    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
37406 
37407    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
37408    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
37409 
37410    ---------------------------------------------------------------------------------------------------------------
37411    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
37412    ---------------------------------------------------------------------------------------------------------------
37413    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
37414 
37415    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37416    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37417 
37418    IF xla_accounting_cache_pkg.GetValueChar
37419          (p_source_code         => 'LEDGER_CATEGORY_CODE'
37420          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
37421    AND l_bflow_method_code = 'PRIOR_ENTRY'
37422 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
37423    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
37424          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
37425        )
37426    THEN
37427          xla_ae_lines_pkg.BflowUpgEntry
37428            (p_business_method_code    => l_bflow_method_code
37429            ,p_business_class_code     => l_bflow_class_code
37430            ,p_balance_type            => l_balance_type_code);
37431    ELSE
37432       NULL;
37433 -- No business flow processing for business flow method of NONE.
37434    END IF;
37435 
37436    --
37437    -- call analytical criteria
37438    --
37439    
37440    --
37441    -- call description
37442    --
37443    -- No description or it is inherited.
37444    --
37445    -- call ADRs
37446    -- Bug 4922099
37447    --
37448    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
37449         (NVL(l_actual_upg_option, 'N') = 'O') OR
37450         (NVL(l_enc_upg_option, 'N') = 'O')
37451       )
37452    THEN
37453    NULL;
37454    --
37455    --
37456    
37457   l_ccid := AcctDerRule_4(
37458            p_application_id           => p_application_id
37459          , p_ae_header_id             => l_ae_header_id 
37460 , p_source_4 => p_source_4
37461          , x_transaction_coa_id       => l_adr_transaction_coa_id
37462          , x_accounting_coa_id        => l_adr_accounting_coa_id
37463          , x_value_type_code          => l_adr_value_type_code
37464          , p_side                     => 'NA'
37465    );
37466 
37467    xla_ae_lines_pkg.set_ccid(
37468     p_code_combination_id          => l_ccid
37469   , p_value_type_code              => l_adr_value_type_code
37470   , p_transaction_coa_id           => l_adr_transaction_coa_id
37471   , p_accounting_coa_id            => l_adr_accounting_coa_id
37472   , p_adr_code                     => 'CST_DEFAULT'
37473   , p_adr_type_code                => 'S'
37474   , p_component_type               => l_component_type
37475   , p_component_code               => l_component_code
37476   , p_component_type_code          => l_component_type_code
37477   , p_component_appl_id            => l_component_appl_id
37478   , p_amb_context_code             => l_amb_context_code
37479   , p_side                         => 'NA'
37480   );
37481 
37482 
37483    --
37484    --
37485    END IF;
37486    --
37487    -- Bug 4922099
37488    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
37489           (NVL(l_enc_upg_option, 'N') = 'O')
37490         ) AND
37491         (l_bflow_method_code = 'PRIOR_ENTRY')
37492       )
37493    THEN
37494       IF
37495       --
37496       1 = 2
37497       --
37498       THEN
37499       xla_accounting_err_pkg.build_message
37500                                     (p_appli_s_name            => 'XLA'
37501                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37502                                     ,p_token_1                 => 'LINE_NUMBER'
37503                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
37504                                     ,p_token_2                 => 'LINE_TYPE_NAME'
37505                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
37506                                                                              l_component_type
37507                                                                             ,l_component_code
37508                                                                             ,l_component_type_code
37509                                                                             ,l_component_appl_id
37510                                                                             ,l_amb_context_code
37511                                                                             ,l_entity_code
37512                                                                             ,l_event_class_code
37513                                                                            )
37514                                     ,p_token_3                 => 'OWNER'
37515                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
37516                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
37517                                                                           ,p_lookup_code    => l_component_type_code
37518                                                                          )
37519                                     ,p_token_4                 => 'PRODUCT_NAME'
37520                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
37521                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
37522                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
37523                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
37524                                     ,p_ae_header_id            =>  NULL
37525                                        );
37526 
37527         IF (C_LEVEL_ERROR>= g_log_level) THEN
37528                  trace
37529                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37530                       ,p_level    => C_LEVEL_ERROR
37531                       ,p_module   => l_log_module);
37532         END IF;
37533       END IF;
37534    END IF;
37535    --
37536    --
37537    ------------------------------------------------------------------------------------------------
37538    -- 4219869 Business Flow
37539    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
37540    -- Prior Entry.  Currently, the following code is always generated.
37541    ------------------------------------------------------------------------------------------------
37542    XLA_AE_LINES_PKG.ValidateCurrentLine;
37543 
37544    ------------------------------------------------------------------------------------
37545    -- 4219869 Business Flow
37546    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
37547    ------------------------------------------------------------------------------------
37548    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37549 
37550    ----------------------------------------------------------------------------------
37551    -- 4219869 Business Flow
37552    -- Update journal entry status -- Need to generate this within IF <condition>
37553    ----------------------------------------------------------------------------------
37554    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37555          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
37556          ,p_balance_type_code => l_balance_type_code
37557          );
37558 
37559    -------------------------------------------------------------------------------------------
37560    -- 4262811 - Generate the Accrual Reversal lines
37561    -------------------------------------------------------------------------------------------
37562    BEGIN
37563       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
37564                               (g_array_event(p_event_id).array_value_num('header_index'));
37565       IF l_acc_rev_flag IS NULL THEN
37566          l_acc_rev_flag := 'N';
37567       END IF;
37568    EXCEPTION
37569       WHEN OTHERS THEN
37570          l_acc_rev_flag := 'N';
37571    END;
37572    --
37573    IF (l_acc_rev_flag = 'Y') THEN
37574 
37575        -- 4645092  ------------------------------------------------------------------------------
37576        -- To allow MPA report to determine if it should generate report process
37577        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
37578        ------------------------------------------------------------------------------------------
37579 
37580        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
37581        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
37582    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
37583    -- call ADRs
37584    -- Bug 4922099
37585    --
37586    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
37587         (NVL(l_actual_upg_option, 'N') = 'O') OR
37588         (NVL(l_enc_upg_option, 'N') = 'O')
37589       )
37590    THEN
37591    NULL;
37592    --
37593    --
37594    
37595   l_ccid := AcctDerRule_4(
37596            p_application_id           => p_application_id
37597          , p_ae_header_id             => l_ae_header_id 
37598 , p_source_4 => p_source_4
37599          , x_transaction_coa_id       => l_adr_transaction_coa_id
37600          , x_accounting_coa_id        => l_adr_accounting_coa_id
37601          , x_value_type_code          => l_adr_value_type_code
37602          , p_side                     => 'NA'
37603    );
37604 
37605    xla_ae_lines_pkg.set_ccid(
37606     p_code_combination_id          => l_ccid
37607   , p_value_type_code              => l_adr_value_type_code
37608   , p_transaction_coa_id           => l_adr_transaction_coa_id
37609   , p_accounting_coa_id            => l_adr_accounting_coa_id
37610   , p_adr_code                     => 'CST_DEFAULT'
37611   , p_adr_type_code                => 'S'
37612   , p_component_type               => l_component_type
37613   , p_component_code               => l_component_code
37614   , p_component_type_code          => l_component_type_code
37615   , p_component_appl_id            => l_component_appl_id
37616   , p_amb_context_code             => l_amb_context_code
37617   , p_side                         => 'NA'
37618   );
37619 
37620 
37621    --
37622    --
37623    END IF;
37624 
37625        --
37626        -- Update the line information that should be overwritten
37627        --
37628        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
37629                                          p_header_num   => 1);
37630        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
37631 
37632        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
37633 
37634        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
37635           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
37636        END IF;
37637 
37638       --
37639       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
37640       --
37641       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
37642           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
37643       ELSE
37644           ---------------------------------------------------------------------------------------------------
37645           -- 4262811a Switch Sign
37646           ---------------------------------------------------------------------------------------------------
37647           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
37648           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37649                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37650           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37651                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37652           -- 5132302
37653           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
37654                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37655 
37656       END IF;
37657 
37658       -- 4955764
37659       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37660       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
37661 
37662 
37663       XLA_AE_LINES_PKG.ValidateCurrentLine;
37664       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37665 
37666       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37667                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
37668                ,p_balance_type_code => l_balance_type_code);
37669 
37670    END IF;
37671 
37672    -----------------------------------------------------------------------------------------
37673    -- 4262811 Multiperiod Accounting
37674    -----------------------------------------------------------------------------------------
37675      -- No MPA option is assigned.
37676 
37677 
37678 END IF;
37679 END IF;
37680 --
37681 
37682 --
37683 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37684    trace
37685       (p_msg      => 'END of AcctLineType_70'
37686       ,p_level    => C_LEVEL_PROCEDURE
37687       ,p_module   => l_log_module);
37688 END IF;
37689 --
37690 EXCEPTION
37691   WHEN xla_exceptions_pkg.application_exception THEN
37692       RAISE;
37693   WHEN OTHERS THEN
37694        xla_exceptions_pkg.raise_message
37695            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_70');
37696 END AcctLineType_70;
37697 --
37698 
37699 ---------------------------------------
37700 --
37701 -- PRIVATE FUNCTION
37702 --         AcctLineType_71
37703 --
37704 ---------------------------------------
37705 PROCEDURE AcctLineType_71 (
37706   p_application_id        IN NUMBER
37707  ,p_event_id              IN NUMBER
37708  ,p_calculate_acctd_flag  IN VARCHAR2
37709  ,p_calculate_g_l_flag    IN VARCHAR2
37710  ,p_actual_flag           IN OUT VARCHAR2
37711  ,p_balance_type_code     OUT VARCHAR2
37712  ,p_gain_or_loss_ref      OUT VARCHAR2
37713  
37714 --Cost Management Default Account
37715  , p_source_4            IN NUMBER
37716 --DISTRIBUTION_IDENTIFIER
37717  , p_source_11            IN NUMBER
37718 --Distribution Type
37719  , p_source_12            IN VARCHAR2
37720  , p_source_12_meaning    IN VARCHAR2
37721 --Entered Currency Code
37722  , p_source_15            IN VARCHAR2
37723 --Entered Amount
37724  , p_source_18            IN NUMBER
37725 --Currency Conversion Date
37726  , p_source_19            IN DATE
37727 --Currency Conversion Rate
37728  , p_source_20            IN NUMBER
37729 --Currency Conversion Type
37730  , p_source_21            IN VARCHAR2
37731 --Accounted Amount
37732  , p_source_22            IN NUMBER
37733 --Accounting Line Type
37734  , p_source_24            IN NUMBER
37735 )
37736 IS
37737 
37738 l_component_type              VARCHAR2(80);
37739 l_component_code              VARCHAR2(30);
37740 l_component_type_code         VARCHAR2(1);
37741 l_component_appl_id           INTEGER;
37742 l_amb_context_code            VARCHAR2(30);
37743 l_entity_code                 VARCHAR2(30);
37744 l_event_class_code            VARCHAR2(30);
37745 l_ae_header_id                NUMBER;
37746 l_event_type_code             VARCHAR2(30);
37747 l_line_definition_code        VARCHAR2(30);
37748 l_line_definition_owner_code  VARCHAR2(1);
37749 --
37750 -- adr variables
37751 l_segment                     VARCHAR2(30);
37752 l_ccid                        NUMBER;
37753 l_adr_transaction_coa_id      NUMBER;
37754 l_adr_accounting_coa_id       NUMBER;
37755 l_adr_flexfield_segment_code  VARCHAR2(30);
37756 l_adr_flex_value_set_id       NUMBER;
37757 l_adr_value_type_code         VARCHAR2(30);
37758 l_adr_value_combination_id    NUMBER;
37759 l_adr_value_segment_code      VARCHAR2(30);
37760 
37761 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
37762 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
37763 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
37764 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
37765 
37766 -- 4262811 Variables ------------------------------------------------------------------------------------------
37767 l_entered_amt_idx             NUMBER;
37768 l_accted_amt_idx              NUMBER;
37769 l_acc_rev_flag                VARCHAR2(1);
37770 l_accrual_line_num            NUMBER;
37771 l_tmp_amt                     NUMBER;
37772 l_acc_rev_natural_side_code   VARCHAR2(1);
37773 
37774 l_num_entries                 NUMBER;
37775 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
37776 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
37777 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
37778 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
37779 l_recog_line_1                NUMBER;
37780 l_recog_line_2                NUMBER;
37781 
37782 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
37783 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
37784 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
37785 
37786 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
37787 
37788 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
37789 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
37790 
37791 ---------------------------------------------------------------------------------------------------------------
37792 
37793 
37794 --
37795 -- bulk performance
37796 --
37797 l_balance_type_code           VARCHAR2(1);
37798 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
37799 l_log_module                  VARCHAR2(240);
37800 
37801 --
37802 -- Upgrade strategy
37803 --
37804 l_actual_upg_option           VARCHAR2(1);
37805 l_enc_upg_option           VARCHAR2(1);
37806 
37807 --
37808 BEGIN
37809 --
37810 IF g_log_enabled THEN
37811       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_71';
37812 END IF;
37813 --
37814 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37815 
37816       trace
37817          (p_msg      => 'BEGIN of AcctLineType_71'
37818          ,p_level    => C_LEVEL_PROCEDURE
37819          ,p_module   => l_log_module);
37820 
37821 END IF;
37822 --
37823 l_component_type             := 'AMB_JLT';
37824 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
37825 l_component_type_code        := 'S';
37826 l_component_appl_id          :=  707;
37827 l_amb_context_code           := 'DEFAULT';
37828 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
37829 l_event_class_code           := 'USER_DEFINE';
37830 l_event_type_code            := 'UDIR_INTERORG_SHIP';
37831 l_line_definition_owner_code := 'S';
37832 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP';
37833 --
37834 l_balance_type_code          := 'A';
37835 l_segment                     := NULL;
37836 l_ccid                        := NULL;
37837 l_adr_transaction_coa_id      := NULL;
37838 l_adr_accounting_coa_id       := NULL;
37839 l_adr_flexfield_segment_code  := NULL;
37840 l_adr_flex_value_set_id       := NULL;
37841 l_adr_value_type_code         := NULL;
37842 l_adr_value_combination_id    := NULL;
37843 l_adr_value_segment_code      := NULL;
37844 
37845 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
37846 l_bflow_class_code           := '';    -- 4219869 Business Flow
37847 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
37848 l_budgetary_control_flag     := 'N';
37849 
37850 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
37851 l_bflow_applied_to_amt       := NULL; -- 5132302
37852 l_entered_amt_idx            := NULL;          -- 4262811
37853 l_accted_amt_idx             := NULL;          -- 4262811
37854 l_acc_rev_flag               := NULL;          -- 4262811
37855 l_accrual_line_num           := NULL;          -- 4262811
37856 l_tmp_amt                    := NULL;          -- 4262811
37857 --
37858  
37859 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
37860     l_balance_type_code <> 'B' THEN
37861 IF NVL(p_source_24,9E125) =  12
37862  THEN 
37863 
37864    --
37865    XLA_AE_LINES_PKG.SetNewLine;
37866 
37867    p_balance_type_code          := l_balance_type_code;
37868    -- set the flag so later we will know whether the gain loss line needs to be created
37869    
37870    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
37871      p_actual_flag :='A';
37872    END IF;
37873 
37874    --
37875    -- bulk performance
37876    --
37877    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
37878                                       p_header_num   => 0); -- 4262811
37879    --
37880    -- set accounting line options
37881    --
37882    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
37883            p_natural_side_code          => 'D'
37884          , p_gain_or_loss_flag          => 'N'
37885          , p_gl_transfer_mode_code      => 'S'
37886          , p_acct_entry_type_code       => 'A'
37887          , p_switch_side_flag           => 'Y'
37888          , p_merge_duplicate_code       => 'N'
37889          );
37890    --
37891    l_acc_rev_natural_side_code := 'C';  -- 4262811
37892    -- 
37893    --
37894    -- set accounting line type info
37895    --
37896    xla_ae_lines_pkg.SetAcctLineType
37897       (p_component_type             => l_component_type
37898       ,p_event_type_code            => l_event_type_code
37899       ,p_line_definition_owner_code => l_line_definition_owner_code
37900       ,p_line_definition_code       => l_line_definition_code
37901       ,p_accounting_line_code       => l_component_code
37902       ,p_accounting_line_type_code  => l_component_type_code
37903       ,p_accounting_line_appl_id    => l_component_appl_id
37904       ,p_amb_context_code           => l_amb_context_code
37905       ,p_entity_code                => l_entity_code
37906       ,p_event_class_code           => l_event_class_code);
37907    --
37908    -- set accounting class
37909    --
37910    xla_ae_lines_pkg.SetAcctClass(
37911            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
37912          , p_ae_header_id           => l_ae_header_id
37913          );
37914 
37915    --
37916    -- set rounding class
37917    --
37918    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
37919                       'INTERORG_FREIGHT_CHARGE';
37920 
37921    --
37922    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
37923    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
37924    --
37925    -- bulk performance
37926    --
37927    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
37928 
37929    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
37930       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
37931 
37932    -- 4955764
37933    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37934       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
37935 
37936    -- 4458381 Public Sector Enh
37937    
37938    --
37939    -- set accounting attributes for the line type
37940    --
37941    l_entered_amt_idx := 3;
37942    l_accted_amt_idx  := 8;
37943    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
37944    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
37945    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
37946    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
37947    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
37948    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
37949    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
37950    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
37951    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
37952    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
37953    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
37954    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
37955    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
37956    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
37957    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
37958    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
37959    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
37960 
37961    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
37962    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
37963 
37964    ---------------------------------------------------------------------------------------------------------------
37965    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
37966    ---------------------------------------------------------------------------------------------------------------
37967    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
37968 
37969    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37970    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37971 
37972    IF xla_accounting_cache_pkg.GetValueChar
37973          (p_source_code         => 'LEDGER_CATEGORY_CODE'
37974          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
37975    AND l_bflow_method_code = 'PRIOR_ENTRY'
37976 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
37977    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
37978          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
37979        )
37980    THEN
37981          xla_ae_lines_pkg.BflowUpgEntry
37982            (p_business_method_code    => l_bflow_method_code
37983            ,p_business_class_code     => l_bflow_class_code
37984            ,p_balance_type            => l_balance_type_code);
37985    ELSE
37986       NULL;
37987 -- No business flow processing for business flow method of NONE.
37988    END IF;
37989 
37990    --
37991    -- call analytical criteria
37992    --
37993    
37994    --
37995    -- call description
37996    --
37997    -- No description or it is inherited.
37998    --
37999    -- call ADRs
38000    -- Bug 4922099
38001    --
38002    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38003         (NVL(l_actual_upg_option, 'N') = 'O') OR
38004         (NVL(l_enc_upg_option, 'N') = 'O')
38005       )
38006    THEN
38007    NULL;
38008    --
38009    --
38010    
38011   l_ccid := AcctDerRule_4(
38012            p_application_id           => p_application_id
38013          , p_ae_header_id             => l_ae_header_id 
38014 , p_source_4 => p_source_4
38015          , x_transaction_coa_id       => l_adr_transaction_coa_id
38016          , x_accounting_coa_id        => l_adr_accounting_coa_id
38017          , x_value_type_code          => l_adr_value_type_code
38018          , p_side                     => 'NA'
38019    );
38020 
38021    xla_ae_lines_pkg.set_ccid(
38022     p_code_combination_id          => l_ccid
38023   , p_value_type_code              => l_adr_value_type_code
38024   , p_transaction_coa_id           => l_adr_transaction_coa_id
38025   , p_accounting_coa_id            => l_adr_accounting_coa_id
38026   , p_adr_code                     => 'CST_DEFAULT'
38027   , p_adr_type_code                => 'S'
38028   , p_component_type               => l_component_type
38029   , p_component_code               => l_component_code
38030   , p_component_type_code          => l_component_type_code
38031   , p_component_appl_id            => l_component_appl_id
38032   , p_amb_context_code             => l_amb_context_code
38033   , p_side                         => 'NA'
38034   );
38035 
38036 
38037    --
38038    --
38039    END IF;
38040    --
38041    -- Bug 4922099
38042    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
38043           (NVL(l_enc_upg_option, 'N') = 'O')
38044         ) AND
38045         (l_bflow_method_code = 'PRIOR_ENTRY')
38046       )
38047    THEN
38048       IF
38049       --
38050       1 = 2
38051       --
38052       THEN
38053       xla_accounting_err_pkg.build_message
38054                                     (p_appli_s_name            => 'XLA'
38055                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38056                                     ,p_token_1                 => 'LINE_NUMBER'
38057                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
38058                                     ,p_token_2                 => 'LINE_TYPE_NAME'
38059                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
38060                                                                              l_component_type
38061                                                                             ,l_component_code
38062                                                                             ,l_component_type_code
38063                                                                             ,l_component_appl_id
38064                                                                             ,l_amb_context_code
38065                                                                             ,l_entity_code
38066                                                                             ,l_event_class_code
38067                                                                            )
38068                                     ,p_token_3                 => 'OWNER'
38069                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
38070                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
38071                                                                           ,p_lookup_code    => l_component_type_code
38072                                                                          )
38073                                     ,p_token_4                 => 'PRODUCT_NAME'
38074                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
38075                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
38076                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
38077                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
38078                                     ,p_ae_header_id            =>  NULL
38079                                        );
38080 
38081         IF (C_LEVEL_ERROR>= g_log_level) THEN
38082                  trace
38083                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38084                       ,p_level    => C_LEVEL_ERROR
38085                       ,p_module   => l_log_module);
38086         END IF;
38087       END IF;
38088    END IF;
38089    --
38090    --
38091    ------------------------------------------------------------------------------------------------
38092    -- 4219869 Business Flow
38093    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
38094    -- Prior Entry.  Currently, the following code is always generated.
38095    ------------------------------------------------------------------------------------------------
38096    XLA_AE_LINES_PKG.ValidateCurrentLine;
38097 
38098    ------------------------------------------------------------------------------------
38099    -- 4219869 Business Flow
38100    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
38101    ------------------------------------------------------------------------------------
38102    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38103 
38104    ----------------------------------------------------------------------------------
38105    -- 4219869 Business Flow
38106    -- Update journal entry status -- Need to generate this within IF <condition>
38107    ----------------------------------------------------------------------------------
38108    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38109          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
38110          ,p_balance_type_code => l_balance_type_code
38111          );
38112 
38113    -------------------------------------------------------------------------------------------
38114    -- 4262811 - Generate the Accrual Reversal lines
38115    -------------------------------------------------------------------------------------------
38116    BEGIN
38117       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
38118                               (g_array_event(p_event_id).array_value_num('header_index'));
38119       IF l_acc_rev_flag IS NULL THEN
38120          l_acc_rev_flag := 'N';
38121       END IF;
38122    EXCEPTION
38123       WHEN OTHERS THEN
38124          l_acc_rev_flag := 'N';
38125    END;
38126    --
38127    IF (l_acc_rev_flag = 'Y') THEN
38128 
38129        -- 4645092  ------------------------------------------------------------------------------
38130        -- To allow MPA report to determine if it should generate report process
38131        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
38132        ------------------------------------------------------------------------------------------
38133 
38134        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
38135        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
38136    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
38137    -- call ADRs
38138    -- Bug 4922099
38139    --
38140    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38141         (NVL(l_actual_upg_option, 'N') = 'O') OR
38142         (NVL(l_enc_upg_option, 'N') = 'O')
38143       )
38144    THEN
38145    NULL;
38146    --
38147    --
38148    
38149   l_ccid := AcctDerRule_4(
38150            p_application_id           => p_application_id
38151          , p_ae_header_id             => l_ae_header_id 
38152 , p_source_4 => p_source_4
38153          , x_transaction_coa_id       => l_adr_transaction_coa_id
38154          , x_accounting_coa_id        => l_adr_accounting_coa_id
38155          , x_value_type_code          => l_adr_value_type_code
38156          , p_side                     => 'NA'
38157    );
38158 
38159    xla_ae_lines_pkg.set_ccid(
38160     p_code_combination_id          => l_ccid
38161   , p_value_type_code              => l_adr_value_type_code
38162   , p_transaction_coa_id           => l_adr_transaction_coa_id
38163   , p_accounting_coa_id            => l_adr_accounting_coa_id
38164   , p_adr_code                     => 'CST_DEFAULT'
38165   , p_adr_type_code                => 'S'
38166   , p_component_type               => l_component_type
38167   , p_component_code               => l_component_code
38168   , p_component_type_code          => l_component_type_code
38169   , p_component_appl_id            => l_component_appl_id
38170   , p_amb_context_code             => l_amb_context_code
38171   , p_side                         => 'NA'
38172   );
38173 
38174 
38175    --
38176    --
38177    END IF;
38178 
38179        --
38180        -- Update the line information that should be overwritten
38181        --
38182        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
38183                                          p_header_num   => 1);
38184        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
38185 
38186        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
38187 
38188        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
38189           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
38190        END IF;
38191 
38192       --
38193       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
38194       --
38195       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
38196           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
38197       ELSE
38198           ---------------------------------------------------------------------------------------------------
38199           -- 4262811a Switch Sign
38200           ---------------------------------------------------------------------------------------------------
38201           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
38202           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38203                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38204           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38205                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38206           -- 5132302
38207           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
38208                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38209 
38210       END IF;
38211 
38212       -- 4955764
38213       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38214       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
38215 
38216 
38217       XLA_AE_LINES_PKG.ValidateCurrentLine;
38218       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38219 
38220       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38221                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
38222                ,p_balance_type_code => l_balance_type_code);
38223 
38224    END IF;
38225 
38226    -----------------------------------------------------------------------------------------
38227    -- 4262811 Multiperiod Accounting
38228    -----------------------------------------------------------------------------------------
38229      -- No MPA option is assigned.
38230 
38231 
38232 END IF;
38233 END IF;
38234 --
38235 
38236 --
38237 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38238    trace
38239       (p_msg      => 'END of AcctLineType_71'
38240       ,p_level    => C_LEVEL_PROCEDURE
38241       ,p_module   => l_log_module);
38242 END IF;
38243 --
38244 EXCEPTION
38245   WHEN xla_exceptions_pkg.application_exception THEN
38246       RAISE;
38247   WHEN OTHERS THEN
38248        xla_exceptions_pkg.raise_message
38249            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_71');
38250 END AcctLineType_71;
38251 --
38252 
38253 ---------------------------------------
38254 --
38255 -- PRIVATE FUNCTION
38256 --         AcctLineType_72
38257 --
38258 ---------------------------------------
38259 PROCEDURE AcctLineType_72 (
38260   p_application_id        IN NUMBER
38261  ,p_event_id              IN NUMBER
38262  ,p_calculate_acctd_flag  IN VARCHAR2
38263  ,p_calculate_g_l_flag    IN VARCHAR2
38264  ,p_actual_flag           IN OUT VARCHAR2
38265  ,p_balance_type_code     OUT VARCHAR2
38266  ,p_gain_or_loss_ref      OUT VARCHAR2
38267  
38268 --Cost Management Default Account
38269  , p_source_4            IN NUMBER
38270 --DISTRIBUTION_IDENTIFIER
38271  , p_source_11            IN NUMBER
38272 --Distribution Type
38273  , p_source_12            IN VARCHAR2
38274  , p_source_12_meaning    IN VARCHAR2
38275 --Entered Currency Code
38276  , p_source_15            IN VARCHAR2
38277 --Entered Amount
38278  , p_source_18            IN NUMBER
38279 --Currency Conversion Date
38280  , p_source_19            IN DATE
38281 --Currency Conversion Rate
38282  , p_source_20            IN NUMBER
38283 --Currency Conversion Type
38284  , p_source_21            IN VARCHAR2
38285 --Accounted Amount
38286  , p_source_22            IN NUMBER
38287 --Accounting Line Type
38288  , p_source_24            IN NUMBER
38289 )
38290 IS
38291 
38292 l_component_type              VARCHAR2(80);
38293 l_component_code              VARCHAR2(30);
38294 l_component_type_code         VARCHAR2(1);
38295 l_component_appl_id           INTEGER;
38296 l_amb_context_code            VARCHAR2(30);
38297 l_entity_code                 VARCHAR2(30);
38298 l_event_class_code            VARCHAR2(30);
38299 l_ae_header_id                NUMBER;
38300 l_event_type_code             VARCHAR2(30);
38301 l_line_definition_code        VARCHAR2(30);
38302 l_line_definition_owner_code  VARCHAR2(1);
38303 --
38304 -- adr variables
38305 l_segment                     VARCHAR2(30);
38306 l_ccid                        NUMBER;
38307 l_adr_transaction_coa_id      NUMBER;
38308 l_adr_accounting_coa_id       NUMBER;
38309 l_adr_flexfield_segment_code  VARCHAR2(30);
38310 l_adr_flex_value_set_id       NUMBER;
38311 l_adr_value_type_code         VARCHAR2(30);
38312 l_adr_value_combination_id    NUMBER;
38313 l_adr_value_segment_code      VARCHAR2(30);
38314 
38315 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
38316 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
38317 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
38318 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
38319 
38320 -- 4262811 Variables ------------------------------------------------------------------------------------------
38321 l_entered_amt_idx             NUMBER;
38322 l_accted_amt_idx              NUMBER;
38323 l_acc_rev_flag                VARCHAR2(1);
38324 l_accrual_line_num            NUMBER;
38325 l_tmp_amt                     NUMBER;
38326 l_acc_rev_natural_side_code   VARCHAR2(1);
38327 
38328 l_num_entries                 NUMBER;
38329 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
38330 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
38331 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
38332 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
38333 l_recog_line_1                NUMBER;
38334 l_recog_line_2                NUMBER;
38335 
38336 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
38337 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
38338 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
38339 
38340 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
38341 
38342 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
38343 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
38344 
38345 ---------------------------------------------------------------------------------------------------------------
38346 
38347 
38348 --
38349 -- bulk performance
38350 --
38351 l_balance_type_code           VARCHAR2(1);
38352 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
38353 l_log_module                  VARCHAR2(240);
38354 
38355 --
38356 -- Upgrade strategy
38357 --
38358 l_actual_upg_option           VARCHAR2(1);
38359 l_enc_upg_option           VARCHAR2(1);
38360 
38361 --
38362 BEGIN
38363 --
38364 IF g_log_enabled THEN
38365       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_72';
38366 END IF;
38367 --
38368 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38369 
38370       trace
38371          (p_msg      => 'BEGIN of AcctLineType_72'
38372          ,p_level    => C_LEVEL_PROCEDURE
38373          ,p_module   => l_log_module);
38374 
38375 END IF;
38376 --
38377 l_component_type             := 'AMB_JLT';
38378 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
38379 l_component_type_code        := 'S';
38380 l_component_appl_id          :=  707;
38381 l_amb_context_code           := 'DEFAULT';
38382 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
38383 l_event_class_code           := 'USER_DEFINE';
38384 l_event_type_code            := 'UDIR_INTERORG_RCPT';
38385 l_line_definition_owner_code := 'S';
38386 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT';
38387 --
38388 l_balance_type_code          := 'A';
38389 l_segment                     := NULL;
38390 l_ccid                        := NULL;
38391 l_adr_transaction_coa_id      := NULL;
38392 l_adr_accounting_coa_id       := NULL;
38393 l_adr_flexfield_segment_code  := NULL;
38394 l_adr_flex_value_set_id       := NULL;
38395 l_adr_value_type_code         := NULL;
38396 l_adr_value_combination_id    := NULL;
38397 l_adr_value_segment_code      := NULL;
38398 
38399 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
38400 l_bflow_class_code           := '';    -- 4219869 Business Flow
38401 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
38402 l_budgetary_control_flag     := 'N';
38403 
38404 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
38405 l_bflow_applied_to_amt       := NULL; -- 5132302
38406 l_entered_amt_idx            := NULL;          -- 4262811
38407 l_accted_amt_idx             := NULL;          -- 4262811
38408 l_acc_rev_flag               := NULL;          -- 4262811
38409 l_accrual_line_num           := NULL;          -- 4262811
38410 l_tmp_amt                    := NULL;          -- 4262811
38411 --
38412  
38413 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
38414     l_balance_type_code <> 'B' THEN
38415 IF NVL(p_source_24,9E125) =  12
38416  THEN 
38417 
38418    --
38419    XLA_AE_LINES_PKG.SetNewLine;
38420 
38421    p_balance_type_code          := l_balance_type_code;
38422    -- set the flag so later we will know whether the gain loss line needs to be created
38423    
38424    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
38425      p_actual_flag :='A';
38426    END IF;
38427 
38428    --
38429    -- bulk performance
38430    --
38431    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
38432                                       p_header_num   => 0); -- 4262811
38433    --
38434    -- set accounting line options
38435    --
38436    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
38437            p_natural_side_code          => 'D'
38438          , p_gain_or_loss_flag          => 'N'
38439          , p_gl_transfer_mode_code      => 'S'
38440          , p_acct_entry_type_code       => 'A'
38441          , p_switch_side_flag           => 'Y'
38442          , p_merge_duplicate_code       => 'N'
38443          );
38444    --
38445    l_acc_rev_natural_side_code := 'C';  -- 4262811
38446    -- 
38447    --
38448    -- set accounting line type info
38449    --
38450    xla_ae_lines_pkg.SetAcctLineType
38451       (p_component_type             => l_component_type
38452       ,p_event_type_code            => l_event_type_code
38453       ,p_line_definition_owner_code => l_line_definition_owner_code
38454       ,p_line_definition_code       => l_line_definition_code
38455       ,p_accounting_line_code       => l_component_code
38456       ,p_accounting_line_type_code  => l_component_type_code
38457       ,p_accounting_line_appl_id    => l_component_appl_id
38458       ,p_amb_context_code           => l_amb_context_code
38459       ,p_entity_code                => l_entity_code
38460       ,p_event_class_code           => l_event_class_code);
38461    --
38462    -- set accounting class
38463    --
38464    xla_ae_lines_pkg.SetAcctClass(
38465            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
38466          , p_ae_header_id           => l_ae_header_id
38467          );
38468 
38469    --
38470    -- set rounding class
38471    --
38472    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
38473                       'INTERORG_FREIGHT_CHARGE';
38474 
38475    --
38476    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
38477    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
38478    --
38479    -- bulk performance
38480    --
38481    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
38482 
38483    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
38484       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
38485 
38486    -- 4955764
38487    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38488       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
38489 
38490    -- 4458381 Public Sector Enh
38491    
38492    --
38493    -- set accounting attributes for the line type
38494    --
38495    l_entered_amt_idx := 3;
38496    l_accted_amt_idx  := 8;
38497    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
38498    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
38499    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
38500    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
38501    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
38502    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
38503    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
38504    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
38505    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
38506    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
38507    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
38508    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
38509    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
38510    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
38511    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
38512    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
38513    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
38514 
38515    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
38516    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
38517 
38518    ---------------------------------------------------------------------------------------------------------------
38519    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
38520    ---------------------------------------------------------------------------------------------------------------
38521    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
38522 
38523    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38524    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38525 
38526    IF xla_accounting_cache_pkg.GetValueChar
38527          (p_source_code         => 'LEDGER_CATEGORY_CODE'
38528          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
38529    AND l_bflow_method_code = 'PRIOR_ENTRY'
38530 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
38531    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
38532          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
38533        )
38534    THEN
38535          xla_ae_lines_pkg.BflowUpgEntry
38536            (p_business_method_code    => l_bflow_method_code
38537            ,p_business_class_code     => l_bflow_class_code
38538            ,p_balance_type            => l_balance_type_code);
38539    ELSE
38540       NULL;
38541 -- No business flow processing for business flow method of NONE.
38542    END IF;
38543 
38544    --
38545    -- call analytical criteria
38546    --
38547    
38548    --
38549    -- call description
38550    --
38551    -- No description or it is inherited.
38552    --
38553    -- call ADRs
38554    -- Bug 4922099
38555    --
38556    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38557         (NVL(l_actual_upg_option, 'N') = 'O') OR
38558         (NVL(l_enc_upg_option, 'N') = 'O')
38559       )
38560    THEN
38561    NULL;
38562    --
38563    --
38564    
38565   l_ccid := AcctDerRule_4(
38566            p_application_id           => p_application_id
38567          , p_ae_header_id             => l_ae_header_id 
38568 , p_source_4 => p_source_4
38569          , x_transaction_coa_id       => l_adr_transaction_coa_id
38570          , x_accounting_coa_id        => l_adr_accounting_coa_id
38571          , x_value_type_code          => l_adr_value_type_code
38572          , p_side                     => 'NA'
38573    );
38574 
38575    xla_ae_lines_pkg.set_ccid(
38576     p_code_combination_id          => l_ccid
38577   , p_value_type_code              => l_adr_value_type_code
38578   , p_transaction_coa_id           => l_adr_transaction_coa_id
38579   , p_accounting_coa_id            => l_adr_accounting_coa_id
38580   , p_adr_code                     => 'CST_DEFAULT'
38581   , p_adr_type_code                => 'S'
38582   , p_component_type               => l_component_type
38583   , p_component_code               => l_component_code
38584   , p_component_type_code          => l_component_type_code
38585   , p_component_appl_id            => l_component_appl_id
38586   , p_amb_context_code             => l_amb_context_code
38587   , p_side                         => 'NA'
38588   );
38589 
38590 
38591    --
38592    --
38593    END IF;
38594    --
38595    -- Bug 4922099
38596    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
38597           (NVL(l_enc_upg_option, 'N') = 'O')
38598         ) AND
38599         (l_bflow_method_code = 'PRIOR_ENTRY')
38600       )
38601    THEN
38602       IF
38603       --
38604       1 = 2
38605       --
38606       THEN
38607       xla_accounting_err_pkg.build_message
38608                                     (p_appli_s_name            => 'XLA'
38609                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38610                                     ,p_token_1                 => 'LINE_NUMBER'
38611                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
38612                                     ,p_token_2                 => 'LINE_TYPE_NAME'
38613                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
38614                                                                              l_component_type
38615                                                                             ,l_component_code
38616                                                                             ,l_component_type_code
38617                                                                             ,l_component_appl_id
38618                                                                             ,l_amb_context_code
38619                                                                             ,l_entity_code
38620                                                                             ,l_event_class_code
38621                                                                            )
38622                                     ,p_token_3                 => 'OWNER'
38623                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
38624                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
38625                                                                           ,p_lookup_code    => l_component_type_code
38626                                                                          )
38627                                     ,p_token_4                 => 'PRODUCT_NAME'
38628                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
38629                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
38630                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
38631                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
38632                                     ,p_ae_header_id            =>  NULL
38633                                        );
38634 
38635         IF (C_LEVEL_ERROR>= g_log_level) THEN
38636                  trace
38637                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38638                       ,p_level    => C_LEVEL_ERROR
38639                       ,p_module   => l_log_module);
38640         END IF;
38641       END IF;
38642    END IF;
38643    --
38644    --
38645    ------------------------------------------------------------------------------------------------
38646    -- 4219869 Business Flow
38647    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
38648    -- Prior Entry.  Currently, the following code is always generated.
38649    ------------------------------------------------------------------------------------------------
38650    XLA_AE_LINES_PKG.ValidateCurrentLine;
38651 
38652    ------------------------------------------------------------------------------------
38653    -- 4219869 Business Flow
38654    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
38655    ------------------------------------------------------------------------------------
38656    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38657 
38658    ----------------------------------------------------------------------------------
38659    -- 4219869 Business Flow
38660    -- Update journal entry status -- Need to generate this within IF <condition>
38661    ----------------------------------------------------------------------------------
38662    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38663          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
38664          ,p_balance_type_code => l_balance_type_code
38665          );
38666 
38667    -------------------------------------------------------------------------------------------
38668    -- 4262811 - Generate the Accrual Reversal lines
38669    -------------------------------------------------------------------------------------------
38670    BEGIN
38671       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
38672                               (g_array_event(p_event_id).array_value_num('header_index'));
38673       IF l_acc_rev_flag IS NULL THEN
38674          l_acc_rev_flag := 'N';
38675       END IF;
38676    EXCEPTION
38677       WHEN OTHERS THEN
38678          l_acc_rev_flag := 'N';
38679    END;
38680    --
38681    IF (l_acc_rev_flag = 'Y') THEN
38682 
38683        -- 4645092  ------------------------------------------------------------------------------
38684        -- To allow MPA report to determine if it should generate report process
38685        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
38686        ------------------------------------------------------------------------------------------
38687 
38688        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
38689        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
38690    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
38691    -- call ADRs
38692    -- Bug 4922099
38693    --
38694    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38695         (NVL(l_actual_upg_option, 'N') = 'O') OR
38696         (NVL(l_enc_upg_option, 'N') = 'O')
38697       )
38698    THEN
38699    NULL;
38700    --
38701    --
38702    
38703   l_ccid := AcctDerRule_4(
38704            p_application_id           => p_application_id
38705          , p_ae_header_id             => l_ae_header_id 
38706 , p_source_4 => p_source_4
38707          , x_transaction_coa_id       => l_adr_transaction_coa_id
38708          , x_accounting_coa_id        => l_adr_accounting_coa_id
38709          , x_value_type_code          => l_adr_value_type_code
38710          , p_side                     => 'NA'
38711    );
38712 
38713    xla_ae_lines_pkg.set_ccid(
38714     p_code_combination_id          => l_ccid
38715   , p_value_type_code              => l_adr_value_type_code
38716   , p_transaction_coa_id           => l_adr_transaction_coa_id
38717   , p_accounting_coa_id            => l_adr_accounting_coa_id
38718   , p_adr_code                     => 'CST_DEFAULT'
38719   , p_adr_type_code                => 'S'
38720   , p_component_type               => l_component_type
38721   , p_component_code               => l_component_code
38722   , p_component_type_code          => l_component_type_code
38723   , p_component_appl_id            => l_component_appl_id
38724   , p_amb_context_code             => l_amb_context_code
38725   , p_side                         => 'NA'
38726   );
38727 
38728 
38729    --
38730    --
38731    END IF;
38732 
38733        --
38734        -- Update the line information that should be overwritten
38735        --
38736        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
38737                                          p_header_num   => 1);
38738        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
38739 
38740        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
38741 
38742        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
38743           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
38744        END IF;
38745 
38746       --
38747       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
38748       --
38749       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
38750           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
38751       ELSE
38752           ---------------------------------------------------------------------------------------------------
38753           -- 4262811a Switch Sign
38754           ---------------------------------------------------------------------------------------------------
38755           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
38756           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38757                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38758           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38759                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38760           -- 5132302
38761           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
38762                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38763 
38764       END IF;
38765 
38766       -- 4955764
38767       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38768       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
38769 
38770 
38771       XLA_AE_LINES_PKG.ValidateCurrentLine;
38772       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38773 
38774       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38775                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
38776                ,p_balance_type_code => l_balance_type_code);
38777 
38778    END IF;
38779 
38780    -----------------------------------------------------------------------------------------
38781    -- 4262811 Multiperiod Accounting
38782    -----------------------------------------------------------------------------------------
38783      -- No MPA option is assigned.
38784 
38785 
38786 END IF;
38787 END IF;
38788 --
38789 
38790 --
38791 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38792    trace
38793       (p_msg      => 'END of AcctLineType_72'
38794       ,p_level    => C_LEVEL_PROCEDURE
38795       ,p_module   => l_log_module);
38796 END IF;
38797 --
38798 EXCEPTION
38799   WHEN xla_exceptions_pkg.application_exception THEN
38800       RAISE;
38801   WHEN OTHERS THEN
38802        xla_exceptions_pkg.raise_message
38803            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_72');
38804 END AcctLineType_72;
38805 --
38806 
38807 ---------------------------------------
38808 --
38809 -- PRIVATE FUNCTION
38810 --         AcctLineType_73
38811 --
38812 ---------------------------------------
38813 PROCEDURE AcctLineType_73 (
38814   p_application_id        IN NUMBER
38815  ,p_event_id              IN NUMBER
38816  ,p_calculate_acctd_flag  IN VARCHAR2
38817  ,p_calculate_g_l_flag    IN VARCHAR2
38818  ,p_actual_flag           IN OUT VARCHAR2
38819  ,p_balance_type_code     OUT VARCHAR2
38820  ,p_gain_or_loss_ref      OUT VARCHAR2
38821  
38822 --Cost Management Default Account
38823  , p_source_4            IN NUMBER
38824 --DISTRIBUTION_IDENTIFIER
38825  , p_source_11            IN NUMBER
38826 --Distribution Type
38827  , p_source_12            IN VARCHAR2
38828  , p_source_12_meaning    IN VARCHAR2
38829 --Entered Currency Code
38830  , p_source_15            IN VARCHAR2
38831 --Entered Amount
38832  , p_source_18            IN NUMBER
38833 --Currency Conversion Date
38834  , p_source_19            IN DATE
38835 --Currency Conversion Rate
38836  , p_source_20            IN NUMBER
38837 --Currency Conversion Type
38838  , p_source_21            IN VARCHAR2
38839 --Accounted Amount
38840  , p_source_22            IN NUMBER
38841 --Accounting Line Type
38842  , p_source_24            IN NUMBER
38843 )
38844 IS
38845 
38846 l_component_type              VARCHAR2(80);
38847 l_component_code              VARCHAR2(30);
38848 l_component_type_code         VARCHAR2(1);
38849 l_component_appl_id           INTEGER;
38850 l_amb_context_code            VARCHAR2(30);
38851 l_entity_code                 VARCHAR2(30);
38852 l_event_class_code            VARCHAR2(30);
38853 l_ae_header_id                NUMBER;
38854 l_event_type_code             VARCHAR2(30);
38855 l_line_definition_code        VARCHAR2(30);
38856 l_line_definition_owner_code  VARCHAR2(1);
38857 --
38858 -- adr variables
38859 l_segment                     VARCHAR2(30);
38860 l_ccid                        NUMBER;
38861 l_adr_transaction_coa_id      NUMBER;
38862 l_adr_accounting_coa_id       NUMBER;
38863 l_adr_flexfield_segment_code  VARCHAR2(30);
38864 l_adr_flex_value_set_id       NUMBER;
38865 l_adr_value_type_code         VARCHAR2(30);
38866 l_adr_value_combination_id    NUMBER;
38867 l_adr_value_segment_code      VARCHAR2(30);
38868 
38869 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
38870 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
38871 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
38872 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
38873 
38874 -- 4262811 Variables ------------------------------------------------------------------------------------------
38875 l_entered_amt_idx             NUMBER;
38876 l_accted_amt_idx              NUMBER;
38877 l_acc_rev_flag                VARCHAR2(1);
38878 l_accrual_line_num            NUMBER;
38879 l_tmp_amt                     NUMBER;
38880 l_acc_rev_natural_side_code   VARCHAR2(1);
38881 
38882 l_num_entries                 NUMBER;
38883 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
38884 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
38885 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
38886 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
38887 l_recog_line_1                NUMBER;
38888 l_recog_line_2                NUMBER;
38889 
38890 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
38891 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
38892 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
38893 
38894 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
38895 
38896 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
38897 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
38898 
38899 ---------------------------------------------------------------------------------------------------------------
38900 
38901 
38902 --
38903 -- bulk performance
38904 --
38905 l_balance_type_code           VARCHAR2(1);
38906 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
38907 l_log_module                  VARCHAR2(240);
38908 
38909 --
38910 -- Upgrade strategy
38911 --
38912 l_actual_upg_option           VARCHAR2(1);
38913 l_enc_upg_option           VARCHAR2(1);
38914 
38915 --
38916 BEGIN
38917 --
38918 IF g_log_enabled THEN
38919       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_73';
38920 END IF;
38921 --
38922 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38923 
38924       trace
38925          (p_msg      => 'BEGIN of AcctLineType_73'
38926          ,p_level    => C_LEVEL_PROCEDURE
38927          ,p_module   => l_log_module);
38928 
38929 END IF;
38930 --
38931 l_component_type             := 'AMB_JLT';
38932 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
38933 l_component_type_code        := 'S';
38934 l_component_appl_id          :=  707;
38935 l_amb_context_code           := 'DEFAULT';
38936 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
38937 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
38938 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
38939 l_line_definition_owner_code := 'S';
38940 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_SHIP';
38941 --
38942 l_balance_type_code          := 'A';
38943 l_segment                     := NULL;
38944 l_ccid                        := NULL;
38945 l_adr_transaction_coa_id      := NULL;
38946 l_adr_accounting_coa_id       := NULL;
38947 l_adr_flexfield_segment_code  := NULL;
38948 l_adr_flex_value_set_id       := NULL;
38949 l_adr_value_type_code         := NULL;
38950 l_adr_value_combination_id    := NULL;
38951 l_adr_value_segment_code      := NULL;
38952 
38953 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
38954 l_bflow_class_code           := '';    -- 4219869 Business Flow
38955 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
38956 l_budgetary_control_flag     := 'N';
38957 
38958 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
38959 l_bflow_applied_to_amt       := NULL; -- 5132302
38960 l_entered_amt_idx            := NULL;          -- 4262811
38961 l_accted_amt_idx             := NULL;          -- 4262811
38962 l_acc_rev_flag               := NULL;          -- 4262811
38963 l_accrual_line_num           := NULL;          -- 4262811
38964 l_tmp_amt                    := NULL;          -- 4262811
38965 --
38966  
38967 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
38968     l_balance_type_code <> 'B' THEN
38969 IF NVL(p_source_24,9E125) =  12
38970  THEN 
38971 
38972    --
38973    XLA_AE_LINES_PKG.SetNewLine;
38974 
38975    p_balance_type_code          := l_balance_type_code;
38976    -- set the flag so later we will know whether the gain loss line needs to be created
38977    
38978    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
38979      p_actual_flag :='A';
38980    END IF;
38981 
38982    --
38983    -- bulk performance
38984    --
38985    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
38986                                       p_header_num   => 0); -- 4262811
38987    --
38988    -- set accounting line options
38989    --
38990    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
38991            p_natural_side_code          => 'D'
38992          , p_gain_or_loss_flag          => 'N'
38993          , p_gl_transfer_mode_code      => 'S'
38994          , p_acct_entry_type_code       => 'A'
38995          , p_switch_side_flag           => 'Y'
38996          , p_merge_duplicate_code       => 'N'
38997          );
38998    --
38999    l_acc_rev_natural_side_code := 'C';  -- 4262811
39000    -- 
39001    --
39002    -- set accounting line type info
39003    --
39004    xla_ae_lines_pkg.SetAcctLineType
39005       (p_component_type             => l_component_type
39006       ,p_event_type_code            => l_event_type_code
39007       ,p_line_definition_owner_code => l_line_definition_owner_code
39008       ,p_line_definition_code       => l_line_definition_code
39009       ,p_accounting_line_code       => l_component_code
39010       ,p_accounting_line_type_code  => l_component_type_code
39011       ,p_accounting_line_appl_id    => l_component_appl_id
39012       ,p_amb_context_code           => l_amb_context_code
39013       ,p_entity_code                => l_entity_code
39014       ,p_event_class_code           => l_event_class_code);
39015    --
39016    -- set accounting class
39017    --
39018    xla_ae_lines_pkg.SetAcctClass(
39019            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
39020          , p_ae_header_id           => l_ae_header_id
39021          );
39022 
39023    --
39024    -- set rounding class
39025    --
39026    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
39027                       'INTERORG_FREIGHT_CHARGE';
39028 
39029    --
39030    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
39031    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
39032    --
39033    -- bulk performance
39034    --
39035    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
39036 
39037    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
39038       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
39039 
39040    -- 4955764
39041    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39042       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
39043 
39044    -- 4458381 Public Sector Enh
39045    
39046    --
39047    -- set accounting attributes for the line type
39048    --
39049    l_entered_amt_idx := 3;
39050    l_accted_amt_idx  := 8;
39051    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
39052    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
39053    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
39054    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
39055    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
39056    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
39057    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
39058    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
39059    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
39060    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
39061    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
39062    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
39063    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
39064    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
39065    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
39066    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
39067    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
39068 
39069    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
39070    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
39071 
39072    ---------------------------------------------------------------------------------------------------------------
39073    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
39074    ---------------------------------------------------------------------------------------------------------------
39075    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
39076 
39077    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39078    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39079 
39080    IF xla_accounting_cache_pkg.GetValueChar
39081          (p_source_code         => 'LEDGER_CATEGORY_CODE'
39082          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
39083    AND l_bflow_method_code = 'PRIOR_ENTRY'
39084 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
39085    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
39086          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
39087        )
39088    THEN
39089          xla_ae_lines_pkg.BflowUpgEntry
39090            (p_business_method_code    => l_bflow_method_code
39091            ,p_business_class_code     => l_bflow_class_code
39092            ,p_balance_type            => l_balance_type_code);
39093    ELSE
39094       NULL;
39095 -- No business flow processing for business flow method of NONE.
39096    END IF;
39097 
39098    --
39099    -- call analytical criteria
39100    --
39101    
39102    --
39103    -- call description
39104    --
39105    -- No description or it is inherited.
39106    --
39107    -- call ADRs
39108    -- Bug 4922099
39109    --
39110    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39111         (NVL(l_actual_upg_option, 'N') = 'O') OR
39112         (NVL(l_enc_upg_option, 'N') = 'O')
39113       )
39114    THEN
39115    NULL;
39116    --
39117    --
39118    
39119   l_ccid := AcctDerRule_4(
39120            p_application_id           => p_application_id
39121          , p_ae_header_id             => l_ae_header_id 
39122 , p_source_4 => p_source_4
39123          , x_transaction_coa_id       => l_adr_transaction_coa_id
39124          , x_accounting_coa_id        => l_adr_accounting_coa_id
39125          , x_value_type_code          => l_adr_value_type_code
39126          , p_side                     => 'NA'
39127    );
39128 
39129    xla_ae_lines_pkg.set_ccid(
39130     p_code_combination_id          => l_ccid
39131   , p_value_type_code              => l_adr_value_type_code
39132   , p_transaction_coa_id           => l_adr_transaction_coa_id
39133   , p_accounting_coa_id            => l_adr_accounting_coa_id
39134   , p_adr_code                     => 'CST_DEFAULT'
39135   , p_adr_type_code                => 'S'
39136   , p_component_type               => l_component_type
39137   , p_component_code               => l_component_code
39138   , p_component_type_code          => l_component_type_code
39139   , p_component_appl_id            => l_component_appl_id
39140   , p_amb_context_code             => l_amb_context_code
39141   , p_side                         => 'NA'
39142   );
39143 
39144 
39145    --
39146    --
39147    END IF;
39148    --
39149    -- Bug 4922099
39150    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
39151           (NVL(l_enc_upg_option, 'N') = 'O')
39152         ) AND
39153         (l_bflow_method_code = 'PRIOR_ENTRY')
39154       )
39155    THEN
39156       IF
39157       --
39158       1 = 2
39159       --
39160       THEN
39161       xla_accounting_err_pkg.build_message
39162                                     (p_appli_s_name            => 'XLA'
39163                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39164                                     ,p_token_1                 => 'LINE_NUMBER'
39165                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
39166                                     ,p_token_2                 => 'LINE_TYPE_NAME'
39167                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
39168                                                                              l_component_type
39169                                                                             ,l_component_code
39170                                                                             ,l_component_type_code
39171                                                                             ,l_component_appl_id
39172                                                                             ,l_amb_context_code
39173                                                                             ,l_entity_code
39174                                                                             ,l_event_class_code
39175                                                                            )
39176                                     ,p_token_3                 => 'OWNER'
39177                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
39178                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
39179                                                                           ,p_lookup_code    => l_component_type_code
39180                                                                          )
39181                                     ,p_token_4                 => 'PRODUCT_NAME'
39182                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
39183                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
39184                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
39185                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
39186                                     ,p_ae_header_id            =>  NULL
39187                                        );
39188 
39189         IF (C_LEVEL_ERROR>= g_log_level) THEN
39190                  trace
39191                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39192                       ,p_level    => C_LEVEL_ERROR
39193                       ,p_module   => l_log_module);
39194         END IF;
39195       END IF;
39196    END IF;
39197    --
39198    --
39199    ------------------------------------------------------------------------------------------------
39200    -- 4219869 Business Flow
39201    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
39202    -- Prior Entry.  Currently, the following code is always generated.
39203    ------------------------------------------------------------------------------------------------
39204    XLA_AE_LINES_PKG.ValidateCurrentLine;
39205 
39206    ------------------------------------------------------------------------------------
39207    -- 4219869 Business Flow
39208    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
39209    ------------------------------------------------------------------------------------
39210    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39211 
39212    ----------------------------------------------------------------------------------
39213    -- 4219869 Business Flow
39214    -- Update journal entry status -- Need to generate this within IF <condition>
39215    ----------------------------------------------------------------------------------
39216    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39217          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
39218          ,p_balance_type_code => l_balance_type_code
39219          );
39220 
39221    -------------------------------------------------------------------------------------------
39222    -- 4262811 - Generate the Accrual Reversal lines
39223    -------------------------------------------------------------------------------------------
39224    BEGIN
39225       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
39226                               (g_array_event(p_event_id).array_value_num('header_index'));
39227       IF l_acc_rev_flag IS NULL THEN
39228          l_acc_rev_flag := 'N';
39229       END IF;
39230    EXCEPTION
39231       WHEN OTHERS THEN
39232          l_acc_rev_flag := 'N';
39233    END;
39234    --
39235    IF (l_acc_rev_flag = 'Y') THEN
39236 
39237        -- 4645092  ------------------------------------------------------------------------------
39238        -- To allow MPA report to determine if it should generate report process
39239        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
39240        ------------------------------------------------------------------------------------------
39241 
39242        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
39243        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
39244    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
39245    -- call ADRs
39246    -- Bug 4922099
39247    --
39248    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39249         (NVL(l_actual_upg_option, 'N') = 'O') OR
39250         (NVL(l_enc_upg_option, 'N') = 'O')
39251       )
39252    THEN
39253    NULL;
39254    --
39255    --
39256    
39257   l_ccid := AcctDerRule_4(
39258            p_application_id           => p_application_id
39259          , p_ae_header_id             => l_ae_header_id 
39260 , p_source_4 => p_source_4
39261          , x_transaction_coa_id       => l_adr_transaction_coa_id
39262          , x_accounting_coa_id        => l_adr_accounting_coa_id
39263          , x_value_type_code          => l_adr_value_type_code
39264          , p_side                     => 'NA'
39265    );
39266 
39267    xla_ae_lines_pkg.set_ccid(
39268     p_code_combination_id          => l_ccid
39269   , p_value_type_code              => l_adr_value_type_code
39270   , p_transaction_coa_id           => l_adr_transaction_coa_id
39271   , p_accounting_coa_id            => l_adr_accounting_coa_id
39272   , p_adr_code                     => 'CST_DEFAULT'
39273   , p_adr_type_code                => 'S'
39274   , p_component_type               => l_component_type
39275   , p_component_code               => l_component_code
39276   , p_component_type_code          => l_component_type_code
39277   , p_component_appl_id            => l_component_appl_id
39278   , p_amb_context_code             => l_amb_context_code
39279   , p_side                         => 'NA'
39280   );
39281 
39282 
39283    --
39284    --
39285    END IF;
39286 
39287        --
39288        -- Update the line information that should be overwritten
39289        --
39290        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
39291                                          p_header_num   => 1);
39292        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
39293 
39294        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
39295 
39296        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
39297           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
39298        END IF;
39299 
39300       --
39301       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
39302       --
39303       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
39304           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
39305       ELSE
39306           ---------------------------------------------------------------------------------------------------
39307           -- 4262811a Switch Sign
39308           ---------------------------------------------------------------------------------------------------
39309           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
39310           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39311                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39312           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39313                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39314           -- 5132302
39315           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
39316                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39317 
39318       END IF;
39319 
39320       -- 4955764
39321       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39322       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
39323 
39324 
39325       XLA_AE_LINES_PKG.ValidateCurrentLine;
39326       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39327 
39328       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39329                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
39330                ,p_balance_type_code => l_balance_type_code);
39331 
39332    END IF;
39333 
39334    -----------------------------------------------------------------------------------------
39335    -- 4262811 Multiperiod Accounting
39336    -----------------------------------------------------------------------------------------
39337      -- No MPA option is assigned.
39338 
39339 
39340 END IF;
39341 END IF;
39342 --
39343 
39344 --
39345 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39346    trace
39347       (p_msg      => 'END of AcctLineType_73'
39348       ,p_level    => C_LEVEL_PROCEDURE
39349       ,p_module   => l_log_module);
39350 END IF;
39351 --
39352 EXCEPTION
39353   WHEN xla_exceptions_pkg.application_exception THEN
39354       RAISE;
39355   WHEN OTHERS THEN
39356        xla_exceptions_pkg.raise_message
39357            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_73');
39358 END AcctLineType_73;
39359 --
39360 
39361 ---------------------------------------
39362 --
39363 -- PRIVATE FUNCTION
39364 --         AcctLineType_74
39365 --
39366 ---------------------------------------
39367 PROCEDURE AcctLineType_74 (
39368   p_application_id        IN NUMBER
39369  ,p_event_id              IN NUMBER
39370  ,p_calculate_acctd_flag  IN VARCHAR2
39371  ,p_calculate_g_l_flag    IN VARCHAR2
39372  ,p_actual_flag           IN OUT VARCHAR2
39373  ,p_balance_type_code     OUT VARCHAR2
39374  ,p_gain_or_loss_ref      OUT VARCHAR2
39375  
39376 --Cost Management Default Account
39377  , p_source_4            IN NUMBER
39378 --DISTRIBUTION_IDENTIFIER
39379  , p_source_11            IN NUMBER
39380 --Distribution Type
39381  , p_source_12            IN VARCHAR2
39382  , p_source_12_meaning    IN VARCHAR2
39383 --Entered Currency Code
39384  , p_source_15            IN VARCHAR2
39385 --Entered Amount
39386  , p_source_18            IN NUMBER
39387 --Currency Conversion Date
39388  , p_source_19            IN DATE
39389 --Currency Conversion Rate
39390  , p_source_20            IN NUMBER
39391 --Currency Conversion Type
39392  , p_source_21            IN VARCHAR2
39393 --Accounted Amount
39394  , p_source_22            IN NUMBER
39395 --Accounting Line Type
39396  , p_source_24            IN NUMBER
39397 )
39398 IS
39399 
39400 l_component_type              VARCHAR2(80);
39401 l_component_code              VARCHAR2(30);
39402 l_component_type_code         VARCHAR2(1);
39403 l_component_appl_id           INTEGER;
39404 l_amb_context_code            VARCHAR2(30);
39405 l_entity_code                 VARCHAR2(30);
39406 l_event_class_code            VARCHAR2(30);
39407 l_ae_header_id                NUMBER;
39408 l_event_type_code             VARCHAR2(30);
39409 l_line_definition_code        VARCHAR2(30);
39410 l_line_definition_owner_code  VARCHAR2(1);
39411 --
39412 -- adr variables
39413 l_segment                     VARCHAR2(30);
39414 l_ccid                        NUMBER;
39415 l_adr_transaction_coa_id      NUMBER;
39416 l_adr_accounting_coa_id       NUMBER;
39417 l_adr_flexfield_segment_code  VARCHAR2(30);
39418 l_adr_flex_value_set_id       NUMBER;
39419 l_adr_value_type_code         VARCHAR2(30);
39420 l_adr_value_combination_id    NUMBER;
39421 l_adr_value_segment_code      VARCHAR2(30);
39422 
39423 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
39424 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
39425 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
39426 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
39427 
39428 -- 4262811 Variables ------------------------------------------------------------------------------------------
39429 l_entered_amt_idx             NUMBER;
39430 l_accted_amt_idx              NUMBER;
39431 l_acc_rev_flag                VARCHAR2(1);
39432 l_accrual_line_num            NUMBER;
39433 l_tmp_amt                     NUMBER;
39434 l_acc_rev_natural_side_code   VARCHAR2(1);
39435 
39436 l_num_entries                 NUMBER;
39437 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
39438 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
39439 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
39440 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
39441 l_recog_line_1                NUMBER;
39442 l_recog_line_2                NUMBER;
39443 
39444 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
39445 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
39446 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
39447 
39448 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
39449 
39450 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
39451 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
39452 
39453 ---------------------------------------------------------------------------------------------------------------
39454 
39455 
39456 --
39457 -- bulk performance
39458 --
39459 l_balance_type_code           VARCHAR2(1);
39460 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
39461 l_log_module                  VARCHAR2(240);
39462 
39463 --
39464 -- Upgrade strategy
39465 --
39466 l_actual_upg_option           VARCHAR2(1);
39467 l_enc_upg_option           VARCHAR2(1);
39468 
39469 --
39470 BEGIN
39471 --
39472 IF g_log_enabled THEN
39473       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_74';
39474 END IF;
39475 --
39476 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39477 
39478       trace
39479          (p_msg      => 'BEGIN of AcctLineType_74'
39480          ,p_level    => C_LEVEL_PROCEDURE
39481          ,p_module   => l_log_module);
39482 
39483 END IF;
39484 --
39485 l_component_type             := 'AMB_JLT';
39486 l_component_code             := 'INTERORG_PAYABLES';
39487 l_component_type_code        := 'S';
39488 l_component_appl_id          :=  707;
39489 l_amb_context_code           := 'DEFAULT';
39490 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
39491 l_event_class_code           := 'USER_DEFINE';
39492 l_event_type_code            := 'UDIR_INTERORG_RCPT_NO_TP';
39493 l_line_definition_owner_code := 'S';
39494 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_NO_TP';
39495 --
39496 l_balance_type_code          := 'A';
39497 l_segment                     := NULL;
39498 l_ccid                        := NULL;
39499 l_adr_transaction_coa_id      := NULL;
39500 l_adr_accounting_coa_id       := NULL;
39501 l_adr_flexfield_segment_code  := NULL;
39502 l_adr_flex_value_set_id       := NULL;
39503 l_adr_value_type_code         := NULL;
39504 l_adr_value_combination_id    := NULL;
39505 l_adr_value_segment_code      := NULL;
39506 
39507 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
39508 l_bflow_class_code           := '';    -- 4219869 Business Flow
39509 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
39510 l_budgetary_control_flag     := 'N';
39511 
39512 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
39513 l_bflow_applied_to_amt       := NULL; -- 5132302
39514 l_entered_amt_idx            := NULL;          -- 4262811
39515 l_accted_amt_idx             := NULL;          -- 4262811
39516 l_acc_rev_flag               := NULL;          -- 4262811
39517 l_accrual_line_num           := NULL;          -- 4262811
39518 l_tmp_amt                    := NULL;          -- 4262811
39519 --
39520  
39521 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
39522     l_balance_type_code <> 'B' THEN
39523 IF NVL(p_source_24,9E125) =  9
39524  THEN 
39525 
39526    --
39527    XLA_AE_LINES_PKG.SetNewLine;
39528 
39529    p_balance_type_code          := l_balance_type_code;
39530    -- set the flag so later we will know whether the gain loss line needs to be created
39531    
39532    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
39533      p_actual_flag :='A';
39534    END IF;
39535 
39536    --
39537    -- bulk performance
39538    --
39539    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
39540                                       p_header_num   => 0); -- 4262811
39541    --
39542    -- set accounting line options
39543    --
39544    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
39545            p_natural_side_code          => 'D'
39546          , p_gain_or_loss_flag          => 'N'
39547          , p_gl_transfer_mode_code      => 'S'
39548          , p_acct_entry_type_code       => 'A'
39549          , p_switch_side_flag           => 'Y'
39550          , p_merge_duplicate_code       => 'N'
39551          );
39552    --
39553    l_acc_rev_natural_side_code := 'C';  -- 4262811
39554    -- 
39555    --
39556    -- set accounting line type info
39557    --
39558    xla_ae_lines_pkg.SetAcctLineType
39559       (p_component_type             => l_component_type
39560       ,p_event_type_code            => l_event_type_code
39561       ,p_line_definition_owner_code => l_line_definition_owner_code
39562       ,p_line_definition_code       => l_line_definition_code
39563       ,p_accounting_line_code       => l_component_code
39564       ,p_accounting_line_type_code  => l_component_type_code
39565       ,p_accounting_line_appl_id    => l_component_appl_id
39566       ,p_amb_context_code           => l_amb_context_code
39567       ,p_entity_code                => l_entity_code
39568       ,p_event_class_code           => l_event_class_code);
39569    --
39570    -- set accounting class
39571    --
39572    xla_ae_lines_pkg.SetAcctClass(
39573            p_accounting_class_code  => 'INTERORG_PAYABLES'
39574          , p_ae_header_id           => l_ae_header_id
39575          );
39576 
39577    --
39578    -- set rounding class
39579    --
39580    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
39581                       'INTERORG_PAYABLES';
39582 
39583    --
39584    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
39585    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
39586    --
39587    -- bulk performance
39588    --
39589    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
39590 
39591    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
39592       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
39593 
39594    -- 4955764
39595    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39596       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
39597 
39598    -- 4458381 Public Sector Enh
39599    
39600    --
39601    -- set accounting attributes for the line type
39602    --
39603    l_entered_amt_idx := 3;
39604    l_accted_amt_idx  := 8;
39605    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
39606    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
39607    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
39608    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
39609    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
39610    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
39611    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
39612    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
39613    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
39614    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
39615    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
39616    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
39617    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
39618    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
39619    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
39620    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
39621    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
39622 
39623    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
39624    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
39625 
39626    ---------------------------------------------------------------------------------------------------------------
39627    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
39628    ---------------------------------------------------------------------------------------------------------------
39629    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
39630 
39631    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39632    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39633 
39634    IF xla_accounting_cache_pkg.GetValueChar
39635          (p_source_code         => 'LEDGER_CATEGORY_CODE'
39636          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
39637    AND l_bflow_method_code = 'PRIOR_ENTRY'
39638 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
39639    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
39640          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
39641        )
39642    THEN
39643          xla_ae_lines_pkg.BflowUpgEntry
39644            (p_business_method_code    => l_bflow_method_code
39645            ,p_business_class_code     => l_bflow_class_code
39646            ,p_balance_type            => l_balance_type_code);
39647    ELSE
39648       NULL;
39649 -- No business flow processing for business flow method of NONE.
39650    END IF;
39651 
39652    --
39653    -- call analytical criteria
39654    --
39655    
39656    --
39657    -- call description
39658    --
39659    -- No description or it is inherited.
39660    --
39661    -- call ADRs
39662    -- Bug 4922099
39663    --
39664    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39665         (NVL(l_actual_upg_option, 'N') = 'O') OR
39666         (NVL(l_enc_upg_option, 'N') = 'O')
39667       )
39668    THEN
39669    NULL;
39670    --
39671    --
39672    
39673   l_ccid := AcctDerRule_4(
39674            p_application_id           => p_application_id
39675          , p_ae_header_id             => l_ae_header_id 
39676 , p_source_4 => p_source_4
39677          , x_transaction_coa_id       => l_adr_transaction_coa_id
39678          , x_accounting_coa_id        => l_adr_accounting_coa_id
39679          , x_value_type_code          => l_adr_value_type_code
39680          , p_side                     => 'NA'
39681    );
39682 
39683    xla_ae_lines_pkg.set_ccid(
39684     p_code_combination_id          => l_ccid
39685   , p_value_type_code              => l_adr_value_type_code
39686   , p_transaction_coa_id           => l_adr_transaction_coa_id
39687   , p_accounting_coa_id            => l_adr_accounting_coa_id
39688   , p_adr_code                     => 'CST_DEFAULT'
39689   , p_adr_type_code                => 'S'
39690   , p_component_type               => l_component_type
39691   , p_component_code               => l_component_code
39692   , p_component_type_code          => l_component_type_code
39693   , p_component_appl_id            => l_component_appl_id
39694   , p_amb_context_code             => l_amb_context_code
39695   , p_side                         => 'NA'
39696   );
39697 
39698 
39699    --
39700    --
39701    END IF;
39702    --
39703    -- Bug 4922099
39704    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
39705           (NVL(l_enc_upg_option, 'N') = 'O')
39706         ) AND
39707         (l_bflow_method_code = 'PRIOR_ENTRY')
39708       )
39709    THEN
39710       IF
39711       --
39712       1 = 2
39713       --
39714       THEN
39715       xla_accounting_err_pkg.build_message
39716                                     (p_appli_s_name            => 'XLA'
39717                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39718                                     ,p_token_1                 => 'LINE_NUMBER'
39719                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
39720                                     ,p_token_2                 => 'LINE_TYPE_NAME'
39721                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
39722                                                                              l_component_type
39723                                                                             ,l_component_code
39724                                                                             ,l_component_type_code
39725                                                                             ,l_component_appl_id
39726                                                                             ,l_amb_context_code
39727                                                                             ,l_entity_code
39728                                                                             ,l_event_class_code
39729                                                                            )
39730                                     ,p_token_3                 => 'OWNER'
39731                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
39732                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
39733                                                                           ,p_lookup_code    => l_component_type_code
39734                                                                          )
39735                                     ,p_token_4                 => 'PRODUCT_NAME'
39736                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
39737                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
39738                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
39739                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
39740                                     ,p_ae_header_id            =>  NULL
39741                                        );
39742 
39743         IF (C_LEVEL_ERROR>= g_log_level) THEN
39744                  trace
39745                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39746                       ,p_level    => C_LEVEL_ERROR
39747                       ,p_module   => l_log_module);
39748         END IF;
39749       END IF;
39750    END IF;
39751    --
39752    --
39753    ------------------------------------------------------------------------------------------------
39754    -- 4219869 Business Flow
39755    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
39756    -- Prior Entry.  Currently, the following code is always generated.
39757    ------------------------------------------------------------------------------------------------
39758    XLA_AE_LINES_PKG.ValidateCurrentLine;
39759 
39760    ------------------------------------------------------------------------------------
39761    -- 4219869 Business Flow
39762    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
39763    ------------------------------------------------------------------------------------
39764    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39765 
39766    ----------------------------------------------------------------------------------
39767    -- 4219869 Business Flow
39768    -- Update journal entry status -- Need to generate this within IF <condition>
39769    ----------------------------------------------------------------------------------
39770    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39771          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
39772          ,p_balance_type_code => l_balance_type_code
39773          );
39774 
39775    -------------------------------------------------------------------------------------------
39776    -- 4262811 - Generate the Accrual Reversal lines
39777    -------------------------------------------------------------------------------------------
39778    BEGIN
39779       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
39780                               (g_array_event(p_event_id).array_value_num('header_index'));
39781       IF l_acc_rev_flag IS NULL THEN
39782          l_acc_rev_flag := 'N';
39783       END IF;
39784    EXCEPTION
39785       WHEN OTHERS THEN
39786          l_acc_rev_flag := 'N';
39787    END;
39788    --
39789    IF (l_acc_rev_flag = 'Y') THEN
39790 
39791        -- 4645092  ------------------------------------------------------------------------------
39792        -- To allow MPA report to determine if it should generate report process
39793        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
39794        ------------------------------------------------------------------------------------------
39795 
39796        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
39797        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
39798    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
39799    -- call ADRs
39800    -- Bug 4922099
39801    --
39802    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39803         (NVL(l_actual_upg_option, 'N') = 'O') OR
39804         (NVL(l_enc_upg_option, 'N') = 'O')
39805       )
39806    THEN
39807    NULL;
39808    --
39809    --
39810    
39811   l_ccid := AcctDerRule_4(
39812            p_application_id           => p_application_id
39813          , p_ae_header_id             => l_ae_header_id 
39814 , p_source_4 => p_source_4
39815          , x_transaction_coa_id       => l_adr_transaction_coa_id
39816          , x_accounting_coa_id        => l_adr_accounting_coa_id
39817          , x_value_type_code          => l_adr_value_type_code
39818          , p_side                     => 'NA'
39819    );
39820 
39821    xla_ae_lines_pkg.set_ccid(
39822     p_code_combination_id          => l_ccid
39823   , p_value_type_code              => l_adr_value_type_code
39824   , p_transaction_coa_id           => l_adr_transaction_coa_id
39825   , p_accounting_coa_id            => l_adr_accounting_coa_id
39826   , p_adr_code                     => 'CST_DEFAULT'
39827   , p_adr_type_code                => 'S'
39828   , p_component_type               => l_component_type
39829   , p_component_code               => l_component_code
39830   , p_component_type_code          => l_component_type_code
39831   , p_component_appl_id            => l_component_appl_id
39832   , p_amb_context_code             => l_amb_context_code
39833   , p_side                         => 'NA'
39834   );
39835 
39836 
39837    --
39838    --
39839    END IF;
39840 
39841        --
39842        -- Update the line information that should be overwritten
39843        --
39844        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
39845                                          p_header_num   => 1);
39846        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
39847 
39848        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
39849 
39850        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
39851           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
39852        END IF;
39853 
39854       --
39855       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
39856       --
39857       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
39858           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
39859       ELSE
39860           ---------------------------------------------------------------------------------------------------
39861           -- 4262811a Switch Sign
39862           ---------------------------------------------------------------------------------------------------
39863           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
39864           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39865                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39866           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39867                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39868           -- 5132302
39869           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
39870                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39871 
39872       END IF;
39873 
39874       -- 4955764
39875       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39876       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
39877 
39878 
39879       XLA_AE_LINES_PKG.ValidateCurrentLine;
39880       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39881 
39882       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39883                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
39884                ,p_balance_type_code => l_balance_type_code);
39885 
39886    END IF;
39887 
39888    -----------------------------------------------------------------------------------------
39889    -- 4262811 Multiperiod Accounting
39890    -----------------------------------------------------------------------------------------
39891      -- No MPA option is assigned.
39892 
39893 
39894 END IF;
39895 END IF;
39896 --
39897 
39898 --
39899 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39900    trace
39901       (p_msg      => 'END of AcctLineType_74'
39902       ,p_level    => C_LEVEL_PROCEDURE
39903       ,p_module   => l_log_module);
39904 END IF;
39905 --
39906 EXCEPTION
39907   WHEN xla_exceptions_pkg.application_exception THEN
39908       RAISE;
39909   WHEN OTHERS THEN
39910        xla_exceptions_pkg.raise_message
39911            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_74');
39912 END AcctLineType_74;
39913 --
39914 
39915 ---------------------------------------
39916 --
39917 -- PRIVATE FUNCTION
39918 --         AcctLineType_75
39919 --
39920 ---------------------------------------
39921 PROCEDURE AcctLineType_75 (
39922   p_application_id        IN NUMBER
39923  ,p_event_id              IN NUMBER
39924  ,p_calculate_acctd_flag  IN VARCHAR2
39925  ,p_calculate_g_l_flag    IN VARCHAR2
39926  ,p_actual_flag           IN OUT VARCHAR2
39927  ,p_balance_type_code     OUT VARCHAR2
39928  ,p_gain_or_loss_ref      OUT VARCHAR2
39929  
39930 --Cost Management Default Account
39931  , p_source_4            IN NUMBER
39932 --DISTRIBUTION_IDENTIFIER
39933  , p_source_11            IN NUMBER
39934 --Distribution Type
39935  , p_source_12            IN VARCHAR2
39936  , p_source_12_meaning    IN VARCHAR2
39937 --Entered Currency Code
39938  , p_source_15            IN VARCHAR2
39939 --Entered Amount
39940  , p_source_18            IN NUMBER
39941 --Currency Conversion Date
39942  , p_source_19            IN DATE
39943 --Currency Conversion Rate
39944  , p_source_20            IN NUMBER
39945 --Currency Conversion Type
39946  , p_source_21            IN VARCHAR2
39947 --Accounted Amount
39948  , p_source_22            IN NUMBER
39949 --Accounting Line Type
39950  , p_source_24            IN NUMBER
39951 )
39952 IS
39953 
39954 l_component_type              VARCHAR2(80);
39955 l_component_code              VARCHAR2(30);
39956 l_component_type_code         VARCHAR2(1);
39957 l_component_appl_id           INTEGER;
39958 l_amb_context_code            VARCHAR2(30);
39959 l_entity_code                 VARCHAR2(30);
39960 l_event_class_code            VARCHAR2(30);
39961 l_ae_header_id                NUMBER;
39962 l_event_type_code             VARCHAR2(30);
39963 l_line_definition_code        VARCHAR2(30);
39964 l_line_definition_owner_code  VARCHAR2(1);
39965 --
39966 -- adr variables
39967 l_segment                     VARCHAR2(30);
39968 l_ccid                        NUMBER;
39969 l_adr_transaction_coa_id      NUMBER;
39970 l_adr_accounting_coa_id       NUMBER;
39971 l_adr_flexfield_segment_code  VARCHAR2(30);
39972 l_adr_flex_value_set_id       NUMBER;
39973 l_adr_value_type_code         VARCHAR2(30);
39974 l_adr_value_combination_id    NUMBER;
39975 l_adr_value_segment_code      VARCHAR2(30);
39976 
39977 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
39978 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
39979 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
39980 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
39981 
39982 -- 4262811 Variables ------------------------------------------------------------------------------------------
39983 l_entered_amt_idx             NUMBER;
39984 l_accted_amt_idx              NUMBER;
39985 l_acc_rev_flag                VARCHAR2(1);
39986 l_accrual_line_num            NUMBER;
39987 l_tmp_amt                     NUMBER;
39988 l_acc_rev_natural_side_code   VARCHAR2(1);
39989 
39990 l_num_entries                 NUMBER;
39991 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
39992 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
39993 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
39994 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
39995 l_recog_line_1                NUMBER;
39996 l_recog_line_2                NUMBER;
39997 
39998 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
39999 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
40000 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
40001 
40002 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
40003 
40004 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
40005 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
40006 
40007 ---------------------------------------------------------------------------------------------------------------
40008 
40009 
40010 --
40011 -- bulk performance
40012 --
40013 l_balance_type_code           VARCHAR2(1);
40014 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
40015 l_log_module                  VARCHAR2(240);
40016 
40017 --
40018 -- Upgrade strategy
40019 --
40020 l_actual_upg_option           VARCHAR2(1);
40021 l_enc_upg_option           VARCHAR2(1);
40022 
40023 --
40024 BEGIN
40025 --
40026 IF g_log_enabled THEN
40027       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_75';
40028 END IF;
40029 --
40030 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40031 
40032       trace
40033          (p_msg      => 'BEGIN of AcctLineType_75'
40034          ,p_level    => C_LEVEL_PROCEDURE
40035          ,p_module   => l_log_module);
40036 
40037 END IF;
40038 --
40039 l_component_type             := 'AMB_JLT';
40040 l_component_code             := 'INTERORG_PAYABLES';
40041 l_component_type_code        := 'S';
40042 l_component_appl_id          :=  707;
40043 l_amb_context_code           := 'DEFAULT';
40044 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
40045 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
40046 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
40047 l_line_definition_owner_code := 'S';
40048 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_SHIP';
40049 --
40050 l_balance_type_code          := 'A';
40051 l_segment                     := NULL;
40052 l_ccid                        := NULL;
40053 l_adr_transaction_coa_id      := NULL;
40054 l_adr_accounting_coa_id       := NULL;
40055 l_adr_flexfield_segment_code  := NULL;
40056 l_adr_flex_value_set_id       := NULL;
40057 l_adr_value_type_code         := NULL;
40058 l_adr_value_combination_id    := NULL;
40059 l_adr_value_segment_code      := NULL;
40060 
40061 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
40062 l_bflow_class_code           := '';    -- 4219869 Business Flow
40063 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
40064 l_budgetary_control_flag     := 'N';
40065 
40066 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
40067 l_bflow_applied_to_amt       := NULL; -- 5132302
40068 l_entered_amt_idx            := NULL;          -- 4262811
40069 l_accted_amt_idx             := NULL;          -- 4262811
40070 l_acc_rev_flag               := NULL;          -- 4262811
40071 l_accrual_line_num           := NULL;          -- 4262811
40072 l_tmp_amt                    := NULL;          -- 4262811
40073 --
40074  
40075 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
40076     l_balance_type_code <> 'B' THEN
40077 IF NVL(p_source_24,9E125) =  9
40078  THEN 
40079 
40080    --
40081    XLA_AE_LINES_PKG.SetNewLine;
40082 
40083    p_balance_type_code          := l_balance_type_code;
40084    -- set the flag so later we will know whether the gain loss line needs to be created
40085    
40086    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
40087      p_actual_flag :='A';
40088    END IF;
40089 
40090    --
40091    -- bulk performance
40092    --
40093    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
40094                                       p_header_num   => 0); -- 4262811
40095    --
40096    -- set accounting line options
40097    --
40098    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
40099            p_natural_side_code          => 'D'
40100          , p_gain_or_loss_flag          => 'N'
40101          , p_gl_transfer_mode_code      => 'S'
40102          , p_acct_entry_type_code       => 'A'
40103          , p_switch_side_flag           => 'Y'
40104          , p_merge_duplicate_code       => 'N'
40105          );
40106    --
40107    l_acc_rev_natural_side_code := 'C';  -- 4262811
40108    -- 
40109    --
40110    -- set accounting line type info
40111    --
40112    xla_ae_lines_pkg.SetAcctLineType
40113       (p_component_type             => l_component_type
40114       ,p_event_type_code            => l_event_type_code
40115       ,p_line_definition_owner_code => l_line_definition_owner_code
40116       ,p_line_definition_code       => l_line_definition_code
40117       ,p_accounting_line_code       => l_component_code
40118       ,p_accounting_line_type_code  => l_component_type_code
40119       ,p_accounting_line_appl_id    => l_component_appl_id
40120       ,p_amb_context_code           => l_amb_context_code
40121       ,p_entity_code                => l_entity_code
40122       ,p_event_class_code           => l_event_class_code);
40123    --
40124    -- set accounting class
40125    --
40126    xla_ae_lines_pkg.SetAcctClass(
40127            p_accounting_class_code  => 'INTERORG_PAYABLES'
40128          , p_ae_header_id           => l_ae_header_id
40129          );
40130 
40131    --
40132    -- set rounding class
40133    --
40134    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
40135                       'INTERORG_PAYABLES';
40136 
40137    --
40138    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
40139    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
40140    --
40141    -- bulk performance
40142    --
40143    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
40144 
40145    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
40146       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
40147 
40148    -- 4955764
40149    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40150       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
40151 
40152    -- 4458381 Public Sector Enh
40153    
40154    --
40155    -- set accounting attributes for the line type
40156    --
40157    l_entered_amt_idx := 3;
40158    l_accted_amt_idx  := 8;
40159    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
40160    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
40161    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
40162    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
40163    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
40164    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
40165    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
40166    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
40167    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
40168    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
40169    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
40170    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
40171    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
40172    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
40173    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
40174    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
40175    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
40176 
40177    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
40178    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
40179 
40180    ---------------------------------------------------------------------------------------------------------------
40181    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
40182    ---------------------------------------------------------------------------------------------------------------
40183    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
40184 
40185    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40186    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40187 
40188    IF xla_accounting_cache_pkg.GetValueChar
40189          (p_source_code         => 'LEDGER_CATEGORY_CODE'
40190          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
40191    AND l_bflow_method_code = 'PRIOR_ENTRY'
40192 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
40193    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
40194          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
40195        )
40196    THEN
40197          xla_ae_lines_pkg.BflowUpgEntry
40198            (p_business_method_code    => l_bflow_method_code
40199            ,p_business_class_code     => l_bflow_class_code
40200            ,p_balance_type            => l_balance_type_code);
40201    ELSE
40202       NULL;
40203 -- No business flow processing for business flow method of NONE.
40204    END IF;
40205 
40206    --
40207    -- call analytical criteria
40208    --
40209    
40210    --
40211    -- call description
40212    --
40213    -- No description or it is inherited.
40214    --
40215    -- call ADRs
40216    -- Bug 4922099
40217    --
40218    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40219         (NVL(l_actual_upg_option, 'N') = 'O') OR
40220         (NVL(l_enc_upg_option, 'N') = 'O')
40221       )
40222    THEN
40223    NULL;
40224    --
40225    --
40226    
40227   l_ccid := AcctDerRule_4(
40228            p_application_id           => p_application_id
40229          , p_ae_header_id             => l_ae_header_id 
40230 , p_source_4 => p_source_4
40231          , x_transaction_coa_id       => l_adr_transaction_coa_id
40232          , x_accounting_coa_id        => l_adr_accounting_coa_id
40233          , x_value_type_code          => l_adr_value_type_code
40234          , p_side                     => 'NA'
40235    );
40236 
40237    xla_ae_lines_pkg.set_ccid(
40238     p_code_combination_id          => l_ccid
40239   , p_value_type_code              => l_adr_value_type_code
40240   , p_transaction_coa_id           => l_adr_transaction_coa_id
40241   , p_accounting_coa_id            => l_adr_accounting_coa_id
40242   , p_adr_code                     => 'CST_DEFAULT'
40243   , p_adr_type_code                => 'S'
40244   , p_component_type               => l_component_type
40245   , p_component_code               => l_component_code
40246   , p_component_type_code          => l_component_type_code
40247   , p_component_appl_id            => l_component_appl_id
40248   , p_amb_context_code             => l_amb_context_code
40249   , p_side                         => 'NA'
40250   );
40251 
40252 
40253    --
40254    --
40255    END IF;
40256    --
40257    -- Bug 4922099
40258    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
40259           (NVL(l_enc_upg_option, 'N') = 'O')
40260         ) AND
40261         (l_bflow_method_code = 'PRIOR_ENTRY')
40262       )
40263    THEN
40264       IF
40265       --
40266       1 = 2
40267       --
40268       THEN
40269       xla_accounting_err_pkg.build_message
40270                                     (p_appli_s_name            => 'XLA'
40271                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40272                                     ,p_token_1                 => 'LINE_NUMBER'
40273                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
40274                                     ,p_token_2                 => 'LINE_TYPE_NAME'
40275                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
40276                                                                              l_component_type
40277                                                                             ,l_component_code
40278                                                                             ,l_component_type_code
40279                                                                             ,l_component_appl_id
40280                                                                             ,l_amb_context_code
40281                                                                             ,l_entity_code
40282                                                                             ,l_event_class_code
40283                                                                            )
40284                                     ,p_token_3                 => 'OWNER'
40285                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
40286                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
40287                                                                           ,p_lookup_code    => l_component_type_code
40288                                                                          )
40289                                     ,p_token_4                 => 'PRODUCT_NAME'
40290                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
40291                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
40292                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
40293                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
40294                                     ,p_ae_header_id            =>  NULL
40295                                        );
40296 
40297         IF (C_LEVEL_ERROR>= g_log_level) THEN
40298                  trace
40299                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40300                       ,p_level    => C_LEVEL_ERROR
40301                       ,p_module   => l_log_module);
40302         END IF;
40303       END IF;
40304    END IF;
40305    --
40306    --
40307    ------------------------------------------------------------------------------------------------
40308    -- 4219869 Business Flow
40309    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
40310    -- Prior Entry.  Currently, the following code is always generated.
40311    ------------------------------------------------------------------------------------------------
40312    XLA_AE_LINES_PKG.ValidateCurrentLine;
40313 
40314    ------------------------------------------------------------------------------------
40315    -- 4219869 Business Flow
40316    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
40317    ------------------------------------------------------------------------------------
40318    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40319 
40320    ----------------------------------------------------------------------------------
40321    -- 4219869 Business Flow
40322    -- Update journal entry status -- Need to generate this within IF <condition>
40323    ----------------------------------------------------------------------------------
40324    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40325          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
40326          ,p_balance_type_code => l_balance_type_code
40327          );
40328 
40329    -------------------------------------------------------------------------------------------
40330    -- 4262811 - Generate the Accrual Reversal lines
40331    -------------------------------------------------------------------------------------------
40332    BEGIN
40333       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
40334                               (g_array_event(p_event_id).array_value_num('header_index'));
40335       IF l_acc_rev_flag IS NULL THEN
40336          l_acc_rev_flag := 'N';
40337       END IF;
40338    EXCEPTION
40339       WHEN OTHERS THEN
40340          l_acc_rev_flag := 'N';
40341    END;
40342    --
40343    IF (l_acc_rev_flag = 'Y') THEN
40344 
40345        -- 4645092  ------------------------------------------------------------------------------
40346        -- To allow MPA report to determine if it should generate report process
40347        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
40348        ------------------------------------------------------------------------------------------
40349 
40350        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
40351        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
40352    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
40353    -- call ADRs
40354    -- Bug 4922099
40355    --
40356    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40357         (NVL(l_actual_upg_option, 'N') = 'O') OR
40358         (NVL(l_enc_upg_option, 'N') = 'O')
40359       )
40360    THEN
40361    NULL;
40362    --
40363    --
40364    
40365   l_ccid := AcctDerRule_4(
40366            p_application_id           => p_application_id
40367          , p_ae_header_id             => l_ae_header_id 
40368 , p_source_4 => p_source_4
40369          , x_transaction_coa_id       => l_adr_transaction_coa_id
40370          , x_accounting_coa_id        => l_adr_accounting_coa_id
40371          , x_value_type_code          => l_adr_value_type_code
40372          , p_side                     => 'NA'
40373    );
40374 
40375    xla_ae_lines_pkg.set_ccid(
40376     p_code_combination_id          => l_ccid
40377   , p_value_type_code              => l_adr_value_type_code
40378   , p_transaction_coa_id           => l_adr_transaction_coa_id
40379   , p_accounting_coa_id            => l_adr_accounting_coa_id
40380   , p_adr_code                     => 'CST_DEFAULT'
40381   , p_adr_type_code                => 'S'
40382   , p_component_type               => l_component_type
40383   , p_component_code               => l_component_code
40384   , p_component_type_code          => l_component_type_code
40385   , p_component_appl_id            => l_component_appl_id
40386   , p_amb_context_code             => l_amb_context_code
40387   , p_side                         => 'NA'
40388   );
40389 
40390 
40391    --
40392    --
40393    END IF;
40394 
40395        --
40396        -- Update the line information that should be overwritten
40397        --
40398        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
40399                                          p_header_num   => 1);
40400        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
40401 
40402        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
40403 
40404        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
40405           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
40406        END IF;
40407 
40408       --
40409       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
40410       --
40411       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
40412           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
40413       ELSE
40414           ---------------------------------------------------------------------------------------------------
40415           -- 4262811a Switch Sign
40416           ---------------------------------------------------------------------------------------------------
40417           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
40418           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40419                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40420           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40421                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40422           -- 5132302
40423           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
40424                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40425 
40426       END IF;
40427 
40428       -- 4955764
40429       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40430       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
40431 
40432 
40433       XLA_AE_LINES_PKG.ValidateCurrentLine;
40434       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40435 
40436       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40437                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
40438                ,p_balance_type_code => l_balance_type_code);
40439 
40440    END IF;
40441 
40442    -----------------------------------------------------------------------------------------
40443    -- 4262811 Multiperiod Accounting
40444    -----------------------------------------------------------------------------------------
40445      -- No MPA option is assigned.
40446 
40447 
40448 END IF;
40449 END IF;
40450 --
40451 
40452 --
40453 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40454    trace
40455       (p_msg      => 'END of AcctLineType_75'
40456       ,p_level    => C_LEVEL_PROCEDURE
40457       ,p_module   => l_log_module);
40458 END IF;
40459 --
40460 EXCEPTION
40461   WHEN xla_exceptions_pkg.application_exception THEN
40462       RAISE;
40463   WHEN OTHERS THEN
40464        xla_exceptions_pkg.raise_message
40465            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_75');
40466 END AcctLineType_75;
40467 --
40468 
40469 ---------------------------------------
40470 --
40471 -- PRIVATE FUNCTION
40472 --         AcctLineType_76
40473 --
40474 ---------------------------------------
40475 PROCEDURE AcctLineType_76 (
40476   p_application_id        IN NUMBER
40477  ,p_event_id              IN NUMBER
40478  ,p_calculate_acctd_flag  IN VARCHAR2
40479  ,p_calculate_g_l_flag    IN VARCHAR2
40480  ,p_actual_flag           IN OUT VARCHAR2
40481  ,p_balance_type_code     OUT VARCHAR2
40482  ,p_gain_or_loss_ref      OUT VARCHAR2
40483  
40484 --Cost Management Default Account
40485  , p_source_4            IN NUMBER
40486 --DISTRIBUTION_IDENTIFIER
40487  , p_source_11            IN NUMBER
40488 --Distribution Type
40489  , p_source_12            IN VARCHAR2
40490  , p_source_12_meaning    IN VARCHAR2
40491 --Entered Currency Code
40492  , p_source_15            IN VARCHAR2
40493 --Entered Amount
40494  , p_source_18            IN NUMBER
40495 --Currency Conversion Date
40496  , p_source_19            IN DATE
40497 --Currency Conversion Rate
40498  , p_source_20            IN NUMBER
40499 --Currency Conversion Type
40500  , p_source_21            IN VARCHAR2
40501 --Accounted Amount
40502  , p_source_22            IN NUMBER
40503 --Accounting Line Type
40504  , p_source_24            IN NUMBER
40505 )
40506 IS
40507 
40508 l_component_type              VARCHAR2(80);
40509 l_component_code              VARCHAR2(30);
40510 l_component_type_code         VARCHAR2(1);
40511 l_component_appl_id           INTEGER;
40512 l_amb_context_code            VARCHAR2(30);
40513 l_entity_code                 VARCHAR2(30);
40514 l_event_class_code            VARCHAR2(30);
40515 l_ae_header_id                NUMBER;
40516 l_event_type_code             VARCHAR2(30);
40517 l_line_definition_code        VARCHAR2(30);
40518 l_line_definition_owner_code  VARCHAR2(1);
40519 --
40520 -- adr variables
40521 l_segment                     VARCHAR2(30);
40522 l_ccid                        NUMBER;
40523 l_adr_transaction_coa_id      NUMBER;
40524 l_adr_accounting_coa_id       NUMBER;
40525 l_adr_flexfield_segment_code  VARCHAR2(30);
40526 l_adr_flex_value_set_id       NUMBER;
40527 l_adr_value_type_code         VARCHAR2(30);
40528 l_adr_value_combination_id    NUMBER;
40529 l_adr_value_segment_code      VARCHAR2(30);
40530 
40531 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
40532 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
40533 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
40534 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
40535 
40536 -- 4262811 Variables ------------------------------------------------------------------------------------------
40537 l_entered_amt_idx             NUMBER;
40538 l_accted_amt_idx              NUMBER;
40539 l_acc_rev_flag                VARCHAR2(1);
40540 l_accrual_line_num            NUMBER;
40541 l_tmp_amt                     NUMBER;
40542 l_acc_rev_natural_side_code   VARCHAR2(1);
40543 
40544 l_num_entries                 NUMBER;
40545 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
40546 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
40547 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
40548 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
40549 l_recog_line_1                NUMBER;
40550 l_recog_line_2                NUMBER;
40551 
40552 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
40553 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
40554 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
40555 
40556 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
40557 
40558 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
40559 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
40560 
40561 ---------------------------------------------------------------------------------------------------------------
40562 
40563 
40564 --
40565 -- bulk performance
40566 --
40567 l_balance_type_code           VARCHAR2(1);
40568 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
40569 l_log_module                  VARCHAR2(240);
40570 
40571 --
40572 -- Upgrade strategy
40573 --
40574 l_actual_upg_option           VARCHAR2(1);
40575 l_enc_upg_option           VARCHAR2(1);
40576 
40577 --
40578 BEGIN
40579 --
40580 IF g_log_enabled THEN
40581       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_76';
40582 END IF;
40583 --
40584 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40585 
40586       trace
40587          (p_msg      => 'BEGIN of AcctLineType_76'
40588          ,p_level    => C_LEVEL_PROCEDURE
40589          ,p_module   => l_log_module);
40590 
40591 END IF;
40592 --
40593 l_component_type             := 'AMB_JLT';
40594 l_component_code             := 'INTERORG_PAYABLES';
40595 l_component_type_code        := 'S';
40596 l_component_appl_id          :=  707;
40597 l_amb_context_code           := 'DEFAULT';
40598 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
40599 l_event_class_code           := 'DIR_INTERORG_SHIP';
40600 l_event_type_code            := 'DIR_INTERORG_SHIP_ALL';
40601 l_line_definition_owner_code := 'S';
40602 l_line_definition_code       := 'DIRECT_INTERORG_SHIP';
40603 --
40604 l_balance_type_code          := 'A';
40605 l_segment                     := NULL;
40606 l_ccid                        := NULL;
40607 l_adr_transaction_coa_id      := NULL;
40608 l_adr_accounting_coa_id       := NULL;
40609 l_adr_flexfield_segment_code  := NULL;
40610 l_adr_flex_value_set_id       := NULL;
40611 l_adr_value_type_code         := NULL;
40612 l_adr_value_combination_id    := NULL;
40613 l_adr_value_segment_code      := NULL;
40614 
40615 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
40616 l_bflow_class_code           := '';    -- 4219869 Business Flow
40617 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
40618 l_budgetary_control_flag     := 'N';
40619 
40620 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
40621 l_bflow_applied_to_amt       := NULL; -- 5132302
40622 l_entered_amt_idx            := NULL;          -- 4262811
40623 l_accted_amt_idx             := NULL;          -- 4262811
40624 l_acc_rev_flag               := NULL;          -- 4262811
40625 l_accrual_line_num           := NULL;          -- 4262811
40626 l_tmp_amt                    := NULL;          -- 4262811
40627 --
40628  
40629 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
40630     l_balance_type_code <> 'B' THEN
40631 IF NVL(p_source_24,9E125) =  9
40632  THEN 
40633 
40634    --
40635    XLA_AE_LINES_PKG.SetNewLine;
40636 
40637    p_balance_type_code          := l_balance_type_code;
40638    -- set the flag so later we will know whether the gain loss line needs to be created
40639    
40640    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
40641      p_actual_flag :='A';
40642    END IF;
40643 
40644    --
40645    -- bulk performance
40646    --
40647    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
40648                                       p_header_num   => 0); -- 4262811
40649    --
40650    -- set accounting line options
40651    --
40652    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
40653            p_natural_side_code          => 'D'
40654          , p_gain_or_loss_flag          => 'N'
40655          , p_gl_transfer_mode_code      => 'S'
40656          , p_acct_entry_type_code       => 'A'
40657          , p_switch_side_flag           => 'Y'
40658          , p_merge_duplicate_code       => 'N'
40659          );
40660    --
40661    l_acc_rev_natural_side_code := 'C';  -- 4262811
40662    -- 
40663    --
40664    -- set accounting line type info
40665    --
40666    xla_ae_lines_pkg.SetAcctLineType
40667       (p_component_type             => l_component_type
40668       ,p_event_type_code            => l_event_type_code
40669       ,p_line_definition_owner_code => l_line_definition_owner_code
40670       ,p_line_definition_code       => l_line_definition_code
40671       ,p_accounting_line_code       => l_component_code
40672       ,p_accounting_line_type_code  => l_component_type_code
40673       ,p_accounting_line_appl_id    => l_component_appl_id
40674       ,p_amb_context_code           => l_amb_context_code
40675       ,p_entity_code                => l_entity_code
40676       ,p_event_class_code           => l_event_class_code);
40677    --
40678    -- set accounting class
40679    --
40680    xla_ae_lines_pkg.SetAcctClass(
40681            p_accounting_class_code  => 'INTERORG_PAYABLES'
40682          , p_ae_header_id           => l_ae_header_id
40683          );
40684 
40685    --
40686    -- set rounding class
40687    --
40688    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
40689                       'INTERORG_PAYABLES';
40690 
40691    --
40692    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
40693    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
40694    --
40695    -- bulk performance
40696    --
40697    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
40698 
40699    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
40700       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
40701 
40702    -- 4955764
40703    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40704       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
40705 
40706    -- 4458381 Public Sector Enh
40707    
40708    --
40709    -- set accounting attributes for the line type
40710    --
40711    l_entered_amt_idx := 3;
40712    l_accted_amt_idx  := 8;
40713    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
40714    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
40715    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
40716    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
40717    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
40718    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
40719    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
40720    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
40721    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
40722    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
40723    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
40724    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
40725    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
40726    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
40727    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
40728    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
40729    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
40730 
40731    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
40732    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
40733 
40734    ---------------------------------------------------------------------------------------------------------------
40735    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
40736    ---------------------------------------------------------------------------------------------------------------
40737    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
40738 
40739    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40740    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40741 
40742    IF xla_accounting_cache_pkg.GetValueChar
40743          (p_source_code         => 'LEDGER_CATEGORY_CODE'
40744          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
40745    AND l_bflow_method_code = 'PRIOR_ENTRY'
40746 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
40747    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
40748          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
40749        )
40750    THEN
40751          xla_ae_lines_pkg.BflowUpgEntry
40752            (p_business_method_code    => l_bflow_method_code
40753            ,p_business_class_code     => l_bflow_class_code
40754            ,p_balance_type            => l_balance_type_code);
40755    ELSE
40756       NULL;
40757 -- No business flow processing for business flow method of NONE.
40758    END IF;
40759 
40760    --
40761    -- call analytical criteria
40762    --
40763    
40764    --
40765    -- call description
40766    --
40767    -- No description or it is inherited.
40768    --
40769    -- call ADRs
40770    -- Bug 4922099
40771    --
40772    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40773         (NVL(l_actual_upg_option, 'N') = 'O') OR
40774         (NVL(l_enc_upg_option, 'N') = 'O')
40775       )
40776    THEN
40777    NULL;
40778    --
40779    --
40780    
40781   l_ccid := AcctDerRule_4(
40782            p_application_id           => p_application_id
40783          , p_ae_header_id             => l_ae_header_id 
40784 , p_source_4 => p_source_4
40785          , x_transaction_coa_id       => l_adr_transaction_coa_id
40786          , x_accounting_coa_id        => l_adr_accounting_coa_id
40787          , x_value_type_code          => l_adr_value_type_code
40788          , p_side                     => 'NA'
40789    );
40790 
40791    xla_ae_lines_pkg.set_ccid(
40792     p_code_combination_id          => l_ccid
40793   , p_value_type_code              => l_adr_value_type_code
40794   , p_transaction_coa_id           => l_adr_transaction_coa_id
40795   , p_accounting_coa_id            => l_adr_accounting_coa_id
40796   , p_adr_code                     => 'CST_DEFAULT'
40797   , p_adr_type_code                => 'S'
40798   , p_component_type               => l_component_type
40799   , p_component_code               => l_component_code
40800   , p_component_type_code          => l_component_type_code
40801   , p_component_appl_id            => l_component_appl_id
40802   , p_amb_context_code             => l_amb_context_code
40803   , p_side                         => 'NA'
40804   );
40805 
40806 
40807    --
40808    --
40809    END IF;
40810    --
40811    -- Bug 4922099
40812    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
40813           (NVL(l_enc_upg_option, 'N') = 'O')
40814         ) AND
40815         (l_bflow_method_code = 'PRIOR_ENTRY')
40816       )
40817    THEN
40818       IF
40819       --
40820       1 = 2
40821       --
40822       THEN
40823       xla_accounting_err_pkg.build_message
40824                                     (p_appli_s_name            => 'XLA'
40825                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40826                                     ,p_token_1                 => 'LINE_NUMBER'
40827                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
40828                                     ,p_token_2                 => 'LINE_TYPE_NAME'
40829                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
40830                                                                              l_component_type
40831                                                                             ,l_component_code
40832                                                                             ,l_component_type_code
40833                                                                             ,l_component_appl_id
40834                                                                             ,l_amb_context_code
40835                                                                             ,l_entity_code
40836                                                                             ,l_event_class_code
40837                                                                            )
40838                                     ,p_token_3                 => 'OWNER'
40839                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
40840                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
40841                                                                           ,p_lookup_code    => l_component_type_code
40842                                                                          )
40843                                     ,p_token_4                 => 'PRODUCT_NAME'
40844                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
40845                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
40846                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
40847                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
40848                                     ,p_ae_header_id            =>  NULL
40849                                        );
40850 
40851         IF (C_LEVEL_ERROR>= g_log_level) THEN
40852                  trace
40853                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40854                       ,p_level    => C_LEVEL_ERROR
40855                       ,p_module   => l_log_module);
40856         END IF;
40857       END IF;
40858    END IF;
40859    --
40860    --
40861    ------------------------------------------------------------------------------------------------
40862    -- 4219869 Business Flow
40863    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
40864    -- Prior Entry.  Currently, the following code is always generated.
40865    ------------------------------------------------------------------------------------------------
40866    XLA_AE_LINES_PKG.ValidateCurrentLine;
40867 
40868    ------------------------------------------------------------------------------------
40869    -- 4219869 Business Flow
40870    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
40871    ------------------------------------------------------------------------------------
40872    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40873 
40874    ----------------------------------------------------------------------------------
40875    -- 4219869 Business Flow
40876    -- Update journal entry status -- Need to generate this within IF <condition>
40877    ----------------------------------------------------------------------------------
40878    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40879          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
40880          ,p_balance_type_code => l_balance_type_code
40881          );
40882 
40883    -------------------------------------------------------------------------------------------
40884    -- 4262811 - Generate the Accrual Reversal lines
40885    -------------------------------------------------------------------------------------------
40886    BEGIN
40887       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
40888                               (g_array_event(p_event_id).array_value_num('header_index'));
40889       IF l_acc_rev_flag IS NULL THEN
40890          l_acc_rev_flag := 'N';
40891       END IF;
40892    EXCEPTION
40893       WHEN OTHERS THEN
40894          l_acc_rev_flag := 'N';
40895    END;
40896    --
40897    IF (l_acc_rev_flag = 'Y') THEN
40898 
40899        -- 4645092  ------------------------------------------------------------------------------
40900        -- To allow MPA report to determine if it should generate report process
40901        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
40902        ------------------------------------------------------------------------------------------
40903 
40904        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
40905        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
40906    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
40907    -- call ADRs
40908    -- Bug 4922099
40909    --
40910    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40911         (NVL(l_actual_upg_option, 'N') = 'O') OR
40912         (NVL(l_enc_upg_option, 'N') = 'O')
40913       )
40914    THEN
40915    NULL;
40916    --
40917    --
40918    
40919   l_ccid := AcctDerRule_4(
40920            p_application_id           => p_application_id
40921          , p_ae_header_id             => l_ae_header_id 
40922 , p_source_4 => p_source_4
40923          , x_transaction_coa_id       => l_adr_transaction_coa_id
40924          , x_accounting_coa_id        => l_adr_accounting_coa_id
40925          , x_value_type_code          => l_adr_value_type_code
40926          , p_side                     => 'NA'
40927    );
40928 
40929    xla_ae_lines_pkg.set_ccid(
40930     p_code_combination_id          => l_ccid
40931   , p_value_type_code              => l_adr_value_type_code
40932   , p_transaction_coa_id           => l_adr_transaction_coa_id
40933   , p_accounting_coa_id            => l_adr_accounting_coa_id
40934   , p_adr_code                     => 'CST_DEFAULT'
40935   , p_adr_type_code                => 'S'
40936   , p_component_type               => l_component_type
40937   , p_component_code               => l_component_code
40938   , p_component_type_code          => l_component_type_code
40939   , p_component_appl_id            => l_component_appl_id
40940   , p_amb_context_code             => l_amb_context_code
40941   , p_side                         => 'NA'
40942   );
40943 
40944 
40945    --
40946    --
40947    END IF;
40948 
40949        --
40950        -- Update the line information that should be overwritten
40951        --
40952        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
40953                                          p_header_num   => 1);
40954        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
40955 
40956        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
40957 
40958        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
40959           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
40960        END IF;
40961 
40962       --
40963       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
40964       --
40965       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
40966           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
40967       ELSE
40968           ---------------------------------------------------------------------------------------------------
40969           -- 4262811a Switch Sign
40970           ---------------------------------------------------------------------------------------------------
40971           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
40972           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40973                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40974           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40975                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40976           -- 5132302
40977           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
40978                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40979 
40980       END IF;
40981 
40982       -- 4955764
40983       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40984       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
40985 
40986 
40987       XLA_AE_LINES_PKG.ValidateCurrentLine;
40988       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40989 
40990       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40991                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
40992                ,p_balance_type_code => l_balance_type_code);
40993 
40994    END IF;
40995 
40996    -----------------------------------------------------------------------------------------
40997    -- 4262811 Multiperiod Accounting
40998    -----------------------------------------------------------------------------------------
40999      -- No MPA option is assigned.
41000 
41001 
41002 END IF;
41003 END IF;
41004 --
41005 
41006 --
41007 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41008    trace
41009       (p_msg      => 'END of AcctLineType_76'
41010       ,p_level    => C_LEVEL_PROCEDURE
41011       ,p_module   => l_log_module);
41012 END IF;
41013 --
41014 EXCEPTION
41015   WHEN xla_exceptions_pkg.application_exception THEN
41016       RAISE;
41017   WHEN OTHERS THEN
41018        xla_exceptions_pkg.raise_message
41019            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_76');
41020 END AcctLineType_76;
41021 --
41022 
41023 ---------------------------------------
41024 --
41025 -- PRIVATE FUNCTION
41026 --         AcctLineType_77
41027 --
41028 ---------------------------------------
41029 PROCEDURE AcctLineType_77 (
41030   p_application_id        IN NUMBER
41031  ,p_event_id              IN NUMBER
41032  ,p_calculate_acctd_flag  IN VARCHAR2
41033  ,p_calculate_g_l_flag    IN VARCHAR2
41034  ,p_actual_flag           IN OUT VARCHAR2
41035  ,p_balance_type_code     OUT VARCHAR2
41036  ,p_gain_or_loss_ref      OUT VARCHAR2
41037  
41038 --Cost Management Default Account
41039  , p_source_4            IN NUMBER
41040 --DISTRIBUTION_IDENTIFIER
41041  , p_source_11            IN NUMBER
41042 --Distribution Type
41043  , p_source_12            IN VARCHAR2
41044  , p_source_12_meaning    IN VARCHAR2
41045 --Entered Currency Code
41046  , p_source_15            IN VARCHAR2
41047 --Entered Amount
41048  , p_source_18            IN NUMBER
41049 --Currency Conversion Date
41050  , p_source_19            IN DATE
41051 --Currency Conversion Rate
41052  , p_source_20            IN NUMBER
41053 --Currency Conversion Type
41054  , p_source_21            IN VARCHAR2
41055 --Accounted Amount
41056  , p_source_22            IN NUMBER
41057 --Accounting Line Type
41058  , p_source_24            IN NUMBER
41059 )
41060 IS
41061 
41062 l_component_type              VARCHAR2(80);
41063 l_component_code              VARCHAR2(30);
41064 l_component_type_code         VARCHAR2(1);
41065 l_component_appl_id           INTEGER;
41066 l_amb_context_code            VARCHAR2(30);
41067 l_entity_code                 VARCHAR2(30);
41068 l_event_class_code            VARCHAR2(30);
41069 l_ae_header_id                NUMBER;
41070 l_event_type_code             VARCHAR2(30);
41071 l_line_definition_code        VARCHAR2(30);
41072 l_line_definition_owner_code  VARCHAR2(1);
41073 --
41074 -- adr variables
41075 l_segment                     VARCHAR2(30);
41076 l_ccid                        NUMBER;
41077 l_adr_transaction_coa_id      NUMBER;
41078 l_adr_accounting_coa_id       NUMBER;
41079 l_adr_flexfield_segment_code  VARCHAR2(30);
41080 l_adr_flex_value_set_id       NUMBER;
41081 l_adr_value_type_code         VARCHAR2(30);
41082 l_adr_value_combination_id    NUMBER;
41083 l_adr_value_segment_code      VARCHAR2(30);
41084 
41085 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
41086 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
41087 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
41088 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
41089 
41090 -- 4262811 Variables ------------------------------------------------------------------------------------------
41091 l_entered_amt_idx             NUMBER;
41092 l_accted_amt_idx              NUMBER;
41093 l_acc_rev_flag                VARCHAR2(1);
41094 l_accrual_line_num            NUMBER;
41095 l_tmp_amt                     NUMBER;
41096 l_acc_rev_natural_side_code   VARCHAR2(1);
41097 
41098 l_num_entries                 NUMBER;
41099 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
41100 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
41101 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
41102 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
41103 l_recog_line_1                NUMBER;
41104 l_recog_line_2                NUMBER;
41105 
41106 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
41107 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
41108 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
41109 
41110 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
41111 
41112 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
41113 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
41114 
41115 ---------------------------------------------------------------------------------------------------------------
41116 
41117 
41118 --
41119 -- bulk performance
41120 --
41121 l_balance_type_code           VARCHAR2(1);
41122 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
41123 l_log_module                  VARCHAR2(240);
41124 
41125 --
41126 -- Upgrade strategy
41127 --
41128 l_actual_upg_option           VARCHAR2(1);
41129 l_enc_upg_option           VARCHAR2(1);
41130 
41131 --
41132 BEGIN
41133 --
41134 IF g_log_enabled THEN
41135       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_77';
41136 END IF;
41137 --
41138 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41139 
41140       trace
41141          (p_msg      => 'BEGIN of AcctLineType_77'
41142          ,p_level    => C_LEVEL_PROCEDURE
41143          ,p_module   => l_log_module);
41144 
41145 END IF;
41146 --
41147 l_component_type             := 'AMB_JLT';
41148 l_component_code             := 'INTERORG_PAYABLES';
41149 l_component_type_code        := 'S';
41150 l_component_appl_id          :=  707;
41151 l_amb_context_code           := 'DEFAULT';
41152 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
41153 l_event_class_code           := 'INT_ORDER_TO_EXP';
41154 l_event_type_code            := 'INT_ORDER_TO_EXP_ALL';
41155 l_line_definition_owner_code := 'S';
41156 l_line_definition_code       := 'INT_ORDER_TO_EXP';
41157 --
41158 l_balance_type_code          := 'A';
41159 l_segment                     := NULL;
41160 l_ccid                        := NULL;
41161 l_adr_transaction_coa_id      := NULL;
41162 l_adr_accounting_coa_id       := NULL;
41163 l_adr_flexfield_segment_code  := NULL;
41164 l_adr_flex_value_set_id       := NULL;
41165 l_adr_value_type_code         := NULL;
41166 l_adr_value_combination_id    := NULL;
41167 l_adr_value_segment_code      := NULL;
41168 
41169 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
41170 l_bflow_class_code           := '';    -- 4219869 Business Flow
41171 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
41172 l_budgetary_control_flag     := 'N';
41173 
41174 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
41175 l_bflow_applied_to_amt       := NULL; -- 5132302
41176 l_entered_amt_idx            := NULL;          -- 4262811
41177 l_accted_amt_idx             := NULL;          -- 4262811
41178 l_acc_rev_flag               := NULL;          -- 4262811
41179 l_accrual_line_num           := NULL;          -- 4262811
41180 l_tmp_amt                    := NULL;          -- 4262811
41181 --
41182  
41183 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
41184     l_balance_type_code <> 'B' THEN
41185 IF NVL(p_source_24,9E125) =  9
41186  THEN 
41187 
41188    --
41189    XLA_AE_LINES_PKG.SetNewLine;
41190 
41191    p_balance_type_code          := l_balance_type_code;
41192    -- set the flag so later we will know whether the gain loss line needs to be created
41193    
41194    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
41195      p_actual_flag :='A';
41196    END IF;
41197 
41198    --
41199    -- bulk performance
41200    --
41201    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
41202                                       p_header_num   => 0); -- 4262811
41203    --
41204    -- set accounting line options
41205    --
41206    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
41207            p_natural_side_code          => 'D'
41208          , p_gain_or_loss_flag          => 'N'
41209          , p_gl_transfer_mode_code      => 'S'
41210          , p_acct_entry_type_code       => 'A'
41211          , p_switch_side_flag           => 'Y'
41212          , p_merge_duplicate_code       => 'N'
41213          );
41214    --
41215    l_acc_rev_natural_side_code := 'C';  -- 4262811
41216    -- 
41217    --
41218    -- set accounting line type info
41219    --
41220    xla_ae_lines_pkg.SetAcctLineType
41221       (p_component_type             => l_component_type
41222       ,p_event_type_code            => l_event_type_code
41223       ,p_line_definition_owner_code => l_line_definition_owner_code
41224       ,p_line_definition_code       => l_line_definition_code
41225       ,p_accounting_line_code       => l_component_code
41226       ,p_accounting_line_type_code  => l_component_type_code
41227       ,p_accounting_line_appl_id    => l_component_appl_id
41228       ,p_amb_context_code           => l_amb_context_code
41229       ,p_entity_code                => l_entity_code
41230       ,p_event_class_code           => l_event_class_code);
41231    --
41232    -- set accounting class
41233    --
41234    xla_ae_lines_pkg.SetAcctClass(
41235            p_accounting_class_code  => 'INTERORG_PAYABLES'
41236          , p_ae_header_id           => l_ae_header_id
41237          );
41238 
41239    --
41240    -- set rounding class
41241    --
41242    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
41243                       'INTERORG_PAYABLES';
41244 
41245    --
41246    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
41247    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
41248    --
41249    -- bulk performance
41250    --
41251    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
41252 
41253    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
41254       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
41255 
41256    -- 4955764
41257    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41258       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
41259 
41260    -- 4458381 Public Sector Enh
41261    
41262    --
41263    -- set accounting attributes for the line type
41264    --
41265    l_entered_amt_idx := 3;
41266    l_accted_amt_idx  := 8;
41267    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
41268    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
41269    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
41270    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
41271    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
41272    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
41273    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
41274    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
41275    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
41276    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
41277    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
41278    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
41279    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
41280    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
41281    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
41282    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
41283    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
41284 
41285    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
41286    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
41287 
41288    ---------------------------------------------------------------------------------------------------------------
41289    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
41290    ---------------------------------------------------------------------------------------------------------------
41291    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
41292 
41293    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41294    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41295 
41296    IF xla_accounting_cache_pkg.GetValueChar
41297          (p_source_code         => 'LEDGER_CATEGORY_CODE'
41298          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
41299    AND l_bflow_method_code = 'PRIOR_ENTRY'
41300 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
41301    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
41302          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
41303        )
41304    THEN
41305          xla_ae_lines_pkg.BflowUpgEntry
41306            (p_business_method_code    => l_bflow_method_code
41307            ,p_business_class_code     => l_bflow_class_code
41308            ,p_balance_type            => l_balance_type_code);
41309    ELSE
41310       NULL;
41311 -- No business flow processing for business flow method of NONE.
41312    END IF;
41313 
41314    --
41315    -- call analytical criteria
41316    --
41317    
41318    --
41319    -- call description
41320    --
41321    -- No description or it is inherited.
41322    --
41323    -- call ADRs
41324    -- Bug 4922099
41325    --
41326    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41327         (NVL(l_actual_upg_option, 'N') = 'O') OR
41328         (NVL(l_enc_upg_option, 'N') = 'O')
41329       )
41330    THEN
41331    NULL;
41332    --
41333    --
41334    
41335   l_ccid := AcctDerRule_4(
41336            p_application_id           => p_application_id
41337          , p_ae_header_id             => l_ae_header_id 
41338 , p_source_4 => p_source_4
41339          , x_transaction_coa_id       => l_adr_transaction_coa_id
41340          , x_accounting_coa_id        => l_adr_accounting_coa_id
41341          , x_value_type_code          => l_adr_value_type_code
41342          , p_side                     => 'NA'
41343    );
41344 
41345    xla_ae_lines_pkg.set_ccid(
41346     p_code_combination_id          => l_ccid
41347   , p_value_type_code              => l_adr_value_type_code
41348   , p_transaction_coa_id           => l_adr_transaction_coa_id
41349   , p_accounting_coa_id            => l_adr_accounting_coa_id
41350   , p_adr_code                     => 'CST_DEFAULT'
41351   , p_adr_type_code                => 'S'
41352   , p_component_type               => l_component_type
41353   , p_component_code               => l_component_code
41354   , p_component_type_code          => l_component_type_code
41355   , p_component_appl_id            => l_component_appl_id
41356   , p_amb_context_code             => l_amb_context_code
41357   , p_side                         => 'NA'
41358   );
41359 
41360 
41361    --
41362    --
41363    END IF;
41364    --
41365    -- Bug 4922099
41366    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
41367           (NVL(l_enc_upg_option, 'N') = 'O')
41368         ) AND
41369         (l_bflow_method_code = 'PRIOR_ENTRY')
41370       )
41371    THEN
41372       IF
41373       --
41374       1 = 2
41375       --
41376       THEN
41377       xla_accounting_err_pkg.build_message
41378                                     (p_appli_s_name            => 'XLA'
41379                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41380                                     ,p_token_1                 => 'LINE_NUMBER'
41381                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
41382                                     ,p_token_2                 => 'LINE_TYPE_NAME'
41383                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
41384                                                                              l_component_type
41385                                                                             ,l_component_code
41386                                                                             ,l_component_type_code
41387                                                                             ,l_component_appl_id
41388                                                                             ,l_amb_context_code
41389                                                                             ,l_entity_code
41390                                                                             ,l_event_class_code
41391                                                                            )
41392                                     ,p_token_3                 => 'OWNER'
41393                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
41394                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
41395                                                                           ,p_lookup_code    => l_component_type_code
41396                                                                          )
41397                                     ,p_token_4                 => 'PRODUCT_NAME'
41398                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
41399                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
41400                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
41401                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
41402                                     ,p_ae_header_id            =>  NULL
41403                                        );
41404 
41405         IF (C_LEVEL_ERROR>= g_log_level) THEN
41406                  trace
41407                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41408                       ,p_level    => C_LEVEL_ERROR
41409                       ,p_module   => l_log_module);
41410         END IF;
41411       END IF;
41412    END IF;
41413    --
41414    --
41415    ------------------------------------------------------------------------------------------------
41416    -- 4219869 Business Flow
41417    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
41418    -- Prior Entry.  Currently, the following code is always generated.
41419    ------------------------------------------------------------------------------------------------
41420    XLA_AE_LINES_PKG.ValidateCurrentLine;
41421 
41422    ------------------------------------------------------------------------------------
41423    -- 4219869 Business Flow
41424    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
41425    ------------------------------------------------------------------------------------
41426    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41427 
41428    ----------------------------------------------------------------------------------
41429    -- 4219869 Business Flow
41430    -- Update journal entry status -- Need to generate this within IF <condition>
41431    ----------------------------------------------------------------------------------
41432    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41433          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
41434          ,p_balance_type_code => l_balance_type_code
41435          );
41436 
41437    -------------------------------------------------------------------------------------------
41438    -- 4262811 - Generate the Accrual Reversal lines
41439    -------------------------------------------------------------------------------------------
41440    BEGIN
41441       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
41442                               (g_array_event(p_event_id).array_value_num('header_index'));
41443       IF l_acc_rev_flag IS NULL THEN
41444          l_acc_rev_flag := 'N';
41445       END IF;
41446    EXCEPTION
41447       WHEN OTHERS THEN
41448          l_acc_rev_flag := 'N';
41449    END;
41450    --
41451    IF (l_acc_rev_flag = 'Y') THEN
41452 
41453        -- 4645092  ------------------------------------------------------------------------------
41454        -- To allow MPA report to determine if it should generate report process
41455        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
41456        ------------------------------------------------------------------------------------------
41457 
41458        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
41459        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
41460    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
41461    -- call ADRs
41462    -- Bug 4922099
41463    --
41464    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41465         (NVL(l_actual_upg_option, 'N') = 'O') OR
41466         (NVL(l_enc_upg_option, 'N') = 'O')
41467       )
41468    THEN
41469    NULL;
41470    --
41471    --
41472    
41473   l_ccid := AcctDerRule_4(
41474            p_application_id           => p_application_id
41475          , p_ae_header_id             => l_ae_header_id 
41476 , p_source_4 => p_source_4
41477          , x_transaction_coa_id       => l_adr_transaction_coa_id
41478          , x_accounting_coa_id        => l_adr_accounting_coa_id
41479          , x_value_type_code          => l_adr_value_type_code
41480          , p_side                     => 'NA'
41481    );
41482 
41483    xla_ae_lines_pkg.set_ccid(
41484     p_code_combination_id          => l_ccid
41485   , p_value_type_code              => l_adr_value_type_code
41486   , p_transaction_coa_id           => l_adr_transaction_coa_id
41487   , p_accounting_coa_id            => l_adr_accounting_coa_id
41488   , p_adr_code                     => 'CST_DEFAULT'
41489   , p_adr_type_code                => 'S'
41490   , p_component_type               => l_component_type
41491   , p_component_code               => l_component_code
41492   , p_component_type_code          => l_component_type_code
41493   , p_component_appl_id            => l_component_appl_id
41494   , p_amb_context_code             => l_amb_context_code
41495   , p_side                         => 'NA'
41496   );
41497 
41498 
41499    --
41500    --
41501    END IF;
41502 
41503        --
41504        -- Update the line information that should be overwritten
41505        --
41506        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
41507                                          p_header_num   => 1);
41508        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
41509 
41510        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
41511 
41512        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
41513           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
41514        END IF;
41515 
41516       --
41517       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
41518       --
41519       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
41520           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
41521       ELSE
41522           ---------------------------------------------------------------------------------------------------
41523           -- 4262811a Switch Sign
41524           ---------------------------------------------------------------------------------------------------
41525           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
41526           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41527                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41528           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41529                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41530           -- 5132302
41531           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
41532                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41533 
41534       END IF;
41535 
41536       -- 4955764
41537       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41538       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
41539 
41540 
41541       XLA_AE_LINES_PKG.ValidateCurrentLine;
41542       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41543 
41544       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41545                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
41546                ,p_balance_type_code => l_balance_type_code);
41547 
41548    END IF;
41549 
41550    -----------------------------------------------------------------------------------------
41551    -- 4262811 Multiperiod Accounting
41552    -----------------------------------------------------------------------------------------
41553      -- No MPA option is assigned.
41554 
41555 
41556 END IF;
41557 END IF;
41558 --
41559 
41560 --
41561 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41562    trace
41563       (p_msg      => 'END of AcctLineType_77'
41564       ,p_level    => C_LEVEL_PROCEDURE
41565       ,p_module   => l_log_module);
41566 END IF;
41567 --
41568 EXCEPTION
41569   WHEN xla_exceptions_pkg.application_exception THEN
41570       RAISE;
41571   WHEN OTHERS THEN
41572        xla_exceptions_pkg.raise_message
41573            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_77');
41574 END AcctLineType_77;
41575 --
41576 
41577 ---------------------------------------
41578 --
41579 -- PRIVATE FUNCTION
41580 --         AcctLineType_78
41581 --
41582 ---------------------------------------
41583 PROCEDURE AcctLineType_78 (
41584   p_application_id        IN NUMBER
41585  ,p_event_id              IN NUMBER
41586  ,p_calculate_acctd_flag  IN VARCHAR2
41587  ,p_calculate_g_l_flag    IN VARCHAR2
41588  ,p_actual_flag           IN OUT VARCHAR2
41589  ,p_balance_type_code     OUT VARCHAR2
41590  ,p_gain_or_loss_ref      OUT VARCHAR2
41591  
41592 --Cost Management Default Account
41593  , p_source_4            IN NUMBER
41594 --DISTRIBUTION_IDENTIFIER
41595  , p_source_11            IN NUMBER
41596 --Distribution Type
41597  , p_source_12            IN VARCHAR2
41598  , p_source_12_meaning    IN VARCHAR2
41599 --Entered Currency Code
41600  , p_source_15            IN VARCHAR2
41601 --Entered Amount
41602  , p_source_18            IN NUMBER
41603 --Currency Conversion Date
41604  , p_source_19            IN DATE
41605 --Currency Conversion Rate
41606  , p_source_20            IN NUMBER
41607 --Currency Conversion Type
41608  , p_source_21            IN VARCHAR2
41609 --Accounted Amount
41610  , p_source_22            IN NUMBER
41611 --Accounting Line Type
41612  , p_source_24            IN NUMBER
41613 )
41614 IS
41615 
41616 l_component_type              VARCHAR2(80);
41617 l_component_code              VARCHAR2(30);
41618 l_component_type_code         VARCHAR2(1);
41619 l_component_appl_id           INTEGER;
41620 l_amb_context_code            VARCHAR2(30);
41621 l_entity_code                 VARCHAR2(30);
41622 l_event_class_code            VARCHAR2(30);
41623 l_ae_header_id                NUMBER;
41624 l_event_type_code             VARCHAR2(30);
41625 l_line_definition_code        VARCHAR2(30);
41626 l_line_definition_owner_code  VARCHAR2(1);
41627 --
41628 -- adr variables
41629 l_segment                     VARCHAR2(30);
41630 l_ccid                        NUMBER;
41631 l_adr_transaction_coa_id      NUMBER;
41632 l_adr_accounting_coa_id       NUMBER;
41633 l_adr_flexfield_segment_code  VARCHAR2(30);
41634 l_adr_flex_value_set_id       NUMBER;
41635 l_adr_value_type_code         VARCHAR2(30);
41636 l_adr_value_combination_id    NUMBER;
41637 l_adr_value_segment_code      VARCHAR2(30);
41638 
41639 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
41640 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
41641 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
41642 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
41643 
41644 -- 4262811 Variables ------------------------------------------------------------------------------------------
41645 l_entered_amt_idx             NUMBER;
41646 l_accted_amt_idx              NUMBER;
41647 l_acc_rev_flag                VARCHAR2(1);
41648 l_accrual_line_num            NUMBER;
41649 l_tmp_amt                     NUMBER;
41650 l_acc_rev_natural_side_code   VARCHAR2(1);
41651 
41652 l_num_entries                 NUMBER;
41653 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
41654 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
41655 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
41656 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
41657 l_recog_line_1                NUMBER;
41658 l_recog_line_2                NUMBER;
41659 
41660 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
41661 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
41662 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
41663 
41664 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
41665 
41666 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
41667 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
41668 
41669 ---------------------------------------------------------------------------------------------------------------
41670 
41671 
41672 --
41673 -- bulk performance
41674 --
41675 l_balance_type_code           VARCHAR2(1);
41676 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
41677 l_log_module                  VARCHAR2(240);
41678 
41679 --
41680 -- Upgrade strategy
41681 --
41682 l_actual_upg_option           VARCHAR2(1);
41683 l_enc_upg_option           VARCHAR2(1);
41684 
41685 --
41686 BEGIN
41687 --
41688 IF g_log_enabled THEN
41689       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_78';
41690 END IF;
41691 --
41692 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41693 
41694       trace
41695          (p_msg      => 'BEGIN of AcctLineType_78'
41696          ,p_level    => C_LEVEL_PROCEDURE
41697          ,p_module   => l_log_module);
41698 
41699 END IF;
41700 --
41701 l_component_type             := 'AMB_JLT';
41702 l_component_code             := 'INTERORG_PAYABLES';
41703 l_component_type_code        := 'S';
41704 l_component_appl_id          :=  707;
41705 l_amb_context_code           := 'DEFAULT';
41706 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
41707 l_event_class_code           := 'USER_DEFINE';
41708 l_event_type_code            := 'UDIR_INTERORG_SHIP';
41709 l_line_definition_owner_code := 'S';
41710 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP';
41711 --
41712 l_balance_type_code          := 'A';
41713 l_segment                     := NULL;
41714 l_ccid                        := NULL;
41715 l_adr_transaction_coa_id      := NULL;
41716 l_adr_accounting_coa_id       := NULL;
41717 l_adr_flexfield_segment_code  := NULL;
41718 l_adr_flex_value_set_id       := NULL;
41719 l_adr_value_type_code         := NULL;
41720 l_adr_value_combination_id    := NULL;
41721 l_adr_value_segment_code      := NULL;
41722 
41723 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
41724 l_bflow_class_code           := '';    -- 4219869 Business Flow
41725 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
41726 l_budgetary_control_flag     := 'N';
41727 
41728 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
41729 l_bflow_applied_to_amt       := NULL; -- 5132302
41730 l_entered_amt_idx            := NULL;          -- 4262811
41731 l_accted_amt_idx             := NULL;          -- 4262811
41732 l_acc_rev_flag               := NULL;          -- 4262811
41733 l_accrual_line_num           := NULL;          -- 4262811
41734 l_tmp_amt                    := NULL;          -- 4262811
41735 --
41736  
41737 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
41738     l_balance_type_code <> 'B' THEN
41739 IF NVL(p_source_24,9E125) =  9
41740  THEN 
41741 
41742    --
41743    XLA_AE_LINES_PKG.SetNewLine;
41744 
41745    p_balance_type_code          := l_balance_type_code;
41746    -- set the flag so later we will know whether the gain loss line needs to be created
41747    
41748    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
41749      p_actual_flag :='A';
41750    END IF;
41751 
41752    --
41753    -- bulk performance
41754    --
41755    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
41756                                       p_header_num   => 0); -- 4262811
41757    --
41758    -- set accounting line options
41759    --
41760    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
41761            p_natural_side_code          => 'D'
41762          , p_gain_or_loss_flag          => 'N'
41763          , p_gl_transfer_mode_code      => 'S'
41764          , p_acct_entry_type_code       => 'A'
41765          , p_switch_side_flag           => 'Y'
41766          , p_merge_duplicate_code       => 'N'
41767          );
41768    --
41769    l_acc_rev_natural_side_code := 'C';  -- 4262811
41770    -- 
41771    --
41772    -- set accounting line type info
41773    --
41774    xla_ae_lines_pkg.SetAcctLineType
41775       (p_component_type             => l_component_type
41776       ,p_event_type_code            => l_event_type_code
41777       ,p_line_definition_owner_code => l_line_definition_owner_code
41778       ,p_line_definition_code       => l_line_definition_code
41779       ,p_accounting_line_code       => l_component_code
41780       ,p_accounting_line_type_code  => l_component_type_code
41781       ,p_accounting_line_appl_id    => l_component_appl_id
41782       ,p_amb_context_code           => l_amb_context_code
41783       ,p_entity_code                => l_entity_code
41784       ,p_event_class_code           => l_event_class_code);
41785    --
41786    -- set accounting class
41787    --
41788    xla_ae_lines_pkg.SetAcctClass(
41789            p_accounting_class_code  => 'INTERORG_PAYABLES'
41790          , p_ae_header_id           => l_ae_header_id
41791          );
41792 
41793    --
41794    -- set rounding class
41795    --
41796    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
41797                       'INTERORG_PAYABLES';
41798 
41799    --
41800    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
41801    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
41802    --
41803    -- bulk performance
41804    --
41805    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
41806 
41807    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
41808       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
41809 
41810    -- 4955764
41811    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41812       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
41813 
41814    -- 4458381 Public Sector Enh
41815    
41816    --
41817    -- set accounting attributes for the line type
41818    --
41819    l_entered_amt_idx := 3;
41820    l_accted_amt_idx  := 8;
41821    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
41822    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
41823    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
41824    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
41825    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
41826    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
41827    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
41828    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
41829    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
41830    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
41831    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
41832    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
41833    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
41834    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
41835    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
41836    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
41837    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
41838 
41839    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
41840    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
41841 
41842    ---------------------------------------------------------------------------------------------------------------
41843    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
41844    ---------------------------------------------------------------------------------------------------------------
41845    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
41846 
41847    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41848    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41849 
41850    IF xla_accounting_cache_pkg.GetValueChar
41851          (p_source_code         => 'LEDGER_CATEGORY_CODE'
41852          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
41853    AND l_bflow_method_code = 'PRIOR_ENTRY'
41854 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
41855    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
41856          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
41857        )
41858    THEN
41859          xla_ae_lines_pkg.BflowUpgEntry
41860            (p_business_method_code    => l_bflow_method_code
41861            ,p_business_class_code     => l_bflow_class_code
41862            ,p_balance_type            => l_balance_type_code);
41863    ELSE
41864       NULL;
41865 -- No business flow processing for business flow method of NONE.
41866    END IF;
41867 
41868    --
41869    -- call analytical criteria
41870    --
41871    
41872    --
41873    -- call description
41874    --
41875    -- No description or it is inherited.
41876    --
41877    -- call ADRs
41878    -- Bug 4922099
41879    --
41880    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41881         (NVL(l_actual_upg_option, 'N') = 'O') OR
41882         (NVL(l_enc_upg_option, 'N') = 'O')
41883       )
41884    THEN
41885    NULL;
41886    --
41887    --
41888    
41889   l_ccid := AcctDerRule_4(
41890            p_application_id           => p_application_id
41891          , p_ae_header_id             => l_ae_header_id 
41892 , p_source_4 => p_source_4
41893          , x_transaction_coa_id       => l_adr_transaction_coa_id
41894          , x_accounting_coa_id        => l_adr_accounting_coa_id
41895          , x_value_type_code          => l_adr_value_type_code
41896          , p_side                     => 'NA'
41897    );
41898 
41899    xla_ae_lines_pkg.set_ccid(
41900     p_code_combination_id          => l_ccid
41901   , p_value_type_code              => l_adr_value_type_code
41902   , p_transaction_coa_id           => l_adr_transaction_coa_id
41903   , p_accounting_coa_id            => l_adr_accounting_coa_id
41904   , p_adr_code                     => 'CST_DEFAULT'
41905   , p_adr_type_code                => 'S'
41906   , p_component_type               => l_component_type
41907   , p_component_code               => l_component_code
41908   , p_component_type_code          => l_component_type_code
41909   , p_component_appl_id            => l_component_appl_id
41910   , p_amb_context_code             => l_amb_context_code
41911   , p_side                         => 'NA'
41912   );
41913 
41914 
41915    --
41916    --
41917    END IF;
41918    --
41919    -- Bug 4922099
41920    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
41921           (NVL(l_enc_upg_option, 'N') = 'O')
41922         ) AND
41923         (l_bflow_method_code = 'PRIOR_ENTRY')
41924       )
41925    THEN
41926       IF
41927       --
41928       1 = 2
41929       --
41930       THEN
41931       xla_accounting_err_pkg.build_message
41932                                     (p_appli_s_name            => 'XLA'
41933                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41934                                     ,p_token_1                 => 'LINE_NUMBER'
41935                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
41936                                     ,p_token_2                 => 'LINE_TYPE_NAME'
41937                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
41938                                                                              l_component_type
41939                                                                             ,l_component_code
41940                                                                             ,l_component_type_code
41941                                                                             ,l_component_appl_id
41942                                                                             ,l_amb_context_code
41943                                                                             ,l_entity_code
41944                                                                             ,l_event_class_code
41945                                                                            )
41946                                     ,p_token_3                 => 'OWNER'
41947                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
41948                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
41949                                                                           ,p_lookup_code    => l_component_type_code
41950                                                                          )
41951                                     ,p_token_4                 => 'PRODUCT_NAME'
41952                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
41953                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
41954                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
41955                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
41956                                     ,p_ae_header_id            =>  NULL
41957                                        );
41958 
41959         IF (C_LEVEL_ERROR>= g_log_level) THEN
41960                  trace
41961                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41962                       ,p_level    => C_LEVEL_ERROR
41963                       ,p_module   => l_log_module);
41964         END IF;
41965       END IF;
41966    END IF;
41967    --
41968    --
41969    ------------------------------------------------------------------------------------------------
41970    -- 4219869 Business Flow
41971    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
41972    -- Prior Entry.  Currently, the following code is always generated.
41973    ------------------------------------------------------------------------------------------------
41974    XLA_AE_LINES_PKG.ValidateCurrentLine;
41975 
41976    ------------------------------------------------------------------------------------
41977    -- 4219869 Business Flow
41978    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
41979    ------------------------------------------------------------------------------------
41980    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41981 
41982    ----------------------------------------------------------------------------------
41983    -- 4219869 Business Flow
41984    -- Update journal entry status -- Need to generate this within IF <condition>
41985    ----------------------------------------------------------------------------------
41986    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41987          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
41988          ,p_balance_type_code => l_balance_type_code
41989          );
41990 
41991    -------------------------------------------------------------------------------------------
41992    -- 4262811 - Generate the Accrual Reversal lines
41993    -------------------------------------------------------------------------------------------
41994    BEGIN
41995       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
41996                               (g_array_event(p_event_id).array_value_num('header_index'));
41997       IF l_acc_rev_flag IS NULL THEN
41998          l_acc_rev_flag := 'N';
41999       END IF;
42000    EXCEPTION
42001       WHEN OTHERS THEN
42002          l_acc_rev_flag := 'N';
42003    END;
42004    --
42005    IF (l_acc_rev_flag = 'Y') THEN
42006 
42007        -- 4645092  ------------------------------------------------------------------------------
42008        -- To allow MPA report to determine if it should generate report process
42009        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
42010        ------------------------------------------------------------------------------------------
42011 
42012        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
42013        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
42014    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
42015    -- call ADRs
42016    -- Bug 4922099
42017    --
42018    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42019         (NVL(l_actual_upg_option, 'N') = 'O') OR
42020         (NVL(l_enc_upg_option, 'N') = 'O')
42021       )
42022    THEN
42023    NULL;
42024    --
42025    --
42026    
42027   l_ccid := AcctDerRule_4(
42028            p_application_id           => p_application_id
42029          , p_ae_header_id             => l_ae_header_id 
42030 , p_source_4 => p_source_4
42031          , x_transaction_coa_id       => l_adr_transaction_coa_id
42032          , x_accounting_coa_id        => l_adr_accounting_coa_id
42033          , x_value_type_code          => l_adr_value_type_code
42034          , p_side                     => 'NA'
42035    );
42036 
42037    xla_ae_lines_pkg.set_ccid(
42038     p_code_combination_id          => l_ccid
42039   , p_value_type_code              => l_adr_value_type_code
42040   , p_transaction_coa_id           => l_adr_transaction_coa_id
42041   , p_accounting_coa_id            => l_adr_accounting_coa_id
42042   , p_adr_code                     => 'CST_DEFAULT'
42043   , p_adr_type_code                => 'S'
42044   , p_component_type               => l_component_type
42045   , p_component_code               => l_component_code
42046   , p_component_type_code          => l_component_type_code
42047   , p_component_appl_id            => l_component_appl_id
42048   , p_amb_context_code             => l_amb_context_code
42049   , p_side                         => 'NA'
42050   );
42051 
42052 
42053    --
42054    --
42055    END IF;
42056 
42057        --
42058        -- Update the line information that should be overwritten
42059        --
42060        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
42061                                          p_header_num   => 1);
42062        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
42063 
42064        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
42065 
42066        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
42067           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
42068        END IF;
42069 
42070       --
42071       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
42072       --
42073       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
42074           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
42075       ELSE
42076           ---------------------------------------------------------------------------------------------------
42077           -- 4262811a Switch Sign
42078           ---------------------------------------------------------------------------------------------------
42079           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
42080           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42081                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42082           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42083                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42084           -- 5132302
42085           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
42086                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42087 
42088       END IF;
42089 
42090       -- 4955764
42091       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42092       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
42093 
42094 
42095       XLA_AE_LINES_PKG.ValidateCurrentLine;
42096       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42097 
42098       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42099                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
42100                ,p_balance_type_code => l_balance_type_code);
42101 
42102    END IF;
42103 
42104    -----------------------------------------------------------------------------------------
42105    -- 4262811 Multiperiod Accounting
42106    -----------------------------------------------------------------------------------------
42107      -- No MPA option is assigned.
42108 
42109 
42110 END IF;
42111 END IF;
42112 --
42113 
42114 --
42115 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42116    trace
42117       (p_msg      => 'END of AcctLineType_78'
42118       ,p_level    => C_LEVEL_PROCEDURE
42119       ,p_module   => l_log_module);
42120 END IF;
42121 --
42122 EXCEPTION
42123   WHEN xla_exceptions_pkg.application_exception THEN
42124       RAISE;
42125   WHEN OTHERS THEN
42126        xla_exceptions_pkg.raise_message
42127            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_78');
42128 END AcctLineType_78;
42129 --
42130 
42131 ---------------------------------------
42132 --
42133 -- PRIVATE FUNCTION
42134 --         AcctLineType_79
42135 --
42136 ---------------------------------------
42137 PROCEDURE AcctLineType_79 (
42138   p_application_id        IN NUMBER
42139  ,p_event_id              IN NUMBER
42140  ,p_calculate_acctd_flag  IN VARCHAR2
42141  ,p_calculate_g_l_flag    IN VARCHAR2
42142  ,p_actual_flag           IN OUT VARCHAR2
42143  ,p_balance_type_code     OUT VARCHAR2
42144  ,p_gain_or_loss_ref      OUT VARCHAR2
42145  
42146 --Cost Management Default Account
42147  , p_source_4            IN NUMBER
42148 --DISTRIBUTION_IDENTIFIER
42149  , p_source_11            IN NUMBER
42150 --Distribution Type
42151  , p_source_12            IN VARCHAR2
42152  , p_source_12_meaning    IN VARCHAR2
42153 --Entered Currency Code
42154  , p_source_15            IN VARCHAR2
42155 --Entered Amount
42156  , p_source_18            IN NUMBER
42157 --Currency Conversion Date
42158  , p_source_19            IN DATE
42159 --Currency Conversion Rate
42160  , p_source_20            IN NUMBER
42161 --Currency Conversion Type
42162  , p_source_21            IN VARCHAR2
42163 --Accounted Amount
42164  , p_source_22            IN NUMBER
42165 --Accounting Line Type
42166  , p_source_24            IN NUMBER
42167 )
42168 IS
42169 
42170 l_component_type              VARCHAR2(80);
42171 l_component_code              VARCHAR2(30);
42172 l_component_type_code         VARCHAR2(1);
42173 l_component_appl_id           INTEGER;
42174 l_amb_context_code            VARCHAR2(30);
42175 l_entity_code                 VARCHAR2(30);
42176 l_event_class_code            VARCHAR2(30);
42177 l_ae_header_id                NUMBER;
42178 l_event_type_code             VARCHAR2(30);
42179 l_line_definition_code        VARCHAR2(30);
42180 l_line_definition_owner_code  VARCHAR2(1);
42181 --
42182 -- adr variables
42183 l_segment                     VARCHAR2(30);
42184 l_ccid                        NUMBER;
42185 l_adr_transaction_coa_id      NUMBER;
42186 l_adr_accounting_coa_id       NUMBER;
42187 l_adr_flexfield_segment_code  VARCHAR2(30);
42188 l_adr_flex_value_set_id       NUMBER;
42189 l_adr_value_type_code         VARCHAR2(30);
42190 l_adr_value_combination_id    NUMBER;
42191 l_adr_value_segment_code      VARCHAR2(30);
42192 
42193 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
42194 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
42195 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
42196 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
42197 
42198 -- 4262811 Variables ------------------------------------------------------------------------------------------
42199 l_entered_amt_idx             NUMBER;
42200 l_accted_amt_idx              NUMBER;
42201 l_acc_rev_flag                VARCHAR2(1);
42202 l_accrual_line_num            NUMBER;
42203 l_tmp_amt                     NUMBER;
42204 l_acc_rev_natural_side_code   VARCHAR2(1);
42205 
42206 l_num_entries                 NUMBER;
42207 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
42208 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
42209 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
42210 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
42211 l_recog_line_1                NUMBER;
42212 l_recog_line_2                NUMBER;
42213 
42214 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
42215 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
42216 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
42217 
42218 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
42219 
42220 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
42221 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
42222 
42223 ---------------------------------------------------------------------------------------------------------------
42224 
42225 
42226 --
42227 -- bulk performance
42228 --
42229 l_balance_type_code           VARCHAR2(1);
42230 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
42231 l_log_module                  VARCHAR2(240);
42232 
42233 --
42234 -- Upgrade strategy
42235 --
42236 l_actual_upg_option           VARCHAR2(1);
42237 l_enc_upg_option           VARCHAR2(1);
42238 
42239 --
42240 BEGIN
42241 --
42242 IF g_log_enabled THEN
42243       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_79';
42244 END IF;
42245 --
42246 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42247 
42248       trace
42249          (p_msg      => 'BEGIN of AcctLineType_79'
42250          ,p_level    => C_LEVEL_PROCEDURE
42251          ,p_module   => l_log_module);
42252 
42253 END IF;
42254 --
42255 l_component_type             := 'AMB_JLT';
42256 l_component_code             := 'INTERORG_PAYABLES';
42257 l_component_type_code        := 'S';
42258 l_component_appl_id          :=  707;
42259 l_amb_context_code           := 'DEFAULT';
42260 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
42261 l_event_class_code           := 'USER_DEFINE';
42262 l_event_type_code            := 'UDIR_INTERORG_SHIP_TP';
42263 l_line_definition_owner_code := 'S';
42264 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_TP';
42265 --
42266 l_balance_type_code          := 'A';
42267 l_segment                     := NULL;
42268 l_ccid                        := NULL;
42269 l_adr_transaction_coa_id      := NULL;
42270 l_adr_accounting_coa_id       := NULL;
42271 l_adr_flexfield_segment_code  := NULL;
42272 l_adr_flex_value_set_id       := NULL;
42273 l_adr_value_type_code         := NULL;
42274 l_adr_value_combination_id    := NULL;
42275 l_adr_value_segment_code      := NULL;
42276 
42277 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
42278 l_bflow_class_code           := '';    -- 4219869 Business Flow
42279 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
42280 l_budgetary_control_flag     := 'N';
42281 
42282 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
42283 l_bflow_applied_to_amt       := NULL; -- 5132302
42284 l_entered_amt_idx            := NULL;          -- 4262811
42285 l_accted_amt_idx             := NULL;          -- 4262811
42286 l_acc_rev_flag               := NULL;          -- 4262811
42287 l_accrual_line_num           := NULL;          -- 4262811
42288 l_tmp_amt                    := NULL;          -- 4262811
42289 --
42290  
42291 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
42292     l_balance_type_code <> 'B' THEN
42293 IF NVL(p_source_24,9E125) =  9
42294  THEN 
42295 
42296    --
42297    XLA_AE_LINES_PKG.SetNewLine;
42298 
42299    p_balance_type_code          := l_balance_type_code;
42300    -- set the flag so later we will know whether the gain loss line needs to be created
42301    
42302    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
42303      p_actual_flag :='A';
42304    END IF;
42305 
42306    --
42307    -- bulk performance
42308    --
42309    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
42310                                       p_header_num   => 0); -- 4262811
42311    --
42312    -- set accounting line options
42313    --
42314    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
42315            p_natural_side_code          => 'D'
42316          , p_gain_or_loss_flag          => 'N'
42317          , p_gl_transfer_mode_code      => 'S'
42318          , p_acct_entry_type_code       => 'A'
42319          , p_switch_side_flag           => 'Y'
42320          , p_merge_duplicate_code       => 'N'
42321          );
42322    --
42323    l_acc_rev_natural_side_code := 'C';  -- 4262811
42324    -- 
42325    --
42326    -- set accounting line type info
42327    --
42328    xla_ae_lines_pkg.SetAcctLineType
42329       (p_component_type             => l_component_type
42330       ,p_event_type_code            => l_event_type_code
42331       ,p_line_definition_owner_code => l_line_definition_owner_code
42332       ,p_line_definition_code       => l_line_definition_code
42333       ,p_accounting_line_code       => l_component_code
42334       ,p_accounting_line_type_code  => l_component_type_code
42335       ,p_accounting_line_appl_id    => l_component_appl_id
42336       ,p_amb_context_code           => l_amb_context_code
42337       ,p_entity_code                => l_entity_code
42338       ,p_event_class_code           => l_event_class_code);
42339    --
42340    -- set accounting class
42341    --
42342    xla_ae_lines_pkg.SetAcctClass(
42343            p_accounting_class_code  => 'INTERORG_PAYABLES'
42344          , p_ae_header_id           => l_ae_header_id
42345          );
42346 
42347    --
42348    -- set rounding class
42349    --
42350    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
42351                       'INTERORG_PAYABLES';
42352 
42353    --
42354    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
42355    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
42356    --
42357    -- bulk performance
42358    --
42359    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
42360 
42361    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
42362       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
42363 
42364    -- 4955764
42365    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42366       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
42367 
42368    -- 4458381 Public Sector Enh
42369    
42370    --
42371    -- set accounting attributes for the line type
42372    --
42373    l_entered_amt_idx := 3;
42374    l_accted_amt_idx  := 8;
42375    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
42376    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
42377    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
42378    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
42379    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
42380    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
42381    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
42382    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
42383    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
42384    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
42385    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
42386    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
42387    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
42388    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
42389    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
42390    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
42391    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
42392 
42393    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
42394    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
42395 
42396    ---------------------------------------------------------------------------------------------------------------
42397    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
42398    ---------------------------------------------------------------------------------------------------------------
42399    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
42400 
42401    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42402    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42403 
42404    IF xla_accounting_cache_pkg.GetValueChar
42405          (p_source_code         => 'LEDGER_CATEGORY_CODE'
42406          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
42407    AND l_bflow_method_code = 'PRIOR_ENTRY'
42408 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
42409    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
42410          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
42411        )
42412    THEN
42413          xla_ae_lines_pkg.BflowUpgEntry
42414            (p_business_method_code    => l_bflow_method_code
42415            ,p_business_class_code     => l_bflow_class_code
42416            ,p_balance_type            => l_balance_type_code);
42417    ELSE
42418       NULL;
42419 -- No business flow processing for business flow method of NONE.
42420    END IF;
42421 
42422    --
42423    -- call analytical criteria
42424    --
42425    
42426    --
42427    -- call description
42428    --
42429    -- No description or it is inherited.
42430    --
42431    -- call ADRs
42432    -- Bug 4922099
42433    --
42434    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42435         (NVL(l_actual_upg_option, 'N') = 'O') OR
42436         (NVL(l_enc_upg_option, 'N') = 'O')
42437       )
42438    THEN
42439    NULL;
42440    --
42441    --
42442    
42443   l_ccid := AcctDerRule_4(
42444            p_application_id           => p_application_id
42445          , p_ae_header_id             => l_ae_header_id 
42446 , p_source_4 => p_source_4
42447          , x_transaction_coa_id       => l_adr_transaction_coa_id
42448          , x_accounting_coa_id        => l_adr_accounting_coa_id
42449          , x_value_type_code          => l_adr_value_type_code
42450          , p_side                     => 'NA'
42451    );
42452 
42453    xla_ae_lines_pkg.set_ccid(
42454     p_code_combination_id          => l_ccid
42455   , p_value_type_code              => l_adr_value_type_code
42456   , p_transaction_coa_id           => l_adr_transaction_coa_id
42457   , p_accounting_coa_id            => l_adr_accounting_coa_id
42458   , p_adr_code                     => 'CST_DEFAULT'
42459   , p_adr_type_code                => 'S'
42460   , p_component_type               => l_component_type
42461   , p_component_code               => l_component_code
42462   , p_component_type_code          => l_component_type_code
42463   , p_component_appl_id            => l_component_appl_id
42464   , p_amb_context_code             => l_amb_context_code
42465   , p_side                         => 'NA'
42466   );
42467 
42468 
42469    --
42470    --
42471    END IF;
42472    --
42473    -- Bug 4922099
42474    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
42475           (NVL(l_enc_upg_option, 'N') = 'O')
42476         ) AND
42477         (l_bflow_method_code = 'PRIOR_ENTRY')
42478       )
42479    THEN
42480       IF
42481       --
42482       1 = 2
42483       --
42484       THEN
42485       xla_accounting_err_pkg.build_message
42486                                     (p_appli_s_name            => 'XLA'
42487                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42488                                     ,p_token_1                 => 'LINE_NUMBER'
42489                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
42490                                     ,p_token_2                 => 'LINE_TYPE_NAME'
42491                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
42492                                                                              l_component_type
42493                                                                             ,l_component_code
42494                                                                             ,l_component_type_code
42495                                                                             ,l_component_appl_id
42496                                                                             ,l_amb_context_code
42497                                                                             ,l_entity_code
42498                                                                             ,l_event_class_code
42499                                                                            )
42500                                     ,p_token_3                 => 'OWNER'
42501                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
42502                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
42503                                                                           ,p_lookup_code    => l_component_type_code
42504                                                                          )
42505                                     ,p_token_4                 => 'PRODUCT_NAME'
42506                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
42507                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
42508                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
42509                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
42510                                     ,p_ae_header_id            =>  NULL
42511                                        );
42512 
42513         IF (C_LEVEL_ERROR>= g_log_level) THEN
42514                  trace
42515                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42516                       ,p_level    => C_LEVEL_ERROR
42517                       ,p_module   => l_log_module);
42518         END IF;
42519       END IF;
42520    END IF;
42521    --
42522    --
42523    ------------------------------------------------------------------------------------------------
42524    -- 4219869 Business Flow
42525    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
42526    -- Prior Entry.  Currently, the following code is always generated.
42527    ------------------------------------------------------------------------------------------------
42528    XLA_AE_LINES_PKG.ValidateCurrentLine;
42529 
42530    ------------------------------------------------------------------------------------
42531    -- 4219869 Business Flow
42532    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
42533    ------------------------------------------------------------------------------------
42534    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42535 
42536    ----------------------------------------------------------------------------------
42537    -- 4219869 Business Flow
42538    -- Update journal entry status -- Need to generate this within IF <condition>
42539    ----------------------------------------------------------------------------------
42540    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42541          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
42542          ,p_balance_type_code => l_balance_type_code
42543          );
42544 
42545    -------------------------------------------------------------------------------------------
42546    -- 4262811 - Generate the Accrual Reversal lines
42547    -------------------------------------------------------------------------------------------
42548    BEGIN
42549       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
42550                               (g_array_event(p_event_id).array_value_num('header_index'));
42551       IF l_acc_rev_flag IS NULL THEN
42552          l_acc_rev_flag := 'N';
42553       END IF;
42554    EXCEPTION
42555       WHEN OTHERS THEN
42556          l_acc_rev_flag := 'N';
42557    END;
42558    --
42559    IF (l_acc_rev_flag = 'Y') THEN
42560 
42561        -- 4645092  ------------------------------------------------------------------------------
42562        -- To allow MPA report to determine if it should generate report process
42563        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
42564        ------------------------------------------------------------------------------------------
42565 
42566        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
42567        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
42568    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
42569    -- call ADRs
42570    -- Bug 4922099
42571    --
42572    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42573         (NVL(l_actual_upg_option, 'N') = 'O') OR
42574         (NVL(l_enc_upg_option, 'N') = 'O')
42575       )
42576    THEN
42577    NULL;
42578    --
42579    --
42580    
42581   l_ccid := AcctDerRule_4(
42582            p_application_id           => p_application_id
42583          , p_ae_header_id             => l_ae_header_id 
42584 , p_source_4 => p_source_4
42585          , x_transaction_coa_id       => l_adr_transaction_coa_id
42586          , x_accounting_coa_id        => l_adr_accounting_coa_id
42587          , x_value_type_code          => l_adr_value_type_code
42588          , p_side                     => 'NA'
42589    );
42590 
42591    xla_ae_lines_pkg.set_ccid(
42592     p_code_combination_id          => l_ccid
42593   , p_value_type_code              => l_adr_value_type_code
42594   , p_transaction_coa_id           => l_adr_transaction_coa_id
42595   , p_accounting_coa_id            => l_adr_accounting_coa_id
42596   , p_adr_code                     => 'CST_DEFAULT'
42597   , p_adr_type_code                => 'S'
42598   , p_component_type               => l_component_type
42599   , p_component_code               => l_component_code
42600   , p_component_type_code          => l_component_type_code
42601   , p_component_appl_id            => l_component_appl_id
42602   , p_amb_context_code             => l_amb_context_code
42603   , p_side                         => 'NA'
42604   );
42605 
42606 
42607    --
42608    --
42609    END IF;
42610 
42611        --
42612        -- Update the line information that should be overwritten
42613        --
42614        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
42615                                          p_header_num   => 1);
42616        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
42617 
42618        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
42619 
42620        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
42621           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
42622        END IF;
42623 
42624       --
42625       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
42626       --
42627       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
42628           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
42629       ELSE
42630           ---------------------------------------------------------------------------------------------------
42631           -- 4262811a Switch Sign
42632           ---------------------------------------------------------------------------------------------------
42633           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
42634           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42635                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42636           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42637                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42638           -- 5132302
42639           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
42640                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42641 
42642       END IF;
42643 
42644       -- 4955764
42645       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42646       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
42647 
42648 
42649       XLA_AE_LINES_PKG.ValidateCurrentLine;
42650       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42651 
42652       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42653                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
42654                ,p_balance_type_code => l_balance_type_code);
42655 
42656    END IF;
42657 
42658    -----------------------------------------------------------------------------------------
42659    -- 4262811 Multiperiod Accounting
42660    -----------------------------------------------------------------------------------------
42661      -- No MPA option is assigned.
42662 
42663 
42664 END IF;
42665 END IF;
42666 --
42667 
42668 --
42669 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42670    trace
42671       (p_msg      => 'END of AcctLineType_79'
42672       ,p_level    => C_LEVEL_PROCEDURE
42673       ,p_module   => l_log_module);
42674 END IF;
42675 --
42676 EXCEPTION
42677   WHEN xla_exceptions_pkg.application_exception THEN
42678       RAISE;
42679   WHEN OTHERS THEN
42680        xla_exceptions_pkg.raise_message
42681            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_79');
42682 END AcctLineType_79;
42683 --
42684 
42685 ---------------------------------------
42686 --
42687 -- PRIVATE FUNCTION
42688 --         AcctLineType_80
42689 --
42690 ---------------------------------------
42691 PROCEDURE AcctLineType_80 (
42692   p_application_id        IN NUMBER
42693  ,p_event_id              IN NUMBER
42694  ,p_calculate_acctd_flag  IN VARCHAR2
42695  ,p_calculate_g_l_flag    IN VARCHAR2
42696  ,p_actual_flag           IN OUT VARCHAR2
42697  ,p_balance_type_code     OUT VARCHAR2
42698  ,p_gain_or_loss_ref      OUT VARCHAR2
42699  
42700 --Cost Management Default Account
42701  , p_source_4            IN NUMBER
42702 --DISTRIBUTION_IDENTIFIER
42703  , p_source_11            IN NUMBER
42704 --Distribution Type
42705  , p_source_12            IN VARCHAR2
42706  , p_source_12_meaning    IN VARCHAR2
42707 --Entered Currency Code
42708  , p_source_15            IN VARCHAR2
42709 --Entered Amount
42710  , p_source_18            IN NUMBER
42711 --Currency Conversion Date
42712  , p_source_19            IN DATE
42713 --Currency Conversion Rate
42714  , p_source_20            IN NUMBER
42715 --Currency Conversion Type
42716  , p_source_21            IN VARCHAR2
42717 --Accounted Amount
42718  , p_source_22            IN NUMBER
42719 --Accounting Line Type
42720  , p_source_24            IN NUMBER
42721 )
42722 IS
42723 
42724 l_component_type              VARCHAR2(80);
42725 l_component_code              VARCHAR2(30);
42726 l_component_type_code         VARCHAR2(1);
42727 l_component_appl_id           INTEGER;
42728 l_amb_context_code            VARCHAR2(30);
42729 l_entity_code                 VARCHAR2(30);
42730 l_event_class_code            VARCHAR2(30);
42731 l_ae_header_id                NUMBER;
42732 l_event_type_code             VARCHAR2(30);
42733 l_line_definition_code        VARCHAR2(30);
42734 l_line_definition_owner_code  VARCHAR2(1);
42735 --
42736 -- adr variables
42737 l_segment                     VARCHAR2(30);
42738 l_ccid                        NUMBER;
42739 l_adr_transaction_coa_id      NUMBER;
42740 l_adr_accounting_coa_id       NUMBER;
42741 l_adr_flexfield_segment_code  VARCHAR2(30);
42742 l_adr_flex_value_set_id       NUMBER;
42743 l_adr_value_type_code         VARCHAR2(30);
42744 l_adr_value_combination_id    NUMBER;
42745 l_adr_value_segment_code      VARCHAR2(30);
42746 
42747 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
42748 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
42749 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
42750 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
42751 
42752 -- 4262811 Variables ------------------------------------------------------------------------------------------
42753 l_entered_amt_idx             NUMBER;
42754 l_accted_amt_idx              NUMBER;
42755 l_acc_rev_flag                VARCHAR2(1);
42756 l_accrual_line_num            NUMBER;
42757 l_tmp_amt                     NUMBER;
42758 l_acc_rev_natural_side_code   VARCHAR2(1);
42759 
42760 l_num_entries                 NUMBER;
42761 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
42762 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
42763 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
42764 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
42765 l_recog_line_1                NUMBER;
42766 l_recog_line_2                NUMBER;
42767 
42768 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
42769 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
42770 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
42771 
42772 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
42773 
42774 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
42775 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
42776 
42777 ---------------------------------------------------------------------------------------------------------------
42778 
42779 
42780 --
42781 -- bulk performance
42782 --
42783 l_balance_type_code           VARCHAR2(1);
42784 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
42785 l_log_module                  VARCHAR2(240);
42786 
42787 --
42788 -- Upgrade strategy
42789 --
42790 l_actual_upg_option           VARCHAR2(1);
42791 l_enc_upg_option           VARCHAR2(1);
42792 
42793 --
42794 BEGIN
42795 --
42796 IF g_log_enabled THEN
42797       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_80';
42798 END IF;
42799 --
42800 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42801 
42802       trace
42803          (p_msg      => 'BEGIN of AcctLineType_80'
42804          ,p_level    => C_LEVEL_PROCEDURE
42805          ,p_module   => l_log_module);
42806 
42807 END IF;
42808 --
42809 l_component_type             := 'AMB_JLT';
42810 l_component_code             := 'INTERORG_PAYABLES';
42811 l_component_type_code        := 'S';
42812 l_component_appl_id          :=  707;
42813 l_amb_context_code           := 'DEFAULT';
42814 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
42815 l_event_class_code           := 'USER_DEFINE';
42816 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
42817 l_line_definition_owner_code := 'S';
42818 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
42819 --
42820 l_balance_type_code          := 'A';
42821 l_segment                     := NULL;
42822 l_ccid                        := NULL;
42823 l_adr_transaction_coa_id      := NULL;
42824 l_adr_accounting_coa_id       := NULL;
42825 l_adr_flexfield_segment_code  := NULL;
42826 l_adr_flex_value_set_id       := NULL;
42827 l_adr_value_type_code         := NULL;
42828 l_adr_value_combination_id    := NULL;
42829 l_adr_value_segment_code      := NULL;
42830 
42831 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
42832 l_bflow_class_code           := '';    -- 4219869 Business Flow
42833 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
42834 l_budgetary_control_flag     := 'N';
42835 
42836 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
42837 l_bflow_applied_to_amt       := NULL; -- 5132302
42838 l_entered_amt_idx            := NULL;          -- 4262811
42839 l_accted_amt_idx             := NULL;          -- 4262811
42840 l_acc_rev_flag               := NULL;          -- 4262811
42841 l_accrual_line_num           := NULL;          -- 4262811
42842 l_tmp_amt                    := NULL;          -- 4262811
42843 --
42844  
42845 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
42846     l_balance_type_code <> 'B' THEN
42847 IF NVL(p_source_24,9E125) =  9
42848  THEN 
42849 
42850    --
42851    XLA_AE_LINES_PKG.SetNewLine;
42852 
42853    p_balance_type_code          := l_balance_type_code;
42854    -- set the flag so later we will know whether the gain loss line needs to be created
42855    
42856    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
42857      p_actual_flag :='A';
42858    END IF;
42859 
42860    --
42861    -- bulk performance
42862    --
42863    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
42864                                       p_header_num   => 0); -- 4262811
42865    --
42866    -- set accounting line options
42867    --
42868    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
42869            p_natural_side_code          => 'D'
42870          , p_gain_or_loss_flag          => 'N'
42871          , p_gl_transfer_mode_code      => 'S'
42872          , p_acct_entry_type_code       => 'A'
42873          , p_switch_side_flag           => 'Y'
42874          , p_merge_duplicate_code       => 'N'
42875          );
42876    --
42877    l_acc_rev_natural_side_code := 'C';  -- 4262811
42878    -- 
42879    --
42880    -- set accounting line type info
42881    --
42882    xla_ae_lines_pkg.SetAcctLineType
42883       (p_component_type             => l_component_type
42884       ,p_event_type_code            => l_event_type_code
42885       ,p_line_definition_owner_code => l_line_definition_owner_code
42886       ,p_line_definition_code       => l_line_definition_code
42887       ,p_accounting_line_code       => l_component_code
42888       ,p_accounting_line_type_code  => l_component_type_code
42889       ,p_accounting_line_appl_id    => l_component_appl_id
42890       ,p_amb_context_code           => l_amb_context_code
42891       ,p_entity_code                => l_entity_code
42892       ,p_event_class_code           => l_event_class_code);
42893    --
42894    -- set accounting class
42895    --
42896    xla_ae_lines_pkg.SetAcctClass(
42897            p_accounting_class_code  => 'INTERORG_PAYABLES'
42898          , p_ae_header_id           => l_ae_header_id
42899          );
42900 
42901    --
42902    -- set rounding class
42903    --
42904    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
42905                       'INTERORG_PAYABLES';
42906 
42907    --
42908    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
42909    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
42910    --
42911    -- bulk performance
42912    --
42913    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
42914 
42915    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
42916       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
42917 
42918    -- 4955764
42919    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42920       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
42921 
42922    -- 4458381 Public Sector Enh
42923    
42924    --
42925    -- set accounting attributes for the line type
42926    --
42927    l_entered_amt_idx := 3;
42928    l_accted_amt_idx  := 8;
42929    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
42930    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
42931    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
42932    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
42933    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
42934    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
42935    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
42936    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
42937    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
42938    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
42939    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
42940    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
42941    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
42942    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
42943    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
42944    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
42945    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
42946 
42947    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
42948    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
42949 
42950    ---------------------------------------------------------------------------------------------------------------
42951    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
42952    ---------------------------------------------------------------------------------------------------------------
42953    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
42954 
42955    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42956    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42957 
42958    IF xla_accounting_cache_pkg.GetValueChar
42959          (p_source_code         => 'LEDGER_CATEGORY_CODE'
42960          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
42961    AND l_bflow_method_code = 'PRIOR_ENTRY'
42962 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
42963    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
42964          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
42965        )
42966    THEN
42967          xla_ae_lines_pkg.BflowUpgEntry
42968            (p_business_method_code    => l_bflow_method_code
42969            ,p_business_class_code     => l_bflow_class_code
42970            ,p_balance_type            => l_balance_type_code);
42971    ELSE
42972       NULL;
42973 -- No business flow processing for business flow method of NONE.
42974    END IF;
42975 
42976    --
42977    -- call analytical criteria
42978    --
42979    
42980    --
42981    -- call description
42982    --
42983    -- No description or it is inherited.
42984    --
42985    -- call ADRs
42986    -- Bug 4922099
42987    --
42988    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42989         (NVL(l_actual_upg_option, 'N') = 'O') OR
42990         (NVL(l_enc_upg_option, 'N') = 'O')
42991       )
42992    THEN
42993    NULL;
42994    --
42995    --
42996    
42997   l_ccid := AcctDerRule_4(
42998            p_application_id           => p_application_id
42999          , p_ae_header_id             => l_ae_header_id 
43000 , p_source_4 => p_source_4
43001          , x_transaction_coa_id       => l_adr_transaction_coa_id
43002          , x_accounting_coa_id        => l_adr_accounting_coa_id
43003          , x_value_type_code          => l_adr_value_type_code
43004          , p_side                     => 'NA'
43005    );
43006 
43007    xla_ae_lines_pkg.set_ccid(
43008     p_code_combination_id          => l_ccid
43009   , p_value_type_code              => l_adr_value_type_code
43010   , p_transaction_coa_id           => l_adr_transaction_coa_id
43011   , p_accounting_coa_id            => l_adr_accounting_coa_id
43012   , p_adr_code                     => 'CST_DEFAULT'
43013   , p_adr_type_code                => 'S'
43014   , p_component_type               => l_component_type
43015   , p_component_code               => l_component_code
43016   , p_component_type_code          => l_component_type_code
43017   , p_component_appl_id            => l_component_appl_id
43018   , p_amb_context_code             => l_amb_context_code
43019   , p_side                         => 'NA'
43020   );
43021 
43022 
43023    --
43024    --
43025    END IF;
43026    --
43027    -- Bug 4922099
43028    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
43029           (NVL(l_enc_upg_option, 'N') = 'O')
43030         ) AND
43031         (l_bflow_method_code = 'PRIOR_ENTRY')
43032       )
43033    THEN
43034       IF
43035       --
43036       1 = 2
43037       --
43038       THEN
43039       xla_accounting_err_pkg.build_message
43040                                     (p_appli_s_name            => 'XLA'
43041                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43042                                     ,p_token_1                 => 'LINE_NUMBER'
43043                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
43044                                     ,p_token_2                 => 'LINE_TYPE_NAME'
43045                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
43046                                                                              l_component_type
43047                                                                             ,l_component_code
43048                                                                             ,l_component_type_code
43049                                                                             ,l_component_appl_id
43050                                                                             ,l_amb_context_code
43051                                                                             ,l_entity_code
43052                                                                             ,l_event_class_code
43053                                                                            )
43054                                     ,p_token_3                 => 'OWNER'
43055                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
43056                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
43057                                                                           ,p_lookup_code    => l_component_type_code
43058                                                                          )
43059                                     ,p_token_4                 => 'PRODUCT_NAME'
43060                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
43061                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
43062                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
43063                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
43064                                     ,p_ae_header_id            =>  NULL
43065                                        );
43066 
43067         IF (C_LEVEL_ERROR>= g_log_level) THEN
43068                  trace
43069                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43070                       ,p_level    => C_LEVEL_ERROR
43071                       ,p_module   => l_log_module);
43072         END IF;
43073       END IF;
43074    END IF;
43075    --
43076    --
43077    ------------------------------------------------------------------------------------------------
43078    -- 4219869 Business Flow
43079    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
43080    -- Prior Entry.  Currently, the following code is always generated.
43081    ------------------------------------------------------------------------------------------------
43082    XLA_AE_LINES_PKG.ValidateCurrentLine;
43083 
43084    ------------------------------------------------------------------------------------
43085    -- 4219869 Business Flow
43086    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
43087    ------------------------------------------------------------------------------------
43088    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43089 
43090    ----------------------------------------------------------------------------------
43091    -- 4219869 Business Flow
43092    -- Update journal entry status -- Need to generate this within IF <condition>
43093    ----------------------------------------------------------------------------------
43094    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43095          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
43096          ,p_balance_type_code => l_balance_type_code
43097          );
43098 
43099    -------------------------------------------------------------------------------------------
43100    -- 4262811 - Generate the Accrual Reversal lines
43101    -------------------------------------------------------------------------------------------
43102    BEGIN
43103       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
43104                               (g_array_event(p_event_id).array_value_num('header_index'));
43105       IF l_acc_rev_flag IS NULL THEN
43106          l_acc_rev_flag := 'N';
43107       END IF;
43108    EXCEPTION
43109       WHEN OTHERS THEN
43110          l_acc_rev_flag := 'N';
43111    END;
43112    --
43113    IF (l_acc_rev_flag = 'Y') THEN
43114 
43115        -- 4645092  ------------------------------------------------------------------------------
43116        -- To allow MPA report to determine if it should generate report process
43117        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
43118        ------------------------------------------------------------------------------------------
43119 
43120        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
43121        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
43122    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
43123    -- call ADRs
43124    -- Bug 4922099
43125    --
43126    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43127         (NVL(l_actual_upg_option, 'N') = 'O') OR
43128         (NVL(l_enc_upg_option, 'N') = 'O')
43129       )
43130    THEN
43131    NULL;
43132    --
43133    --
43134    
43135   l_ccid := AcctDerRule_4(
43136            p_application_id           => p_application_id
43137          , p_ae_header_id             => l_ae_header_id 
43138 , p_source_4 => p_source_4
43139          , x_transaction_coa_id       => l_adr_transaction_coa_id
43140          , x_accounting_coa_id        => l_adr_accounting_coa_id
43141          , x_value_type_code          => l_adr_value_type_code
43142          , p_side                     => 'NA'
43143    );
43144 
43145    xla_ae_lines_pkg.set_ccid(
43146     p_code_combination_id          => l_ccid
43147   , p_value_type_code              => l_adr_value_type_code
43148   , p_transaction_coa_id           => l_adr_transaction_coa_id
43149   , p_accounting_coa_id            => l_adr_accounting_coa_id
43150   , p_adr_code                     => 'CST_DEFAULT'
43151   , p_adr_type_code                => 'S'
43152   , p_component_type               => l_component_type
43153   , p_component_code               => l_component_code
43154   , p_component_type_code          => l_component_type_code
43155   , p_component_appl_id            => l_component_appl_id
43156   , p_amb_context_code             => l_amb_context_code
43157   , p_side                         => 'NA'
43158   );
43159 
43160 
43161    --
43162    --
43163    END IF;
43164 
43165        --
43166        -- Update the line information that should be overwritten
43167        --
43168        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
43169                                          p_header_num   => 1);
43170        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
43171 
43172        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
43173 
43174        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
43175           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
43176        END IF;
43177 
43178       --
43179       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
43180       --
43181       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
43182           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
43183       ELSE
43184           ---------------------------------------------------------------------------------------------------
43185           -- 4262811a Switch Sign
43186           ---------------------------------------------------------------------------------------------------
43187           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
43188           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43189                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43190           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43191                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43192           -- 5132302
43193           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
43194                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43195 
43196       END IF;
43197 
43198       -- 4955764
43199       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43200       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
43201 
43202 
43203       XLA_AE_LINES_PKG.ValidateCurrentLine;
43204       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43205 
43206       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43207                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
43208                ,p_balance_type_code => l_balance_type_code);
43209 
43210    END IF;
43211 
43212    -----------------------------------------------------------------------------------------
43213    -- 4262811 Multiperiod Accounting
43214    -----------------------------------------------------------------------------------------
43215      -- No MPA option is assigned.
43216 
43217 
43218 END IF;
43219 END IF;
43220 --
43221 
43222 --
43223 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43224    trace
43225       (p_msg      => 'END of AcctLineType_80'
43226       ,p_level    => C_LEVEL_PROCEDURE
43227       ,p_module   => l_log_module);
43228 END IF;
43229 --
43230 EXCEPTION
43231   WHEN xla_exceptions_pkg.application_exception THEN
43232       RAISE;
43233   WHEN OTHERS THEN
43234        xla_exceptions_pkg.raise_message
43235            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_80');
43236 END AcctLineType_80;
43237 --
43238 
43239 ---------------------------------------
43240 --
43241 -- PRIVATE FUNCTION
43242 --         AcctLineType_81
43243 --
43244 ---------------------------------------
43245 PROCEDURE AcctLineType_81 (
43246   p_application_id        IN NUMBER
43247  ,p_event_id              IN NUMBER
43248  ,p_calculate_acctd_flag  IN VARCHAR2
43249  ,p_calculate_g_l_flag    IN VARCHAR2
43250  ,p_actual_flag           IN OUT VARCHAR2
43251  ,p_balance_type_code     OUT VARCHAR2
43252  ,p_gain_or_loss_ref      OUT VARCHAR2
43253  
43254 --Cost Management Default Account
43255  , p_source_4            IN NUMBER
43256 --DISTRIBUTION_IDENTIFIER
43257  , p_source_11            IN NUMBER
43258 --Distribution Type
43259  , p_source_12            IN VARCHAR2
43260  , p_source_12_meaning    IN VARCHAR2
43261 --Entered Currency Code
43262  , p_source_15            IN VARCHAR2
43263 --Entered Amount
43264  , p_source_18            IN NUMBER
43265 --Currency Conversion Date
43266  , p_source_19            IN DATE
43267 --Currency Conversion Rate
43268  , p_source_20            IN NUMBER
43269 --Currency Conversion Type
43270  , p_source_21            IN VARCHAR2
43271 --Accounted Amount
43272  , p_source_22            IN NUMBER
43273 --Accounting Line Type
43274  , p_source_24            IN NUMBER
43275 )
43276 IS
43277 
43278 l_component_type              VARCHAR2(80);
43279 l_component_code              VARCHAR2(30);
43280 l_component_type_code         VARCHAR2(1);
43281 l_component_appl_id           INTEGER;
43282 l_amb_context_code            VARCHAR2(30);
43283 l_entity_code                 VARCHAR2(30);
43284 l_event_class_code            VARCHAR2(30);
43285 l_ae_header_id                NUMBER;
43286 l_event_type_code             VARCHAR2(30);
43287 l_line_definition_code        VARCHAR2(30);
43288 l_line_definition_owner_code  VARCHAR2(1);
43289 --
43290 -- adr variables
43291 l_segment                     VARCHAR2(30);
43292 l_ccid                        NUMBER;
43293 l_adr_transaction_coa_id      NUMBER;
43294 l_adr_accounting_coa_id       NUMBER;
43295 l_adr_flexfield_segment_code  VARCHAR2(30);
43296 l_adr_flex_value_set_id       NUMBER;
43297 l_adr_value_type_code         VARCHAR2(30);
43298 l_adr_value_combination_id    NUMBER;
43299 l_adr_value_segment_code      VARCHAR2(30);
43300 
43301 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
43302 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
43303 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
43304 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
43305 
43306 -- 4262811 Variables ------------------------------------------------------------------------------------------
43307 l_entered_amt_idx             NUMBER;
43308 l_accted_amt_idx              NUMBER;
43309 l_acc_rev_flag                VARCHAR2(1);
43310 l_accrual_line_num            NUMBER;
43311 l_tmp_amt                     NUMBER;
43312 l_acc_rev_natural_side_code   VARCHAR2(1);
43313 
43314 l_num_entries                 NUMBER;
43315 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
43316 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
43317 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
43318 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
43319 l_recog_line_1                NUMBER;
43320 l_recog_line_2                NUMBER;
43321 
43322 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
43323 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
43324 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
43325 
43326 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
43327 
43328 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
43329 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
43330 
43331 ---------------------------------------------------------------------------------------------------------------
43332 
43333 
43334 --
43335 -- bulk performance
43336 --
43337 l_balance_type_code           VARCHAR2(1);
43338 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
43339 l_log_module                  VARCHAR2(240);
43340 
43341 --
43342 -- Upgrade strategy
43343 --
43344 l_actual_upg_option           VARCHAR2(1);
43345 l_enc_upg_option           VARCHAR2(1);
43346 
43347 --
43348 BEGIN
43349 --
43350 IF g_log_enabled THEN
43351       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_81';
43352 END IF;
43353 --
43354 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43355 
43356       trace
43357          (p_msg      => 'BEGIN of AcctLineType_81'
43358          ,p_level    => C_LEVEL_PROCEDURE
43359          ,p_module   => l_log_module);
43360 
43361 END IF;
43362 --
43363 l_component_type             := 'AMB_JLT';
43364 l_component_code             := 'INTERORG_PAYABLES';
43365 l_component_type_code        := 'S';
43366 l_component_appl_id          :=  707;
43367 l_amb_context_code           := 'DEFAULT';
43368 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
43369 l_event_class_code           := 'USER_DEFINE';
43370 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
43371 l_line_definition_owner_code := 'S';
43372 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_TP';
43373 --
43374 l_balance_type_code          := 'A';
43375 l_segment                     := NULL;
43376 l_ccid                        := NULL;
43377 l_adr_transaction_coa_id      := NULL;
43378 l_adr_accounting_coa_id       := NULL;
43379 l_adr_flexfield_segment_code  := NULL;
43380 l_adr_flex_value_set_id       := NULL;
43381 l_adr_value_type_code         := NULL;
43382 l_adr_value_combination_id    := NULL;
43383 l_adr_value_segment_code      := NULL;
43384 
43385 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
43386 l_bflow_class_code           := '';    -- 4219869 Business Flow
43387 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
43388 l_budgetary_control_flag     := 'N';
43389 
43390 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
43391 l_bflow_applied_to_amt       := NULL; -- 5132302
43392 l_entered_amt_idx            := NULL;          -- 4262811
43393 l_accted_amt_idx             := NULL;          -- 4262811
43394 l_acc_rev_flag               := NULL;          -- 4262811
43395 l_accrual_line_num           := NULL;          -- 4262811
43396 l_tmp_amt                    := NULL;          -- 4262811
43397 --
43398  
43399 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
43400     l_balance_type_code <> 'B' THEN
43401 IF NVL(p_source_24,9E125) =  9
43402  THEN 
43403 
43404    --
43405    XLA_AE_LINES_PKG.SetNewLine;
43406 
43407    p_balance_type_code          := l_balance_type_code;
43408    -- set the flag so later we will know whether the gain loss line needs to be created
43409    
43410    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
43411      p_actual_flag :='A';
43412    END IF;
43413 
43414    --
43415    -- bulk performance
43416    --
43417    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
43418                                       p_header_num   => 0); -- 4262811
43419    --
43420    -- set accounting line options
43421    --
43422    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
43423            p_natural_side_code          => 'D'
43424          , p_gain_or_loss_flag          => 'N'
43425          , p_gl_transfer_mode_code      => 'S'
43426          , p_acct_entry_type_code       => 'A'
43427          , p_switch_side_flag           => 'Y'
43428          , p_merge_duplicate_code       => 'N'
43429          );
43430    --
43431    l_acc_rev_natural_side_code := 'C';  -- 4262811
43432    -- 
43433    --
43434    -- set accounting line type info
43435    --
43436    xla_ae_lines_pkg.SetAcctLineType
43437       (p_component_type             => l_component_type
43438       ,p_event_type_code            => l_event_type_code
43439       ,p_line_definition_owner_code => l_line_definition_owner_code
43440       ,p_line_definition_code       => l_line_definition_code
43441       ,p_accounting_line_code       => l_component_code
43442       ,p_accounting_line_type_code  => l_component_type_code
43443       ,p_accounting_line_appl_id    => l_component_appl_id
43444       ,p_amb_context_code           => l_amb_context_code
43445       ,p_entity_code                => l_entity_code
43446       ,p_event_class_code           => l_event_class_code);
43447    --
43448    -- set accounting class
43449    --
43450    xla_ae_lines_pkg.SetAcctClass(
43451            p_accounting_class_code  => 'INTERORG_PAYABLES'
43452          , p_ae_header_id           => l_ae_header_id
43453          );
43454 
43455    --
43456    -- set rounding class
43457    --
43458    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
43459                       'INTERORG_PAYABLES';
43460 
43461    --
43462    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
43463    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
43464    --
43465    -- bulk performance
43466    --
43467    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
43468 
43469    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
43470       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
43471 
43472    -- 4955764
43473    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43474       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
43475 
43476    -- 4458381 Public Sector Enh
43477    
43478    --
43479    -- set accounting attributes for the line type
43480    --
43481    l_entered_amt_idx := 3;
43482    l_accted_amt_idx  := 8;
43483    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
43484    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
43485    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
43486    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
43487    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
43488    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
43489    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
43490    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
43491    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
43492    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
43493    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
43494    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
43495    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
43496    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
43497    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
43498    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
43499    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
43500 
43501    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
43502    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
43503 
43504    ---------------------------------------------------------------------------------------------------------------
43505    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
43506    ---------------------------------------------------------------------------------------------------------------
43507    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
43508 
43509    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43510    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43511 
43512    IF xla_accounting_cache_pkg.GetValueChar
43513          (p_source_code         => 'LEDGER_CATEGORY_CODE'
43514          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
43515    AND l_bflow_method_code = 'PRIOR_ENTRY'
43516 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
43517    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
43518          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
43519        )
43520    THEN
43521          xla_ae_lines_pkg.BflowUpgEntry
43522            (p_business_method_code    => l_bflow_method_code
43523            ,p_business_class_code     => l_bflow_class_code
43524            ,p_balance_type            => l_balance_type_code);
43525    ELSE
43526       NULL;
43527 -- No business flow processing for business flow method of NONE.
43528    END IF;
43529 
43530    --
43531    -- call analytical criteria
43532    --
43533    
43534    --
43535    -- call description
43536    --
43537    -- No description or it is inherited.
43538    --
43539    -- call ADRs
43540    -- Bug 4922099
43541    --
43542    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43543         (NVL(l_actual_upg_option, 'N') = 'O') OR
43544         (NVL(l_enc_upg_option, 'N') = 'O')
43545       )
43546    THEN
43547    NULL;
43548    --
43549    --
43550    
43551   l_ccid := AcctDerRule_4(
43552            p_application_id           => p_application_id
43553          , p_ae_header_id             => l_ae_header_id 
43554 , p_source_4 => p_source_4
43555          , x_transaction_coa_id       => l_adr_transaction_coa_id
43556          , x_accounting_coa_id        => l_adr_accounting_coa_id
43557          , x_value_type_code          => l_adr_value_type_code
43558          , p_side                     => 'NA'
43559    );
43560 
43561    xla_ae_lines_pkg.set_ccid(
43562     p_code_combination_id          => l_ccid
43563   , p_value_type_code              => l_adr_value_type_code
43564   , p_transaction_coa_id           => l_adr_transaction_coa_id
43565   , p_accounting_coa_id            => l_adr_accounting_coa_id
43566   , p_adr_code                     => 'CST_DEFAULT'
43567   , p_adr_type_code                => 'S'
43568   , p_component_type               => l_component_type
43569   , p_component_code               => l_component_code
43570   , p_component_type_code          => l_component_type_code
43571   , p_component_appl_id            => l_component_appl_id
43572   , p_amb_context_code             => l_amb_context_code
43573   , p_side                         => 'NA'
43574   );
43575 
43576 
43577    --
43578    --
43579    END IF;
43580    --
43581    -- Bug 4922099
43582    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
43583           (NVL(l_enc_upg_option, 'N') = 'O')
43584         ) AND
43585         (l_bflow_method_code = 'PRIOR_ENTRY')
43586       )
43587    THEN
43588       IF
43589       --
43590       1 = 2
43591       --
43592       THEN
43593       xla_accounting_err_pkg.build_message
43594                                     (p_appli_s_name            => 'XLA'
43595                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43596                                     ,p_token_1                 => 'LINE_NUMBER'
43597                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
43598                                     ,p_token_2                 => 'LINE_TYPE_NAME'
43599                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
43600                                                                              l_component_type
43601                                                                             ,l_component_code
43602                                                                             ,l_component_type_code
43603                                                                             ,l_component_appl_id
43604                                                                             ,l_amb_context_code
43605                                                                             ,l_entity_code
43606                                                                             ,l_event_class_code
43607                                                                            )
43608                                     ,p_token_3                 => 'OWNER'
43609                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
43610                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
43611                                                                           ,p_lookup_code    => l_component_type_code
43612                                                                          )
43613                                     ,p_token_4                 => 'PRODUCT_NAME'
43614                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
43615                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
43616                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
43617                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
43618                                     ,p_ae_header_id            =>  NULL
43619                                        );
43620 
43621         IF (C_LEVEL_ERROR>= g_log_level) THEN
43622                  trace
43623                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43624                       ,p_level    => C_LEVEL_ERROR
43625                       ,p_module   => l_log_module);
43626         END IF;
43627       END IF;
43628    END IF;
43629    --
43630    --
43631    ------------------------------------------------------------------------------------------------
43632    -- 4219869 Business Flow
43633    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
43634    -- Prior Entry.  Currently, the following code is always generated.
43635    ------------------------------------------------------------------------------------------------
43636    XLA_AE_LINES_PKG.ValidateCurrentLine;
43637 
43638    ------------------------------------------------------------------------------------
43639    -- 4219869 Business Flow
43640    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
43641    ------------------------------------------------------------------------------------
43642    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43643 
43644    ----------------------------------------------------------------------------------
43645    -- 4219869 Business Flow
43646    -- Update journal entry status -- Need to generate this within IF <condition>
43647    ----------------------------------------------------------------------------------
43648    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43649          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
43650          ,p_balance_type_code => l_balance_type_code
43651          );
43652 
43653    -------------------------------------------------------------------------------------------
43654    -- 4262811 - Generate the Accrual Reversal lines
43655    -------------------------------------------------------------------------------------------
43656    BEGIN
43657       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
43658                               (g_array_event(p_event_id).array_value_num('header_index'));
43659       IF l_acc_rev_flag IS NULL THEN
43660          l_acc_rev_flag := 'N';
43661       END IF;
43662    EXCEPTION
43663       WHEN OTHERS THEN
43664          l_acc_rev_flag := 'N';
43665    END;
43666    --
43667    IF (l_acc_rev_flag = 'Y') THEN
43668 
43669        -- 4645092  ------------------------------------------------------------------------------
43670        -- To allow MPA report to determine if it should generate report process
43671        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
43672        ------------------------------------------------------------------------------------------
43673 
43674        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
43675        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
43676    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
43677    -- call ADRs
43678    -- Bug 4922099
43679    --
43680    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43681         (NVL(l_actual_upg_option, 'N') = 'O') OR
43682         (NVL(l_enc_upg_option, 'N') = 'O')
43683       )
43684    THEN
43685    NULL;
43686    --
43687    --
43688    
43689   l_ccid := AcctDerRule_4(
43690            p_application_id           => p_application_id
43691          , p_ae_header_id             => l_ae_header_id 
43692 , p_source_4 => p_source_4
43693          , x_transaction_coa_id       => l_adr_transaction_coa_id
43694          , x_accounting_coa_id        => l_adr_accounting_coa_id
43695          , x_value_type_code          => l_adr_value_type_code
43696          , p_side                     => 'NA'
43697    );
43698 
43699    xla_ae_lines_pkg.set_ccid(
43700     p_code_combination_id          => l_ccid
43701   , p_value_type_code              => l_adr_value_type_code
43702   , p_transaction_coa_id           => l_adr_transaction_coa_id
43703   , p_accounting_coa_id            => l_adr_accounting_coa_id
43704   , p_adr_code                     => 'CST_DEFAULT'
43705   , p_adr_type_code                => 'S'
43706   , p_component_type               => l_component_type
43707   , p_component_code               => l_component_code
43708   , p_component_type_code          => l_component_type_code
43709   , p_component_appl_id            => l_component_appl_id
43710   , p_amb_context_code             => l_amb_context_code
43711   , p_side                         => 'NA'
43712   );
43713 
43714 
43715    --
43716    --
43717    END IF;
43718 
43719        --
43720        -- Update the line information that should be overwritten
43721        --
43722        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
43723                                          p_header_num   => 1);
43724        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
43725 
43726        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
43727 
43728        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
43729           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
43730        END IF;
43731 
43732       --
43733       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
43734       --
43735       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
43736           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
43737       ELSE
43738           ---------------------------------------------------------------------------------------------------
43739           -- 4262811a Switch Sign
43740           ---------------------------------------------------------------------------------------------------
43741           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
43742           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43743                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43744           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43745                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43746           -- 5132302
43747           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
43748                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43749 
43750       END IF;
43751 
43752       -- 4955764
43753       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43754       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
43755 
43756 
43757       XLA_AE_LINES_PKG.ValidateCurrentLine;
43758       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43759 
43760       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43761                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
43762                ,p_balance_type_code => l_balance_type_code);
43763 
43764    END IF;
43765 
43766    -----------------------------------------------------------------------------------------
43767    -- 4262811 Multiperiod Accounting
43768    -----------------------------------------------------------------------------------------
43769      -- No MPA option is assigned.
43770 
43771 
43772 END IF;
43773 END IF;
43774 --
43775 
43776 --
43777 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43778    trace
43779       (p_msg      => 'END of AcctLineType_81'
43780       ,p_level    => C_LEVEL_PROCEDURE
43781       ,p_module   => l_log_module);
43782 END IF;
43783 --
43784 EXCEPTION
43785   WHEN xla_exceptions_pkg.application_exception THEN
43786       RAISE;
43787   WHEN OTHERS THEN
43788        xla_exceptions_pkg.raise_message
43789            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_81');
43790 END AcctLineType_81;
43791 --
43792 
43793 ---------------------------------------
43794 --
43795 -- PRIVATE FUNCTION
43796 --         AcctLineType_82
43797 --
43798 ---------------------------------------
43799 PROCEDURE AcctLineType_82 (
43800   p_application_id        IN NUMBER
43801  ,p_event_id              IN NUMBER
43802  ,p_calculate_acctd_flag  IN VARCHAR2
43803  ,p_calculate_g_l_flag    IN VARCHAR2
43804  ,p_actual_flag           IN OUT VARCHAR2
43805  ,p_balance_type_code     OUT VARCHAR2
43806  ,p_gain_or_loss_ref      OUT VARCHAR2
43807  
43808 --Cost Management Default Account
43809  , p_source_4            IN NUMBER
43810 --Applied to Application ID
43811  , p_source_6            IN NUMBER
43812 --Applied to Distribution Link Type
43813  , p_source_7            IN VARCHAR2
43814 --Applied to Entity Code
43815  , p_source_8            IN VARCHAR2
43816 --DISTRIBUTION_IDENTIFIER
43817  , p_source_11            IN NUMBER
43818 --Distribution Type
43819  , p_source_12            IN VARCHAR2
43820  , p_source_12_meaning    IN VARCHAR2
43821 --Encumbrance Reversal Amount Entered
43822  , p_source_14            IN NUMBER
43823 --Entered Currency Code
43824  , p_source_15            IN VARCHAR2
43825 --Transaction Encumbrance Reversal Amount
43826  , p_source_16            IN NUMBER
43827 --Entered Amount
43828  , p_source_18            IN NUMBER
43829 --Currency Conversion Date
43830  , p_source_19            IN DATE
43831 --Currency Conversion Rate
43832  , p_source_20            IN NUMBER
43833 --Currency Conversion Type
43834  , p_source_21            IN VARCHAR2
43835 --Accounted Amount
43836  , p_source_22            IN NUMBER
43837 --Accounting Line Type
43838  , p_source_24            IN NUMBER
43839 --Costing Encumbrance Upgrade Option
43840  , p_source_27            IN VARCHAR2
43841 --TXN_PO_DISTRIBUTION_ID
43842  , p_source_28            IN NUMBER
43843 --TXN_PO_HEADER_ID
43844  , p_source_29            IN NUMBER
43845 --Requisition Budget Account
43846  , p_source_30            IN NUMBER
43847 --Requisition Encumbrance Type Identifier
43848  , p_source_31            IN NUMBER
43849 )
43850 IS
43851 
43852 l_component_type              VARCHAR2(80);
43853 l_component_code              VARCHAR2(30);
43854 l_component_type_code         VARCHAR2(1);
43855 l_component_appl_id           INTEGER;
43856 l_amb_context_code            VARCHAR2(30);
43857 l_entity_code                 VARCHAR2(30);
43858 l_event_class_code            VARCHAR2(30);
43859 l_ae_header_id                NUMBER;
43860 l_event_type_code             VARCHAR2(30);
43861 l_line_definition_code        VARCHAR2(30);
43862 l_line_definition_owner_code  VARCHAR2(1);
43863 --
43864 -- adr variables
43865 l_segment                     VARCHAR2(30);
43866 l_ccid                        NUMBER;
43867 l_adr_transaction_coa_id      NUMBER;
43868 l_adr_accounting_coa_id       NUMBER;
43869 l_adr_flexfield_segment_code  VARCHAR2(30);
43870 l_adr_flex_value_set_id       NUMBER;
43871 l_adr_value_type_code         VARCHAR2(30);
43872 l_adr_value_combination_id    NUMBER;
43873 l_adr_value_segment_code      VARCHAR2(30);
43874 
43875 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
43876 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
43877 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
43878 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
43879 
43880 -- 4262811 Variables ------------------------------------------------------------------------------------------
43881 l_entered_amt_idx             NUMBER;
43882 l_accted_amt_idx              NUMBER;
43883 l_acc_rev_flag                VARCHAR2(1);
43884 l_accrual_line_num            NUMBER;
43885 l_tmp_amt                     NUMBER;
43886 l_acc_rev_natural_side_code   VARCHAR2(1);
43887 
43888 l_num_entries                 NUMBER;
43889 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
43890 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
43891 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
43892 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
43893 l_recog_line_1                NUMBER;
43894 l_recog_line_2                NUMBER;
43895 
43896 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
43897 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
43898 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
43899 
43900 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
43901 
43902 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
43903 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
43904 
43905 ---------------------------------------------------------------------------------------------------------------
43906 
43907 
43908 --
43909 -- bulk performance
43910 --
43911 l_balance_type_code           VARCHAR2(1);
43912 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
43913 l_log_module                  VARCHAR2(240);
43914 
43915 --
43916 -- Upgrade strategy
43917 --
43918 l_actual_upg_option           VARCHAR2(1);
43919 l_enc_upg_option           VARCHAR2(1);
43920 
43921 --
43922 BEGIN
43923 --
43924 IF g_log_enabled THEN
43925       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_82';
43926 END IF;
43927 --
43928 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43929 
43930       trace
43931          (p_msg      => 'BEGIN of AcctLineType_82'
43932          ,p_level    => C_LEVEL_PROCEDURE
43933          ,p_module   => l_log_module);
43934 
43935 END IF;
43936 --
43937 l_component_type             := 'AMB_JLT';
43938 l_component_code             := 'INTERORG_PAYABLES';
43939 l_component_type_code        := 'S';
43940 l_component_appl_id          :=  707;
43941 l_amb_context_code           := 'DEFAULT';
43942 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
43943 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
43944 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
43945 l_line_definition_owner_code := 'S';
43946 l_line_definition_code       := 'FOB_RCPT_RECIPIENT_RCPT';
43947 --
43948 l_balance_type_code          := 'A';
43949 l_segment                     := NULL;
43950 l_ccid                        := NULL;
43951 l_adr_transaction_coa_id      := NULL;
43952 l_adr_accounting_coa_id       := NULL;
43953 l_adr_flexfield_segment_code  := NULL;
43954 l_adr_flex_value_set_id       := NULL;
43955 l_adr_value_type_code         := NULL;
43956 l_adr_value_combination_id    := NULL;
43957 l_adr_value_segment_code      := NULL;
43958 
43959 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
43960 l_bflow_class_code           := '';    -- 4219869 Business Flow
43961 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
43962 l_budgetary_control_flag     := 'N';
43963 
43964 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
43965 l_bflow_applied_to_amt       := NULL; -- 5132302
43966 l_entered_amt_idx            := NULL;          -- 4262811
43967 l_accted_amt_idx             := NULL;          -- 4262811
43968 l_acc_rev_flag               := NULL;          -- 4262811
43969 l_accrual_line_num           := NULL;          -- 4262811
43970 l_tmp_amt                    := NULL;          -- 4262811
43971 --
43972  
43973 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
43974     l_balance_type_code <> 'B' THEN
43975 IF NVL(p_source_24,9E125) =  9
43976  THEN 
43977 
43978    --
43979    XLA_AE_LINES_PKG.SetNewLine;
43980 
43981    p_balance_type_code          := l_balance_type_code;
43982    -- set the flag so later we will know whether the gain loss line needs to be created
43983    
43984    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
43985      p_actual_flag :='A';
43986    END IF;
43987 
43988    --
43989    -- bulk performance
43990    --
43991    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
43992                                       p_header_num   => 0); -- 4262811
43993    --
43994    -- set accounting line options
43995    --
43996    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
43997            p_natural_side_code          => 'D'
43998          , p_gain_or_loss_flag          => 'N'
43999          , p_gl_transfer_mode_code      => 'S'
44000          , p_acct_entry_type_code       => 'A'
44001          , p_switch_side_flag           => 'Y'
44002          , p_merge_duplicate_code       => 'N'
44003          );
44004    --
44005    l_acc_rev_natural_side_code := 'C';  -- 4262811
44006    -- 
44007    --
44008    -- set accounting line type info
44009    --
44010    xla_ae_lines_pkg.SetAcctLineType
44011       (p_component_type             => l_component_type
44012       ,p_event_type_code            => l_event_type_code
44013       ,p_line_definition_owner_code => l_line_definition_owner_code
44014       ,p_line_definition_code       => l_line_definition_code
44015       ,p_accounting_line_code       => l_component_code
44016       ,p_accounting_line_type_code  => l_component_type_code
44017       ,p_accounting_line_appl_id    => l_component_appl_id
44018       ,p_amb_context_code           => l_amb_context_code
44019       ,p_entity_code                => l_entity_code
44020       ,p_event_class_code           => l_event_class_code);
44021    --
44022    -- set accounting class
44023    --
44024    xla_ae_lines_pkg.SetAcctClass(
44025            p_accounting_class_code  => 'INTERORG_PAYABLES'
44026          , p_ae_header_id           => l_ae_header_id
44027          );
44028 
44029    --
44030    -- set rounding class
44031    --
44032    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
44033                       'INTERORG_PAYABLES';
44034 
44035    --
44036    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
44037    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
44038    --
44039    -- bulk performance
44040    --
44041    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
44042 
44043    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
44044       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
44045 
44046    -- 4955764
44047    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44048       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
44049 
44050    -- 4458381 Public Sector Enh
44051    
44052    --
44053    -- set accounting attributes for the line type
44054    --
44055    l_entered_amt_idx := 17;
44056    l_accted_amt_idx  := 22;
44057    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
44058    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
44059    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
44060    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
44061    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
44062    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
44063    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
44064    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
44065    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
44066    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
44067    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
44068    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
44069    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
44070    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
44071    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
44072    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
44073    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
44074    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
44075    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
44076    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
44077    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
44078    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
44079    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
44080    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
44081    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
44082    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
44083    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
44084    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
44085    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
44086    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
44087    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
44088    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
44089    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
44090    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
44091    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
44092    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
44093    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
44094    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
44095    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
44096    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
44097    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
44098    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
44099    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
44100    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
44101    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
44102    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
44103    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
44104    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
44105    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
44106 
44107    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
44108    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
44109 
44110    ---------------------------------------------------------------------------------------------------------------
44111    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
44112    ---------------------------------------------------------------------------------------------------------------
44113    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
44114 
44115    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44116    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44117 
44118    IF xla_accounting_cache_pkg.GetValueChar
44119          (p_source_code         => 'LEDGER_CATEGORY_CODE'
44120          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
44121    AND l_bflow_method_code = 'PRIOR_ENTRY'
44122 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
44123    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
44124          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
44125        )
44126    THEN
44127          xla_ae_lines_pkg.BflowUpgEntry
44128            (p_business_method_code    => l_bflow_method_code
44129            ,p_business_class_code     => l_bflow_class_code
44130            ,p_balance_type            => l_balance_type_code);
44131    ELSE
44132       NULL;
44133 -- No business flow processing for business flow method of NONE.
44134    END IF;
44135 
44136    --
44137    -- call analytical criteria
44138    --
44139    
44140    --
44141    -- call description
44142    --
44143    -- No description or it is inherited.
44144    --
44145    -- call ADRs
44146    -- Bug 4922099
44147    --
44148    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44149         (NVL(l_actual_upg_option, 'N') = 'O') OR
44150         (NVL(l_enc_upg_option, 'N') = 'O')
44151       )
44152    THEN
44153    NULL;
44154    --
44155    --
44156    
44157   l_ccid := AcctDerRule_4(
44158            p_application_id           => p_application_id
44159          , p_ae_header_id             => l_ae_header_id 
44160 , p_source_4 => p_source_4
44161          , x_transaction_coa_id       => l_adr_transaction_coa_id
44162          , x_accounting_coa_id        => l_adr_accounting_coa_id
44163          , x_value_type_code          => l_adr_value_type_code
44164          , p_side                     => 'NA'
44165    );
44166 
44167    xla_ae_lines_pkg.set_ccid(
44168     p_code_combination_id          => l_ccid
44169   , p_value_type_code              => l_adr_value_type_code
44170   , p_transaction_coa_id           => l_adr_transaction_coa_id
44171   , p_accounting_coa_id            => l_adr_accounting_coa_id
44172   , p_adr_code                     => 'CST_DEFAULT'
44173   , p_adr_type_code                => 'S'
44174   , p_component_type               => l_component_type
44175   , p_component_code               => l_component_code
44176   , p_component_type_code          => l_component_type_code
44177   , p_component_appl_id            => l_component_appl_id
44178   , p_amb_context_code             => l_amb_context_code
44179   , p_side                         => 'NA'
44180   );
44181 
44182 
44183    --
44184    --
44185    END IF;
44186    --
44187    -- Bug 4922099
44188    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
44189           (NVL(l_enc_upg_option, 'N') = 'O')
44190         ) AND
44191         (l_bflow_method_code = 'PRIOR_ENTRY')
44192       )
44193    THEN
44194       IF
44195       --
44196       1 = 2
44197       --
44198       THEN
44199       xla_accounting_err_pkg.build_message
44200                                     (p_appli_s_name            => 'XLA'
44201                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44202                                     ,p_token_1                 => 'LINE_NUMBER'
44203                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
44204                                     ,p_token_2                 => 'LINE_TYPE_NAME'
44205                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
44206                                                                              l_component_type
44207                                                                             ,l_component_code
44208                                                                             ,l_component_type_code
44209                                                                             ,l_component_appl_id
44210                                                                             ,l_amb_context_code
44211                                                                             ,l_entity_code
44212                                                                             ,l_event_class_code
44213                                                                            )
44214                                     ,p_token_3                 => 'OWNER'
44215                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
44216                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
44217                                                                           ,p_lookup_code    => l_component_type_code
44218                                                                          )
44219                                     ,p_token_4                 => 'PRODUCT_NAME'
44220                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
44221                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
44222                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
44223                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
44224                                     ,p_ae_header_id            =>  NULL
44225                                        );
44226 
44227         IF (C_LEVEL_ERROR>= g_log_level) THEN
44228                  trace
44229                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44230                       ,p_level    => C_LEVEL_ERROR
44231                       ,p_module   => l_log_module);
44232         END IF;
44233       END IF;
44234    END IF;
44235    --
44236    --
44237    ------------------------------------------------------------------------------------------------
44238    -- 4219869 Business Flow
44239    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
44240    -- Prior Entry.  Currently, the following code is always generated.
44241    ------------------------------------------------------------------------------------------------
44242    XLA_AE_LINES_PKG.ValidateCurrentLine;
44243 
44244    ------------------------------------------------------------------------------------
44245    -- 4219869 Business Flow
44246    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
44247    ------------------------------------------------------------------------------------
44248    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44249 
44250    ----------------------------------------------------------------------------------
44251    -- 4219869 Business Flow
44252    -- Update journal entry status -- Need to generate this within IF <condition>
44253    ----------------------------------------------------------------------------------
44254    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44255          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
44256          ,p_balance_type_code => l_balance_type_code
44257          );
44258 
44259    -------------------------------------------------------------------------------------------
44260    -- 4262811 - Generate the Accrual Reversal lines
44261    -------------------------------------------------------------------------------------------
44262    BEGIN
44263       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
44264                               (g_array_event(p_event_id).array_value_num('header_index'));
44265       IF l_acc_rev_flag IS NULL THEN
44266          l_acc_rev_flag := 'N';
44267       END IF;
44268    EXCEPTION
44269       WHEN OTHERS THEN
44270          l_acc_rev_flag := 'N';
44271    END;
44272    --
44273    IF (l_acc_rev_flag = 'Y') THEN
44274 
44275        -- 4645092  ------------------------------------------------------------------------------
44276        -- To allow MPA report to determine if it should generate report process
44277        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
44278        ------------------------------------------------------------------------------------------
44279 
44280        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
44281        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
44282    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
44283    -- call ADRs
44284    -- Bug 4922099
44285    --
44286    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44287         (NVL(l_actual_upg_option, 'N') = 'O') OR
44288         (NVL(l_enc_upg_option, 'N') = 'O')
44289       )
44290    THEN
44291    NULL;
44292    --
44293    --
44294    
44295   l_ccid := AcctDerRule_4(
44296            p_application_id           => p_application_id
44297          , p_ae_header_id             => l_ae_header_id 
44298 , p_source_4 => p_source_4
44299          , x_transaction_coa_id       => l_adr_transaction_coa_id
44300          , x_accounting_coa_id        => l_adr_accounting_coa_id
44301          , x_value_type_code          => l_adr_value_type_code
44302          , p_side                     => 'NA'
44303    );
44304 
44305    xla_ae_lines_pkg.set_ccid(
44306     p_code_combination_id          => l_ccid
44307   , p_value_type_code              => l_adr_value_type_code
44308   , p_transaction_coa_id           => l_adr_transaction_coa_id
44309   , p_accounting_coa_id            => l_adr_accounting_coa_id
44310   , p_adr_code                     => 'CST_DEFAULT'
44311   , p_adr_type_code                => 'S'
44312   , p_component_type               => l_component_type
44313   , p_component_code               => l_component_code
44314   , p_component_type_code          => l_component_type_code
44315   , p_component_appl_id            => l_component_appl_id
44316   , p_amb_context_code             => l_amb_context_code
44317   , p_side                         => 'NA'
44318   );
44319 
44320 
44321    --
44322    --
44323    END IF;
44324 
44325        --
44326        -- Update the line information that should be overwritten
44327        --
44328        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
44329                                          p_header_num   => 1);
44330        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
44331 
44332        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
44333 
44334        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
44335           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
44336        END IF;
44337 
44338       --
44339       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
44340       --
44341       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
44342           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
44343       ELSE
44344           ---------------------------------------------------------------------------------------------------
44345           -- 4262811a Switch Sign
44346           ---------------------------------------------------------------------------------------------------
44347           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
44348           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44349                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44350           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44351                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44352           -- 5132302
44353           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
44354                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44355 
44356       END IF;
44357 
44358       -- 4955764
44359       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44360       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
44361 
44362 
44363       XLA_AE_LINES_PKG.ValidateCurrentLine;
44364       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44365 
44366       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44367                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
44368                ,p_balance_type_code => l_balance_type_code);
44369 
44370    END IF;
44371 
44372    -----------------------------------------------------------------------------------------
44373    -- 4262811 Multiperiod Accounting
44374    -----------------------------------------------------------------------------------------
44375      -- No MPA option is assigned.
44376 
44377 
44378 END IF;
44379 END IF;
44380 --
44381 
44382 --
44383 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44384    trace
44385       (p_msg      => 'END of AcctLineType_82'
44386       ,p_level    => C_LEVEL_PROCEDURE
44387       ,p_module   => l_log_module);
44388 END IF;
44389 --
44390 EXCEPTION
44391   WHEN xla_exceptions_pkg.application_exception THEN
44392       RAISE;
44393   WHEN OTHERS THEN
44394        xla_exceptions_pkg.raise_message
44395            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_82');
44396 END AcctLineType_82;
44397 --
44398 
44399 ---------------------------------------
44400 --
44401 -- PRIVATE FUNCTION
44402 --         AcctLineType_83
44403 --
44404 ---------------------------------------
44405 PROCEDURE AcctLineType_83 (
44406   p_application_id        IN NUMBER
44407  ,p_event_id              IN NUMBER
44408  ,p_calculate_acctd_flag  IN VARCHAR2
44409  ,p_calculate_g_l_flag    IN VARCHAR2
44410  ,p_actual_flag           IN OUT VARCHAR2
44411  ,p_balance_type_code     OUT VARCHAR2
44412  ,p_gain_or_loss_ref      OUT VARCHAR2
44413  
44414 --Cost Management Default Account
44415  , p_source_4            IN NUMBER
44416 --DISTRIBUTION_IDENTIFIER
44417  , p_source_11            IN NUMBER
44418 --Distribution Type
44419  , p_source_12            IN VARCHAR2
44420  , p_source_12_meaning    IN VARCHAR2
44421 --Entered Currency Code
44422  , p_source_15            IN VARCHAR2
44423 --Entered Amount
44424  , p_source_18            IN NUMBER
44425 --Currency Conversion Date
44426  , p_source_19            IN DATE
44427 --Currency Conversion Rate
44428  , p_source_20            IN NUMBER
44429 --Currency Conversion Type
44430  , p_source_21            IN VARCHAR2
44431 --Accounted Amount
44432  , p_source_22            IN NUMBER
44433 --Accounting Line Type
44434  , p_source_24            IN NUMBER
44435 )
44436 IS
44437 
44438 l_component_type              VARCHAR2(80);
44439 l_component_code              VARCHAR2(30);
44440 l_component_type_code         VARCHAR2(1);
44441 l_component_appl_id           INTEGER;
44442 l_amb_context_code            VARCHAR2(30);
44443 l_entity_code                 VARCHAR2(30);
44444 l_event_class_code            VARCHAR2(30);
44445 l_ae_header_id                NUMBER;
44446 l_event_type_code             VARCHAR2(30);
44447 l_line_definition_code        VARCHAR2(30);
44448 l_line_definition_owner_code  VARCHAR2(1);
44449 --
44450 -- adr variables
44451 l_segment                     VARCHAR2(30);
44452 l_ccid                        NUMBER;
44453 l_adr_transaction_coa_id      NUMBER;
44454 l_adr_accounting_coa_id       NUMBER;
44455 l_adr_flexfield_segment_code  VARCHAR2(30);
44456 l_adr_flex_value_set_id       NUMBER;
44457 l_adr_value_type_code         VARCHAR2(30);
44458 l_adr_value_combination_id    NUMBER;
44459 l_adr_value_segment_code      VARCHAR2(30);
44460 
44461 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
44462 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
44463 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
44464 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
44465 
44466 -- 4262811 Variables ------------------------------------------------------------------------------------------
44467 l_entered_amt_idx             NUMBER;
44468 l_accted_amt_idx              NUMBER;
44469 l_acc_rev_flag                VARCHAR2(1);
44470 l_accrual_line_num            NUMBER;
44471 l_tmp_amt                     NUMBER;
44472 l_acc_rev_natural_side_code   VARCHAR2(1);
44473 
44474 l_num_entries                 NUMBER;
44475 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
44476 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
44477 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
44478 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
44479 l_recog_line_1                NUMBER;
44480 l_recog_line_2                NUMBER;
44481 
44482 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
44483 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
44484 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
44485 
44486 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
44487 
44488 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
44489 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
44490 
44491 ---------------------------------------------------------------------------------------------------------------
44492 
44493 
44494 --
44495 -- bulk performance
44496 --
44497 l_balance_type_code           VARCHAR2(1);
44498 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
44499 l_log_module                  VARCHAR2(240);
44500 
44501 --
44502 -- Upgrade strategy
44503 --
44504 l_actual_upg_option           VARCHAR2(1);
44505 l_enc_upg_option           VARCHAR2(1);
44506 
44507 --
44508 BEGIN
44509 --
44510 IF g_log_enabled THEN
44511       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_83';
44512 END IF;
44513 --
44514 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44515 
44516       trace
44517          (p_msg      => 'BEGIN of AcctLineType_83'
44518          ,p_level    => C_LEVEL_PROCEDURE
44519          ,p_module   => l_log_module);
44520 
44521 END IF;
44522 --
44523 l_component_type             := 'AMB_JLT';
44524 l_component_code             := 'INTERORG_PAYABLES';
44525 l_component_type_code        := 'S';
44526 l_component_appl_id          :=  707;
44527 l_amb_context_code           := 'DEFAULT';
44528 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
44529 l_event_class_code           := 'USER_DEFINE';
44530 l_event_type_code            := 'UDIR_INTERORG_RCPT';
44531 l_line_definition_owner_code := 'S';
44532 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT';
44533 --
44534 l_balance_type_code          := 'A';
44535 l_segment                     := NULL;
44536 l_ccid                        := NULL;
44537 l_adr_transaction_coa_id      := NULL;
44538 l_adr_accounting_coa_id       := NULL;
44539 l_adr_flexfield_segment_code  := NULL;
44540 l_adr_flex_value_set_id       := NULL;
44541 l_adr_value_type_code         := NULL;
44542 l_adr_value_combination_id    := NULL;
44543 l_adr_value_segment_code      := NULL;
44544 
44545 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
44546 l_bflow_class_code           := '';    -- 4219869 Business Flow
44547 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
44548 l_budgetary_control_flag     := 'N';
44549 
44550 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
44551 l_bflow_applied_to_amt       := NULL; -- 5132302
44552 l_entered_amt_idx            := NULL;          -- 4262811
44553 l_accted_amt_idx             := NULL;          -- 4262811
44554 l_acc_rev_flag               := NULL;          -- 4262811
44555 l_accrual_line_num           := NULL;          -- 4262811
44556 l_tmp_amt                    := NULL;          -- 4262811
44557 --
44558  
44559 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
44560     l_balance_type_code <> 'B' THEN
44561 IF NVL(p_source_24,9E125) =  9
44562  THEN 
44563 
44564    --
44565    XLA_AE_LINES_PKG.SetNewLine;
44566 
44567    p_balance_type_code          := l_balance_type_code;
44568    -- set the flag so later we will know whether the gain loss line needs to be created
44569    
44570    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
44571      p_actual_flag :='A';
44572    END IF;
44573 
44574    --
44575    -- bulk performance
44576    --
44577    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
44578                                       p_header_num   => 0); -- 4262811
44579    --
44580    -- set accounting line options
44581    --
44582    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
44583            p_natural_side_code          => 'D'
44584          , p_gain_or_loss_flag          => 'N'
44585          , p_gl_transfer_mode_code      => 'S'
44586          , p_acct_entry_type_code       => 'A'
44587          , p_switch_side_flag           => 'Y'
44588          , p_merge_duplicate_code       => 'N'
44589          );
44590    --
44591    l_acc_rev_natural_side_code := 'C';  -- 4262811
44592    -- 
44593    --
44594    -- set accounting line type info
44595    --
44596    xla_ae_lines_pkg.SetAcctLineType
44597       (p_component_type             => l_component_type
44598       ,p_event_type_code            => l_event_type_code
44599       ,p_line_definition_owner_code => l_line_definition_owner_code
44600       ,p_line_definition_code       => l_line_definition_code
44601       ,p_accounting_line_code       => l_component_code
44602       ,p_accounting_line_type_code  => l_component_type_code
44603       ,p_accounting_line_appl_id    => l_component_appl_id
44604       ,p_amb_context_code           => l_amb_context_code
44605       ,p_entity_code                => l_entity_code
44606       ,p_event_class_code           => l_event_class_code);
44607    --
44608    -- set accounting class
44609    --
44610    xla_ae_lines_pkg.SetAcctClass(
44611            p_accounting_class_code  => 'INTERORG_PAYABLES'
44612          , p_ae_header_id           => l_ae_header_id
44613          );
44614 
44615    --
44616    -- set rounding class
44617    --
44618    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
44619                       'INTERORG_PAYABLES';
44620 
44621    --
44622    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
44623    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
44624    --
44625    -- bulk performance
44626    --
44627    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
44628 
44629    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
44630       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
44631 
44632    -- 4955764
44633    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44634       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
44635 
44636    -- 4458381 Public Sector Enh
44637    
44638    --
44639    -- set accounting attributes for the line type
44640    --
44641    l_entered_amt_idx := 3;
44642    l_accted_amt_idx  := 8;
44643    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
44644    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
44645    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
44646    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
44647    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
44648    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
44649    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
44650    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
44651    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
44652    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
44653    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
44654    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
44655    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
44656    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
44657    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
44658    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
44659    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
44660 
44661    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
44662    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
44663 
44664    ---------------------------------------------------------------------------------------------------------------
44665    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
44666    ---------------------------------------------------------------------------------------------------------------
44667    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
44668 
44669    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44670    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44671 
44672    IF xla_accounting_cache_pkg.GetValueChar
44673          (p_source_code         => 'LEDGER_CATEGORY_CODE'
44674          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
44675    AND l_bflow_method_code = 'PRIOR_ENTRY'
44676 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
44677    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
44678          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
44679        )
44680    THEN
44681          xla_ae_lines_pkg.BflowUpgEntry
44682            (p_business_method_code    => l_bflow_method_code
44683            ,p_business_class_code     => l_bflow_class_code
44684            ,p_balance_type            => l_balance_type_code);
44685    ELSE
44686       NULL;
44687 -- No business flow processing for business flow method of NONE.
44688    END IF;
44689 
44690    --
44691    -- call analytical criteria
44692    --
44693    
44694    --
44695    -- call description
44696    --
44697    -- No description or it is inherited.
44698    --
44699    -- call ADRs
44700    -- Bug 4922099
44701    --
44702    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44703         (NVL(l_actual_upg_option, 'N') = 'O') OR
44704         (NVL(l_enc_upg_option, 'N') = 'O')
44705       )
44706    THEN
44707    NULL;
44708    --
44709    --
44710    
44711   l_ccid := AcctDerRule_4(
44712            p_application_id           => p_application_id
44713          , p_ae_header_id             => l_ae_header_id 
44714 , p_source_4 => p_source_4
44715          , x_transaction_coa_id       => l_adr_transaction_coa_id
44716          , x_accounting_coa_id        => l_adr_accounting_coa_id
44717          , x_value_type_code          => l_adr_value_type_code
44718          , p_side                     => 'NA'
44719    );
44720 
44721    xla_ae_lines_pkg.set_ccid(
44722     p_code_combination_id          => l_ccid
44723   , p_value_type_code              => l_adr_value_type_code
44724   , p_transaction_coa_id           => l_adr_transaction_coa_id
44725   , p_accounting_coa_id            => l_adr_accounting_coa_id
44726   , p_adr_code                     => 'CST_DEFAULT'
44727   , p_adr_type_code                => 'S'
44728   , p_component_type               => l_component_type
44729   , p_component_code               => l_component_code
44730   , p_component_type_code          => l_component_type_code
44731   , p_component_appl_id            => l_component_appl_id
44732   , p_amb_context_code             => l_amb_context_code
44733   , p_side                         => 'NA'
44734   );
44735 
44736 
44737    --
44738    --
44739    END IF;
44740    --
44741    -- Bug 4922099
44742    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
44743           (NVL(l_enc_upg_option, 'N') = 'O')
44744         ) AND
44745         (l_bflow_method_code = 'PRIOR_ENTRY')
44746       )
44747    THEN
44748       IF
44749       --
44750       1 = 2
44751       --
44752       THEN
44753       xla_accounting_err_pkg.build_message
44754                                     (p_appli_s_name            => 'XLA'
44755                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44756                                     ,p_token_1                 => 'LINE_NUMBER'
44757                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
44758                                     ,p_token_2                 => 'LINE_TYPE_NAME'
44759                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
44760                                                                              l_component_type
44761                                                                             ,l_component_code
44762                                                                             ,l_component_type_code
44763                                                                             ,l_component_appl_id
44764                                                                             ,l_amb_context_code
44765                                                                             ,l_entity_code
44766                                                                             ,l_event_class_code
44767                                                                            )
44768                                     ,p_token_3                 => 'OWNER'
44769                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
44770                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
44771                                                                           ,p_lookup_code    => l_component_type_code
44772                                                                          )
44773                                     ,p_token_4                 => 'PRODUCT_NAME'
44774                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
44775                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
44776                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
44777                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
44778                                     ,p_ae_header_id            =>  NULL
44779                                        );
44780 
44781         IF (C_LEVEL_ERROR>= g_log_level) THEN
44782                  trace
44783                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44784                       ,p_level    => C_LEVEL_ERROR
44785                       ,p_module   => l_log_module);
44786         END IF;
44787       END IF;
44788    END IF;
44789    --
44790    --
44791    ------------------------------------------------------------------------------------------------
44792    -- 4219869 Business Flow
44793    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
44794    -- Prior Entry.  Currently, the following code is always generated.
44795    ------------------------------------------------------------------------------------------------
44796    XLA_AE_LINES_PKG.ValidateCurrentLine;
44797 
44798    ------------------------------------------------------------------------------------
44799    -- 4219869 Business Flow
44800    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
44801    ------------------------------------------------------------------------------------
44802    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44803 
44804    ----------------------------------------------------------------------------------
44805    -- 4219869 Business Flow
44806    -- Update journal entry status -- Need to generate this within IF <condition>
44807    ----------------------------------------------------------------------------------
44808    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44809          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
44810          ,p_balance_type_code => l_balance_type_code
44811          );
44812 
44813    -------------------------------------------------------------------------------------------
44814    -- 4262811 - Generate the Accrual Reversal lines
44815    -------------------------------------------------------------------------------------------
44816    BEGIN
44817       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
44818                               (g_array_event(p_event_id).array_value_num('header_index'));
44819       IF l_acc_rev_flag IS NULL THEN
44820          l_acc_rev_flag := 'N';
44821       END IF;
44822    EXCEPTION
44823       WHEN OTHERS THEN
44824          l_acc_rev_flag := 'N';
44825    END;
44826    --
44827    IF (l_acc_rev_flag = 'Y') THEN
44828 
44829        -- 4645092  ------------------------------------------------------------------------------
44830        -- To allow MPA report to determine if it should generate report process
44831        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
44832        ------------------------------------------------------------------------------------------
44833 
44834        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
44835        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
44836    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
44837    -- call ADRs
44838    -- Bug 4922099
44839    --
44840    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44841         (NVL(l_actual_upg_option, 'N') = 'O') OR
44842         (NVL(l_enc_upg_option, 'N') = 'O')
44843       )
44844    THEN
44845    NULL;
44846    --
44847    --
44848    
44849   l_ccid := AcctDerRule_4(
44850            p_application_id           => p_application_id
44851          , p_ae_header_id             => l_ae_header_id 
44852 , p_source_4 => p_source_4
44853          , x_transaction_coa_id       => l_adr_transaction_coa_id
44854          , x_accounting_coa_id        => l_adr_accounting_coa_id
44855          , x_value_type_code          => l_adr_value_type_code
44856          , p_side                     => 'NA'
44857    );
44858 
44859    xla_ae_lines_pkg.set_ccid(
44860     p_code_combination_id          => l_ccid
44861   , p_value_type_code              => l_adr_value_type_code
44862   , p_transaction_coa_id           => l_adr_transaction_coa_id
44863   , p_accounting_coa_id            => l_adr_accounting_coa_id
44864   , p_adr_code                     => 'CST_DEFAULT'
44865   , p_adr_type_code                => 'S'
44866   , p_component_type               => l_component_type
44867   , p_component_code               => l_component_code
44868   , p_component_type_code          => l_component_type_code
44869   , p_component_appl_id            => l_component_appl_id
44870   , p_amb_context_code             => l_amb_context_code
44871   , p_side                         => 'NA'
44872   );
44873 
44874 
44875    --
44876    --
44877    END IF;
44878 
44879        --
44880        -- Update the line information that should be overwritten
44881        --
44882        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
44883                                          p_header_num   => 1);
44884        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
44885 
44886        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
44887 
44888        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
44889           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
44890        END IF;
44891 
44892       --
44893       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
44894       --
44895       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
44896           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
44897       ELSE
44898           ---------------------------------------------------------------------------------------------------
44899           -- 4262811a Switch Sign
44900           ---------------------------------------------------------------------------------------------------
44901           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
44902           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44903                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44904           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44905                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44906           -- 5132302
44907           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
44908                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44909 
44910       END IF;
44911 
44912       -- 4955764
44913       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44914       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
44915 
44916 
44917       XLA_AE_LINES_PKG.ValidateCurrentLine;
44918       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44919 
44920       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44921                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
44922                ,p_balance_type_code => l_balance_type_code);
44923 
44924    END IF;
44925 
44926    -----------------------------------------------------------------------------------------
44927    -- 4262811 Multiperiod Accounting
44928    -----------------------------------------------------------------------------------------
44929      -- No MPA option is assigned.
44930 
44931 
44932 END IF;
44933 END IF;
44934 --
44935 
44936 --
44937 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44938    trace
44939       (p_msg      => 'END of AcctLineType_83'
44940       ,p_level    => C_LEVEL_PROCEDURE
44941       ,p_module   => l_log_module);
44942 END IF;
44943 --
44944 EXCEPTION
44945   WHEN xla_exceptions_pkg.application_exception THEN
44946       RAISE;
44947   WHEN OTHERS THEN
44948        xla_exceptions_pkg.raise_message
44949            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_83');
44950 END AcctLineType_83;
44951 --
44952 
44953 ---------------------------------------
44954 --
44955 -- PRIVATE FUNCTION
44956 --         AcctLineType_84
44957 --
44958 ---------------------------------------
44959 PROCEDURE AcctLineType_84 (
44960   p_application_id        IN NUMBER
44961  ,p_event_id              IN NUMBER
44962  ,p_calculate_acctd_flag  IN VARCHAR2
44963  ,p_calculate_g_l_flag    IN VARCHAR2
44964  ,p_actual_flag           IN OUT VARCHAR2
44965  ,p_balance_type_code     OUT VARCHAR2
44966  ,p_gain_or_loss_ref      OUT VARCHAR2
44967  
44968 --Cost Management Default Account
44969  , p_source_4            IN NUMBER
44970 --DISTRIBUTION_IDENTIFIER
44971  , p_source_11            IN NUMBER
44972 --Distribution Type
44973  , p_source_12            IN VARCHAR2
44974  , p_source_12_meaning    IN VARCHAR2
44975 --Entered Currency Code
44976  , p_source_15            IN VARCHAR2
44977 --Entered Amount
44978  , p_source_18            IN NUMBER
44979 --Currency Conversion Date
44980  , p_source_19            IN DATE
44981 --Currency Conversion Rate
44982  , p_source_20            IN NUMBER
44983 --Currency Conversion Type
44984  , p_source_21            IN VARCHAR2
44985 --Accounted Amount
44986  , p_source_22            IN NUMBER
44987 --Accounting Line Type
44988  , p_source_24            IN NUMBER
44989 )
44990 IS
44991 
44992 l_component_type              VARCHAR2(80);
44993 l_component_code              VARCHAR2(30);
44994 l_component_type_code         VARCHAR2(1);
44995 l_component_appl_id           INTEGER;
44996 l_amb_context_code            VARCHAR2(30);
44997 l_entity_code                 VARCHAR2(30);
44998 l_event_class_code            VARCHAR2(30);
44999 l_ae_header_id                NUMBER;
45000 l_event_type_code             VARCHAR2(30);
45001 l_line_definition_code        VARCHAR2(30);
45002 l_line_definition_owner_code  VARCHAR2(1);
45003 --
45004 -- adr variables
45005 l_segment                     VARCHAR2(30);
45006 l_ccid                        NUMBER;
45007 l_adr_transaction_coa_id      NUMBER;
45008 l_adr_accounting_coa_id       NUMBER;
45009 l_adr_flexfield_segment_code  VARCHAR2(30);
45010 l_adr_flex_value_set_id       NUMBER;
45011 l_adr_value_type_code         VARCHAR2(30);
45012 l_adr_value_combination_id    NUMBER;
45013 l_adr_value_segment_code      VARCHAR2(30);
45014 
45015 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
45016 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
45017 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
45018 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
45019 
45020 -- 4262811 Variables ------------------------------------------------------------------------------------------
45021 l_entered_amt_idx             NUMBER;
45022 l_accted_amt_idx              NUMBER;
45023 l_acc_rev_flag                VARCHAR2(1);
45024 l_accrual_line_num            NUMBER;
45025 l_tmp_amt                     NUMBER;
45026 l_acc_rev_natural_side_code   VARCHAR2(1);
45027 
45028 l_num_entries                 NUMBER;
45029 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
45030 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
45031 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
45032 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
45033 l_recog_line_1                NUMBER;
45034 l_recog_line_2                NUMBER;
45035 
45036 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
45037 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
45038 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
45039 
45040 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
45041 
45042 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
45043 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
45044 
45045 ---------------------------------------------------------------------------------------------------------------
45046 
45047 
45048 --
45049 -- bulk performance
45050 --
45051 l_balance_type_code           VARCHAR2(1);
45052 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
45053 l_log_module                  VARCHAR2(240);
45054 
45055 --
45056 -- Upgrade strategy
45057 --
45058 l_actual_upg_option           VARCHAR2(1);
45059 l_enc_upg_option           VARCHAR2(1);
45060 
45061 --
45062 BEGIN
45063 --
45064 IF g_log_enabled THEN
45065       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_84';
45066 END IF;
45067 --
45068 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45069 
45070       trace
45071          (p_msg      => 'BEGIN of AcctLineType_84'
45072          ,p_level    => C_LEVEL_PROCEDURE
45073          ,p_module   => l_log_module);
45074 
45075 END IF;
45076 --
45077 l_component_type             := 'AMB_JLT';
45078 l_component_code             := 'INTERORG_PAYABLES';
45079 l_component_type_code        := 'S';
45080 l_component_appl_id          :=  707;
45081 l_amb_context_code           := 'DEFAULT';
45082 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
45083 l_event_class_code           := 'USER_DEFINE';
45084 l_event_type_code            := 'UDIR_INTERORG_RCPT_TP';
45085 l_line_definition_owner_code := 'S';
45086 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_TP';
45087 --
45088 l_balance_type_code          := 'A';
45089 l_segment                     := NULL;
45090 l_ccid                        := NULL;
45091 l_adr_transaction_coa_id      := NULL;
45092 l_adr_accounting_coa_id       := NULL;
45093 l_adr_flexfield_segment_code  := NULL;
45094 l_adr_flex_value_set_id       := NULL;
45095 l_adr_value_type_code         := NULL;
45096 l_adr_value_combination_id    := NULL;
45097 l_adr_value_segment_code      := NULL;
45098 
45099 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
45100 l_bflow_class_code           := '';    -- 4219869 Business Flow
45101 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
45102 l_budgetary_control_flag     := 'N';
45103 
45104 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
45105 l_bflow_applied_to_amt       := NULL; -- 5132302
45106 l_entered_amt_idx            := NULL;          -- 4262811
45107 l_accted_amt_idx             := NULL;          -- 4262811
45108 l_acc_rev_flag               := NULL;          -- 4262811
45109 l_accrual_line_num           := NULL;          -- 4262811
45110 l_tmp_amt                    := NULL;          -- 4262811
45111 --
45112  
45113 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
45114     l_balance_type_code <> 'B' THEN
45115 IF NVL(p_source_24,9E125) =  9
45116  THEN 
45117 
45118    --
45119    XLA_AE_LINES_PKG.SetNewLine;
45120 
45121    p_balance_type_code          := l_balance_type_code;
45122    -- set the flag so later we will know whether the gain loss line needs to be created
45123    
45124    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
45125      p_actual_flag :='A';
45126    END IF;
45127 
45128    --
45129    -- bulk performance
45130    --
45131    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
45132                                       p_header_num   => 0); -- 4262811
45133    --
45134    -- set accounting line options
45135    --
45136    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
45137            p_natural_side_code          => 'D'
45138          , p_gain_or_loss_flag          => 'N'
45139          , p_gl_transfer_mode_code      => 'S'
45140          , p_acct_entry_type_code       => 'A'
45141          , p_switch_side_flag           => 'Y'
45142          , p_merge_duplicate_code       => 'N'
45143          );
45144    --
45145    l_acc_rev_natural_side_code := 'C';  -- 4262811
45146    -- 
45147    --
45148    -- set accounting line type info
45149    --
45150    xla_ae_lines_pkg.SetAcctLineType
45151       (p_component_type             => l_component_type
45152       ,p_event_type_code            => l_event_type_code
45153       ,p_line_definition_owner_code => l_line_definition_owner_code
45154       ,p_line_definition_code       => l_line_definition_code
45155       ,p_accounting_line_code       => l_component_code
45156       ,p_accounting_line_type_code  => l_component_type_code
45157       ,p_accounting_line_appl_id    => l_component_appl_id
45158       ,p_amb_context_code           => l_amb_context_code
45159       ,p_entity_code                => l_entity_code
45160       ,p_event_class_code           => l_event_class_code);
45161    --
45162    -- set accounting class
45163    --
45164    xla_ae_lines_pkg.SetAcctClass(
45165            p_accounting_class_code  => 'INTERORG_PAYABLES'
45166          , p_ae_header_id           => l_ae_header_id
45167          );
45168 
45169    --
45170    -- set rounding class
45171    --
45172    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
45173                       'INTERORG_PAYABLES';
45174 
45175    --
45176    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
45177    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
45178    --
45179    -- bulk performance
45180    --
45181    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
45182 
45183    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
45184       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
45185 
45186    -- 4955764
45187    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45188       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
45189 
45190    -- 4458381 Public Sector Enh
45191    
45192    --
45193    -- set accounting attributes for the line type
45194    --
45195    l_entered_amt_idx := 3;
45196    l_accted_amt_idx  := 8;
45197    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
45198    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
45199    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
45200    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
45201    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
45202    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
45203    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
45204    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
45205    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
45206    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
45207    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
45208    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
45209    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
45210    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
45211    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
45212    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
45213    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
45214 
45215    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
45216    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
45217 
45218    ---------------------------------------------------------------------------------------------------------------
45219    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
45220    ---------------------------------------------------------------------------------------------------------------
45221    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
45222 
45223    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45224    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45225 
45226    IF xla_accounting_cache_pkg.GetValueChar
45227          (p_source_code         => 'LEDGER_CATEGORY_CODE'
45228          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
45229    AND l_bflow_method_code = 'PRIOR_ENTRY'
45230 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
45231    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
45232          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
45233        )
45234    THEN
45235          xla_ae_lines_pkg.BflowUpgEntry
45236            (p_business_method_code    => l_bflow_method_code
45237            ,p_business_class_code     => l_bflow_class_code
45238            ,p_balance_type            => l_balance_type_code);
45239    ELSE
45240       NULL;
45241 -- No business flow processing for business flow method of NONE.
45242    END IF;
45243 
45244    --
45245    -- call analytical criteria
45246    --
45247    
45248    --
45249    -- call description
45250    --
45251    -- No description or it is inherited.
45252    --
45253    -- call ADRs
45254    -- Bug 4922099
45255    --
45256    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45257         (NVL(l_actual_upg_option, 'N') = 'O') OR
45258         (NVL(l_enc_upg_option, 'N') = 'O')
45259       )
45260    THEN
45261    NULL;
45262    --
45263    --
45264    
45265   l_ccid := AcctDerRule_4(
45266            p_application_id           => p_application_id
45267          , p_ae_header_id             => l_ae_header_id 
45268 , p_source_4 => p_source_4
45269          , x_transaction_coa_id       => l_adr_transaction_coa_id
45270          , x_accounting_coa_id        => l_adr_accounting_coa_id
45271          , x_value_type_code          => l_adr_value_type_code
45272          , p_side                     => 'NA'
45273    );
45274 
45275    xla_ae_lines_pkg.set_ccid(
45276     p_code_combination_id          => l_ccid
45277   , p_value_type_code              => l_adr_value_type_code
45278   , p_transaction_coa_id           => l_adr_transaction_coa_id
45279   , p_accounting_coa_id            => l_adr_accounting_coa_id
45280   , p_adr_code                     => 'CST_DEFAULT'
45281   , p_adr_type_code                => 'S'
45282   , p_component_type               => l_component_type
45283   , p_component_code               => l_component_code
45284   , p_component_type_code          => l_component_type_code
45285   , p_component_appl_id            => l_component_appl_id
45286   , p_amb_context_code             => l_amb_context_code
45287   , p_side                         => 'NA'
45288   );
45289 
45290 
45291    --
45292    --
45293    END IF;
45294    --
45295    -- Bug 4922099
45296    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
45297           (NVL(l_enc_upg_option, 'N') = 'O')
45298         ) AND
45299         (l_bflow_method_code = 'PRIOR_ENTRY')
45300       )
45301    THEN
45302       IF
45303       --
45304       1 = 2
45305       --
45306       THEN
45307       xla_accounting_err_pkg.build_message
45308                                     (p_appli_s_name            => 'XLA'
45309                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45310                                     ,p_token_1                 => 'LINE_NUMBER'
45311                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
45312                                     ,p_token_2                 => 'LINE_TYPE_NAME'
45313                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
45314                                                                              l_component_type
45315                                                                             ,l_component_code
45316                                                                             ,l_component_type_code
45317                                                                             ,l_component_appl_id
45318                                                                             ,l_amb_context_code
45319                                                                             ,l_entity_code
45320                                                                             ,l_event_class_code
45321                                                                            )
45322                                     ,p_token_3                 => 'OWNER'
45323                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
45324                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
45325                                                                           ,p_lookup_code    => l_component_type_code
45326                                                                          )
45327                                     ,p_token_4                 => 'PRODUCT_NAME'
45328                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
45329                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
45330                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
45331                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
45332                                     ,p_ae_header_id            =>  NULL
45333                                        );
45334 
45335         IF (C_LEVEL_ERROR>= g_log_level) THEN
45336                  trace
45337                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45338                       ,p_level    => C_LEVEL_ERROR
45339                       ,p_module   => l_log_module);
45340         END IF;
45341       END IF;
45342    END IF;
45343    --
45344    --
45345    ------------------------------------------------------------------------------------------------
45346    -- 4219869 Business Flow
45347    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
45348    -- Prior Entry.  Currently, the following code is always generated.
45349    ------------------------------------------------------------------------------------------------
45350    XLA_AE_LINES_PKG.ValidateCurrentLine;
45351 
45352    ------------------------------------------------------------------------------------
45353    -- 4219869 Business Flow
45354    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
45355    ------------------------------------------------------------------------------------
45356    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45357 
45358    ----------------------------------------------------------------------------------
45359    -- 4219869 Business Flow
45360    -- Update journal entry status -- Need to generate this within IF <condition>
45361    ----------------------------------------------------------------------------------
45362    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45363          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
45364          ,p_balance_type_code => l_balance_type_code
45365          );
45366 
45367    -------------------------------------------------------------------------------------------
45368    -- 4262811 - Generate the Accrual Reversal lines
45369    -------------------------------------------------------------------------------------------
45370    BEGIN
45371       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
45372                               (g_array_event(p_event_id).array_value_num('header_index'));
45373       IF l_acc_rev_flag IS NULL THEN
45374          l_acc_rev_flag := 'N';
45375       END IF;
45376    EXCEPTION
45377       WHEN OTHERS THEN
45378          l_acc_rev_flag := 'N';
45379    END;
45380    --
45381    IF (l_acc_rev_flag = 'Y') THEN
45382 
45383        -- 4645092  ------------------------------------------------------------------------------
45384        -- To allow MPA report to determine if it should generate report process
45385        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
45386        ------------------------------------------------------------------------------------------
45387 
45388        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
45389        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
45390    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
45391    -- call ADRs
45392    -- Bug 4922099
45393    --
45394    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45395         (NVL(l_actual_upg_option, 'N') = 'O') OR
45396         (NVL(l_enc_upg_option, 'N') = 'O')
45397       )
45398    THEN
45399    NULL;
45400    --
45401    --
45402    
45403   l_ccid := AcctDerRule_4(
45404            p_application_id           => p_application_id
45405          , p_ae_header_id             => l_ae_header_id 
45406 , p_source_4 => p_source_4
45407          , x_transaction_coa_id       => l_adr_transaction_coa_id
45408          , x_accounting_coa_id        => l_adr_accounting_coa_id
45409          , x_value_type_code          => l_adr_value_type_code
45410          , p_side                     => 'NA'
45411    );
45412 
45413    xla_ae_lines_pkg.set_ccid(
45414     p_code_combination_id          => l_ccid
45415   , p_value_type_code              => l_adr_value_type_code
45416   , p_transaction_coa_id           => l_adr_transaction_coa_id
45417   , p_accounting_coa_id            => l_adr_accounting_coa_id
45418   , p_adr_code                     => 'CST_DEFAULT'
45419   , p_adr_type_code                => 'S'
45420   , p_component_type               => l_component_type
45421   , p_component_code               => l_component_code
45422   , p_component_type_code          => l_component_type_code
45423   , p_component_appl_id            => l_component_appl_id
45424   , p_amb_context_code             => l_amb_context_code
45425   , p_side                         => 'NA'
45426   );
45427 
45428 
45429    --
45430    --
45431    END IF;
45432 
45433        --
45434        -- Update the line information that should be overwritten
45435        --
45436        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
45437                                          p_header_num   => 1);
45438        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
45439 
45440        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
45441 
45442        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
45443           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
45444        END IF;
45445 
45446       --
45447       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
45448       --
45449       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
45450           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
45451       ELSE
45452           ---------------------------------------------------------------------------------------------------
45453           -- 4262811a Switch Sign
45454           ---------------------------------------------------------------------------------------------------
45455           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
45456           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45457                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45458           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45459                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45460           -- 5132302
45461           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
45462                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45463 
45464       END IF;
45465 
45466       -- 4955764
45467       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45468       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
45469 
45470 
45471       XLA_AE_LINES_PKG.ValidateCurrentLine;
45472       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45473 
45474       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45475                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
45476                ,p_balance_type_code => l_balance_type_code);
45477 
45478    END IF;
45479 
45480    -----------------------------------------------------------------------------------------
45481    -- 4262811 Multiperiod Accounting
45482    -----------------------------------------------------------------------------------------
45483      -- No MPA option is assigned.
45484 
45485 
45486 END IF;
45487 END IF;
45488 --
45489 
45490 --
45491 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45492    trace
45493       (p_msg      => 'END of AcctLineType_84'
45494       ,p_level    => C_LEVEL_PROCEDURE
45495       ,p_module   => l_log_module);
45496 END IF;
45497 --
45498 EXCEPTION
45499   WHEN xla_exceptions_pkg.application_exception THEN
45500       RAISE;
45501   WHEN OTHERS THEN
45502        xla_exceptions_pkg.raise_message
45503            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_84');
45504 END AcctLineType_84;
45505 --
45506 
45507 ---------------------------------------
45508 --
45509 -- PRIVATE FUNCTION
45510 --         AcctLineType_85
45511 --
45512 ---------------------------------------
45513 PROCEDURE AcctLineType_85 (
45514   p_application_id        IN NUMBER
45515  ,p_event_id              IN NUMBER
45516  ,p_calculate_acctd_flag  IN VARCHAR2
45517  ,p_calculate_g_l_flag    IN VARCHAR2
45518  ,p_actual_flag           IN OUT VARCHAR2
45519  ,p_balance_type_code     OUT VARCHAR2
45520  ,p_gain_or_loss_ref      OUT VARCHAR2
45521  
45522 --Cost Management Default Account
45523  , p_source_4            IN NUMBER
45524 --DISTRIBUTION_IDENTIFIER
45525  , p_source_11            IN NUMBER
45526 --Distribution Type
45527  , p_source_12            IN VARCHAR2
45528  , p_source_12_meaning    IN VARCHAR2
45529 --Entered Currency Code
45530  , p_source_15            IN VARCHAR2
45531 --Entered Amount
45532  , p_source_18            IN NUMBER
45533 --Currency Conversion Date
45534  , p_source_19            IN DATE
45535 --Currency Conversion Rate
45536  , p_source_20            IN NUMBER
45537 --Currency Conversion Type
45538  , p_source_21            IN VARCHAR2
45539 --Accounted Amount
45540  , p_source_22            IN NUMBER
45541 --Accounting Line Type
45542  , p_source_24            IN NUMBER
45543 )
45544 IS
45545 
45546 l_component_type              VARCHAR2(80);
45547 l_component_code              VARCHAR2(30);
45548 l_component_type_code         VARCHAR2(1);
45549 l_component_appl_id           INTEGER;
45550 l_amb_context_code            VARCHAR2(30);
45551 l_entity_code                 VARCHAR2(30);
45552 l_event_class_code            VARCHAR2(30);
45553 l_ae_header_id                NUMBER;
45554 l_event_type_code             VARCHAR2(30);
45555 l_line_definition_code        VARCHAR2(30);
45556 l_line_definition_owner_code  VARCHAR2(1);
45557 --
45558 -- adr variables
45559 l_segment                     VARCHAR2(30);
45560 l_ccid                        NUMBER;
45561 l_adr_transaction_coa_id      NUMBER;
45562 l_adr_accounting_coa_id       NUMBER;
45563 l_adr_flexfield_segment_code  VARCHAR2(30);
45564 l_adr_flex_value_set_id       NUMBER;
45565 l_adr_value_type_code         VARCHAR2(30);
45566 l_adr_value_combination_id    NUMBER;
45567 l_adr_value_segment_code      VARCHAR2(30);
45568 
45569 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
45570 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
45571 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
45572 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
45573 
45574 -- 4262811 Variables ------------------------------------------------------------------------------------------
45575 l_entered_amt_idx             NUMBER;
45576 l_accted_amt_idx              NUMBER;
45577 l_acc_rev_flag                VARCHAR2(1);
45578 l_accrual_line_num            NUMBER;
45579 l_tmp_amt                     NUMBER;
45580 l_acc_rev_natural_side_code   VARCHAR2(1);
45581 
45582 l_num_entries                 NUMBER;
45583 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
45584 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
45585 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
45586 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
45587 l_recog_line_1                NUMBER;
45588 l_recog_line_2                NUMBER;
45589 
45590 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
45591 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
45592 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
45593 
45594 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
45595 
45596 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
45597 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
45598 
45599 ---------------------------------------------------------------------------------------------------------------
45600 
45601 
45602 --
45603 -- bulk performance
45604 --
45605 l_balance_type_code           VARCHAR2(1);
45606 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
45607 l_log_module                  VARCHAR2(240);
45608 
45609 --
45610 -- Upgrade strategy
45611 --
45612 l_actual_upg_option           VARCHAR2(1);
45613 l_enc_upg_option           VARCHAR2(1);
45614 
45615 --
45616 BEGIN
45617 --
45618 IF g_log_enabled THEN
45619       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_85';
45620 END IF;
45621 --
45622 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45623 
45624       trace
45625          (p_msg      => 'BEGIN of AcctLineType_85'
45626          ,p_level    => C_LEVEL_PROCEDURE
45627          ,p_module   => l_log_module);
45628 
45629 END IF;
45630 --
45631 l_component_type             := 'AMB_JLT';
45632 l_component_code             := 'INTERORG_PAYABLES';
45633 l_component_type_code        := 'S';
45634 l_component_appl_id          :=  707;
45635 l_amb_context_code           := 'DEFAULT';
45636 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
45637 l_event_class_code           := 'USER_DEFINE';
45638 l_event_type_code            := 'UDIR_INTERORG_SHIP_NO_TP';
45639 l_line_definition_owner_code := 'S';
45640 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_NO_TP';
45641 --
45642 l_balance_type_code          := 'A';
45643 l_segment                     := NULL;
45644 l_ccid                        := NULL;
45645 l_adr_transaction_coa_id      := NULL;
45646 l_adr_accounting_coa_id       := NULL;
45647 l_adr_flexfield_segment_code  := NULL;
45648 l_adr_flex_value_set_id       := NULL;
45649 l_adr_value_type_code         := NULL;
45650 l_adr_value_combination_id    := NULL;
45651 l_adr_value_segment_code      := NULL;
45652 
45653 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
45654 l_bflow_class_code           := '';    -- 4219869 Business Flow
45655 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
45656 l_budgetary_control_flag     := 'N';
45657 
45658 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
45659 l_bflow_applied_to_amt       := NULL; -- 5132302
45660 l_entered_amt_idx            := NULL;          -- 4262811
45661 l_accted_amt_idx             := NULL;          -- 4262811
45662 l_acc_rev_flag               := NULL;          -- 4262811
45663 l_accrual_line_num           := NULL;          -- 4262811
45664 l_tmp_amt                    := NULL;          -- 4262811
45665 --
45666  
45667 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
45668     l_balance_type_code <> 'B' THEN
45669 IF NVL(p_source_24,9E125) =  9
45670  THEN 
45671 
45672    --
45673    XLA_AE_LINES_PKG.SetNewLine;
45674 
45675    p_balance_type_code          := l_balance_type_code;
45676    -- set the flag so later we will know whether the gain loss line needs to be created
45677    
45678    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
45679      p_actual_flag :='A';
45680    END IF;
45681 
45682    --
45683    -- bulk performance
45684    --
45685    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
45686                                       p_header_num   => 0); -- 4262811
45687    --
45688    -- set accounting line options
45689    --
45690    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
45691            p_natural_side_code          => 'D'
45692          , p_gain_or_loss_flag          => 'N'
45693          , p_gl_transfer_mode_code      => 'S'
45694          , p_acct_entry_type_code       => 'A'
45695          , p_switch_side_flag           => 'Y'
45696          , p_merge_duplicate_code       => 'N'
45697          );
45698    --
45699    l_acc_rev_natural_side_code := 'C';  -- 4262811
45700    -- 
45701    --
45702    -- set accounting line type info
45703    --
45704    xla_ae_lines_pkg.SetAcctLineType
45705       (p_component_type             => l_component_type
45706       ,p_event_type_code            => l_event_type_code
45707       ,p_line_definition_owner_code => l_line_definition_owner_code
45708       ,p_line_definition_code       => l_line_definition_code
45709       ,p_accounting_line_code       => l_component_code
45710       ,p_accounting_line_type_code  => l_component_type_code
45711       ,p_accounting_line_appl_id    => l_component_appl_id
45712       ,p_amb_context_code           => l_amb_context_code
45713       ,p_entity_code                => l_entity_code
45714       ,p_event_class_code           => l_event_class_code);
45715    --
45716    -- set accounting class
45717    --
45718    xla_ae_lines_pkg.SetAcctClass(
45719            p_accounting_class_code  => 'INTERORG_PAYABLES'
45720          , p_ae_header_id           => l_ae_header_id
45721          );
45722 
45723    --
45724    -- set rounding class
45725    --
45726    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
45727                       'INTERORG_PAYABLES';
45728 
45729    --
45730    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
45731    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
45732    --
45733    -- bulk performance
45734    --
45735    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
45736 
45737    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
45738       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
45739 
45740    -- 4955764
45741    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45742       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
45743 
45744    -- 4458381 Public Sector Enh
45745    
45746    --
45747    -- set accounting attributes for the line type
45748    --
45749    l_entered_amt_idx := 3;
45750    l_accted_amt_idx  := 8;
45751    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
45752    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
45753    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
45754    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
45755    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
45756    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
45757    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
45758    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
45759    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
45760    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
45761    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
45762    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
45763    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
45764    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
45765    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
45766    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
45767    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
45768 
45769    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
45770    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
45771 
45772    ---------------------------------------------------------------------------------------------------------------
45773    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
45774    ---------------------------------------------------------------------------------------------------------------
45775    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
45776 
45777    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45778    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45779 
45780    IF xla_accounting_cache_pkg.GetValueChar
45781          (p_source_code         => 'LEDGER_CATEGORY_CODE'
45782          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
45783    AND l_bflow_method_code = 'PRIOR_ENTRY'
45784 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
45785    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
45786          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
45787        )
45788    THEN
45789          xla_ae_lines_pkg.BflowUpgEntry
45790            (p_business_method_code    => l_bflow_method_code
45791            ,p_business_class_code     => l_bflow_class_code
45792            ,p_balance_type            => l_balance_type_code);
45793    ELSE
45794       NULL;
45795 -- No business flow processing for business flow method of NONE.
45796    END IF;
45797 
45798    --
45799    -- call analytical criteria
45800    --
45801    
45802    --
45803    -- call description
45804    --
45805    -- No description or it is inherited.
45806    --
45807    -- call ADRs
45808    -- Bug 4922099
45809    --
45810    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45811         (NVL(l_actual_upg_option, 'N') = 'O') OR
45812         (NVL(l_enc_upg_option, 'N') = 'O')
45813       )
45814    THEN
45815    NULL;
45816    --
45817    --
45818    
45819   l_ccid := AcctDerRule_4(
45820            p_application_id           => p_application_id
45821          , p_ae_header_id             => l_ae_header_id 
45822 , p_source_4 => p_source_4
45823          , x_transaction_coa_id       => l_adr_transaction_coa_id
45824          , x_accounting_coa_id        => l_adr_accounting_coa_id
45825          , x_value_type_code          => l_adr_value_type_code
45826          , p_side                     => 'NA'
45827    );
45828 
45829    xla_ae_lines_pkg.set_ccid(
45830     p_code_combination_id          => l_ccid
45831   , p_value_type_code              => l_adr_value_type_code
45832   , p_transaction_coa_id           => l_adr_transaction_coa_id
45833   , p_accounting_coa_id            => l_adr_accounting_coa_id
45834   , p_adr_code                     => 'CST_DEFAULT'
45835   , p_adr_type_code                => 'S'
45836   , p_component_type               => l_component_type
45837   , p_component_code               => l_component_code
45838   , p_component_type_code          => l_component_type_code
45839   , p_component_appl_id            => l_component_appl_id
45840   , p_amb_context_code             => l_amb_context_code
45841   , p_side                         => 'NA'
45842   );
45843 
45844 
45845    --
45846    --
45847    END IF;
45848    --
45849    -- Bug 4922099
45850    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
45851           (NVL(l_enc_upg_option, 'N') = 'O')
45852         ) AND
45853         (l_bflow_method_code = 'PRIOR_ENTRY')
45854       )
45855    THEN
45856       IF
45857       --
45858       1 = 2
45859       --
45860       THEN
45861       xla_accounting_err_pkg.build_message
45862                                     (p_appli_s_name            => 'XLA'
45863                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45864                                     ,p_token_1                 => 'LINE_NUMBER'
45865                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
45866                                     ,p_token_2                 => 'LINE_TYPE_NAME'
45867                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
45868                                                                              l_component_type
45869                                                                             ,l_component_code
45870                                                                             ,l_component_type_code
45871                                                                             ,l_component_appl_id
45872                                                                             ,l_amb_context_code
45873                                                                             ,l_entity_code
45874                                                                             ,l_event_class_code
45875                                                                            )
45876                                     ,p_token_3                 => 'OWNER'
45877                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
45878                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
45879                                                                           ,p_lookup_code    => l_component_type_code
45880                                                                          )
45881                                     ,p_token_4                 => 'PRODUCT_NAME'
45882                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
45883                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
45884                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
45885                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
45886                                     ,p_ae_header_id            =>  NULL
45887                                        );
45888 
45889         IF (C_LEVEL_ERROR>= g_log_level) THEN
45890                  trace
45891                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45892                       ,p_level    => C_LEVEL_ERROR
45893                       ,p_module   => l_log_module);
45894         END IF;
45895       END IF;
45896    END IF;
45897    --
45898    --
45899    ------------------------------------------------------------------------------------------------
45900    -- 4219869 Business Flow
45901    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
45902    -- Prior Entry.  Currently, the following code is always generated.
45903    ------------------------------------------------------------------------------------------------
45904    XLA_AE_LINES_PKG.ValidateCurrentLine;
45905 
45906    ------------------------------------------------------------------------------------
45907    -- 4219869 Business Flow
45908    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
45909    ------------------------------------------------------------------------------------
45910    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45911 
45912    ----------------------------------------------------------------------------------
45913    -- 4219869 Business Flow
45914    -- Update journal entry status -- Need to generate this within IF <condition>
45915    ----------------------------------------------------------------------------------
45916    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45917          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
45918          ,p_balance_type_code => l_balance_type_code
45919          );
45920 
45921    -------------------------------------------------------------------------------------------
45922    -- 4262811 - Generate the Accrual Reversal lines
45923    -------------------------------------------------------------------------------------------
45924    BEGIN
45925       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
45926                               (g_array_event(p_event_id).array_value_num('header_index'));
45927       IF l_acc_rev_flag IS NULL THEN
45928          l_acc_rev_flag := 'N';
45929       END IF;
45930    EXCEPTION
45931       WHEN OTHERS THEN
45932          l_acc_rev_flag := 'N';
45933    END;
45934    --
45935    IF (l_acc_rev_flag = 'Y') THEN
45936 
45937        -- 4645092  ------------------------------------------------------------------------------
45938        -- To allow MPA report to determine if it should generate report process
45939        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
45940        ------------------------------------------------------------------------------------------
45941 
45942        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
45943        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
45944    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
45945    -- call ADRs
45946    -- Bug 4922099
45947    --
45948    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45949         (NVL(l_actual_upg_option, 'N') = 'O') OR
45950         (NVL(l_enc_upg_option, 'N') = 'O')
45951       )
45952    THEN
45953    NULL;
45954    --
45955    --
45956    
45957   l_ccid := AcctDerRule_4(
45958            p_application_id           => p_application_id
45959          , p_ae_header_id             => l_ae_header_id 
45960 , p_source_4 => p_source_4
45961          , x_transaction_coa_id       => l_adr_transaction_coa_id
45962          , x_accounting_coa_id        => l_adr_accounting_coa_id
45963          , x_value_type_code          => l_adr_value_type_code
45964          , p_side                     => 'NA'
45965    );
45966 
45967    xla_ae_lines_pkg.set_ccid(
45968     p_code_combination_id          => l_ccid
45969   , p_value_type_code              => l_adr_value_type_code
45970   , p_transaction_coa_id           => l_adr_transaction_coa_id
45971   , p_accounting_coa_id            => l_adr_accounting_coa_id
45972   , p_adr_code                     => 'CST_DEFAULT'
45973   , p_adr_type_code                => 'S'
45974   , p_component_type               => l_component_type
45975   , p_component_code               => l_component_code
45976   , p_component_type_code          => l_component_type_code
45977   , p_component_appl_id            => l_component_appl_id
45978   , p_amb_context_code             => l_amb_context_code
45979   , p_side                         => 'NA'
45980   );
45981 
45982 
45983    --
45984    --
45985    END IF;
45986 
45987        --
45988        -- Update the line information that should be overwritten
45989        --
45990        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
45991                                          p_header_num   => 1);
45992        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
45993 
45994        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
45995 
45996        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
45997           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
45998        END IF;
45999 
46000       --
46001       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
46002       --
46003       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
46004           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
46005       ELSE
46006           ---------------------------------------------------------------------------------------------------
46007           -- 4262811a Switch Sign
46008           ---------------------------------------------------------------------------------------------------
46009           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
46010           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46011                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46012           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46013                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46014           -- 5132302
46015           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
46016                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46017 
46018       END IF;
46019 
46020       -- 4955764
46021       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46022       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
46023 
46024 
46025       XLA_AE_LINES_PKG.ValidateCurrentLine;
46026       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46027 
46028       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46029                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
46030                ,p_balance_type_code => l_balance_type_code);
46031 
46032    END IF;
46033 
46034    -----------------------------------------------------------------------------------------
46035    -- 4262811 Multiperiod Accounting
46036    -----------------------------------------------------------------------------------------
46037      -- No MPA option is assigned.
46038 
46039 
46040 END IF;
46041 END IF;
46042 --
46043 
46044 --
46045 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46046    trace
46047       (p_msg      => 'END of AcctLineType_85'
46048       ,p_level    => C_LEVEL_PROCEDURE
46049       ,p_module   => l_log_module);
46050 END IF;
46051 --
46052 EXCEPTION
46053   WHEN xla_exceptions_pkg.application_exception THEN
46054       RAISE;
46055   WHEN OTHERS THEN
46056        xla_exceptions_pkg.raise_message
46057            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_85');
46058 END AcctLineType_85;
46059 --
46060 
46061 ---------------------------------------
46062 --
46063 -- PRIVATE FUNCTION
46064 --         AcctLineType_86
46065 --
46066 ---------------------------------------
46067 PROCEDURE AcctLineType_86 (
46068   p_application_id        IN NUMBER
46069  ,p_event_id              IN NUMBER
46070  ,p_calculate_acctd_flag  IN VARCHAR2
46071  ,p_calculate_g_l_flag    IN VARCHAR2
46072  ,p_actual_flag           IN OUT VARCHAR2
46073  ,p_balance_type_code     OUT VARCHAR2
46074  ,p_gain_or_loss_ref      OUT VARCHAR2
46075  
46076 --Cost Management Default Account
46077  , p_source_4            IN NUMBER
46078 --Applied to Application ID
46079  , p_source_6            IN NUMBER
46080 --Applied to Distribution Link Type
46081  , p_source_7            IN VARCHAR2
46082 --Applied to Entity Code
46083  , p_source_8            IN VARCHAR2
46084 --DISTRIBUTION_IDENTIFIER
46085  , p_source_11            IN NUMBER
46086 --Distribution Type
46087  , p_source_12            IN VARCHAR2
46088  , p_source_12_meaning    IN VARCHAR2
46089 --Encumbrance Reversal Amount Entered
46090  , p_source_14            IN NUMBER
46091 --Entered Currency Code
46092  , p_source_15            IN VARCHAR2
46093 --Transaction Encumbrance Reversal Amount
46094  , p_source_16            IN NUMBER
46095 --Entered Amount
46096  , p_source_18            IN NUMBER
46097 --Currency Conversion Date
46098  , p_source_19            IN DATE
46099 --Currency Conversion Rate
46100  , p_source_20            IN NUMBER
46101 --Currency Conversion Type
46102  , p_source_21            IN VARCHAR2
46103 --Accounted Amount
46104  , p_source_22            IN NUMBER
46105 --Accounting Line Type
46106  , p_source_24            IN NUMBER
46107 --Costing Encumbrance Upgrade Option
46108  , p_source_27            IN VARCHAR2
46109 --TXN_PO_DISTRIBUTION_ID
46110  , p_source_28            IN NUMBER
46111 --TXN_PO_HEADER_ID
46112  , p_source_29            IN NUMBER
46113 --Requisition Budget Account
46114  , p_source_30            IN NUMBER
46115 --Requisition Encumbrance Type Identifier
46116  , p_source_31            IN NUMBER
46117 )
46118 IS
46119 
46120 l_component_type              VARCHAR2(80);
46121 l_component_code              VARCHAR2(30);
46122 l_component_type_code         VARCHAR2(1);
46123 l_component_appl_id           INTEGER;
46124 l_amb_context_code            VARCHAR2(30);
46125 l_entity_code                 VARCHAR2(30);
46126 l_event_class_code            VARCHAR2(30);
46127 l_ae_header_id                NUMBER;
46128 l_event_type_code             VARCHAR2(30);
46129 l_line_definition_code        VARCHAR2(30);
46130 l_line_definition_owner_code  VARCHAR2(1);
46131 --
46132 -- adr variables
46133 l_segment                     VARCHAR2(30);
46134 l_ccid                        NUMBER;
46135 l_adr_transaction_coa_id      NUMBER;
46136 l_adr_accounting_coa_id       NUMBER;
46137 l_adr_flexfield_segment_code  VARCHAR2(30);
46138 l_adr_flex_value_set_id       NUMBER;
46139 l_adr_value_type_code         VARCHAR2(30);
46140 l_adr_value_combination_id    NUMBER;
46141 l_adr_value_segment_code      VARCHAR2(30);
46142 
46143 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
46144 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
46145 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
46146 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
46147 
46148 -- 4262811 Variables ------------------------------------------------------------------------------------------
46149 l_entered_amt_idx             NUMBER;
46150 l_accted_amt_idx              NUMBER;
46151 l_acc_rev_flag                VARCHAR2(1);
46152 l_accrual_line_num            NUMBER;
46153 l_tmp_amt                     NUMBER;
46154 l_acc_rev_natural_side_code   VARCHAR2(1);
46155 
46156 l_num_entries                 NUMBER;
46157 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
46158 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
46159 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
46160 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
46161 l_recog_line_1                NUMBER;
46162 l_recog_line_2                NUMBER;
46163 
46164 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
46165 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
46166 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
46167 
46168 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
46169 
46170 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
46171 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
46172 
46173 ---------------------------------------------------------------------------------------------------------------
46174 
46175 
46176 --
46177 -- bulk performance
46178 --
46179 l_balance_type_code           VARCHAR2(1);
46180 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
46181 l_log_module                  VARCHAR2(240);
46182 
46183 --
46184 -- Upgrade strategy
46185 --
46186 l_actual_upg_option           VARCHAR2(1);
46187 l_enc_upg_option           VARCHAR2(1);
46188 
46189 --
46190 BEGIN
46191 --
46192 IF g_log_enabled THEN
46193       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_86';
46194 END IF;
46195 --
46196 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46197 
46198       trace
46199          (p_msg      => 'BEGIN of AcctLineType_86'
46200          ,p_level    => C_LEVEL_PROCEDURE
46201          ,p_module   => l_log_module);
46202 
46203 END IF;
46204 --
46205 l_component_type             := 'AMB_JLT';
46206 l_component_code             := 'INTERORG_PAYABLES';
46207 l_component_type_code        := 'S';
46208 l_component_appl_id          :=  707;
46209 l_amb_context_code           := 'DEFAULT';
46210 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
46211 l_event_class_code           := 'DIR_INTERORG_RCPT';
46212 l_event_type_code            := 'DIR_INTERORG_RCPT_ALL';
46213 l_line_definition_owner_code := 'S';
46214 l_line_definition_code       := 'DIRECT_INTERORG_RCPT';
46215 --
46216 l_balance_type_code          := 'A';
46217 l_segment                     := NULL;
46218 l_ccid                        := NULL;
46219 l_adr_transaction_coa_id      := NULL;
46220 l_adr_accounting_coa_id       := NULL;
46221 l_adr_flexfield_segment_code  := NULL;
46222 l_adr_flex_value_set_id       := NULL;
46223 l_adr_value_type_code         := NULL;
46224 l_adr_value_combination_id    := NULL;
46225 l_adr_value_segment_code      := NULL;
46226 
46227 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
46228 l_bflow_class_code           := '';    -- 4219869 Business Flow
46229 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
46230 l_budgetary_control_flag     := 'N';
46231 
46232 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
46233 l_bflow_applied_to_amt       := NULL; -- 5132302
46234 l_entered_amt_idx            := NULL;          -- 4262811
46235 l_accted_amt_idx             := NULL;          -- 4262811
46236 l_acc_rev_flag               := NULL;          -- 4262811
46237 l_accrual_line_num           := NULL;          -- 4262811
46238 l_tmp_amt                    := NULL;          -- 4262811
46239 --
46240  
46241 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
46242     l_balance_type_code <> 'B' THEN
46243 IF NVL(p_source_24,9E125) =  9
46244  THEN 
46245 
46246    --
46247    XLA_AE_LINES_PKG.SetNewLine;
46248 
46249    p_balance_type_code          := l_balance_type_code;
46250    -- set the flag so later we will know whether the gain loss line needs to be created
46251    
46252    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
46253      p_actual_flag :='A';
46254    END IF;
46255 
46256    --
46257    -- bulk performance
46258    --
46259    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
46260                                       p_header_num   => 0); -- 4262811
46261    --
46262    -- set accounting line options
46263    --
46264    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
46265            p_natural_side_code          => 'D'
46266          , p_gain_or_loss_flag          => 'N'
46267          , p_gl_transfer_mode_code      => 'S'
46268          , p_acct_entry_type_code       => 'A'
46269          , p_switch_side_flag           => 'Y'
46270          , p_merge_duplicate_code       => 'N'
46271          );
46272    --
46273    l_acc_rev_natural_side_code := 'C';  -- 4262811
46274    -- 
46275    --
46276    -- set accounting line type info
46277    --
46278    xla_ae_lines_pkg.SetAcctLineType
46279       (p_component_type             => l_component_type
46280       ,p_event_type_code            => l_event_type_code
46281       ,p_line_definition_owner_code => l_line_definition_owner_code
46282       ,p_line_definition_code       => l_line_definition_code
46283       ,p_accounting_line_code       => l_component_code
46284       ,p_accounting_line_type_code  => l_component_type_code
46285       ,p_accounting_line_appl_id    => l_component_appl_id
46286       ,p_amb_context_code           => l_amb_context_code
46287       ,p_entity_code                => l_entity_code
46288       ,p_event_class_code           => l_event_class_code);
46289    --
46290    -- set accounting class
46291    --
46292    xla_ae_lines_pkg.SetAcctClass(
46293            p_accounting_class_code  => 'INTERORG_PAYABLES'
46294          , p_ae_header_id           => l_ae_header_id
46295          );
46296 
46297    --
46298    -- set rounding class
46299    --
46300    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
46301                       'INTERORG_PAYABLES';
46302 
46303    --
46304    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
46305    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
46306    --
46307    -- bulk performance
46308    --
46309    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
46310 
46311    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
46312       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
46313 
46314    -- 4955764
46315    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46316       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
46317 
46318    -- 4458381 Public Sector Enh
46319    
46320    --
46321    -- set accounting attributes for the line type
46322    --
46323    l_entered_amt_idx := 17;
46324    l_accted_amt_idx  := 22;
46325    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
46326    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
46327    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
46328    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
46329    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
46330    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
46331    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
46332    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
46333    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
46334    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
46335    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
46336    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
46337    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
46338    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
46339    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
46340    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
46341    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
46342    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
46343    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
46344    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
46345    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
46346    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
46347    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
46348    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
46349    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
46350    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
46351    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
46352    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
46353    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
46354    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
46355    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
46356    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
46357    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
46358    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
46359    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
46360    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
46361    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
46362    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
46363    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
46364    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
46365    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
46366    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
46367    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
46368    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
46369    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
46370    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
46371    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
46372    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
46373    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
46374 
46375    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
46376    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
46377 
46378    ---------------------------------------------------------------------------------------------------------------
46379    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
46380    ---------------------------------------------------------------------------------------------------------------
46381    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
46382 
46383    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46384    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46385 
46386    IF xla_accounting_cache_pkg.GetValueChar
46387          (p_source_code         => 'LEDGER_CATEGORY_CODE'
46388          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
46389    AND l_bflow_method_code = 'PRIOR_ENTRY'
46390 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
46391    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
46392          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
46393        )
46394    THEN
46395          xla_ae_lines_pkg.BflowUpgEntry
46396            (p_business_method_code    => l_bflow_method_code
46397            ,p_business_class_code     => l_bflow_class_code
46398            ,p_balance_type            => l_balance_type_code);
46399    ELSE
46400       NULL;
46401 -- No business flow processing for business flow method of NONE.
46402    END IF;
46403 
46404    --
46405    -- call analytical criteria
46406    --
46407    
46408    --
46409    -- call description
46410    --
46411    -- No description or it is inherited.
46412    --
46413    -- call ADRs
46414    -- Bug 4922099
46415    --
46416    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46417         (NVL(l_actual_upg_option, 'N') = 'O') OR
46418         (NVL(l_enc_upg_option, 'N') = 'O')
46419       )
46420    THEN
46421    NULL;
46422    --
46423    --
46424    
46425   l_ccid := AcctDerRule_4(
46426            p_application_id           => p_application_id
46427          , p_ae_header_id             => l_ae_header_id 
46428 , p_source_4 => p_source_4
46429          , x_transaction_coa_id       => l_adr_transaction_coa_id
46430          , x_accounting_coa_id        => l_adr_accounting_coa_id
46431          , x_value_type_code          => l_adr_value_type_code
46432          , p_side                     => 'NA'
46433    );
46434 
46435    xla_ae_lines_pkg.set_ccid(
46436     p_code_combination_id          => l_ccid
46437   , p_value_type_code              => l_adr_value_type_code
46438   , p_transaction_coa_id           => l_adr_transaction_coa_id
46439   , p_accounting_coa_id            => l_adr_accounting_coa_id
46440   , p_adr_code                     => 'CST_DEFAULT'
46441   , p_adr_type_code                => 'S'
46442   , p_component_type               => l_component_type
46443   , p_component_code               => l_component_code
46444   , p_component_type_code          => l_component_type_code
46445   , p_component_appl_id            => l_component_appl_id
46446   , p_amb_context_code             => l_amb_context_code
46447   , p_side                         => 'NA'
46448   );
46449 
46450 
46451    --
46452    --
46453    END IF;
46454    --
46455    -- Bug 4922099
46456    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
46457           (NVL(l_enc_upg_option, 'N') = 'O')
46458         ) AND
46459         (l_bflow_method_code = 'PRIOR_ENTRY')
46460       )
46461    THEN
46462       IF
46463       --
46464       1 = 2
46465       --
46466       THEN
46467       xla_accounting_err_pkg.build_message
46468                                     (p_appli_s_name            => 'XLA'
46469                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46470                                     ,p_token_1                 => 'LINE_NUMBER'
46471                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
46472                                     ,p_token_2                 => 'LINE_TYPE_NAME'
46473                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
46474                                                                              l_component_type
46475                                                                             ,l_component_code
46476                                                                             ,l_component_type_code
46477                                                                             ,l_component_appl_id
46478                                                                             ,l_amb_context_code
46479                                                                             ,l_entity_code
46480                                                                             ,l_event_class_code
46481                                                                            )
46482                                     ,p_token_3                 => 'OWNER'
46483                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
46484                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
46485                                                                           ,p_lookup_code    => l_component_type_code
46486                                                                          )
46487                                     ,p_token_4                 => 'PRODUCT_NAME'
46488                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
46489                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
46490                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
46491                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
46492                                     ,p_ae_header_id            =>  NULL
46493                                        );
46494 
46495         IF (C_LEVEL_ERROR>= g_log_level) THEN
46496                  trace
46497                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46498                       ,p_level    => C_LEVEL_ERROR
46499                       ,p_module   => l_log_module);
46500         END IF;
46501       END IF;
46502    END IF;
46503    --
46504    --
46505    ------------------------------------------------------------------------------------------------
46506    -- 4219869 Business Flow
46507    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
46508    -- Prior Entry.  Currently, the following code is always generated.
46509    ------------------------------------------------------------------------------------------------
46510    XLA_AE_LINES_PKG.ValidateCurrentLine;
46511 
46512    ------------------------------------------------------------------------------------
46513    -- 4219869 Business Flow
46514    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
46515    ------------------------------------------------------------------------------------
46516    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46517 
46518    ----------------------------------------------------------------------------------
46519    -- 4219869 Business Flow
46520    -- Update journal entry status -- Need to generate this within IF <condition>
46521    ----------------------------------------------------------------------------------
46522    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46523          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
46524          ,p_balance_type_code => l_balance_type_code
46525          );
46526 
46527    -------------------------------------------------------------------------------------------
46528    -- 4262811 - Generate the Accrual Reversal lines
46529    -------------------------------------------------------------------------------------------
46530    BEGIN
46531       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
46532                               (g_array_event(p_event_id).array_value_num('header_index'));
46533       IF l_acc_rev_flag IS NULL THEN
46534          l_acc_rev_flag := 'N';
46535       END IF;
46536    EXCEPTION
46537       WHEN OTHERS THEN
46538          l_acc_rev_flag := 'N';
46539    END;
46540    --
46541    IF (l_acc_rev_flag = 'Y') THEN
46542 
46543        -- 4645092  ------------------------------------------------------------------------------
46544        -- To allow MPA report to determine if it should generate report process
46545        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
46546        ------------------------------------------------------------------------------------------
46547 
46548        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
46549        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
46550    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
46551    -- call ADRs
46552    -- Bug 4922099
46553    --
46554    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46555         (NVL(l_actual_upg_option, 'N') = 'O') OR
46556         (NVL(l_enc_upg_option, 'N') = 'O')
46557       )
46558    THEN
46559    NULL;
46560    --
46561    --
46562    
46563   l_ccid := AcctDerRule_4(
46564            p_application_id           => p_application_id
46565          , p_ae_header_id             => l_ae_header_id 
46566 , p_source_4 => p_source_4
46567          , x_transaction_coa_id       => l_adr_transaction_coa_id
46568          , x_accounting_coa_id        => l_adr_accounting_coa_id
46569          , x_value_type_code          => l_adr_value_type_code
46570          , p_side                     => 'NA'
46571    );
46572 
46573    xla_ae_lines_pkg.set_ccid(
46574     p_code_combination_id          => l_ccid
46575   , p_value_type_code              => l_adr_value_type_code
46576   , p_transaction_coa_id           => l_adr_transaction_coa_id
46577   , p_accounting_coa_id            => l_adr_accounting_coa_id
46578   , p_adr_code                     => 'CST_DEFAULT'
46579   , p_adr_type_code                => 'S'
46580   , p_component_type               => l_component_type
46581   , p_component_code               => l_component_code
46582   , p_component_type_code          => l_component_type_code
46583   , p_component_appl_id            => l_component_appl_id
46584   , p_amb_context_code             => l_amb_context_code
46585   , p_side                         => 'NA'
46586   );
46587 
46588 
46589    --
46590    --
46591    END IF;
46592 
46593        --
46594        -- Update the line information that should be overwritten
46595        --
46596        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
46597                                          p_header_num   => 1);
46598        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
46599 
46600        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
46601 
46602        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
46603           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
46604        END IF;
46605 
46606       --
46607       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
46608       --
46609       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
46610           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
46611       ELSE
46612           ---------------------------------------------------------------------------------------------------
46613           -- 4262811a Switch Sign
46614           ---------------------------------------------------------------------------------------------------
46615           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
46616           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46617                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46618           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46619                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46620           -- 5132302
46621           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
46622                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46623 
46624       END IF;
46625 
46626       -- 4955764
46627       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46628       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
46629 
46630 
46631       XLA_AE_LINES_PKG.ValidateCurrentLine;
46632       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46633 
46634       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46635                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
46636                ,p_balance_type_code => l_balance_type_code);
46637 
46638    END IF;
46639 
46640    -----------------------------------------------------------------------------------------
46641    -- 4262811 Multiperiod Accounting
46642    -----------------------------------------------------------------------------------------
46643      -- No MPA option is assigned.
46644 
46645 
46646 END IF;
46647 END IF;
46648 --
46649 
46650 --
46651 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46652    trace
46653       (p_msg      => 'END of AcctLineType_86'
46654       ,p_level    => C_LEVEL_PROCEDURE
46655       ,p_module   => l_log_module);
46656 END IF;
46657 --
46658 EXCEPTION
46659   WHEN xla_exceptions_pkg.application_exception THEN
46660       RAISE;
46661   WHEN OTHERS THEN
46662        xla_exceptions_pkg.raise_message
46663            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_86');
46664 END AcctLineType_86;
46665 --
46666 
46667 ---------------------------------------
46668 --
46669 -- PRIVATE FUNCTION
46670 --         AcctLineType_87
46671 --
46672 ---------------------------------------
46673 PROCEDURE AcctLineType_87 (
46674   p_application_id        IN NUMBER
46675  ,p_event_id              IN NUMBER
46676  ,p_calculate_acctd_flag  IN VARCHAR2
46677  ,p_calculate_g_l_flag    IN VARCHAR2
46678  ,p_actual_flag           IN OUT VARCHAR2
46679  ,p_balance_type_code     OUT VARCHAR2
46680  ,p_gain_or_loss_ref      OUT VARCHAR2
46681  
46682 --Cost Management Default Account
46683  , p_source_4            IN NUMBER
46684 --DISTRIBUTION_IDENTIFIER
46685  , p_source_11            IN NUMBER
46686 --Distribution Type
46687  , p_source_12            IN VARCHAR2
46688  , p_source_12_meaning    IN VARCHAR2
46689 --Entered Currency Code
46690  , p_source_15            IN VARCHAR2
46691 --Entered Amount
46692  , p_source_18            IN NUMBER
46693 --Currency Conversion Date
46694  , p_source_19            IN DATE
46695 --Currency Conversion Rate
46696  , p_source_20            IN NUMBER
46697 --Currency Conversion Type
46698  , p_source_21            IN VARCHAR2
46699 --Accounted Amount
46700  , p_source_22            IN NUMBER
46701 --Accounting Line Type
46702  , p_source_24            IN NUMBER
46703 )
46704 IS
46705 
46706 l_component_type              VARCHAR2(80);
46707 l_component_code              VARCHAR2(30);
46708 l_component_type_code         VARCHAR2(1);
46709 l_component_appl_id           INTEGER;
46710 l_amb_context_code            VARCHAR2(30);
46711 l_entity_code                 VARCHAR2(30);
46712 l_event_class_code            VARCHAR2(30);
46713 l_ae_header_id                NUMBER;
46714 l_event_type_code             VARCHAR2(30);
46715 l_line_definition_code        VARCHAR2(30);
46716 l_line_definition_owner_code  VARCHAR2(1);
46717 --
46718 -- adr variables
46719 l_segment                     VARCHAR2(30);
46720 l_ccid                        NUMBER;
46721 l_adr_transaction_coa_id      NUMBER;
46722 l_adr_accounting_coa_id       NUMBER;
46723 l_adr_flexfield_segment_code  VARCHAR2(30);
46724 l_adr_flex_value_set_id       NUMBER;
46725 l_adr_value_type_code         VARCHAR2(30);
46726 l_adr_value_combination_id    NUMBER;
46727 l_adr_value_segment_code      VARCHAR2(30);
46728 
46729 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
46730 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
46731 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
46732 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
46733 
46734 -- 4262811 Variables ------------------------------------------------------------------------------------------
46735 l_entered_amt_idx             NUMBER;
46736 l_accted_amt_idx              NUMBER;
46737 l_acc_rev_flag                VARCHAR2(1);
46738 l_accrual_line_num            NUMBER;
46739 l_tmp_amt                     NUMBER;
46740 l_acc_rev_natural_side_code   VARCHAR2(1);
46741 
46742 l_num_entries                 NUMBER;
46743 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
46744 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
46745 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
46746 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
46747 l_recog_line_1                NUMBER;
46748 l_recog_line_2                NUMBER;
46749 
46750 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
46751 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
46752 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
46753 
46754 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
46755 
46756 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
46757 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
46758 
46759 ---------------------------------------------------------------------------------------------------------------
46760 
46761 
46762 --
46763 -- bulk performance
46764 --
46765 l_balance_type_code           VARCHAR2(1);
46766 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
46767 l_log_module                  VARCHAR2(240);
46768 
46769 --
46770 -- Upgrade strategy
46771 --
46772 l_actual_upg_option           VARCHAR2(1);
46773 l_enc_upg_option           VARCHAR2(1);
46774 
46775 --
46776 BEGIN
46777 --
46778 IF g_log_enabled THEN
46779       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_87';
46780 END IF;
46781 --
46782 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46783 
46784       trace
46785          (p_msg      => 'BEGIN of AcctLineType_87'
46786          ,p_level    => C_LEVEL_PROCEDURE
46787          ,p_module   => l_log_module);
46788 
46789 END IF;
46790 --
46791 l_component_type             := 'AMB_JLT';
46792 l_component_code             := 'INTERORG_PROFIT_OPM';
46793 l_component_type_code        := 'S';
46794 l_component_appl_id          :=  707;
46795 l_amb_context_code           := 'DEFAULT';
46796 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
46797 l_event_class_code           := 'USER_DEFINE';
46798 l_event_type_code            := 'UDIR_INTERORG_SHIP_NO_TP';
46799 l_line_definition_owner_code := 'S';
46800 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_NO_TP';
46801 --
46802 l_balance_type_code          := 'A';
46803 l_segment                     := NULL;
46804 l_ccid                        := NULL;
46805 l_adr_transaction_coa_id      := NULL;
46806 l_adr_accounting_coa_id       := NULL;
46807 l_adr_flexfield_segment_code  := NULL;
46808 l_adr_flex_value_set_id       := NULL;
46809 l_adr_value_type_code         := NULL;
46810 l_adr_value_combination_id    := NULL;
46811 l_adr_value_segment_code      := NULL;
46812 
46813 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
46814 l_bflow_class_code           := '';    -- 4219869 Business Flow
46815 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
46816 l_budgetary_control_flag     := 'N';
46817 
46818 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
46819 l_bflow_applied_to_amt       := NULL; -- 5132302
46820 l_entered_amt_idx            := NULL;          -- 4262811
46821 l_accted_amt_idx             := NULL;          -- 4262811
46822 l_acc_rev_flag               := NULL;          -- 4262811
46823 l_accrual_line_num           := NULL;          -- 4262811
46824 l_tmp_amt                    := NULL;          -- 4262811
46825 --
46826  
46827 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
46828     l_balance_type_code <> 'B' THEN
46829 IF NVL(p_source_24,9E125) =  34
46830  THEN 
46831 
46832    --
46833    XLA_AE_LINES_PKG.SetNewLine;
46834 
46835    p_balance_type_code          := l_balance_type_code;
46836    -- set the flag so later we will know whether the gain loss line needs to be created
46837    
46838    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
46839      p_actual_flag :='A';
46840    END IF;
46841 
46842    --
46843    -- bulk performance
46844    --
46845    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
46846                                       p_header_num   => 0); -- 4262811
46847    --
46848    -- set accounting line options
46849    --
46850    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
46851            p_natural_side_code          => 'D'
46852          , p_gain_or_loss_flag          => 'N'
46853          , p_gl_transfer_mode_code      => 'S'
46854          , p_acct_entry_type_code       => 'A'
46855          , p_switch_side_flag           => 'Y'
46856          , p_merge_duplicate_code       => 'N'
46857          );
46858    --
46859    l_acc_rev_natural_side_code := 'C';  -- 4262811
46860    -- 
46861    --
46862    -- set accounting line type info
46863    --
46864    xla_ae_lines_pkg.SetAcctLineType
46865       (p_component_type             => l_component_type
46866       ,p_event_type_code            => l_event_type_code
46867       ,p_line_definition_owner_code => l_line_definition_owner_code
46868       ,p_line_definition_code       => l_line_definition_code
46869       ,p_accounting_line_code       => l_component_code
46870       ,p_accounting_line_type_code  => l_component_type_code
46871       ,p_accounting_line_appl_id    => l_component_appl_id
46872       ,p_amb_context_code           => l_amb_context_code
46873       ,p_entity_code                => l_entity_code
46874       ,p_event_class_code           => l_event_class_code);
46875    --
46876    -- set accounting class
46877    --
46878    xla_ae_lines_pkg.SetAcctClass(
46879            p_accounting_class_code  => 'INTERORG_PROFIT'
46880          , p_ae_header_id           => l_ae_header_id
46881          );
46882 
46883    --
46884    -- set rounding class
46885    --
46886    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
46887                       'INTERORG_PROFIT';
46888 
46889    --
46890    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
46891    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
46892    --
46893    -- bulk performance
46894    --
46895    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
46896 
46897    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
46898       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
46899 
46900    -- 4955764
46901    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46902       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
46903 
46904    -- 4458381 Public Sector Enh
46905    
46906    --
46907    -- set accounting attributes for the line type
46908    --
46909    l_entered_amt_idx := 3;
46910    l_accted_amt_idx  := 8;
46911    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
46912    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
46913    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
46914    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
46915    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
46916    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
46917    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
46918    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
46919    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
46920    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
46921    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
46922    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
46923    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
46924    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
46925    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
46926    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
46927    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
46928 
46929    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
46930    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
46931 
46932    ---------------------------------------------------------------------------------------------------------------
46933    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
46934    ---------------------------------------------------------------------------------------------------------------
46935    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
46936 
46937    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46938    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46939 
46940    IF xla_accounting_cache_pkg.GetValueChar
46941          (p_source_code         => 'LEDGER_CATEGORY_CODE'
46942          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
46943    AND l_bflow_method_code = 'PRIOR_ENTRY'
46944 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
46945    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
46946          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
46947        )
46948    THEN
46949          xla_ae_lines_pkg.BflowUpgEntry
46950            (p_business_method_code    => l_bflow_method_code
46951            ,p_business_class_code     => l_bflow_class_code
46952            ,p_balance_type            => l_balance_type_code);
46953    ELSE
46954       NULL;
46955 -- No business flow processing for business flow method of NONE.
46956    END IF;
46957 
46958    --
46959    -- call analytical criteria
46960    --
46961    
46962    --
46963    -- call description
46964    --
46965    -- No description or it is inherited.
46966    --
46967    -- call ADRs
46968    -- Bug 4922099
46969    --
46970    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46971         (NVL(l_actual_upg_option, 'N') = 'O') OR
46972         (NVL(l_enc_upg_option, 'N') = 'O')
46973       )
46974    THEN
46975    NULL;
46976    --
46977    --
46978    
46979   l_ccid := AcctDerRule_4(
46980            p_application_id           => p_application_id
46981          , p_ae_header_id             => l_ae_header_id 
46982 , p_source_4 => p_source_4
46983          , x_transaction_coa_id       => l_adr_transaction_coa_id
46984          , x_accounting_coa_id        => l_adr_accounting_coa_id
46985          , x_value_type_code          => l_adr_value_type_code
46986          , p_side                     => 'NA'
46987    );
46988 
46989    xla_ae_lines_pkg.set_ccid(
46990     p_code_combination_id          => l_ccid
46991   , p_value_type_code              => l_adr_value_type_code
46992   , p_transaction_coa_id           => l_adr_transaction_coa_id
46993   , p_accounting_coa_id            => l_adr_accounting_coa_id
46994   , p_adr_code                     => 'CST_DEFAULT'
46995   , p_adr_type_code                => 'S'
46996   , p_component_type               => l_component_type
46997   , p_component_code               => l_component_code
46998   , p_component_type_code          => l_component_type_code
46999   , p_component_appl_id            => l_component_appl_id
47000   , p_amb_context_code             => l_amb_context_code
47001   , p_side                         => 'NA'
47002   );
47003 
47004 
47005    --
47006    --
47007    END IF;
47008    --
47009    -- Bug 4922099
47010    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
47011           (NVL(l_enc_upg_option, 'N') = 'O')
47012         ) AND
47013         (l_bflow_method_code = 'PRIOR_ENTRY')
47014       )
47015    THEN
47016       IF
47017       --
47018       1 = 2
47019       --
47020       THEN
47021       xla_accounting_err_pkg.build_message
47022                                     (p_appli_s_name            => 'XLA'
47023                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47024                                     ,p_token_1                 => 'LINE_NUMBER'
47025                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
47026                                     ,p_token_2                 => 'LINE_TYPE_NAME'
47027                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
47028                                                                              l_component_type
47029                                                                             ,l_component_code
47030                                                                             ,l_component_type_code
47031                                                                             ,l_component_appl_id
47032                                                                             ,l_amb_context_code
47033                                                                             ,l_entity_code
47034                                                                             ,l_event_class_code
47035                                                                            )
47036                                     ,p_token_3                 => 'OWNER'
47037                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
47038                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
47039                                                                           ,p_lookup_code    => l_component_type_code
47040                                                                          )
47041                                     ,p_token_4                 => 'PRODUCT_NAME'
47042                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
47043                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
47044                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
47045                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
47046                                     ,p_ae_header_id            =>  NULL
47047                                        );
47048 
47049         IF (C_LEVEL_ERROR>= g_log_level) THEN
47050                  trace
47051                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47052                       ,p_level    => C_LEVEL_ERROR
47053                       ,p_module   => l_log_module);
47054         END IF;
47055       END IF;
47056    END IF;
47057    --
47058    --
47059    ------------------------------------------------------------------------------------------------
47060    -- 4219869 Business Flow
47061    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
47062    -- Prior Entry.  Currently, the following code is always generated.
47063    ------------------------------------------------------------------------------------------------
47064    XLA_AE_LINES_PKG.ValidateCurrentLine;
47065 
47066    ------------------------------------------------------------------------------------
47067    -- 4219869 Business Flow
47068    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
47069    ------------------------------------------------------------------------------------
47070    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47071 
47072    ----------------------------------------------------------------------------------
47073    -- 4219869 Business Flow
47074    -- Update journal entry status -- Need to generate this within IF <condition>
47075    ----------------------------------------------------------------------------------
47076    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47077          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
47078          ,p_balance_type_code => l_balance_type_code
47079          );
47080 
47081    -------------------------------------------------------------------------------------------
47082    -- 4262811 - Generate the Accrual Reversal lines
47083    -------------------------------------------------------------------------------------------
47084    BEGIN
47085       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
47086                               (g_array_event(p_event_id).array_value_num('header_index'));
47087       IF l_acc_rev_flag IS NULL THEN
47088          l_acc_rev_flag := 'N';
47089       END IF;
47090    EXCEPTION
47091       WHEN OTHERS THEN
47092          l_acc_rev_flag := 'N';
47093    END;
47094    --
47095    IF (l_acc_rev_flag = 'Y') THEN
47096 
47097        -- 4645092  ------------------------------------------------------------------------------
47098        -- To allow MPA report to determine if it should generate report process
47099        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
47100        ------------------------------------------------------------------------------------------
47101 
47102        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
47103        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
47104    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
47105    -- call ADRs
47106    -- Bug 4922099
47107    --
47108    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
47109         (NVL(l_actual_upg_option, 'N') = 'O') OR
47110         (NVL(l_enc_upg_option, 'N') = 'O')
47111       )
47112    THEN
47113    NULL;
47114    --
47115    --
47116    
47117   l_ccid := AcctDerRule_4(
47118            p_application_id           => p_application_id
47119          , p_ae_header_id             => l_ae_header_id 
47120 , p_source_4 => p_source_4
47121          , x_transaction_coa_id       => l_adr_transaction_coa_id
47122          , x_accounting_coa_id        => l_adr_accounting_coa_id
47123          , x_value_type_code          => l_adr_value_type_code
47124          , p_side                     => 'NA'
47125    );
47126 
47127    xla_ae_lines_pkg.set_ccid(
47128     p_code_combination_id          => l_ccid
47129   , p_value_type_code              => l_adr_value_type_code
47130   , p_transaction_coa_id           => l_adr_transaction_coa_id
47131   , p_accounting_coa_id            => l_adr_accounting_coa_id
47132   , p_adr_code                     => 'CST_DEFAULT'
47133   , p_adr_type_code                => 'S'
47134   , p_component_type               => l_component_type
47135   , p_component_code               => l_component_code
47136   , p_component_type_code          => l_component_type_code
47137   , p_component_appl_id            => l_component_appl_id
47138   , p_amb_context_code             => l_amb_context_code
47139   , p_side                         => 'NA'
47140   );
47141 
47142 
47143    --
47144    --
47145    END IF;
47146 
47147        --
47148        -- Update the line information that should be overwritten
47149        --
47150        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
47151                                          p_header_num   => 1);
47152        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
47153 
47154        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
47155 
47156        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
47157           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
47158        END IF;
47159 
47160       --
47161       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
47162       --
47163       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
47164           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
47165       ELSE
47166           ---------------------------------------------------------------------------------------------------
47167           -- 4262811a Switch Sign
47168           ---------------------------------------------------------------------------------------------------
47169           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
47170           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47171                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47172           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47173                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47174           -- 5132302
47175           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
47176                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47177 
47178       END IF;
47179 
47180       -- 4955764
47181       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47182       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
47183 
47184 
47185       XLA_AE_LINES_PKG.ValidateCurrentLine;
47186       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47187 
47188       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47189                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
47190                ,p_balance_type_code => l_balance_type_code);
47191 
47192    END IF;
47193 
47194    -----------------------------------------------------------------------------------------
47195    -- 4262811 Multiperiod Accounting
47196    -----------------------------------------------------------------------------------------
47197      -- No MPA option is assigned.
47198 
47199 
47200 END IF;
47201 END IF;
47202 --
47203 
47204 --
47205 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47206    trace
47207       (p_msg      => 'END of AcctLineType_87'
47208       ,p_level    => C_LEVEL_PROCEDURE
47209       ,p_module   => l_log_module);
47210 END IF;
47211 --
47212 EXCEPTION
47213   WHEN xla_exceptions_pkg.application_exception THEN
47214       RAISE;
47215   WHEN OTHERS THEN
47216        xla_exceptions_pkg.raise_message
47217            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_87');
47218 END AcctLineType_87;
47219 --
47220 
47221 ---------------------------------------
47222 --
47223 -- PRIVATE FUNCTION
47224 --         AcctLineType_88
47225 --
47226 ---------------------------------------
47227 PROCEDURE AcctLineType_88 (
47228   p_application_id        IN NUMBER
47229  ,p_event_id              IN NUMBER
47230  ,p_calculate_acctd_flag  IN VARCHAR2
47231  ,p_calculate_g_l_flag    IN VARCHAR2
47232  ,p_actual_flag           IN OUT VARCHAR2
47233  ,p_balance_type_code     OUT VARCHAR2
47234  ,p_gain_or_loss_ref      OUT VARCHAR2
47235  
47236 --Cost Management Default Account
47237  , p_source_4            IN NUMBER
47238 --DISTRIBUTION_IDENTIFIER
47239  , p_source_11            IN NUMBER
47240 --Distribution Type
47241  , p_source_12            IN VARCHAR2
47242  , p_source_12_meaning    IN VARCHAR2
47243 --Entered Currency Code
47244  , p_source_15            IN VARCHAR2
47245 --Entered Amount
47246  , p_source_18            IN NUMBER
47247 --Currency Conversion Date
47248  , p_source_19            IN DATE
47249 --Currency Conversion Rate
47250  , p_source_20            IN NUMBER
47251 --Currency Conversion Type
47252  , p_source_21            IN VARCHAR2
47253 --Accounted Amount
47254  , p_source_22            IN NUMBER
47255 --Accounting Line Type
47256  , p_source_24            IN NUMBER
47257 )
47258 IS
47259 
47260 l_component_type              VARCHAR2(80);
47261 l_component_code              VARCHAR2(30);
47262 l_component_type_code         VARCHAR2(1);
47263 l_component_appl_id           INTEGER;
47264 l_amb_context_code            VARCHAR2(30);
47265 l_entity_code                 VARCHAR2(30);
47266 l_event_class_code            VARCHAR2(30);
47267 l_ae_header_id                NUMBER;
47268 l_event_type_code             VARCHAR2(30);
47269 l_line_definition_code        VARCHAR2(30);
47270 l_line_definition_owner_code  VARCHAR2(1);
47271 --
47272 -- adr variables
47273 l_segment                     VARCHAR2(30);
47274 l_ccid                        NUMBER;
47275 l_adr_transaction_coa_id      NUMBER;
47276 l_adr_accounting_coa_id       NUMBER;
47277 l_adr_flexfield_segment_code  VARCHAR2(30);
47278 l_adr_flex_value_set_id       NUMBER;
47279 l_adr_value_type_code         VARCHAR2(30);
47280 l_adr_value_combination_id    NUMBER;
47281 l_adr_value_segment_code      VARCHAR2(30);
47282 
47283 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
47284 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
47285 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
47286 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
47287 
47288 -- 4262811 Variables ------------------------------------------------------------------------------------------
47289 l_entered_amt_idx             NUMBER;
47290 l_accted_amt_idx              NUMBER;
47291 l_acc_rev_flag                VARCHAR2(1);
47292 l_accrual_line_num            NUMBER;
47293 l_tmp_amt                     NUMBER;
47294 l_acc_rev_natural_side_code   VARCHAR2(1);
47295 
47296 l_num_entries                 NUMBER;
47297 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
47298 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
47299 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
47300 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
47301 l_recog_line_1                NUMBER;
47302 l_recog_line_2                NUMBER;
47303 
47304 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
47305 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
47306 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
47307 
47308 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
47309 
47310 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
47311 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
47312 
47313 ---------------------------------------------------------------------------------------------------------------
47314 
47315 
47316 --
47317 -- bulk performance
47318 --
47319 l_balance_type_code           VARCHAR2(1);
47320 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
47321 l_log_module                  VARCHAR2(240);
47322 
47323 --
47324 -- Upgrade strategy
47325 --
47326 l_actual_upg_option           VARCHAR2(1);
47327 l_enc_upg_option           VARCHAR2(1);
47328 
47329 --
47330 BEGIN
47331 --
47332 IF g_log_enabled THEN
47333       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_88';
47334 END IF;
47335 --
47336 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47337 
47338       trace
47339          (p_msg      => 'BEGIN of AcctLineType_88'
47340          ,p_level    => C_LEVEL_PROCEDURE
47341          ,p_module   => l_log_module);
47342 
47343 END IF;
47344 --
47345 l_component_type             := 'AMB_JLT';
47346 l_component_code             := 'INTERORG_PROFIT_OPM';
47347 l_component_type_code        := 'S';
47348 l_component_appl_id          :=  707;
47349 l_amb_context_code           := 'DEFAULT';
47350 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
47351 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
47352 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_ALL';
47353 l_line_definition_owner_code := 'S';
47354 l_line_definition_code       := 'FOB_RCPT_SENDER_RCPT';
47355 --
47356 l_balance_type_code          := 'A';
47357 l_segment                     := NULL;
47358 l_ccid                        := NULL;
47359 l_adr_transaction_coa_id      := NULL;
47360 l_adr_accounting_coa_id       := NULL;
47361 l_adr_flexfield_segment_code  := NULL;
47362 l_adr_flex_value_set_id       := NULL;
47363 l_adr_value_type_code         := NULL;
47364 l_adr_value_combination_id    := NULL;
47365 l_adr_value_segment_code      := NULL;
47366 
47367 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
47368 l_bflow_class_code           := '';    -- 4219869 Business Flow
47369 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
47370 l_budgetary_control_flag     := 'N';
47371 
47372 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
47373 l_bflow_applied_to_amt       := NULL; -- 5132302
47374 l_entered_amt_idx            := NULL;          -- 4262811
47375 l_accted_amt_idx             := NULL;          -- 4262811
47376 l_acc_rev_flag               := NULL;          -- 4262811
47377 l_accrual_line_num           := NULL;          -- 4262811
47378 l_tmp_amt                    := NULL;          -- 4262811
47379 --
47380  
47381 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
47382     l_balance_type_code <> 'B' THEN
47383 IF NVL(p_source_24,9E125) =  34
47384  THEN 
47385 
47386    --
47387    XLA_AE_LINES_PKG.SetNewLine;
47388 
47389    p_balance_type_code          := l_balance_type_code;
47390    -- set the flag so later we will know whether the gain loss line needs to be created
47391    
47392    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
47393      p_actual_flag :='A';
47394    END IF;
47395 
47396    --
47397    -- bulk performance
47398    --
47399    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
47400                                       p_header_num   => 0); -- 4262811
47401    --
47402    -- set accounting line options
47403    --
47404    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
47405            p_natural_side_code          => 'D'
47406          , p_gain_or_loss_flag          => 'N'
47407          , p_gl_transfer_mode_code      => 'S'
47408          , p_acct_entry_type_code       => 'A'
47409          , p_switch_side_flag           => 'Y'
47410          , p_merge_duplicate_code       => 'N'
47411          );
47412    --
47413    l_acc_rev_natural_side_code := 'C';  -- 4262811
47414    -- 
47415    --
47416    -- set accounting line type info
47417    --
47418    xla_ae_lines_pkg.SetAcctLineType
47419       (p_component_type             => l_component_type
47420       ,p_event_type_code            => l_event_type_code
47421       ,p_line_definition_owner_code => l_line_definition_owner_code
47422       ,p_line_definition_code       => l_line_definition_code
47423       ,p_accounting_line_code       => l_component_code
47424       ,p_accounting_line_type_code  => l_component_type_code
47425       ,p_accounting_line_appl_id    => l_component_appl_id
47426       ,p_amb_context_code           => l_amb_context_code
47427       ,p_entity_code                => l_entity_code
47428       ,p_event_class_code           => l_event_class_code);
47429    --
47430    -- set accounting class
47431    --
47432    xla_ae_lines_pkg.SetAcctClass(
47433            p_accounting_class_code  => 'INTERORG_PROFIT'
47434          , p_ae_header_id           => l_ae_header_id
47435          );
47436 
47437    --
47438    -- set rounding class
47439    --
47440    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
47441                       'INTERORG_PROFIT';
47442 
47443    --
47444    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
47445    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
47446    --
47447    -- bulk performance
47448    --
47449    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
47450 
47451    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
47452       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
47453 
47454    -- 4955764
47455    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47456       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
47457 
47458    -- 4458381 Public Sector Enh
47459    
47460    --
47461    -- set accounting attributes for the line type
47462    --
47463    l_entered_amt_idx := 3;
47464    l_accted_amt_idx  := 8;
47465    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
47466    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
47467    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
47468    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
47469    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
47470    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
47471    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
47472    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
47473    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
47474    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
47475    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
47476    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
47477    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
47478    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
47479    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
47480    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
47481    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
47482 
47483    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
47484    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
47485 
47486    ---------------------------------------------------------------------------------------------------------------
47487    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
47488    ---------------------------------------------------------------------------------------------------------------
47489    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
47490 
47491    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47492    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47493 
47494    IF xla_accounting_cache_pkg.GetValueChar
47495          (p_source_code         => 'LEDGER_CATEGORY_CODE'
47496          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
47497    AND l_bflow_method_code = 'PRIOR_ENTRY'
47498 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
47499    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
47500          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
47501        )
47502    THEN
47503          xla_ae_lines_pkg.BflowUpgEntry
47504            (p_business_method_code    => l_bflow_method_code
47505            ,p_business_class_code     => l_bflow_class_code
47506            ,p_balance_type            => l_balance_type_code);
47507    ELSE
47508       NULL;
47509 -- No business flow processing for business flow method of NONE.
47510    END IF;
47511 
47512    --
47513    -- call analytical criteria
47514    --
47515    
47516    --
47517    -- call description
47518    --
47519    -- No description or it is inherited.
47520    --
47521    -- call ADRs
47522    -- Bug 4922099
47523    --
47524    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
47525         (NVL(l_actual_upg_option, 'N') = 'O') OR
47526         (NVL(l_enc_upg_option, 'N') = 'O')
47527       )
47528    THEN
47529    NULL;
47530    --
47531    --
47532    
47533   l_ccid := AcctDerRule_4(
47534            p_application_id           => p_application_id
47535          , p_ae_header_id             => l_ae_header_id 
47536 , p_source_4 => p_source_4
47537          , x_transaction_coa_id       => l_adr_transaction_coa_id
47538          , x_accounting_coa_id        => l_adr_accounting_coa_id
47539          , x_value_type_code          => l_adr_value_type_code
47540          , p_side                     => 'NA'
47541    );
47542 
47543    xla_ae_lines_pkg.set_ccid(
47544     p_code_combination_id          => l_ccid
47545   , p_value_type_code              => l_adr_value_type_code
47546   , p_transaction_coa_id           => l_adr_transaction_coa_id
47547   , p_accounting_coa_id            => l_adr_accounting_coa_id
47548   , p_adr_code                     => 'CST_DEFAULT'
47549   , p_adr_type_code                => 'S'
47550   , p_component_type               => l_component_type
47551   , p_component_code               => l_component_code
47552   , p_component_type_code          => l_component_type_code
47553   , p_component_appl_id            => l_component_appl_id
47554   , p_amb_context_code             => l_amb_context_code
47555   , p_side                         => 'NA'
47556   );
47557 
47558 
47559    --
47560    --
47561    END IF;
47562    --
47563    -- Bug 4922099
47564    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
47565           (NVL(l_enc_upg_option, 'N') = 'O')
47566         ) AND
47567         (l_bflow_method_code = 'PRIOR_ENTRY')
47568       )
47569    THEN
47570       IF
47571       --
47572       1 = 2
47573       --
47574       THEN
47575       xla_accounting_err_pkg.build_message
47576                                     (p_appli_s_name            => 'XLA'
47577                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47578                                     ,p_token_1                 => 'LINE_NUMBER'
47579                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
47580                                     ,p_token_2                 => 'LINE_TYPE_NAME'
47581                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
47582                                                                              l_component_type
47583                                                                             ,l_component_code
47584                                                                             ,l_component_type_code
47585                                                                             ,l_component_appl_id
47586                                                                             ,l_amb_context_code
47587                                                                             ,l_entity_code
47588                                                                             ,l_event_class_code
47589                                                                            )
47590                                     ,p_token_3                 => 'OWNER'
47591                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
47592                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
47593                                                                           ,p_lookup_code    => l_component_type_code
47594                                                                          )
47595                                     ,p_token_4                 => 'PRODUCT_NAME'
47596                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
47597                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
47598                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
47599                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
47600                                     ,p_ae_header_id            =>  NULL
47601                                        );
47602 
47603         IF (C_LEVEL_ERROR>= g_log_level) THEN
47604                  trace
47605                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47606                       ,p_level    => C_LEVEL_ERROR
47607                       ,p_module   => l_log_module);
47608         END IF;
47609       END IF;
47610    END IF;
47611    --
47612    --
47613    ------------------------------------------------------------------------------------------------
47614    -- 4219869 Business Flow
47615    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
47616    -- Prior Entry.  Currently, the following code is always generated.
47617    ------------------------------------------------------------------------------------------------
47618    XLA_AE_LINES_PKG.ValidateCurrentLine;
47619 
47620    ------------------------------------------------------------------------------------
47621    -- 4219869 Business Flow
47622    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
47623    ------------------------------------------------------------------------------------
47624    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47625 
47626    ----------------------------------------------------------------------------------
47627    -- 4219869 Business Flow
47628    -- Update journal entry status -- Need to generate this within IF <condition>
47629    ----------------------------------------------------------------------------------
47630    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47631          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
47632          ,p_balance_type_code => l_balance_type_code
47633          );
47634 
47635    -------------------------------------------------------------------------------------------
47636    -- 4262811 - Generate the Accrual Reversal lines
47637    -------------------------------------------------------------------------------------------
47638    BEGIN
47639       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
47640                               (g_array_event(p_event_id).array_value_num('header_index'));
47641       IF l_acc_rev_flag IS NULL THEN
47642          l_acc_rev_flag := 'N';
47643       END IF;
47644    EXCEPTION
47645       WHEN OTHERS THEN
47646          l_acc_rev_flag := 'N';
47647    END;
47648    --
47649    IF (l_acc_rev_flag = 'Y') THEN
47650 
47651        -- 4645092  ------------------------------------------------------------------------------
47652        -- To allow MPA report to determine if it should generate report process
47653        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
47654        ------------------------------------------------------------------------------------------
47655 
47656        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
47657        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
47658    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
47659    -- call ADRs
47660    -- Bug 4922099
47661    --
47662    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
47663         (NVL(l_actual_upg_option, 'N') = 'O') OR
47664         (NVL(l_enc_upg_option, 'N') = 'O')
47665       )
47666    THEN
47667    NULL;
47668    --
47669    --
47670    
47671   l_ccid := AcctDerRule_4(
47672            p_application_id           => p_application_id
47673          , p_ae_header_id             => l_ae_header_id 
47674 , p_source_4 => p_source_4
47675          , x_transaction_coa_id       => l_adr_transaction_coa_id
47676          , x_accounting_coa_id        => l_adr_accounting_coa_id
47677          , x_value_type_code          => l_adr_value_type_code
47678          , p_side                     => 'NA'
47679    );
47680 
47681    xla_ae_lines_pkg.set_ccid(
47682     p_code_combination_id          => l_ccid
47683   , p_value_type_code              => l_adr_value_type_code
47684   , p_transaction_coa_id           => l_adr_transaction_coa_id
47685   , p_accounting_coa_id            => l_adr_accounting_coa_id
47686   , p_adr_code                     => 'CST_DEFAULT'
47687   , p_adr_type_code                => 'S'
47688   , p_component_type               => l_component_type
47689   , p_component_code               => l_component_code
47690   , p_component_type_code          => l_component_type_code
47691   , p_component_appl_id            => l_component_appl_id
47692   , p_amb_context_code             => l_amb_context_code
47693   , p_side                         => 'NA'
47694   );
47695 
47696 
47697    --
47698    --
47699    END IF;
47700 
47701        --
47702        -- Update the line information that should be overwritten
47703        --
47704        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
47705                                          p_header_num   => 1);
47706        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
47707 
47708        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
47709 
47710        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
47711           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
47712        END IF;
47713 
47714       --
47715       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
47716       --
47717       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
47718           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
47719       ELSE
47720           ---------------------------------------------------------------------------------------------------
47721           -- 4262811a Switch Sign
47722           ---------------------------------------------------------------------------------------------------
47723           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
47724           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47725                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47726           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47727                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47728           -- 5132302
47729           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
47730                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47731 
47732       END IF;
47733 
47734       -- 4955764
47735       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47736       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
47737 
47738 
47739       XLA_AE_LINES_PKG.ValidateCurrentLine;
47740       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47741 
47742       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47743                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
47744                ,p_balance_type_code => l_balance_type_code);
47745 
47746    END IF;
47747 
47748    -----------------------------------------------------------------------------------------
47749    -- 4262811 Multiperiod Accounting
47750    -----------------------------------------------------------------------------------------
47751      -- No MPA option is assigned.
47752 
47753 
47754 END IF;
47755 END IF;
47756 --
47757 
47758 --
47759 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47760    trace
47761       (p_msg      => 'END of AcctLineType_88'
47762       ,p_level    => C_LEVEL_PROCEDURE
47763       ,p_module   => l_log_module);
47764 END IF;
47765 --
47766 EXCEPTION
47767   WHEN xla_exceptions_pkg.application_exception THEN
47768       RAISE;
47769   WHEN OTHERS THEN
47770        xla_exceptions_pkg.raise_message
47771            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_88');
47772 END AcctLineType_88;
47773 --
47774 
47775 ---------------------------------------
47776 --
47777 -- PRIVATE FUNCTION
47778 --         AcctLineType_89
47779 --
47780 ---------------------------------------
47781 PROCEDURE AcctLineType_89 (
47782   p_application_id        IN NUMBER
47783  ,p_event_id              IN NUMBER
47784  ,p_calculate_acctd_flag  IN VARCHAR2
47785  ,p_calculate_g_l_flag    IN VARCHAR2
47786  ,p_actual_flag           IN OUT VARCHAR2
47787  ,p_balance_type_code     OUT VARCHAR2
47788  ,p_gain_or_loss_ref      OUT VARCHAR2
47789  
47790 --Cost Management Default Account
47791  , p_source_4            IN NUMBER
47792 --DISTRIBUTION_IDENTIFIER
47793  , p_source_11            IN NUMBER
47794 --Distribution Type
47795  , p_source_12            IN VARCHAR2
47796  , p_source_12_meaning    IN VARCHAR2
47797 --Entered Currency Code
47798  , p_source_15            IN VARCHAR2
47799 --Entered Amount
47800  , p_source_18            IN NUMBER
47801 --Currency Conversion Date
47802  , p_source_19            IN DATE
47803 --Currency Conversion Rate
47804  , p_source_20            IN NUMBER
47805 --Currency Conversion Type
47806  , p_source_21            IN VARCHAR2
47807 --Accounted Amount
47808  , p_source_22            IN NUMBER
47809 --Accounting Line Type
47810  , p_source_24            IN NUMBER
47811 )
47812 IS
47813 
47814 l_component_type              VARCHAR2(80);
47815 l_component_code              VARCHAR2(30);
47816 l_component_type_code         VARCHAR2(1);
47817 l_component_appl_id           INTEGER;
47818 l_amb_context_code            VARCHAR2(30);
47819 l_entity_code                 VARCHAR2(30);
47820 l_event_class_code            VARCHAR2(30);
47821 l_ae_header_id                NUMBER;
47822 l_event_type_code             VARCHAR2(30);
47823 l_line_definition_code        VARCHAR2(30);
47824 l_line_definition_owner_code  VARCHAR2(1);
47825 --
47826 -- adr variables
47827 l_segment                     VARCHAR2(30);
47828 l_ccid                        NUMBER;
47829 l_adr_transaction_coa_id      NUMBER;
47830 l_adr_accounting_coa_id       NUMBER;
47831 l_adr_flexfield_segment_code  VARCHAR2(30);
47832 l_adr_flex_value_set_id       NUMBER;
47833 l_adr_value_type_code         VARCHAR2(30);
47834 l_adr_value_combination_id    NUMBER;
47835 l_adr_value_segment_code      VARCHAR2(30);
47836 
47837 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
47838 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
47839 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
47840 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
47841 
47842 -- 4262811 Variables ------------------------------------------------------------------------------------------
47843 l_entered_amt_idx             NUMBER;
47844 l_accted_amt_idx              NUMBER;
47845 l_acc_rev_flag                VARCHAR2(1);
47846 l_accrual_line_num            NUMBER;
47847 l_tmp_amt                     NUMBER;
47848 l_acc_rev_natural_side_code   VARCHAR2(1);
47849 
47850 l_num_entries                 NUMBER;
47851 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
47852 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
47853 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
47854 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
47855 l_recog_line_1                NUMBER;
47856 l_recog_line_2                NUMBER;
47857 
47858 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
47859 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
47860 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
47861 
47862 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
47863 
47864 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
47865 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
47866 
47867 ---------------------------------------------------------------------------------------------------------------
47868 
47869 
47870 --
47871 -- bulk performance
47872 --
47873 l_balance_type_code           VARCHAR2(1);
47874 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
47875 l_log_module                  VARCHAR2(240);
47876 
47877 --
47878 -- Upgrade strategy
47879 --
47880 l_actual_upg_option           VARCHAR2(1);
47881 l_enc_upg_option           VARCHAR2(1);
47882 
47883 --
47884 BEGIN
47885 --
47886 IF g_log_enabled THEN
47887       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_89';
47888 END IF;
47889 --
47890 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47891 
47892       trace
47893          (p_msg      => 'BEGIN of AcctLineType_89'
47894          ,p_level    => C_LEVEL_PROCEDURE
47895          ,p_module   => l_log_module);
47896 
47897 END IF;
47898 --
47899 l_component_type             := 'AMB_JLT';
47900 l_component_code             := 'INTERORG_PROFIT_OPM';
47901 l_component_type_code        := 'S';
47902 l_component_appl_id          :=  707;
47903 l_amb_context_code           := 'DEFAULT';
47904 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
47905 l_event_class_code           := 'USER_DEFINE';
47906 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
47907 l_line_definition_owner_code := 'S';
47908 l_line_definition_code       := 'USER_FOB_SHIP_SENDER_SHIP_NOTP';
47909 --
47910 l_balance_type_code          := 'A';
47911 l_segment                     := NULL;
47912 l_ccid                        := NULL;
47913 l_adr_transaction_coa_id      := NULL;
47914 l_adr_accounting_coa_id       := NULL;
47915 l_adr_flexfield_segment_code  := NULL;
47916 l_adr_flex_value_set_id       := NULL;
47917 l_adr_value_type_code         := NULL;
47918 l_adr_value_combination_id    := NULL;
47919 l_adr_value_segment_code      := NULL;
47920 
47921 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
47922 l_bflow_class_code           := '';    -- 4219869 Business Flow
47923 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
47924 l_budgetary_control_flag     := 'N';
47925 
47926 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
47927 l_bflow_applied_to_amt       := NULL; -- 5132302
47928 l_entered_amt_idx            := NULL;          -- 4262811
47929 l_accted_amt_idx             := NULL;          -- 4262811
47930 l_acc_rev_flag               := NULL;          -- 4262811
47931 l_accrual_line_num           := NULL;          -- 4262811
47932 l_tmp_amt                    := NULL;          -- 4262811
47933 --
47934  
47935 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
47936     l_balance_type_code <> 'B' THEN
47937 IF NVL(p_source_24,9E125) =  34
47938  THEN 
47939 
47940    --
47941    XLA_AE_LINES_PKG.SetNewLine;
47942 
47943    p_balance_type_code          := l_balance_type_code;
47944    -- set the flag so later we will know whether the gain loss line needs to be created
47945    
47946    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
47947      p_actual_flag :='A';
47948    END IF;
47949 
47950    --
47951    -- bulk performance
47952    --
47953    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
47954                                       p_header_num   => 0); -- 4262811
47955    --
47956    -- set accounting line options
47957    --
47958    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
47959            p_natural_side_code          => 'D'
47960          , p_gain_or_loss_flag          => 'N'
47961          , p_gl_transfer_mode_code      => 'S'
47962          , p_acct_entry_type_code       => 'A'
47963          , p_switch_side_flag           => 'Y'
47964          , p_merge_duplicate_code       => 'N'
47965          );
47966    --
47967    l_acc_rev_natural_side_code := 'C';  -- 4262811
47968    -- 
47969    --
47970    -- set accounting line type info
47971    --
47972    xla_ae_lines_pkg.SetAcctLineType
47973       (p_component_type             => l_component_type
47974       ,p_event_type_code            => l_event_type_code
47975       ,p_line_definition_owner_code => l_line_definition_owner_code
47976       ,p_line_definition_code       => l_line_definition_code
47977       ,p_accounting_line_code       => l_component_code
47978       ,p_accounting_line_type_code  => l_component_type_code
47979       ,p_accounting_line_appl_id    => l_component_appl_id
47980       ,p_amb_context_code           => l_amb_context_code
47981       ,p_entity_code                => l_entity_code
47982       ,p_event_class_code           => l_event_class_code);
47983    --
47984    -- set accounting class
47985    --
47986    xla_ae_lines_pkg.SetAcctClass(
47987            p_accounting_class_code  => 'INTERORG_PROFIT'
47988          , p_ae_header_id           => l_ae_header_id
47989          );
47990 
47991    --
47992    -- set rounding class
47993    --
47994    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
47995                       'INTERORG_PROFIT';
47996 
47997    --
47998    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
47999    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
48000    --
48001    -- bulk performance
48002    --
48003    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
48004 
48005    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
48006       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
48007 
48008    -- 4955764
48009    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48010       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
48011 
48012    -- 4458381 Public Sector Enh
48013    
48014    --
48015    -- set accounting attributes for the line type
48016    --
48017    l_entered_amt_idx := 3;
48018    l_accted_amt_idx  := 8;
48019    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
48020    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
48021    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
48022    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
48023    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
48024    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
48025    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
48026    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
48027    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
48028    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
48029    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
48030    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
48031    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
48032    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
48033    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
48034    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
48035    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
48036 
48037    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
48038    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
48039 
48040    ---------------------------------------------------------------------------------------------------------------
48041    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
48042    ---------------------------------------------------------------------------------------------------------------
48043    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
48044 
48045    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48046    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48047 
48048    IF xla_accounting_cache_pkg.GetValueChar
48049          (p_source_code         => 'LEDGER_CATEGORY_CODE'
48050          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
48051    AND l_bflow_method_code = 'PRIOR_ENTRY'
48052 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
48053    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
48054          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
48055        )
48056    THEN
48057          xla_ae_lines_pkg.BflowUpgEntry
48058            (p_business_method_code    => l_bflow_method_code
48059            ,p_business_class_code     => l_bflow_class_code
48060            ,p_balance_type            => l_balance_type_code);
48061    ELSE
48062       NULL;
48063 -- No business flow processing for business flow method of NONE.
48064    END IF;
48065 
48066    --
48067    -- call analytical criteria
48068    --
48069    
48070    --
48071    -- call description
48072    --
48073    -- No description or it is inherited.
48074    --
48075    -- call ADRs
48076    -- Bug 4922099
48077    --
48078    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48079         (NVL(l_actual_upg_option, 'N') = 'O') OR
48080         (NVL(l_enc_upg_option, 'N') = 'O')
48081       )
48082    THEN
48083    NULL;
48084    --
48085    --
48086    
48087   l_ccid := AcctDerRule_4(
48088            p_application_id           => p_application_id
48089          , p_ae_header_id             => l_ae_header_id 
48090 , p_source_4 => p_source_4
48091          , x_transaction_coa_id       => l_adr_transaction_coa_id
48092          , x_accounting_coa_id        => l_adr_accounting_coa_id
48093          , x_value_type_code          => l_adr_value_type_code
48094          , p_side                     => 'NA'
48095    );
48096 
48097    xla_ae_lines_pkg.set_ccid(
48098     p_code_combination_id          => l_ccid
48099   , p_value_type_code              => l_adr_value_type_code
48100   , p_transaction_coa_id           => l_adr_transaction_coa_id
48101   , p_accounting_coa_id            => l_adr_accounting_coa_id
48102   , p_adr_code                     => 'CST_DEFAULT'
48103   , p_adr_type_code                => 'S'
48104   , p_component_type               => l_component_type
48105   , p_component_code               => l_component_code
48106   , p_component_type_code          => l_component_type_code
48107   , p_component_appl_id            => l_component_appl_id
48108   , p_amb_context_code             => l_amb_context_code
48109   , p_side                         => 'NA'
48110   );
48111 
48112 
48113    --
48114    --
48115    END IF;
48116    --
48117    -- Bug 4922099
48118    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
48119           (NVL(l_enc_upg_option, 'N') = 'O')
48120         ) AND
48121         (l_bflow_method_code = 'PRIOR_ENTRY')
48122       )
48123    THEN
48124       IF
48125       --
48126       1 = 2
48127       --
48128       THEN
48129       xla_accounting_err_pkg.build_message
48130                                     (p_appli_s_name            => 'XLA'
48131                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48132                                     ,p_token_1                 => 'LINE_NUMBER'
48133                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
48134                                     ,p_token_2                 => 'LINE_TYPE_NAME'
48135                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
48136                                                                              l_component_type
48137                                                                             ,l_component_code
48138                                                                             ,l_component_type_code
48139                                                                             ,l_component_appl_id
48140                                                                             ,l_amb_context_code
48141                                                                             ,l_entity_code
48142                                                                             ,l_event_class_code
48143                                                                            )
48144                                     ,p_token_3                 => 'OWNER'
48145                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
48146                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
48147                                                                           ,p_lookup_code    => l_component_type_code
48148                                                                          )
48149                                     ,p_token_4                 => 'PRODUCT_NAME'
48150                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
48151                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
48152                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
48153                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
48154                                     ,p_ae_header_id            =>  NULL
48155                                        );
48156 
48157         IF (C_LEVEL_ERROR>= g_log_level) THEN
48158                  trace
48159                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48160                       ,p_level    => C_LEVEL_ERROR
48161                       ,p_module   => l_log_module);
48162         END IF;
48163       END IF;
48164    END IF;
48165    --
48166    --
48167    ------------------------------------------------------------------------------------------------
48168    -- 4219869 Business Flow
48169    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
48170    -- Prior Entry.  Currently, the following code is always generated.
48171    ------------------------------------------------------------------------------------------------
48172    XLA_AE_LINES_PKG.ValidateCurrentLine;
48173 
48174    ------------------------------------------------------------------------------------
48175    -- 4219869 Business Flow
48176    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
48177    ------------------------------------------------------------------------------------
48178    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48179 
48180    ----------------------------------------------------------------------------------
48181    -- 4219869 Business Flow
48182    -- Update journal entry status -- Need to generate this within IF <condition>
48183    ----------------------------------------------------------------------------------
48184    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48185          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
48186          ,p_balance_type_code => l_balance_type_code
48187          );
48188 
48189    -------------------------------------------------------------------------------------------
48190    -- 4262811 - Generate the Accrual Reversal lines
48191    -------------------------------------------------------------------------------------------
48192    BEGIN
48193       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
48194                               (g_array_event(p_event_id).array_value_num('header_index'));
48195       IF l_acc_rev_flag IS NULL THEN
48196          l_acc_rev_flag := 'N';
48197       END IF;
48198    EXCEPTION
48199       WHEN OTHERS THEN
48200          l_acc_rev_flag := 'N';
48201    END;
48202    --
48203    IF (l_acc_rev_flag = 'Y') THEN
48204 
48205        -- 4645092  ------------------------------------------------------------------------------
48206        -- To allow MPA report to determine if it should generate report process
48207        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
48208        ------------------------------------------------------------------------------------------
48209 
48210        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
48211        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
48212    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
48213    -- call ADRs
48214    -- Bug 4922099
48215    --
48216    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48217         (NVL(l_actual_upg_option, 'N') = 'O') OR
48218         (NVL(l_enc_upg_option, 'N') = 'O')
48219       )
48220    THEN
48221    NULL;
48222    --
48223    --
48224    
48225   l_ccid := AcctDerRule_4(
48226            p_application_id           => p_application_id
48227          , p_ae_header_id             => l_ae_header_id 
48228 , p_source_4 => p_source_4
48229          , x_transaction_coa_id       => l_adr_transaction_coa_id
48230          , x_accounting_coa_id        => l_adr_accounting_coa_id
48231          , x_value_type_code          => l_adr_value_type_code
48232          , p_side                     => 'NA'
48233    );
48234 
48235    xla_ae_lines_pkg.set_ccid(
48236     p_code_combination_id          => l_ccid
48237   , p_value_type_code              => l_adr_value_type_code
48238   , p_transaction_coa_id           => l_adr_transaction_coa_id
48239   , p_accounting_coa_id            => l_adr_accounting_coa_id
48240   , p_adr_code                     => 'CST_DEFAULT'
48241   , p_adr_type_code                => 'S'
48242   , p_component_type               => l_component_type
48243   , p_component_code               => l_component_code
48244   , p_component_type_code          => l_component_type_code
48245   , p_component_appl_id            => l_component_appl_id
48246   , p_amb_context_code             => l_amb_context_code
48247   , p_side                         => 'NA'
48248   );
48249 
48250 
48251    --
48252    --
48253    END IF;
48254 
48255        --
48256        -- Update the line information that should be overwritten
48257        --
48258        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
48259                                          p_header_num   => 1);
48260        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
48261 
48262        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
48263 
48264        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
48265           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
48266        END IF;
48267 
48268       --
48269       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
48270       --
48271       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
48272           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
48273       ELSE
48274           ---------------------------------------------------------------------------------------------------
48275           -- 4262811a Switch Sign
48276           ---------------------------------------------------------------------------------------------------
48277           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
48278           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48279                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48280           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48281                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48282           -- 5132302
48283           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
48284                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48285 
48286       END IF;
48287 
48288       -- 4955764
48289       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48290       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
48291 
48292 
48293       XLA_AE_LINES_PKG.ValidateCurrentLine;
48294       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48295 
48296       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48297                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
48298                ,p_balance_type_code => l_balance_type_code);
48299 
48300    END IF;
48301 
48302    -----------------------------------------------------------------------------------------
48303    -- 4262811 Multiperiod Accounting
48304    -----------------------------------------------------------------------------------------
48305      -- No MPA option is assigned.
48306 
48307 
48308 END IF;
48309 END IF;
48310 --
48311 
48312 --
48313 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48314    trace
48315       (p_msg      => 'END of AcctLineType_89'
48316       ,p_level    => C_LEVEL_PROCEDURE
48317       ,p_module   => l_log_module);
48318 END IF;
48319 --
48320 EXCEPTION
48321   WHEN xla_exceptions_pkg.application_exception THEN
48322       RAISE;
48323   WHEN OTHERS THEN
48324        xla_exceptions_pkg.raise_message
48325            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_89');
48326 END AcctLineType_89;
48327 --
48328 
48329 ---------------------------------------
48330 --
48331 -- PRIVATE FUNCTION
48332 --         AcctLineType_90
48333 --
48334 ---------------------------------------
48335 PROCEDURE AcctLineType_90 (
48336   p_application_id        IN NUMBER
48337  ,p_event_id              IN NUMBER
48338  ,p_calculate_acctd_flag  IN VARCHAR2
48339  ,p_calculate_g_l_flag    IN VARCHAR2
48340  ,p_actual_flag           IN OUT VARCHAR2
48341  ,p_balance_type_code     OUT VARCHAR2
48342  ,p_gain_or_loss_ref      OUT VARCHAR2
48343  
48344 --Cost Management Default Account
48345  , p_source_4            IN NUMBER
48346 --DISTRIBUTION_IDENTIFIER
48347  , p_source_11            IN NUMBER
48348 --Distribution Type
48349  , p_source_12            IN VARCHAR2
48350  , p_source_12_meaning    IN VARCHAR2
48351 --Entered Currency Code
48352  , p_source_15            IN VARCHAR2
48353 --Entered Amount
48354  , p_source_18            IN NUMBER
48355 --Currency Conversion Date
48356  , p_source_19            IN DATE
48357 --Currency Conversion Rate
48358  , p_source_20            IN NUMBER
48359 --Currency Conversion Type
48360  , p_source_21            IN VARCHAR2
48361 --Accounted Amount
48362  , p_source_22            IN NUMBER
48363 --Accounting Line Type
48364  , p_source_24            IN NUMBER
48365 )
48366 IS
48367 
48368 l_component_type              VARCHAR2(80);
48369 l_component_code              VARCHAR2(30);
48370 l_component_type_code         VARCHAR2(1);
48371 l_component_appl_id           INTEGER;
48372 l_amb_context_code            VARCHAR2(30);
48373 l_entity_code                 VARCHAR2(30);
48374 l_event_class_code            VARCHAR2(30);
48375 l_ae_header_id                NUMBER;
48376 l_event_type_code             VARCHAR2(30);
48377 l_line_definition_code        VARCHAR2(30);
48378 l_line_definition_owner_code  VARCHAR2(1);
48379 --
48380 -- adr variables
48381 l_segment                     VARCHAR2(30);
48382 l_ccid                        NUMBER;
48383 l_adr_transaction_coa_id      NUMBER;
48384 l_adr_accounting_coa_id       NUMBER;
48385 l_adr_flexfield_segment_code  VARCHAR2(30);
48386 l_adr_flex_value_set_id       NUMBER;
48387 l_adr_value_type_code         VARCHAR2(30);
48388 l_adr_value_combination_id    NUMBER;
48389 l_adr_value_segment_code      VARCHAR2(30);
48390 
48391 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
48392 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
48393 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
48394 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
48395 
48396 -- 4262811 Variables ------------------------------------------------------------------------------------------
48397 l_entered_amt_idx             NUMBER;
48398 l_accted_amt_idx              NUMBER;
48399 l_acc_rev_flag                VARCHAR2(1);
48400 l_accrual_line_num            NUMBER;
48401 l_tmp_amt                     NUMBER;
48402 l_acc_rev_natural_side_code   VARCHAR2(1);
48403 
48404 l_num_entries                 NUMBER;
48405 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
48406 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
48407 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
48408 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
48409 l_recog_line_1                NUMBER;
48410 l_recog_line_2                NUMBER;
48411 
48412 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
48413 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
48414 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
48415 
48416 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
48417 
48418 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
48419 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
48420 
48421 ---------------------------------------------------------------------------------------------------------------
48422 
48423 
48424 --
48425 -- bulk performance
48426 --
48427 l_balance_type_code           VARCHAR2(1);
48428 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
48429 l_log_module                  VARCHAR2(240);
48430 
48431 --
48432 -- Upgrade strategy
48433 --
48434 l_actual_upg_option           VARCHAR2(1);
48435 l_enc_upg_option           VARCHAR2(1);
48436 
48437 --
48438 BEGIN
48439 --
48440 IF g_log_enabled THEN
48441       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_90';
48442 END IF;
48443 --
48444 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48445 
48446       trace
48447          (p_msg      => 'BEGIN of AcctLineType_90'
48448          ,p_level    => C_LEVEL_PROCEDURE
48449          ,p_module   => l_log_module);
48450 
48451 END IF;
48452 --
48453 l_component_type             := 'AMB_JLT';
48454 l_component_code             := 'INTERORG_PROFIT_OPM';
48455 l_component_type_code        := 'S';
48456 l_component_appl_id          :=  707;
48457 l_amb_context_code           := 'DEFAULT';
48458 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
48459 l_event_class_code           := 'USER_DEFINE';
48460 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_TP';
48461 l_line_definition_owner_code := 'S';
48462 l_line_definition_code       := 'USER_FOB_SHIP_SENDER_SHIP_TP';
48463 --
48464 l_balance_type_code          := 'A';
48465 l_segment                     := NULL;
48466 l_ccid                        := NULL;
48467 l_adr_transaction_coa_id      := NULL;
48468 l_adr_accounting_coa_id       := NULL;
48469 l_adr_flexfield_segment_code  := NULL;
48470 l_adr_flex_value_set_id       := NULL;
48471 l_adr_value_type_code         := NULL;
48472 l_adr_value_combination_id    := NULL;
48473 l_adr_value_segment_code      := NULL;
48474 
48475 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
48476 l_bflow_class_code           := '';    -- 4219869 Business Flow
48477 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
48478 l_budgetary_control_flag     := 'N';
48479 
48480 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
48481 l_bflow_applied_to_amt       := NULL; -- 5132302
48482 l_entered_amt_idx            := NULL;          -- 4262811
48483 l_accted_amt_idx             := NULL;          -- 4262811
48484 l_acc_rev_flag               := NULL;          -- 4262811
48485 l_accrual_line_num           := NULL;          -- 4262811
48486 l_tmp_amt                    := NULL;          -- 4262811
48487 --
48488  
48489 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
48490     l_balance_type_code <> 'B' THEN
48491 IF NVL(p_source_24,9E125) =  34
48492  THEN 
48493 
48494    --
48495    XLA_AE_LINES_PKG.SetNewLine;
48496 
48497    p_balance_type_code          := l_balance_type_code;
48498    -- set the flag so later we will know whether the gain loss line needs to be created
48499    
48500    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
48501      p_actual_flag :='A';
48502    END IF;
48503 
48504    --
48505    -- bulk performance
48506    --
48507    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
48508                                       p_header_num   => 0); -- 4262811
48509    --
48510    -- set accounting line options
48511    --
48512    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
48513            p_natural_side_code          => 'D'
48514          , p_gain_or_loss_flag          => 'N'
48515          , p_gl_transfer_mode_code      => 'S'
48516          , p_acct_entry_type_code       => 'A'
48517          , p_switch_side_flag           => 'Y'
48518          , p_merge_duplicate_code       => 'N'
48519          );
48520    --
48521    l_acc_rev_natural_side_code := 'C';  -- 4262811
48522    -- 
48523    --
48524    -- set accounting line type info
48525    --
48526    xla_ae_lines_pkg.SetAcctLineType
48527       (p_component_type             => l_component_type
48528       ,p_event_type_code            => l_event_type_code
48529       ,p_line_definition_owner_code => l_line_definition_owner_code
48530       ,p_line_definition_code       => l_line_definition_code
48531       ,p_accounting_line_code       => l_component_code
48532       ,p_accounting_line_type_code  => l_component_type_code
48533       ,p_accounting_line_appl_id    => l_component_appl_id
48534       ,p_amb_context_code           => l_amb_context_code
48535       ,p_entity_code                => l_entity_code
48536       ,p_event_class_code           => l_event_class_code);
48537    --
48538    -- set accounting class
48539    --
48540    xla_ae_lines_pkg.SetAcctClass(
48541            p_accounting_class_code  => 'INTERORG_PROFIT'
48542          , p_ae_header_id           => l_ae_header_id
48543          );
48544 
48545    --
48546    -- set rounding class
48547    --
48548    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
48549                       'INTERORG_PROFIT';
48550 
48551    --
48552    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
48553    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
48554    --
48555    -- bulk performance
48556    --
48557    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
48558 
48559    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
48560       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
48561 
48562    -- 4955764
48563    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48564       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
48565 
48566    -- 4458381 Public Sector Enh
48567    
48568    --
48569    -- set accounting attributes for the line type
48570    --
48571    l_entered_amt_idx := 3;
48572    l_accted_amt_idx  := 8;
48573    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
48574    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
48575    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
48576    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
48577    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
48578    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
48579    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
48580    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
48581    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
48582    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
48583    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
48584    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
48585    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
48586    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
48587    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
48588    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
48589    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
48590 
48591    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
48592    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
48593 
48594    ---------------------------------------------------------------------------------------------------------------
48595    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
48596    ---------------------------------------------------------------------------------------------------------------
48597    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
48598 
48599    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48600    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48601 
48602    IF xla_accounting_cache_pkg.GetValueChar
48603          (p_source_code         => 'LEDGER_CATEGORY_CODE'
48604          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
48605    AND l_bflow_method_code = 'PRIOR_ENTRY'
48606 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
48607    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
48608          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
48609        )
48610    THEN
48611          xla_ae_lines_pkg.BflowUpgEntry
48612            (p_business_method_code    => l_bflow_method_code
48613            ,p_business_class_code     => l_bflow_class_code
48614            ,p_balance_type            => l_balance_type_code);
48615    ELSE
48616       NULL;
48617 -- No business flow processing for business flow method of NONE.
48618    END IF;
48619 
48620    --
48621    -- call analytical criteria
48622    --
48623    
48624    --
48625    -- call description
48626    --
48627    -- No description or it is inherited.
48628    --
48629    -- call ADRs
48630    -- Bug 4922099
48631    --
48632    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48633         (NVL(l_actual_upg_option, 'N') = 'O') OR
48634         (NVL(l_enc_upg_option, 'N') = 'O')
48635       )
48636    THEN
48637    NULL;
48638    --
48639    --
48640    
48641   l_ccid := AcctDerRule_4(
48642            p_application_id           => p_application_id
48643          , p_ae_header_id             => l_ae_header_id 
48644 , p_source_4 => p_source_4
48645          , x_transaction_coa_id       => l_adr_transaction_coa_id
48646          , x_accounting_coa_id        => l_adr_accounting_coa_id
48647          , x_value_type_code          => l_adr_value_type_code
48648          , p_side                     => 'NA'
48649    );
48650 
48651    xla_ae_lines_pkg.set_ccid(
48652     p_code_combination_id          => l_ccid
48653   , p_value_type_code              => l_adr_value_type_code
48654   , p_transaction_coa_id           => l_adr_transaction_coa_id
48655   , p_accounting_coa_id            => l_adr_accounting_coa_id
48656   , p_adr_code                     => 'CST_DEFAULT'
48657   , p_adr_type_code                => 'S'
48658   , p_component_type               => l_component_type
48659   , p_component_code               => l_component_code
48660   , p_component_type_code          => l_component_type_code
48661   , p_component_appl_id            => l_component_appl_id
48662   , p_amb_context_code             => l_amb_context_code
48663   , p_side                         => 'NA'
48664   );
48665 
48666 
48667    --
48668    --
48669    END IF;
48670    --
48671    -- Bug 4922099
48672    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
48673           (NVL(l_enc_upg_option, 'N') = 'O')
48674         ) AND
48675         (l_bflow_method_code = 'PRIOR_ENTRY')
48676       )
48677    THEN
48678       IF
48679       --
48680       1 = 2
48681       --
48682       THEN
48683       xla_accounting_err_pkg.build_message
48684                                     (p_appli_s_name            => 'XLA'
48685                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48686                                     ,p_token_1                 => 'LINE_NUMBER'
48687                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
48688                                     ,p_token_2                 => 'LINE_TYPE_NAME'
48689                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
48690                                                                              l_component_type
48691                                                                             ,l_component_code
48692                                                                             ,l_component_type_code
48693                                                                             ,l_component_appl_id
48694                                                                             ,l_amb_context_code
48695                                                                             ,l_entity_code
48696                                                                             ,l_event_class_code
48697                                                                            )
48698                                     ,p_token_3                 => 'OWNER'
48699                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
48700                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
48701                                                                           ,p_lookup_code    => l_component_type_code
48702                                                                          )
48703                                     ,p_token_4                 => 'PRODUCT_NAME'
48704                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
48705                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
48706                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
48707                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
48708                                     ,p_ae_header_id            =>  NULL
48709                                        );
48710 
48711         IF (C_LEVEL_ERROR>= g_log_level) THEN
48712                  trace
48713                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48714                       ,p_level    => C_LEVEL_ERROR
48715                       ,p_module   => l_log_module);
48716         END IF;
48717       END IF;
48718    END IF;
48719    --
48720    --
48721    ------------------------------------------------------------------------------------------------
48722    -- 4219869 Business Flow
48723    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
48724    -- Prior Entry.  Currently, the following code is always generated.
48725    ------------------------------------------------------------------------------------------------
48726    XLA_AE_LINES_PKG.ValidateCurrentLine;
48727 
48728    ------------------------------------------------------------------------------------
48729    -- 4219869 Business Flow
48730    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
48731    ------------------------------------------------------------------------------------
48732    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48733 
48734    ----------------------------------------------------------------------------------
48735    -- 4219869 Business Flow
48736    -- Update journal entry status -- Need to generate this within IF <condition>
48737    ----------------------------------------------------------------------------------
48738    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48739          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
48740          ,p_balance_type_code => l_balance_type_code
48741          );
48742 
48743    -------------------------------------------------------------------------------------------
48744    -- 4262811 - Generate the Accrual Reversal lines
48745    -------------------------------------------------------------------------------------------
48746    BEGIN
48747       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
48748                               (g_array_event(p_event_id).array_value_num('header_index'));
48749       IF l_acc_rev_flag IS NULL THEN
48750          l_acc_rev_flag := 'N';
48751       END IF;
48752    EXCEPTION
48753       WHEN OTHERS THEN
48754          l_acc_rev_flag := 'N';
48755    END;
48756    --
48757    IF (l_acc_rev_flag = 'Y') THEN
48758 
48759        -- 4645092  ------------------------------------------------------------------------------
48760        -- To allow MPA report to determine if it should generate report process
48761        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
48762        ------------------------------------------------------------------------------------------
48763 
48764        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
48765        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
48766    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
48767    -- call ADRs
48768    -- Bug 4922099
48769    --
48770    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48771         (NVL(l_actual_upg_option, 'N') = 'O') OR
48772         (NVL(l_enc_upg_option, 'N') = 'O')
48773       )
48774    THEN
48775    NULL;
48776    --
48777    --
48778    
48779   l_ccid := AcctDerRule_4(
48780            p_application_id           => p_application_id
48781          , p_ae_header_id             => l_ae_header_id 
48782 , p_source_4 => p_source_4
48783          , x_transaction_coa_id       => l_adr_transaction_coa_id
48784          , x_accounting_coa_id        => l_adr_accounting_coa_id
48785          , x_value_type_code          => l_adr_value_type_code
48786          , p_side                     => 'NA'
48787    );
48788 
48789    xla_ae_lines_pkg.set_ccid(
48790     p_code_combination_id          => l_ccid
48791   , p_value_type_code              => l_adr_value_type_code
48792   , p_transaction_coa_id           => l_adr_transaction_coa_id
48793   , p_accounting_coa_id            => l_adr_accounting_coa_id
48794   , p_adr_code                     => 'CST_DEFAULT'
48795   , p_adr_type_code                => 'S'
48796   , p_component_type               => l_component_type
48797   , p_component_code               => l_component_code
48798   , p_component_type_code          => l_component_type_code
48799   , p_component_appl_id            => l_component_appl_id
48800   , p_amb_context_code             => l_amb_context_code
48801   , p_side                         => 'NA'
48802   );
48803 
48804 
48805    --
48806    --
48807    END IF;
48808 
48809        --
48810        -- Update the line information that should be overwritten
48811        --
48812        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
48813                                          p_header_num   => 1);
48814        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
48815 
48816        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
48817 
48818        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
48819           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
48820        END IF;
48821 
48822       --
48823       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
48824       --
48825       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
48826           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
48827       ELSE
48828           ---------------------------------------------------------------------------------------------------
48829           -- 4262811a Switch Sign
48830           ---------------------------------------------------------------------------------------------------
48831           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
48832           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48833                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48834           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48835                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48836           -- 5132302
48837           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
48838                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48839 
48840       END IF;
48841 
48842       -- 4955764
48843       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48844       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
48845 
48846 
48847       XLA_AE_LINES_PKG.ValidateCurrentLine;
48848       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48849 
48850       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48851                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
48852                ,p_balance_type_code => l_balance_type_code);
48853 
48854    END IF;
48855 
48856    -----------------------------------------------------------------------------------------
48857    -- 4262811 Multiperiod Accounting
48858    -----------------------------------------------------------------------------------------
48859      -- No MPA option is assigned.
48860 
48861 
48862 END IF;
48863 END IF;
48864 --
48865 
48866 --
48867 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48868    trace
48869       (p_msg      => 'END of AcctLineType_90'
48870       ,p_level    => C_LEVEL_PROCEDURE
48871       ,p_module   => l_log_module);
48872 END IF;
48873 --
48874 EXCEPTION
48875   WHEN xla_exceptions_pkg.application_exception THEN
48876       RAISE;
48877   WHEN OTHERS THEN
48878        xla_exceptions_pkg.raise_message
48879            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_90');
48880 END AcctLineType_90;
48881 --
48882 
48883 ---------------------------------------
48884 --
48885 -- PRIVATE FUNCTION
48886 --         AcctLineType_91
48887 --
48888 ---------------------------------------
48889 PROCEDURE AcctLineType_91 (
48890   p_application_id        IN NUMBER
48891  ,p_event_id              IN NUMBER
48892  ,p_calculate_acctd_flag  IN VARCHAR2
48893  ,p_calculate_g_l_flag    IN VARCHAR2
48894  ,p_actual_flag           IN OUT VARCHAR2
48895  ,p_balance_type_code     OUT VARCHAR2
48896  ,p_gain_or_loss_ref      OUT VARCHAR2
48897  
48898 --Cost Management Default Account
48899  , p_source_4            IN NUMBER
48900 --DISTRIBUTION_IDENTIFIER
48901  , p_source_11            IN NUMBER
48902 --Distribution Type
48903  , p_source_12            IN VARCHAR2
48904  , p_source_12_meaning    IN VARCHAR2
48905 --Entered Currency Code
48906  , p_source_15            IN VARCHAR2
48907 --Entered Amount
48908  , p_source_18            IN NUMBER
48909 --Currency Conversion Date
48910  , p_source_19            IN DATE
48911 --Currency Conversion Rate
48912  , p_source_20            IN NUMBER
48913 --Currency Conversion Type
48914  , p_source_21            IN VARCHAR2
48915 --Accounted Amount
48916  , p_source_22            IN NUMBER
48917 --Accounting Line Type
48918  , p_source_24            IN NUMBER
48919 )
48920 IS
48921 
48922 l_component_type              VARCHAR2(80);
48923 l_component_code              VARCHAR2(30);
48924 l_component_type_code         VARCHAR2(1);
48925 l_component_appl_id           INTEGER;
48926 l_amb_context_code            VARCHAR2(30);
48927 l_entity_code                 VARCHAR2(30);
48928 l_event_class_code            VARCHAR2(30);
48929 l_ae_header_id                NUMBER;
48930 l_event_type_code             VARCHAR2(30);
48931 l_line_definition_code        VARCHAR2(30);
48932 l_line_definition_owner_code  VARCHAR2(1);
48933 --
48934 -- adr variables
48935 l_segment                     VARCHAR2(30);
48936 l_ccid                        NUMBER;
48937 l_adr_transaction_coa_id      NUMBER;
48938 l_adr_accounting_coa_id       NUMBER;
48939 l_adr_flexfield_segment_code  VARCHAR2(30);
48940 l_adr_flex_value_set_id       NUMBER;
48941 l_adr_value_type_code         VARCHAR2(30);
48942 l_adr_value_combination_id    NUMBER;
48943 l_adr_value_segment_code      VARCHAR2(30);
48944 
48945 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
48946 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
48947 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
48948 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
48949 
48950 -- 4262811 Variables ------------------------------------------------------------------------------------------
48951 l_entered_amt_idx             NUMBER;
48952 l_accted_amt_idx              NUMBER;
48953 l_acc_rev_flag                VARCHAR2(1);
48954 l_accrual_line_num            NUMBER;
48955 l_tmp_amt                     NUMBER;
48956 l_acc_rev_natural_side_code   VARCHAR2(1);
48957 
48958 l_num_entries                 NUMBER;
48959 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
48960 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
48961 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
48962 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
48963 l_recog_line_1                NUMBER;
48964 l_recog_line_2                NUMBER;
48965 
48966 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
48967 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
48968 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
48969 
48970 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
48971 
48972 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
48973 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
48974 
48975 ---------------------------------------------------------------------------------------------------------------
48976 
48977 
48978 --
48979 -- bulk performance
48980 --
48981 l_balance_type_code           VARCHAR2(1);
48982 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
48983 l_log_module                  VARCHAR2(240);
48984 
48985 --
48986 -- Upgrade strategy
48987 --
48988 l_actual_upg_option           VARCHAR2(1);
48989 l_enc_upg_option           VARCHAR2(1);
48990 
48991 --
48992 BEGIN
48993 --
48994 IF g_log_enabled THEN
48995       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_91';
48996 END IF;
48997 --
48998 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48999 
49000       trace
49001          (p_msg      => 'BEGIN of AcctLineType_91'
49002          ,p_level    => C_LEVEL_PROCEDURE
49003          ,p_module   => l_log_module);
49004 
49005 END IF;
49006 --
49007 l_component_type             := 'AMB_JLT';
49008 l_component_code             := 'INTERORG_PROFIT_OPM';
49009 l_component_type_code        := 'S';
49010 l_component_appl_id          :=  707;
49011 l_amb_context_code           := 'DEFAULT';
49012 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
49013 l_event_class_code           := 'USER_DEFINE';
49014 l_event_type_code            := 'UDIR_INTERORG_SHIP';
49015 l_line_definition_owner_code := 'S';
49016 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP';
49017 --
49018 l_balance_type_code          := 'A';
49019 l_segment                     := NULL;
49020 l_ccid                        := NULL;
49021 l_adr_transaction_coa_id      := NULL;
49022 l_adr_accounting_coa_id       := NULL;
49023 l_adr_flexfield_segment_code  := NULL;
49024 l_adr_flex_value_set_id       := NULL;
49025 l_adr_value_type_code         := NULL;
49026 l_adr_value_combination_id    := NULL;
49027 l_adr_value_segment_code      := NULL;
49028 
49029 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
49030 l_bflow_class_code           := '';    -- 4219869 Business Flow
49031 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
49032 l_budgetary_control_flag     := 'N';
49033 
49034 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
49035 l_bflow_applied_to_amt       := NULL; -- 5132302
49036 l_entered_amt_idx            := NULL;          -- 4262811
49037 l_accted_amt_idx             := NULL;          -- 4262811
49038 l_acc_rev_flag               := NULL;          -- 4262811
49039 l_accrual_line_num           := NULL;          -- 4262811
49040 l_tmp_amt                    := NULL;          -- 4262811
49041 --
49042  
49043 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
49044     l_balance_type_code <> 'B' THEN
49045 IF NVL(p_source_24,9E125) =  34
49046  THEN 
49047 
49048    --
49049    XLA_AE_LINES_PKG.SetNewLine;
49050 
49051    p_balance_type_code          := l_balance_type_code;
49052    -- set the flag so later we will know whether the gain loss line needs to be created
49053    
49054    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
49055      p_actual_flag :='A';
49056    END IF;
49057 
49058    --
49059    -- bulk performance
49060    --
49061    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
49062                                       p_header_num   => 0); -- 4262811
49063    --
49064    -- set accounting line options
49065    --
49066    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
49067            p_natural_side_code          => 'D'
49068          , p_gain_or_loss_flag          => 'N'
49069          , p_gl_transfer_mode_code      => 'S'
49070          , p_acct_entry_type_code       => 'A'
49071          , p_switch_side_flag           => 'Y'
49072          , p_merge_duplicate_code       => 'N'
49073          );
49074    --
49075    l_acc_rev_natural_side_code := 'C';  -- 4262811
49076    -- 
49077    --
49078    -- set accounting line type info
49079    --
49080    xla_ae_lines_pkg.SetAcctLineType
49081       (p_component_type             => l_component_type
49082       ,p_event_type_code            => l_event_type_code
49083       ,p_line_definition_owner_code => l_line_definition_owner_code
49084       ,p_line_definition_code       => l_line_definition_code
49085       ,p_accounting_line_code       => l_component_code
49086       ,p_accounting_line_type_code  => l_component_type_code
49087       ,p_accounting_line_appl_id    => l_component_appl_id
49088       ,p_amb_context_code           => l_amb_context_code
49089       ,p_entity_code                => l_entity_code
49090       ,p_event_class_code           => l_event_class_code);
49091    --
49092    -- set accounting class
49093    --
49094    xla_ae_lines_pkg.SetAcctClass(
49095            p_accounting_class_code  => 'INTERORG_PROFIT'
49096          , p_ae_header_id           => l_ae_header_id
49097          );
49098 
49099    --
49100    -- set rounding class
49101    --
49102    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
49103                       'INTERORG_PROFIT';
49104 
49105    --
49106    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
49107    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
49108    --
49109    -- bulk performance
49110    --
49111    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
49112 
49113    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
49114       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
49115 
49116    -- 4955764
49117    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49118       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
49119 
49120    -- 4458381 Public Sector Enh
49121    
49122    --
49123    -- set accounting attributes for the line type
49124    --
49125    l_entered_amt_idx := 3;
49126    l_accted_amt_idx  := 8;
49127    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
49128    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
49129    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
49130    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
49131    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
49132    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
49133    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
49134    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
49135    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
49136    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
49137    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
49138    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
49139    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
49140    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
49141    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
49142    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
49143    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
49144 
49145    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
49146    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
49147 
49148    ---------------------------------------------------------------------------------------------------------------
49149    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
49150    ---------------------------------------------------------------------------------------------------------------
49151    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
49152 
49153    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49154    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49155 
49156    IF xla_accounting_cache_pkg.GetValueChar
49157          (p_source_code         => 'LEDGER_CATEGORY_CODE'
49158          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
49159    AND l_bflow_method_code = 'PRIOR_ENTRY'
49160 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
49161    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
49162          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
49163        )
49164    THEN
49165          xla_ae_lines_pkg.BflowUpgEntry
49166            (p_business_method_code    => l_bflow_method_code
49167            ,p_business_class_code     => l_bflow_class_code
49168            ,p_balance_type            => l_balance_type_code);
49169    ELSE
49170       NULL;
49171 -- No business flow processing for business flow method of NONE.
49172    END IF;
49173 
49174    --
49175    -- call analytical criteria
49176    --
49177    
49178    --
49179    -- call description
49180    --
49181    -- No description or it is inherited.
49182    --
49183    -- call ADRs
49184    -- Bug 4922099
49185    --
49186    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
49187         (NVL(l_actual_upg_option, 'N') = 'O') OR
49188         (NVL(l_enc_upg_option, 'N') = 'O')
49189       )
49190    THEN
49191    NULL;
49192    --
49193    --
49194    
49195   l_ccid := AcctDerRule_4(
49196            p_application_id           => p_application_id
49197          , p_ae_header_id             => l_ae_header_id 
49198 , p_source_4 => p_source_4
49199          , x_transaction_coa_id       => l_adr_transaction_coa_id
49200          , x_accounting_coa_id        => l_adr_accounting_coa_id
49201          , x_value_type_code          => l_adr_value_type_code
49202          , p_side                     => 'NA'
49203    );
49204 
49205    xla_ae_lines_pkg.set_ccid(
49206     p_code_combination_id          => l_ccid
49207   , p_value_type_code              => l_adr_value_type_code
49208   , p_transaction_coa_id           => l_adr_transaction_coa_id
49209   , p_accounting_coa_id            => l_adr_accounting_coa_id
49210   , p_adr_code                     => 'CST_DEFAULT'
49211   , p_adr_type_code                => 'S'
49212   , p_component_type               => l_component_type
49213   , p_component_code               => l_component_code
49214   , p_component_type_code          => l_component_type_code
49215   , p_component_appl_id            => l_component_appl_id
49216   , p_amb_context_code             => l_amb_context_code
49217   , p_side                         => 'NA'
49218   );
49219 
49220 
49221    --
49222    --
49223    END IF;
49224    --
49225    -- Bug 4922099
49226    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
49227           (NVL(l_enc_upg_option, 'N') = 'O')
49228         ) AND
49229         (l_bflow_method_code = 'PRIOR_ENTRY')
49230       )
49231    THEN
49232       IF
49233       --
49234       1 = 2
49235       --
49236       THEN
49237       xla_accounting_err_pkg.build_message
49238                                     (p_appli_s_name            => 'XLA'
49239                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49240                                     ,p_token_1                 => 'LINE_NUMBER'
49241                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
49242                                     ,p_token_2                 => 'LINE_TYPE_NAME'
49243                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
49244                                                                              l_component_type
49245                                                                             ,l_component_code
49246                                                                             ,l_component_type_code
49247                                                                             ,l_component_appl_id
49248                                                                             ,l_amb_context_code
49249                                                                             ,l_entity_code
49250                                                                             ,l_event_class_code
49251                                                                            )
49252                                     ,p_token_3                 => 'OWNER'
49253                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
49254                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
49255                                                                           ,p_lookup_code    => l_component_type_code
49256                                                                          )
49257                                     ,p_token_4                 => 'PRODUCT_NAME'
49258                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
49259                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
49260                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
49261                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
49262                                     ,p_ae_header_id            =>  NULL
49263                                        );
49264 
49265         IF (C_LEVEL_ERROR>= g_log_level) THEN
49266                  trace
49267                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49268                       ,p_level    => C_LEVEL_ERROR
49269                       ,p_module   => l_log_module);
49270         END IF;
49271       END IF;
49272    END IF;
49273    --
49274    --
49275    ------------------------------------------------------------------------------------------------
49276    -- 4219869 Business Flow
49277    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
49278    -- Prior Entry.  Currently, the following code is always generated.
49279    ------------------------------------------------------------------------------------------------
49280    XLA_AE_LINES_PKG.ValidateCurrentLine;
49281 
49282    ------------------------------------------------------------------------------------
49283    -- 4219869 Business Flow
49284    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
49285    ------------------------------------------------------------------------------------
49286    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49287 
49288    ----------------------------------------------------------------------------------
49289    -- 4219869 Business Flow
49290    -- Update journal entry status -- Need to generate this within IF <condition>
49291    ----------------------------------------------------------------------------------
49292    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49293          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
49294          ,p_balance_type_code => l_balance_type_code
49295          );
49296 
49297    -------------------------------------------------------------------------------------------
49298    -- 4262811 - Generate the Accrual Reversal lines
49299    -------------------------------------------------------------------------------------------
49300    BEGIN
49301       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
49302                               (g_array_event(p_event_id).array_value_num('header_index'));
49303       IF l_acc_rev_flag IS NULL THEN
49304          l_acc_rev_flag := 'N';
49305       END IF;
49306    EXCEPTION
49307       WHEN OTHERS THEN
49308          l_acc_rev_flag := 'N';
49309    END;
49310    --
49311    IF (l_acc_rev_flag = 'Y') THEN
49312 
49313        -- 4645092  ------------------------------------------------------------------------------
49314        -- To allow MPA report to determine if it should generate report process
49315        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
49316        ------------------------------------------------------------------------------------------
49317 
49318        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
49319        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
49320    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
49321    -- call ADRs
49322    -- Bug 4922099
49323    --
49324    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
49325         (NVL(l_actual_upg_option, 'N') = 'O') OR
49326         (NVL(l_enc_upg_option, 'N') = 'O')
49327       )
49328    THEN
49329    NULL;
49330    --
49331    --
49332    
49333   l_ccid := AcctDerRule_4(
49334            p_application_id           => p_application_id
49335          , p_ae_header_id             => l_ae_header_id 
49336 , p_source_4 => p_source_4
49337          , x_transaction_coa_id       => l_adr_transaction_coa_id
49338          , x_accounting_coa_id        => l_adr_accounting_coa_id
49339          , x_value_type_code          => l_adr_value_type_code
49340          , p_side                     => 'NA'
49341    );
49342 
49343    xla_ae_lines_pkg.set_ccid(
49344     p_code_combination_id          => l_ccid
49345   , p_value_type_code              => l_adr_value_type_code
49346   , p_transaction_coa_id           => l_adr_transaction_coa_id
49347   , p_accounting_coa_id            => l_adr_accounting_coa_id
49348   , p_adr_code                     => 'CST_DEFAULT'
49349   , p_adr_type_code                => 'S'
49350   , p_component_type               => l_component_type
49351   , p_component_code               => l_component_code
49352   , p_component_type_code          => l_component_type_code
49353   , p_component_appl_id            => l_component_appl_id
49354   , p_amb_context_code             => l_amb_context_code
49355   , p_side                         => 'NA'
49356   );
49357 
49358 
49359    --
49360    --
49361    END IF;
49362 
49363        --
49364        -- Update the line information that should be overwritten
49365        --
49366        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
49367                                          p_header_num   => 1);
49368        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
49369 
49370        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
49371 
49372        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
49373           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
49374        END IF;
49375 
49376       --
49377       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
49378       --
49379       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
49380           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
49381       ELSE
49382           ---------------------------------------------------------------------------------------------------
49383           -- 4262811a Switch Sign
49384           ---------------------------------------------------------------------------------------------------
49385           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
49386           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49387                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49388           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49389                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49390           -- 5132302
49391           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
49392                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49393 
49394       END IF;
49395 
49396       -- 4955764
49397       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49398       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
49399 
49400 
49401       XLA_AE_LINES_PKG.ValidateCurrentLine;
49402       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49403 
49404       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49405                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
49406                ,p_balance_type_code => l_balance_type_code);
49407 
49408    END IF;
49409 
49410    -----------------------------------------------------------------------------------------
49411    -- 4262811 Multiperiod Accounting
49412    -----------------------------------------------------------------------------------------
49413      -- No MPA option is assigned.
49414 
49415 
49416 END IF;
49417 END IF;
49418 --
49419 
49420 --
49421 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49422    trace
49423       (p_msg      => 'END of AcctLineType_91'
49424       ,p_level    => C_LEVEL_PROCEDURE
49425       ,p_module   => l_log_module);
49426 END IF;
49427 --
49428 EXCEPTION
49429   WHEN xla_exceptions_pkg.application_exception THEN
49430       RAISE;
49431   WHEN OTHERS THEN
49432        xla_exceptions_pkg.raise_message
49433            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_91');
49434 END AcctLineType_91;
49435 --
49436 
49437 ---------------------------------------
49438 --
49439 -- PRIVATE FUNCTION
49440 --         AcctLineType_92
49441 --
49442 ---------------------------------------
49443 PROCEDURE AcctLineType_92 (
49444   p_application_id        IN NUMBER
49445  ,p_event_id              IN NUMBER
49446  ,p_calculate_acctd_flag  IN VARCHAR2
49447  ,p_calculate_g_l_flag    IN VARCHAR2
49448  ,p_actual_flag           IN OUT VARCHAR2
49449  ,p_balance_type_code     OUT VARCHAR2
49450  ,p_gain_or_loss_ref      OUT VARCHAR2
49451  
49452 --Cost Management Default Account
49453  , p_source_4            IN NUMBER
49454 --DISTRIBUTION_IDENTIFIER
49455  , p_source_11            IN NUMBER
49456 --Distribution Type
49457  , p_source_12            IN VARCHAR2
49458  , p_source_12_meaning    IN VARCHAR2
49459 --Entered Currency Code
49460  , p_source_15            IN VARCHAR2
49461 --Entered Amount
49462  , p_source_18            IN NUMBER
49463 --Currency Conversion Date
49464  , p_source_19            IN DATE
49465 --Currency Conversion Rate
49466  , p_source_20            IN NUMBER
49467 --Currency Conversion Type
49468  , p_source_21            IN VARCHAR2
49469 --Accounted Amount
49470  , p_source_22            IN NUMBER
49471 --Accounting Line Type
49472  , p_source_24            IN NUMBER
49473 )
49474 IS
49475 
49476 l_component_type              VARCHAR2(80);
49477 l_component_code              VARCHAR2(30);
49478 l_component_type_code         VARCHAR2(1);
49479 l_component_appl_id           INTEGER;
49480 l_amb_context_code            VARCHAR2(30);
49481 l_entity_code                 VARCHAR2(30);
49482 l_event_class_code            VARCHAR2(30);
49483 l_ae_header_id                NUMBER;
49484 l_event_type_code             VARCHAR2(30);
49485 l_line_definition_code        VARCHAR2(30);
49486 l_line_definition_owner_code  VARCHAR2(1);
49487 --
49488 -- adr variables
49489 l_segment                     VARCHAR2(30);
49490 l_ccid                        NUMBER;
49491 l_adr_transaction_coa_id      NUMBER;
49492 l_adr_accounting_coa_id       NUMBER;
49493 l_adr_flexfield_segment_code  VARCHAR2(30);
49494 l_adr_flex_value_set_id       NUMBER;
49495 l_adr_value_type_code         VARCHAR2(30);
49496 l_adr_value_combination_id    NUMBER;
49497 l_adr_value_segment_code      VARCHAR2(30);
49498 
49499 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
49500 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
49501 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
49502 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
49503 
49504 -- 4262811 Variables ------------------------------------------------------------------------------------------
49505 l_entered_amt_idx             NUMBER;
49506 l_accted_amt_idx              NUMBER;
49507 l_acc_rev_flag                VARCHAR2(1);
49508 l_accrual_line_num            NUMBER;
49509 l_tmp_amt                     NUMBER;
49510 l_acc_rev_natural_side_code   VARCHAR2(1);
49511 
49512 l_num_entries                 NUMBER;
49513 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
49514 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
49515 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
49516 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
49517 l_recog_line_1                NUMBER;
49518 l_recog_line_2                NUMBER;
49519 
49520 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
49521 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
49522 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
49523 
49524 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
49525 
49526 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
49527 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
49528 
49529 ---------------------------------------------------------------------------------------------------------------
49530 
49531 
49532 --
49533 -- bulk performance
49534 --
49535 l_balance_type_code           VARCHAR2(1);
49536 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
49537 l_log_module                  VARCHAR2(240);
49538 
49539 --
49540 -- Upgrade strategy
49541 --
49542 l_actual_upg_option           VARCHAR2(1);
49543 l_enc_upg_option           VARCHAR2(1);
49544 
49545 --
49546 BEGIN
49547 --
49548 IF g_log_enabled THEN
49549       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_92';
49550 END IF;
49551 --
49552 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49553 
49554       trace
49555          (p_msg      => 'BEGIN of AcctLineType_92'
49556          ,p_level    => C_LEVEL_PROCEDURE
49557          ,p_module   => l_log_module);
49558 
49559 END IF;
49560 --
49561 l_component_type             := 'AMB_JLT';
49562 l_component_code             := 'INTERORG_PROFIT_OPM';
49563 l_component_type_code        := 'S';
49564 l_component_appl_id          :=  707;
49565 l_amb_context_code           := 'DEFAULT';
49566 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
49567 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
49568 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_ALL';
49569 l_line_definition_owner_code := 'S';
49570 l_line_definition_code       := 'FOB_SHIP_SENDER_SHIP';
49571 --
49572 l_balance_type_code          := 'A';
49573 l_segment                     := NULL;
49574 l_ccid                        := NULL;
49575 l_adr_transaction_coa_id      := NULL;
49576 l_adr_accounting_coa_id       := NULL;
49577 l_adr_flexfield_segment_code  := NULL;
49578 l_adr_flex_value_set_id       := NULL;
49579 l_adr_value_type_code         := NULL;
49580 l_adr_value_combination_id    := NULL;
49581 l_adr_value_segment_code      := NULL;
49582 
49583 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
49584 l_bflow_class_code           := '';    -- 4219869 Business Flow
49585 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
49586 l_budgetary_control_flag     := 'N';
49587 
49588 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
49589 l_bflow_applied_to_amt       := NULL; -- 5132302
49590 l_entered_amt_idx            := NULL;          -- 4262811
49591 l_accted_amt_idx             := NULL;          -- 4262811
49592 l_acc_rev_flag               := NULL;          -- 4262811
49593 l_accrual_line_num           := NULL;          -- 4262811
49594 l_tmp_amt                    := NULL;          -- 4262811
49595 --
49596  
49597 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
49598     l_balance_type_code <> 'B' THEN
49599 IF NVL(p_source_24,9E125) =  34
49600  THEN 
49601 
49602    --
49603    XLA_AE_LINES_PKG.SetNewLine;
49604 
49605    p_balance_type_code          := l_balance_type_code;
49606    -- set the flag so later we will know whether the gain loss line needs to be created
49607    
49608    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
49609      p_actual_flag :='A';
49610    END IF;
49611 
49612    --
49613    -- bulk performance
49614    --
49615    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
49616                                       p_header_num   => 0); -- 4262811
49617    --
49618    -- set accounting line options
49619    --
49620    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
49621            p_natural_side_code          => 'D'
49622          , p_gain_or_loss_flag          => 'N'
49623          , p_gl_transfer_mode_code      => 'S'
49624          , p_acct_entry_type_code       => 'A'
49625          , p_switch_side_flag           => 'Y'
49626          , p_merge_duplicate_code       => 'N'
49627          );
49628    --
49629    l_acc_rev_natural_side_code := 'C';  -- 4262811
49630    -- 
49631    --
49632    -- set accounting line type info
49633    --
49634    xla_ae_lines_pkg.SetAcctLineType
49635       (p_component_type             => l_component_type
49636       ,p_event_type_code            => l_event_type_code
49637       ,p_line_definition_owner_code => l_line_definition_owner_code
49638       ,p_line_definition_code       => l_line_definition_code
49639       ,p_accounting_line_code       => l_component_code
49640       ,p_accounting_line_type_code  => l_component_type_code
49641       ,p_accounting_line_appl_id    => l_component_appl_id
49642       ,p_amb_context_code           => l_amb_context_code
49643       ,p_entity_code                => l_entity_code
49644       ,p_event_class_code           => l_event_class_code);
49645    --
49646    -- set accounting class
49647    --
49648    xla_ae_lines_pkg.SetAcctClass(
49649            p_accounting_class_code  => 'INTERORG_PROFIT'
49650          , p_ae_header_id           => l_ae_header_id
49651          );
49652 
49653    --
49654    -- set rounding class
49655    --
49656    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
49657                       'INTERORG_PROFIT';
49658 
49659    --
49660    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
49661    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
49662    --
49663    -- bulk performance
49664    --
49665    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
49666 
49667    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
49668       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
49669 
49670    -- 4955764
49671    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49672       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
49673 
49674    -- 4458381 Public Sector Enh
49675    
49676    --
49677    -- set accounting attributes for the line type
49678    --
49679    l_entered_amt_idx := 3;
49680    l_accted_amt_idx  := 8;
49681    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
49682    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
49683    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
49684    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
49685    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
49686    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
49687    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
49688    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
49689    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
49690    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
49691    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
49692    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
49693    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
49694    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
49695    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
49696    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
49697    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
49698 
49699    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
49700    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
49701 
49702    ---------------------------------------------------------------------------------------------------------------
49703    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
49704    ---------------------------------------------------------------------------------------------------------------
49705    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
49706 
49707    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49708    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49709 
49710    IF xla_accounting_cache_pkg.GetValueChar
49711          (p_source_code         => 'LEDGER_CATEGORY_CODE'
49712          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
49713    AND l_bflow_method_code = 'PRIOR_ENTRY'
49714 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
49715    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
49716          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
49717        )
49718    THEN
49719          xla_ae_lines_pkg.BflowUpgEntry
49720            (p_business_method_code    => l_bflow_method_code
49721            ,p_business_class_code     => l_bflow_class_code
49722            ,p_balance_type            => l_balance_type_code);
49723    ELSE
49724       NULL;
49725 -- No business flow processing for business flow method of NONE.
49726    END IF;
49727 
49728    --
49729    -- call analytical criteria
49730    --
49731    
49732    --
49733    -- call description
49734    --
49735    -- No description or it is inherited.
49736    --
49737    -- call ADRs
49738    -- Bug 4922099
49739    --
49740    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
49741         (NVL(l_actual_upg_option, 'N') = 'O') OR
49742         (NVL(l_enc_upg_option, 'N') = 'O')
49743       )
49744    THEN
49745    NULL;
49746    --
49747    --
49748    
49749   l_ccid := AcctDerRule_4(
49750            p_application_id           => p_application_id
49751          , p_ae_header_id             => l_ae_header_id 
49752 , p_source_4 => p_source_4
49753          , x_transaction_coa_id       => l_adr_transaction_coa_id
49754          , x_accounting_coa_id        => l_adr_accounting_coa_id
49755          , x_value_type_code          => l_adr_value_type_code
49756          , p_side                     => 'NA'
49757    );
49758 
49759    xla_ae_lines_pkg.set_ccid(
49760     p_code_combination_id          => l_ccid
49761   , p_value_type_code              => l_adr_value_type_code
49762   , p_transaction_coa_id           => l_adr_transaction_coa_id
49763   , p_accounting_coa_id            => l_adr_accounting_coa_id
49764   , p_adr_code                     => 'CST_DEFAULT'
49765   , p_adr_type_code                => 'S'
49766   , p_component_type               => l_component_type
49767   , p_component_code               => l_component_code
49768   , p_component_type_code          => l_component_type_code
49769   , p_component_appl_id            => l_component_appl_id
49770   , p_amb_context_code             => l_amb_context_code
49771   , p_side                         => 'NA'
49772   );
49773 
49774 
49775    --
49776    --
49777    END IF;
49778    --
49779    -- Bug 4922099
49780    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
49781           (NVL(l_enc_upg_option, 'N') = 'O')
49782         ) AND
49783         (l_bflow_method_code = 'PRIOR_ENTRY')
49784       )
49785    THEN
49786       IF
49787       --
49788       1 = 2
49789       --
49790       THEN
49791       xla_accounting_err_pkg.build_message
49792                                     (p_appli_s_name            => 'XLA'
49793                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49794                                     ,p_token_1                 => 'LINE_NUMBER'
49795                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
49796                                     ,p_token_2                 => 'LINE_TYPE_NAME'
49797                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
49798                                                                              l_component_type
49799                                                                             ,l_component_code
49800                                                                             ,l_component_type_code
49801                                                                             ,l_component_appl_id
49802                                                                             ,l_amb_context_code
49803                                                                             ,l_entity_code
49804                                                                             ,l_event_class_code
49805                                                                            )
49806                                     ,p_token_3                 => 'OWNER'
49807                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
49808                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
49809                                                                           ,p_lookup_code    => l_component_type_code
49810                                                                          )
49811                                     ,p_token_4                 => 'PRODUCT_NAME'
49812                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
49813                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
49814                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
49815                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
49816                                     ,p_ae_header_id            =>  NULL
49817                                        );
49818 
49819         IF (C_LEVEL_ERROR>= g_log_level) THEN
49820                  trace
49821                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49822                       ,p_level    => C_LEVEL_ERROR
49823                       ,p_module   => l_log_module);
49824         END IF;
49825       END IF;
49826    END IF;
49827    --
49828    --
49829    ------------------------------------------------------------------------------------------------
49830    -- 4219869 Business Flow
49831    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
49832    -- Prior Entry.  Currently, the following code is always generated.
49833    ------------------------------------------------------------------------------------------------
49834    XLA_AE_LINES_PKG.ValidateCurrentLine;
49835 
49836    ------------------------------------------------------------------------------------
49837    -- 4219869 Business Flow
49838    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
49839    ------------------------------------------------------------------------------------
49840    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49841 
49842    ----------------------------------------------------------------------------------
49843    -- 4219869 Business Flow
49844    -- Update journal entry status -- Need to generate this within IF <condition>
49845    ----------------------------------------------------------------------------------
49846    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49847          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
49848          ,p_balance_type_code => l_balance_type_code
49849          );
49850 
49851    -------------------------------------------------------------------------------------------
49852    -- 4262811 - Generate the Accrual Reversal lines
49853    -------------------------------------------------------------------------------------------
49854    BEGIN
49855       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
49856                               (g_array_event(p_event_id).array_value_num('header_index'));
49857       IF l_acc_rev_flag IS NULL THEN
49858          l_acc_rev_flag := 'N';
49859       END IF;
49860    EXCEPTION
49861       WHEN OTHERS THEN
49862          l_acc_rev_flag := 'N';
49863    END;
49864    --
49865    IF (l_acc_rev_flag = 'Y') THEN
49866 
49867        -- 4645092  ------------------------------------------------------------------------------
49868        -- To allow MPA report to determine if it should generate report process
49869        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
49870        ------------------------------------------------------------------------------------------
49871 
49872        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
49873        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
49874    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
49875    -- call ADRs
49876    -- Bug 4922099
49877    --
49878    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
49879         (NVL(l_actual_upg_option, 'N') = 'O') OR
49880         (NVL(l_enc_upg_option, 'N') = 'O')
49881       )
49882    THEN
49883    NULL;
49884    --
49885    --
49886    
49887   l_ccid := AcctDerRule_4(
49888            p_application_id           => p_application_id
49889          , p_ae_header_id             => l_ae_header_id 
49890 , p_source_4 => p_source_4
49891          , x_transaction_coa_id       => l_adr_transaction_coa_id
49892          , x_accounting_coa_id        => l_adr_accounting_coa_id
49893          , x_value_type_code          => l_adr_value_type_code
49894          , p_side                     => 'NA'
49895    );
49896 
49897    xla_ae_lines_pkg.set_ccid(
49898     p_code_combination_id          => l_ccid
49899   , p_value_type_code              => l_adr_value_type_code
49900   , p_transaction_coa_id           => l_adr_transaction_coa_id
49901   , p_accounting_coa_id            => l_adr_accounting_coa_id
49902   , p_adr_code                     => 'CST_DEFAULT'
49903   , p_adr_type_code                => 'S'
49904   , p_component_type               => l_component_type
49905   , p_component_code               => l_component_code
49906   , p_component_type_code          => l_component_type_code
49907   , p_component_appl_id            => l_component_appl_id
49908   , p_amb_context_code             => l_amb_context_code
49909   , p_side                         => 'NA'
49910   );
49911 
49912 
49913    --
49914    --
49915    END IF;
49916 
49917        --
49918        -- Update the line information that should be overwritten
49919        --
49920        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
49921                                          p_header_num   => 1);
49922        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
49923 
49924        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
49925 
49926        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
49927           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
49928        END IF;
49929 
49930       --
49931       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
49932       --
49933       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
49934           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
49935       ELSE
49936           ---------------------------------------------------------------------------------------------------
49937           -- 4262811a Switch Sign
49938           ---------------------------------------------------------------------------------------------------
49939           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
49940           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49941                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49942           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49943                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49944           -- 5132302
49945           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
49946                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49947 
49948       END IF;
49949 
49950       -- 4955764
49951       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49952       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
49953 
49954 
49955       XLA_AE_LINES_PKG.ValidateCurrentLine;
49956       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49957 
49958       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49959                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
49960                ,p_balance_type_code => l_balance_type_code);
49961 
49962    END IF;
49963 
49964    -----------------------------------------------------------------------------------------
49965    -- 4262811 Multiperiod Accounting
49966    -----------------------------------------------------------------------------------------
49967      -- No MPA option is assigned.
49968 
49969 
49970 END IF;
49971 END IF;
49972 --
49973 
49974 --
49975 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49976    trace
49977       (p_msg      => 'END of AcctLineType_92'
49978       ,p_level    => C_LEVEL_PROCEDURE
49979       ,p_module   => l_log_module);
49980 END IF;
49981 --
49982 EXCEPTION
49983   WHEN xla_exceptions_pkg.application_exception THEN
49984       RAISE;
49985   WHEN OTHERS THEN
49986        xla_exceptions_pkg.raise_message
49987            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_92');
49988 END AcctLineType_92;
49989 --
49990 
49991 ---------------------------------------
49992 --
49993 -- PRIVATE FUNCTION
49994 --         AcctLineType_93
49995 --
49996 ---------------------------------------
49997 PROCEDURE AcctLineType_93 (
49998   p_application_id        IN NUMBER
49999  ,p_event_id              IN NUMBER
50000  ,p_calculate_acctd_flag  IN VARCHAR2
50001  ,p_calculate_g_l_flag    IN VARCHAR2
50002  ,p_actual_flag           IN OUT VARCHAR2
50003  ,p_balance_type_code     OUT VARCHAR2
50004  ,p_gain_or_loss_ref      OUT VARCHAR2
50005  
50006 --Cost Management Default Account
50007  , p_source_4            IN NUMBER
50008 --DISTRIBUTION_IDENTIFIER
50009  , p_source_11            IN NUMBER
50010 --Distribution Type
50011  , p_source_12            IN VARCHAR2
50012  , p_source_12_meaning    IN VARCHAR2
50013 --Entered Currency Code
50014  , p_source_15            IN VARCHAR2
50015 --Entered Amount
50016  , p_source_18            IN NUMBER
50017 --Currency Conversion Date
50018  , p_source_19            IN DATE
50019 --Currency Conversion Rate
50020  , p_source_20            IN NUMBER
50021 --Currency Conversion Type
50022  , p_source_21            IN VARCHAR2
50023 --Accounted Amount
50024  , p_source_22            IN NUMBER
50025 --Accounting Line Type
50026  , p_source_24            IN NUMBER
50027 )
50028 IS
50029 
50030 l_component_type              VARCHAR2(80);
50031 l_component_code              VARCHAR2(30);
50032 l_component_type_code         VARCHAR2(1);
50033 l_component_appl_id           INTEGER;
50034 l_amb_context_code            VARCHAR2(30);
50035 l_entity_code                 VARCHAR2(30);
50036 l_event_class_code            VARCHAR2(30);
50037 l_ae_header_id                NUMBER;
50038 l_event_type_code             VARCHAR2(30);
50039 l_line_definition_code        VARCHAR2(30);
50040 l_line_definition_owner_code  VARCHAR2(1);
50041 --
50042 -- adr variables
50043 l_segment                     VARCHAR2(30);
50044 l_ccid                        NUMBER;
50045 l_adr_transaction_coa_id      NUMBER;
50046 l_adr_accounting_coa_id       NUMBER;
50047 l_adr_flexfield_segment_code  VARCHAR2(30);
50048 l_adr_flex_value_set_id       NUMBER;
50049 l_adr_value_type_code         VARCHAR2(30);
50050 l_adr_value_combination_id    NUMBER;
50051 l_adr_value_segment_code      VARCHAR2(30);
50052 
50053 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
50054 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
50055 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
50056 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
50057 
50058 -- 4262811 Variables ------------------------------------------------------------------------------------------
50059 l_entered_amt_idx             NUMBER;
50060 l_accted_amt_idx              NUMBER;
50061 l_acc_rev_flag                VARCHAR2(1);
50062 l_accrual_line_num            NUMBER;
50063 l_tmp_amt                     NUMBER;
50064 l_acc_rev_natural_side_code   VARCHAR2(1);
50065 
50066 l_num_entries                 NUMBER;
50067 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
50068 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
50069 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
50070 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
50071 l_recog_line_1                NUMBER;
50072 l_recog_line_2                NUMBER;
50073 
50074 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
50075 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
50076 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
50077 
50078 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
50079 
50080 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
50081 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
50082 
50083 ---------------------------------------------------------------------------------------------------------------
50084 
50085 
50086 --
50087 -- bulk performance
50088 --
50089 l_balance_type_code           VARCHAR2(1);
50090 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
50091 l_log_module                  VARCHAR2(240);
50092 
50093 --
50094 -- Upgrade strategy
50095 --
50096 l_actual_upg_option           VARCHAR2(1);
50097 l_enc_upg_option           VARCHAR2(1);
50098 
50099 --
50100 BEGIN
50101 --
50102 IF g_log_enabled THEN
50103       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_93';
50104 END IF;
50105 --
50106 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50107 
50108       trace
50109          (p_msg      => 'BEGIN of AcctLineType_93'
50110          ,p_level    => C_LEVEL_PROCEDURE
50111          ,p_module   => l_log_module);
50112 
50113 END IF;
50114 --
50115 l_component_type             := 'AMB_JLT';
50116 l_component_code             := 'INTERORG_PROFIT_OPM';
50117 l_component_type_code        := 'S';
50118 l_component_appl_id          :=  707;
50119 l_amb_context_code           := 'DEFAULT';
50120 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
50121 l_event_class_code           := 'USER_DEFINE';
50122 l_event_type_code            := 'UDIR_INTERORG_SHIP_TP';
50123 l_line_definition_owner_code := 'S';
50124 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_TP';
50125 --
50126 l_balance_type_code          := 'A';
50127 l_segment                     := NULL;
50128 l_ccid                        := NULL;
50129 l_adr_transaction_coa_id      := NULL;
50130 l_adr_accounting_coa_id       := NULL;
50131 l_adr_flexfield_segment_code  := NULL;
50132 l_adr_flex_value_set_id       := NULL;
50133 l_adr_value_type_code         := NULL;
50134 l_adr_value_combination_id    := NULL;
50135 l_adr_value_segment_code      := NULL;
50136 
50137 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
50138 l_bflow_class_code           := '';    -- 4219869 Business Flow
50139 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
50140 l_budgetary_control_flag     := 'N';
50141 
50142 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
50143 l_bflow_applied_to_amt       := NULL; -- 5132302
50144 l_entered_amt_idx            := NULL;          -- 4262811
50145 l_accted_amt_idx             := NULL;          -- 4262811
50146 l_acc_rev_flag               := NULL;          -- 4262811
50147 l_accrual_line_num           := NULL;          -- 4262811
50148 l_tmp_amt                    := NULL;          -- 4262811
50149 --
50150  
50151 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
50152     l_balance_type_code <> 'B' THEN
50153 IF NVL(p_source_24,9E125) =  34
50154  THEN 
50155 
50156    --
50157    XLA_AE_LINES_PKG.SetNewLine;
50158 
50159    p_balance_type_code          := l_balance_type_code;
50160    -- set the flag so later we will know whether the gain loss line needs to be created
50161    
50162    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
50163      p_actual_flag :='A';
50164    END IF;
50165 
50166    --
50167    -- bulk performance
50168    --
50169    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
50170                                       p_header_num   => 0); -- 4262811
50171    --
50172    -- set accounting line options
50173    --
50174    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
50175            p_natural_side_code          => 'D'
50176          , p_gain_or_loss_flag          => 'N'
50177          , p_gl_transfer_mode_code      => 'S'
50178          , p_acct_entry_type_code       => 'A'
50179          , p_switch_side_flag           => 'Y'
50180          , p_merge_duplicate_code       => 'N'
50181          );
50182    --
50183    l_acc_rev_natural_side_code := 'C';  -- 4262811
50184    -- 
50185    --
50186    -- set accounting line type info
50187    --
50188    xla_ae_lines_pkg.SetAcctLineType
50189       (p_component_type             => l_component_type
50190       ,p_event_type_code            => l_event_type_code
50191       ,p_line_definition_owner_code => l_line_definition_owner_code
50192       ,p_line_definition_code       => l_line_definition_code
50193       ,p_accounting_line_code       => l_component_code
50194       ,p_accounting_line_type_code  => l_component_type_code
50195       ,p_accounting_line_appl_id    => l_component_appl_id
50196       ,p_amb_context_code           => l_amb_context_code
50197       ,p_entity_code                => l_entity_code
50198       ,p_event_class_code           => l_event_class_code);
50199    --
50200    -- set accounting class
50201    --
50202    xla_ae_lines_pkg.SetAcctClass(
50203            p_accounting_class_code  => 'INTERORG_PROFIT'
50204          , p_ae_header_id           => l_ae_header_id
50205          );
50206 
50207    --
50208    -- set rounding class
50209    --
50210    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
50211                       'INTERORG_PROFIT';
50212 
50213    --
50214    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
50215    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
50216    --
50217    -- bulk performance
50218    --
50219    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
50220 
50221    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
50222       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
50223 
50224    -- 4955764
50225    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
50226       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
50227 
50228    -- 4458381 Public Sector Enh
50229    
50230    --
50231    -- set accounting attributes for the line type
50232    --
50233    l_entered_amt_idx := 3;
50234    l_accted_amt_idx  := 8;
50235    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
50236    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
50237    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
50238    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
50239    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
50240    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
50241    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
50242    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
50243    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
50244    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
50245    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
50246    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
50247    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
50248    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
50249    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
50250    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
50251    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
50252 
50253    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
50254    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
50255 
50256    ---------------------------------------------------------------------------------------------------------------
50257    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
50258    ---------------------------------------------------------------------------------------------------------------
50259    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
50260 
50261    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50262    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50263 
50264    IF xla_accounting_cache_pkg.GetValueChar
50265          (p_source_code         => 'LEDGER_CATEGORY_CODE'
50266          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
50267    AND l_bflow_method_code = 'PRIOR_ENTRY'
50268 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
50269    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
50270          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
50271        )
50272    THEN
50273          xla_ae_lines_pkg.BflowUpgEntry
50274            (p_business_method_code    => l_bflow_method_code
50275            ,p_business_class_code     => l_bflow_class_code
50276            ,p_balance_type            => l_balance_type_code);
50277    ELSE
50278       NULL;
50279 -- No business flow processing for business flow method of NONE.
50280    END IF;
50281 
50282    --
50283    -- call analytical criteria
50284    --
50285    
50286    --
50287    -- call description
50288    --
50289    -- No description or it is inherited.
50290    --
50291    -- call ADRs
50292    -- Bug 4922099
50293    --
50294    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50295         (NVL(l_actual_upg_option, 'N') = 'O') OR
50296         (NVL(l_enc_upg_option, 'N') = 'O')
50297       )
50298    THEN
50299    NULL;
50300    --
50301    --
50302    
50303   l_ccid := AcctDerRule_4(
50304            p_application_id           => p_application_id
50305          , p_ae_header_id             => l_ae_header_id 
50306 , p_source_4 => p_source_4
50307          , x_transaction_coa_id       => l_adr_transaction_coa_id
50308          , x_accounting_coa_id        => l_adr_accounting_coa_id
50309          , x_value_type_code          => l_adr_value_type_code
50310          , p_side                     => 'NA'
50311    );
50312 
50313    xla_ae_lines_pkg.set_ccid(
50314     p_code_combination_id          => l_ccid
50315   , p_value_type_code              => l_adr_value_type_code
50316   , p_transaction_coa_id           => l_adr_transaction_coa_id
50317   , p_accounting_coa_id            => l_adr_accounting_coa_id
50318   , p_adr_code                     => 'CST_DEFAULT'
50319   , p_adr_type_code                => 'S'
50320   , p_component_type               => l_component_type
50321   , p_component_code               => l_component_code
50322   , p_component_type_code          => l_component_type_code
50323   , p_component_appl_id            => l_component_appl_id
50324   , p_amb_context_code             => l_amb_context_code
50325   , p_side                         => 'NA'
50326   );
50327 
50328 
50329    --
50330    --
50331    END IF;
50332    --
50333    -- Bug 4922099
50334    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
50335           (NVL(l_enc_upg_option, 'N') = 'O')
50336         ) AND
50337         (l_bflow_method_code = 'PRIOR_ENTRY')
50338       )
50339    THEN
50340       IF
50341       --
50342       1 = 2
50343       --
50344       THEN
50345       xla_accounting_err_pkg.build_message
50346                                     (p_appli_s_name            => 'XLA'
50347                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50348                                     ,p_token_1                 => 'LINE_NUMBER'
50349                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
50350                                     ,p_token_2                 => 'LINE_TYPE_NAME'
50351                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
50352                                                                              l_component_type
50353                                                                             ,l_component_code
50354                                                                             ,l_component_type_code
50355                                                                             ,l_component_appl_id
50356                                                                             ,l_amb_context_code
50357                                                                             ,l_entity_code
50358                                                                             ,l_event_class_code
50359                                                                            )
50360                                     ,p_token_3                 => 'OWNER'
50361                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
50362                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
50363                                                                           ,p_lookup_code    => l_component_type_code
50364                                                                          )
50365                                     ,p_token_4                 => 'PRODUCT_NAME'
50366                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
50367                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
50368                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
50369                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
50370                                     ,p_ae_header_id            =>  NULL
50371                                        );
50372 
50373         IF (C_LEVEL_ERROR>= g_log_level) THEN
50374                  trace
50375                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50376                       ,p_level    => C_LEVEL_ERROR
50377                       ,p_module   => l_log_module);
50378         END IF;
50379       END IF;
50380    END IF;
50381    --
50382    --
50383    ------------------------------------------------------------------------------------------------
50384    -- 4219869 Business Flow
50385    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
50386    -- Prior Entry.  Currently, the following code is always generated.
50387    ------------------------------------------------------------------------------------------------
50388    XLA_AE_LINES_PKG.ValidateCurrentLine;
50389 
50390    ------------------------------------------------------------------------------------
50391    -- 4219869 Business Flow
50392    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
50393    ------------------------------------------------------------------------------------
50394    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50395 
50396    ----------------------------------------------------------------------------------
50397    -- 4219869 Business Flow
50398    -- Update journal entry status -- Need to generate this within IF <condition>
50399    ----------------------------------------------------------------------------------
50400    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50401          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
50402          ,p_balance_type_code => l_balance_type_code
50403          );
50404 
50405    -------------------------------------------------------------------------------------------
50406    -- 4262811 - Generate the Accrual Reversal lines
50407    -------------------------------------------------------------------------------------------
50408    BEGIN
50409       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
50410                               (g_array_event(p_event_id).array_value_num('header_index'));
50411       IF l_acc_rev_flag IS NULL THEN
50412          l_acc_rev_flag := 'N';
50413       END IF;
50414    EXCEPTION
50415       WHEN OTHERS THEN
50416          l_acc_rev_flag := 'N';
50417    END;
50418    --
50419    IF (l_acc_rev_flag = 'Y') THEN
50420 
50421        -- 4645092  ------------------------------------------------------------------------------
50422        -- To allow MPA report to determine if it should generate report process
50423        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
50424        ------------------------------------------------------------------------------------------
50425 
50426        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
50427        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
50428    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
50429    -- call ADRs
50430    -- Bug 4922099
50431    --
50432    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50433         (NVL(l_actual_upg_option, 'N') = 'O') OR
50434         (NVL(l_enc_upg_option, 'N') = 'O')
50435       )
50436    THEN
50437    NULL;
50438    --
50439    --
50440    
50441   l_ccid := AcctDerRule_4(
50442            p_application_id           => p_application_id
50443          , p_ae_header_id             => l_ae_header_id 
50444 , p_source_4 => p_source_4
50445          , x_transaction_coa_id       => l_adr_transaction_coa_id
50446          , x_accounting_coa_id        => l_adr_accounting_coa_id
50447          , x_value_type_code          => l_adr_value_type_code
50448          , p_side                     => 'NA'
50449    );
50450 
50451    xla_ae_lines_pkg.set_ccid(
50452     p_code_combination_id          => l_ccid
50453   , p_value_type_code              => l_adr_value_type_code
50454   , p_transaction_coa_id           => l_adr_transaction_coa_id
50455   , p_accounting_coa_id            => l_adr_accounting_coa_id
50456   , p_adr_code                     => 'CST_DEFAULT'
50457   , p_adr_type_code                => 'S'
50458   , p_component_type               => l_component_type
50459   , p_component_code               => l_component_code
50460   , p_component_type_code          => l_component_type_code
50461   , p_component_appl_id            => l_component_appl_id
50462   , p_amb_context_code             => l_amb_context_code
50463   , p_side                         => 'NA'
50464   );
50465 
50466 
50467    --
50468    --
50469    END IF;
50470 
50471        --
50472        -- Update the line information that should be overwritten
50473        --
50474        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
50475                                          p_header_num   => 1);
50476        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
50477 
50478        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
50479 
50480        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
50481           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
50482        END IF;
50483 
50484       --
50485       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
50486       --
50487       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
50488           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
50489       ELSE
50490           ---------------------------------------------------------------------------------------------------
50491           -- 4262811a Switch Sign
50492           ---------------------------------------------------------------------------------------------------
50493           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
50494           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50495                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50496           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50497                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50498           -- 5132302
50499           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
50500                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50501 
50502       END IF;
50503 
50504       -- 4955764
50505       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
50506       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
50507 
50508 
50509       XLA_AE_LINES_PKG.ValidateCurrentLine;
50510       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50511 
50512       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50513                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
50514                ,p_balance_type_code => l_balance_type_code);
50515 
50516    END IF;
50517 
50518    -----------------------------------------------------------------------------------------
50519    -- 4262811 Multiperiod Accounting
50520    -----------------------------------------------------------------------------------------
50521      -- No MPA option is assigned.
50522 
50523 
50524 END IF;
50525 END IF;
50526 --
50527 
50528 --
50529 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50530    trace
50531       (p_msg      => 'END of AcctLineType_93'
50532       ,p_level    => C_LEVEL_PROCEDURE
50533       ,p_module   => l_log_module);
50534 END IF;
50535 --
50536 EXCEPTION
50537   WHEN xla_exceptions_pkg.application_exception THEN
50538       RAISE;
50539   WHEN OTHERS THEN
50540        xla_exceptions_pkg.raise_message
50541            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_93');
50542 END AcctLineType_93;
50543 --
50544 
50545 ---------------------------------------
50546 --
50547 -- PRIVATE FUNCTION
50548 --         AcctLineType_94
50549 --
50550 ---------------------------------------
50551 PROCEDURE AcctLineType_94 (
50552   p_application_id        IN NUMBER
50553  ,p_event_id              IN NUMBER
50554  ,p_calculate_acctd_flag  IN VARCHAR2
50555  ,p_calculate_g_l_flag    IN VARCHAR2
50556  ,p_actual_flag           IN OUT VARCHAR2
50557  ,p_balance_type_code     OUT VARCHAR2
50558  ,p_gain_or_loss_ref      OUT VARCHAR2
50559  
50560 --Cost Management Default Account
50561  , p_source_4            IN NUMBER
50562 --DISTRIBUTION_IDENTIFIER
50563  , p_source_11            IN NUMBER
50564 --Distribution Type
50565  , p_source_12            IN VARCHAR2
50566  , p_source_12_meaning    IN VARCHAR2
50567 --Entered Currency Code
50568  , p_source_15            IN VARCHAR2
50569 --Entered Amount
50570  , p_source_18            IN NUMBER
50571 --Currency Conversion Date
50572  , p_source_19            IN DATE
50573 --Currency Conversion Rate
50574  , p_source_20            IN NUMBER
50575 --Currency Conversion Type
50576  , p_source_21            IN VARCHAR2
50577 --Accounted Amount
50578  , p_source_22            IN NUMBER
50579 --Accounting Line Type
50580  , p_source_24            IN NUMBER
50581 )
50582 IS
50583 
50584 l_component_type              VARCHAR2(80);
50585 l_component_code              VARCHAR2(30);
50586 l_component_type_code         VARCHAR2(1);
50587 l_component_appl_id           INTEGER;
50588 l_amb_context_code            VARCHAR2(30);
50589 l_entity_code                 VARCHAR2(30);
50590 l_event_class_code            VARCHAR2(30);
50591 l_ae_header_id                NUMBER;
50592 l_event_type_code             VARCHAR2(30);
50593 l_line_definition_code        VARCHAR2(30);
50594 l_line_definition_owner_code  VARCHAR2(1);
50595 --
50596 -- adr variables
50597 l_segment                     VARCHAR2(30);
50598 l_ccid                        NUMBER;
50599 l_adr_transaction_coa_id      NUMBER;
50600 l_adr_accounting_coa_id       NUMBER;
50601 l_adr_flexfield_segment_code  VARCHAR2(30);
50602 l_adr_flex_value_set_id       NUMBER;
50603 l_adr_value_type_code         VARCHAR2(30);
50604 l_adr_value_combination_id    NUMBER;
50605 l_adr_value_segment_code      VARCHAR2(30);
50606 
50607 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
50608 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
50609 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
50610 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
50611 
50612 -- 4262811 Variables ------------------------------------------------------------------------------------------
50613 l_entered_amt_idx             NUMBER;
50614 l_accted_amt_idx              NUMBER;
50615 l_acc_rev_flag                VARCHAR2(1);
50616 l_accrual_line_num            NUMBER;
50617 l_tmp_amt                     NUMBER;
50618 l_acc_rev_natural_side_code   VARCHAR2(1);
50619 
50620 l_num_entries                 NUMBER;
50621 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
50622 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
50623 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
50624 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
50625 l_recog_line_1                NUMBER;
50626 l_recog_line_2                NUMBER;
50627 
50628 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
50629 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
50630 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
50631 
50632 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
50633 
50634 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
50635 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
50636 
50637 ---------------------------------------------------------------------------------------------------------------
50638 
50639 
50640 --
50641 -- bulk performance
50642 --
50643 l_balance_type_code           VARCHAR2(1);
50644 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
50645 l_log_module                  VARCHAR2(240);
50646 
50647 --
50648 -- Upgrade strategy
50649 --
50650 l_actual_upg_option           VARCHAR2(1);
50651 l_enc_upg_option           VARCHAR2(1);
50652 
50653 --
50654 BEGIN
50655 --
50656 IF g_log_enabled THEN
50657       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_94';
50658 END IF;
50659 --
50660 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50661 
50662       trace
50663          (p_msg      => 'BEGIN of AcctLineType_94'
50664          ,p_level    => C_LEVEL_PROCEDURE
50665          ,p_module   => l_log_module);
50666 
50667 END IF;
50668 --
50669 l_component_type             := 'AMB_JLT';
50670 l_component_code             := 'INTERORG_PROFIT_OPM';
50671 l_component_type_code        := 'S';
50672 l_component_appl_id          :=  707;
50673 l_amb_context_code           := 'DEFAULT';
50674 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
50675 l_event_class_code           := 'INT_ORDER_TO_EXP';
50676 l_event_type_code            := 'INT_ORDER_TO_EXP_ALL';
50677 l_line_definition_owner_code := 'S';
50678 l_line_definition_code       := 'INT_ORDER_TO_EXP';
50679 --
50680 l_balance_type_code          := 'A';
50681 l_segment                     := NULL;
50682 l_ccid                        := NULL;
50683 l_adr_transaction_coa_id      := NULL;
50684 l_adr_accounting_coa_id       := NULL;
50685 l_adr_flexfield_segment_code  := NULL;
50686 l_adr_flex_value_set_id       := NULL;
50687 l_adr_value_type_code         := NULL;
50688 l_adr_value_combination_id    := NULL;
50689 l_adr_value_segment_code      := NULL;
50690 
50691 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
50692 l_bflow_class_code           := '';    -- 4219869 Business Flow
50693 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
50694 l_budgetary_control_flag     := 'N';
50695 
50696 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
50697 l_bflow_applied_to_amt       := NULL; -- 5132302
50698 l_entered_amt_idx            := NULL;          -- 4262811
50699 l_accted_amt_idx             := NULL;          -- 4262811
50700 l_acc_rev_flag               := NULL;          -- 4262811
50701 l_accrual_line_num           := NULL;          -- 4262811
50702 l_tmp_amt                    := NULL;          -- 4262811
50703 --
50704  
50705 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
50706     l_balance_type_code <> 'B' THEN
50707 IF NVL(p_source_24,9E125) =  34
50708  THEN 
50709 
50710    --
50711    XLA_AE_LINES_PKG.SetNewLine;
50712 
50713    p_balance_type_code          := l_balance_type_code;
50714    -- set the flag so later we will know whether the gain loss line needs to be created
50715    
50716    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
50717      p_actual_flag :='A';
50718    END IF;
50719 
50720    --
50721    -- bulk performance
50722    --
50723    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
50724                                       p_header_num   => 0); -- 4262811
50725    --
50726    -- set accounting line options
50727    --
50728    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
50729            p_natural_side_code          => 'D'
50730          , p_gain_or_loss_flag          => 'N'
50731          , p_gl_transfer_mode_code      => 'S'
50732          , p_acct_entry_type_code       => 'A'
50733          , p_switch_side_flag           => 'Y'
50734          , p_merge_duplicate_code       => 'N'
50735          );
50736    --
50737    l_acc_rev_natural_side_code := 'C';  -- 4262811
50738    -- 
50739    --
50740    -- set accounting line type info
50741    --
50742    xla_ae_lines_pkg.SetAcctLineType
50743       (p_component_type             => l_component_type
50744       ,p_event_type_code            => l_event_type_code
50745       ,p_line_definition_owner_code => l_line_definition_owner_code
50746       ,p_line_definition_code       => l_line_definition_code
50747       ,p_accounting_line_code       => l_component_code
50748       ,p_accounting_line_type_code  => l_component_type_code
50749       ,p_accounting_line_appl_id    => l_component_appl_id
50750       ,p_amb_context_code           => l_amb_context_code
50751       ,p_entity_code                => l_entity_code
50752       ,p_event_class_code           => l_event_class_code);
50753    --
50754    -- set accounting class
50755    --
50756    xla_ae_lines_pkg.SetAcctClass(
50757            p_accounting_class_code  => 'INTERORG_PROFIT'
50758          , p_ae_header_id           => l_ae_header_id
50759          );
50760 
50761    --
50762    -- set rounding class
50763    --
50764    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
50765                       'INTERORG_PROFIT';
50766 
50767    --
50768    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
50769    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
50770    --
50771    -- bulk performance
50772    --
50773    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
50774 
50775    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
50776       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
50777 
50778    -- 4955764
50779    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
50780       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
50781 
50782    -- 4458381 Public Sector Enh
50783    
50784    --
50785    -- set accounting attributes for the line type
50786    --
50787    l_entered_amt_idx := 3;
50788    l_accted_amt_idx  := 8;
50789    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
50790    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
50791    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
50792    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
50793    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
50794    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
50795    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
50796    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
50797    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
50798    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
50799    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
50800    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
50801    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
50802    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
50803    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
50804    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
50805    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
50806 
50807    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
50808    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
50809 
50810    ---------------------------------------------------------------------------------------------------------------
50811    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
50812    ---------------------------------------------------------------------------------------------------------------
50813    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
50814 
50815    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50816    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50817 
50818    IF xla_accounting_cache_pkg.GetValueChar
50819          (p_source_code         => 'LEDGER_CATEGORY_CODE'
50820          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
50821    AND l_bflow_method_code = 'PRIOR_ENTRY'
50822 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
50823    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
50824          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
50825        )
50826    THEN
50827          xla_ae_lines_pkg.BflowUpgEntry
50828            (p_business_method_code    => l_bflow_method_code
50829            ,p_business_class_code     => l_bflow_class_code
50830            ,p_balance_type            => l_balance_type_code);
50831    ELSE
50832       NULL;
50833 -- No business flow processing for business flow method of NONE.
50834    END IF;
50835 
50836    --
50837    -- call analytical criteria
50838    --
50839    
50840    --
50841    -- call description
50842    --
50843    -- No description or it is inherited.
50844    --
50845    -- call ADRs
50846    -- Bug 4922099
50847    --
50848    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50849         (NVL(l_actual_upg_option, 'N') = 'O') OR
50850         (NVL(l_enc_upg_option, 'N') = 'O')
50851       )
50852    THEN
50853    NULL;
50854    --
50855    --
50856    
50857   l_ccid := AcctDerRule_4(
50858            p_application_id           => p_application_id
50859          , p_ae_header_id             => l_ae_header_id 
50860 , p_source_4 => p_source_4
50861          , x_transaction_coa_id       => l_adr_transaction_coa_id
50862          , x_accounting_coa_id        => l_adr_accounting_coa_id
50863          , x_value_type_code          => l_adr_value_type_code
50864          , p_side                     => 'NA'
50865    );
50866 
50867    xla_ae_lines_pkg.set_ccid(
50868     p_code_combination_id          => l_ccid
50869   , p_value_type_code              => l_adr_value_type_code
50870   , p_transaction_coa_id           => l_adr_transaction_coa_id
50871   , p_accounting_coa_id            => l_adr_accounting_coa_id
50872   , p_adr_code                     => 'CST_DEFAULT'
50873   , p_adr_type_code                => 'S'
50874   , p_component_type               => l_component_type
50875   , p_component_code               => l_component_code
50876   , p_component_type_code          => l_component_type_code
50877   , p_component_appl_id            => l_component_appl_id
50878   , p_amb_context_code             => l_amb_context_code
50879   , p_side                         => 'NA'
50880   );
50881 
50882 
50883    --
50884    --
50885    END IF;
50886    --
50887    -- Bug 4922099
50888    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
50889           (NVL(l_enc_upg_option, 'N') = 'O')
50890         ) AND
50891         (l_bflow_method_code = 'PRIOR_ENTRY')
50892       )
50893    THEN
50894       IF
50895       --
50896       1 = 2
50897       --
50898       THEN
50899       xla_accounting_err_pkg.build_message
50900                                     (p_appli_s_name            => 'XLA'
50901                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50902                                     ,p_token_1                 => 'LINE_NUMBER'
50903                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
50904                                     ,p_token_2                 => 'LINE_TYPE_NAME'
50905                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
50906                                                                              l_component_type
50907                                                                             ,l_component_code
50908                                                                             ,l_component_type_code
50909                                                                             ,l_component_appl_id
50910                                                                             ,l_amb_context_code
50911                                                                             ,l_entity_code
50912                                                                             ,l_event_class_code
50913                                                                            )
50914                                     ,p_token_3                 => 'OWNER'
50915                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
50916                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
50917                                                                           ,p_lookup_code    => l_component_type_code
50918                                                                          )
50919                                     ,p_token_4                 => 'PRODUCT_NAME'
50920                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
50921                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
50922                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
50923                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
50924                                     ,p_ae_header_id            =>  NULL
50925                                        );
50926 
50927         IF (C_LEVEL_ERROR>= g_log_level) THEN
50928                  trace
50929                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50930                       ,p_level    => C_LEVEL_ERROR
50931                       ,p_module   => l_log_module);
50932         END IF;
50933       END IF;
50934    END IF;
50935    --
50936    --
50937    ------------------------------------------------------------------------------------------------
50938    -- 4219869 Business Flow
50939    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
50940    -- Prior Entry.  Currently, the following code is always generated.
50941    ------------------------------------------------------------------------------------------------
50942    XLA_AE_LINES_PKG.ValidateCurrentLine;
50943 
50944    ------------------------------------------------------------------------------------
50945    -- 4219869 Business Flow
50946    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
50947    ------------------------------------------------------------------------------------
50948    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50949 
50950    ----------------------------------------------------------------------------------
50951    -- 4219869 Business Flow
50952    -- Update journal entry status -- Need to generate this within IF <condition>
50953    ----------------------------------------------------------------------------------
50954    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50955          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
50956          ,p_balance_type_code => l_balance_type_code
50957          );
50958 
50959    -------------------------------------------------------------------------------------------
50960    -- 4262811 - Generate the Accrual Reversal lines
50961    -------------------------------------------------------------------------------------------
50962    BEGIN
50963       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
50964                               (g_array_event(p_event_id).array_value_num('header_index'));
50965       IF l_acc_rev_flag IS NULL THEN
50966          l_acc_rev_flag := 'N';
50967       END IF;
50968    EXCEPTION
50969       WHEN OTHERS THEN
50970          l_acc_rev_flag := 'N';
50971    END;
50972    --
50973    IF (l_acc_rev_flag = 'Y') THEN
50974 
50975        -- 4645092  ------------------------------------------------------------------------------
50976        -- To allow MPA report to determine if it should generate report process
50977        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
50978        ------------------------------------------------------------------------------------------
50979 
50980        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
50981        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
50982    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
50983    -- call ADRs
50984    -- Bug 4922099
50985    --
50986    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50987         (NVL(l_actual_upg_option, 'N') = 'O') OR
50988         (NVL(l_enc_upg_option, 'N') = 'O')
50989       )
50990    THEN
50991    NULL;
50992    --
50993    --
50994    
50995   l_ccid := AcctDerRule_4(
50996            p_application_id           => p_application_id
50997          , p_ae_header_id             => l_ae_header_id 
50998 , p_source_4 => p_source_4
50999          , x_transaction_coa_id       => l_adr_transaction_coa_id
51000          , x_accounting_coa_id        => l_adr_accounting_coa_id
51001          , x_value_type_code          => l_adr_value_type_code
51002          , p_side                     => 'NA'
51003    );
51004 
51005    xla_ae_lines_pkg.set_ccid(
51006     p_code_combination_id          => l_ccid
51007   , p_value_type_code              => l_adr_value_type_code
51008   , p_transaction_coa_id           => l_adr_transaction_coa_id
51009   , p_accounting_coa_id            => l_adr_accounting_coa_id
51010   , p_adr_code                     => 'CST_DEFAULT'
51011   , p_adr_type_code                => 'S'
51012   , p_component_type               => l_component_type
51013   , p_component_code               => l_component_code
51014   , p_component_type_code          => l_component_type_code
51015   , p_component_appl_id            => l_component_appl_id
51016   , p_amb_context_code             => l_amb_context_code
51017   , p_side                         => 'NA'
51018   );
51019 
51020 
51021    --
51022    --
51023    END IF;
51024 
51025        --
51026        -- Update the line information that should be overwritten
51027        --
51028        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
51029                                          p_header_num   => 1);
51030        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
51031 
51032        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
51033 
51034        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
51035           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
51036        END IF;
51037 
51038       --
51039       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
51040       --
51041       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
51042           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
51043       ELSE
51044           ---------------------------------------------------------------------------------------------------
51045           -- 4262811a Switch Sign
51046           ---------------------------------------------------------------------------------------------------
51047           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
51048           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
51049                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51050           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
51051                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51052           -- 5132302
51053           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
51054                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51055 
51056       END IF;
51057 
51058       -- 4955764
51059       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51060       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
51061 
51062 
51063       XLA_AE_LINES_PKG.ValidateCurrentLine;
51064       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
51065 
51066       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
51067                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
51068                ,p_balance_type_code => l_balance_type_code);
51069 
51070    END IF;
51071 
51072    -----------------------------------------------------------------------------------------
51073    -- 4262811 Multiperiod Accounting
51074    -----------------------------------------------------------------------------------------
51075      -- No MPA option is assigned.
51076 
51077 
51078 END IF;
51079 END IF;
51080 --
51081 
51082 --
51083 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51084    trace
51085       (p_msg      => 'END of AcctLineType_94'
51086       ,p_level    => C_LEVEL_PROCEDURE
51087       ,p_module   => l_log_module);
51088 END IF;
51089 --
51090 EXCEPTION
51091   WHEN xla_exceptions_pkg.application_exception THEN
51092       RAISE;
51093   WHEN OTHERS THEN
51094        xla_exceptions_pkg.raise_message
51095            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_94');
51096 END AcctLineType_94;
51097 --
51098 
51099 ---------------------------------------
51100 --
51101 -- PRIVATE FUNCTION
51102 --         AcctLineType_95
51103 --
51104 ---------------------------------------
51105 PROCEDURE AcctLineType_95 (
51106   p_application_id        IN NUMBER
51107  ,p_event_id              IN NUMBER
51108  ,p_calculate_acctd_flag  IN VARCHAR2
51109  ,p_calculate_g_l_flag    IN VARCHAR2
51110  ,p_actual_flag           IN OUT VARCHAR2
51111  ,p_balance_type_code     OUT VARCHAR2
51112  ,p_gain_or_loss_ref      OUT VARCHAR2
51113  
51114 --Cost Management Default Account
51115  , p_source_4            IN NUMBER
51116 --DISTRIBUTION_IDENTIFIER
51117  , p_source_11            IN NUMBER
51118 --Distribution Type
51119  , p_source_12            IN VARCHAR2
51120  , p_source_12_meaning    IN VARCHAR2
51121 --Entered Currency Code
51122  , p_source_15            IN VARCHAR2
51123 --Entered Amount
51124  , p_source_18            IN NUMBER
51125 --Currency Conversion Date
51126  , p_source_19            IN DATE
51127 --Currency Conversion Rate
51128  , p_source_20            IN NUMBER
51129 --Currency Conversion Type
51130  , p_source_21            IN VARCHAR2
51131 --Accounted Amount
51132  , p_source_22            IN NUMBER
51133 --Accounting Line Type
51134  , p_source_24            IN NUMBER
51135 )
51136 IS
51137 
51138 l_component_type              VARCHAR2(80);
51139 l_component_code              VARCHAR2(30);
51140 l_component_type_code         VARCHAR2(1);
51141 l_component_appl_id           INTEGER;
51142 l_amb_context_code            VARCHAR2(30);
51143 l_entity_code                 VARCHAR2(30);
51144 l_event_class_code            VARCHAR2(30);
51145 l_ae_header_id                NUMBER;
51146 l_event_type_code             VARCHAR2(30);
51147 l_line_definition_code        VARCHAR2(30);
51148 l_line_definition_owner_code  VARCHAR2(1);
51149 --
51150 -- adr variables
51151 l_segment                     VARCHAR2(30);
51152 l_ccid                        NUMBER;
51153 l_adr_transaction_coa_id      NUMBER;
51154 l_adr_accounting_coa_id       NUMBER;
51155 l_adr_flexfield_segment_code  VARCHAR2(30);
51156 l_adr_flex_value_set_id       NUMBER;
51157 l_adr_value_type_code         VARCHAR2(30);
51158 l_adr_value_combination_id    NUMBER;
51159 l_adr_value_segment_code      VARCHAR2(30);
51160 
51161 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
51162 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
51163 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
51164 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
51165 
51166 -- 4262811 Variables ------------------------------------------------------------------------------------------
51167 l_entered_amt_idx             NUMBER;
51168 l_accted_amt_idx              NUMBER;
51169 l_acc_rev_flag                VARCHAR2(1);
51170 l_accrual_line_num            NUMBER;
51171 l_tmp_amt                     NUMBER;
51172 l_acc_rev_natural_side_code   VARCHAR2(1);
51173 
51174 l_num_entries                 NUMBER;
51175 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
51176 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
51177 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
51178 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
51179 l_recog_line_1                NUMBER;
51180 l_recog_line_2                NUMBER;
51181 
51182 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
51183 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
51184 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
51185 
51186 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
51187 
51188 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
51189 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
51190 
51191 ---------------------------------------------------------------------------------------------------------------
51192 
51193 
51194 --
51195 -- bulk performance
51196 --
51197 l_balance_type_code           VARCHAR2(1);
51198 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
51199 l_log_module                  VARCHAR2(240);
51200 
51201 --
51202 -- Upgrade strategy
51203 --
51204 l_actual_upg_option           VARCHAR2(1);
51205 l_enc_upg_option           VARCHAR2(1);
51206 
51207 --
51208 BEGIN
51209 --
51210 IF g_log_enabled THEN
51211       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_95';
51212 END IF;
51213 --
51214 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51215 
51216       trace
51217          (p_msg      => 'BEGIN of AcctLineType_95'
51218          ,p_level    => C_LEVEL_PROCEDURE
51219          ,p_module   => l_log_module);
51220 
51221 END IF;
51222 --
51223 l_component_type             := 'AMB_JLT';
51224 l_component_code             := 'INTERORG_PROFIT_OPM';
51225 l_component_type_code        := 'S';
51226 l_component_appl_id          :=  707;
51227 l_amb_context_code           := 'DEFAULT';
51228 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
51229 l_event_class_code           := 'DIR_INTERORG_SHIP';
51230 l_event_type_code            := 'DIR_INTERORG_SHIP_ALL';
51231 l_line_definition_owner_code := 'S';
51232 l_line_definition_code       := 'DIRECT_INTERORG_SHIP';
51233 --
51234 l_balance_type_code          := 'A';
51235 l_segment                     := NULL;
51236 l_ccid                        := NULL;
51237 l_adr_transaction_coa_id      := NULL;
51238 l_adr_accounting_coa_id       := NULL;
51239 l_adr_flexfield_segment_code  := NULL;
51240 l_adr_flex_value_set_id       := NULL;
51241 l_adr_value_type_code         := NULL;
51242 l_adr_value_combination_id    := NULL;
51243 l_adr_value_segment_code      := NULL;
51244 
51245 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
51246 l_bflow_class_code           := '';    -- 4219869 Business Flow
51247 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
51248 l_budgetary_control_flag     := 'N';
51249 
51250 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
51251 l_bflow_applied_to_amt       := NULL; -- 5132302
51252 l_entered_amt_idx            := NULL;          -- 4262811
51253 l_accted_amt_idx             := NULL;          -- 4262811
51254 l_acc_rev_flag               := NULL;          -- 4262811
51255 l_accrual_line_num           := NULL;          -- 4262811
51256 l_tmp_amt                    := NULL;          -- 4262811
51257 --
51258  
51259 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
51260     l_balance_type_code <> 'B' THEN
51261 IF NVL(p_source_24,9E125) =  34
51262  THEN 
51263 
51264    --
51265    XLA_AE_LINES_PKG.SetNewLine;
51266 
51267    p_balance_type_code          := l_balance_type_code;
51268    -- set the flag so later we will know whether the gain loss line needs to be created
51269    
51270    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
51271      p_actual_flag :='A';
51272    END IF;
51273 
51274    --
51275    -- bulk performance
51276    --
51277    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
51278                                       p_header_num   => 0); -- 4262811
51279    --
51280    -- set accounting line options
51281    --
51282    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
51283            p_natural_side_code          => 'D'
51284          , p_gain_or_loss_flag          => 'N'
51285          , p_gl_transfer_mode_code      => 'S'
51286          , p_acct_entry_type_code       => 'A'
51287          , p_switch_side_flag           => 'Y'
51288          , p_merge_duplicate_code       => 'N'
51289          );
51290    --
51291    l_acc_rev_natural_side_code := 'C';  -- 4262811
51292    -- 
51293    --
51294    -- set accounting line type info
51295    --
51296    xla_ae_lines_pkg.SetAcctLineType
51297       (p_component_type             => l_component_type
51298       ,p_event_type_code            => l_event_type_code
51299       ,p_line_definition_owner_code => l_line_definition_owner_code
51300       ,p_line_definition_code       => l_line_definition_code
51301       ,p_accounting_line_code       => l_component_code
51302       ,p_accounting_line_type_code  => l_component_type_code
51303       ,p_accounting_line_appl_id    => l_component_appl_id
51304       ,p_amb_context_code           => l_amb_context_code
51305       ,p_entity_code                => l_entity_code
51306       ,p_event_class_code           => l_event_class_code);
51307    --
51308    -- set accounting class
51309    --
51310    xla_ae_lines_pkg.SetAcctClass(
51311            p_accounting_class_code  => 'INTERORG_PROFIT'
51312          , p_ae_header_id           => l_ae_header_id
51313          );
51314 
51315    --
51316    -- set rounding class
51317    --
51318    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
51319                       'INTERORG_PROFIT';
51320 
51321    --
51322    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
51323    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
51324    --
51325    -- bulk performance
51326    --
51327    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
51328 
51329    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
51330       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
51331 
51332    -- 4955764
51333    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51334       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
51335 
51336    -- 4458381 Public Sector Enh
51337    
51338    --
51339    -- set accounting attributes for the line type
51340    --
51341    l_entered_amt_idx := 3;
51342    l_accted_amt_idx  := 8;
51343    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
51344    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
51345    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
51346    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
51347    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
51348    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
51349    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
51350    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
51351    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
51352    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
51353    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
51354    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
51355    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
51356    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
51357    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
51358    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
51359    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
51360 
51361    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
51362    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
51363 
51364    ---------------------------------------------------------------------------------------------------------------
51365    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
51366    ---------------------------------------------------------------------------------------------------------------
51367    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
51368 
51369    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51370    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51371 
51372    IF xla_accounting_cache_pkg.GetValueChar
51373          (p_source_code         => 'LEDGER_CATEGORY_CODE'
51374          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
51375    AND l_bflow_method_code = 'PRIOR_ENTRY'
51376 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
51377    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
51378          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
51379        )
51380    THEN
51381          xla_ae_lines_pkg.BflowUpgEntry
51382            (p_business_method_code    => l_bflow_method_code
51383            ,p_business_class_code     => l_bflow_class_code
51384            ,p_balance_type            => l_balance_type_code);
51385    ELSE
51386       NULL;
51387 -- No business flow processing for business flow method of NONE.
51388    END IF;
51389 
51390    --
51391    -- call analytical criteria
51392    --
51393    
51394    --
51395    -- call description
51396    --
51397    -- No description or it is inherited.
51398    --
51399    -- call ADRs
51400    -- Bug 4922099
51401    --
51402    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
51403         (NVL(l_actual_upg_option, 'N') = 'O') OR
51404         (NVL(l_enc_upg_option, 'N') = 'O')
51405       )
51406    THEN
51407    NULL;
51408    --
51409    --
51410    
51411   l_ccid := AcctDerRule_4(
51412            p_application_id           => p_application_id
51413          , p_ae_header_id             => l_ae_header_id 
51414 , p_source_4 => p_source_4
51415          , x_transaction_coa_id       => l_adr_transaction_coa_id
51416          , x_accounting_coa_id        => l_adr_accounting_coa_id
51417          , x_value_type_code          => l_adr_value_type_code
51418          , p_side                     => 'NA'
51419    );
51420 
51421    xla_ae_lines_pkg.set_ccid(
51422     p_code_combination_id          => l_ccid
51423   , p_value_type_code              => l_adr_value_type_code
51424   , p_transaction_coa_id           => l_adr_transaction_coa_id
51425   , p_accounting_coa_id            => l_adr_accounting_coa_id
51426   , p_adr_code                     => 'CST_DEFAULT'
51427   , p_adr_type_code                => 'S'
51428   , p_component_type               => l_component_type
51429   , p_component_code               => l_component_code
51430   , p_component_type_code          => l_component_type_code
51431   , p_component_appl_id            => l_component_appl_id
51432   , p_amb_context_code             => l_amb_context_code
51433   , p_side                         => 'NA'
51434   );
51435 
51436 
51437    --
51438    --
51439    END IF;
51440    --
51441    -- Bug 4922099
51442    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
51443           (NVL(l_enc_upg_option, 'N') = 'O')
51444         ) AND
51445         (l_bflow_method_code = 'PRIOR_ENTRY')
51446       )
51447    THEN
51448       IF
51449       --
51450       1 = 2
51451       --
51452       THEN
51453       xla_accounting_err_pkg.build_message
51454                                     (p_appli_s_name            => 'XLA'
51455                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
51456                                     ,p_token_1                 => 'LINE_NUMBER'
51457                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
51458                                     ,p_token_2                 => 'LINE_TYPE_NAME'
51459                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
51460                                                                              l_component_type
51461                                                                             ,l_component_code
51462                                                                             ,l_component_type_code
51463                                                                             ,l_component_appl_id
51464                                                                             ,l_amb_context_code
51465                                                                             ,l_entity_code
51466                                                                             ,l_event_class_code
51467                                                                            )
51468                                     ,p_token_3                 => 'OWNER'
51469                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
51470                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
51471                                                                           ,p_lookup_code    => l_component_type_code
51472                                                                          )
51473                                     ,p_token_4                 => 'PRODUCT_NAME'
51474                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
51475                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
51476                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
51477                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
51478                                     ,p_ae_header_id            =>  NULL
51479                                        );
51480 
51481         IF (C_LEVEL_ERROR>= g_log_level) THEN
51482                  trace
51483                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
51484                       ,p_level    => C_LEVEL_ERROR
51485                       ,p_module   => l_log_module);
51486         END IF;
51487       END IF;
51488    END IF;
51489    --
51490    --
51491    ------------------------------------------------------------------------------------------------
51492    -- 4219869 Business Flow
51493    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
51494    -- Prior Entry.  Currently, the following code is always generated.
51495    ------------------------------------------------------------------------------------------------
51496    XLA_AE_LINES_PKG.ValidateCurrentLine;
51497 
51498    ------------------------------------------------------------------------------------
51499    -- 4219869 Business Flow
51500    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
51501    ------------------------------------------------------------------------------------
51502    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
51503 
51504    ----------------------------------------------------------------------------------
51505    -- 4219869 Business Flow
51506    -- Update journal entry status -- Need to generate this within IF <condition>
51507    ----------------------------------------------------------------------------------
51508    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
51509          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
51510          ,p_balance_type_code => l_balance_type_code
51511          );
51512 
51513    -------------------------------------------------------------------------------------------
51514    -- 4262811 - Generate the Accrual Reversal lines
51515    -------------------------------------------------------------------------------------------
51516    BEGIN
51517       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
51518                               (g_array_event(p_event_id).array_value_num('header_index'));
51519       IF l_acc_rev_flag IS NULL THEN
51520          l_acc_rev_flag := 'N';
51521       END IF;
51522    EXCEPTION
51523       WHEN OTHERS THEN
51524          l_acc_rev_flag := 'N';
51525    END;
51526    --
51527    IF (l_acc_rev_flag = 'Y') THEN
51528 
51529        -- 4645092  ------------------------------------------------------------------------------
51530        -- To allow MPA report to determine if it should generate report process
51531        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
51532        ------------------------------------------------------------------------------------------
51533 
51534        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
51535        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
51536    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
51537    -- call ADRs
51538    -- Bug 4922099
51539    --
51540    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
51541         (NVL(l_actual_upg_option, 'N') = 'O') OR
51542         (NVL(l_enc_upg_option, 'N') = 'O')
51543       )
51544    THEN
51545    NULL;
51546    --
51547    --
51548    
51549   l_ccid := AcctDerRule_4(
51550            p_application_id           => p_application_id
51551          , p_ae_header_id             => l_ae_header_id 
51552 , p_source_4 => p_source_4
51553          , x_transaction_coa_id       => l_adr_transaction_coa_id
51554          , x_accounting_coa_id        => l_adr_accounting_coa_id
51555          , x_value_type_code          => l_adr_value_type_code
51556          , p_side                     => 'NA'
51557    );
51558 
51559    xla_ae_lines_pkg.set_ccid(
51560     p_code_combination_id          => l_ccid
51561   , p_value_type_code              => l_adr_value_type_code
51562   , p_transaction_coa_id           => l_adr_transaction_coa_id
51563   , p_accounting_coa_id            => l_adr_accounting_coa_id
51564   , p_adr_code                     => 'CST_DEFAULT'
51565   , p_adr_type_code                => 'S'
51566   , p_component_type               => l_component_type
51567   , p_component_code               => l_component_code
51568   , p_component_type_code          => l_component_type_code
51569   , p_component_appl_id            => l_component_appl_id
51570   , p_amb_context_code             => l_amb_context_code
51571   , p_side                         => 'NA'
51572   );
51573 
51574 
51575    --
51576    --
51577    END IF;
51578 
51579        --
51580        -- Update the line information that should be overwritten
51581        --
51582        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
51583                                          p_header_num   => 1);
51584        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
51585 
51586        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
51587 
51588        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
51589           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
51590        END IF;
51591 
51592       --
51593       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
51594       --
51595       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
51596           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
51597       ELSE
51598           ---------------------------------------------------------------------------------------------------
51599           -- 4262811a Switch Sign
51600           ---------------------------------------------------------------------------------------------------
51601           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
51602           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
51603                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51604           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
51605                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51606           -- 5132302
51607           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
51608                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51609 
51610       END IF;
51611 
51612       -- 4955764
51613       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51614       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
51615 
51616 
51617       XLA_AE_LINES_PKG.ValidateCurrentLine;
51618       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
51619 
51620       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
51621                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
51622                ,p_balance_type_code => l_balance_type_code);
51623 
51624    END IF;
51625 
51626    -----------------------------------------------------------------------------------------
51627    -- 4262811 Multiperiod Accounting
51628    -----------------------------------------------------------------------------------------
51629      -- No MPA option is assigned.
51630 
51631 
51632 END IF;
51633 END IF;
51634 --
51635 
51636 --
51637 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51638    trace
51639       (p_msg      => 'END of AcctLineType_95'
51640       ,p_level    => C_LEVEL_PROCEDURE
51641       ,p_module   => l_log_module);
51642 END IF;
51643 --
51644 EXCEPTION
51645   WHEN xla_exceptions_pkg.application_exception THEN
51646       RAISE;
51647   WHEN OTHERS THEN
51648        xla_exceptions_pkg.raise_message
51649            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_95');
51650 END AcctLineType_95;
51651 --
51652 
51653 ---------------------------------------
51654 --
51655 -- PRIVATE FUNCTION
51656 --         AcctLineType_96
51657 --
51658 ---------------------------------------
51659 PROCEDURE AcctLineType_96 (
51660   p_application_id        IN NUMBER
51661  ,p_event_id              IN NUMBER
51662  ,p_calculate_acctd_flag  IN VARCHAR2
51663  ,p_calculate_g_l_flag    IN VARCHAR2
51664  ,p_actual_flag           IN OUT VARCHAR2
51665  ,p_balance_type_code     OUT VARCHAR2
51666  ,p_gain_or_loss_ref      OUT VARCHAR2
51667  
51668 --Cost Management Default Account
51669  , p_source_4            IN NUMBER
51670 --DISTRIBUTION_IDENTIFIER
51671  , p_source_11            IN NUMBER
51672 --Distribution Type
51673  , p_source_12            IN VARCHAR2
51674  , p_source_12_meaning    IN VARCHAR2
51675 --Entered Currency Code
51676  , p_source_15            IN VARCHAR2
51677 --Entered Amount
51678  , p_source_18            IN NUMBER
51679 --Currency Conversion Date
51680  , p_source_19            IN DATE
51681 --Currency Conversion Rate
51682  , p_source_20            IN NUMBER
51683 --Currency Conversion Type
51684  , p_source_21            IN VARCHAR2
51685 --Accounted Amount
51686  , p_source_22            IN NUMBER
51687 --Accounting Line Type
51688  , p_source_24            IN NUMBER
51689 )
51690 IS
51691 
51692 l_component_type              VARCHAR2(80);
51693 l_component_code              VARCHAR2(30);
51694 l_component_type_code         VARCHAR2(1);
51695 l_component_appl_id           INTEGER;
51696 l_amb_context_code            VARCHAR2(30);
51697 l_entity_code                 VARCHAR2(30);
51698 l_event_class_code            VARCHAR2(30);
51699 l_ae_header_id                NUMBER;
51700 l_event_type_code             VARCHAR2(30);
51701 l_line_definition_code        VARCHAR2(30);
51702 l_line_definition_owner_code  VARCHAR2(1);
51703 --
51704 -- adr variables
51705 l_segment                     VARCHAR2(30);
51706 l_ccid                        NUMBER;
51707 l_adr_transaction_coa_id      NUMBER;
51708 l_adr_accounting_coa_id       NUMBER;
51709 l_adr_flexfield_segment_code  VARCHAR2(30);
51710 l_adr_flex_value_set_id       NUMBER;
51711 l_adr_value_type_code         VARCHAR2(30);
51712 l_adr_value_combination_id    NUMBER;
51713 l_adr_value_segment_code      VARCHAR2(30);
51714 
51715 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
51716 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
51717 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
51718 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
51719 
51720 -- 4262811 Variables ------------------------------------------------------------------------------------------
51721 l_entered_amt_idx             NUMBER;
51722 l_accted_amt_idx              NUMBER;
51723 l_acc_rev_flag                VARCHAR2(1);
51724 l_accrual_line_num            NUMBER;
51725 l_tmp_amt                     NUMBER;
51726 l_acc_rev_natural_side_code   VARCHAR2(1);
51727 
51728 l_num_entries                 NUMBER;
51729 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
51730 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
51731 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
51732 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
51733 l_recog_line_1                NUMBER;
51734 l_recog_line_2                NUMBER;
51735 
51736 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
51737 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
51738 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
51739 
51740 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
51741 
51742 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
51743 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
51744 
51745 ---------------------------------------------------------------------------------------------------------------
51746 
51747 
51748 --
51749 -- bulk performance
51750 --
51751 l_balance_type_code           VARCHAR2(1);
51752 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
51753 l_log_module                  VARCHAR2(240);
51754 
51755 --
51756 -- Upgrade strategy
51757 --
51758 l_actual_upg_option           VARCHAR2(1);
51759 l_enc_upg_option           VARCHAR2(1);
51760 
51761 --
51762 BEGIN
51763 --
51764 IF g_log_enabled THEN
51765       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_96';
51766 END IF;
51767 --
51768 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51769 
51770       trace
51771          (p_msg      => 'BEGIN of AcctLineType_96'
51772          ,p_level    => C_LEVEL_PROCEDURE
51773          ,p_module   => l_log_module);
51774 
51775 END IF;
51776 --
51777 l_component_type             := 'AMB_JLT';
51778 l_component_code             := 'INTERORG_RECEIVABLES';
51779 l_component_type_code        := 'S';
51780 l_component_appl_id          :=  707;
51781 l_amb_context_code           := 'DEFAULT';
51782 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
51783 l_event_class_code           := 'USER_DEFINE';
51784 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
51785 l_line_definition_owner_code := 'S';
51786 l_line_definition_code       := 'USER_FOB_SHIP_SENDER_SHIP_NOTP';
51787 --
51788 l_balance_type_code          := 'A';
51789 l_segment                     := NULL;
51790 l_ccid                        := NULL;
51791 l_adr_transaction_coa_id      := NULL;
51792 l_adr_accounting_coa_id       := NULL;
51793 l_adr_flexfield_segment_code  := NULL;
51794 l_adr_flex_value_set_id       := NULL;
51795 l_adr_value_type_code         := NULL;
51796 l_adr_value_combination_id    := NULL;
51797 l_adr_value_segment_code      := NULL;
51798 
51799 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
51800 l_bflow_class_code           := '';    -- 4219869 Business Flow
51801 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
51802 l_budgetary_control_flag     := 'N';
51803 
51804 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
51805 l_bflow_applied_to_amt       := NULL; -- 5132302
51806 l_entered_amt_idx            := NULL;          -- 4262811
51807 l_accted_amt_idx             := NULL;          -- 4262811
51808 l_acc_rev_flag               := NULL;          -- 4262811
51809 l_accrual_line_num           := NULL;          -- 4262811
51810 l_tmp_amt                    := NULL;          -- 4262811
51811 --
51812  
51813 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
51814     l_balance_type_code <> 'B' THEN
51815 IF NVL(p_source_24,9E125) =  10
51816  THEN 
51817 
51818    --
51819    XLA_AE_LINES_PKG.SetNewLine;
51820 
51821    p_balance_type_code          := l_balance_type_code;
51822    -- set the flag so later we will know whether the gain loss line needs to be created
51823    
51824    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
51825      p_actual_flag :='A';
51826    END IF;
51827 
51828    --
51829    -- bulk performance
51830    --
51831    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
51832                                       p_header_num   => 0); -- 4262811
51833    --
51834    -- set accounting line options
51835    --
51836    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
51837            p_natural_side_code          => 'D'
51838          , p_gain_or_loss_flag          => 'N'
51839          , p_gl_transfer_mode_code      => 'S'
51840          , p_acct_entry_type_code       => 'A'
51841          , p_switch_side_flag           => 'Y'
51842          , p_merge_duplicate_code       => 'N'
51843          );
51844    --
51845    l_acc_rev_natural_side_code := 'C';  -- 4262811
51846    -- 
51847    --
51848    -- set accounting line type info
51849    --
51850    xla_ae_lines_pkg.SetAcctLineType
51851       (p_component_type             => l_component_type
51852       ,p_event_type_code            => l_event_type_code
51853       ,p_line_definition_owner_code => l_line_definition_owner_code
51854       ,p_line_definition_code       => l_line_definition_code
51855       ,p_accounting_line_code       => l_component_code
51856       ,p_accounting_line_type_code  => l_component_type_code
51857       ,p_accounting_line_appl_id    => l_component_appl_id
51858       ,p_amb_context_code           => l_amb_context_code
51859       ,p_entity_code                => l_entity_code
51860       ,p_event_class_code           => l_event_class_code);
51861    --
51862    -- set accounting class
51863    --
51864    xla_ae_lines_pkg.SetAcctClass(
51865            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
51866          , p_ae_header_id           => l_ae_header_id
51867          );
51868 
51869    --
51870    -- set rounding class
51871    --
51872    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
51873                       'INTERORG_RECEIVABLES';
51874 
51875    --
51876    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
51877    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
51878    --
51879    -- bulk performance
51880    --
51881    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
51882 
51883    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
51884       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
51885 
51886    -- 4955764
51887    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51888       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
51889 
51890    -- 4458381 Public Sector Enh
51891    
51892    --
51893    -- set accounting attributes for the line type
51894    --
51895    l_entered_amt_idx := 3;
51896    l_accted_amt_idx  := 8;
51897    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
51898    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
51899    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
51900    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
51901    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
51902    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
51903    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
51904    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
51905    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
51906    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
51907    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
51908    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
51909    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
51910    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
51911    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
51912    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
51913    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
51914 
51915    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
51916    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
51917 
51918    ---------------------------------------------------------------------------------------------------------------
51919    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
51920    ---------------------------------------------------------------------------------------------------------------
51921    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
51922 
51923    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51924    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51925 
51926    IF xla_accounting_cache_pkg.GetValueChar
51927          (p_source_code         => 'LEDGER_CATEGORY_CODE'
51928          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
51929    AND l_bflow_method_code = 'PRIOR_ENTRY'
51930 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
51931    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
51932          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
51933        )
51934    THEN
51935          xla_ae_lines_pkg.BflowUpgEntry
51936            (p_business_method_code    => l_bflow_method_code
51937            ,p_business_class_code     => l_bflow_class_code
51938            ,p_balance_type            => l_balance_type_code);
51939    ELSE
51940       NULL;
51941 -- No business flow processing for business flow method of NONE.
51942    END IF;
51943 
51944    --
51945    -- call analytical criteria
51946    --
51947    
51948    --
51949    -- call description
51950    --
51951    -- No description or it is inherited.
51952    --
51953    -- call ADRs
51954    -- Bug 4922099
51955    --
51956    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
51957         (NVL(l_actual_upg_option, 'N') = 'O') OR
51958         (NVL(l_enc_upg_option, 'N') = 'O')
51959       )
51960    THEN
51961    NULL;
51962    --
51963    --
51964    
51965   l_ccid := AcctDerRule_4(
51966            p_application_id           => p_application_id
51967          , p_ae_header_id             => l_ae_header_id 
51968 , p_source_4 => p_source_4
51969          , x_transaction_coa_id       => l_adr_transaction_coa_id
51970          , x_accounting_coa_id        => l_adr_accounting_coa_id
51971          , x_value_type_code          => l_adr_value_type_code
51972          , p_side                     => 'NA'
51973    );
51974 
51975    xla_ae_lines_pkg.set_ccid(
51976     p_code_combination_id          => l_ccid
51977   , p_value_type_code              => l_adr_value_type_code
51978   , p_transaction_coa_id           => l_adr_transaction_coa_id
51979   , p_accounting_coa_id            => l_adr_accounting_coa_id
51980   , p_adr_code                     => 'CST_DEFAULT'
51981   , p_adr_type_code                => 'S'
51982   , p_component_type               => l_component_type
51983   , p_component_code               => l_component_code
51984   , p_component_type_code          => l_component_type_code
51985   , p_component_appl_id            => l_component_appl_id
51986   , p_amb_context_code             => l_amb_context_code
51987   , p_side                         => 'NA'
51988   );
51989 
51990 
51991    --
51992    --
51993    END IF;
51994    --
51995    -- Bug 4922099
51996    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
51997           (NVL(l_enc_upg_option, 'N') = 'O')
51998         ) AND
51999         (l_bflow_method_code = 'PRIOR_ENTRY')
52000       )
52001    THEN
52002       IF
52003       --
52004       1 = 2
52005       --
52006       THEN
52007       xla_accounting_err_pkg.build_message
52008                                     (p_appli_s_name            => 'XLA'
52009                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52010                                     ,p_token_1                 => 'LINE_NUMBER'
52011                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
52012                                     ,p_token_2                 => 'LINE_TYPE_NAME'
52013                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
52014                                                                              l_component_type
52015                                                                             ,l_component_code
52016                                                                             ,l_component_type_code
52017                                                                             ,l_component_appl_id
52018                                                                             ,l_amb_context_code
52019                                                                             ,l_entity_code
52020                                                                             ,l_event_class_code
52021                                                                            )
52022                                     ,p_token_3                 => 'OWNER'
52023                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
52024                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
52025                                                                           ,p_lookup_code    => l_component_type_code
52026                                                                          )
52027                                     ,p_token_4                 => 'PRODUCT_NAME'
52028                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
52029                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
52030                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
52031                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
52032                                     ,p_ae_header_id            =>  NULL
52033                                        );
52034 
52035         IF (C_LEVEL_ERROR>= g_log_level) THEN
52036                  trace
52037                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52038                       ,p_level    => C_LEVEL_ERROR
52039                       ,p_module   => l_log_module);
52040         END IF;
52041       END IF;
52042    END IF;
52043    --
52044    --
52045    ------------------------------------------------------------------------------------------------
52046    -- 4219869 Business Flow
52047    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
52048    -- Prior Entry.  Currently, the following code is always generated.
52049    ------------------------------------------------------------------------------------------------
52050    XLA_AE_LINES_PKG.ValidateCurrentLine;
52051 
52052    ------------------------------------------------------------------------------------
52053    -- 4219869 Business Flow
52054    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
52055    ------------------------------------------------------------------------------------
52056    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52057 
52058    ----------------------------------------------------------------------------------
52059    -- 4219869 Business Flow
52060    -- Update journal entry status -- Need to generate this within IF <condition>
52061    ----------------------------------------------------------------------------------
52062    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52063          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
52064          ,p_balance_type_code => l_balance_type_code
52065          );
52066 
52067    -------------------------------------------------------------------------------------------
52068    -- 4262811 - Generate the Accrual Reversal lines
52069    -------------------------------------------------------------------------------------------
52070    BEGIN
52071       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
52072                               (g_array_event(p_event_id).array_value_num('header_index'));
52073       IF l_acc_rev_flag IS NULL THEN
52074          l_acc_rev_flag := 'N';
52075       END IF;
52076    EXCEPTION
52077       WHEN OTHERS THEN
52078          l_acc_rev_flag := 'N';
52079    END;
52080    --
52081    IF (l_acc_rev_flag = 'Y') THEN
52082 
52083        -- 4645092  ------------------------------------------------------------------------------
52084        -- To allow MPA report to determine if it should generate report process
52085        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
52086        ------------------------------------------------------------------------------------------
52087 
52088        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
52089        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
52090    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
52091    -- call ADRs
52092    -- Bug 4922099
52093    --
52094    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
52095         (NVL(l_actual_upg_option, 'N') = 'O') OR
52096         (NVL(l_enc_upg_option, 'N') = 'O')
52097       )
52098    THEN
52099    NULL;
52100    --
52101    --
52102    
52103   l_ccid := AcctDerRule_4(
52104            p_application_id           => p_application_id
52105          , p_ae_header_id             => l_ae_header_id 
52106 , p_source_4 => p_source_4
52107          , x_transaction_coa_id       => l_adr_transaction_coa_id
52108          , x_accounting_coa_id        => l_adr_accounting_coa_id
52109          , x_value_type_code          => l_adr_value_type_code
52110          , p_side                     => 'NA'
52111    );
52112 
52113    xla_ae_lines_pkg.set_ccid(
52114     p_code_combination_id          => l_ccid
52115   , p_value_type_code              => l_adr_value_type_code
52116   , p_transaction_coa_id           => l_adr_transaction_coa_id
52117   , p_accounting_coa_id            => l_adr_accounting_coa_id
52118   , p_adr_code                     => 'CST_DEFAULT'
52119   , p_adr_type_code                => 'S'
52120   , p_component_type               => l_component_type
52121   , p_component_code               => l_component_code
52122   , p_component_type_code          => l_component_type_code
52123   , p_component_appl_id            => l_component_appl_id
52124   , p_amb_context_code             => l_amb_context_code
52125   , p_side                         => 'NA'
52126   );
52127 
52128 
52129    --
52130    --
52131    END IF;
52132 
52133        --
52134        -- Update the line information that should be overwritten
52135        --
52136        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
52137                                          p_header_num   => 1);
52138        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
52139 
52140        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
52141 
52142        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
52143           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
52144        END IF;
52145 
52146       --
52147       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
52148       --
52149       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
52150           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
52151       ELSE
52152           ---------------------------------------------------------------------------------------------------
52153           -- 4262811a Switch Sign
52154           ---------------------------------------------------------------------------------------------------
52155           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
52156           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52157                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52158           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52159                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52160           -- 5132302
52161           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
52162                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52163 
52164       END IF;
52165 
52166       -- 4955764
52167       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52168       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
52169 
52170 
52171       XLA_AE_LINES_PKG.ValidateCurrentLine;
52172       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52173 
52174       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52175                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
52176                ,p_balance_type_code => l_balance_type_code);
52177 
52178    END IF;
52179 
52180    -----------------------------------------------------------------------------------------
52181    -- 4262811 Multiperiod Accounting
52182    -----------------------------------------------------------------------------------------
52183      -- No MPA option is assigned.
52184 
52185 
52186 END IF;
52187 END IF;
52188 --
52189 
52190 --
52191 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52192    trace
52193       (p_msg      => 'END of AcctLineType_96'
52194       ,p_level    => C_LEVEL_PROCEDURE
52195       ,p_module   => l_log_module);
52196 END IF;
52197 --
52198 EXCEPTION
52199   WHEN xla_exceptions_pkg.application_exception THEN
52200       RAISE;
52201   WHEN OTHERS THEN
52202        xla_exceptions_pkg.raise_message
52203            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_96');
52204 END AcctLineType_96;
52205 --
52206 
52207 ---------------------------------------
52208 --
52209 -- PRIVATE FUNCTION
52210 --         AcctLineType_97
52211 --
52212 ---------------------------------------
52213 PROCEDURE AcctLineType_97 (
52214   p_application_id        IN NUMBER
52215  ,p_event_id              IN NUMBER
52216  ,p_calculate_acctd_flag  IN VARCHAR2
52217  ,p_calculate_g_l_flag    IN VARCHAR2
52218  ,p_actual_flag           IN OUT VARCHAR2
52219  ,p_balance_type_code     OUT VARCHAR2
52220  ,p_gain_or_loss_ref      OUT VARCHAR2
52221  
52222 --Cost Management Default Account
52223  , p_source_4            IN NUMBER
52224 --DISTRIBUTION_IDENTIFIER
52225  , p_source_11            IN NUMBER
52226 --Distribution Type
52227  , p_source_12            IN VARCHAR2
52228  , p_source_12_meaning    IN VARCHAR2
52229 --Entered Currency Code
52230  , p_source_15            IN VARCHAR2
52231 --Entered Amount
52232  , p_source_18            IN NUMBER
52233 --Currency Conversion Date
52234  , p_source_19            IN DATE
52235 --Currency Conversion Rate
52236  , p_source_20            IN NUMBER
52237 --Currency Conversion Type
52238  , p_source_21            IN VARCHAR2
52239 --Accounted Amount
52240  , p_source_22            IN NUMBER
52241 --Accounting Line Type
52242  , p_source_24            IN NUMBER
52243 )
52244 IS
52245 
52246 l_component_type              VARCHAR2(80);
52247 l_component_code              VARCHAR2(30);
52248 l_component_type_code         VARCHAR2(1);
52249 l_component_appl_id           INTEGER;
52250 l_amb_context_code            VARCHAR2(30);
52251 l_entity_code                 VARCHAR2(30);
52252 l_event_class_code            VARCHAR2(30);
52253 l_ae_header_id                NUMBER;
52254 l_event_type_code             VARCHAR2(30);
52255 l_line_definition_code        VARCHAR2(30);
52256 l_line_definition_owner_code  VARCHAR2(1);
52257 --
52258 -- adr variables
52259 l_segment                     VARCHAR2(30);
52260 l_ccid                        NUMBER;
52261 l_adr_transaction_coa_id      NUMBER;
52262 l_adr_accounting_coa_id       NUMBER;
52263 l_adr_flexfield_segment_code  VARCHAR2(30);
52264 l_adr_flex_value_set_id       NUMBER;
52265 l_adr_value_type_code         VARCHAR2(30);
52266 l_adr_value_combination_id    NUMBER;
52267 l_adr_value_segment_code      VARCHAR2(30);
52268 
52269 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
52270 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
52271 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
52272 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
52273 
52274 -- 4262811 Variables ------------------------------------------------------------------------------------------
52275 l_entered_amt_idx             NUMBER;
52276 l_accted_amt_idx              NUMBER;
52277 l_acc_rev_flag                VARCHAR2(1);
52278 l_accrual_line_num            NUMBER;
52279 l_tmp_amt                     NUMBER;
52280 l_acc_rev_natural_side_code   VARCHAR2(1);
52281 
52282 l_num_entries                 NUMBER;
52283 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
52284 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
52285 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
52286 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
52287 l_recog_line_1                NUMBER;
52288 l_recog_line_2                NUMBER;
52289 
52290 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
52291 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
52292 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
52293 
52294 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
52295 
52296 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
52297 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
52298 
52299 ---------------------------------------------------------------------------------------------------------------
52300 
52301 
52302 --
52303 -- bulk performance
52304 --
52305 l_balance_type_code           VARCHAR2(1);
52306 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
52307 l_log_module                  VARCHAR2(240);
52308 
52309 --
52310 -- Upgrade strategy
52311 --
52312 l_actual_upg_option           VARCHAR2(1);
52313 l_enc_upg_option           VARCHAR2(1);
52314 
52315 --
52316 BEGIN
52317 --
52318 IF g_log_enabled THEN
52319       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_97';
52320 END IF;
52321 --
52322 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52323 
52324       trace
52325          (p_msg      => 'BEGIN of AcctLineType_97'
52326          ,p_level    => C_LEVEL_PROCEDURE
52327          ,p_module   => l_log_module);
52328 
52329 END IF;
52330 --
52331 l_component_type             := 'AMB_JLT';
52332 l_component_code             := 'INTERORG_RECEIVABLES';
52333 l_component_type_code        := 'S';
52334 l_component_appl_id          :=  707;
52335 l_amb_context_code           := 'DEFAULT';
52336 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
52337 l_event_class_code           := 'INT_ORDER_TO_EXP';
52338 l_event_type_code            := 'INT_ORDER_TO_EXP_ALL';
52339 l_line_definition_owner_code := 'S';
52340 l_line_definition_code       := 'INT_ORDER_TO_EXP';
52341 --
52342 l_balance_type_code          := 'A';
52343 l_segment                     := NULL;
52344 l_ccid                        := NULL;
52345 l_adr_transaction_coa_id      := NULL;
52346 l_adr_accounting_coa_id       := NULL;
52347 l_adr_flexfield_segment_code  := NULL;
52348 l_adr_flex_value_set_id       := NULL;
52349 l_adr_value_type_code         := NULL;
52350 l_adr_value_combination_id    := NULL;
52351 l_adr_value_segment_code      := NULL;
52352 
52353 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
52354 l_bflow_class_code           := '';    -- 4219869 Business Flow
52355 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
52356 l_budgetary_control_flag     := 'N';
52357 
52358 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
52359 l_bflow_applied_to_amt       := NULL; -- 5132302
52360 l_entered_amt_idx            := NULL;          -- 4262811
52361 l_accted_amt_idx             := NULL;          -- 4262811
52362 l_acc_rev_flag               := NULL;          -- 4262811
52363 l_accrual_line_num           := NULL;          -- 4262811
52364 l_tmp_amt                    := NULL;          -- 4262811
52365 --
52366  
52367 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
52368     l_balance_type_code <> 'B' THEN
52369 IF NVL(p_source_24,9E125) =  10
52370  THEN 
52371 
52372    --
52373    XLA_AE_LINES_PKG.SetNewLine;
52374 
52375    p_balance_type_code          := l_balance_type_code;
52376    -- set the flag so later we will know whether the gain loss line needs to be created
52377    
52378    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
52379      p_actual_flag :='A';
52380    END IF;
52381 
52382    --
52383    -- bulk performance
52384    --
52385    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
52386                                       p_header_num   => 0); -- 4262811
52387    --
52388    -- set accounting line options
52389    --
52390    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
52391            p_natural_side_code          => 'D'
52392          , p_gain_or_loss_flag          => 'N'
52393          , p_gl_transfer_mode_code      => 'S'
52394          , p_acct_entry_type_code       => 'A'
52395          , p_switch_side_flag           => 'Y'
52396          , p_merge_duplicate_code       => 'N'
52397          );
52398    --
52399    l_acc_rev_natural_side_code := 'C';  -- 4262811
52400    -- 
52401    --
52402    -- set accounting line type info
52403    --
52404    xla_ae_lines_pkg.SetAcctLineType
52405       (p_component_type             => l_component_type
52406       ,p_event_type_code            => l_event_type_code
52407       ,p_line_definition_owner_code => l_line_definition_owner_code
52408       ,p_line_definition_code       => l_line_definition_code
52409       ,p_accounting_line_code       => l_component_code
52410       ,p_accounting_line_type_code  => l_component_type_code
52411       ,p_accounting_line_appl_id    => l_component_appl_id
52412       ,p_amb_context_code           => l_amb_context_code
52413       ,p_entity_code                => l_entity_code
52414       ,p_event_class_code           => l_event_class_code);
52415    --
52416    -- set accounting class
52417    --
52418    xla_ae_lines_pkg.SetAcctClass(
52419            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
52420          , p_ae_header_id           => l_ae_header_id
52421          );
52422 
52423    --
52424    -- set rounding class
52425    --
52426    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
52427                       'INTERORG_RECEIVABLES';
52428 
52429    --
52430    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
52431    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
52432    --
52433    -- bulk performance
52434    --
52435    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
52436 
52437    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
52438       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
52439 
52440    -- 4955764
52441    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52442       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
52443 
52444    -- 4458381 Public Sector Enh
52445    
52446    --
52447    -- set accounting attributes for the line type
52448    --
52449    l_entered_amt_idx := 3;
52450    l_accted_amt_idx  := 8;
52451    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
52452    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
52453    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
52454    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
52455    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
52456    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
52457    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
52458    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
52459    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
52460    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
52461    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
52462    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
52463    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
52464    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
52465    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
52466    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
52467    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
52468 
52469    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
52470    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
52471 
52472    ---------------------------------------------------------------------------------------------------------------
52473    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
52474    ---------------------------------------------------------------------------------------------------------------
52475    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
52476 
52477    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
52478    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
52479 
52480    IF xla_accounting_cache_pkg.GetValueChar
52481          (p_source_code         => 'LEDGER_CATEGORY_CODE'
52482          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
52483    AND l_bflow_method_code = 'PRIOR_ENTRY'
52484 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
52485    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
52486          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
52487        )
52488    THEN
52489          xla_ae_lines_pkg.BflowUpgEntry
52490            (p_business_method_code    => l_bflow_method_code
52491            ,p_business_class_code     => l_bflow_class_code
52492            ,p_balance_type            => l_balance_type_code);
52493    ELSE
52494       NULL;
52495 -- No business flow processing for business flow method of NONE.
52496    END IF;
52497 
52498    --
52499    -- call analytical criteria
52500    --
52501    
52502    --
52503    -- call description
52504    --
52505    -- No description or it is inherited.
52506    --
52507    -- call ADRs
52508    -- Bug 4922099
52509    --
52510    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
52511         (NVL(l_actual_upg_option, 'N') = 'O') OR
52512         (NVL(l_enc_upg_option, 'N') = 'O')
52513       )
52514    THEN
52515    NULL;
52516    --
52517    --
52518    
52519   l_ccid := AcctDerRule_4(
52520            p_application_id           => p_application_id
52521          , p_ae_header_id             => l_ae_header_id 
52522 , p_source_4 => p_source_4
52523          , x_transaction_coa_id       => l_adr_transaction_coa_id
52524          , x_accounting_coa_id        => l_adr_accounting_coa_id
52525          , x_value_type_code          => l_adr_value_type_code
52526          , p_side                     => 'NA'
52527    );
52528 
52529    xla_ae_lines_pkg.set_ccid(
52530     p_code_combination_id          => l_ccid
52531   , p_value_type_code              => l_adr_value_type_code
52532   , p_transaction_coa_id           => l_adr_transaction_coa_id
52533   , p_accounting_coa_id            => l_adr_accounting_coa_id
52534   , p_adr_code                     => 'CST_DEFAULT'
52535   , p_adr_type_code                => 'S'
52536   , p_component_type               => l_component_type
52537   , p_component_code               => l_component_code
52538   , p_component_type_code          => l_component_type_code
52539   , p_component_appl_id            => l_component_appl_id
52540   , p_amb_context_code             => l_amb_context_code
52541   , p_side                         => 'NA'
52542   );
52543 
52544 
52545    --
52546    --
52547    END IF;
52548    --
52549    -- Bug 4922099
52550    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
52551           (NVL(l_enc_upg_option, 'N') = 'O')
52552         ) AND
52553         (l_bflow_method_code = 'PRIOR_ENTRY')
52554       )
52555    THEN
52556       IF
52557       --
52558       1 = 2
52559       --
52560       THEN
52561       xla_accounting_err_pkg.build_message
52562                                     (p_appli_s_name            => 'XLA'
52563                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52564                                     ,p_token_1                 => 'LINE_NUMBER'
52565                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
52566                                     ,p_token_2                 => 'LINE_TYPE_NAME'
52567                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
52568                                                                              l_component_type
52569                                                                             ,l_component_code
52570                                                                             ,l_component_type_code
52571                                                                             ,l_component_appl_id
52572                                                                             ,l_amb_context_code
52573                                                                             ,l_entity_code
52574                                                                             ,l_event_class_code
52575                                                                            )
52576                                     ,p_token_3                 => 'OWNER'
52577                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
52578                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
52579                                                                           ,p_lookup_code    => l_component_type_code
52580                                                                          )
52581                                     ,p_token_4                 => 'PRODUCT_NAME'
52582                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
52583                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
52584                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
52585                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
52586                                     ,p_ae_header_id            =>  NULL
52587                                        );
52588 
52589         IF (C_LEVEL_ERROR>= g_log_level) THEN
52590                  trace
52591                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52592                       ,p_level    => C_LEVEL_ERROR
52593                       ,p_module   => l_log_module);
52594         END IF;
52595       END IF;
52596    END IF;
52597    --
52598    --
52599    ------------------------------------------------------------------------------------------------
52600    -- 4219869 Business Flow
52601    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
52602    -- Prior Entry.  Currently, the following code is always generated.
52603    ------------------------------------------------------------------------------------------------
52604    XLA_AE_LINES_PKG.ValidateCurrentLine;
52605 
52606    ------------------------------------------------------------------------------------
52607    -- 4219869 Business Flow
52608    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
52609    ------------------------------------------------------------------------------------
52610    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52611 
52612    ----------------------------------------------------------------------------------
52613    -- 4219869 Business Flow
52614    -- Update journal entry status -- Need to generate this within IF <condition>
52615    ----------------------------------------------------------------------------------
52616    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52617          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
52618          ,p_balance_type_code => l_balance_type_code
52619          );
52620 
52621    -------------------------------------------------------------------------------------------
52622    -- 4262811 - Generate the Accrual Reversal lines
52623    -------------------------------------------------------------------------------------------
52624    BEGIN
52625       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
52626                               (g_array_event(p_event_id).array_value_num('header_index'));
52627       IF l_acc_rev_flag IS NULL THEN
52628          l_acc_rev_flag := 'N';
52629       END IF;
52630    EXCEPTION
52631       WHEN OTHERS THEN
52632          l_acc_rev_flag := 'N';
52633    END;
52634    --
52635    IF (l_acc_rev_flag = 'Y') THEN
52636 
52637        -- 4645092  ------------------------------------------------------------------------------
52638        -- To allow MPA report to determine if it should generate report process
52639        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
52640        ------------------------------------------------------------------------------------------
52641 
52642        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
52643        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
52644    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
52645    -- call ADRs
52646    -- Bug 4922099
52647    --
52648    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
52649         (NVL(l_actual_upg_option, 'N') = 'O') OR
52650         (NVL(l_enc_upg_option, 'N') = 'O')
52651       )
52652    THEN
52653    NULL;
52654    --
52655    --
52656    
52657   l_ccid := AcctDerRule_4(
52658            p_application_id           => p_application_id
52659          , p_ae_header_id             => l_ae_header_id 
52660 , p_source_4 => p_source_4
52661          , x_transaction_coa_id       => l_adr_transaction_coa_id
52662          , x_accounting_coa_id        => l_adr_accounting_coa_id
52663          , x_value_type_code          => l_adr_value_type_code
52664          , p_side                     => 'NA'
52665    );
52666 
52667    xla_ae_lines_pkg.set_ccid(
52668     p_code_combination_id          => l_ccid
52669   , p_value_type_code              => l_adr_value_type_code
52670   , p_transaction_coa_id           => l_adr_transaction_coa_id
52671   , p_accounting_coa_id            => l_adr_accounting_coa_id
52672   , p_adr_code                     => 'CST_DEFAULT'
52673   , p_adr_type_code                => 'S'
52674   , p_component_type               => l_component_type
52675   , p_component_code               => l_component_code
52676   , p_component_type_code          => l_component_type_code
52677   , p_component_appl_id            => l_component_appl_id
52678   , p_amb_context_code             => l_amb_context_code
52679   , p_side                         => 'NA'
52680   );
52681 
52682 
52683    --
52684    --
52685    END IF;
52686 
52687        --
52688        -- Update the line information that should be overwritten
52689        --
52690        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
52691                                          p_header_num   => 1);
52692        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
52693 
52694        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
52695 
52696        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
52697           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
52698        END IF;
52699 
52700       --
52701       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
52702       --
52703       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
52704           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
52705       ELSE
52706           ---------------------------------------------------------------------------------------------------
52707           -- 4262811a Switch Sign
52708           ---------------------------------------------------------------------------------------------------
52709           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
52710           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52711                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52712           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52713                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52714           -- 5132302
52715           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
52716                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52717 
52718       END IF;
52719 
52720       -- 4955764
52721       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52722       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
52723 
52724 
52725       XLA_AE_LINES_PKG.ValidateCurrentLine;
52726       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52727 
52728       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52729                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
52730                ,p_balance_type_code => l_balance_type_code);
52731 
52732    END IF;
52733 
52734    -----------------------------------------------------------------------------------------
52735    -- 4262811 Multiperiod Accounting
52736    -----------------------------------------------------------------------------------------
52737      -- No MPA option is assigned.
52738 
52739 
52740 END IF;
52741 END IF;
52742 --
52743 
52744 --
52745 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52746    trace
52747       (p_msg      => 'END of AcctLineType_97'
52748       ,p_level    => C_LEVEL_PROCEDURE
52749       ,p_module   => l_log_module);
52750 END IF;
52751 --
52752 EXCEPTION
52753   WHEN xla_exceptions_pkg.application_exception THEN
52754       RAISE;
52755   WHEN OTHERS THEN
52756        xla_exceptions_pkg.raise_message
52757            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_97');
52758 END AcctLineType_97;
52759 --
52760 
52761 ---------------------------------------
52762 --
52763 -- PRIVATE FUNCTION
52764 --         AcctLineType_98
52765 --
52766 ---------------------------------------
52767 PROCEDURE AcctLineType_98 (
52768   p_application_id        IN NUMBER
52769  ,p_event_id              IN NUMBER
52770  ,p_calculate_acctd_flag  IN VARCHAR2
52771  ,p_calculate_g_l_flag    IN VARCHAR2
52772  ,p_actual_flag           IN OUT VARCHAR2
52773  ,p_balance_type_code     OUT VARCHAR2
52774  ,p_gain_or_loss_ref      OUT VARCHAR2
52775  
52776 --Cost Management Default Account
52777  , p_source_4            IN NUMBER
52778 --DISTRIBUTION_IDENTIFIER
52779  , p_source_11            IN NUMBER
52780 --Distribution Type
52781  , p_source_12            IN VARCHAR2
52782  , p_source_12_meaning    IN VARCHAR2
52783 --Entered Currency Code
52784  , p_source_15            IN VARCHAR2
52785 --Entered Amount
52786  , p_source_18            IN NUMBER
52787 --Currency Conversion Date
52788  , p_source_19            IN DATE
52789 --Currency Conversion Rate
52790  , p_source_20            IN NUMBER
52791 --Currency Conversion Type
52792  , p_source_21            IN VARCHAR2
52793 --Accounted Amount
52794  , p_source_22            IN NUMBER
52795 --Accounting Line Type
52796  , p_source_24            IN NUMBER
52797 )
52798 IS
52799 
52800 l_component_type              VARCHAR2(80);
52801 l_component_code              VARCHAR2(30);
52802 l_component_type_code         VARCHAR2(1);
52803 l_component_appl_id           INTEGER;
52804 l_amb_context_code            VARCHAR2(30);
52805 l_entity_code                 VARCHAR2(30);
52806 l_event_class_code            VARCHAR2(30);
52807 l_ae_header_id                NUMBER;
52808 l_event_type_code             VARCHAR2(30);
52809 l_line_definition_code        VARCHAR2(30);
52810 l_line_definition_owner_code  VARCHAR2(1);
52811 --
52812 -- adr variables
52813 l_segment                     VARCHAR2(30);
52814 l_ccid                        NUMBER;
52815 l_adr_transaction_coa_id      NUMBER;
52816 l_adr_accounting_coa_id       NUMBER;
52817 l_adr_flexfield_segment_code  VARCHAR2(30);
52818 l_adr_flex_value_set_id       NUMBER;
52819 l_adr_value_type_code         VARCHAR2(30);
52820 l_adr_value_combination_id    NUMBER;
52821 l_adr_value_segment_code      VARCHAR2(30);
52822 
52823 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
52824 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
52825 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
52826 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
52827 
52828 -- 4262811 Variables ------------------------------------------------------------------------------------------
52829 l_entered_amt_idx             NUMBER;
52830 l_accted_amt_idx              NUMBER;
52831 l_acc_rev_flag                VARCHAR2(1);
52832 l_accrual_line_num            NUMBER;
52833 l_tmp_amt                     NUMBER;
52834 l_acc_rev_natural_side_code   VARCHAR2(1);
52835 
52836 l_num_entries                 NUMBER;
52837 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
52838 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
52839 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
52840 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
52841 l_recog_line_1                NUMBER;
52842 l_recog_line_2                NUMBER;
52843 
52844 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
52845 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
52846 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
52847 
52848 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
52849 
52850 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
52851 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
52852 
52853 ---------------------------------------------------------------------------------------------------------------
52854 
52855 
52856 --
52857 -- bulk performance
52858 --
52859 l_balance_type_code           VARCHAR2(1);
52860 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
52861 l_log_module                  VARCHAR2(240);
52862 
52863 --
52864 -- Upgrade strategy
52865 --
52866 l_actual_upg_option           VARCHAR2(1);
52867 l_enc_upg_option           VARCHAR2(1);
52868 
52869 --
52870 BEGIN
52871 --
52872 IF g_log_enabled THEN
52873       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_98';
52874 END IF;
52875 --
52876 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52877 
52878       trace
52879          (p_msg      => 'BEGIN of AcctLineType_98'
52880          ,p_level    => C_LEVEL_PROCEDURE
52881          ,p_module   => l_log_module);
52882 
52883 END IF;
52884 --
52885 l_component_type             := 'AMB_JLT';
52886 l_component_code             := 'INTERORG_RECEIVABLES';
52887 l_component_type_code        := 'S';
52888 l_component_appl_id          :=  707;
52889 l_amb_context_code           := 'DEFAULT';
52890 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
52891 l_event_class_code           := 'USER_DEFINE';
52892 l_event_type_code            := 'UDIR_INTERORG_RCPT';
52893 l_line_definition_owner_code := 'S';
52894 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT';
52895 --
52896 l_balance_type_code          := 'A';
52897 l_segment                     := NULL;
52898 l_ccid                        := NULL;
52899 l_adr_transaction_coa_id      := NULL;
52900 l_adr_accounting_coa_id       := NULL;
52901 l_adr_flexfield_segment_code  := NULL;
52902 l_adr_flex_value_set_id       := NULL;
52903 l_adr_value_type_code         := NULL;
52904 l_adr_value_combination_id    := NULL;
52905 l_adr_value_segment_code      := NULL;
52906 
52907 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
52908 l_bflow_class_code           := '';    -- 4219869 Business Flow
52909 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
52910 l_budgetary_control_flag     := 'N';
52911 
52912 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
52913 l_bflow_applied_to_amt       := NULL; -- 5132302
52914 l_entered_amt_idx            := NULL;          -- 4262811
52915 l_accted_amt_idx             := NULL;          -- 4262811
52916 l_acc_rev_flag               := NULL;          -- 4262811
52917 l_accrual_line_num           := NULL;          -- 4262811
52918 l_tmp_amt                    := NULL;          -- 4262811
52919 --
52920  
52921 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
52922     l_balance_type_code <> 'B' THEN
52923 IF NVL(p_source_24,9E125) =  10
52924  THEN 
52925 
52926    --
52927    XLA_AE_LINES_PKG.SetNewLine;
52928 
52929    p_balance_type_code          := l_balance_type_code;
52930    -- set the flag so later we will know whether the gain loss line needs to be created
52931    
52932    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
52933      p_actual_flag :='A';
52934    END IF;
52935 
52936    --
52937    -- bulk performance
52938    --
52939    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
52940                                       p_header_num   => 0); -- 4262811
52941    --
52942    -- set accounting line options
52943    --
52944    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
52945            p_natural_side_code          => 'D'
52946          , p_gain_or_loss_flag          => 'N'
52947          , p_gl_transfer_mode_code      => 'S'
52948          , p_acct_entry_type_code       => 'A'
52949          , p_switch_side_flag           => 'Y'
52950          , p_merge_duplicate_code       => 'N'
52951          );
52952    --
52953    l_acc_rev_natural_side_code := 'C';  -- 4262811
52954    -- 
52955    --
52956    -- set accounting line type info
52957    --
52958    xla_ae_lines_pkg.SetAcctLineType
52959       (p_component_type             => l_component_type
52960       ,p_event_type_code            => l_event_type_code
52961       ,p_line_definition_owner_code => l_line_definition_owner_code
52962       ,p_line_definition_code       => l_line_definition_code
52963       ,p_accounting_line_code       => l_component_code
52964       ,p_accounting_line_type_code  => l_component_type_code
52965       ,p_accounting_line_appl_id    => l_component_appl_id
52966       ,p_amb_context_code           => l_amb_context_code
52967       ,p_entity_code                => l_entity_code
52968       ,p_event_class_code           => l_event_class_code);
52969    --
52970    -- set accounting class
52971    --
52972    xla_ae_lines_pkg.SetAcctClass(
52973            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
52974          , p_ae_header_id           => l_ae_header_id
52975          );
52976 
52977    --
52978    -- set rounding class
52979    --
52980    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
52981                       'INTERORG_RECEIVABLES';
52982 
52983    --
52984    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
52985    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
52986    --
52987    -- bulk performance
52988    --
52989    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
52990 
52991    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
52992       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
52993 
52994    -- 4955764
52995    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52996       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
52997 
52998    -- 4458381 Public Sector Enh
52999    
53000    --
53001    -- set accounting attributes for the line type
53002    --
53003    l_entered_amt_idx := 3;
53004    l_accted_amt_idx  := 8;
53005    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
53006    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
53007    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
53008    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
53009    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
53010    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
53011    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
53012    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
53013    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
53014    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
53015    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
53016    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
53017    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
53018    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
53019    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
53020    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
53021    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
53022 
53023    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
53024    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
53025 
53026    ---------------------------------------------------------------------------------------------------------------
53027    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
53028    ---------------------------------------------------------------------------------------------------------------
53029    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
53030 
53031    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53032    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53033 
53034    IF xla_accounting_cache_pkg.GetValueChar
53035          (p_source_code         => 'LEDGER_CATEGORY_CODE'
53036          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
53037    AND l_bflow_method_code = 'PRIOR_ENTRY'
53038 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
53039    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
53040          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
53041        )
53042    THEN
53043          xla_ae_lines_pkg.BflowUpgEntry
53044            (p_business_method_code    => l_bflow_method_code
53045            ,p_business_class_code     => l_bflow_class_code
53046            ,p_balance_type            => l_balance_type_code);
53047    ELSE
53048       NULL;
53049 -- No business flow processing for business flow method of NONE.
53050    END IF;
53051 
53052    --
53053    -- call analytical criteria
53054    --
53055    
53056    --
53057    -- call description
53058    --
53059    -- No description or it is inherited.
53060    --
53061    -- call ADRs
53062    -- Bug 4922099
53063    --
53064    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53065         (NVL(l_actual_upg_option, 'N') = 'O') OR
53066         (NVL(l_enc_upg_option, 'N') = 'O')
53067       )
53068    THEN
53069    NULL;
53070    --
53071    --
53072    
53073   l_ccid := AcctDerRule_4(
53074            p_application_id           => p_application_id
53075          , p_ae_header_id             => l_ae_header_id 
53076 , p_source_4 => p_source_4
53077          , x_transaction_coa_id       => l_adr_transaction_coa_id
53078          , x_accounting_coa_id        => l_adr_accounting_coa_id
53079          , x_value_type_code          => l_adr_value_type_code
53080          , p_side                     => 'NA'
53081    );
53082 
53083    xla_ae_lines_pkg.set_ccid(
53084     p_code_combination_id          => l_ccid
53085   , p_value_type_code              => l_adr_value_type_code
53086   , p_transaction_coa_id           => l_adr_transaction_coa_id
53087   , p_accounting_coa_id            => l_adr_accounting_coa_id
53088   , p_adr_code                     => 'CST_DEFAULT'
53089   , p_adr_type_code                => 'S'
53090   , p_component_type               => l_component_type
53091   , p_component_code               => l_component_code
53092   , p_component_type_code          => l_component_type_code
53093   , p_component_appl_id            => l_component_appl_id
53094   , p_amb_context_code             => l_amb_context_code
53095   , p_side                         => 'NA'
53096   );
53097 
53098 
53099    --
53100    --
53101    END IF;
53102    --
53103    -- Bug 4922099
53104    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
53105           (NVL(l_enc_upg_option, 'N') = 'O')
53106         ) AND
53107         (l_bflow_method_code = 'PRIOR_ENTRY')
53108       )
53109    THEN
53110       IF
53111       --
53112       1 = 2
53113       --
53114       THEN
53115       xla_accounting_err_pkg.build_message
53116                                     (p_appli_s_name            => 'XLA'
53117                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53118                                     ,p_token_1                 => 'LINE_NUMBER'
53119                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
53120                                     ,p_token_2                 => 'LINE_TYPE_NAME'
53121                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
53122                                                                              l_component_type
53123                                                                             ,l_component_code
53124                                                                             ,l_component_type_code
53125                                                                             ,l_component_appl_id
53126                                                                             ,l_amb_context_code
53127                                                                             ,l_entity_code
53128                                                                             ,l_event_class_code
53129                                                                            )
53130                                     ,p_token_3                 => 'OWNER'
53131                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
53132                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
53133                                                                           ,p_lookup_code    => l_component_type_code
53134                                                                          )
53135                                     ,p_token_4                 => 'PRODUCT_NAME'
53136                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
53137                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
53138                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
53139                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
53140                                     ,p_ae_header_id            =>  NULL
53141                                        );
53142 
53143         IF (C_LEVEL_ERROR>= g_log_level) THEN
53144                  trace
53145                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53146                       ,p_level    => C_LEVEL_ERROR
53147                       ,p_module   => l_log_module);
53148         END IF;
53149       END IF;
53150    END IF;
53151    --
53152    --
53153    ------------------------------------------------------------------------------------------------
53154    -- 4219869 Business Flow
53155    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
53156    -- Prior Entry.  Currently, the following code is always generated.
53157    ------------------------------------------------------------------------------------------------
53158    XLA_AE_LINES_PKG.ValidateCurrentLine;
53159 
53160    ------------------------------------------------------------------------------------
53161    -- 4219869 Business Flow
53162    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
53163    ------------------------------------------------------------------------------------
53164    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53165 
53166    ----------------------------------------------------------------------------------
53167    -- 4219869 Business Flow
53168    -- Update journal entry status -- Need to generate this within IF <condition>
53169    ----------------------------------------------------------------------------------
53170    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53171          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
53172          ,p_balance_type_code => l_balance_type_code
53173          );
53174 
53175    -------------------------------------------------------------------------------------------
53176    -- 4262811 - Generate the Accrual Reversal lines
53177    -------------------------------------------------------------------------------------------
53178    BEGIN
53179       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
53180                               (g_array_event(p_event_id).array_value_num('header_index'));
53181       IF l_acc_rev_flag IS NULL THEN
53182          l_acc_rev_flag := 'N';
53183       END IF;
53184    EXCEPTION
53185       WHEN OTHERS THEN
53186          l_acc_rev_flag := 'N';
53187    END;
53188    --
53189    IF (l_acc_rev_flag = 'Y') THEN
53190 
53191        -- 4645092  ------------------------------------------------------------------------------
53192        -- To allow MPA report to determine if it should generate report process
53193        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
53194        ------------------------------------------------------------------------------------------
53195 
53196        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
53197        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
53198    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
53199    -- call ADRs
53200    -- Bug 4922099
53201    --
53202    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53203         (NVL(l_actual_upg_option, 'N') = 'O') OR
53204         (NVL(l_enc_upg_option, 'N') = 'O')
53205       )
53206    THEN
53207    NULL;
53208    --
53209    --
53210    
53211   l_ccid := AcctDerRule_4(
53212            p_application_id           => p_application_id
53213          , p_ae_header_id             => l_ae_header_id 
53214 , p_source_4 => p_source_4
53215          , x_transaction_coa_id       => l_adr_transaction_coa_id
53216          , x_accounting_coa_id        => l_adr_accounting_coa_id
53217          , x_value_type_code          => l_adr_value_type_code
53218          , p_side                     => 'NA'
53219    );
53220 
53221    xla_ae_lines_pkg.set_ccid(
53222     p_code_combination_id          => l_ccid
53223   , p_value_type_code              => l_adr_value_type_code
53224   , p_transaction_coa_id           => l_adr_transaction_coa_id
53225   , p_accounting_coa_id            => l_adr_accounting_coa_id
53226   , p_adr_code                     => 'CST_DEFAULT'
53227   , p_adr_type_code                => 'S'
53228   , p_component_type               => l_component_type
53229   , p_component_code               => l_component_code
53230   , p_component_type_code          => l_component_type_code
53231   , p_component_appl_id            => l_component_appl_id
53232   , p_amb_context_code             => l_amb_context_code
53233   , p_side                         => 'NA'
53234   );
53235 
53236 
53237    --
53238    --
53239    END IF;
53240 
53241        --
53242        -- Update the line information that should be overwritten
53243        --
53244        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
53245                                          p_header_num   => 1);
53246        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
53247 
53248        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
53249 
53250        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
53251           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
53252        END IF;
53253 
53254       --
53255       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
53256       --
53257       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
53258           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
53259       ELSE
53260           ---------------------------------------------------------------------------------------------------
53261           -- 4262811a Switch Sign
53262           ---------------------------------------------------------------------------------------------------
53263           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
53264           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53265                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53266           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53267                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53268           -- 5132302
53269           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
53270                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53271 
53272       END IF;
53273 
53274       -- 4955764
53275       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53276       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
53277 
53278 
53279       XLA_AE_LINES_PKG.ValidateCurrentLine;
53280       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53281 
53282       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53283                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
53284                ,p_balance_type_code => l_balance_type_code);
53285 
53286    END IF;
53287 
53288    -----------------------------------------------------------------------------------------
53289    -- 4262811 Multiperiod Accounting
53290    -----------------------------------------------------------------------------------------
53291      -- No MPA option is assigned.
53292 
53293 
53294 END IF;
53295 END IF;
53296 --
53297 
53298 --
53299 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53300    trace
53301       (p_msg      => 'END of AcctLineType_98'
53302       ,p_level    => C_LEVEL_PROCEDURE
53303       ,p_module   => l_log_module);
53304 END IF;
53305 --
53306 EXCEPTION
53307   WHEN xla_exceptions_pkg.application_exception THEN
53308       RAISE;
53309   WHEN OTHERS THEN
53310        xla_exceptions_pkg.raise_message
53311            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_98');
53312 END AcctLineType_98;
53313 --
53314 
53315 ---------------------------------------
53316 --
53317 -- PRIVATE FUNCTION
53318 --         AcctLineType_99
53319 --
53320 ---------------------------------------
53321 PROCEDURE AcctLineType_99 (
53322   p_application_id        IN NUMBER
53323  ,p_event_id              IN NUMBER
53324  ,p_calculate_acctd_flag  IN VARCHAR2
53325  ,p_calculate_g_l_flag    IN VARCHAR2
53326  ,p_actual_flag           IN OUT VARCHAR2
53327  ,p_balance_type_code     OUT VARCHAR2
53328  ,p_gain_or_loss_ref      OUT VARCHAR2
53329  
53330 --Cost Management Default Account
53331  , p_source_4            IN NUMBER
53332 --DISTRIBUTION_IDENTIFIER
53333  , p_source_11            IN NUMBER
53334 --Distribution Type
53335  , p_source_12            IN VARCHAR2
53336  , p_source_12_meaning    IN VARCHAR2
53337 --Entered Currency Code
53338  , p_source_15            IN VARCHAR2
53339 --Entered Amount
53340  , p_source_18            IN NUMBER
53341 --Currency Conversion Date
53342  , p_source_19            IN DATE
53343 --Currency Conversion Rate
53344  , p_source_20            IN NUMBER
53345 --Currency Conversion Type
53346  , p_source_21            IN VARCHAR2
53347 --Accounted Amount
53348  , p_source_22            IN NUMBER
53349 --Accounting Line Type
53350  , p_source_24            IN NUMBER
53351 )
53352 IS
53353 
53354 l_component_type              VARCHAR2(80);
53355 l_component_code              VARCHAR2(30);
53356 l_component_type_code         VARCHAR2(1);
53357 l_component_appl_id           INTEGER;
53358 l_amb_context_code            VARCHAR2(30);
53359 l_entity_code                 VARCHAR2(30);
53360 l_event_class_code            VARCHAR2(30);
53361 l_ae_header_id                NUMBER;
53362 l_event_type_code             VARCHAR2(30);
53363 l_line_definition_code        VARCHAR2(30);
53364 l_line_definition_owner_code  VARCHAR2(1);
53365 --
53366 -- adr variables
53367 l_segment                     VARCHAR2(30);
53368 l_ccid                        NUMBER;
53369 l_adr_transaction_coa_id      NUMBER;
53370 l_adr_accounting_coa_id       NUMBER;
53371 l_adr_flexfield_segment_code  VARCHAR2(30);
53372 l_adr_flex_value_set_id       NUMBER;
53373 l_adr_value_type_code         VARCHAR2(30);
53374 l_adr_value_combination_id    NUMBER;
53375 l_adr_value_segment_code      VARCHAR2(30);
53376 
53377 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
53378 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
53379 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
53380 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
53381 
53382 -- 4262811 Variables ------------------------------------------------------------------------------------------
53383 l_entered_amt_idx             NUMBER;
53384 l_accted_amt_idx              NUMBER;
53385 l_acc_rev_flag                VARCHAR2(1);
53386 l_accrual_line_num            NUMBER;
53387 l_tmp_amt                     NUMBER;
53388 l_acc_rev_natural_side_code   VARCHAR2(1);
53389 
53390 l_num_entries                 NUMBER;
53391 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
53392 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
53393 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
53394 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
53395 l_recog_line_1                NUMBER;
53396 l_recog_line_2                NUMBER;
53397 
53398 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
53399 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
53400 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
53401 
53402 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
53403 
53404 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
53405 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
53406 
53407 ---------------------------------------------------------------------------------------------------------------
53408 
53409 
53410 --
53411 -- bulk performance
53412 --
53413 l_balance_type_code           VARCHAR2(1);
53414 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
53415 l_log_module                  VARCHAR2(240);
53416 
53417 --
53418 -- Upgrade strategy
53419 --
53420 l_actual_upg_option           VARCHAR2(1);
53421 l_enc_upg_option           VARCHAR2(1);
53422 
53423 --
53424 BEGIN
53425 --
53426 IF g_log_enabled THEN
53427       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_99';
53428 END IF;
53429 --
53430 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53431 
53432       trace
53433          (p_msg      => 'BEGIN of AcctLineType_99'
53434          ,p_level    => C_LEVEL_PROCEDURE
53435          ,p_module   => l_log_module);
53436 
53437 END IF;
53438 --
53439 l_component_type             := 'AMB_JLT';
53440 l_component_code             := 'INTERORG_RECEIVABLES';
53441 l_component_type_code        := 'S';
53442 l_component_appl_id          :=  707;
53443 l_amb_context_code           := 'DEFAULT';
53444 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
53445 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
53446 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_ALL';
53447 l_line_definition_owner_code := 'S';
53448 l_line_definition_code       := 'FOB_RCPT_SENDER_RCPT';
53449 --
53450 l_balance_type_code          := 'A';
53451 l_segment                     := NULL;
53452 l_ccid                        := NULL;
53453 l_adr_transaction_coa_id      := NULL;
53454 l_adr_accounting_coa_id       := NULL;
53455 l_adr_flexfield_segment_code  := NULL;
53456 l_adr_flex_value_set_id       := NULL;
53457 l_adr_value_type_code         := NULL;
53458 l_adr_value_combination_id    := NULL;
53459 l_adr_value_segment_code      := NULL;
53460 
53461 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
53462 l_bflow_class_code           := '';    -- 4219869 Business Flow
53463 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
53464 l_budgetary_control_flag     := 'N';
53465 
53466 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
53467 l_bflow_applied_to_amt       := NULL; -- 5132302
53468 l_entered_amt_idx            := NULL;          -- 4262811
53469 l_accted_amt_idx             := NULL;          -- 4262811
53470 l_acc_rev_flag               := NULL;          -- 4262811
53471 l_accrual_line_num           := NULL;          -- 4262811
53472 l_tmp_amt                    := NULL;          -- 4262811
53473 --
53474  
53475 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
53476     l_balance_type_code <> 'B' THEN
53477 IF NVL(p_source_24,9E125) =  10
53478  THEN 
53479 
53480    --
53481    XLA_AE_LINES_PKG.SetNewLine;
53482 
53483    p_balance_type_code          := l_balance_type_code;
53484    -- set the flag so later we will know whether the gain loss line needs to be created
53485    
53486    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
53487      p_actual_flag :='A';
53488    END IF;
53489 
53490    --
53491    -- bulk performance
53492    --
53493    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
53494                                       p_header_num   => 0); -- 4262811
53495    --
53496    -- set accounting line options
53497    --
53498    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
53499            p_natural_side_code          => 'D'
53500          , p_gain_or_loss_flag          => 'N'
53501          , p_gl_transfer_mode_code      => 'S'
53502          , p_acct_entry_type_code       => 'A'
53503          , p_switch_side_flag           => 'Y'
53504          , p_merge_duplicate_code       => 'N'
53505          );
53506    --
53507    l_acc_rev_natural_side_code := 'C';  -- 4262811
53508    -- 
53509    --
53510    -- set accounting line type info
53511    --
53512    xla_ae_lines_pkg.SetAcctLineType
53513       (p_component_type             => l_component_type
53514       ,p_event_type_code            => l_event_type_code
53515       ,p_line_definition_owner_code => l_line_definition_owner_code
53516       ,p_line_definition_code       => l_line_definition_code
53517       ,p_accounting_line_code       => l_component_code
53518       ,p_accounting_line_type_code  => l_component_type_code
53519       ,p_accounting_line_appl_id    => l_component_appl_id
53520       ,p_amb_context_code           => l_amb_context_code
53521       ,p_entity_code                => l_entity_code
53522       ,p_event_class_code           => l_event_class_code);
53523    --
53524    -- set accounting class
53525    --
53526    xla_ae_lines_pkg.SetAcctClass(
53527            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
53528          , p_ae_header_id           => l_ae_header_id
53529          );
53530 
53531    --
53532    -- set rounding class
53533    --
53534    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
53535                       'INTERORG_RECEIVABLES';
53536 
53537    --
53538    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
53539    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
53540    --
53541    -- bulk performance
53542    --
53543    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
53544 
53545    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
53546       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
53547 
53548    -- 4955764
53549    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53550       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
53551 
53552    -- 4458381 Public Sector Enh
53553    
53554    --
53555    -- set accounting attributes for the line type
53556    --
53557    l_entered_amt_idx := 3;
53558    l_accted_amt_idx  := 8;
53559    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
53560    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
53561    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
53562    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
53563    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
53564    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
53565    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
53566    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
53567    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
53568    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
53569    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
53570    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
53571    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
53572    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
53573    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
53574    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
53575    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
53576 
53577    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
53578    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
53579 
53580    ---------------------------------------------------------------------------------------------------------------
53581    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
53582    ---------------------------------------------------------------------------------------------------------------
53583    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
53584 
53585    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53586    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53587 
53588    IF xla_accounting_cache_pkg.GetValueChar
53589          (p_source_code         => 'LEDGER_CATEGORY_CODE'
53590          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
53591    AND l_bflow_method_code = 'PRIOR_ENTRY'
53592 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
53593    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
53594          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
53595        )
53596    THEN
53597          xla_ae_lines_pkg.BflowUpgEntry
53598            (p_business_method_code    => l_bflow_method_code
53599            ,p_business_class_code     => l_bflow_class_code
53600            ,p_balance_type            => l_balance_type_code);
53601    ELSE
53602       NULL;
53603 -- No business flow processing for business flow method of NONE.
53604    END IF;
53605 
53606    --
53607    -- call analytical criteria
53608    --
53609    
53610    --
53611    -- call description
53612    --
53613    -- No description or it is inherited.
53614    --
53615    -- call ADRs
53616    -- Bug 4922099
53617    --
53618    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53619         (NVL(l_actual_upg_option, 'N') = 'O') OR
53620         (NVL(l_enc_upg_option, 'N') = 'O')
53621       )
53622    THEN
53623    NULL;
53624    --
53625    --
53626    
53627   l_ccid := AcctDerRule_4(
53628            p_application_id           => p_application_id
53629          , p_ae_header_id             => l_ae_header_id 
53630 , p_source_4 => p_source_4
53631          , x_transaction_coa_id       => l_adr_transaction_coa_id
53632          , x_accounting_coa_id        => l_adr_accounting_coa_id
53633          , x_value_type_code          => l_adr_value_type_code
53634          , p_side                     => 'NA'
53635    );
53636 
53637    xla_ae_lines_pkg.set_ccid(
53638     p_code_combination_id          => l_ccid
53639   , p_value_type_code              => l_adr_value_type_code
53640   , p_transaction_coa_id           => l_adr_transaction_coa_id
53641   , p_accounting_coa_id            => l_adr_accounting_coa_id
53642   , p_adr_code                     => 'CST_DEFAULT'
53643   , p_adr_type_code                => 'S'
53644   , p_component_type               => l_component_type
53645   , p_component_code               => l_component_code
53646   , p_component_type_code          => l_component_type_code
53647   , p_component_appl_id            => l_component_appl_id
53648   , p_amb_context_code             => l_amb_context_code
53649   , p_side                         => 'NA'
53650   );
53651 
53652 
53653    --
53654    --
53655    END IF;
53656    --
53657    -- Bug 4922099
53658    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
53659           (NVL(l_enc_upg_option, 'N') = 'O')
53660         ) AND
53661         (l_bflow_method_code = 'PRIOR_ENTRY')
53662       )
53663    THEN
53664       IF
53665       --
53666       1 = 2
53667       --
53668       THEN
53669       xla_accounting_err_pkg.build_message
53670                                     (p_appli_s_name            => 'XLA'
53671                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53672                                     ,p_token_1                 => 'LINE_NUMBER'
53673                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
53674                                     ,p_token_2                 => 'LINE_TYPE_NAME'
53675                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
53676                                                                              l_component_type
53677                                                                             ,l_component_code
53678                                                                             ,l_component_type_code
53679                                                                             ,l_component_appl_id
53680                                                                             ,l_amb_context_code
53681                                                                             ,l_entity_code
53682                                                                             ,l_event_class_code
53683                                                                            )
53684                                     ,p_token_3                 => 'OWNER'
53685                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
53686                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
53687                                                                           ,p_lookup_code    => l_component_type_code
53688                                                                          )
53689                                     ,p_token_4                 => 'PRODUCT_NAME'
53690                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
53691                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
53692                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
53693                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
53694                                     ,p_ae_header_id            =>  NULL
53695                                        );
53696 
53697         IF (C_LEVEL_ERROR>= g_log_level) THEN
53698                  trace
53699                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53700                       ,p_level    => C_LEVEL_ERROR
53701                       ,p_module   => l_log_module);
53702         END IF;
53703       END IF;
53704    END IF;
53705    --
53706    --
53707    ------------------------------------------------------------------------------------------------
53708    -- 4219869 Business Flow
53709    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
53710    -- Prior Entry.  Currently, the following code is always generated.
53711    ------------------------------------------------------------------------------------------------
53712    XLA_AE_LINES_PKG.ValidateCurrentLine;
53713 
53714    ------------------------------------------------------------------------------------
53715    -- 4219869 Business Flow
53716    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
53717    ------------------------------------------------------------------------------------
53718    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53719 
53720    ----------------------------------------------------------------------------------
53721    -- 4219869 Business Flow
53722    -- Update journal entry status -- Need to generate this within IF <condition>
53723    ----------------------------------------------------------------------------------
53724    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53725          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
53726          ,p_balance_type_code => l_balance_type_code
53727          );
53728 
53729    -------------------------------------------------------------------------------------------
53730    -- 4262811 - Generate the Accrual Reversal lines
53731    -------------------------------------------------------------------------------------------
53732    BEGIN
53733       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
53734                               (g_array_event(p_event_id).array_value_num('header_index'));
53735       IF l_acc_rev_flag IS NULL THEN
53736          l_acc_rev_flag := 'N';
53737       END IF;
53738    EXCEPTION
53739       WHEN OTHERS THEN
53740          l_acc_rev_flag := 'N';
53741    END;
53742    --
53743    IF (l_acc_rev_flag = 'Y') THEN
53744 
53745        -- 4645092  ------------------------------------------------------------------------------
53746        -- To allow MPA report to determine if it should generate report process
53747        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
53748        ------------------------------------------------------------------------------------------
53749 
53750        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
53751        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
53752    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
53753    -- call ADRs
53754    -- Bug 4922099
53755    --
53756    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53757         (NVL(l_actual_upg_option, 'N') = 'O') OR
53758         (NVL(l_enc_upg_option, 'N') = 'O')
53759       )
53760    THEN
53761    NULL;
53762    --
53763    --
53764    
53765   l_ccid := AcctDerRule_4(
53766            p_application_id           => p_application_id
53767          , p_ae_header_id             => l_ae_header_id 
53768 , p_source_4 => p_source_4
53769          , x_transaction_coa_id       => l_adr_transaction_coa_id
53770          , x_accounting_coa_id        => l_adr_accounting_coa_id
53771          , x_value_type_code          => l_adr_value_type_code
53772          , p_side                     => 'NA'
53773    );
53774 
53775    xla_ae_lines_pkg.set_ccid(
53776     p_code_combination_id          => l_ccid
53777   , p_value_type_code              => l_adr_value_type_code
53778   , p_transaction_coa_id           => l_adr_transaction_coa_id
53779   , p_accounting_coa_id            => l_adr_accounting_coa_id
53780   , p_adr_code                     => 'CST_DEFAULT'
53781   , p_adr_type_code                => 'S'
53782   , p_component_type               => l_component_type
53783   , p_component_code               => l_component_code
53784   , p_component_type_code          => l_component_type_code
53785   , p_component_appl_id            => l_component_appl_id
53786   , p_amb_context_code             => l_amb_context_code
53787   , p_side                         => 'NA'
53788   );
53789 
53790 
53791    --
53792    --
53793    END IF;
53794 
53795        --
53796        -- Update the line information that should be overwritten
53797        --
53798        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
53799                                          p_header_num   => 1);
53800        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
53801 
53802        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
53803 
53804        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
53805           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
53806        END IF;
53807 
53808       --
53809       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
53810       --
53811       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
53812           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
53813       ELSE
53814           ---------------------------------------------------------------------------------------------------
53815           -- 4262811a Switch Sign
53816           ---------------------------------------------------------------------------------------------------
53817           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
53818           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53819                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53820           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53821                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53822           -- 5132302
53823           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
53824                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53825 
53826       END IF;
53827 
53828       -- 4955764
53829       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53830       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
53831 
53832 
53833       XLA_AE_LINES_PKG.ValidateCurrentLine;
53834       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53835 
53836       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53837                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
53838                ,p_balance_type_code => l_balance_type_code);
53839 
53840    END IF;
53841 
53842    -----------------------------------------------------------------------------------------
53843    -- 4262811 Multiperiod Accounting
53844    -----------------------------------------------------------------------------------------
53845      -- No MPA option is assigned.
53846 
53847 
53848 END IF;
53849 END IF;
53850 --
53851 
53852 --
53853 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53854    trace
53855       (p_msg      => 'END of AcctLineType_99'
53856       ,p_level    => C_LEVEL_PROCEDURE
53857       ,p_module   => l_log_module);
53858 END IF;
53859 --
53860 EXCEPTION
53861   WHEN xla_exceptions_pkg.application_exception THEN
53862       RAISE;
53863   WHEN OTHERS THEN
53864        xla_exceptions_pkg.raise_message
53865            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_99');
53866 END AcctLineType_99;
53867 --
53868 
53869 ---------------------------------------
53870 --
53871 -- PRIVATE FUNCTION
53872 --         AcctLineType_100
53873 --
53874 ---------------------------------------
53875 PROCEDURE AcctLineType_100 (
53876   p_application_id        IN NUMBER
53877  ,p_event_id              IN NUMBER
53878  ,p_calculate_acctd_flag  IN VARCHAR2
53879  ,p_calculate_g_l_flag    IN VARCHAR2
53880  ,p_actual_flag           IN OUT VARCHAR2
53881  ,p_balance_type_code     OUT VARCHAR2
53882  ,p_gain_or_loss_ref      OUT VARCHAR2
53883  
53884 --Cost Management Default Account
53885  , p_source_4            IN NUMBER
53886 --DISTRIBUTION_IDENTIFIER
53887  , p_source_11            IN NUMBER
53888 --Distribution Type
53889  , p_source_12            IN VARCHAR2
53890  , p_source_12_meaning    IN VARCHAR2
53891 --Entered Currency Code
53892  , p_source_15            IN VARCHAR2
53893 --Entered Amount
53894  , p_source_18            IN NUMBER
53895 --Currency Conversion Date
53896  , p_source_19            IN DATE
53897 --Currency Conversion Rate
53898  , p_source_20            IN NUMBER
53899 --Currency Conversion Type
53900  , p_source_21            IN VARCHAR2
53901 --Accounted Amount
53902  , p_source_22            IN NUMBER
53903 --Accounting Line Type
53904  , p_source_24            IN NUMBER
53905 )
53906 IS
53907 
53908 l_component_type              VARCHAR2(80);
53909 l_component_code              VARCHAR2(30);
53910 l_component_type_code         VARCHAR2(1);
53911 l_component_appl_id           INTEGER;
53912 l_amb_context_code            VARCHAR2(30);
53913 l_entity_code                 VARCHAR2(30);
53914 l_event_class_code            VARCHAR2(30);
53915 l_ae_header_id                NUMBER;
53916 l_event_type_code             VARCHAR2(30);
53917 l_line_definition_code        VARCHAR2(30);
53918 l_line_definition_owner_code  VARCHAR2(1);
53919 --
53920 -- adr variables
53921 l_segment                     VARCHAR2(30);
53922 l_ccid                        NUMBER;
53923 l_adr_transaction_coa_id      NUMBER;
53924 l_adr_accounting_coa_id       NUMBER;
53925 l_adr_flexfield_segment_code  VARCHAR2(30);
53926 l_adr_flex_value_set_id       NUMBER;
53927 l_adr_value_type_code         VARCHAR2(30);
53928 l_adr_value_combination_id    NUMBER;
53929 l_adr_value_segment_code      VARCHAR2(30);
53930 
53931 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
53932 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
53933 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
53934 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
53935 
53936 -- 4262811 Variables ------------------------------------------------------------------------------------------
53937 l_entered_amt_idx             NUMBER;
53938 l_accted_amt_idx              NUMBER;
53939 l_acc_rev_flag                VARCHAR2(1);
53940 l_accrual_line_num            NUMBER;
53941 l_tmp_amt                     NUMBER;
53942 l_acc_rev_natural_side_code   VARCHAR2(1);
53943 
53944 l_num_entries                 NUMBER;
53945 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
53946 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
53947 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
53948 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
53949 l_recog_line_1                NUMBER;
53950 l_recog_line_2                NUMBER;
53951 
53952 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
53953 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
53954 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
53955 
53956 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
53957 
53958 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
53959 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
53960 
53961 ---------------------------------------------------------------------------------------------------------------
53962 
53963 
53964 --
53965 -- bulk performance
53966 --
53967 l_balance_type_code           VARCHAR2(1);
53968 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
53969 l_log_module                  VARCHAR2(240);
53970 
53971 --
53972 -- Upgrade strategy
53973 --
53974 l_actual_upg_option           VARCHAR2(1);
53975 l_enc_upg_option           VARCHAR2(1);
53976 
53977 --
53978 BEGIN
53979 --
53980 IF g_log_enabled THEN
53981       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_100';
53982 END IF;
53983 --
53984 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53985 
53986       trace
53987          (p_msg      => 'BEGIN of AcctLineType_100'
53988          ,p_level    => C_LEVEL_PROCEDURE
53989          ,p_module   => l_log_module);
53990 
53991 END IF;
53992 --
53993 l_component_type             := 'AMB_JLT';
53994 l_component_code             := 'INTERORG_RECEIVABLES';
53995 l_component_type_code        := 'S';
53996 l_component_appl_id          :=  707;
53997 l_amb_context_code           := 'DEFAULT';
53998 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
53999 l_event_class_code           := 'USER_DEFINE';
54000 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_TP';
54001 l_line_definition_owner_code := 'S';
54002 l_line_definition_code       := 'USER_FOB_SHIP_SENDER_SHIP_TP';
54003 --
54004 l_balance_type_code          := 'A';
54005 l_segment                     := NULL;
54006 l_ccid                        := NULL;
54007 l_adr_transaction_coa_id      := NULL;
54008 l_adr_accounting_coa_id       := NULL;
54009 l_adr_flexfield_segment_code  := NULL;
54010 l_adr_flex_value_set_id       := NULL;
54011 l_adr_value_type_code         := NULL;
54012 l_adr_value_combination_id    := NULL;
54013 l_adr_value_segment_code      := NULL;
54014 
54015 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
54016 l_bflow_class_code           := '';    -- 4219869 Business Flow
54017 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
54018 l_budgetary_control_flag     := 'N';
54019 
54020 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
54021 l_bflow_applied_to_amt       := NULL; -- 5132302
54022 l_entered_amt_idx            := NULL;          -- 4262811
54023 l_accted_amt_idx             := NULL;          -- 4262811
54024 l_acc_rev_flag               := NULL;          -- 4262811
54025 l_accrual_line_num           := NULL;          -- 4262811
54026 l_tmp_amt                    := NULL;          -- 4262811
54027 --
54028  
54029 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
54030     l_balance_type_code <> 'B' THEN
54031 IF NVL(p_source_24,9E125) =  10
54032  THEN 
54033 
54034    --
54035    XLA_AE_LINES_PKG.SetNewLine;
54036 
54037    p_balance_type_code          := l_balance_type_code;
54038    -- set the flag so later we will know whether the gain loss line needs to be created
54039    
54040    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
54041      p_actual_flag :='A';
54042    END IF;
54043 
54044    --
54045    -- bulk performance
54046    --
54047    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
54048                                       p_header_num   => 0); -- 4262811
54049    --
54050    -- set accounting line options
54051    --
54052    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
54053            p_natural_side_code          => 'D'
54054          , p_gain_or_loss_flag          => 'N'
54055          , p_gl_transfer_mode_code      => 'S'
54056          , p_acct_entry_type_code       => 'A'
54057          , p_switch_side_flag           => 'Y'
54058          , p_merge_duplicate_code       => 'N'
54059          );
54060    --
54061    l_acc_rev_natural_side_code := 'C';  -- 4262811
54062    -- 
54063    --
54064    -- set accounting line type info
54065    --
54066    xla_ae_lines_pkg.SetAcctLineType
54067       (p_component_type             => l_component_type
54068       ,p_event_type_code            => l_event_type_code
54069       ,p_line_definition_owner_code => l_line_definition_owner_code
54070       ,p_line_definition_code       => l_line_definition_code
54071       ,p_accounting_line_code       => l_component_code
54072       ,p_accounting_line_type_code  => l_component_type_code
54073       ,p_accounting_line_appl_id    => l_component_appl_id
54074       ,p_amb_context_code           => l_amb_context_code
54075       ,p_entity_code                => l_entity_code
54076       ,p_event_class_code           => l_event_class_code);
54077    --
54078    -- set accounting class
54079    --
54080    xla_ae_lines_pkg.SetAcctClass(
54081            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
54082          , p_ae_header_id           => l_ae_header_id
54083          );
54084 
54085    --
54086    -- set rounding class
54087    --
54088    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
54089                       'INTERORG_RECEIVABLES';
54090 
54091    --
54092    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
54093    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
54094    --
54095    -- bulk performance
54096    --
54097    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
54098 
54099    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
54100       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
54101 
54102    -- 4955764
54103    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54104       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
54105 
54106    -- 4458381 Public Sector Enh
54107    
54108    --
54109    -- set accounting attributes for the line type
54110    --
54111    l_entered_amt_idx := 3;
54112    l_accted_amt_idx  := 8;
54113    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
54114    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
54115    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
54116    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
54117    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
54118    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
54119    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
54120    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
54121    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
54122    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
54123    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
54124    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
54125    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
54126    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
54127    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
54128    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
54129    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
54130 
54131    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
54132    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
54133 
54134    ---------------------------------------------------------------------------------------------------------------
54135    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
54136    ---------------------------------------------------------------------------------------------------------------
54137    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
54138 
54139    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54140    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54141 
54142    IF xla_accounting_cache_pkg.GetValueChar
54143          (p_source_code         => 'LEDGER_CATEGORY_CODE'
54144          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
54145    AND l_bflow_method_code = 'PRIOR_ENTRY'
54146 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
54147    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
54148          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
54149        )
54150    THEN
54151          xla_ae_lines_pkg.BflowUpgEntry
54152            (p_business_method_code    => l_bflow_method_code
54153            ,p_business_class_code     => l_bflow_class_code
54154            ,p_balance_type            => l_balance_type_code);
54155    ELSE
54156       NULL;
54157 -- No business flow processing for business flow method of NONE.
54158    END IF;
54159 
54160    --
54161    -- call analytical criteria
54162    --
54163    
54164    --
54165    -- call description
54166    --
54167    -- No description or it is inherited.
54168    --
54169    -- call ADRs
54170    -- Bug 4922099
54171    --
54172    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54173         (NVL(l_actual_upg_option, 'N') = 'O') OR
54174         (NVL(l_enc_upg_option, 'N') = 'O')
54175       )
54176    THEN
54177    NULL;
54178    --
54179    --
54180    
54181   l_ccid := AcctDerRule_4(
54182            p_application_id           => p_application_id
54183          , p_ae_header_id             => l_ae_header_id 
54184 , p_source_4 => p_source_4
54185          , x_transaction_coa_id       => l_adr_transaction_coa_id
54186          , x_accounting_coa_id        => l_adr_accounting_coa_id
54187          , x_value_type_code          => l_adr_value_type_code
54188          , p_side                     => 'NA'
54189    );
54190 
54191    xla_ae_lines_pkg.set_ccid(
54192     p_code_combination_id          => l_ccid
54193   , p_value_type_code              => l_adr_value_type_code
54194   , p_transaction_coa_id           => l_adr_transaction_coa_id
54195   , p_accounting_coa_id            => l_adr_accounting_coa_id
54196   , p_adr_code                     => 'CST_DEFAULT'
54197   , p_adr_type_code                => 'S'
54198   , p_component_type               => l_component_type
54199   , p_component_code               => l_component_code
54200   , p_component_type_code          => l_component_type_code
54201   , p_component_appl_id            => l_component_appl_id
54202   , p_amb_context_code             => l_amb_context_code
54203   , p_side                         => 'NA'
54204   );
54205 
54206 
54207    --
54208    --
54209    END IF;
54210    --
54211    -- Bug 4922099
54212    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
54213           (NVL(l_enc_upg_option, 'N') = 'O')
54214         ) AND
54215         (l_bflow_method_code = 'PRIOR_ENTRY')
54216       )
54217    THEN
54218       IF
54219       --
54220       1 = 2
54221       --
54222       THEN
54223       xla_accounting_err_pkg.build_message
54224                                     (p_appli_s_name            => 'XLA'
54225                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54226                                     ,p_token_1                 => 'LINE_NUMBER'
54227                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
54228                                     ,p_token_2                 => 'LINE_TYPE_NAME'
54229                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
54230                                                                              l_component_type
54231                                                                             ,l_component_code
54232                                                                             ,l_component_type_code
54233                                                                             ,l_component_appl_id
54234                                                                             ,l_amb_context_code
54235                                                                             ,l_entity_code
54236                                                                             ,l_event_class_code
54237                                                                            )
54238                                     ,p_token_3                 => 'OWNER'
54239                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
54240                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
54241                                                                           ,p_lookup_code    => l_component_type_code
54242                                                                          )
54243                                     ,p_token_4                 => 'PRODUCT_NAME'
54244                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
54245                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
54246                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
54247                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
54248                                     ,p_ae_header_id            =>  NULL
54249                                        );
54250 
54251         IF (C_LEVEL_ERROR>= g_log_level) THEN
54252                  trace
54253                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54254                       ,p_level    => C_LEVEL_ERROR
54255                       ,p_module   => l_log_module);
54256         END IF;
54257       END IF;
54258    END IF;
54259    --
54260    --
54261    ------------------------------------------------------------------------------------------------
54262    -- 4219869 Business Flow
54263    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
54264    -- Prior Entry.  Currently, the following code is always generated.
54265    ------------------------------------------------------------------------------------------------
54266    XLA_AE_LINES_PKG.ValidateCurrentLine;
54267 
54268    ------------------------------------------------------------------------------------
54269    -- 4219869 Business Flow
54270    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
54271    ------------------------------------------------------------------------------------
54272    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54273 
54274    ----------------------------------------------------------------------------------
54275    -- 4219869 Business Flow
54276    -- Update journal entry status -- Need to generate this within IF <condition>
54277    ----------------------------------------------------------------------------------
54278    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54279          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
54280          ,p_balance_type_code => l_balance_type_code
54281          );
54282 
54283    -------------------------------------------------------------------------------------------
54284    -- 4262811 - Generate the Accrual Reversal lines
54285    -------------------------------------------------------------------------------------------
54286    BEGIN
54287       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
54288                               (g_array_event(p_event_id).array_value_num('header_index'));
54289       IF l_acc_rev_flag IS NULL THEN
54290          l_acc_rev_flag := 'N';
54291       END IF;
54292    EXCEPTION
54293       WHEN OTHERS THEN
54294          l_acc_rev_flag := 'N';
54295    END;
54296    --
54297    IF (l_acc_rev_flag = 'Y') THEN
54298 
54299        -- 4645092  ------------------------------------------------------------------------------
54300        -- To allow MPA report to determine if it should generate report process
54301        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
54302        ------------------------------------------------------------------------------------------
54303 
54304        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
54305        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
54306    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
54307    -- call ADRs
54308    -- Bug 4922099
54309    --
54310    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54311         (NVL(l_actual_upg_option, 'N') = 'O') OR
54312         (NVL(l_enc_upg_option, 'N') = 'O')
54313       )
54314    THEN
54315    NULL;
54316    --
54317    --
54318    
54319   l_ccid := AcctDerRule_4(
54320            p_application_id           => p_application_id
54321          , p_ae_header_id             => l_ae_header_id 
54322 , p_source_4 => p_source_4
54323          , x_transaction_coa_id       => l_adr_transaction_coa_id
54324          , x_accounting_coa_id        => l_adr_accounting_coa_id
54325          , x_value_type_code          => l_adr_value_type_code
54326          , p_side                     => 'NA'
54327    );
54328 
54329    xla_ae_lines_pkg.set_ccid(
54330     p_code_combination_id          => l_ccid
54331   , p_value_type_code              => l_adr_value_type_code
54332   , p_transaction_coa_id           => l_adr_transaction_coa_id
54333   , p_accounting_coa_id            => l_adr_accounting_coa_id
54334   , p_adr_code                     => 'CST_DEFAULT'
54335   , p_adr_type_code                => 'S'
54336   , p_component_type               => l_component_type
54337   , p_component_code               => l_component_code
54338   , p_component_type_code          => l_component_type_code
54339   , p_component_appl_id            => l_component_appl_id
54340   , p_amb_context_code             => l_amb_context_code
54341   , p_side                         => 'NA'
54342   );
54343 
54344 
54345    --
54346    --
54347    END IF;
54348 
54349        --
54350        -- Update the line information that should be overwritten
54351        --
54352        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
54353                                          p_header_num   => 1);
54354        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
54355 
54356        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
54357 
54358        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
54359           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
54360        END IF;
54361 
54362       --
54363       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
54364       --
54365       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
54366           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
54367       ELSE
54368           ---------------------------------------------------------------------------------------------------
54369           -- 4262811a Switch Sign
54370           ---------------------------------------------------------------------------------------------------
54371           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
54372           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54373                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54374           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54375                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54376           -- 5132302
54377           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
54378                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54379 
54380       END IF;
54381 
54382       -- 4955764
54383       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54384       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
54385 
54386 
54387       XLA_AE_LINES_PKG.ValidateCurrentLine;
54388       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54389 
54390       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54391                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
54392                ,p_balance_type_code => l_balance_type_code);
54393 
54394    END IF;
54395 
54396    -----------------------------------------------------------------------------------------
54397    -- 4262811 Multiperiod Accounting
54398    -----------------------------------------------------------------------------------------
54399      -- No MPA option is assigned.
54400 
54401 
54402 END IF;
54403 END IF;
54404 --
54405 
54406 --
54407 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54408    trace
54409       (p_msg      => 'END of AcctLineType_100'
54410       ,p_level    => C_LEVEL_PROCEDURE
54411       ,p_module   => l_log_module);
54412 END IF;
54413 --
54414 EXCEPTION
54415   WHEN xla_exceptions_pkg.application_exception THEN
54416       RAISE;
54417   WHEN OTHERS THEN
54418        xla_exceptions_pkg.raise_message
54419            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_100');
54420 END AcctLineType_100;
54421 --
54422 
54423 ---------------------------------------
54424 --
54425 -- PRIVATE FUNCTION
54426 --         AcctLineType_101
54427 --
54428 ---------------------------------------
54429 PROCEDURE AcctLineType_101 (
54430   p_application_id        IN NUMBER
54431  ,p_event_id              IN NUMBER
54432  ,p_calculate_acctd_flag  IN VARCHAR2
54433  ,p_calculate_g_l_flag    IN VARCHAR2
54434  ,p_actual_flag           IN OUT VARCHAR2
54435  ,p_balance_type_code     OUT VARCHAR2
54436  ,p_gain_or_loss_ref      OUT VARCHAR2
54437  
54438 --Cost Management Default Account
54439  , p_source_4            IN NUMBER
54440 --DISTRIBUTION_IDENTIFIER
54441  , p_source_11            IN NUMBER
54442 --Distribution Type
54443  , p_source_12            IN VARCHAR2
54444  , p_source_12_meaning    IN VARCHAR2
54445 --Entered Currency Code
54446  , p_source_15            IN VARCHAR2
54447 --Entered Amount
54448  , p_source_18            IN NUMBER
54449 --Currency Conversion Date
54450  , p_source_19            IN DATE
54451 --Currency Conversion Rate
54452  , p_source_20            IN NUMBER
54453 --Currency Conversion Type
54454  , p_source_21            IN VARCHAR2
54455 --Accounted Amount
54456  , p_source_22            IN NUMBER
54457 --Accounting Line Type
54458  , p_source_24            IN NUMBER
54459 )
54460 IS
54461 
54462 l_component_type              VARCHAR2(80);
54463 l_component_code              VARCHAR2(30);
54464 l_component_type_code         VARCHAR2(1);
54465 l_component_appl_id           INTEGER;
54466 l_amb_context_code            VARCHAR2(30);
54467 l_entity_code                 VARCHAR2(30);
54468 l_event_class_code            VARCHAR2(30);
54469 l_ae_header_id                NUMBER;
54470 l_event_type_code             VARCHAR2(30);
54471 l_line_definition_code        VARCHAR2(30);
54472 l_line_definition_owner_code  VARCHAR2(1);
54473 --
54474 -- adr variables
54475 l_segment                     VARCHAR2(30);
54476 l_ccid                        NUMBER;
54477 l_adr_transaction_coa_id      NUMBER;
54478 l_adr_accounting_coa_id       NUMBER;
54479 l_adr_flexfield_segment_code  VARCHAR2(30);
54480 l_adr_flex_value_set_id       NUMBER;
54481 l_adr_value_type_code         VARCHAR2(30);
54482 l_adr_value_combination_id    NUMBER;
54483 l_adr_value_segment_code      VARCHAR2(30);
54484 
54485 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
54486 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
54487 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
54488 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
54489 
54490 -- 4262811 Variables ------------------------------------------------------------------------------------------
54491 l_entered_amt_idx             NUMBER;
54492 l_accted_amt_idx              NUMBER;
54493 l_acc_rev_flag                VARCHAR2(1);
54494 l_accrual_line_num            NUMBER;
54495 l_tmp_amt                     NUMBER;
54496 l_acc_rev_natural_side_code   VARCHAR2(1);
54497 
54498 l_num_entries                 NUMBER;
54499 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
54500 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
54501 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
54502 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
54503 l_recog_line_1                NUMBER;
54504 l_recog_line_2                NUMBER;
54505 
54506 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
54507 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
54508 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
54509 
54510 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
54511 
54512 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
54513 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
54514 
54515 ---------------------------------------------------------------------------------------------------------------
54516 
54517 
54518 --
54519 -- bulk performance
54520 --
54521 l_balance_type_code           VARCHAR2(1);
54522 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
54523 l_log_module                  VARCHAR2(240);
54524 
54525 --
54526 -- Upgrade strategy
54527 --
54528 l_actual_upg_option           VARCHAR2(1);
54529 l_enc_upg_option           VARCHAR2(1);
54530 
54531 --
54532 BEGIN
54533 --
54534 IF g_log_enabled THEN
54535       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_101';
54536 END IF;
54537 --
54538 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54539 
54540       trace
54541          (p_msg      => 'BEGIN of AcctLineType_101'
54542          ,p_level    => C_LEVEL_PROCEDURE
54543          ,p_module   => l_log_module);
54544 
54545 END IF;
54546 --
54547 l_component_type             := 'AMB_JLT';
54548 l_component_code             := 'INTERORG_RECEIVABLES';
54549 l_component_type_code        := 'S';
54550 l_component_appl_id          :=  707;
54551 l_amb_context_code           := 'DEFAULT';
54552 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
54553 l_event_class_code           := 'USER_DEFINE';
54554 l_event_type_code            := 'UDIR_INTERORG_SHIP_NO_TP';
54555 l_line_definition_owner_code := 'S';
54556 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_NO_TP';
54557 --
54558 l_balance_type_code          := 'A';
54559 l_segment                     := NULL;
54560 l_ccid                        := NULL;
54561 l_adr_transaction_coa_id      := NULL;
54562 l_adr_accounting_coa_id       := NULL;
54563 l_adr_flexfield_segment_code  := NULL;
54564 l_adr_flex_value_set_id       := NULL;
54565 l_adr_value_type_code         := NULL;
54566 l_adr_value_combination_id    := NULL;
54567 l_adr_value_segment_code      := NULL;
54568 
54569 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
54570 l_bflow_class_code           := '';    -- 4219869 Business Flow
54571 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
54572 l_budgetary_control_flag     := 'N';
54573 
54574 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
54575 l_bflow_applied_to_amt       := NULL; -- 5132302
54576 l_entered_amt_idx            := NULL;          -- 4262811
54577 l_accted_amt_idx             := NULL;          -- 4262811
54578 l_acc_rev_flag               := NULL;          -- 4262811
54579 l_accrual_line_num           := NULL;          -- 4262811
54580 l_tmp_amt                    := NULL;          -- 4262811
54581 --
54582  
54583 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
54584     l_balance_type_code <> 'B' THEN
54585 IF NVL(p_source_24,9E125) =  10
54586  THEN 
54587 
54588    --
54589    XLA_AE_LINES_PKG.SetNewLine;
54590 
54591    p_balance_type_code          := l_balance_type_code;
54592    -- set the flag so later we will know whether the gain loss line needs to be created
54593    
54594    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
54595      p_actual_flag :='A';
54596    END IF;
54597 
54598    --
54599    -- bulk performance
54600    --
54601    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
54602                                       p_header_num   => 0); -- 4262811
54603    --
54604    -- set accounting line options
54605    --
54606    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
54607            p_natural_side_code          => 'D'
54608          , p_gain_or_loss_flag          => 'N'
54609          , p_gl_transfer_mode_code      => 'S'
54610          , p_acct_entry_type_code       => 'A'
54611          , p_switch_side_flag           => 'Y'
54612          , p_merge_duplicate_code       => 'N'
54613          );
54614    --
54615    l_acc_rev_natural_side_code := 'C';  -- 4262811
54616    -- 
54617    --
54618    -- set accounting line type info
54619    --
54620    xla_ae_lines_pkg.SetAcctLineType
54621       (p_component_type             => l_component_type
54622       ,p_event_type_code            => l_event_type_code
54623       ,p_line_definition_owner_code => l_line_definition_owner_code
54624       ,p_line_definition_code       => l_line_definition_code
54625       ,p_accounting_line_code       => l_component_code
54626       ,p_accounting_line_type_code  => l_component_type_code
54627       ,p_accounting_line_appl_id    => l_component_appl_id
54628       ,p_amb_context_code           => l_amb_context_code
54629       ,p_entity_code                => l_entity_code
54630       ,p_event_class_code           => l_event_class_code);
54631    --
54632    -- set accounting class
54633    --
54634    xla_ae_lines_pkg.SetAcctClass(
54635            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
54636          , p_ae_header_id           => l_ae_header_id
54637          );
54638 
54639    --
54640    -- set rounding class
54641    --
54642    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
54643                       'INTERORG_RECEIVABLES';
54644 
54645    --
54646    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
54647    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
54648    --
54649    -- bulk performance
54650    --
54651    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
54652 
54653    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
54654       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
54655 
54656    -- 4955764
54657    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54658       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
54659 
54660    -- 4458381 Public Sector Enh
54661    
54662    --
54663    -- set accounting attributes for the line type
54664    --
54665    l_entered_amt_idx := 3;
54666    l_accted_amt_idx  := 8;
54667    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
54668    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
54669    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
54670    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
54671    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
54672    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
54673    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
54674    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
54675    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
54676    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
54677    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
54678    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
54679    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
54680    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
54681    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
54682    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
54683    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
54684 
54685    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
54686    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
54687 
54688    ---------------------------------------------------------------------------------------------------------------
54689    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
54690    ---------------------------------------------------------------------------------------------------------------
54691    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
54692 
54693    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54694    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54695 
54696    IF xla_accounting_cache_pkg.GetValueChar
54697          (p_source_code         => 'LEDGER_CATEGORY_CODE'
54698          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
54699    AND l_bflow_method_code = 'PRIOR_ENTRY'
54700 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
54701    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
54702          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
54703        )
54704    THEN
54705          xla_ae_lines_pkg.BflowUpgEntry
54706            (p_business_method_code    => l_bflow_method_code
54707            ,p_business_class_code     => l_bflow_class_code
54708            ,p_balance_type            => l_balance_type_code);
54709    ELSE
54710       NULL;
54711 -- No business flow processing for business flow method of NONE.
54712    END IF;
54713 
54714    --
54715    -- call analytical criteria
54716    --
54717    
54718    --
54719    -- call description
54720    --
54721    -- No description or it is inherited.
54722    --
54723    -- call ADRs
54724    -- Bug 4922099
54725    --
54726    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54727         (NVL(l_actual_upg_option, 'N') = 'O') OR
54728         (NVL(l_enc_upg_option, 'N') = 'O')
54729       )
54730    THEN
54731    NULL;
54732    --
54733    --
54734    
54735   l_ccid := AcctDerRule_4(
54736            p_application_id           => p_application_id
54737          , p_ae_header_id             => l_ae_header_id 
54738 , p_source_4 => p_source_4
54739          , x_transaction_coa_id       => l_adr_transaction_coa_id
54740          , x_accounting_coa_id        => l_adr_accounting_coa_id
54741          , x_value_type_code          => l_adr_value_type_code
54742          , p_side                     => 'NA'
54743    );
54744 
54745    xla_ae_lines_pkg.set_ccid(
54746     p_code_combination_id          => l_ccid
54747   , p_value_type_code              => l_adr_value_type_code
54748   , p_transaction_coa_id           => l_adr_transaction_coa_id
54749   , p_accounting_coa_id            => l_adr_accounting_coa_id
54750   , p_adr_code                     => 'CST_DEFAULT'
54751   , p_adr_type_code                => 'S'
54752   , p_component_type               => l_component_type
54753   , p_component_code               => l_component_code
54754   , p_component_type_code          => l_component_type_code
54755   , p_component_appl_id            => l_component_appl_id
54756   , p_amb_context_code             => l_amb_context_code
54757   , p_side                         => 'NA'
54758   );
54759 
54760 
54761    --
54762    --
54763    END IF;
54764    --
54765    -- Bug 4922099
54766    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
54767           (NVL(l_enc_upg_option, 'N') = 'O')
54768         ) AND
54769         (l_bflow_method_code = 'PRIOR_ENTRY')
54770       )
54771    THEN
54772       IF
54773       --
54774       1 = 2
54775       --
54776       THEN
54777       xla_accounting_err_pkg.build_message
54778                                     (p_appli_s_name            => 'XLA'
54779                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54780                                     ,p_token_1                 => 'LINE_NUMBER'
54781                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
54782                                     ,p_token_2                 => 'LINE_TYPE_NAME'
54783                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
54784                                                                              l_component_type
54785                                                                             ,l_component_code
54786                                                                             ,l_component_type_code
54787                                                                             ,l_component_appl_id
54788                                                                             ,l_amb_context_code
54789                                                                             ,l_entity_code
54790                                                                             ,l_event_class_code
54791                                                                            )
54792                                     ,p_token_3                 => 'OWNER'
54793                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
54794                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
54795                                                                           ,p_lookup_code    => l_component_type_code
54796                                                                          )
54797                                     ,p_token_4                 => 'PRODUCT_NAME'
54798                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
54799                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
54800                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
54801                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
54802                                     ,p_ae_header_id            =>  NULL
54803                                        );
54804 
54805         IF (C_LEVEL_ERROR>= g_log_level) THEN
54806                  trace
54807                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54808                       ,p_level    => C_LEVEL_ERROR
54809                       ,p_module   => l_log_module);
54810         END IF;
54811       END IF;
54812    END IF;
54813    --
54814    --
54815    ------------------------------------------------------------------------------------------------
54816    -- 4219869 Business Flow
54817    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
54818    -- Prior Entry.  Currently, the following code is always generated.
54819    ------------------------------------------------------------------------------------------------
54820    XLA_AE_LINES_PKG.ValidateCurrentLine;
54821 
54822    ------------------------------------------------------------------------------------
54823    -- 4219869 Business Flow
54824    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
54825    ------------------------------------------------------------------------------------
54826    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54827 
54828    ----------------------------------------------------------------------------------
54829    -- 4219869 Business Flow
54830    -- Update journal entry status -- Need to generate this within IF <condition>
54831    ----------------------------------------------------------------------------------
54832    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54833          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
54834          ,p_balance_type_code => l_balance_type_code
54835          );
54836 
54837    -------------------------------------------------------------------------------------------
54838    -- 4262811 - Generate the Accrual Reversal lines
54839    -------------------------------------------------------------------------------------------
54840    BEGIN
54841       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
54842                               (g_array_event(p_event_id).array_value_num('header_index'));
54843       IF l_acc_rev_flag IS NULL THEN
54844          l_acc_rev_flag := 'N';
54845       END IF;
54846    EXCEPTION
54847       WHEN OTHERS THEN
54848          l_acc_rev_flag := 'N';
54849    END;
54850    --
54851    IF (l_acc_rev_flag = 'Y') THEN
54852 
54853        -- 4645092  ------------------------------------------------------------------------------
54854        -- To allow MPA report to determine if it should generate report process
54855        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
54856        ------------------------------------------------------------------------------------------
54857 
54858        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
54859        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
54860    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
54861    -- call ADRs
54862    -- Bug 4922099
54863    --
54864    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54865         (NVL(l_actual_upg_option, 'N') = 'O') OR
54866         (NVL(l_enc_upg_option, 'N') = 'O')
54867       )
54868    THEN
54869    NULL;
54870    --
54871    --
54872    
54873   l_ccid := AcctDerRule_4(
54874            p_application_id           => p_application_id
54875          , p_ae_header_id             => l_ae_header_id 
54876 , p_source_4 => p_source_4
54877          , x_transaction_coa_id       => l_adr_transaction_coa_id
54878          , x_accounting_coa_id        => l_adr_accounting_coa_id
54879          , x_value_type_code          => l_adr_value_type_code
54880          , p_side                     => 'NA'
54881    );
54882 
54883    xla_ae_lines_pkg.set_ccid(
54884     p_code_combination_id          => l_ccid
54885   , p_value_type_code              => l_adr_value_type_code
54886   , p_transaction_coa_id           => l_adr_transaction_coa_id
54887   , p_accounting_coa_id            => l_adr_accounting_coa_id
54888   , p_adr_code                     => 'CST_DEFAULT'
54889   , p_adr_type_code                => 'S'
54890   , p_component_type               => l_component_type
54891   , p_component_code               => l_component_code
54892   , p_component_type_code          => l_component_type_code
54893   , p_component_appl_id            => l_component_appl_id
54894   , p_amb_context_code             => l_amb_context_code
54895   , p_side                         => 'NA'
54896   );
54897 
54898 
54899    --
54900    --
54901    END IF;
54902 
54903        --
54904        -- Update the line information that should be overwritten
54905        --
54906        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
54907                                          p_header_num   => 1);
54908        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
54909 
54910        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
54911 
54912        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
54913           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
54914        END IF;
54915 
54916       --
54917       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
54918       --
54919       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
54920           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
54921       ELSE
54922           ---------------------------------------------------------------------------------------------------
54923           -- 4262811a Switch Sign
54924           ---------------------------------------------------------------------------------------------------
54925           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
54926           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54927                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54928           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54929                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54930           -- 5132302
54931           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
54932                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54933 
54934       END IF;
54935 
54936       -- 4955764
54937       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54938       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
54939 
54940 
54941       XLA_AE_LINES_PKG.ValidateCurrentLine;
54942       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54943 
54944       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54945                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
54946                ,p_balance_type_code => l_balance_type_code);
54947 
54948    END IF;
54949 
54950    -----------------------------------------------------------------------------------------
54951    -- 4262811 Multiperiod Accounting
54952    -----------------------------------------------------------------------------------------
54953      -- No MPA option is assigned.
54954 
54955 
54956 END IF;
54957 END IF;
54958 --
54959 
54960 --
54961 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54962    trace
54963       (p_msg      => 'END of AcctLineType_101'
54964       ,p_level    => C_LEVEL_PROCEDURE
54965       ,p_module   => l_log_module);
54966 END IF;
54967 --
54968 EXCEPTION
54969   WHEN xla_exceptions_pkg.application_exception THEN
54970       RAISE;
54971   WHEN OTHERS THEN
54972        xla_exceptions_pkg.raise_message
54973            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_101');
54974 END AcctLineType_101;
54975 --
54976 
54977 ---------------------------------------
54978 --
54979 -- PRIVATE FUNCTION
54980 --         AcctLineType_102
54981 --
54982 ---------------------------------------
54983 PROCEDURE AcctLineType_102 (
54984   p_application_id        IN NUMBER
54985  ,p_event_id              IN NUMBER
54986  ,p_calculate_acctd_flag  IN VARCHAR2
54987  ,p_calculate_g_l_flag    IN VARCHAR2
54988  ,p_actual_flag           IN OUT VARCHAR2
54989  ,p_balance_type_code     OUT VARCHAR2
54990  ,p_gain_or_loss_ref      OUT VARCHAR2
54991  
54992 --Cost Management Default Account
54993  , p_source_4            IN NUMBER
54994 --DISTRIBUTION_IDENTIFIER
54995  , p_source_11            IN NUMBER
54996 --Distribution Type
54997  , p_source_12            IN VARCHAR2
54998  , p_source_12_meaning    IN VARCHAR2
54999 --Entered Currency Code
55000  , p_source_15            IN VARCHAR2
55001 --Entered Amount
55002  , p_source_18            IN NUMBER
55003 --Currency Conversion Date
55004  , p_source_19            IN DATE
55005 --Currency Conversion Rate
55006  , p_source_20            IN NUMBER
55007 --Currency Conversion Type
55008  , p_source_21            IN VARCHAR2
55009 --Accounted Amount
55010  , p_source_22            IN NUMBER
55011 --Accounting Line Type
55012  , p_source_24            IN NUMBER
55013 )
55014 IS
55015 
55016 l_component_type              VARCHAR2(80);
55017 l_component_code              VARCHAR2(30);
55018 l_component_type_code         VARCHAR2(1);
55019 l_component_appl_id           INTEGER;
55020 l_amb_context_code            VARCHAR2(30);
55021 l_entity_code                 VARCHAR2(30);
55022 l_event_class_code            VARCHAR2(30);
55023 l_ae_header_id                NUMBER;
55024 l_event_type_code             VARCHAR2(30);
55025 l_line_definition_code        VARCHAR2(30);
55026 l_line_definition_owner_code  VARCHAR2(1);
55027 --
55028 -- adr variables
55029 l_segment                     VARCHAR2(30);
55030 l_ccid                        NUMBER;
55031 l_adr_transaction_coa_id      NUMBER;
55032 l_adr_accounting_coa_id       NUMBER;
55033 l_adr_flexfield_segment_code  VARCHAR2(30);
55034 l_adr_flex_value_set_id       NUMBER;
55035 l_adr_value_type_code         VARCHAR2(30);
55036 l_adr_value_combination_id    NUMBER;
55037 l_adr_value_segment_code      VARCHAR2(30);
55038 
55039 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
55040 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
55041 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
55042 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
55043 
55044 -- 4262811 Variables ------------------------------------------------------------------------------------------
55045 l_entered_amt_idx             NUMBER;
55046 l_accted_amt_idx              NUMBER;
55047 l_acc_rev_flag                VARCHAR2(1);
55048 l_accrual_line_num            NUMBER;
55049 l_tmp_amt                     NUMBER;
55050 l_acc_rev_natural_side_code   VARCHAR2(1);
55051 
55052 l_num_entries                 NUMBER;
55053 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
55054 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
55055 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
55056 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
55057 l_recog_line_1                NUMBER;
55058 l_recog_line_2                NUMBER;
55059 
55060 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
55061 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
55062 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
55063 
55064 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
55065 
55066 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
55067 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
55068 
55069 ---------------------------------------------------------------------------------------------------------------
55070 
55071 
55072 --
55073 -- bulk performance
55074 --
55075 l_balance_type_code           VARCHAR2(1);
55076 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
55077 l_log_module                  VARCHAR2(240);
55078 
55079 --
55080 -- Upgrade strategy
55081 --
55082 l_actual_upg_option           VARCHAR2(1);
55083 l_enc_upg_option           VARCHAR2(1);
55084 
55085 --
55086 BEGIN
55087 --
55088 IF g_log_enabled THEN
55089       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_102';
55090 END IF;
55091 --
55092 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55093 
55094       trace
55095          (p_msg      => 'BEGIN of AcctLineType_102'
55096          ,p_level    => C_LEVEL_PROCEDURE
55097          ,p_module   => l_log_module);
55098 
55099 END IF;
55100 --
55101 l_component_type             := 'AMB_JLT';
55102 l_component_code             := 'INTERORG_RECEIVABLES';
55103 l_component_type_code        := 'S';
55104 l_component_appl_id          :=  707;
55105 l_amb_context_code           := 'DEFAULT';
55106 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
55107 l_event_class_code           := 'USER_DEFINE';
55108 l_event_type_code            := 'UDIR_INTERORG_RCPT_TP';
55109 l_line_definition_owner_code := 'S';
55110 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_TP';
55111 --
55112 l_balance_type_code          := 'A';
55113 l_segment                     := NULL;
55114 l_ccid                        := NULL;
55115 l_adr_transaction_coa_id      := NULL;
55116 l_adr_accounting_coa_id       := NULL;
55117 l_adr_flexfield_segment_code  := NULL;
55118 l_adr_flex_value_set_id       := NULL;
55119 l_adr_value_type_code         := NULL;
55120 l_adr_value_combination_id    := NULL;
55121 l_adr_value_segment_code      := NULL;
55122 
55123 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
55124 l_bflow_class_code           := '';    -- 4219869 Business Flow
55125 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
55126 l_budgetary_control_flag     := 'N';
55127 
55128 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
55129 l_bflow_applied_to_amt       := NULL; -- 5132302
55130 l_entered_amt_idx            := NULL;          -- 4262811
55131 l_accted_amt_idx             := NULL;          -- 4262811
55132 l_acc_rev_flag               := NULL;          -- 4262811
55133 l_accrual_line_num           := NULL;          -- 4262811
55134 l_tmp_amt                    := NULL;          -- 4262811
55135 --
55136  
55137 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
55138     l_balance_type_code <> 'B' THEN
55139 IF NVL(p_source_24,9E125) =  10
55140  THEN 
55141 
55142    --
55143    XLA_AE_LINES_PKG.SetNewLine;
55144 
55145    p_balance_type_code          := l_balance_type_code;
55146    -- set the flag so later we will know whether the gain loss line needs to be created
55147    
55148    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
55149      p_actual_flag :='A';
55150    END IF;
55151 
55152    --
55153    -- bulk performance
55154    --
55155    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
55156                                       p_header_num   => 0); -- 4262811
55157    --
55158    -- set accounting line options
55159    --
55160    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
55161            p_natural_side_code          => 'D'
55162          , p_gain_or_loss_flag          => 'N'
55163          , p_gl_transfer_mode_code      => 'S'
55164          , p_acct_entry_type_code       => 'A'
55165          , p_switch_side_flag           => 'Y'
55166          , p_merge_duplicate_code       => 'N'
55167          );
55168    --
55169    l_acc_rev_natural_side_code := 'C';  -- 4262811
55170    -- 
55171    --
55172    -- set accounting line type info
55173    --
55174    xla_ae_lines_pkg.SetAcctLineType
55175       (p_component_type             => l_component_type
55176       ,p_event_type_code            => l_event_type_code
55177       ,p_line_definition_owner_code => l_line_definition_owner_code
55178       ,p_line_definition_code       => l_line_definition_code
55179       ,p_accounting_line_code       => l_component_code
55180       ,p_accounting_line_type_code  => l_component_type_code
55181       ,p_accounting_line_appl_id    => l_component_appl_id
55182       ,p_amb_context_code           => l_amb_context_code
55183       ,p_entity_code                => l_entity_code
55184       ,p_event_class_code           => l_event_class_code);
55185    --
55186    -- set accounting class
55187    --
55188    xla_ae_lines_pkg.SetAcctClass(
55189            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
55190          , p_ae_header_id           => l_ae_header_id
55191          );
55192 
55193    --
55194    -- set rounding class
55195    --
55196    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
55197                       'INTERORG_RECEIVABLES';
55198 
55199    --
55200    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
55201    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
55202    --
55203    -- bulk performance
55204    --
55205    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
55206 
55207    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
55208       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
55209 
55210    -- 4955764
55211    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55212       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
55213 
55214    -- 4458381 Public Sector Enh
55215    
55216    --
55217    -- set accounting attributes for the line type
55218    --
55219    l_entered_amt_idx := 3;
55220    l_accted_amt_idx  := 8;
55221    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
55222    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
55223    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
55224    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
55225    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
55226    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
55227    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
55228    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
55229    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
55230    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
55231    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
55232    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
55233    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
55234    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
55235    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
55236    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
55237    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
55238 
55239    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
55240    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
55241 
55242    ---------------------------------------------------------------------------------------------------------------
55243    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
55244    ---------------------------------------------------------------------------------------------------------------
55245    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
55246 
55247    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55248    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55249 
55250    IF xla_accounting_cache_pkg.GetValueChar
55251          (p_source_code         => 'LEDGER_CATEGORY_CODE'
55252          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
55253    AND l_bflow_method_code = 'PRIOR_ENTRY'
55254 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
55255    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
55256          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
55257        )
55258    THEN
55259          xla_ae_lines_pkg.BflowUpgEntry
55260            (p_business_method_code    => l_bflow_method_code
55261            ,p_business_class_code     => l_bflow_class_code
55262            ,p_balance_type            => l_balance_type_code);
55263    ELSE
55264       NULL;
55265 -- No business flow processing for business flow method of NONE.
55266    END IF;
55267 
55268    --
55269    -- call analytical criteria
55270    --
55271    
55272    --
55273    -- call description
55274    --
55275    -- No description or it is inherited.
55276    --
55277    -- call ADRs
55278    -- Bug 4922099
55279    --
55280    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
55281         (NVL(l_actual_upg_option, 'N') = 'O') OR
55282         (NVL(l_enc_upg_option, 'N') = 'O')
55283       )
55284    THEN
55285    NULL;
55286    --
55287    --
55288    
55289   l_ccid := AcctDerRule_4(
55290            p_application_id           => p_application_id
55291          , p_ae_header_id             => l_ae_header_id 
55292 , p_source_4 => p_source_4
55293          , x_transaction_coa_id       => l_adr_transaction_coa_id
55294          , x_accounting_coa_id        => l_adr_accounting_coa_id
55295          , x_value_type_code          => l_adr_value_type_code
55296          , p_side                     => 'NA'
55297    );
55298 
55299    xla_ae_lines_pkg.set_ccid(
55300     p_code_combination_id          => l_ccid
55301   , p_value_type_code              => l_adr_value_type_code
55302   , p_transaction_coa_id           => l_adr_transaction_coa_id
55303   , p_accounting_coa_id            => l_adr_accounting_coa_id
55304   , p_adr_code                     => 'CST_DEFAULT'
55305   , p_adr_type_code                => 'S'
55306   , p_component_type               => l_component_type
55307   , p_component_code               => l_component_code
55308   , p_component_type_code          => l_component_type_code
55309   , p_component_appl_id            => l_component_appl_id
55310   , p_amb_context_code             => l_amb_context_code
55311   , p_side                         => 'NA'
55312   );
55313 
55314 
55315    --
55316    --
55317    END IF;
55318    --
55319    -- Bug 4922099
55320    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
55321           (NVL(l_enc_upg_option, 'N') = 'O')
55322         ) AND
55323         (l_bflow_method_code = 'PRIOR_ENTRY')
55324       )
55325    THEN
55326       IF
55327       --
55328       1 = 2
55329       --
55330       THEN
55331       xla_accounting_err_pkg.build_message
55332                                     (p_appli_s_name            => 'XLA'
55333                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55334                                     ,p_token_1                 => 'LINE_NUMBER'
55335                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
55336                                     ,p_token_2                 => 'LINE_TYPE_NAME'
55337                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
55338                                                                              l_component_type
55339                                                                             ,l_component_code
55340                                                                             ,l_component_type_code
55341                                                                             ,l_component_appl_id
55342                                                                             ,l_amb_context_code
55343                                                                             ,l_entity_code
55344                                                                             ,l_event_class_code
55345                                                                            )
55346                                     ,p_token_3                 => 'OWNER'
55347                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
55348                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
55349                                                                           ,p_lookup_code    => l_component_type_code
55350                                                                          )
55351                                     ,p_token_4                 => 'PRODUCT_NAME'
55352                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
55353                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
55354                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
55355                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
55356                                     ,p_ae_header_id            =>  NULL
55357                                        );
55358 
55359         IF (C_LEVEL_ERROR>= g_log_level) THEN
55360                  trace
55361                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55362                       ,p_level    => C_LEVEL_ERROR
55363                       ,p_module   => l_log_module);
55364         END IF;
55365       END IF;
55366    END IF;
55367    --
55368    --
55369    ------------------------------------------------------------------------------------------------
55370    -- 4219869 Business Flow
55371    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
55372    -- Prior Entry.  Currently, the following code is always generated.
55373    ------------------------------------------------------------------------------------------------
55374    XLA_AE_LINES_PKG.ValidateCurrentLine;
55375 
55376    ------------------------------------------------------------------------------------
55377    -- 4219869 Business Flow
55378    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
55379    ------------------------------------------------------------------------------------
55380    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55381 
55382    ----------------------------------------------------------------------------------
55383    -- 4219869 Business Flow
55384    -- Update journal entry status -- Need to generate this within IF <condition>
55385    ----------------------------------------------------------------------------------
55386    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55387          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
55388          ,p_balance_type_code => l_balance_type_code
55389          );
55390 
55391    -------------------------------------------------------------------------------------------
55392    -- 4262811 - Generate the Accrual Reversal lines
55393    -------------------------------------------------------------------------------------------
55394    BEGIN
55395       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
55396                               (g_array_event(p_event_id).array_value_num('header_index'));
55397       IF l_acc_rev_flag IS NULL THEN
55398          l_acc_rev_flag := 'N';
55399       END IF;
55400    EXCEPTION
55401       WHEN OTHERS THEN
55402          l_acc_rev_flag := 'N';
55403    END;
55404    --
55405    IF (l_acc_rev_flag = 'Y') THEN
55406 
55407        -- 4645092  ------------------------------------------------------------------------------
55408        -- To allow MPA report to determine if it should generate report process
55409        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
55410        ------------------------------------------------------------------------------------------
55411 
55412        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
55413        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
55414    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
55415    -- call ADRs
55416    -- Bug 4922099
55417    --
55418    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
55419         (NVL(l_actual_upg_option, 'N') = 'O') OR
55420         (NVL(l_enc_upg_option, 'N') = 'O')
55421       )
55422    THEN
55423    NULL;
55424    --
55425    --
55426    
55427   l_ccid := AcctDerRule_4(
55428            p_application_id           => p_application_id
55429          , p_ae_header_id             => l_ae_header_id 
55430 , p_source_4 => p_source_4
55431          , x_transaction_coa_id       => l_adr_transaction_coa_id
55432          , x_accounting_coa_id        => l_adr_accounting_coa_id
55433          , x_value_type_code          => l_adr_value_type_code
55434          , p_side                     => 'NA'
55435    );
55436 
55437    xla_ae_lines_pkg.set_ccid(
55438     p_code_combination_id          => l_ccid
55439   , p_value_type_code              => l_adr_value_type_code
55440   , p_transaction_coa_id           => l_adr_transaction_coa_id
55441   , p_accounting_coa_id            => l_adr_accounting_coa_id
55442   , p_adr_code                     => 'CST_DEFAULT'
55443   , p_adr_type_code                => 'S'
55444   , p_component_type               => l_component_type
55445   , p_component_code               => l_component_code
55446   , p_component_type_code          => l_component_type_code
55447   , p_component_appl_id            => l_component_appl_id
55448   , p_amb_context_code             => l_amb_context_code
55449   , p_side                         => 'NA'
55450   );
55451 
55452 
55453    --
55454    --
55455    END IF;
55456 
55457        --
55458        -- Update the line information that should be overwritten
55459        --
55460        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
55461                                          p_header_num   => 1);
55462        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
55463 
55464        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
55465 
55466        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
55467           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
55468        END IF;
55469 
55470       --
55471       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
55472       --
55473       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
55474           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
55475       ELSE
55476           ---------------------------------------------------------------------------------------------------
55477           -- 4262811a Switch Sign
55478           ---------------------------------------------------------------------------------------------------
55479           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
55480           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
55481                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55482           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
55483                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55484           -- 5132302
55485           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
55486                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55487 
55488       END IF;
55489 
55490       -- 4955764
55491       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55492       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
55493 
55494 
55495       XLA_AE_LINES_PKG.ValidateCurrentLine;
55496       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55497 
55498       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55499                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
55500                ,p_balance_type_code => l_balance_type_code);
55501 
55502    END IF;
55503 
55504    -----------------------------------------------------------------------------------------
55505    -- 4262811 Multiperiod Accounting
55506    -----------------------------------------------------------------------------------------
55507      -- No MPA option is assigned.
55508 
55509 
55510 END IF;
55511 END IF;
55512 --
55513 
55514 --
55515 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55516    trace
55517       (p_msg      => 'END of AcctLineType_102'
55518       ,p_level    => C_LEVEL_PROCEDURE
55519       ,p_module   => l_log_module);
55520 END IF;
55521 --
55522 EXCEPTION
55523   WHEN xla_exceptions_pkg.application_exception THEN
55524       RAISE;
55525   WHEN OTHERS THEN
55526        xla_exceptions_pkg.raise_message
55527            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_102');
55528 END AcctLineType_102;
55529 --
55530 
55531 ---------------------------------------
55532 --
55533 -- PRIVATE FUNCTION
55534 --         AcctLineType_103
55535 --
55536 ---------------------------------------
55537 PROCEDURE AcctLineType_103 (
55538   p_application_id        IN NUMBER
55539  ,p_event_id              IN NUMBER
55540  ,p_calculate_acctd_flag  IN VARCHAR2
55541  ,p_calculate_g_l_flag    IN VARCHAR2
55542  ,p_actual_flag           IN OUT VARCHAR2
55543  ,p_balance_type_code     OUT VARCHAR2
55544  ,p_gain_or_loss_ref      OUT VARCHAR2
55545  
55546 --Cost Management Default Account
55547  , p_source_4            IN NUMBER
55548 --Applied to Application ID
55549  , p_source_6            IN NUMBER
55550 --Applied to Distribution Link Type
55551  , p_source_7            IN VARCHAR2
55552 --Applied to Entity Code
55553  , p_source_8            IN VARCHAR2
55554 --DISTRIBUTION_IDENTIFIER
55555  , p_source_11            IN NUMBER
55556 --Distribution Type
55557  , p_source_12            IN VARCHAR2
55558  , p_source_12_meaning    IN VARCHAR2
55559 --Encumbrance Reversal Amount Entered
55560  , p_source_14            IN NUMBER
55561 --Entered Currency Code
55562  , p_source_15            IN VARCHAR2
55563 --Transaction Encumbrance Reversal Amount
55564  , p_source_16            IN NUMBER
55565 --Entered Amount
55566  , p_source_18            IN NUMBER
55567 --Currency Conversion Date
55568  , p_source_19            IN DATE
55569 --Currency Conversion Rate
55570  , p_source_20            IN NUMBER
55571 --Currency Conversion Type
55572  , p_source_21            IN VARCHAR2
55573 --Accounted Amount
55574  , p_source_22            IN NUMBER
55575 --Accounting Line Type
55576  , p_source_24            IN NUMBER
55577 --Costing Encumbrance Upgrade Option
55578  , p_source_27            IN VARCHAR2
55579 --TXN_PO_DISTRIBUTION_ID
55580  , p_source_28            IN NUMBER
55581 --TXN_PO_HEADER_ID
55582  , p_source_29            IN NUMBER
55583 --Requisition Budget Account
55584  , p_source_30            IN NUMBER
55585 --Requisition Encumbrance Type Identifier
55586  , p_source_31            IN NUMBER
55587 )
55588 IS
55589 
55590 l_component_type              VARCHAR2(80);
55591 l_component_code              VARCHAR2(30);
55592 l_component_type_code         VARCHAR2(1);
55593 l_component_appl_id           INTEGER;
55594 l_amb_context_code            VARCHAR2(30);
55595 l_entity_code                 VARCHAR2(30);
55596 l_event_class_code            VARCHAR2(30);
55597 l_ae_header_id                NUMBER;
55598 l_event_type_code             VARCHAR2(30);
55599 l_line_definition_code        VARCHAR2(30);
55600 l_line_definition_owner_code  VARCHAR2(1);
55601 --
55602 -- adr variables
55603 l_segment                     VARCHAR2(30);
55604 l_ccid                        NUMBER;
55605 l_adr_transaction_coa_id      NUMBER;
55606 l_adr_accounting_coa_id       NUMBER;
55607 l_adr_flexfield_segment_code  VARCHAR2(30);
55608 l_adr_flex_value_set_id       NUMBER;
55609 l_adr_value_type_code         VARCHAR2(30);
55610 l_adr_value_combination_id    NUMBER;
55611 l_adr_value_segment_code      VARCHAR2(30);
55612 
55613 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
55614 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
55615 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
55616 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
55617 
55618 -- 4262811 Variables ------------------------------------------------------------------------------------------
55619 l_entered_amt_idx             NUMBER;
55620 l_accted_amt_idx              NUMBER;
55621 l_acc_rev_flag                VARCHAR2(1);
55622 l_accrual_line_num            NUMBER;
55623 l_tmp_amt                     NUMBER;
55624 l_acc_rev_natural_side_code   VARCHAR2(1);
55625 
55626 l_num_entries                 NUMBER;
55627 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
55628 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
55629 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
55630 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
55631 l_recog_line_1                NUMBER;
55632 l_recog_line_2                NUMBER;
55633 
55634 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
55635 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
55636 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
55637 
55638 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
55639 
55640 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
55641 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
55642 
55643 ---------------------------------------------------------------------------------------------------------------
55644 
55645 
55646 --
55647 -- bulk performance
55648 --
55649 l_balance_type_code           VARCHAR2(1);
55650 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
55651 l_log_module                  VARCHAR2(240);
55652 
55653 --
55654 -- Upgrade strategy
55655 --
55656 l_actual_upg_option           VARCHAR2(1);
55657 l_enc_upg_option           VARCHAR2(1);
55658 
55659 --
55660 BEGIN
55661 --
55662 IF g_log_enabled THEN
55663       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_103';
55664 END IF;
55665 --
55666 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55667 
55668       trace
55669          (p_msg      => 'BEGIN of AcctLineType_103'
55670          ,p_level    => C_LEVEL_PROCEDURE
55671          ,p_module   => l_log_module);
55672 
55673 END IF;
55674 --
55675 l_component_type             := 'AMB_JLT';
55676 l_component_code             := 'INTERORG_RECEIVABLES';
55677 l_component_type_code        := 'S';
55678 l_component_appl_id          :=  707;
55679 l_amb_context_code           := 'DEFAULT';
55680 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
55681 l_event_class_code           := 'DIR_INTERORG_RCPT';
55682 l_event_type_code            := 'DIR_INTERORG_RCPT_ALL';
55683 l_line_definition_owner_code := 'S';
55684 l_line_definition_code       := 'DIRECT_INTERORG_RCPT';
55685 --
55686 l_balance_type_code          := 'A';
55687 l_segment                     := NULL;
55688 l_ccid                        := NULL;
55689 l_adr_transaction_coa_id      := NULL;
55690 l_adr_accounting_coa_id       := NULL;
55691 l_adr_flexfield_segment_code  := NULL;
55692 l_adr_flex_value_set_id       := NULL;
55693 l_adr_value_type_code         := NULL;
55694 l_adr_value_combination_id    := NULL;
55695 l_adr_value_segment_code      := NULL;
55696 
55697 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
55698 l_bflow_class_code           := '';    -- 4219869 Business Flow
55699 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
55700 l_budgetary_control_flag     := 'N';
55701 
55702 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
55703 l_bflow_applied_to_amt       := NULL; -- 5132302
55704 l_entered_amt_idx            := NULL;          -- 4262811
55705 l_accted_amt_idx             := NULL;          -- 4262811
55706 l_acc_rev_flag               := NULL;          -- 4262811
55707 l_accrual_line_num           := NULL;          -- 4262811
55708 l_tmp_amt                    := NULL;          -- 4262811
55709 --
55710  
55711 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
55712     l_balance_type_code <> 'B' THEN
55713 IF NVL(p_source_24,9E125) =  10
55714  THEN 
55715 
55716    --
55717    XLA_AE_LINES_PKG.SetNewLine;
55718 
55719    p_balance_type_code          := l_balance_type_code;
55720    -- set the flag so later we will know whether the gain loss line needs to be created
55721    
55722    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
55723      p_actual_flag :='A';
55724    END IF;
55725 
55726    --
55727    -- bulk performance
55728    --
55729    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
55730                                       p_header_num   => 0); -- 4262811
55731    --
55732    -- set accounting line options
55733    --
55734    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
55735            p_natural_side_code          => 'D'
55736          , p_gain_or_loss_flag          => 'N'
55737          , p_gl_transfer_mode_code      => 'S'
55738          , p_acct_entry_type_code       => 'A'
55739          , p_switch_side_flag           => 'Y'
55740          , p_merge_duplicate_code       => 'N'
55741          );
55742    --
55743    l_acc_rev_natural_side_code := 'C';  -- 4262811
55744    -- 
55745    --
55746    -- set accounting line type info
55747    --
55748    xla_ae_lines_pkg.SetAcctLineType
55749       (p_component_type             => l_component_type
55750       ,p_event_type_code            => l_event_type_code
55751       ,p_line_definition_owner_code => l_line_definition_owner_code
55752       ,p_line_definition_code       => l_line_definition_code
55753       ,p_accounting_line_code       => l_component_code
55754       ,p_accounting_line_type_code  => l_component_type_code
55755       ,p_accounting_line_appl_id    => l_component_appl_id
55756       ,p_amb_context_code           => l_amb_context_code
55757       ,p_entity_code                => l_entity_code
55758       ,p_event_class_code           => l_event_class_code);
55759    --
55760    -- set accounting class
55761    --
55762    xla_ae_lines_pkg.SetAcctClass(
55763            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
55764          , p_ae_header_id           => l_ae_header_id
55765          );
55766 
55767    --
55768    -- set rounding class
55769    --
55770    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
55771                       'INTERORG_RECEIVABLES';
55772 
55773    --
55774    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
55775    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
55776    --
55777    -- bulk performance
55778    --
55779    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
55780 
55781    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
55782       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
55783 
55784    -- 4955764
55785    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55786       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
55787 
55788    -- 4458381 Public Sector Enh
55789    
55790    --
55791    -- set accounting attributes for the line type
55792    --
55793    l_entered_amt_idx := 17;
55794    l_accted_amt_idx  := 22;
55795    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
55796    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
55797    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
55798    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
55799    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
55800    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
55801    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
55802    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
55803    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
55804    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
55805    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
55806    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
55807    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
55808    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
55809    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
55810    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
55811    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
55812    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
55813    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
55814    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
55815    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
55816    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
55817    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
55818    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
55819    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
55820    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
55821    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
55822    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
55823    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
55824    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
55825    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
55826    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
55827    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
55828    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
55829    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
55830    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
55831    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
55832    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
55833    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
55834    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
55835    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
55836    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
55837    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
55838    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
55839    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
55840    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
55841    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
55842    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
55843    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
55844 
55845    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
55846    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
55847 
55848    ---------------------------------------------------------------------------------------------------------------
55849    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
55850    ---------------------------------------------------------------------------------------------------------------
55851    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
55852 
55853    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55854    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55855 
55856    IF xla_accounting_cache_pkg.GetValueChar
55857          (p_source_code         => 'LEDGER_CATEGORY_CODE'
55858          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
55859    AND l_bflow_method_code = 'PRIOR_ENTRY'
55860 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
55861    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
55862          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
55863        )
55864    THEN
55865          xla_ae_lines_pkg.BflowUpgEntry
55866            (p_business_method_code    => l_bflow_method_code
55867            ,p_business_class_code     => l_bflow_class_code
55868            ,p_balance_type            => l_balance_type_code);
55869    ELSE
55870       NULL;
55871 -- No business flow processing for business flow method of NONE.
55872    END IF;
55873 
55874    --
55875    -- call analytical criteria
55876    --
55877    
55878    --
55879    -- call description
55880    --
55881    -- No description or it is inherited.
55882    --
55883    -- call ADRs
55884    -- Bug 4922099
55885    --
55886    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
55887         (NVL(l_actual_upg_option, 'N') = 'O') OR
55888         (NVL(l_enc_upg_option, 'N') = 'O')
55889       )
55890    THEN
55891    NULL;
55892    --
55893    --
55894    
55895   l_ccid := AcctDerRule_4(
55896            p_application_id           => p_application_id
55897          , p_ae_header_id             => l_ae_header_id 
55898 , p_source_4 => p_source_4
55899          , x_transaction_coa_id       => l_adr_transaction_coa_id
55900          , x_accounting_coa_id        => l_adr_accounting_coa_id
55901          , x_value_type_code          => l_adr_value_type_code
55902          , p_side                     => 'NA'
55903    );
55904 
55905    xla_ae_lines_pkg.set_ccid(
55906     p_code_combination_id          => l_ccid
55907   , p_value_type_code              => l_adr_value_type_code
55908   , p_transaction_coa_id           => l_adr_transaction_coa_id
55909   , p_accounting_coa_id            => l_adr_accounting_coa_id
55910   , p_adr_code                     => 'CST_DEFAULT'
55911   , p_adr_type_code                => 'S'
55912   , p_component_type               => l_component_type
55913   , p_component_code               => l_component_code
55914   , p_component_type_code          => l_component_type_code
55915   , p_component_appl_id            => l_component_appl_id
55916   , p_amb_context_code             => l_amb_context_code
55917   , p_side                         => 'NA'
55918   );
55919 
55920 
55921    --
55922    --
55923    END IF;
55924    --
55925    -- Bug 4922099
55926    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
55927           (NVL(l_enc_upg_option, 'N') = 'O')
55928         ) AND
55929         (l_bflow_method_code = 'PRIOR_ENTRY')
55930       )
55931    THEN
55932       IF
55933       --
55934       1 = 2
55935       --
55936       THEN
55937       xla_accounting_err_pkg.build_message
55938                                     (p_appli_s_name            => 'XLA'
55939                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55940                                     ,p_token_1                 => 'LINE_NUMBER'
55941                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
55942                                     ,p_token_2                 => 'LINE_TYPE_NAME'
55943                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
55944                                                                              l_component_type
55945                                                                             ,l_component_code
55946                                                                             ,l_component_type_code
55947                                                                             ,l_component_appl_id
55948                                                                             ,l_amb_context_code
55949                                                                             ,l_entity_code
55950                                                                             ,l_event_class_code
55951                                                                            )
55952                                     ,p_token_3                 => 'OWNER'
55953                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
55954                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
55955                                                                           ,p_lookup_code    => l_component_type_code
55956                                                                          )
55957                                     ,p_token_4                 => 'PRODUCT_NAME'
55958                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
55959                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
55960                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
55961                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
55962                                     ,p_ae_header_id            =>  NULL
55963                                        );
55964 
55965         IF (C_LEVEL_ERROR>= g_log_level) THEN
55966                  trace
55967                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55968                       ,p_level    => C_LEVEL_ERROR
55969                       ,p_module   => l_log_module);
55970         END IF;
55971       END IF;
55972    END IF;
55973    --
55974    --
55975    ------------------------------------------------------------------------------------------------
55976    -- 4219869 Business Flow
55977    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
55978    -- Prior Entry.  Currently, the following code is always generated.
55979    ------------------------------------------------------------------------------------------------
55980    XLA_AE_LINES_PKG.ValidateCurrentLine;
55981 
55982    ------------------------------------------------------------------------------------
55983    -- 4219869 Business Flow
55984    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
55985    ------------------------------------------------------------------------------------
55986    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55987 
55988    ----------------------------------------------------------------------------------
55989    -- 4219869 Business Flow
55990    -- Update journal entry status -- Need to generate this within IF <condition>
55991    ----------------------------------------------------------------------------------
55992    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55993          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
55994          ,p_balance_type_code => l_balance_type_code
55995          );
55996 
55997    -------------------------------------------------------------------------------------------
55998    -- 4262811 - Generate the Accrual Reversal lines
55999    -------------------------------------------------------------------------------------------
56000    BEGIN
56001       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
56002                               (g_array_event(p_event_id).array_value_num('header_index'));
56003       IF l_acc_rev_flag IS NULL THEN
56004          l_acc_rev_flag := 'N';
56005       END IF;
56006    EXCEPTION
56007       WHEN OTHERS THEN
56008          l_acc_rev_flag := 'N';
56009    END;
56010    --
56011    IF (l_acc_rev_flag = 'Y') THEN
56012 
56013        -- 4645092  ------------------------------------------------------------------------------
56014        -- To allow MPA report to determine if it should generate report process
56015        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
56016        ------------------------------------------------------------------------------------------
56017 
56018        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
56019        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
56020    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
56021    -- call ADRs
56022    -- Bug 4922099
56023    --
56024    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
56025         (NVL(l_actual_upg_option, 'N') = 'O') OR
56026         (NVL(l_enc_upg_option, 'N') = 'O')
56027       )
56028    THEN
56029    NULL;
56030    --
56031    --
56032    
56033   l_ccid := AcctDerRule_4(
56034            p_application_id           => p_application_id
56035          , p_ae_header_id             => l_ae_header_id 
56036 , p_source_4 => p_source_4
56037          , x_transaction_coa_id       => l_adr_transaction_coa_id
56038          , x_accounting_coa_id        => l_adr_accounting_coa_id
56039          , x_value_type_code          => l_adr_value_type_code
56040          , p_side                     => 'NA'
56041    );
56042 
56043    xla_ae_lines_pkg.set_ccid(
56044     p_code_combination_id          => l_ccid
56045   , p_value_type_code              => l_adr_value_type_code
56046   , p_transaction_coa_id           => l_adr_transaction_coa_id
56047   , p_accounting_coa_id            => l_adr_accounting_coa_id
56048   , p_adr_code                     => 'CST_DEFAULT'
56049   , p_adr_type_code                => 'S'
56050   , p_component_type               => l_component_type
56051   , p_component_code               => l_component_code
56052   , p_component_type_code          => l_component_type_code
56053   , p_component_appl_id            => l_component_appl_id
56054   , p_amb_context_code             => l_amb_context_code
56055   , p_side                         => 'NA'
56056   );
56057 
56058 
56059    --
56060    --
56061    END IF;
56062 
56063        --
56064        -- Update the line information that should be overwritten
56065        --
56066        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
56067                                          p_header_num   => 1);
56068        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
56069 
56070        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
56071 
56072        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
56073           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
56074        END IF;
56075 
56076       --
56077       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
56078       --
56079       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
56080           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
56081       ELSE
56082           ---------------------------------------------------------------------------------------------------
56083           -- 4262811a Switch Sign
56084           ---------------------------------------------------------------------------------------------------
56085           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
56086           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
56087                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56088           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
56089                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56090           -- 5132302
56091           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
56092                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56093 
56094       END IF;
56095 
56096       -- 4955764
56097       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
56098       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
56099 
56100 
56101       XLA_AE_LINES_PKG.ValidateCurrentLine;
56102       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
56103 
56104       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
56105                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
56106                ,p_balance_type_code => l_balance_type_code);
56107 
56108    END IF;
56109 
56110    -----------------------------------------------------------------------------------------
56111    -- 4262811 Multiperiod Accounting
56112    -----------------------------------------------------------------------------------------
56113      -- No MPA option is assigned.
56114 
56115 
56116 END IF;
56117 END IF;
56118 --
56119 
56120 --
56121 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56122    trace
56123       (p_msg      => 'END of AcctLineType_103'
56124       ,p_level    => C_LEVEL_PROCEDURE
56125       ,p_module   => l_log_module);
56126 END IF;
56127 --
56128 EXCEPTION
56129   WHEN xla_exceptions_pkg.application_exception THEN
56130       RAISE;
56131   WHEN OTHERS THEN
56132        xla_exceptions_pkg.raise_message
56133            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_103');
56134 END AcctLineType_103;
56135 --
56136 
56137 ---------------------------------------
56138 --
56139 -- PRIVATE FUNCTION
56140 --         AcctLineType_104
56141 --
56142 ---------------------------------------
56143 PROCEDURE AcctLineType_104 (
56144   p_application_id        IN NUMBER
56145  ,p_event_id              IN NUMBER
56146  ,p_calculate_acctd_flag  IN VARCHAR2
56147  ,p_calculate_g_l_flag    IN VARCHAR2
56148  ,p_actual_flag           IN OUT VARCHAR2
56149  ,p_balance_type_code     OUT VARCHAR2
56150  ,p_gain_or_loss_ref      OUT VARCHAR2
56151  
56152 --Cost Management Default Account
56153  , p_source_4            IN NUMBER
56154 --DISTRIBUTION_IDENTIFIER
56155  , p_source_11            IN NUMBER
56156 --Distribution Type
56157  , p_source_12            IN VARCHAR2
56158  , p_source_12_meaning    IN VARCHAR2
56159 --Entered Currency Code
56160  , p_source_15            IN VARCHAR2
56161 --Entered Amount
56162  , p_source_18            IN NUMBER
56163 --Currency Conversion Date
56164  , p_source_19            IN DATE
56165 --Currency Conversion Rate
56166  , p_source_20            IN NUMBER
56167 --Currency Conversion Type
56168  , p_source_21            IN VARCHAR2
56169 --Accounted Amount
56170  , p_source_22            IN NUMBER
56171 --Accounting Line Type
56172  , p_source_24            IN NUMBER
56173 )
56174 IS
56175 
56176 l_component_type              VARCHAR2(80);
56177 l_component_code              VARCHAR2(30);
56178 l_component_type_code         VARCHAR2(1);
56179 l_component_appl_id           INTEGER;
56180 l_amb_context_code            VARCHAR2(30);
56181 l_entity_code                 VARCHAR2(30);
56182 l_event_class_code            VARCHAR2(30);
56183 l_ae_header_id                NUMBER;
56184 l_event_type_code             VARCHAR2(30);
56185 l_line_definition_code        VARCHAR2(30);
56186 l_line_definition_owner_code  VARCHAR2(1);
56187 --
56188 -- adr variables
56189 l_segment                     VARCHAR2(30);
56190 l_ccid                        NUMBER;
56191 l_adr_transaction_coa_id      NUMBER;
56192 l_adr_accounting_coa_id       NUMBER;
56193 l_adr_flexfield_segment_code  VARCHAR2(30);
56194 l_adr_flex_value_set_id       NUMBER;
56195 l_adr_value_type_code         VARCHAR2(30);
56196 l_adr_value_combination_id    NUMBER;
56197 l_adr_value_segment_code      VARCHAR2(30);
56198 
56199 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
56200 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
56201 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
56202 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
56203 
56204 -- 4262811 Variables ------------------------------------------------------------------------------------------
56205 l_entered_amt_idx             NUMBER;
56206 l_accted_amt_idx              NUMBER;
56207 l_acc_rev_flag                VARCHAR2(1);
56208 l_accrual_line_num            NUMBER;
56209 l_tmp_amt                     NUMBER;
56210 l_acc_rev_natural_side_code   VARCHAR2(1);
56211 
56212 l_num_entries                 NUMBER;
56213 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
56214 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
56215 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
56216 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
56217 l_recog_line_1                NUMBER;
56218 l_recog_line_2                NUMBER;
56219 
56220 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
56221 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
56222 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
56223 
56224 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
56225 
56226 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
56227 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
56228 
56229 ---------------------------------------------------------------------------------------------------------------
56230 
56231 
56232 --
56233 -- bulk performance
56234 --
56235 l_balance_type_code           VARCHAR2(1);
56236 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
56237 l_log_module                  VARCHAR2(240);
56238 
56239 --
56240 -- Upgrade strategy
56241 --
56242 l_actual_upg_option           VARCHAR2(1);
56243 l_enc_upg_option           VARCHAR2(1);
56244 
56245 --
56246 BEGIN
56247 --
56248 IF g_log_enabled THEN
56249       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_104';
56250 END IF;
56251 --
56252 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56253 
56254       trace
56255          (p_msg      => 'BEGIN of AcctLineType_104'
56256          ,p_level    => C_LEVEL_PROCEDURE
56257          ,p_module   => l_log_module);
56258 
56259 END IF;
56260 --
56261 l_component_type             := 'AMB_JLT';
56262 l_component_code             := 'INTERORG_RECEIVABLES';
56263 l_component_type_code        := 'S';
56264 l_component_appl_id          :=  707;
56265 l_amb_context_code           := 'DEFAULT';
56266 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
56267 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
56268 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_ALL';
56269 l_line_definition_owner_code := 'S';
56270 l_line_definition_code       := 'FOB_SHIP_SENDER_SHIP';
56271 --
56272 l_balance_type_code          := 'A';
56273 l_segment                     := NULL;
56274 l_ccid                        := NULL;
56275 l_adr_transaction_coa_id      := NULL;
56276 l_adr_accounting_coa_id       := NULL;
56277 l_adr_flexfield_segment_code  := NULL;
56278 l_adr_flex_value_set_id       := NULL;
56279 l_adr_value_type_code         := NULL;
56280 l_adr_value_combination_id    := NULL;
56281 l_adr_value_segment_code      := NULL;
56282 
56283 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
56284 l_bflow_class_code           := '';    -- 4219869 Business Flow
56285 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
56286 l_budgetary_control_flag     := 'N';
56287 
56288 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
56289 l_bflow_applied_to_amt       := NULL; -- 5132302
56290 l_entered_amt_idx            := NULL;          -- 4262811
56291 l_accted_amt_idx             := NULL;          -- 4262811
56292 l_acc_rev_flag               := NULL;          -- 4262811
56293 l_accrual_line_num           := NULL;          -- 4262811
56294 l_tmp_amt                    := NULL;          -- 4262811
56295 --
56296  
56297 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
56298     l_balance_type_code <> 'B' THEN
56299 IF NVL(p_source_24,9E125) =  10
56300  THEN 
56301 
56302    --
56303    XLA_AE_LINES_PKG.SetNewLine;
56304 
56305    p_balance_type_code          := l_balance_type_code;
56306    -- set the flag so later we will know whether the gain loss line needs to be created
56307    
56308    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
56309      p_actual_flag :='A';
56310    END IF;
56311 
56312    --
56313    -- bulk performance
56314    --
56315    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
56316                                       p_header_num   => 0); -- 4262811
56317    --
56318    -- set accounting line options
56319    --
56320    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
56321            p_natural_side_code          => 'D'
56322          , p_gain_or_loss_flag          => 'N'
56323          , p_gl_transfer_mode_code      => 'S'
56324          , p_acct_entry_type_code       => 'A'
56325          , p_switch_side_flag           => 'Y'
56326          , p_merge_duplicate_code       => 'N'
56327          );
56328    --
56329    l_acc_rev_natural_side_code := 'C';  -- 4262811
56330    -- 
56331    --
56332    -- set accounting line type info
56333    --
56334    xla_ae_lines_pkg.SetAcctLineType
56335       (p_component_type             => l_component_type
56336       ,p_event_type_code            => l_event_type_code
56337       ,p_line_definition_owner_code => l_line_definition_owner_code
56338       ,p_line_definition_code       => l_line_definition_code
56339       ,p_accounting_line_code       => l_component_code
56340       ,p_accounting_line_type_code  => l_component_type_code
56341       ,p_accounting_line_appl_id    => l_component_appl_id
56342       ,p_amb_context_code           => l_amb_context_code
56343       ,p_entity_code                => l_entity_code
56344       ,p_event_class_code           => l_event_class_code);
56345    --
56346    -- set accounting class
56347    --
56348    xla_ae_lines_pkg.SetAcctClass(
56349            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
56350          , p_ae_header_id           => l_ae_header_id
56351          );
56352 
56353    --
56354    -- set rounding class
56355    --
56356    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
56357                       'INTERORG_RECEIVABLES';
56358 
56359    --
56360    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
56361    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
56362    --
56363    -- bulk performance
56364    --
56365    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
56366 
56367    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
56368       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
56369 
56370    -- 4955764
56371    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
56372       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
56373 
56374    -- 4458381 Public Sector Enh
56375    
56376    --
56377    -- set accounting attributes for the line type
56378    --
56379    l_entered_amt_idx := 3;
56380    l_accted_amt_idx  := 8;
56381    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
56382    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
56383    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
56384    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
56385    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
56386    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
56387    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
56388    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
56389    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
56390    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
56391    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
56392    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
56393    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
56394    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
56395    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
56396    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
56397    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
56398 
56399    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
56400    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
56401 
56402    ---------------------------------------------------------------------------------------------------------------
56403    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
56404    ---------------------------------------------------------------------------------------------------------------
56405    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
56406 
56407    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
56408    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
56409 
56410    IF xla_accounting_cache_pkg.GetValueChar
56411          (p_source_code         => 'LEDGER_CATEGORY_CODE'
56412          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
56413    AND l_bflow_method_code = 'PRIOR_ENTRY'
56414 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
56415    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
56416          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
56417        )
56418    THEN
56419          xla_ae_lines_pkg.BflowUpgEntry
56420            (p_business_method_code    => l_bflow_method_code
56421            ,p_business_class_code     => l_bflow_class_code
56422            ,p_balance_type            => l_balance_type_code);
56423    ELSE
56424       NULL;
56425 -- No business flow processing for business flow method of NONE.
56426    END IF;
56427 
56428    --
56429    -- call analytical criteria
56430    --
56431    
56432    --
56433    -- call description
56434    --
56435    -- No description or it is inherited.
56436    --
56437    -- call ADRs
56438    -- Bug 4922099
56439    --
56440    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
56441         (NVL(l_actual_upg_option, 'N') = 'O') OR
56442         (NVL(l_enc_upg_option, 'N') = 'O')
56443       )
56444    THEN
56445    NULL;
56446    --
56447    --
56448    
56449   l_ccid := AcctDerRule_4(
56450            p_application_id           => p_application_id
56451          , p_ae_header_id             => l_ae_header_id 
56452 , p_source_4 => p_source_4
56453          , x_transaction_coa_id       => l_adr_transaction_coa_id
56454          , x_accounting_coa_id        => l_adr_accounting_coa_id
56455          , x_value_type_code          => l_adr_value_type_code
56456          , p_side                     => 'NA'
56457    );
56458 
56459    xla_ae_lines_pkg.set_ccid(
56460     p_code_combination_id          => l_ccid
56461   , p_value_type_code              => l_adr_value_type_code
56462   , p_transaction_coa_id           => l_adr_transaction_coa_id
56463   , p_accounting_coa_id            => l_adr_accounting_coa_id
56464   , p_adr_code                     => 'CST_DEFAULT'
56465   , p_adr_type_code                => 'S'
56466   , p_component_type               => l_component_type
56467   , p_component_code               => l_component_code
56468   , p_component_type_code          => l_component_type_code
56469   , p_component_appl_id            => l_component_appl_id
56470   , p_amb_context_code             => l_amb_context_code
56471   , p_side                         => 'NA'
56472   );
56473 
56474 
56475    --
56476    --
56477    END IF;
56478    --
56479    -- Bug 4922099
56480    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
56481           (NVL(l_enc_upg_option, 'N') = 'O')
56482         ) AND
56483         (l_bflow_method_code = 'PRIOR_ENTRY')
56484       )
56485    THEN
56486       IF
56487       --
56488       1 = 2
56489       --
56490       THEN
56491       xla_accounting_err_pkg.build_message
56492                                     (p_appli_s_name            => 'XLA'
56493                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
56494                                     ,p_token_1                 => 'LINE_NUMBER'
56495                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
56496                                     ,p_token_2                 => 'LINE_TYPE_NAME'
56497                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
56498                                                                              l_component_type
56499                                                                             ,l_component_code
56500                                                                             ,l_component_type_code
56501                                                                             ,l_component_appl_id
56502                                                                             ,l_amb_context_code
56503                                                                             ,l_entity_code
56504                                                                             ,l_event_class_code
56505                                                                            )
56506                                     ,p_token_3                 => 'OWNER'
56507                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
56508                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
56509                                                                           ,p_lookup_code    => l_component_type_code
56510                                                                          )
56511                                     ,p_token_4                 => 'PRODUCT_NAME'
56512                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
56513                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
56514                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
56515                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
56516                                     ,p_ae_header_id            =>  NULL
56517                                        );
56518 
56519         IF (C_LEVEL_ERROR>= g_log_level) THEN
56520                  trace
56521                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
56522                       ,p_level    => C_LEVEL_ERROR
56523                       ,p_module   => l_log_module);
56524         END IF;
56525       END IF;
56526    END IF;
56527    --
56528    --
56529    ------------------------------------------------------------------------------------------------
56530    -- 4219869 Business Flow
56531    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
56532    -- Prior Entry.  Currently, the following code is always generated.
56533    ------------------------------------------------------------------------------------------------
56534    XLA_AE_LINES_PKG.ValidateCurrentLine;
56535 
56536    ------------------------------------------------------------------------------------
56537    -- 4219869 Business Flow
56538    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
56539    ------------------------------------------------------------------------------------
56540    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
56541 
56542    ----------------------------------------------------------------------------------
56543    -- 4219869 Business Flow
56544    -- Update journal entry status -- Need to generate this within IF <condition>
56545    ----------------------------------------------------------------------------------
56546    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
56547          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
56548          ,p_balance_type_code => l_balance_type_code
56549          );
56550 
56551    -------------------------------------------------------------------------------------------
56552    -- 4262811 - Generate the Accrual Reversal lines
56553    -------------------------------------------------------------------------------------------
56554    BEGIN
56555       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
56556                               (g_array_event(p_event_id).array_value_num('header_index'));
56557       IF l_acc_rev_flag IS NULL THEN
56558          l_acc_rev_flag := 'N';
56559       END IF;
56560    EXCEPTION
56561       WHEN OTHERS THEN
56562          l_acc_rev_flag := 'N';
56563    END;
56564    --
56565    IF (l_acc_rev_flag = 'Y') THEN
56566 
56567        -- 4645092  ------------------------------------------------------------------------------
56568        -- To allow MPA report to determine if it should generate report process
56569        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
56570        ------------------------------------------------------------------------------------------
56571 
56572        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
56573        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
56574    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
56575    -- call ADRs
56576    -- Bug 4922099
56577    --
56578    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
56579         (NVL(l_actual_upg_option, 'N') = 'O') OR
56580         (NVL(l_enc_upg_option, 'N') = 'O')
56581       )
56582    THEN
56583    NULL;
56584    --
56585    --
56586    
56587   l_ccid := AcctDerRule_4(
56588            p_application_id           => p_application_id
56589          , p_ae_header_id             => l_ae_header_id 
56590 , p_source_4 => p_source_4
56591          , x_transaction_coa_id       => l_adr_transaction_coa_id
56592          , x_accounting_coa_id        => l_adr_accounting_coa_id
56593          , x_value_type_code          => l_adr_value_type_code
56594          , p_side                     => 'NA'
56595    );
56596 
56597    xla_ae_lines_pkg.set_ccid(
56598     p_code_combination_id          => l_ccid
56599   , p_value_type_code              => l_adr_value_type_code
56600   , p_transaction_coa_id           => l_adr_transaction_coa_id
56601   , p_accounting_coa_id            => l_adr_accounting_coa_id
56602   , p_adr_code                     => 'CST_DEFAULT'
56603   , p_adr_type_code                => 'S'
56604   , p_component_type               => l_component_type
56605   , p_component_code               => l_component_code
56606   , p_component_type_code          => l_component_type_code
56607   , p_component_appl_id            => l_component_appl_id
56608   , p_amb_context_code             => l_amb_context_code
56609   , p_side                         => 'NA'
56610   );
56611 
56612 
56613    --
56614    --
56615    END IF;
56616 
56617        --
56618        -- Update the line information that should be overwritten
56619        --
56620        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
56621                                          p_header_num   => 1);
56622        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
56623 
56624        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
56625 
56626        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
56627           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
56628        END IF;
56629 
56630       --
56631       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
56632       --
56633       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
56634           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
56635       ELSE
56636           ---------------------------------------------------------------------------------------------------
56637           -- 4262811a Switch Sign
56638           ---------------------------------------------------------------------------------------------------
56639           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
56640           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
56641                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56642           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
56643                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56644           -- 5132302
56645           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
56646                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56647 
56648       END IF;
56649 
56650       -- 4955764
56651       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
56652       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
56653 
56654 
56655       XLA_AE_LINES_PKG.ValidateCurrentLine;
56656       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
56657 
56658       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
56659                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
56660                ,p_balance_type_code => l_balance_type_code);
56661 
56662    END IF;
56663 
56664    -----------------------------------------------------------------------------------------
56665    -- 4262811 Multiperiod Accounting
56666    -----------------------------------------------------------------------------------------
56667      -- No MPA option is assigned.
56668 
56669 
56670 END IF;
56671 END IF;
56672 --
56673 
56674 --
56675 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56676    trace
56677       (p_msg      => 'END of AcctLineType_104'
56678       ,p_level    => C_LEVEL_PROCEDURE
56679       ,p_module   => l_log_module);
56680 END IF;
56681 --
56682 EXCEPTION
56683   WHEN xla_exceptions_pkg.application_exception THEN
56684       RAISE;
56685   WHEN OTHERS THEN
56686        xla_exceptions_pkg.raise_message
56687            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_104');
56688 END AcctLineType_104;
56689 --
56690 
56691 ---------------------------------------
56692 --
56693 -- PRIVATE FUNCTION
56694 --         AcctLineType_105
56695 --
56696 ---------------------------------------
56697 PROCEDURE AcctLineType_105 (
56698   p_application_id        IN NUMBER
56699  ,p_event_id              IN NUMBER
56700  ,p_calculate_acctd_flag  IN VARCHAR2
56701  ,p_calculate_g_l_flag    IN VARCHAR2
56702  ,p_actual_flag           IN OUT VARCHAR2
56703  ,p_balance_type_code     OUT VARCHAR2
56704  ,p_gain_or_loss_ref      OUT VARCHAR2
56705  
56706 --Cost Management Default Account
56707  , p_source_4            IN NUMBER
56708 --DISTRIBUTION_IDENTIFIER
56709  , p_source_11            IN NUMBER
56710 --Distribution Type
56711  , p_source_12            IN VARCHAR2
56712  , p_source_12_meaning    IN VARCHAR2
56713 --Entered Currency Code
56714  , p_source_15            IN VARCHAR2
56715 --Entered Amount
56716  , p_source_18            IN NUMBER
56717 --Currency Conversion Date
56718  , p_source_19            IN DATE
56719 --Currency Conversion Rate
56720  , p_source_20            IN NUMBER
56721 --Currency Conversion Type
56722  , p_source_21            IN VARCHAR2
56723 --Accounted Amount
56724  , p_source_22            IN NUMBER
56725 --Accounting Line Type
56726  , p_source_24            IN NUMBER
56727 )
56728 IS
56729 
56730 l_component_type              VARCHAR2(80);
56731 l_component_code              VARCHAR2(30);
56732 l_component_type_code         VARCHAR2(1);
56733 l_component_appl_id           INTEGER;
56734 l_amb_context_code            VARCHAR2(30);
56735 l_entity_code                 VARCHAR2(30);
56736 l_event_class_code            VARCHAR2(30);
56737 l_ae_header_id                NUMBER;
56738 l_event_type_code             VARCHAR2(30);
56739 l_line_definition_code        VARCHAR2(30);
56740 l_line_definition_owner_code  VARCHAR2(1);
56741 --
56742 -- adr variables
56743 l_segment                     VARCHAR2(30);
56744 l_ccid                        NUMBER;
56745 l_adr_transaction_coa_id      NUMBER;
56746 l_adr_accounting_coa_id       NUMBER;
56747 l_adr_flexfield_segment_code  VARCHAR2(30);
56748 l_adr_flex_value_set_id       NUMBER;
56749 l_adr_value_type_code         VARCHAR2(30);
56750 l_adr_value_combination_id    NUMBER;
56751 l_adr_value_segment_code      VARCHAR2(30);
56752 
56753 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
56754 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
56755 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
56756 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
56757 
56758 -- 4262811 Variables ------------------------------------------------------------------------------------------
56759 l_entered_amt_idx             NUMBER;
56760 l_accted_amt_idx              NUMBER;
56761 l_acc_rev_flag                VARCHAR2(1);
56762 l_accrual_line_num            NUMBER;
56763 l_tmp_amt                     NUMBER;
56764 l_acc_rev_natural_side_code   VARCHAR2(1);
56765 
56766 l_num_entries                 NUMBER;
56767 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
56768 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
56769 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
56770 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
56771 l_recog_line_1                NUMBER;
56772 l_recog_line_2                NUMBER;
56773 
56774 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
56775 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
56776 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
56777 
56778 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
56779 
56780 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
56781 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
56782 
56783 ---------------------------------------------------------------------------------------------------------------
56784 
56785 
56786 --
56787 -- bulk performance
56788 --
56789 l_balance_type_code           VARCHAR2(1);
56790 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
56791 l_log_module                  VARCHAR2(240);
56792 
56793 --
56794 -- Upgrade strategy
56795 --
56796 l_actual_upg_option           VARCHAR2(1);
56797 l_enc_upg_option           VARCHAR2(1);
56798 
56799 --
56800 BEGIN
56801 --
56802 IF g_log_enabled THEN
56803       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_105';
56804 END IF;
56805 --
56806 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56807 
56808       trace
56809          (p_msg      => 'BEGIN of AcctLineType_105'
56810          ,p_level    => C_LEVEL_PROCEDURE
56811          ,p_module   => l_log_module);
56812 
56813 END IF;
56814 --
56815 l_component_type             := 'AMB_JLT';
56816 l_component_code             := 'INTERORG_RECEIVABLES';
56817 l_component_type_code        := 'S';
56818 l_component_appl_id          :=  707;
56819 l_amb_context_code           := 'DEFAULT';
56820 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
56821 l_event_class_code           := 'DIR_INTERORG_SHIP';
56822 l_event_type_code            := 'DIR_INTERORG_SHIP_ALL';
56823 l_line_definition_owner_code := 'S';
56824 l_line_definition_code       := 'DIRECT_INTERORG_SHIP';
56825 --
56826 l_balance_type_code          := 'A';
56827 l_segment                     := NULL;
56828 l_ccid                        := NULL;
56829 l_adr_transaction_coa_id      := NULL;
56830 l_adr_accounting_coa_id       := NULL;
56831 l_adr_flexfield_segment_code  := NULL;
56832 l_adr_flex_value_set_id       := NULL;
56833 l_adr_value_type_code         := NULL;
56834 l_adr_value_combination_id    := NULL;
56835 l_adr_value_segment_code      := NULL;
56836 
56837 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
56838 l_bflow_class_code           := '';    -- 4219869 Business Flow
56839 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
56840 l_budgetary_control_flag     := 'N';
56841 
56842 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
56843 l_bflow_applied_to_amt       := NULL; -- 5132302
56844 l_entered_amt_idx            := NULL;          -- 4262811
56845 l_accted_amt_idx             := NULL;          -- 4262811
56846 l_acc_rev_flag               := NULL;          -- 4262811
56847 l_accrual_line_num           := NULL;          -- 4262811
56848 l_tmp_amt                    := NULL;          -- 4262811
56849 --
56850  
56851 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
56852     l_balance_type_code <> 'B' THEN
56853 IF NVL(p_source_24,9E125) =  10
56854  THEN 
56855 
56856    --
56857    XLA_AE_LINES_PKG.SetNewLine;
56858 
56859    p_balance_type_code          := l_balance_type_code;
56860    -- set the flag so later we will know whether the gain loss line needs to be created
56861    
56862    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
56863      p_actual_flag :='A';
56864    END IF;
56865 
56866    --
56867    -- bulk performance
56868    --
56869    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
56870                                       p_header_num   => 0); -- 4262811
56871    --
56872    -- set accounting line options
56873    --
56874    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
56875            p_natural_side_code          => 'D'
56876          , p_gain_or_loss_flag          => 'N'
56877          , p_gl_transfer_mode_code      => 'S'
56878          , p_acct_entry_type_code       => 'A'
56879          , p_switch_side_flag           => 'Y'
56880          , p_merge_duplicate_code       => 'N'
56881          );
56882    --
56883    l_acc_rev_natural_side_code := 'C';  -- 4262811
56884    -- 
56885    --
56886    -- set accounting line type info
56887    --
56888    xla_ae_lines_pkg.SetAcctLineType
56889       (p_component_type             => l_component_type
56890       ,p_event_type_code            => l_event_type_code
56891       ,p_line_definition_owner_code => l_line_definition_owner_code
56892       ,p_line_definition_code       => l_line_definition_code
56893       ,p_accounting_line_code       => l_component_code
56894       ,p_accounting_line_type_code  => l_component_type_code
56895       ,p_accounting_line_appl_id    => l_component_appl_id
56896       ,p_amb_context_code           => l_amb_context_code
56897       ,p_entity_code                => l_entity_code
56898       ,p_event_class_code           => l_event_class_code);
56899    --
56900    -- set accounting class
56901    --
56902    xla_ae_lines_pkg.SetAcctClass(
56903            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
56904          , p_ae_header_id           => l_ae_header_id
56905          );
56906 
56907    --
56908    -- set rounding class
56909    --
56910    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
56911                       'INTERORG_RECEIVABLES';
56912 
56913    --
56914    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
56915    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
56916    --
56917    -- bulk performance
56918    --
56919    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
56920 
56921    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
56922       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
56923 
56924    -- 4955764
56925    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
56926       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
56927 
56928    -- 4458381 Public Sector Enh
56929    
56930    --
56931    -- set accounting attributes for the line type
56932    --
56933    l_entered_amt_idx := 3;
56934    l_accted_amt_idx  := 8;
56935    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
56936    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
56937    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
56938    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
56939    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
56940    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
56941    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
56942    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
56943    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
56944    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
56945    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
56946    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
56947    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
56948    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
56949    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
56950    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
56951    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
56952 
56953    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
56954    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
56955 
56956    ---------------------------------------------------------------------------------------------------------------
56957    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
56958    ---------------------------------------------------------------------------------------------------------------
56959    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
56960 
56961    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
56962    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
56963 
56964    IF xla_accounting_cache_pkg.GetValueChar
56965          (p_source_code         => 'LEDGER_CATEGORY_CODE'
56966          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
56967    AND l_bflow_method_code = 'PRIOR_ENTRY'
56968 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
56969    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
56970          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
56971        )
56972    THEN
56973          xla_ae_lines_pkg.BflowUpgEntry
56974            (p_business_method_code    => l_bflow_method_code
56975            ,p_business_class_code     => l_bflow_class_code
56976            ,p_balance_type            => l_balance_type_code);
56977    ELSE
56978       NULL;
56979 -- No business flow processing for business flow method of NONE.
56980    END IF;
56981 
56982    --
56983    -- call analytical criteria
56984    --
56985    
56986    --
56987    -- call description
56988    --
56989    -- No description or it is inherited.
56990    --
56991    -- call ADRs
56992    -- Bug 4922099
56993    --
56994    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
56995         (NVL(l_actual_upg_option, 'N') = 'O') OR
56996         (NVL(l_enc_upg_option, 'N') = 'O')
56997       )
56998    THEN
56999    NULL;
57000    --
57001    --
57002    
57003   l_ccid := AcctDerRule_4(
57004            p_application_id           => p_application_id
57005          , p_ae_header_id             => l_ae_header_id 
57006 , p_source_4 => p_source_4
57007          , x_transaction_coa_id       => l_adr_transaction_coa_id
57008          , x_accounting_coa_id        => l_adr_accounting_coa_id
57009          , x_value_type_code          => l_adr_value_type_code
57010          , p_side                     => 'NA'
57011    );
57012 
57013    xla_ae_lines_pkg.set_ccid(
57014     p_code_combination_id          => l_ccid
57015   , p_value_type_code              => l_adr_value_type_code
57016   , p_transaction_coa_id           => l_adr_transaction_coa_id
57017   , p_accounting_coa_id            => l_adr_accounting_coa_id
57018   , p_adr_code                     => 'CST_DEFAULT'
57019   , p_adr_type_code                => 'S'
57020   , p_component_type               => l_component_type
57021   , p_component_code               => l_component_code
57022   , p_component_type_code          => l_component_type_code
57023   , p_component_appl_id            => l_component_appl_id
57024   , p_amb_context_code             => l_amb_context_code
57025   , p_side                         => 'NA'
57026   );
57027 
57028 
57029    --
57030    --
57031    END IF;
57032    --
57033    -- Bug 4922099
57034    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
57035           (NVL(l_enc_upg_option, 'N') = 'O')
57036         ) AND
57037         (l_bflow_method_code = 'PRIOR_ENTRY')
57038       )
57039    THEN
57040       IF
57041       --
57042       1 = 2
57043       --
57044       THEN
57045       xla_accounting_err_pkg.build_message
57046                                     (p_appli_s_name            => 'XLA'
57047                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
57048                                     ,p_token_1                 => 'LINE_NUMBER'
57049                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
57050                                     ,p_token_2                 => 'LINE_TYPE_NAME'
57051                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
57052                                                                              l_component_type
57053                                                                             ,l_component_code
57054                                                                             ,l_component_type_code
57055                                                                             ,l_component_appl_id
57056                                                                             ,l_amb_context_code
57057                                                                             ,l_entity_code
57058                                                                             ,l_event_class_code
57059                                                                            )
57060                                     ,p_token_3                 => 'OWNER'
57061                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
57062                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
57063                                                                           ,p_lookup_code    => l_component_type_code
57064                                                                          )
57065                                     ,p_token_4                 => 'PRODUCT_NAME'
57066                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
57067                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
57068                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
57069                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
57070                                     ,p_ae_header_id            =>  NULL
57071                                        );
57072 
57073         IF (C_LEVEL_ERROR>= g_log_level) THEN
57074                  trace
57075                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
57076                       ,p_level    => C_LEVEL_ERROR
57077                       ,p_module   => l_log_module);
57078         END IF;
57079       END IF;
57080    END IF;
57081    --
57082    --
57083    ------------------------------------------------------------------------------------------------
57084    -- 4219869 Business Flow
57085    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
57086    -- Prior Entry.  Currently, the following code is always generated.
57087    ------------------------------------------------------------------------------------------------
57088    XLA_AE_LINES_PKG.ValidateCurrentLine;
57089 
57090    ------------------------------------------------------------------------------------
57091    -- 4219869 Business Flow
57092    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
57093    ------------------------------------------------------------------------------------
57094    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57095 
57096    ----------------------------------------------------------------------------------
57097    -- 4219869 Business Flow
57098    -- Update journal entry status -- Need to generate this within IF <condition>
57099    ----------------------------------------------------------------------------------
57100    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57101          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
57102          ,p_balance_type_code => l_balance_type_code
57103          );
57104 
57105    -------------------------------------------------------------------------------------------
57106    -- 4262811 - Generate the Accrual Reversal lines
57107    -------------------------------------------------------------------------------------------
57108    BEGIN
57109       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
57110                               (g_array_event(p_event_id).array_value_num('header_index'));
57111       IF l_acc_rev_flag IS NULL THEN
57112          l_acc_rev_flag := 'N';
57113       END IF;
57114    EXCEPTION
57115       WHEN OTHERS THEN
57116          l_acc_rev_flag := 'N';
57117    END;
57118    --
57119    IF (l_acc_rev_flag = 'Y') THEN
57120 
57121        -- 4645092  ------------------------------------------------------------------------------
57122        -- To allow MPA report to determine if it should generate report process
57123        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
57124        ------------------------------------------------------------------------------------------
57125 
57126        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
57127        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
57128    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
57129    -- call ADRs
57130    -- Bug 4922099
57131    --
57132    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
57133         (NVL(l_actual_upg_option, 'N') = 'O') OR
57134         (NVL(l_enc_upg_option, 'N') = 'O')
57135       )
57136    THEN
57137    NULL;
57138    --
57139    --
57140    
57141   l_ccid := AcctDerRule_4(
57142            p_application_id           => p_application_id
57143          , p_ae_header_id             => l_ae_header_id 
57144 , p_source_4 => p_source_4
57145          , x_transaction_coa_id       => l_adr_transaction_coa_id
57146          , x_accounting_coa_id        => l_adr_accounting_coa_id
57147          , x_value_type_code          => l_adr_value_type_code
57148          , p_side                     => 'NA'
57149    );
57150 
57151    xla_ae_lines_pkg.set_ccid(
57152     p_code_combination_id          => l_ccid
57153   , p_value_type_code              => l_adr_value_type_code
57154   , p_transaction_coa_id           => l_adr_transaction_coa_id
57155   , p_accounting_coa_id            => l_adr_accounting_coa_id
57156   , p_adr_code                     => 'CST_DEFAULT'
57157   , p_adr_type_code                => 'S'
57158   , p_component_type               => l_component_type
57159   , p_component_code               => l_component_code
57160   , p_component_type_code          => l_component_type_code
57161   , p_component_appl_id            => l_component_appl_id
57162   , p_amb_context_code             => l_amb_context_code
57163   , p_side                         => 'NA'
57164   );
57165 
57166 
57167    --
57168    --
57169    END IF;
57170 
57171        --
57172        -- Update the line information that should be overwritten
57173        --
57174        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
57175                                          p_header_num   => 1);
57176        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
57177 
57178        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
57179 
57180        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
57181           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
57182        END IF;
57183 
57184       --
57185       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
57186       --
57187       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
57188           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
57189       ELSE
57190           ---------------------------------------------------------------------------------------------------
57191           -- 4262811a Switch Sign
57192           ---------------------------------------------------------------------------------------------------
57193           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
57194           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57195                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57196           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57197                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57198           -- 5132302
57199           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
57200                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57201 
57202       END IF;
57203 
57204       -- 4955764
57205       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
57206       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
57207 
57208 
57209       XLA_AE_LINES_PKG.ValidateCurrentLine;
57210       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57211 
57212       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57213                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
57214                ,p_balance_type_code => l_balance_type_code);
57215 
57216    END IF;
57217 
57218    -----------------------------------------------------------------------------------------
57219    -- 4262811 Multiperiod Accounting
57220    -----------------------------------------------------------------------------------------
57221      -- No MPA option is assigned.
57222 
57223 
57224 END IF;
57225 END IF;
57226 --
57227 
57228 --
57229 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57230    trace
57231       (p_msg      => 'END of AcctLineType_105'
57232       ,p_level    => C_LEVEL_PROCEDURE
57233       ,p_module   => l_log_module);
57234 END IF;
57235 --
57236 EXCEPTION
57237   WHEN xla_exceptions_pkg.application_exception THEN
57238       RAISE;
57239   WHEN OTHERS THEN
57240        xla_exceptions_pkg.raise_message
57241            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_105');
57242 END AcctLineType_105;
57243 --
57244 
57245 ---------------------------------------
57246 --
57247 -- PRIVATE FUNCTION
57248 --         AcctLineType_106
57249 --
57250 ---------------------------------------
57251 PROCEDURE AcctLineType_106 (
57252   p_application_id        IN NUMBER
57253  ,p_event_id              IN NUMBER
57254  ,p_calculate_acctd_flag  IN VARCHAR2
57255  ,p_calculate_g_l_flag    IN VARCHAR2
57256  ,p_actual_flag           IN OUT VARCHAR2
57257  ,p_balance_type_code     OUT VARCHAR2
57258  ,p_gain_or_loss_ref      OUT VARCHAR2
57259  
57260 --Cost Management Default Account
57261  , p_source_4            IN NUMBER
57262 --DISTRIBUTION_IDENTIFIER
57263  , p_source_11            IN NUMBER
57264 --Distribution Type
57265  , p_source_12            IN VARCHAR2
57266  , p_source_12_meaning    IN VARCHAR2
57267 --Entered Currency Code
57268  , p_source_15            IN VARCHAR2
57269 --Entered Amount
57270  , p_source_18            IN NUMBER
57271 --Currency Conversion Date
57272  , p_source_19            IN DATE
57273 --Currency Conversion Rate
57274  , p_source_20            IN NUMBER
57275 --Currency Conversion Type
57276  , p_source_21            IN VARCHAR2
57277 --Accounted Amount
57278  , p_source_22            IN NUMBER
57279 --Accounting Line Type
57280  , p_source_24            IN NUMBER
57281 )
57282 IS
57283 
57284 l_component_type              VARCHAR2(80);
57285 l_component_code              VARCHAR2(30);
57286 l_component_type_code         VARCHAR2(1);
57287 l_component_appl_id           INTEGER;
57288 l_amb_context_code            VARCHAR2(30);
57289 l_entity_code                 VARCHAR2(30);
57290 l_event_class_code            VARCHAR2(30);
57291 l_ae_header_id                NUMBER;
57292 l_event_type_code             VARCHAR2(30);
57293 l_line_definition_code        VARCHAR2(30);
57294 l_line_definition_owner_code  VARCHAR2(1);
57295 --
57296 -- adr variables
57297 l_segment                     VARCHAR2(30);
57298 l_ccid                        NUMBER;
57299 l_adr_transaction_coa_id      NUMBER;
57300 l_adr_accounting_coa_id       NUMBER;
57301 l_adr_flexfield_segment_code  VARCHAR2(30);
57302 l_adr_flex_value_set_id       NUMBER;
57303 l_adr_value_type_code         VARCHAR2(30);
57304 l_adr_value_combination_id    NUMBER;
57305 l_adr_value_segment_code      VARCHAR2(30);
57306 
57307 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
57308 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
57309 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
57310 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
57311 
57312 -- 4262811 Variables ------------------------------------------------------------------------------------------
57313 l_entered_amt_idx             NUMBER;
57314 l_accted_amt_idx              NUMBER;
57315 l_acc_rev_flag                VARCHAR2(1);
57316 l_accrual_line_num            NUMBER;
57317 l_tmp_amt                     NUMBER;
57318 l_acc_rev_natural_side_code   VARCHAR2(1);
57319 
57320 l_num_entries                 NUMBER;
57321 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
57322 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
57323 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
57324 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
57325 l_recog_line_1                NUMBER;
57326 l_recog_line_2                NUMBER;
57327 
57328 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
57329 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
57330 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
57331 
57332 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
57333 
57334 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
57335 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
57336 
57337 ---------------------------------------------------------------------------------------------------------------
57338 
57339 
57340 --
57341 -- bulk performance
57342 --
57343 l_balance_type_code           VARCHAR2(1);
57344 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
57345 l_log_module                  VARCHAR2(240);
57346 
57347 --
57348 -- Upgrade strategy
57349 --
57350 l_actual_upg_option           VARCHAR2(1);
57351 l_enc_upg_option           VARCHAR2(1);
57352 
57353 --
57354 BEGIN
57355 --
57356 IF g_log_enabled THEN
57357       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_106';
57358 END IF;
57359 --
57360 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57361 
57362       trace
57363          (p_msg      => 'BEGIN of AcctLineType_106'
57364          ,p_level    => C_LEVEL_PROCEDURE
57365          ,p_module   => l_log_module);
57366 
57367 END IF;
57368 --
57369 l_component_type             := 'AMB_JLT';
57370 l_component_code             := 'INTERORG_RECEIVABLES';
57371 l_component_type_code        := 'S';
57372 l_component_appl_id          :=  707;
57373 l_amb_context_code           := 'DEFAULT';
57374 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
57375 l_event_class_code           := 'USER_DEFINE';
57376 l_event_type_code            := 'UDIR_INTERORG_SHIP';
57377 l_line_definition_owner_code := 'S';
57378 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP';
57379 --
57380 l_balance_type_code          := 'A';
57381 l_segment                     := NULL;
57382 l_ccid                        := NULL;
57383 l_adr_transaction_coa_id      := NULL;
57384 l_adr_accounting_coa_id       := NULL;
57385 l_adr_flexfield_segment_code  := NULL;
57386 l_adr_flex_value_set_id       := NULL;
57387 l_adr_value_type_code         := NULL;
57388 l_adr_value_combination_id    := NULL;
57389 l_adr_value_segment_code      := NULL;
57390 
57391 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
57392 l_bflow_class_code           := '';    -- 4219869 Business Flow
57393 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
57394 l_budgetary_control_flag     := 'N';
57395 
57396 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
57397 l_bflow_applied_to_amt       := NULL; -- 5132302
57398 l_entered_amt_idx            := NULL;          -- 4262811
57399 l_accted_amt_idx             := NULL;          -- 4262811
57400 l_acc_rev_flag               := NULL;          -- 4262811
57401 l_accrual_line_num           := NULL;          -- 4262811
57402 l_tmp_amt                    := NULL;          -- 4262811
57403 --
57404  
57405 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
57406     l_balance_type_code <> 'B' THEN
57407 IF NVL(p_source_24,9E125) =  10
57408  THEN 
57409 
57410    --
57411    XLA_AE_LINES_PKG.SetNewLine;
57412 
57413    p_balance_type_code          := l_balance_type_code;
57414    -- set the flag so later we will know whether the gain loss line needs to be created
57415    
57416    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
57417      p_actual_flag :='A';
57418    END IF;
57419 
57420    --
57421    -- bulk performance
57422    --
57423    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
57424                                       p_header_num   => 0); -- 4262811
57425    --
57426    -- set accounting line options
57427    --
57428    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
57429            p_natural_side_code          => 'D'
57430          , p_gain_or_loss_flag          => 'N'
57431          , p_gl_transfer_mode_code      => 'S'
57432          , p_acct_entry_type_code       => 'A'
57433          , p_switch_side_flag           => 'Y'
57434          , p_merge_duplicate_code       => 'N'
57435          );
57436    --
57437    l_acc_rev_natural_side_code := 'C';  -- 4262811
57438    -- 
57439    --
57440    -- set accounting line type info
57441    --
57442    xla_ae_lines_pkg.SetAcctLineType
57443       (p_component_type             => l_component_type
57444       ,p_event_type_code            => l_event_type_code
57445       ,p_line_definition_owner_code => l_line_definition_owner_code
57446       ,p_line_definition_code       => l_line_definition_code
57447       ,p_accounting_line_code       => l_component_code
57448       ,p_accounting_line_type_code  => l_component_type_code
57449       ,p_accounting_line_appl_id    => l_component_appl_id
57450       ,p_amb_context_code           => l_amb_context_code
57451       ,p_entity_code                => l_entity_code
57452       ,p_event_class_code           => l_event_class_code);
57453    --
57454    -- set accounting class
57455    --
57456    xla_ae_lines_pkg.SetAcctClass(
57457            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
57458          , p_ae_header_id           => l_ae_header_id
57459          );
57460 
57461    --
57462    -- set rounding class
57463    --
57464    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
57465                       'INTERORG_RECEIVABLES';
57466 
57467    --
57468    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
57469    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
57470    --
57471    -- bulk performance
57472    --
57473    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
57474 
57475    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
57476       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
57477 
57478    -- 4955764
57479    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
57480       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
57481 
57482    -- 4458381 Public Sector Enh
57483    
57484    --
57485    -- set accounting attributes for the line type
57486    --
57487    l_entered_amt_idx := 3;
57488    l_accted_amt_idx  := 8;
57489    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
57490    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
57491    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
57492    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
57493    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
57494    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
57495    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
57496    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
57497    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
57498    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
57499    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
57500    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
57501    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
57502    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
57503    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
57504    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
57505    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
57506 
57507    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
57508    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
57509 
57510    ---------------------------------------------------------------------------------------------------------------
57511    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
57512    ---------------------------------------------------------------------------------------------------------------
57513    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
57514 
57515    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
57516    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
57517 
57518    IF xla_accounting_cache_pkg.GetValueChar
57519          (p_source_code         => 'LEDGER_CATEGORY_CODE'
57520          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
57521    AND l_bflow_method_code = 'PRIOR_ENTRY'
57522 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
57523    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
57524          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
57525        )
57526    THEN
57527          xla_ae_lines_pkg.BflowUpgEntry
57528            (p_business_method_code    => l_bflow_method_code
57529            ,p_business_class_code     => l_bflow_class_code
57530            ,p_balance_type            => l_balance_type_code);
57531    ELSE
57532       NULL;
57533 -- No business flow processing for business flow method of NONE.
57534    END IF;
57535 
57536    --
57537    -- call analytical criteria
57538    --
57539    
57540    --
57541    -- call description
57542    --
57543    -- No description or it is inherited.
57544    --
57545    -- call ADRs
57546    -- Bug 4922099
57547    --
57548    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
57549         (NVL(l_actual_upg_option, 'N') = 'O') OR
57550         (NVL(l_enc_upg_option, 'N') = 'O')
57551       )
57552    THEN
57553    NULL;
57554    --
57555    --
57556    
57557   l_ccid := AcctDerRule_4(
57558            p_application_id           => p_application_id
57559          , p_ae_header_id             => l_ae_header_id 
57560 , p_source_4 => p_source_4
57561          , x_transaction_coa_id       => l_adr_transaction_coa_id
57562          , x_accounting_coa_id        => l_adr_accounting_coa_id
57563          , x_value_type_code          => l_adr_value_type_code
57564          , p_side                     => 'NA'
57565    );
57566 
57567    xla_ae_lines_pkg.set_ccid(
57568     p_code_combination_id          => l_ccid
57569   , p_value_type_code              => l_adr_value_type_code
57570   , p_transaction_coa_id           => l_adr_transaction_coa_id
57571   , p_accounting_coa_id            => l_adr_accounting_coa_id
57572   , p_adr_code                     => 'CST_DEFAULT'
57573   , p_adr_type_code                => 'S'
57574   , p_component_type               => l_component_type
57575   , p_component_code               => l_component_code
57576   , p_component_type_code          => l_component_type_code
57577   , p_component_appl_id            => l_component_appl_id
57578   , p_amb_context_code             => l_amb_context_code
57579   , p_side                         => 'NA'
57580   );
57581 
57582 
57583    --
57584    --
57585    END IF;
57586    --
57587    -- Bug 4922099
57588    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
57589           (NVL(l_enc_upg_option, 'N') = 'O')
57590         ) AND
57591         (l_bflow_method_code = 'PRIOR_ENTRY')
57592       )
57593    THEN
57594       IF
57595       --
57596       1 = 2
57597       --
57598       THEN
57599       xla_accounting_err_pkg.build_message
57600                                     (p_appli_s_name            => 'XLA'
57601                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
57602                                     ,p_token_1                 => 'LINE_NUMBER'
57603                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
57604                                     ,p_token_2                 => 'LINE_TYPE_NAME'
57605                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
57606                                                                              l_component_type
57607                                                                             ,l_component_code
57608                                                                             ,l_component_type_code
57609                                                                             ,l_component_appl_id
57610                                                                             ,l_amb_context_code
57611                                                                             ,l_entity_code
57612                                                                             ,l_event_class_code
57613                                                                            )
57614                                     ,p_token_3                 => 'OWNER'
57615                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
57616                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
57617                                                                           ,p_lookup_code    => l_component_type_code
57618                                                                          )
57619                                     ,p_token_4                 => 'PRODUCT_NAME'
57620                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
57621                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
57622                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
57623                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
57624                                     ,p_ae_header_id            =>  NULL
57625                                        );
57626 
57627         IF (C_LEVEL_ERROR>= g_log_level) THEN
57628                  trace
57629                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
57630                       ,p_level    => C_LEVEL_ERROR
57631                       ,p_module   => l_log_module);
57632         END IF;
57633       END IF;
57634    END IF;
57635    --
57636    --
57637    ------------------------------------------------------------------------------------------------
57638    -- 4219869 Business Flow
57639    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
57640    -- Prior Entry.  Currently, the following code is always generated.
57641    ------------------------------------------------------------------------------------------------
57642    XLA_AE_LINES_PKG.ValidateCurrentLine;
57643 
57644    ------------------------------------------------------------------------------------
57645    -- 4219869 Business Flow
57646    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
57647    ------------------------------------------------------------------------------------
57648    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57649 
57650    ----------------------------------------------------------------------------------
57651    -- 4219869 Business Flow
57652    -- Update journal entry status -- Need to generate this within IF <condition>
57653    ----------------------------------------------------------------------------------
57654    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57655          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
57656          ,p_balance_type_code => l_balance_type_code
57657          );
57658 
57659    -------------------------------------------------------------------------------------------
57660    -- 4262811 - Generate the Accrual Reversal lines
57661    -------------------------------------------------------------------------------------------
57662    BEGIN
57663       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
57664                               (g_array_event(p_event_id).array_value_num('header_index'));
57665       IF l_acc_rev_flag IS NULL THEN
57666          l_acc_rev_flag := 'N';
57667       END IF;
57668    EXCEPTION
57669       WHEN OTHERS THEN
57670          l_acc_rev_flag := 'N';
57671    END;
57672    --
57673    IF (l_acc_rev_flag = 'Y') THEN
57674 
57675        -- 4645092  ------------------------------------------------------------------------------
57676        -- To allow MPA report to determine if it should generate report process
57677        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
57678        ------------------------------------------------------------------------------------------
57679 
57680        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
57681        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
57682    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
57683    -- call ADRs
57684    -- Bug 4922099
57685    --
57686    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
57687         (NVL(l_actual_upg_option, 'N') = 'O') OR
57688         (NVL(l_enc_upg_option, 'N') = 'O')
57689       )
57690    THEN
57691    NULL;
57692    --
57693    --
57694    
57695   l_ccid := AcctDerRule_4(
57696            p_application_id           => p_application_id
57697          , p_ae_header_id             => l_ae_header_id 
57698 , p_source_4 => p_source_4
57699          , x_transaction_coa_id       => l_adr_transaction_coa_id
57700          , x_accounting_coa_id        => l_adr_accounting_coa_id
57701          , x_value_type_code          => l_adr_value_type_code
57702          , p_side                     => 'NA'
57703    );
57704 
57705    xla_ae_lines_pkg.set_ccid(
57706     p_code_combination_id          => l_ccid
57707   , p_value_type_code              => l_adr_value_type_code
57708   , p_transaction_coa_id           => l_adr_transaction_coa_id
57709   , p_accounting_coa_id            => l_adr_accounting_coa_id
57710   , p_adr_code                     => 'CST_DEFAULT'
57711   , p_adr_type_code                => 'S'
57712   , p_component_type               => l_component_type
57713   , p_component_code               => l_component_code
57714   , p_component_type_code          => l_component_type_code
57715   , p_component_appl_id            => l_component_appl_id
57716   , p_amb_context_code             => l_amb_context_code
57717   , p_side                         => 'NA'
57718   );
57719 
57720 
57721    --
57722    --
57723    END IF;
57724 
57725        --
57726        -- Update the line information that should be overwritten
57727        --
57728        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
57729                                          p_header_num   => 1);
57730        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
57731 
57732        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
57733 
57734        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
57735           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
57736        END IF;
57737 
57738       --
57739       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
57740       --
57741       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
57742           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
57743       ELSE
57744           ---------------------------------------------------------------------------------------------------
57745           -- 4262811a Switch Sign
57746           ---------------------------------------------------------------------------------------------------
57747           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
57748           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57749                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57750           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57751                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57752           -- 5132302
57753           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
57754                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57755 
57756       END IF;
57757 
57758       -- 4955764
57759       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
57760       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
57761 
57762 
57763       XLA_AE_LINES_PKG.ValidateCurrentLine;
57764       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57765 
57766       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57767                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
57768                ,p_balance_type_code => l_balance_type_code);
57769 
57770    END IF;
57771 
57772    -----------------------------------------------------------------------------------------
57773    -- 4262811 Multiperiod Accounting
57774    -----------------------------------------------------------------------------------------
57775      -- No MPA option is assigned.
57776 
57777 
57778 END IF;
57779 END IF;
57780 --
57781 
57782 --
57783 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57784    trace
57785       (p_msg      => 'END of AcctLineType_106'
57786       ,p_level    => C_LEVEL_PROCEDURE
57787       ,p_module   => l_log_module);
57788 END IF;
57789 --
57790 EXCEPTION
57791   WHEN xla_exceptions_pkg.application_exception THEN
57792       RAISE;
57793   WHEN OTHERS THEN
57794        xla_exceptions_pkg.raise_message
57795            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_106');
57796 END AcctLineType_106;
57797 --
57798 
57799 ---------------------------------------
57800 --
57801 -- PRIVATE FUNCTION
57802 --         AcctLineType_107
57803 --
57804 ---------------------------------------
57805 PROCEDURE AcctLineType_107 (
57806   p_application_id        IN NUMBER
57807  ,p_event_id              IN NUMBER
57808  ,p_calculate_acctd_flag  IN VARCHAR2
57809  ,p_calculate_g_l_flag    IN VARCHAR2
57810  ,p_actual_flag           IN OUT VARCHAR2
57811  ,p_balance_type_code     OUT VARCHAR2
57812  ,p_gain_or_loss_ref      OUT VARCHAR2
57813  
57814 --Cost Management Default Account
57815  , p_source_4            IN NUMBER
57816 --DISTRIBUTION_IDENTIFIER
57817  , p_source_11            IN NUMBER
57818 --Distribution Type
57819  , p_source_12            IN VARCHAR2
57820  , p_source_12_meaning    IN VARCHAR2
57821 --Entered Currency Code
57822  , p_source_15            IN VARCHAR2
57823 --Entered Amount
57824  , p_source_18            IN NUMBER
57825 --Currency Conversion Date
57826  , p_source_19            IN DATE
57827 --Currency Conversion Rate
57828  , p_source_20            IN NUMBER
57829 --Currency Conversion Type
57830  , p_source_21            IN VARCHAR2
57831 --Accounted Amount
57832  , p_source_22            IN NUMBER
57833 --Accounting Line Type
57834  , p_source_24            IN NUMBER
57835 )
57836 IS
57837 
57838 l_component_type              VARCHAR2(80);
57839 l_component_code              VARCHAR2(30);
57840 l_component_type_code         VARCHAR2(1);
57841 l_component_appl_id           INTEGER;
57842 l_amb_context_code            VARCHAR2(30);
57843 l_entity_code                 VARCHAR2(30);
57844 l_event_class_code            VARCHAR2(30);
57845 l_ae_header_id                NUMBER;
57846 l_event_type_code             VARCHAR2(30);
57847 l_line_definition_code        VARCHAR2(30);
57848 l_line_definition_owner_code  VARCHAR2(1);
57849 --
57850 -- adr variables
57851 l_segment                     VARCHAR2(30);
57852 l_ccid                        NUMBER;
57853 l_adr_transaction_coa_id      NUMBER;
57854 l_adr_accounting_coa_id       NUMBER;
57855 l_adr_flexfield_segment_code  VARCHAR2(30);
57856 l_adr_flex_value_set_id       NUMBER;
57857 l_adr_value_type_code         VARCHAR2(30);
57858 l_adr_value_combination_id    NUMBER;
57859 l_adr_value_segment_code      VARCHAR2(30);
57860 
57861 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
57862 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
57863 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
57864 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
57865 
57866 -- 4262811 Variables ------------------------------------------------------------------------------------------
57867 l_entered_amt_idx             NUMBER;
57868 l_accted_amt_idx              NUMBER;
57869 l_acc_rev_flag                VARCHAR2(1);
57870 l_accrual_line_num            NUMBER;
57871 l_tmp_amt                     NUMBER;
57872 l_acc_rev_natural_side_code   VARCHAR2(1);
57873 
57874 l_num_entries                 NUMBER;
57875 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
57876 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
57877 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
57878 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
57879 l_recog_line_1                NUMBER;
57880 l_recog_line_2                NUMBER;
57881 
57882 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
57883 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
57884 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
57885 
57886 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
57887 
57888 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
57889 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
57890 
57891 ---------------------------------------------------------------------------------------------------------------
57892 
57893 
57894 --
57895 -- bulk performance
57896 --
57897 l_balance_type_code           VARCHAR2(1);
57898 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
57899 l_log_module                  VARCHAR2(240);
57900 
57901 --
57902 -- Upgrade strategy
57903 --
57904 l_actual_upg_option           VARCHAR2(1);
57905 l_enc_upg_option           VARCHAR2(1);
57906 
57907 --
57908 BEGIN
57909 --
57910 IF g_log_enabled THEN
57911       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_107';
57912 END IF;
57913 --
57914 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57915 
57916       trace
57917          (p_msg      => 'BEGIN of AcctLineType_107'
57918          ,p_level    => C_LEVEL_PROCEDURE
57919          ,p_module   => l_log_module);
57920 
57921 END IF;
57922 --
57923 l_component_type             := 'AMB_JLT';
57924 l_component_code             := 'INTERORG_RECEIVABLES';
57925 l_component_type_code        := 'S';
57926 l_component_appl_id          :=  707;
57927 l_amb_context_code           := 'DEFAULT';
57928 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
57929 l_event_class_code           := 'USER_DEFINE';
57930 l_event_type_code            := 'UDIR_INTERORG_SHIP_TP';
57931 l_line_definition_owner_code := 'S';
57932 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_TP';
57933 --
57934 l_balance_type_code          := 'A';
57935 l_segment                     := NULL;
57936 l_ccid                        := NULL;
57937 l_adr_transaction_coa_id      := NULL;
57938 l_adr_accounting_coa_id       := NULL;
57939 l_adr_flexfield_segment_code  := NULL;
57940 l_adr_flex_value_set_id       := NULL;
57941 l_adr_value_type_code         := NULL;
57942 l_adr_value_combination_id    := NULL;
57943 l_adr_value_segment_code      := NULL;
57944 
57945 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
57946 l_bflow_class_code           := '';    -- 4219869 Business Flow
57947 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
57948 l_budgetary_control_flag     := 'N';
57949 
57950 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
57951 l_bflow_applied_to_amt       := NULL; -- 5132302
57952 l_entered_amt_idx            := NULL;          -- 4262811
57953 l_accted_amt_idx             := NULL;          -- 4262811
57954 l_acc_rev_flag               := NULL;          -- 4262811
57955 l_accrual_line_num           := NULL;          -- 4262811
57956 l_tmp_amt                    := NULL;          -- 4262811
57957 --
57958  
57959 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
57960     l_balance_type_code <> 'B' THEN
57961 IF NVL(p_source_24,9E125) =  10
57962  THEN 
57963 
57964    --
57965    XLA_AE_LINES_PKG.SetNewLine;
57966 
57967    p_balance_type_code          := l_balance_type_code;
57968    -- set the flag so later we will know whether the gain loss line needs to be created
57969    
57970    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
57971      p_actual_flag :='A';
57972    END IF;
57973 
57974    --
57975    -- bulk performance
57976    --
57977    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
57978                                       p_header_num   => 0); -- 4262811
57979    --
57980    -- set accounting line options
57981    --
57982    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
57983            p_natural_side_code          => 'D'
57984          , p_gain_or_loss_flag          => 'N'
57985          , p_gl_transfer_mode_code      => 'S'
57986          , p_acct_entry_type_code       => 'A'
57987          , p_switch_side_flag           => 'Y'
57988          , p_merge_duplicate_code       => 'N'
57989          );
57990    --
57991    l_acc_rev_natural_side_code := 'C';  -- 4262811
57992    -- 
57993    --
57994    -- set accounting line type info
57995    --
57996    xla_ae_lines_pkg.SetAcctLineType
57997       (p_component_type             => l_component_type
57998       ,p_event_type_code            => l_event_type_code
57999       ,p_line_definition_owner_code => l_line_definition_owner_code
58000       ,p_line_definition_code       => l_line_definition_code
58001       ,p_accounting_line_code       => l_component_code
58002       ,p_accounting_line_type_code  => l_component_type_code
58003       ,p_accounting_line_appl_id    => l_component_appl_id
58004       ,p_amb_context_code           => l_amb_context_code
58005       ,p_entity_code                => l_entity_code
58006       ,p_event_class_code           => l_event_class_code);
58007    --
58008    -- set accounting class
58009    --
58010    xla_ae_lines_pkg.SetAcctClass(
58011            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
58012          , p_ae_header_id           => l_ae_header_id
58013          );
58014 
58015    --
58016    -- set rounding class
58017    --
58018    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
58019                       'INTERORG_RECEIVABLES';
58020 
58021    --
58022    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
58023    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
58024    --
58025    -- bulk performance
58026    --
58027    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
58028 
58029    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
58030       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
58031 
58032    -- 4955764
58033    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
58034       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
58035 
58036    -- 4458381 Public Sector Enh
58037    
58038    --
58039    -- set accounting attributes for the line type
58040    --
58041    l_entered_amt_idx := 3;
58042    l_accted_amt_idx  := 8;
58043    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
58044    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
58045    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
58046    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
58047    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
58048    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
58049    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
58050    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
58051    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
58052    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
58053    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
58054    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
58055    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
58056    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
58057    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
58058    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
58059    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
58060 
58061    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
58062    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
58063 
58064    ---------------------------------------------------------------------------------------------------------------
58065    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
58066    ---------------------------------------------------------------------------------------------------------------
58067    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
58068 
58069    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58070    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58071 
58072    IF xla_accounting_cache_pkg.GetValueChar
58073          (p_source_code         => 'LEDGER_CATEGORY_CODE'
58074          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
58075    AND l_bflow_method_code = 'PRIOR_ENTRY'
58076 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
58077    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
58078          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
58079        )
58080    THEN
58081          xla_ae_lines_pkg.BflowUpgEntry
58082            (p_business_method_code    => l_bflow_method_code
58083            ,p_business_class_code     => l_bflow_class_code
58084            ,p_balance_type            => l_balance_type_code);
58085    ELSE
58086       NULL;
58087 -- No business flow processing for business flow method of NONE.
58088    END IF;
58089 
58090    --
58091    -- call analytical criteria
58092    --
58093    
58094    --
58095    -- call description
58096    --
58097    -- No description or it is inherited.
58098    --
58099    -- call ADRs
58100    -- Bug 4922099
58101    --
58102    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
58103         (NVL(l_actual_upg_option, 'N') = 'O') OR
58104         (NVL(l_enc_upg_option, 'N') = 'O')
58105       )
58106    THEN
58107    NULL;
58108    --
58109    --
58110    
58111   l_ccid := AcctDerRule_4(
58112            p_application_id           => p_application_id
58113          , p_ae_header_id             => l_ae_header_id 
58114 , p_source_4 => p_source_4
58115          , x_transaction_coa_id       => l_adr_transaction_coa_id
58116          , x_accounting_coa_id        => l_adr_accounting_coa_id
58117          , x_value_type_code          => l_adr_value_type_code
58118          , p_side                     => 'NA'
58119    );
58120 
58121    xla_ae_lines_pkg.set_ccid(
58122     p_code_combination_id          => l_ccid
58123   , p_value_type_code              => l_adr_value_type_code
58124   , p_transaction_coa_id           => l_adr_transaction_coa_id
58125   , p_accounting_coa_id            => l_adr_accounting_coa_id
58126   , p_adr_code                     => 'CST_DEFAULT'
58127   , p_adr_type_code                => 'S'
58128   , p_component_type               => l_component_type
58129   , p_component_code               => l_component_code
58130   , p_component_type_code          => l_component_type_code
58131   , p_component_appl_id            => l_component_appl_id
58132   , p_amb_context_code             => l_amb_context_code
58133   , p_side                         => 'NA'
58134   );
58135 
58136 
58137    --
58138    --
58139    END IF;
58140    --
58141    -- Bug 4922099
58142    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
58143           (NVL(l_enc_upg_option, 'N') = 'O')
58144         ) AND
58145         (l_bflow_method_code = 'PRIOR_ENTRY')
58146       )
58147    THEN
58148       IF
58149       --
58150       1 = 2
58151       --
58152       THEN
58153       xla_accounting_err_pkg.build_message
58154                                     (p_appli_s_name            => 'XLA'
58155                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58156                                     ,p_token_1                 => 'LINE_NUMBER'
58157                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
58158                                     ,p_token_2                 => 'LINE_TYPE_NAME'
58159                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
58160                                                                              l_component_type
58161                                                                             ,l_component_code
58162                                                                             ,l_component_type_code
58163                                                                             ,l_component_appl_id
58164                                                                             ,l_amb_context_code
58165                                                                             ,l_entity_code
58166                                                                             ,l_event_class_code
58167                                                                            )
58168                                     ,p_token_3                 => 'OWNER'
58169                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
58170                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
58171                                                                           ,p_lookup_code    => l_component_type_code
58172                                                                          )
58173                                     ,p_token_4                 => 'PRODUCT_NAME'
58174                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
58175                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
58176                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
58177                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
58178                                     ,p_ae_header_id            =>  NULL
58179                                        );
58180 
58181         IF (C_LEVEL_ERROR>= g_log_level) THEN
58182                  trace
58183                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58184                       ,p_level    => C_LEVEL_ERROR
58185                       ,p_module   => l_log_module);
58186         END IF;
58187       END IF;
58188    END IF;
58189    --
58190    --
58191    ------------------------------------------------------------------------------------------------
58192    -- 4219869 Business Flow
58193    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
58194    -- Prior Entry.  Currently, the following code is always generated.
58195    ------------------------------------------------------------------------------------------------
58196    XLA_AE_LINES_PKG.ValidateCurrentLine;
58197 
58198    ------------------------------------------------------------------------------------
58199    -- 4219869 Business Flow
58200    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
58201    ------------------------------------------------------------------------------------
58202    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
58203 
58204    ----------------------------------------------------------------------------------
58205    -- 4219869 Business Flow
58206    -- Update journal entry status -- Need to generate this within IF <condition>
58207    ----------------------------------------------------------------------------------
58208    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
58209          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
58210          ,p_balance_type_code => l_balance_type_code
58211          );
58212 
58213    -------------------------------------------------------------------------------------------
58214    -- 4262811 - Generate the Accrual Reversal lines
58215    -------------------------------------------------------------------------------------------
58216    BEGIN
58217       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
58218                               (g_array_event(p_event_id).array_value_num('header_index'));
58219       IF l_acc_rev_flag IS NULL THEN
58220          l_acc_rev_flag := 'N';
58221       END IF;
58222    EXCEPTION
58223       WHEN OTHERS THEN
58224          l_acc_rev_flag := 'N';
58225    END;
58226    --
58227    IF (l_acc_rev_flag = 'Y') THEN
58228 
58229        -- 4645092  ------------------------------------------------------------------------------
58230        -- To allow MPA report to determine if it should generate report process
58231        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
58232        ------------------------------------------------------------------------------------------
58233 
58234        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
58235        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
58236    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
58237    -- call ADRs
58238    -- Bug 4922099
58239    --
58240    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
58241         (NVL(l_actual_upg_option, 'N') = 'O') OR
58242         (NVL(l_enc_upg_option, 'N') = 'O')
58243       )
58244    THEN
58245    NULL;
58246    --
58247    --
58248    
58249   l_ccid := AcctDerRule_4(
58250            p_application_id           => p_application_id
58251          , p_ae_header_id             => l_ae_header_id 
58252 , p_source_4 => p_source_4
58253          , x_transaction_coa_id       => l_adr_transaction_coa_id
58254          , x_accounting_coa_id        => l_adr_accounting_coa_id
58255          , x_value_type_code          => l_adr_value_type_code
58256          , p_side                     => 'NA'
58257    );
58258 
58259    xla_ae_lines_pkg.set_ccid(
58260     p_code_combination_id          => l_ccid
58261   , p_value_type_code              => l_adr_value_type_code
58262   , p_transaction_coa_id           => l_adr_transaction_coa_id
58263   , p_accounting_coa_id            => l_adr_accounting_coa_id
58264   , p_adr_code                     => 'CST_DEFAULT'
58265   , p_adr_type_code                => 'S'
58266   , p_component_type               => l_component_type
58267   , p_component_code               => l_component_code
58268   , p_component_type_code          => l_component_type_code
58269   , p_component_appl_id            => l_component_appl_id
58270   , p_amb_context_code             => l_amb_context_code
58271   , p_side                         => 'NA'
58272   );
58273 
58274 
58275    --
58276    --
58277    END IF;
58278 
58279        --
58280        -- Update the line information that should be overwritten
58281        --
58282        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
58283                                          p_header_num   => 1);
58284        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
58285 
58286        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
58287 
58288        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
58289           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
58290        END IF;
58291 
58292       --
58293       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
58294       --
58295       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
58296           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
58297       ELSE
58298           ---------------------------------------------------------------------------------------------------
58299           -- 4262811a Switch Sign
58300           ---------------------------------------------------------------------------------------------------
58301           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
58302           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
58303                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58304           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
58305                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58306           -- 5132302
58307           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
58308                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58309 
58310       END IF;
58311 
58312       -- 4955764
58313       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
58314       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
58315 
58316 
58317       XLA_AE_LINES_PKG.ValidateCurrentLine;
58318       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
58319 
58320       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
58321                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
58322                ,p_balance_type_code => l_balance_type_code);
58323 
58324    END IF;
58325 
58326    -----------------------------------------------------------------------------------------
58327    -- 4262811 Multiperiod Accounting
58328    -----------------------------------------------------------------------------------------
58329      -- No MPA option is assigned.
58330 
58331 
58332 END IF;
58333 END IF;
58334 --
58335 
58336 --
58337 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58338    trace
58339       (p_msg      => 'END of AcctLineType_107'
58340       ,p_level    => C_LEVEL_PROCEDURE
58341       ,p_module   => l_log_module);
58342 END IF;
58343 --
58344 EXCEPTION
58345   WHEN xla_exceptions_pkg.application_exception THEN
58346       RAISE;
58347   WHEN OTHERS THEN
58348        xla_exceptions_pkg.raise_message
58349            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_107');
58350 END AcctLineType_107;
58351 --
58352 
58353 ---------------------------------------
58354 --
58355 -- PRIVATE FUNCTION
58356 --         AcctLineType_108
58357 --
58358 ---------------------------------------
58359 PROCEDURE AcctLineType_108 (
58360   p_application_id        IN NUMBER
58361  ,p_event_id              IN NUMBER
58362  ,p_calculate_acctd_flag  IN VARCHAR2
58363  ,p_calculate_g_l_flag    IN VARCHAR2
58364  ,p_actual_flag           IN OUT VARCHAR2
58365  ,p_balance_type_code     OUT VARCHAR2
58366  ,p_gain_or_loss_ref      OUT VARCHAR2
58367  
58368 --Cost Management Default Account
58369  , p_source_4            IN NUMBER
58370 --DISTRIBUTION_IDENTIFIER
58371  , p_source_11            IN NUMBER
58372 --Distribution Type
58373  , p_source_12            IN VARCHAR2
58374  , p_source_12_meaning    IN VARCHAR2
58375 --Entered Currency Code
58376  , p_source_15            IN VARCHAR2
58377 --Entered Amount
58378  , p_source_18            IN NUMBER
58379 --Currency Conversion Date
58380  , p_source_19            IN DATE
58381 --Currency Conversion Rate
58382  , p_source_20            IN NUMBER
58383 --Currency Conversion Type
58384  , p_source_21            IN VARCHAR2
58385 --Accounted Amount
58386  , p_source_22            IN NUMBER
58387 --Accounting Line Type
58388  , p_source_24            IN NUMBER
58389 )
58390 IS
58391 
58392 l_component_type              VARCHAR2(80);
58393 l_component_code              VARCHAR2(30);
58394 l_component_type_code         VARCHAR2(1);
58395 l_component_appl_id           INTEGER;
58396 l_amb_context_code            VARCHAR2(30);
58397 l_entity_code                 VARCHAR2(30);
58398 l_event_class_code            VARCHAR2(30);
58399 l_ae_header_id                NUMBER;
58400 l_event_type_code             VARCHAR2(30);
58401 l_line_definition_code        VARCHAR2(30);
58402 l_line_definition_owner_code  VARCHAR2(1);
58403 --
58404 -- adr variables
58405 l_segment                     VARCHAR2(30);
58406 l_ccid                        NUMBER;
58407 l_adr_transaction_coa_id      NUMBER;
58408 l_adr_accounting_coa_id       NUMBER;
58409 l_adr_flexfield_segment_code  VARCHAR2(30);
58410 l_adr_flex_value_set_id       NUMBER;
58411 l_adr_value_type_code         VARCHAR2(30);
58412 l_adr_value_combination_id    NUMBER;
58413 l_adr_value_segment_code      VARCHAR2(30);
58414 
58415 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
58416 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
58417 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
58418 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
58419 
58420 -- 4262811 Variables ------------------------------------------------------------------------------------------
58421 l_entered_amt_idx             NUMBER;
58422 l_accted_amt_idx              NUMBER;
58423 l_acc_rev_flag                VARCHAR2(1);
58424 l_accrual_line_num            NUMBER;
58425 l_tmp_amt                     NUMBER;
58426 l_acc_rev_natural_side_code   VARCHAR2(1);
58427 
58428 l_num_entries                 NUMBER;
58429 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
58430 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
58431 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
58432 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
58433 l_recog_line_1                NUMBER;
58434 l_recog_line_2                NUMBER;
58435 
58436 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
58437 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
58438 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
58439 
58440 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
58441 
58442 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
58443 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
58444 
58445 ---------------------------------------------------------------------------------------------------------------
58446 
58447 
58448 --
58449 -- bulk performance
58450 --
58451 l_balance_type_code           VARCHAR2(1);
58452 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
58453 l_log_module                  VARCHAR2(240);
58454 
58455 --
58456 -- Upgrade strategy
58457 --
58458 l_actual_upg_option           VARCHAR2(1);
58459 l_enc_upg_option           VARCHAR2(1);
58460 
58461 --
58462 BEGIN
58463 --
58464 IF g_log_enabled THEN
58465       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_108';
58466 END IF;
58467 --
58468 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58469 
58470       trace
58471          (p_msg      => 'BEGIN of AcctLineType_108'
58472          ,p_level    => C_LEVEL_PROCEDURE
58473          ,p_module   => l_log_module);
58474 
58475 END IF;
58476 --
58477 l_component_type             := 'AMB_JLT';
58478 l_component_code             := 'INTERORG_RECEIVABLES';
58479 l_component_type_code        := 'S';
58480 l_component_appl_id          :=  707;
58481 l_amb_context_code           := 'DEFAULT';
58482 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
58483 l_event_class_code           := 'USER_DEFINE';
58484 l_event_type_code            := 'UDIR_INTERORG_RCPT_NO_TP';
58485 l_line_definition_owner_code := 'S';
58486 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_NO_TP';
58487 --
58488 l_balance_type_code          := 'A';
58489 l_segment                     := NULL;
58490 l_ccid                        := NULL;
58491 l_adr_transaction_coa_id      := NULL;
58492 l_adr_accounting_coa_id       := NULL;
58493 l_adr_flexfield_segment_code  := NULL;
58494 l_adr_flex_value_set_id       := NULL;
58495 l_adr_value_type_code         := NULL;
58496 l_adr_value_combination_id    := NULL;
58497 l_adr_value_segment_code      := NULL;
58498 
58499 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
58500 l_bflow_class_code           := '';    -- 4219869 Business Flow
58501 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
58502 l_budgetary_control_flag     := 'N';
58503 
58504 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
58505 l_bflow_applied_to_amt       := NULL; -- 5132302
58506 l_entered_amt_idx            := NULL;          -- 4262811
58507 l_accted_amt_idx             := NULL;          -- 4262811
58508 l_acc_rev_flag               := NULL;          -- 4262811
58509 l_accrual_line_num           := NULL;          -- 4262811
58510 l_tmp_amt                    := NULL;          -- 4262811
58511 --
58512  
58513 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
58514     l_balance_type_code <> 'B' THEN
58515 IF NVL(p_source_24,9E125) =  10
58516  THEN 
58517 
58518    --
58519    XLA_AE_LINES_PKG.SetNewLine;
58520 
58521    p_balance_type_code          := l_balance_type_code;
58522    -- set the flag so later we will know whether the gain loss line needs to be created
58523    
58524    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
58525      p_actual_flag :='A';
58526    END IF;
58527 
58528    --
58529    -- bulk performance
58530    --
58531    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
58532                                       p_header_num   => 0); -- 4262811
58533    --
58534    -- set accounting line options
58535    --
58536    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
58537            p_natural_side_code          => 'D'
58538          , p_gain_or_loss_flag          => 'N'
58539          , p_gl_transfer_mode_code      => 'S'
58540          , p_acct_entry_type_code       => 'A'
58541          , p_switch_side_flag           => 'Y'
58542          , p_merge_duplicate_code       => 'N'
58543          );
58544    --
58545    l_acc_rev_natural_side_code := 'C';  -- 4262811
58546    -- 
58547    --
58548    -- set accounting line type info
58549    --
58550    xla_ae_lines_pkg.SetAcctLineType
58551       (p_component_type             => l_component_type
58552       ,p_event_type_code            => l_event_type_code
58553       ,p_line_definition_owner_code => l_line_definition_owner_code
58554       ,p_line_definition_code       => l_line_definition_code
58555       ,p_accounting_line_code       => l_component_code
58556       ,p_accounting_line_type_code  => l_component_type_code
58557       ,p_accounting_line_appl_id    => l_component_appl_id
58558       ,p_amb_context_code           => l_amb_context_code
58559       ,p_entity_code                => l_entity_code
58560       ,p_event_class_code           => l_event_class_code);
58561    --
58562    -- set accounting class
58563    --
58564    xla_ae_lines_pkg.SetAcctClass(
58565            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
58566          , p_ae_header_id           => l_ae_header_id
58567          );
58568 
58569    --
58570    -- set rounding class
58571    --
58572    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
58573                       'INTERORG_RECEIVABLES';
58574 
58575    --
58576    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
58577    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
58578    --
58579    -- bulk performance
58580    --
58581    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
58582 
58583    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
58584       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
58585 
58586    -- 4955764
58587    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
58588       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
58589 
58590    -- 4458381 Public Sector Enh
58591    
58592    --
58593    -- set accounting attributes for the line type
58594    --
58595    l_entered_amt_idx := 3;
58596    l_accted_amt_idx  := 8;
58597    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
58598    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
58599    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
58600    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
58601    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
58602    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
58603    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
58604    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
58605    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
58606    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
58607    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
58608    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
58609    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
58610    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
58611    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
58612    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
58613    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
58614 
58615    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
58616    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
58617 
58618    ---------------------------------------------------------------------------------------------------------------
58619    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
58620    ---------------------------------------------------------------------------------------------------------------
58621    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
58622 
58623    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58624    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58625 
58626    IF xla_accounting_cache_pkg.GetValueChar
58627          (p_source_code         => 'LEDGER_CATEGORY_CODE'
58628          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
58629    AND l_bflow_method_code = 'PRIOR_ENTRY'
58630 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
58631    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
58632          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
58633        )
58634    THEN
58635          xla_ae_lines_pkg.BflowUpgEntry
58636            (p_business_method_code    => l_bflow_method_code
58637            ,p_business_class_code     => l_bflow_class_code
58638            ,p_balance_type            => l_balance_type_code);
58639    ELSE
58640       NULL;
58641 -- No business flow processing for business flow method of NONE.
58642    END IF;
58643 
58644    --
58645    -- call analytical criteria
58646    --
58647    
58648    --
58649    -- call description
58650    --
58651    -- No description or it is inherited.
58652    --
58653    -- call ADRs
58654    -- Bug 4922099
58655    --
58656    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
58657         (NVL(l_actual_upg_option, 'N') = 'O') OR
58658         (NVL(l_enc_upg_option, 'N') = 'O')
58659       )
58660    THEN
58661    NULL;
58662    --
58663    --
58664    
58665   l_ccid := AcctDerRule_4(
58666            p_application_id           => p_application_id
58667          , p_ae_header_id             => l_ae_header_id 
58668 , p_source_4 => p_source_4
58669          , x_transaction_coa_id       => l_adr_transaction_coa_id
58670          , x_accounting_coa_id        => l_adr_accounting_coa_id
58671          , x_value_type_code          => l_adr_value_type_code
58672          , p_side                     => 'NA'
58673    );
58674 
58675    xla_ae_lines_pkg.set_ccid(
58676     p_code_combination_id          => l_ccid
58677   , p_value_type_code              => l_adr_value_type_code
58678   , p_transaction_coa_id           => l_adr_transaction_coa_id
58679   , p_accounting_coa_id            => l_adr_accounting_coa_id
58680   , p_adr_code                     => 'CST_DEFAULT'
58681   , p_adr_type_code                => 'S'
58682   , p_component_type               => l_component_type
58683   , p_component_code               => l_component_code
58684   , p_component_type_code          => l_component_type_code
58685   , p_component_appl_id            => l_component_appl_id
58686   , p_amb_context_code             => l_amb_context_code
58687   , p_side                         => 'NA'
58688   );
58689 
58690 
58691    --
58692    --
58693    END IF;
58694    --
58695    -- Bug 4922099
58696    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
58697           (NVL(l_enc_upg_option, 'N') = 'O')
58698         ) AND
58699         (l_bflow_method_code = 'PRIOR_ENTRY')
58700       )
58701    THEN
58702       IF
58703       --
58704       1 = 2
58705       --
58706       THEN
58707       xla_accounting_err_pkg.build_message
58708                                     (p_appli_s_name            => 'XLA'
58709                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58710                                     ,p_token_1                 => 'LINE_NUMBER'
58711                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
58712                                     ,p_token_2                 => 'LINE_TYPE_NAME'
58713                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
58714                                                                              l_component_type
58715                                                                             ,l_component_code
58716                                                                             ,l_component_type_code
58717                                                                             ,l_component_appl_id
58718                                                                             ,l_amb_context_code
58719                                                                             ,l_entity_code
58720                                                                             ,l_event_class_code
58721                                                                            )
58722                                     ,p_token_3                 => 'OWNER'
58723                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
58724                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
58725                                                                           ,p_lookup_code    => l_component_type_code
58726                                                                          )
58727                                     ,p_token_4                 => 'PRODUCT_NAME'
58728                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
58729                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
58730                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
58731                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
58732                                     ,p_ae_header_id            =>  NULL
58733                                        );
58734 
58735         IF (C_LEVEL_ERROR>= g_log_level) THEN
58736                  trace
58737                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58738                       ,p_level    => C_LEVEL_ERROR
58739                       ,p_module   => l_log_module);
58740         END IF;
58741       END IF;
58742    END IF;
58743    --
58744    --
58745    ------------------------------------------------------------------------------------------------
58746    -- 4219869 Business Flow
58747    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
58748    -- Prior Entry.  Currently, the following code is always generated.
58749    ------------------------------------------------------------------------------------------------
58750    XLA_AE_LINES_PKG.ValidateCurrentLine;
58751 
58752    ------------------------------------------------------------------------------------
58753    -- 4219869 Business Flow
58754    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
58755    ------------------------------------------------------------------------------------
58756    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
58757 
58758    ----------------------------------------------------------------------------------
58759    -- 4219869 Business Flow
58760    -- Update journal entry status -- Need to generate this within IF <condition>
58761    ----------------------------------------------------------------------------------
58762    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
58763          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
58764          ,p_balance_type_code => l_balance_type_code
58765          );
58766 
58767    -------------------------------------------------------------------------------------------
58768    -- 4262811 - Generate the Accrual Reversal lines
58769    -------------------------------------------------------------------------------------------
58770    BEGIN
58771       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
58772                               (g_array_event(p_event_id).array_value_num('header_index'));
58773       IF l_acc_rev_flag IS NULL THEN
58774          l_acc_rev_flag := 'N';
58775       END IF;
58776    EXCEPTION
58777       WHEN OTHERS THEN
58778          l_acc_rev_flag := 'N';
58779    END;
58780    --
58781    IF (l_acc_rev_flag = 'Y') THEN
58782 
58783        -- 4645092  ------------------------------------------------------------------------------
58784        -- To allow MPA report to determine if it should generate report process
58785        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
58786        ------------------------------------------------------------------------------------------
58787 
58788        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
58789        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
58790    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
58791    -- call ADRs
58792    -- Bug 4922099
58793    --
58794    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
58795         (NVL(l_actual_upg_option, 'N') = 'O') OR
58796         (NVL(l_enc_upg_option, 'N') = 'O')
58797       )
58798    THEN
58799    NULL;
58800    --
58801    --
58802    
58803   l_ccid := AcctDerRule_4(
58804            p_application_id           => p_application_id
58805          , p_ae_header_id             => l_ae_header_id 
58806 , p_source_4 => p_source_4
58807          , x_transaction_coa_id       => l_adr_transaction_coa_id
58808          , x_accounting_coa_id        => l_adr_accounting_coa_id
58809          , x_value_type_code          => l_adr_value_type_code
58810          , p_side                     => 'NA'
58811    );
58812 
58813    xla_ae_lines_pkg.set_ccid(
58814     p_code_combination_id          => l_ccid
58815   , p_value_type_code              => l_adr_value_type_code
58816   , p_transaction_coa_id           => l_adr_transaction_coa_id
58817   , p_accounting_coa_id            => l_adr_accounting_coa_id
58818   , p_adr_code                     => 'CST_DEFAULT'
58819   , p_adr_type_code                => 'S'
58820   , p_component_type               => l_component_type
58821   , p_component_code               => l_component_code
58822   , p_component_type_code          => l_component_type_code
58823   , p_component_appl_id            => l_component_appl_id
58824   , p_amb_context_code             => l_amb_context_code
58825   , p_side                         => 'NA'
58826   );
58827 
58828 
58829    --
58830    --
58831    END IF;
58832 
58833        --
58834        -- Update the line information that should be overwritten
58835        --
58836        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
58837                                          p_header_num   => 1);
58838        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
58839 
58840        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
58841 
58842        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
58843           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
58844        END IF;
58845 
58846       --
58847       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
58848       --
58849       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
58850           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
58851       ELSE
58852           ---------------------------------------------------------------------------------------------------
58853           -- 4262811a Switch Sign
58854           ---------------------------------------------------------------------------------------------------
58855           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
58856           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
58857                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58858           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
58859                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58860           -- 5132302
58861           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
58862                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58863 
58864       END IF;
58865 
58866       -- 4955764
58867       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
58868       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
58869 
58870 
58871       XLA_AE_LINES_PKG.ValidateCurrentLine;
58872       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
58873 
58874       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
58875                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
58876                ,p_balance_type_code => l_balance_type_code);
58877 
58878    END IF;
58879 
58880    -----------------------------------------------------------------------------------------
58881    -- 4262811 Multiperiod Accounting
58882    -----------------------------------------------------------------------------------------
58883      -- No MPA option is assigned.
58884 
58885 
58886 END IF;
58887 END IF;
58888 --
58889 
58890 --
58891 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58892    trace
58893       (p_msg      => 'END of AcctLineType_108'
58894       ,p_level    => C_LEVEL_PROCEDURE
58895       ,p_module   => l_log_module);
58896 END IF;
58897 --
58898 EXCEPTION
58899   WHEN xla_exceptions_pkg.application_exception THEN
58900       RAISE;
58901   WHEN OTHERS THEN
58902        xla_exceptions_pkg.raise_message
58903            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_108');
58904 END AcctLineType_108;
58905 --
58906 
58907 ---------------------------------------
58908 --
58909 -- PRIVATE FUNCTION
58910 --         AcctLineType_109
58911 --
58912 ---------------------------------------
58913 PROCEDURE AcctLineType_109 (
58914   p_application_id        IN NUMBER
58915  ,p_event_id              IN NUMBER
58916  ,p_calculate_acctd_flag  IN VARCHAR2
58917  ,p_calculate_g_l_flag    IN VARCHAR2
58918  ,p_actual_flag           IN OUT VARCHAR2
58919  ,p_balance_type_code     OUT VARCHAR2
58920  ,p_gain_or_loss_ref      OUT VARCHAR2
58921  
58922 --Cost Management Default Account
58923  , p_source_4            IN NUMBER
58924 --DISTRIBUTION_IDENTIFIER
58925  , p_source_11            IN NUMBER
58926 --Distribution Type
58927  , p_source_12            IN VARCHAR2
58928  , p_source_12_meaning    IN VARCHAR2
58929 --Entered Currency Code
58930  , p_source_15            IN VARCHAR2
58931 --Entered Amount
58932  , p_source_18            IN NUMBER
58933 --Currency Conversion Date
58934  , p_source_19            IN DATE
58935 --Currency Conversion Rate
58936  , p_source_20            IN NUMBER
58937 --Currency Conversion Type
58938  , p_source_21            IN VARCHAR2
58939 --Accounted Amount
58940  , p_source_22            IN NUMBER
58941 --Accounting Line Type
58942  , p_source_24            IN NUMBER
58943 )
58944 IS
58945 
58946 l_component_type              VARCHAR2(80);
58947 l_component_code              VARCHAR2(30);
58948 l_component_type_code         VARCHAR2(1);
58949 l_component_appl_id           INTEGER;
58950 l_amb_context_code            VARCHAR2(30);
58951 l_entity_code                 VARCHAR2(30);
58952 l_event_class_code            VARCHAR2(30);
58953 l_ae_header_id                NUMBER;
58954 l_event_type_code             VARCHAR2(30);
58955 l_line_definition_code        VARCHAR2(30);
58956 l_line_definition_owner_code  VARCHAR2(1);
58957 --
58958 -- adr variables
58959 l_segment                     VARCHAR2(30);
58960 l_ccid                        NUMBER;
58961 l_adr_transaction_coa_id      NUMBER;
58962 l_adr_accounting_coa_id       NUMBER;
58963 l_adr_flexfield_segment_code  VARCHAR2(30);
58964 l_adr_flex_value_set_id       NUMBER;
58965 l_adr_value_type_code         VARCHAR2(30);
58966 l_adr_value_combination_id    NUMBER;
58967 l_adr_value_segment_code      VARCHAR2(30);
58968 
58969 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
58970 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
58971 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
58972 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
58973 
58974 -- 4262811 Variables ------------------------------------------------------------------------------------------
58975 l_entered_amt_idx             NUMBER;
58976 l_accted_amt_idx              NUMBER;
58977 l_acc_rev_flag                VARCHAR2(1);
58978 l_accrual_line_num            NUMBER;
58979 l_tmp_amt                     NUMBER;
58980 l_acc_rev_natural_side_code   VARCHAR2(1);
58981 
58982 l_num_entries                 NUMBER;
58983 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
58984 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
58985 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
58986 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
58987 l_recog_line_1                NUMBER;
58988 l_recog_line_2                NUMBER;
58989 
58990 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
58991 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
58992 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
58993 
58994 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
58995 
58996 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
58997 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
58998 
58999 ---------------------------------------------------------------------------------------------------------------
59000 
59001 
59002 --
59003 -- bulk performance
59004 --
59005 l_balance_type_code           VARCHAR2(1);
59006 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
59007 l_log_module                  VARCHAR2(240);
59008 
59009 --
59010 -- Upgrade strategy
59011 --
59012 l_actual_upg_option           VARCHAR2(1);
59013 l_enc_upg_option           VARCHAR2(1);
59014 
59015 --
59016 BEGIN
59017 --
59018 IF g_log_enabled THEN
59019       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_109';
59020 END IF;
59021 --
59022 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59023 
59024       trace
59025          (p_msg      => 'BEGIN of AcctLineType_109'
59026          ,p_level    => C_LEVEL_PROCEDURE
59027          ,p_module   => l_log_module);
59028 
59029 END IF;
59030 --
59031 l_component_type             := 'AMB_JLT';
59032 l_component_code             := 'INTERORG_TRANSFER_CREDIT';
59033 l_component_type_code        := 'S';
59034 l_component_appl_id          :=  707;
59035 l_amb_context_code           := 'DEFAULT';
59036 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
59037 l_event_class_code           := 'USER_DEFINE';
59038 l_event_type_code            := 'UDIR_INTERORG_RCPT';
59039 l_line_definition_owner_code := 'S';
59040 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT';
59041 --
59042 l_balance_type_code          := 'A';
59043 l_segment                     := NULL;
59044 l_ccid                        := NULL;
59045 l_adr_transaction_coa_id      := NULL;
59046 l_adr_accounting_coa_id       := NULL;
59047 l_adr_flexfield_segment_code  := NULL;
59048 l_adr_flex_value_set_id       := NULL;
59049 l_adr_value_type_code         := NULL;
59050 l_adr_value_combination_id    := NULL;
59051 l_adr_value_segment_code      := NULL;
59052 
59053 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
59054 l_bflow_class_code           := '';    -- 4219869 Business Flow
59055 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
59056 l_budgetary_control_flag     := 'N';
59057 
59058 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
59059 l_bflow_applied_to_amt       := NULL; -- 5132302
59060 l_entered_amt_idx            := NULL;          -- 4262811
59061 l_accted_amt_idx             := NULL;          -- 4262811
59062 l_acc_rev_flag               := NULL;          -- 4262811
59063 l_accrual_line_num           := NULL;          -- 4262811
59064 l_tmp_amt                    := NULL;          -- 4262811
59065 --
59066  
59067 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
59068     l_balance_type_code <> 'B' THEN
59069 IF NVL(p_source_24,9E125) =  11
59070  THEN 
59071 
59072    --
59073    XLA_AE_LINES_PKG.SetNewLine;
59074 
59075    p_balance_type_code          := l_balance_type_code;
59076    -- set the flag so later we will know whether the gain loss line needs to be created
59077    
59078    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
59079      p_actual_flag :='A';
59080    END IF;
59081 
59082    --
59083    -- bulk performance
59084    --
59085    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
59086                                       p_header_num   => 0); -- 4262811
59087    --
59088    -- set accounting line options
59089    --
59090    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
59091            p_natural_side_code          => 'D'
59092          , p_gain_or_loss_flag          => 'N'
59093          , p_gl_transfer_mode_code      => 'S'
59094          , p_acct_entry_type_code       => 'A'
59095          , p_switch_side_flag           => 'Y'
59096          , p_merge_duplicate_code       => 'N'
59097          );
59098    --
59099    l_acc_rev_natural_side_code := 'C';  -- 4262811
59100    -- 
59101    --
59102    -- set accounting line type info
59103    --
59104    xla_ae_lines_pkg.SetAcctLineType
59105       (p_component_type             => l_component_type
59106       ,p_event_type_code            => l_event_type_code
59107       ,p_line_definition_owner_code => l_line_definition_owner_code
59108       ,p_line_definition_code       => l_line_definition_code
59109       ,p_accounting_line_code       => l_component_code
59110       ,p_accounting_line_type_code  => l_component_type_code
59111       ,p_accounting_line_appl_id    => l_component_appl_id
59112       ,p_amb_context_code           => l_amb_context_code
59113       ,p_entity_code                => l_entity_code
59114       ,p_event_class_code           => l_event_class_code);
59115    --
59116    -- set accounting class
59117    --
59118    xla_ae_lines_pkg.SetAcctClass(
59119            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
59120          , p_ae_header_id           => l_ae_header_id
59121          );
59122 
59123    --
59124    -- set rounding class
59125    --
59126    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
59127                       'INTERORG_TRANSFER_CREDIT';
59128 
59129    --
59130    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
59131    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
59132    --
59133    -- bulk performance
59134    --
59135    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
59136 
59137    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
59138       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
59139 
59140    -- 4955764
59141    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
59142       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
59143 
59144    -- 4458381 Public Sector Enh
59145    
59146    --
59147    -- set accounting attributes for the line type
59148    --
59149    l_entered_amt_idx := 3;
59150    l_accted_amt_idx  := 8;
59151    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
59152    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
59153    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
59154    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
59155    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
59156    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
59157    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
59158    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
59159    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
59160    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
59161    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
59162    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
59163    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
59164    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
59165    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
59166    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
59167    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
59168 
59169    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
59170    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
59171 
59172    ---------------------------------------------------------------------------------------------------------------
59173    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
59174    ---------------------------------------------------------------------------------------------------------------
59175    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
59176 
59177    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
59178    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
59179 
59180    IF xla_accounting_cache_pkg.GetValueChar
59181          (p_source_code         => 'LEDGER_CATEGORY_CODE'
59182          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
59183    AND l_bflow_method_code = 'PRIOR_ENTRY'
59184 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
59185    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
59186          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
59187        )
59188    THEN
59189          xla_ae_lines_pkg.BflowUpgEntry
59190            (p_business_method_code    => l_bflow_method_code
59191            ,p_business_class_code     => l_bflow_class_code
59192            ,p_balance_type            => l_balance_type_code);
59193    ELSE
59194       NULL;
59195 -- No business flow processing for business flow method of NONE.
59196    END IF;
59197 
59198    --
59199    -- call analytical criteria
59200    --
59201    
59202    --
59203    -- call description
59204    --
59205    -- No description or it is inherited.
59206    --
59207    -- call ADRs
59208    -- Bug 4922099
59209    --
59210    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
59211         (NVL(l_actual_upg_option, 'N') = 'O') OR
59212         (NVL(l_enc_upg_option, 'N') = 'O')
59213       )
59214    THEN
59215    NULL;
59216    --
59217    --
59218    
59219   l_ccid := AcctDerRule_4(
59220            p_application_id           => p_application_id
59221          , p_ae_header_id             => l_ae_header_id 
59222 , p_source_4 => p_source_4
59223          , x_transaction_coa_id       => l_adr_transaction_coa_id
59224          , x_accounting_coa_id        => l_adr_accounting_coa_id
59225          , x_value_type_code          => l_adr_value_type_code
59226          , p_side                     => 'NA'
59227    );
59228 
59229    xla_ae_lines_pkg.set_ccid(
59230     p_code_combination_id          => l_ccid
59231   , p_value_type_code              => l_adr_value_type_code
59232   , p_transaction_coa_id           => l_adr_transaction_coa_id
59233   , p_accounting_coa_id            => l_adr_accounting_coa_id
59234   , p_adr_code                     => 'CST_DEFAULT'
59235   , p_adr_type_code                => 'S'
59236   , p_component_type               => l_component_type
59237   , p_component_code               => l_component_code
59238   , p_component_type_code          => l_component_type_code
59239   , p_component_appl_id            => l_component_appl_id
59240   , p_amb_context_code             => l_amb_context_code
59241   , p_side                         => 'NA'
59242   );
59243 
59244 
59245    --
59246    --
59247    END IF;
59248    --
59249    -- Bug 4922099
59250    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
59251           (NVL(l_enc_upg_option, 'N') = 'O')
59252         ) AND
59253         (l_bflow_method_code = 'PRIOR_ENTRY')
59254       )
59255    THEN
59256       IF
59257       --
59258       1 = 2
59259       --
59260       THEN
59261       xla_accounting_err_pkg.build_message
59262                                     (p_appli_s_name            => 'XLA'
59263                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
59264                                     ,p_token_1                 => 'LINE_NUMBER'
59265                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
59266                                     ,p_token_2                 => 'LINE_TYPE_NAME'
59267                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
59268                                                                              l_component_type
59269                                                                             ,l_component_code
59270                                                                             ,l_component_type_code
59271                                                                             ,l_component_appl_id
59272                                                                             ,l_amb_context_code
59273                                                                             ,l_entity_code
59274                                                                             ,l_event_class_code
59275                                                                            )
59276                                     ,p_token_3                 => 'OWNER'
59277                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
59278                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
59279                                                                           ,p_lookup_code    => l_component_type_code
59280                                                                          )
59281                                     ,p_token_4                 => 'PRODUCT_NAME'
59282                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
59283                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
59284                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
59285                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
59286                                     ,p_ae_header_id            =>  NULL
59287                                        );
59288 
59289         IF (C_LEVEL_ERROR>= g_log_level) THEN
59290                  trace
59291                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
59292                       ,p_level    => C_LEVEL_ERROR
59293                       ,p_module   => l_log_module);
59294         END IF;
59295       END IF;
59296    END IF;
59297    --
59298    --
59299    ------------------------------------------------------------------------------------------------
59300    -- 4219869 Business Flow
59301    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
59302    -- Prior Entry.  Currently, the following code is always generated.
59303    ------------------------------------------------------------------------------------------------
59304    XLA_AE_LINES_PKG.ValidateCurrentLine;
59305 
59306    ------------------------------------------------------------------------------------
59307    -- 4219869 Business Flow
59308    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
59309    ------------------------------------------------------------------------------------
59310    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
59311 
59312    ----------------------------------------------------------------------------------
59313    -- 4219869 Business Flow
59314    -- Update journal entry status -- Need to generate this within IF <condition>
59315    ----------------------------------------------------------------------------------
59316    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
59317          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
59318          ,p_balance_type_code => l_balance_type_code
59319          );
59320 
59321    -------------------------------------------------------------------------------------------
59322    -- 4262811 - Generate the Accrual Reversal lines
59323    -------------------------------------------------------------------------------------------
59324    BEGIN
59325       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
59326                               (g_array_event(p_event_id).array_value_num('header_index'));
59327       IF l_acc_rev_flag IS NULL THEN
59328          l_acc_rev_flag := 'N';
59329       END IF;
59330    EXCEPTION
59331       WHEN OTHERS THEN
59332          l_acc_rev_flag := 'N';
59333    END;
59334    --
59335    IF (l_acc_rev_flag = 'Y') THEN
59336 
59337        -- 4645092  ------------------------------------------------------------------------------
59338        -- To allow MPA report to determine if it should generate report process
59339        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
59340        ------------------------------------------------------------------------------------------
59341 
59342        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
59343        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
59344    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
59345    -- call ADRs
59346    -- Bug 4922099
59347    --
59348    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
59349         (NVL(l_actual_upg_option, 'N') = 'O') OR
59350         (NVL(l_enc_upg_option, 'N') = 'O')
59351       )
59352    THEN
59353    NULL;
59354    --
59355    --
59356    
59357   l_ccid := AcctDerRule_4(
59358            p_application_id           => p_application_id
59359          , p_ae_header_id             => l_ae_header_id 
59360 , p_source_4 => p_source_4
59361          , x_transaction_coa_id       => l_adr_transaction_coa_id
59362          , x_accounting_coa_id        => l_adr_accounting_coa_id
59363          , x_value_type_code          => l_adr_value_type_code
59364          , p_side                     => 'NA'
59365    );
59366 
59367    xla_ae_lines_pkg.set_ccid(
59368     p_code_combination_id          => l_ccid
59369   , p_value_type_code              => l_adr_value_type_code
59370   , p_transaction_coa_id           => l_adr_transaction_coa_id
59371   , p_accounting_coa_id            => l_adr_accounting_coa_id
59372   , p_adr_code                     => 'CST_DEFAULT'
59373   , p_adr_type_code                => 'S'
59374   , p_component_type               => l_component_type
59375   , p_component_code               => l_component_code
59376   , p_component_type_code          => l_component_type_code
59377   , p_component_appl_id            => l_component_appl_id
59378   , p_amb_context_code             => l_amb_context_code
59379   , p_side                         => 'NA'
59380   );
59381 
59382 
59383    --
59384    --
59385    END IF;
59386 
59387        --
59388        -- Update the line information that should be overwritten
59389        --
59390        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
59391                                          p_header_num   => 1);
59392        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
59393 
59394        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
59395 
59396        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
59397           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
59398        END IF;
59399 
59400       --
59401       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
59402       --
59403       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
59404           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
59405       ELSE
59406           ---------------------------------------------------------------------------------------------------
59407           -- 4262811a Switch Sign
59408           ---------------------------------------------------------------------------------------------------
59409           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
59410           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
59411                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59412           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
59413                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59414           -- 5132302
59415           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
59416                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59417 
59418       END IF;
59419 
59420       -- 4955764
59421       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
59422       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
59423 
59424 
59425       XLA_AE_LINES_PKG.ValidateCurrentLine;
59426       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
59427 
59428       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
59429                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
59430                ,p_balance_type_code => l_balance_type_code);
59431 
59432    END IF;
59433 
59434    -----------------------------------------------------------------------------------------
59435    -- 4262811 Multiperiod Accounting
59436    -----------------------------------------------------------------------------------------
59437      -- No MPA option is assigned.
59438 
59439 
59440 END IF;
59441 END IF;
59442 --
59443 
59444 --
59445 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59446    trace
59447       (p_msg      => 'END of AcctLineType_109'
59448       ,p_level    => C_LEVEL_PROCEDURE
59449       ,p_module   => l_log_module);
59450 END IF;
59451 --
59452 EXCEPTION
59453   WHEN xla_exceptions_pkg.application_exception THEN
59454       RAISE;
59455   WHEN OTHERS THEN
59456        xla_exceptions_pkg.raise_message
59457            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_109');
59458 END AcctLineType_109;
59459 --
59460 
59461 ---------------------------------------
59462 --
59463 -- PRIVATE FUNCTION
59464 --         AcctLineType_110
59465 --
59466 ---------------------------------------
59467 PROCEDURE AcctLineType_110 (
59468   p_application_id        IN NUMBER
59469  ,p_event_id              IN NUMBER
59470  ,p_calculate_acctd_flag  IN VARCHAR2
59471  ,p_calculate_g_l_flag    IN VARCHAR2
59472  ,p_actual_flag           IN OUT VARCHAR2
59473  ,p_balance_type_code     OUT VARCHAR2
59474  ,p_gain_or_loss_ref      OUT VARCHAR2
59475  
59476 --Cost Management Default Account
59477  , p_source_4            IN NUMBER
59478 --DISTRIBUTION_IDENTIFIER
59479  , p_source_11            IN NUMBER
59480 --Distribution Type
59481  , p_source_12            IN VARCHAR2
59482  , p_source_12_meaning    IN VARCHAR2
59483 --Entered Currency Code
59484  , p_source_15            IN VARCHAR2
59485 --Entered Amount
59486  , p_source_18            IN NUMBER
59487 --Currency Conversion Date
59488  , p_source_19            IN DATE
59489 --Currency Conversion Rate
59490  , p_source_20            IN NUMBER
59491 --Currency Conversion Type
59492  , p_source_21            IN VARCHAR2
59493 --Accounted Amount
59494  , p_source_22            IN NUMBER
59495 --Accounting Line Type
59496  , p_source_24            IN NUMBER
59497 )
59498 IS
59499 
59500 l_component_type              VARCHAR2(80);
59501 l_component_code              VARCHAR2(30);
59502 l_component_type_code         VARCHAR2(1);
59503 l_component_appl_id           INTEGER;
59504 l_amb_context_code            VARCHAR2(30);
59505 l_entity_code                 VARCHAR2(30);
59506 l_event_class_code            VARCHAR2(30);
59507 l_ae_header_id                NUMBER;
59508 l_event_type_code             VARCHAR2(30);
59509 l_line_definition_code        VARCHAR2(30);
59510 l_line_definition_owner_code  VARCHAR2(1);
59511 --
59512 -- adr variables
59513 l_segment                     VARCHAR2(30);
59514 l_ccid                        NUMBER;
59515 l_adr_transaction_coa_id      NUMBER;
59516 l_adr_accounting_coa_id       NUMBER;
59517 l_adr_flexfield_segment_code  VARCHAR2(30);
59518 l_adr_flex_value_set_id       NUMBER;
59519 l_adr_value_type_code         VARCHAR2(30);
59520 l_adr_value_combination_id    NUMBER;
59521 l_adr_value_segment_code      VARCHAR2(30);
59522 
59523 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
59524 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
59525 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
59526 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
59527 
59528 -- 4262811 Variables ------------------------------------------------------------------------------------------
59529 l_entered_amt_idx             NUMBER;
59530 l_accted_amt_idx              NUMBER;
59531 l_acc_rev_flag                VARCHAR2(1);
59532 l_accrual_line_num            NUMBER;
59533 l_tmp_amt                     NUMBER;
59534 l_acc_rev_natural_side_code   VARCHAR2(1);
59535 
59536 l_num_entries                 NUMBER;
59537 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
59538 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
59539 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
59540 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
59541 l_recog_line_1                NUMBER;
59542 l_recog_line_2                NUMBER;
59543 
59544 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
59545 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
59546 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
59547 
59548 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
59549 
59550 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
59551 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
59552 
59553 ---------------------------------------------------------------------------------------------------------------
59554 
59555 
59556 --
59557 -- bulk performance
59558 --
59559 l_balance_type_code           VARCHAR2(1);
59560 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
59561 l_log_module                  VARCHAR2(240);
59562 
59563 --
59564 -- Upgrade strategy
59565 --
59566 l_actual_upg_option           VARCHAR2(1);
59567 l_enc_upg_option           VARCHAR2(1);
59568 
59569 --
59570 BEGIN
59571 --
59572 IF g_log_enabled THEN
59573       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_110';
59574 END IF;
59575 --
59576 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59577 
59578       trace
59579          (p_msg      => 'BEGIN of AcctLineType_110'
59580          ,p_level    => C_LEVEL_PROCEDURE
59581          ,p_module   => l_log_module);
59582 
59583 END IF;
59584 --
59585 l_component_type             := 'AMB_JLT';
59586 l_component_code             := 'INTERORG_TRANSFER_CREDIT';
59587 l_component_type_code        := 'S';
59588 l_component_appl_id          :=  707;
59589 l_amb_context_code           := 'DEFAULT';
59590 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
59591 l_event_class_code           := 'USER_DEFINE';
59592 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_TP';
59593 l_line_definition_owner_code := 'S';
59594 l_line_definition_code       := 'USER_FOB_SHIP_SENDER_SHIP_TP';
59595 --
59596 l_balance_type_code          := 'A';
59597 l_segment                     := NULL;
59598 l_ccid                        := NULL;
59599 l_adr_transaction_coa_id      := NULL;
59600 l_adr_accounting_coa_id       := NULL;
59601 l_adr_flexfield_segment_code  := NULL;
59602 l_adr_flex_value_set_id       := NULL;
59603 l_adr_value_type_code         := NULL;
59604 l_adr_value_combination_id    := NULL;
59605 l_adr_value_segment_code      := NULL;
59606 
59607 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
59608 l_bflow_class_code           := '';    -- 4219869 Business Flow
59609 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
59610 l_budgetary_control_flag     := 'N';
59611 
59612 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
59613 l_bflow_applied_to_amt       := NULL; -- 5132302
59614 l_entered_amt_idx            := NULL;          -- 4262811
59615 l_accted_amt_idx             := NULL;          -- 4262811
59616 l_acc_rev_flag               := NULL;          -- 4262811
59617 l_accrual_line_num           := NULL;          -- 4262811
59618 l_tmp_amt                    := NULL;          -- 4262811
59619 --
59620  
59621 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
59622     l_balance_type_code <> 'B' THEN
59623 IF NVL(p_source_24,9E125) =  11
59624  THEN 
59625 
59626    --
59627    XLA_AE_LINES_PKG.SetNewLine;
59628 
59629    p_balance_type_code          := l_balance_type_code;
59630    -- set the flag so later we will know whether the gain loss line needs to be created
59631    
59632    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
59633      p_actual_flag :='A';
59634    END IF;
59635 
59636    --
59637    -- bulk performance
59638    --
59639    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
59640                                       p_header_num   => 0); -- 4262811
59641    --
59642    -- set accounting line options
59643    --
59644    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
59645            p_natural_side_code          => 'D'
59646          , p_gain_or_loss_flag          => 'N'
59647          , p_gl_transfer_mode_code      => 'S'
59648          , p_acct_entry_type_code       => 'A'
59649          , p_switch_side_flag           => 'Y'
59650          , p_merge_duplicate_code       => 'N'
59651          );
59652    --
59653    l_acc_rev_natural_side_code := 'C';  -- 4262811
59654    -- 
59655    --
59656    -- set accounting line type info
59657    --
59658    xla_ae_lines_pkg.SetAcctLineType
59659       (p_component_type             => l_component_type
59660       ,p_event_type_code            => l_event_type_code
59661       ,p_line_definition_owner_code => l_line_definition_owner_code
59662       ,p_line_definition_code       => l_line_definition_code
59663       ,p_accounting_line_code       => l_component_code
59664       ,p_accounting_line_type_code  => l_component_type_code
59665       ,p_accounting_line_appl_id    => l_component_appl_id
59666       ,p_amb_context_code           => l_amb_context_code
59667       ,p_entity_code                => l_entity_code
59668       ,p_event_class_code           => l_event_class_code);
59669    --
59670    -- set accounting class
59671    --
59672    xla_ae_lines_pkg.SetAcctClass(
59673            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
59674          , p_ae_header_id           => l_ae_header_id
59675          );
59676 
59677    --
59678    -- set rounding class
59679    --
59680    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
59681                       'INTERORG_TRANSFER_CREDIT';
59682 
59683    --
59684    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
59685    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
59686    --
59687    -- bulk performance
59688    --
59689    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
59690 
59691    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
59692       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
59693 
59694    -- 4955764
59695    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
59696       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
59697 
59698    -- 4458381 Public Sector Enh
59699    
59700    --
59701    -- set accounting attributes for the line type
59702    --
59703    l_entered_amt_idx := 3;
59704    l_accted_amt_idx  := 8;
59705    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
59706    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
59707    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
59708    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
59709    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
59710    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
59711    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
59712    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
59713    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
59714    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
59715    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
59716    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
59717    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
59718    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
59719    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
59720    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
59721    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
59722 
59723    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
59724    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
59725 
59726    ---------------------------------------------------------------------------------------------------------------
59727    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
59728    ---------------------------------------------------------------------------------------------------------------
59729    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
59730 
59731    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
59732    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
59733 
59734    IF xla_accounting_cache_pkg.GetValueChar
59735          (p_source_code         => 'LEDGER_CATEGORY_CODE'
59736          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
59737    AND l_bflow_method_code = 'PRIOR_ENTRY'
59738 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
59739    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
59740          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
59741        )
59742    THEN
59743          xla_ae_lines_pkg.BflowUpgEntry
59744            (p_business_method_code    => l_bflow_method_code
59745            ,p_business_class_code     => l_bflow_class_code
59746            ,p_balance_type            => l_balance_type_code);
59747    ELSE
59748       NULL;
59749 -- No business flow processing for business flow method of NONE.
59750    END IF;
59751 
59752    --
59753    -- call analytical criteria
59754    --
59755    
59756    --
59757    -- call description
59758    --
59759    -- No description or it is inherited.
59760    --
59761    -- call ADRs
59762    -- Bug 4922099
59763    --
59764    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
59765         (NVL(l_actual_upg_option, 'N') = 'O') OR
59766         (NVL(l_enc_upg_option, 'N') = 'O')
59767       )
59768    THEN
59769    NULL;
59770    --
59771    --
59772    
59773   l_ccid := AcctDerRule_4(
59774            p_application_id           => p_application_id
59775          , p_ae_header_id             => l_ae_header_id 
59776 , p_source_4 => p_source_4
59777          , x_transaction_coa_id       => l_adr_transaction_coa_id
59778          , x_accounting_coa_id        => l_adr_accounting_coa_id
59779          , x_value_type_code          => l_adr_value_type_code
59780          , p_side                     => 'NA'
59781    );
59782 
59783    xla_ae_lines_pkg.set_ccid(
59784     p_code_combination_id          => l_ccid
59785   , p_value_type_code              => l_adr_value_type_code
59786   , p_transaction_coa_id           => l_adr_transaction_coa_id
59787   , p_accounting_coa_id            => l_adr_accounting_coa_id
59788   , p_adr_code                     => 'CST_DEFAULT'
59789   , p_adr_type_code                => 'S'
59790   , p_component_type               => l_component_type
59791   , p_component_code               => l_component_code
59792   , p_component_type_code          => l_component_type_code
59793   , p_component_appl_id            => l_component_appl_id
59794   , p_amb_context_code             => l_amb_context_code
59795   , p_side                         => 'NA'
59796   );
59797 
59798 
59799    --
59800    --
59801    END IF;
59802    --
59803    -- Bug 4922099
59804    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
59805           (NVL(l_enc_upg_option, 'N') = 'O')
59806         ) AND
59807         (l_bflow_method_code = 'PRIOR_ENTRY')
59808       )
59809    THEN
59810       IF
59811       --
59812       1 = 2
59813       --
59814       THEN
59815       xla_accounting_err_pkg.build_message
59816                                     (p_appli_s_name            => 'XLA'
59817                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
59818                                     ,p_token_1                 => 'LINE_NUMBER'
59819                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
59820                                     ,p_token_2                 => 'LINE_TYPE_NAME'
59821                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
59822                                                                              l_component_type
59823                                                                             ,l_component_code
59824                                                                             ,l_component_type_code
59825                                                                             ,l_component_appl_id
59826                                                                             ,l_amb_context_code
59827                                                                             ,l_entity_code
59828                                                                             ,l_event_class_code
59829                                                                            )
59830                                     ,p_token_3                 => 'OWNER'
59831                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
59832                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
59833                                                                           ,p_lookup_code    => l_component_type_code
59834                                                                          )
59835                                     ,p_token_4                 => 'PRODUCT_NAME'
59836                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
59837                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
59838                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
59839                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
59840                                     ,p_ae_header_id            =>  NULL
59841                                        );
59842 
59843         IF (C_LEVEL_ERROR>= g_log_level) THEN
59844                  trace
59845                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
59846                       ,p_level    => C_LEVEL_ERROR
59847                       ,p_module   => l_log_module);
59848         END IF;
59849       END IF;
59850    END IF;
59851    --
59852    --
59853    ------------------------------------------------------------------------------------------------
59854    -- 4219869 Business Flow
59855    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
59856    -- Prior Entry.  Currently, the following code is always generated.
59857    ------------------------------------------------------------------------------------------------
59858    XLA_AE_LINES_PKG.ValidateCurrentLine;
59859 
59860    ------------------------------------------------------------------------------------
59861    -- 4219869 Business Flow
59862    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
59863    ------------------------------------------------------------------------------------
59864    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
59865 
59866    ----------------------------------------------------------------------------------
59867    -- 4219869 Business Flow
59868    -- Update journal entry status -- Need to generate this within IF <condition>
59869    ----------------------------------------------------------------------------------
59870    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
59871          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
59872          ,p_balance_type_code => l_balance_type_code
59873          );
59874 
59875    -------------------------------------------------------------------------------------------
59876    -- 4262811 - Generate the Accrual Reversal lines
59877    -------------------------------------------------------------------------------------------
59878    BEGIN
59879       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
59880                               (g_array_event(p_event_id).array_value_num('header_index'));
59881       IF l_acc_rev_flag IS NULL THEN
59882          l_acc_rev_flag := 'N';
59883       END IF;
59884    EXCEPTION
59885       WHEN OTHERS THEN
59886          l_acc_rev_flag := 'N';
59887    END;
59888    --
59889    IF (l_acc_rev_flag = 'Y') THEN
59890 
59891        -- 4645092  ------------------------------------------------------------------------------
59892        -- To allow MPA report to determine if it should generate report process
59893        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
59894        ------------------------------------------------------------------------------------------
59895 
59896        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
59897        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
59898    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
59899    -- call ADRs
59900    -- Bug 4922099
59901    --
59902    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
59903         (NVL(l_actual_upg_option, 'N') = 'O') OR
59904         (NVL(l_enc_upg_option, 'N') = 'O')
59905       )
59906    THEN
59907    NULL;
59908    --
59909    --
59910    
59911   l_ccid := AcctDerRule_4(
59912            p_application_id           => p_application_id
59913          , p_ae_header_id             => l_ae_header_id 
59914 , p_source_4 => p_source_4
59915          , x_transaction_coa_id       => l_adr_transaction_coa_id
59916          , x_accounting_coa_id        => l_adr_accounting_coa_id
59917          , x_value_type_code          => l_adr_value_type_code
59918          , p_side                     => 'NA'
59919    );
59920 
59921    xla_ae_lines_pkg.set_ccid(
59922     p_code_combination_id          => l_ccid
59923   , p_value_type_code              => l_adr_value_type_code
59924   , p_transaction_coa_id           => l_adr_transaction_coa_id
59925   , p_accounting_coa_id            => l_adr_accounting_coa_id
59926   , p_adr_code                     => 'CST_DEFAULT'
59927   , p_adr_type_code                => 'S'
59928   , p_component_type               => l_component_type
59929   , p_component_code               => l_component_code
59930   , p_component_type_code          => l_component_type_code
59931   , p_component_appl_id            => l_component_appl_id
59932   , p_amb_context_code             => l_amb_context_code
59933   , p_side                         => 'NA'
59934   );
59935 
59936 
59937    --
59938    --
59939    END IF;
59940 
59941        --
59942        -- Update the line information that should be overwritten
59943        --
59944        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
59945                                          p_header_num   => 1);
59946        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
59947 
59948        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
59949 
59950        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
59951           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
59952        END IF;
59953 
59954       --
59955       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
59956       --
59957       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
59958           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
59959       ELSE
59960           ---------------------------------------------------------------------------------------------------
59961           -- 4262811a Switch Sign
59962           ---------------------------------------------------------------------------------------------------
59963           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
59964           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
59965                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59966           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
59967                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59968           -- 5132302
59969           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
59970                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59971 
59972       END IF;
59973 
59974       -- 4955764
59975       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
59976       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
59977 
59978 
59979       XLA_AE_LINES_PKG.ValidateCurrentLine;
59980       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
59981 
59982       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
59983                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
59984                ,p_balance_type_code => l_balance_type_code);
59985 
59986    END IF;
59987 
59988    -----------------------------------------------------------------------------------------
59989    -- 4262811 Multiperiod Accounting
59990    -----------------------------------------------------------------------------------------
59991      -- No MPA option is assigned.
59992 
59993 
59994 END IF;
59995 END IF;
59996 --
59997 
59998 --
59999 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60000    trace
60001       (p_msg      => 'END of AcctLineType_110'
60002       ,p_level    => C_LEVEL_PROCEDURE
60003       ,p_module   => l_log_module);
60004 END IF;
60005 --
60006 EXCEPTION
60007   WHEN xla_exceptions_pkg.application_exception THEN
60008       RAISE;
60009   WHEN OTHERS THEN
60010        xla_exceptions_pkg.raise_message
60011            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_110');
60012 END AcctLineType_110;
60013 --
60014 
60015 ---------------------------------------
60016 --
60017 -- PRIVATE FUNCTION
60018 --         AcctLineType_111
60019 --
60020 ---------------------------------------
60021 PROCEDURE AcctLineType_111 (
60022   p_application_id        IN NUMBER
60023  ,p_event_id              IN NUMBER
60024  ,p_calculate_acctd_flag  IN VARCHAR2
60025  ,p_calculate_g_l_flag    IN VARCHAR2
60026  ,p_actual_flag           IN OUT VARCHAR2
60027  ,p_balance_type_code     OUT VARCHAR2
60028  ,p_gain_or_loss_ref      OUT VARCHAR2
60029  
60030 --Cost Management Default Account
60031  , p_source_4            IN NUMBER
60032 --DISTRIBUTION_IDENTIFIER
60033  , p_source_11            IN NUMBER
60034 --Distribution Type
60035  , p_source_12            IN VARCHAR2
60036  , p_source_12_meaning    IN VARCHAR2
60037 --Entered Currency Code
60038  , p_source_15            IN VARCHAR2
60039 --Entered Amount
60040  , p_source_18            IN NUMBER
60041 --Currency Conversion Date
60042  , p_source_19            IN DATE
60043 --Currency Conversion Rate
60044  , p_source_20            IN NUMBER
60045 --Currency Conversion Type
60046  , p_source_21            IN VARCHAR2
60047 --Accounted Amount
60048  , p_source_22            IN NUMBER
60049 --Accounting Line Type
60050  , p_source_24            IN NUMBER
60051 )
60052 IS
60053 
60054 l_component_type              VARCHAR2(80);
60055 l_component_code              VARCHAR2(30);
60056 l_component_type_code         VARCHAR2(1);
60057 l_component_appl_id           INTEGER;
60058 l_amb_context_code            VARCHAR2(30);
60059 l_entity_code                 VARCHAR2(30);
60060 l_event_class_code            VARCHAR2(30);
60061 l_ae_header_id                NUMBER;
60062 l_event_type_code             VARCHAR2(30);
60063 l_line_definition_code        VARCHAR2(30);
60064 l_line_definition_owner_code  VARCHAR2(1);
60065 --
60066 -- adr variables
60067 l_segment                     VARCHAR2(30);
60068 l_ccid                        NUMBER;
60069 l_adr_transaction_coa_id      NUMBER;
60070 l_adr_accounting_coa_id       NUMBER;
60071 l_adr_flexfield_segment_code  VARCHAR2(30);
60072 l_adr_flex_value_set_id       NUMBER;
60073 l_adr_value_type_code         VARCHAR2(30);
60074 l_adr_value_combination_id    NUMBER;
60075 l_adr_value_segment_code      VARCHAR2(30);
60076 
60077 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
60078 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
60079 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
60080 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
60081 
60082 -- 4262811 Variables ------------------------------------------------------------------------------------------
60083 l_entered_amt_idx             NUMBER;
60084 l_accted_amt_idx              NUMBER;
60085 l_acc_rev_flag                VARCHAR2(1);
60086 l_accrual_line_num            NUMBER;
60087 l_tmp_amt                     NUMBER;
60088 l_acc_rev_natural_side_code   VARCHAR2(1);
60089 
60090 l_num_entries                 NUMBER;
60091 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
60092 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
60093 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
60094 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
60095 l_recog_line_1                NUMBER;
60096 l_recog_line_2                NUMBER;
60097 
60098 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
60099 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
60100 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
60101 
60102 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
60103 
60104 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
60105 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
60106 
60107 ---------------------------------------------------------------------------------------------------------------
60108 
60109 
60110 --
60111 -- bulk performance
60112 --
60113 l_balance_type_code           VARCHAR2(1);
60114 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
60115 l_log_module                  VARCHAR2(240);
60116 
60117 --
60118 -- Upgrade strategy
60119 --
60120 l_actual_upg_option           VARCHAR2(1);
60121 l_enc_upg_option           VARCHAR2(1);
60122 
60123 --
60124 BEGIN
60125 --
60126 IF g_log_enabled THEN
60127       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_111';
60128 END IF;
60129 --
60130 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60131 
60132       trace
60133          (p_msg      => 'BEGIN of AcctLineType_111'
60134          ,p_level    => C_LEVEL_PROCEDURE
60135          ,p_module   => l_log_module);
60136 
60137 END IF;
60138 --
60139 l_component_type             := 'AMB_JLT';
60140 l_component_code             := 'INTERORG_TRANSFER_CREDIT';
60141 l_component_type_code        := 'S';
60142 l_component_appl_id          :=  707;
60143 l_amb_context_code           := 'DEFAULT';
60144 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
60145 l_event_class_code           := 'USER_DEFINE';
60146 l_event_type_code            := 'UDIR_INTERORG_SHIP';
60147 l_line_definition_owner_code := 'S';
60148 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP';
60149 --
60150 l_balance_type_code          := 'A';
60151 l_segment                     := NULL;
60152 l_ccid                        := NULL;
60153 l_adr_transaction_coa_id      := NULL;
60154 l_adr_accounting_coa_id       := NULL;
60155 l_adr_flexfield_segment_code  := NULL;
60156 l_adr_flex_value_set_id       := NULL;
60157 l_adr_value_type_code         := NULL;
60158 l_adr_value_combination_id    := NULL;
60159 l_adr_value_segment_code      := NULL;
60160 
60161 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
60162 l_bflow_class_code           := '';    -- 4219869 Business Flow
60163 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
60164 l_budgetary_control_flag     := 'N';
60165 
60166 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
60167 l_bflow_applied_to_amt       := NULL; -- 5132302
60168 l_entered_amt_idx            := NULL;          -- 4262811
60169 l_accted_amt_idx             := NULL;          -- 4262811
60170 l_acc_rev_flag               := NULL;          -- 4262811
60171 l_accrual_line_num           := NULL;          -- 4262811
60172 l_tmp_amt                    := NULL;          -- 4262811
60173 --
60174  
60175 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
60176     l_balance_type_code <> 'B' THEN
60177 IF NVL(p_source_24,9E125) =  11
60178  THEN 
60179 
60180    --
60181    XLA_AE_LINES_PKG.SetNewLine;
60182 
60183    p_balance_type_code          := l_balance_type_code;
60184    -- set the flag so later we will know whether the gain loss line needs to be created
60185    
60186    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
60187      p_actual_flag :='A';
60188    END IF;
60189 
60190    --
60191    -- bulk performance
60192    --
60193    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
60194                                       p_header_num   => 0); -- 4262811
60195    --
60196    -- set accounting line options
60197    --
60198    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
60199            p_natural_side_code          => 'D'
60200          , p_gain_or_loss_flag          => 'N'
60201          , p_gl_transfer_mode_code      => 'S'
60202          , p_acct_entry_type_code       => 'A'
60203          , p_switch_side_flag           => 'Y'
60204          , p_merge_duplicate_code       => 'N'
60205          );
60206    --
60207    l_acc_rev_natural_side_code := 'C';  -- 4262811
60208    -- 
60209    --
60210    -- set accounting line type info
60211    --
60212    xla_ae_lines_pkg.SetAcctLineType
60213       (p_component_type             => l_component_type
60214       ,p_event_type_code            => l_event_type_code
60215       ,p_line_definition_owner_code => l_line_definition_owner_code
60216       ,p_line_definition_code       => l_line_definition_code
60217       ,p_accounting_line_code       => l_component_code
60218       ,p_accounting_line_type_code  => l_component_type_code
60219       ,p_accounting_line_appl_id    => l_component_appl_id
60220       ,p_amb_context_code           => l_amb_context_code
60221       ,p_entity_code                => l_entity_code
60222       ,p_event_class_code           => l_event_class_code);
60223    --
60224    -- set accounting class
60225    --
60226    xla_ae_lines_pkg.SetAcctClass(
60227            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
60228          , p_ae_header_id           => l_ae_header_id
60229          );
60230 
60231    --
60232    -- set rounding class
60233    --
60234    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
60235                       'INTERORG_TRANSFER_CREDIT';
60236 
60237    --
60238    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
60239    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
60240    --
60241    -- bulk performance
60242    --
60243    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
60244 
60245    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
60246       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
60247 
60248    -- 4955764
60249    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
60250       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
60251 
60252    -- 4458381 Public Sector Enh
60253    
60254    --
60255    -- set accounting attributes for the line type
60256    --
60257    l_entered_amt_idx := 3;
60258    l_accted_amt_idx  := 8;
60259    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
60260    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
60261    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
60262    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
60263    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
60264    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
60265    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
60266    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
60267    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
60268    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
60269    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
60270    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
60271    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
60272    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
60273    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
60274    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
60275    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
60276 
60277    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
60278    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
60279 
60280    ---------------------------------------------------------------------------------------------------------------
60281    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
60282    ---------------------------------------------------------------------------------------------------------------
60283    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
60284 
60285    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
60286    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
60287 
60288    IF xla_accounting_cache_pkg.GetValueChar
60289          (p_source_code         => 'LEDGER_CATEGORY_CODE'
60290          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
60291    AND l_bflow_method_code = 'PRIOR_ENTRY'
60292 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
60293    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
60294          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
60295        )
60296    THEN
60297          xla_ae_lines_pkg.BflowUpgEntry
60298            (p_business_method_code    => l_bflow_method_code
60299            ,p_business_class_code     => l_bflow_class_code
60300            ,p_balance_type            => l_balance_type_code);
60301    ELSE
60302       NULL;
60303 -- No business flow processing for business flow method of NONE.
60304    END IF;
60305 
60306    --
60307    -- call analytical criteria
60308    --
60309    
60310    --
60311    -- call description
60312    --
60313    -- No description or it is inherited.
60314    --
60315    -- call ADRs
60316    -- Bug 4922099
60317    --
60318    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
60319         (NVL(l_actual_upg_option, 'N') = 'O') OR
60320         (NVL(l_enc_upg_option, 'N') = 'O')
60321       )
60322    THEN
60323    NULL;
60324    --
60325    --
60326    
60327   l_ccid := AcctDerRule_4(
60328            p_application_id           => p_application_id
60329          , p_ae_header_id             => l_ae_header_id 
60330 , p_source_4 => p_source_4
60331          , x_transaction_coa_id       => l_adr_transaction_coa_id
60332          , x_accounting_coa_id        => l_adr_accounting_coa_id
60333          , x_value_type_code          => l_adr_value_type_code
60334          , p_side                     => 'NA'
60335    );
60336 
60337    xla_ae_lines_pkg.set_ccid(
60338     p_code_combination_id          => l_ccid
60339   , p_value_type_code              => l_adr_value_type_code
60340   , p_transaction_coa_id           => l_adr_transaction_coa_id
60341   , p_accounting_coa_id            => l_adr_accounting_coa_id
60342   , p_adr_code                     => 'CST_DEFAULT'
60343   , p_adr_type_code                => 'S'
60344   , p_component_type               => l_component_type
60345   , p_component_code               => l_component_code
60346   , p_component_type_code          => l_component_type_code
60347   , p_component_appl_id            => l_component_appl_id
60348   , p_amb_context_code             => l_amb_context_code
60349   , p_side                         => 'NA'
60350   );
60351 
60352 
60353    --
60354    --
60355    END IF;
60356    --
60357    -- Bug 4922099
60358    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
60359           (NVL(l_enc_upg_option, 'N') = 'O')
60360         ) AND
60361         (l_bflow_method_code = 'PRIOR_ENTRY')
60362       )
60363    THEN
60364       IF
60365       --
60366       1 = 2
60367       --
60368       THEN
60369       xla_accounting_err_pkg.build_message
60370                                     (p_appli_s_name            => 'XLA'
60371                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
60372                                     ,p_token_1                 => 'LINE_NUMBER'
60373                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
60374                                     ,p_token_2                 => 'LINE_TYPE_NAME'
60375                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
60376                                                                              l_component_type
60377                                                                             ,l_component_code
60378                                                                             ,l_component_type_code
60379                                                                             ,l_component_appl_id
60380                                                                             ,l_amb_context_code
60381                                                                             ,l_entity_code
60382                                                                             ,l_event_class_code
60383                                                                            )
60384                                     ,p_token_3                 => 'OWNER'
60385                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
60386                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
60387                                                                           ,p_lookup_code    => l_component_type_code
60388                                                                          )
60389                                     ,p_token_4                 => 'PRODUCT_NAME'
60390                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
60391                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
60392                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
60393                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
60394                                     ,p_ae_header_id            =>  NULL
60395                                        );
60396 
60397         IF (C_LEVEL_ERROR>= g_log_level) THEN
60398                  trace
60399                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
60400                       ,p_level    => C_LEVEL_ERROR
60401                       ,p_module   => l_log_module);
60402         END IF;
60403       END IF;
60404    END IF;
60405    --
60406    --
60407    ------------------------------------------------------------------------------------------------
60408    -- 4219869 Business Flow
60409    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
60410    -- Prior Entry.  Currently, the following code is always generated.
60411    ------------------------------------------------------------------------------------------------
60412    XLA_AE_LINES_PKG.ValidateCurrentLine;
60413 
60414    ------------------------------------------------------------------------------------
60415    -- 4219869 Business Flow
60416    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
60417    ------------------------------------------------------------------------------------
60418    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
60419 
60420    ----------------------------------------------------------------------------------
60421    -- 4219869 Business Flow
60422    -- Update journal entry status -- Need to generate this within IF <condition>
60423    ----------------------------------------------------------------------------------
60424    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
60425          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
60426          ,p_balance_type_code => l_balance_type_code
60427          );
60428 
60429    -------------------------------------------------------------------------------------------
60430    -- 4262811 - Generate the Accrual Reversal lines
60431    -------------------------------------------------------------------------------------------
60432    BEGIN
60433       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
60434                               (g_array_event(p_event_id).array_value_num('header_index'));
60435       IF l_acc_rev_flag IS NULL THEN
60436          l_acc_rev_flag := 'N';
60437       END IF;
60438    EXCEPTION
60439       WHEN OTHERS THEN
60440          l_acc_rev_flag := 'N';
60441    END;
60442    --
60443    IF (l_acc_rev_flag = 'Y') THEN
60444 
60445        -- 4645092  ------------------------------------------------------------------------------
60446        -- To allow MPA report to determine if it should generate report process
60447        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
60448        ------------------------------------------------------------------------------------------
60449 
60450        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
60451        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
60452    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
60453    -- call ADRs
60454    -- Bug 4922099
60455    --
60456    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
60457         (NVL(l_actual_upg_option, 'N') = 'O') OR
60458         (NVL(l_enc_upg_option, 'N') = 'O')
60459       )
60460    THEN
60461    NULL;
60462    --
60463    --
60464    
60465   l_ccid := AcctDerRule_4(
60466            p_application_id           => p_application_id
60467          , p_ae_header_id             => l_ae_header_id 
60468 , p_source_4 => p_source_4
60469          , x_transaction_coa_id       => l_adr_transaction_coa_id
60470          , x_accounting_coa_id        => l_adr_accounting_coa_id
60471          , x_value_type_code          => l_adr_value_type_code
60472          , p_side                     => 'NA'
60473    );
60474 
60475    xla_ae_lines_pkg.set_ccid(
60476     p_code_combination_id          => l_ccid
60477   , p_value_type_code              => l_adr_value_type_code
60478   , p_transaction_coa_id           => l_adr_transaction_coa_id
60479   , p_accounting_coa_id            => l_adr_accounting_coa_id
60480   , p_adr_code                     => 'CST_DEFAULT'
60481   , p_adr_type_code                => 'S'
60482   , p_component_type               => l_component_type
60483   , p_component_code               => l_component_code
60484   , p_component_type_code          => l_component_type_code
60485   , p_component_appl_id            => l_component_appl_id
60486   , p_amb_context_code             => l_amb_context_code
60487   , p_side                         => 'NA'
60488   );
60489 
60490 
60491    --
60492    --
60493    END IF;
60494 
60495        --
60496        -- Update the line information that should be overwritten
60497        --
60498        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
60499                                          p_header_num   => 1);
60500        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
60501 
60502        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
60503 
60504        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
60505           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
60506        END IF;
60507 
60508       --
60509       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
60510       --
60511       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
60512           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
60513       ELSE
60514           ---------------------------------------------------------------------------------------------------
60515           -- 4262811a Switch Sign
60516           ---------------------------------------------------------------------------------------------------
60517           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
60518           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
60519                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60520           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
60521                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60522           -- 5132302
60523           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
60524                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60525 
60526       END IF;
60527 
60528       -- 4955764
60529       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
60530       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
60531 
60532 
60533       XLA_AE_LINES_PKG.ValidateCurrentLine;
60534       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
60535 
60536       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
60537                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
60538                ,p_balance_type_code => l_balance_type_code);
60539 
60540    END IF;
60541 
60542    -----------------------------------------------------------------------------------------
60543    -- 4262811 Multiperiod Accounting
60544    -----------------------------------------------------------------------------------------
60545      -- No MPA option is assigned.
60546 
60547 
60548 END IF;
60549 END IF;
60550 --
60551 
60552 --
60553 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60554    trace
60555       (p_msg      => 'END of AcctLineType_111'
60556       ,p_level    => C_LEVEL_PROCEDURE
60557       ,p_module   => l_log_module);
60558 END IF;
60559 --
60560 EXCEPTION
60561   WHEN xla_exceptions_pkg.application_exception THEN
60562       RAISE;
60563   WHEN OTHERS THEN
60564        xla_exceptions_pkg.raise_message
60565            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_111');
60566 END AcctLineType_111;
60567 --
60568 
60569 ---------------------------------------
60570 --
60571 -- PRIVATE FUNCTION
60572 --         AcctLineType_112
60573 --
60574 ---------------------------------------
60575 PROCEDURE AcctLineType_112 (
60576   p_application_id        IN NUMBER
60577  ,p_event_id              IN NUMBER
60578  ,p_calculate_acctd_flag  IN VARCHAR2
60579  ,p_calculate_g_l_flag    IN VARCHAR2
60580  ,p_actual_flag           IN OUT VARCHAR2
60581  ,p_balance_type_code     OUT VARCHAR2
60582  ,p_gain_or_loss_ref      OUT VARCHAR2
60583  
60584 --Cost Management Default Account
60585  , p_source_4            IN NUMBER
60586 --DISTRIBUTION_IDENTIFIER
60587  , p_source_11            IN NUMBER
60588 --Distribution Type
60589  , p_source_12            IN VARCHAR2
60590  , p_source_12_meaning    IN VARCHAR2
60591 --Entered Currency Code
60592  , p_source_15            IN VARCHAR2
60593 --Entered Amount
60594  , p_source_18            IN NUMBER
60595 --Currency Conversion Date
60596  , p_source_19            IN DATE
60597 --Currency Conversion Rate
60598  , p_source_20            IN NUMBER
60599 --Currency Conversion Type
60600  , p_source_21            IN VARCHAR2
60601 --Accounted Amount
60602  , p_source_22            IN NUMBER
60603 --Accounting Line Type
60604  , p_source_24            IN NUMBER
60605 )
60606 IS
60607 
60608 l_component_type              VARCHAR2(80);
60609 l_component_code              VARCHAR2(30);
60610 l_component_type_code         VARCHAR2(1);
60611 l_component_appl_id           INTEGER;
60612 l_amb_context_code            VARCHAR2(30);
60613 l_entity_code                 VARCHAR2(30);
60614 l_event_class_code            VARCHAR2(30);
60615 l_ae_header_id                NUMBER;
60616 l_event_type_code             VARCHAR2(30);
60617 l_line_definition_code        VARCHAR2(30);
60618 l_line_definition_owner_code  VARCHAR2(1);
60619 --
60620 -- adr variables
60621 l_segment                     VARCHAR2(30);
60622 l_ccid                        NUMBER;
60623 l_adr_transaction_coa_id      NUMBER;
60624 l_adr_accounting_coa_id       NUMBER;
60625 l_adr_flexfield_segment_code  VARCHAR2(30);
60626 l_adr_flex_value_set_id       NUMBER;
60627 l_adr_value_type_code         VARCHAR2(30);
60628 l_adr_value_combination_id    NUMBER;
60629 l_adr_value_segment_code      VARCHAR2(30);
60630 
60631 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
60632 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
60633 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
60634 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
60635 
60636 -- 4262811 Variables ------------------------------------------------------------------------------------------
60637 l_entered_amt_idx             NUMBER;
60638 l_accted_amt_idx              NUMBER;
60639 l_acc_rev_flag                VARCHAR2(1);
60640 l_accrual_line_num            NUMBER;
60641 l_tmp_amt                     NUMBER;
60642 l_acc_rev_natural_side_code   VARCHAR2(1);
60643 
60644 l_num_entries                 NUMBER;
60645 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
60646 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
60647 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
60648 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
60649 l_recog_line_1                NUMBER;
60650 l_recog_line_2                NUMBER;
60651 
60652 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
60653 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
60654 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
60655 
60656 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
60657 
60658 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
60659 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
60660 
60661 ---------------------------------------------------------------------------------------------------------------
60662 
60663 
60664 --
60665 -- bulk performance
60666 --
60667 l_balance_type_code           VARCHAR2(1);
60668 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
60669 l_log_module                  VARCHAR2(240);
60670 
60671 --
60672 -- Upgrade strategy
60673 --
60674 l_actual_upg_option           VARCHAR2(1);
60675 l_enc_upg_option           VARCHAR2(1);
60676 
60677 --
60678 BEGIN
60679 --
60680 IF g_log_enabled THEN
60681       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_112';
60682 END IF;
60683 --
60684 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60685 
60686       trace
60687          (p_msg      => 'BEGIN of AcctLineType_112'
60688          ,p_level    => C_LEVEL_PROCEDURE
60689          ,p_module   => l_log_module);
60690 
60691 END IF;
60692 --
60693 l_component_type             := 'AMB_JLT';
60694 l_component_code             := 'INTERORG_TRANSFER_CREDIT';
60695 l_component_type_code        := 'S';
60696 l_component_appl_id          :=  707;
60697 l_amb_context_code           := 'DEFAULT';
60698 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
60699 l_event_class_code           := 'USER_DEFINE';
60700 l_event_type_code            := 'UDIR_INTERORG_RCPT_NO_TP';
60701 l_line_definition_owner_code := 'S';
60702 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_NO_TP';
60703 --
60704 l_balance_type_code          := 'A';
60705 l_segment                     := NULL;
60706 l_ccid                        := NULL;
60707 l_adr_transaction_coa_id      := NULL;
60708 l_adr_accounting_coa_id       := NULL;
60709 l_adr_flexfield_segment_code  := NULL;
60710 l_adr_flex_value_set_id       := NULL;
60711 l_adr_value_type_code         := NULL;
60712 l_adr_value_combination_id    := NULL;
60713 l_adr_value_segment_code      := NULL;
60714 
60715 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
60716 l_bflow_class_code           := '';    -- 4219869 Business Flow
60717 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
60718 l_budgetary_control_flag     := 'N';
60719 
60720 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
60721 l_bflow_applied_to_amt       := NULL; -- 5132302
60722 l_entered_amt_idx            := NULL;          -- 4262811
60723 l_accted_amt_idx             := NULL;          -- 4262811
60724 l_acc_rev_flag               := NULL;          -- 4262811
60725 l_accrual_line_num           := NULL;          -- 4262811
60726 l_tmp_amt                    := NULL;          -- 4262811
60727 --
60728  
60729 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
60730     l_balance_type_code <> 'B' THEN
60731 IF NVL(p_source_24,9E125) =  11
60732  THEN 
60733 
60734    --
60735    XLA_AE_LINES_PKG.SetNewLine;
60736 
60737    p_balance_type_code          := l_balance_type_code;
60738    -- set the flag so later we will know whether the gain loss line needs to be created
60739    
60740    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
60741      p_actual_flag :='A';
60742    END IF;
60743 
60744    --
60745    -- bulk performance
60746    --
60747    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
60748                                       p_header_num   => 0); -- 4262811
60749    --
60750    -- set accounting line options
60751    --
60752    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
60753            p_natural_side_code          => 'D'
60754          , p_gain_or_loss_flag          => 'N'
60755          , p_gl_transfer_mode_code      => 'S'
60756          , p_acct_entry_type_code       => 'A'
60757          , p_switch_side_flag           => 'Y'
60758          , p_merge_duplicate_code       => 'N'
60759          );
60760    --
60761    l_acc_rev_natural_side_code := 'C';  -- 4262811
60762    -- 
60763    --
60764    -- set accounting line type info
60765    --
60766    xla_ae_lines_pkg.SetAcctLineType
60767       (p_component_type             => l_component_type
60768       ,p_event_type_code            => l_event_type_code
60769       ,p_line_definition_owner_code => l_line_definition_owner_code
60770       ,p_line_definition_code       => l_line_definition_code
60771       ,p_accounting_line_code       => l_component_code
60772       ,p_accounting_line_type_code  => l_component_type_code
60773       ,p_accounting_line_appl_id    => l_component_appl_id
60774       ,p_amb_context_code           => l_amb_context_code
60775       ,p_entity_code                => l_entity_code
60776       ,p_event_class_code           => l_event_class_code);
60777    --
60778    -- set accounting class
60779    --
60780    xla_ae_lines_pkg.SetAcctClass(
60781            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
60782          , p_ae_header_id           => l_ae_header_id
60783          );
60784 
60785    --
60786    -- set rounding class
60787    --
60788    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
60789                       'INTERORG_TRANSFER_CREDIT';
60790 
60791    --
60792    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
60793    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
60794    --
60795    -- bulk performance
60796    --
60797    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
60798 
60799    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
60800       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
60801 
60802    -- 4955764
60803    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
60804       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
60805 
60806    -- 4458381 Public Sector Enh
60807    
60808    --
60809    -- set accounting attributes for the line type
60810    --
60811    l_entered_amt_idx := 3;
60812    l_accted_amt_idx  := 8;
60813    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
60814    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
60815    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
60816    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
60817    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
60818    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
60819    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
60820    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
60821    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
60822    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
60823    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
60824    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
60825    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
60826    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
60827    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
60828    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
60829    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
60830 
60831    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
60832    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
60833 
60834    ---------------------------------------------------------------------------------------------------------------
60835    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
60836    ---------------------------------------------------------------------------------------------------------------
60837    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
60838 
60839    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
60840    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
60841 
60842    IF xla_accounting_cache_pkg.GetValueChar
60843          (p_source_code         => 'LEDGER_CATEGORY_CODE'
60844          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
60845    AND l_bflow_method_code = 'PRIOR_ENTRY'
60846 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
60847    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
60848          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
60849        )
60850    THEN
60851          xla_ae_lines_pkg.BflowUpgEntry
60852            (p_business_method_code    => l_bflow_method_code
60853            ,p_business_class_code     => l_bflow_class_code
60854            ,p_balance_type            => l_balance_type_code);
60855    ELSE
60856       NULL;
60857 -- No business flow processing for business flow method of NONE.
60858    END IF;
60859 
60860    --
60861    -- call analytical criteria
60862    --
60863    
60864    --
60865    -- call description
60866    --
60867    -- No description or it is inherited.
60868    --
60869    -- call ADRs
60870    -- Bug 4922099
60871    --
60872    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
60873         (NVL(l_actual_upg_option, 'N') = 'O') OR
60874         (NVL(l_enc_upg_option, 'N') = 'O')
60875       )
60876    THEN
60877    NULL;
60878    --
60879    --
60880    
60881   l_ccid := AcctDerRule_4(
60882            p_application_id           => p_application_id
60883          , p_ae_header_id             => l_ae_header_id 
60884 , p_source_4 => p_source_4
60885          , x_transaction_coa_id       => l_adr_transaction_coa_id
60886          , x_accounting_coa_id        => l_adr_accounting_coa_id
60887          , x_value_type_code          => l_adr_value_type_code
60888          , p_side                     => 'NA'
60889    );
60890 
60891    xla_ae_lines_pkg.set_ccid(
60892     p_code_combination_id          => l_ccid
60893   , p_value_type_code              => l_adr_value_type_code
60894   , p_transaction_coa_id           => l_adr_transaction_coa_id
60895   , p_accounting_coa_id            => l_adr_accounting_coa_id
60896   , p_adr_code                     => 'CST_DEFAULT'
60897   , p_adr_type_code                => 'S'
60898   , p_component_type               => l_component_type
60899   , p_component_code               => l_component_code
60900   , p_component_type_code          => l_component_type_code
60901   , p_component_appl_id            => l_component_appl_id
60902   , p_amb_context_code             => l_amb_context_code
60903   , p_side                         => 'NA'
60904   );
60905 
60906 
60907    --
60908    --
60909    END IF;
60910    --
60911    -- Bug 4922099
60912    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
60913           (NVL(l_enc_upg_option, 'N') = 'O')
60914         ) AND
60915         (l_bflow_method_code = 'PRIOR_ENTRY')
60916       )
60917    THEN
60918       IF
60919       --
60920       1 = 2
60921       --
60922       THEN
60923       xla_accounting_err_pkg.build_message
60924                                     (p_appli_s_name            => 'XLA'
60925                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
60926                                     ,p_token_1                 => 'LINE_NUMBER'
60927                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
60928                                     ,p_token_2                 => 'LINE_TYPE_NAME'
60929                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
60930                                                                              l_component_type
60931                                                                             ,l_component_code
60932                                                                             ,l_component_type_code
60933                                                                             ,l_component_appl_id
60934                                                                             ,l_amb_context_code
60935                                                                             ,l_entity_code
60936                                                                             ,l_event_class_code
60937                                                                            )
60938                                     ,p_token_3                 => 'OWNER'
60939                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
60940                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
60941                                                                           ,p_lookup_code    => l_component_type_code
60942                                                                          )
60943                                     ,p_token_4                 => 'PRODUCT_NAME'
60944                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
60945                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
60946                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
60947                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
60948                                     ,p_ae_header_id            =>  NULL
60949                                        );
60950 
60951         IF (C_LEVEL_ERROR>= g_log_level) THEN
60952                  trace
60953                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
60954                       ,p_level    => C_LEVEL_ERROR
60955                       ,p_module   => l_log_module);
60956         END IF;
60957       END IF;
60958    END IF;
60959    --
60960    --
60961    ------------------------------------------------------------------------------------------------
60962    -- 4219869 Business Flow
60963    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
60964    -- Prior Entry.  Currently, the following code is always generated.
60965    ------------------------------------------------------------------------------------------------
60966    XLA_AE_LINES_PKG.ValidateCurrentLine;
60967 
60968    ------------------------------------------------------------------------------------
60969    -- 4219869 Business Flow
60970    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
60971    ------------------------------------------------------------------------------------
60972    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
60973 
60974    ----------------------------------------------------------------------------------
60975    -- 4219869 Business Flow
60976    -- Update journal entry status -- Need to generate this within IF <condition>
60977    ----------------------------------------------------------------------------------
60978    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
60979          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
60980          ,p_balance_type_code => l_balance_type_code
60981          );
60982 
60983    -------------------------------------------------------------------------------------------
60984    -- 4262811 - Generate the Accrual Reversal lines
60985    -------------------------------------------------------------------------------------------
60986    BEGIN
60987       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
60988                               (g_array_event(p_event_id).array_value_num('header_index'));
60989       IF l_acc_rev_flag IS NULL THEN
60990          l_acc_rev_flag := 'N';
60991       END IF;
60992    EXCEPTION
60993       WHEN OTHERS THEN
60994          l_acc_rev_flag := 'N';
60995    END;
60996    --
60997    IF (l_acc_rev_flag = 'Y') THEN
60998 
60999        -- 4645092  ------------------------------------------------------------------------------
61000        -- To allow MPA report to determine if it should generate report process
61001        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
61002        ------------------------------------------------------------------------------------------
61003 
61004        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
61005        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
61006    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
61007    -- call ADRs
61008    -- Bug 4922099
61009    --
61010    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
61011         (NVL(l_actual_upg_option, 'N') = 'O') OR
61012         (NVL(l_enc_upg_option, 'N') = 'O')
61013       )
61014    THEN
61015    NULL;
61016    --
61017    --
61018    
61019   l_ccid := AcctDerRule_4(
61020            p_application_id           => p_application_id
61021          , p_ae_header_id             => l_ae_header_id 
61022 , p_source_4 => p_source_4
61023          , x_transaction_coa_id       => l_adr_transaction_coa_id
61024          , x_accounting_coa_id        => l_adr_accounting_coa_id
61025          , x_value_type_code          => l_adr_value_type_code
61026          , p_side                     => 'NA'
61027    );
61028 
61029    xla_ae_lines_pkg.set_ccid(
61030     p_code_combination_id          => l_ccid
61031   , p_value_type_code              => l_adr_value_type_code
61032   , p_transaction_coa_id           => l_adr_transaction_coa_id
61033   , p_accounting_coa_id            => l_adr_accounting_coa_id
61034   , p_adr_code                     => 'CST_DEFAULT'
61035   , p_adr_type_code                => 'S'
61036   , p_component_type               => l_component_type
61037   , p_component_code               => l_component_code
61038   , p_component_type_code          => l_component_type_code
61039   , p_component_appl_id            => l_component_appl_id
61040   , p_amb_context_code             => l_amb_context_code
61041   , p_side                         => 'NA'
61042   );
61043 
61044 
61045    --
61046    --
61047    END IF;
61048 
61049        --
61050        -- Update the line information that should be overwritten
61051        --
61052        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
61053                                          p_header_num   => 1);
61054        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
61055 
61056        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
61057 
61058        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
61059           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
61060        END IF;
61061 
61062       --
61063       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
61064       --
61065       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
61066           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
61067       ELSE
61068           ---------------------------------------------------------------------------------------------------
61069           -- 4262811a Switch Sign
61070           ---------------------------------------------------------------------------------------------------
61071           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
61072           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61073                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61074           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61075                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61076           -- 5132302
61077           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
61078                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61079 
61080       END IF;
61081 
61082       -- 4955764
61083       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61084       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
61085 
61086 
61087       XLA_AE_LINES_PKG.ValidateCurrentLine;
61088       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
61089 
61090       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
61091                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
61092                ,p_balance_type_code => l_balance_type_code);
61093 
61094    END IF;
61095 
61096    -----------------------------------------------------------------------------------------
61097    -- 4262811 Multiperiod Accounting
61098    -----------------------------------------------------------------------------------------
61099      -- No MPA option is assigned.
61100 
61101 
61102 END IF;
61103 END IF;
61104 --
61105 
61106 --
61107 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61108    trace
61109       (p_msg      => 'END of AcctLineType_112'
61110       ,p_level    => C_LEVEL_PROCEDURE
61111       ,p_module   => l_log_module);
61112 END IF;
61113 --
61114 EXCEPTION
61115   WHEN xla_exceptions_pkg.application_exception THEN
61116       RAISE;
61117   WHEN OTHERS THEN
61118        xla_exceptions_pkg.raise_message
61119            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_112');
61120 END AcctLineType_112;
61121 --
61122 
61123 ---------------------------------------
61124 --
61125 -- PRIVATE FUNCTION
61126 --         AcctLineType_113
61127 --
61128 ---------------------------------------
61129 PROCEDURE AcctLineType_113 (
61130   p_application_id        IN NUMBER
61131  ,p_event_id              IN NUMBER
61132  ,p_calculate_acctd_flag  IN VARCHAR2
61133  ,p_calculate_g_l_flag    IN VARCHAR2
61134  ,p_actual_flag           IN OUT VARCHAR2
61135  ,p_balance_type_code     OUT VARCHAR2
61136  ,p_gain_or_loss_ref      OUT VARCHAR2
61137  
61138 --Cost Management Default Account
61139  , p_source_4            IN NUMBER
61140 --DISTRIBUTION_IDENTIFIER
61141  , p_source_11            IN NUMBER
61142 --Distribution Type
61143  , p_source_12            IN VARCHAR2
61144  , p_source_12_meaning    IN VARCHAR2
61145 --Entered Currency Code
61146  , p_source_15            IN VARCHAR2
61147 --Entered Amount
61148  , p_source_18            IN NUMBER
61149 --Currency Conversion Date
61150  , p_source_19            IN DATE
61151 --Currency Conversion Rate
61152  , p_source_20            IN NUMBER
61153 --Currency Conversion Type
61154  , p_source_21            IN VARCHAR2
61155 --Accounted Amount
61156  , p_source_22            IN NUMBER
61157 --Accounting Line Type
61158  , p_source_24            IN NUMBER
61159 )
61160 IS
61161 
61162 l_component_type              VARCHAR2(80);
61163 l_component_code              VARCHAR2(30);
61164 l_component_type_code         VARCHAR2(1);
61165 l_component_appl_id           INTEGER;
61166 l_amb_context_code            VARCHAR2(30);
61167 l_entity_code                 VARCHAR2(30);
61168 l_event_class_code            VARCHAR2(30);
61169 l_ae_header_id                NUMBER;
61170 l_event_type_code             VARCHAR2(30);
61171 l_line_definition_code        VARCHAR2(30);
61172 l_line_definition_owner_code  VARCHAR2(1);
61173 --
61174 -- adr variables
61175 l_segment                     VARCHAR2(30);
61176 l_ccid                        NUMBER;
61177 l_adr_transaction_coa_id      NUMBER;
61178 l_adr_accounting_coa_id       NUMBER;
61179 l_adr_flexfield_segment_code  VARCHAR2(30);
61180 l_adr_flex_value_set_id       NUMBER;
61181 l_adr_value_type_code         VARCHAR2(30);
61182 l_adr_value_combination_id    NUMBER;
61183 l_adr_value_segment_code      VARCHAR2(30);
61184 
61185 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
61186 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
61187 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
61188 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
61189 
61190 -- 4262811 Variables ------------------------------------------------------------------------------------------
61191 l_entered_amt_idx             NUMBER;
61192 l_accted_amt_idx              NUMBER;
61193 l_acc_rev_flag                VARCHAR2(1);
61194 l_accrual_line_num            NUMBER;
61195 l_tmp_amt                     NUMBER;
61196 l_acc_rev_natural_side_code   VARCHAR2(1);
61197 
61198 l_num_entries                 NUMBER;
61199 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
61200 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
61201 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
61202 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
61203 l_recog_line_1                NUMBER;
61204 l_recog_line_2                NUMBER;
61205 
61206 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
61207 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
61208 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
61209 
61210 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
61211 
61212 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
61213 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
61214 
61215 ---------------------------------------------------------------------------------------------------------------
61216 
61217 
61218 --
61219 -- bulk performance
61220 --
61221 l_balance_type_code           VARCHAR2(1);
61222 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
61223 l_log_module                  VARCHAR2(240);
61224 
61225 --
61226 -- Upgrade strategy
61227 --
61228 l_actual_upg_option           VARCHAR2(1);
61229 l_enc_upg_option           VARCHAR2(1);
61230 
61231 --
61232 BEGIN
61233 --
61234 IF g_log_enabled THEN
61235       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_113';
61236 END IF;
61237 --
61238 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61239 
61240       trace
61241          (p_msg      => 'BEGIN of AcctLineType_113'
61242          ,p_level    => C_LEVEL_PROCEDURE
61243          ,p_module   => l_log_module);
61244 
61245 END IF;
61246 --
61247 l_component_type             := 'AMB_JLT';
61248 l_component_code             := 'INTERORG_TRANSFER_CREDIT';
61249 l_component_type_code        := 'S';
61250 l_component_appl_id          :=  707;
61251 l_amb_context_code           := 'DEFAULT';
61252 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
61253 l_event_class_code           := 'USER_DEFINE';
61254 l_event_type_code            := 'UDIR_INTERORG_RCPT_TP';
61255 l_line_definition_owner_code := 'S';
61256 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_TP';
61257 --
61258 l_balance_type_code          := 'A';
61259 l_segment                     := NULL;
61260 l_ccid                        := NULL;
61261 l_adr_transaction_coa_id      := NULL;
61262 l_adr_accounting_coa_id       := NULL;
61263 l_adr_flexfield_segment_code  := NULL;
61264 l_adr_flex_value_set_id       := NULL;
61265 l_adr_value_type_code         := NULL;
61266 l_adr_value_combination_id    := NULL;
61267 l_adr_value_segment_code      := NULL;
61268 
61269 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
61270 l_bflow_class_code           := '';    -- 4219869 Business Flow
61271 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
61272 l_budgetary_control_flag     := 'N';
61273 
61274 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
61275 l_bflow_applied_to_amt       := NULL; -- 5132302
61276 l_entered_amt_idx            := NULL;          -- 4262811
61277 l_accted_amt_idx             := NULL;          -- 4262811
61278 l_acc_rev_flag               := NULL;          -- 4262811
61279 l_accrual_line_num           := NULL;          -- 4262811
61280 l_tmp_amt                    := NULL;          -- 4262811
61281 --
61282  
61283 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
61284     l_balance_type_code <> 'B' THEN
61285 IF NVL(p_source_24,9E125) =  11
61286  THEN 
61287 
61288    --
61289    XLA_AE_LINES_PKG.SetNewLine;
61290 
61291    p_balance_type_code          := l_balance_type_code;
61292    -- set the flag so later we will know whether the gain loss line needs to be created
61293    
61294    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
61295      p_actual_flag :='A';
61296    END IF;
61297 
61298    --
61299    -- bulk performance
61300    --
61301    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
61302                                       p_header_num   => 0); -- 4262811
61303    --
61304    -- set accounting line options
61305    --
61306    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
61307            p_natural_side_code          => 'D'
61308          , p_gain_or_loss_flag          => 'N'
61309          , p_gl_transfer_mode_code      => 'S'
61310          , p_acct_entry_type_code       => 'A'
61311          , p_switch_side_flag           => 'Y'
61312          , p_merge_duplicate_code       => 'N'
61313          );
61314    --
61315    l_acc_rev_natural_side_code := 'C';  -- 4262811
61316    -- 
61317    --
61318    -- set accounting line type info
61319    --
61320    xla_ae_lines_pkg.SetAcctLineType
61321       (p_component_type             => l_component_type
61322       ,p_event_type_code            => l_event_type_code
61323       ,p_line_definition_owner_code => l_line_definition_owner_code
61324       ,p_line_definition_code       => l_line_definition_code
61325       ,p_accounting_line_code       => l_component_code
61326       ,p_accounting_line_type_code  => l_component_type_code
61327       ,p_accounting_line_appl_id    => l_component_appl_id
61328       ,p_amb_context_code           => l_amb_context_code
61329       ,p_entity_code                => l_entity_code
61330       ,p_event_class_code           => l_event_class_code);
61331    --
61332    -- set accounting class
61333    --
61334    xla_ae_lines_pkg.SetAcctClass(
61335            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
61336          , p_ae_header_id           => l_ae_header_id
61337          );
61338 
61339    --
61340    -- set rounding class
61341    --
61342    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
61343                       'INTERORG_TRANSFER_CREDIT';
61344 
61345    --
61346    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
61347    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
61348    --
61349    -- bulk performance
61350    --
61351    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
61352 
61353    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
61354       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
61355 
61356    -- 4955764
61357    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61358       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
61359 
61360    -- 4458381 Public Sector Enh
61361    
61362    --
61363    -- set accounting attributes for the line type
61364    --
61365    l_entered_amt_idx := 3;
61366    l_accted_amt_idx  := 8;
61367    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
61368    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
61369    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
61370    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
61371    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
61372    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
61373    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
61374    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
61375    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
61376    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
61377    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
61378    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
61379    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
61380    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
61381    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
61382    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
61383    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
61384 
61385    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
61386    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
61387 
61388    ---------------------------------------------------------------------------------------------------------------
61389    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
61390    ---------------------------------------------------------------------------------------------------------------
61391    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
61392 
61393    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61394    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61395 
61396    IF xla_accounting_cache_pkg.GetValueChar
61397          (p_source_code         => 'LEDGER_CATEGORY_CODE'
61398          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
61399    AND l_bflow_method_code = 'PRIOR_ENTRY'
61400 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
61401    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
61402          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
61403        )
61404    THEN
61405          xla_ae_lines_pkg.BflowUpgEntry
61406            (p_business_method_code    => l_bflow_method_code
61407            ,p_business_class_code     => l_bflow_class_code
61408            ,p_balance_type            => l_balance_type_code);
61409    ELSE
61410       NULL;
61411 -- No business flow processing for business flow method of NONE.
61412    END IF;
61413 
61414    --
61415    -- call analytical criteria
61416    --
61417    
61418    --
61419    -- call description
61420    --
61421    -- No description or it is inherited.
61422    --
61423    -- call ADRs
61424    -- Bug 4922099
61425    --
61426    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
61427         (NVL(l_actual_upg_option, 'N') = 'O') OR
61428         (NVL(l_enc_upg_option, 'N') = 'O')
61429       )
61430    THEN
61431    NULL;
61432    --
61433    --
61434    
61435   l_ccid := AcctDerRule_4(
61436            p_application_id           => p_application_id
61437          , p_ae_header_id             => l_ae_header_id 
61438 , p_source_4 => p_source_4
61439          , x_transaction_coa_id       => l_adr_transaction_coa_id
61440          , x_accounting_coa_id        => l_adr_accounting_coa_id
61441          , x_value_type_code          => l_adr_value_type_code
61442          , p_side                     => 'NA'
61443    );
61444 
61445    xla_ae_lines_pkg.set_ccid(
61446     p_code_combination_id          => l_ccid
61447   , p_value_type_code              => l_adr_value_type_code
61448   , p_transaction_coa_id           => l_adr_transaction_coa_id
61449   , p_accounting_coa_id            => l_adr_accounting_coa_id
61450   , p_adr_code                     => 'CST_DEFAULT'
61451   , p_adr_type_code                => 'S'
61452   , p_component_type               => l_component_type
61453   , p_component_code               => l_component_code
61454   , p_component_type_code          => l_component_type_code
61455   , p_component_appl_id            => l_component_appl_id
61456   , p_amb_context_code             => l_amb_context_code
61457   , p_side                         => 'NA'
61458   );
61459 
61460 
61461    --
61462    --
61463    END IF;
61464    --
61465    -- Bug 4922099
61466    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
61467           (NVL(l_enc_upg_option, 'N') = 'O')
61468         ) AND
61469         (l_bflow_method_code = 'PRIOR_ENTRY')
61470       )
61471    THEN
61472       IF
61473       --
61474       1 = 2
61475       --
61476       THEN
61477       xla_accounting_err_pkg.build_message
61478                                     (p_appli_s_name            => 'XLA'
61479                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
61480                                     ,p_token_1                 => 'LINE_NUMBER'
61481                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
61482                                     ,p_token_2                 => 'LINE_TYPE_NAME'
61483                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
61484                                                                              l_component_type
61485                                                                             ,l_component_code
61486                                                                             ,l_component_type_code
61487                                                                             ,l_component_appl_id
61488                                                                             ,l_amb_context_code
61489                                                                             ,l_entity_code
61490                                                                             ,l_event_class_code
61491                                                                            )
61492                                     ,p_token_3                 => 'OWNER'
61493                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
61494                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
61495                                                                           ,p_lookup_code    => l_component_type_code
61496                                                                          )
61497                                     ,p_token_4                 => 'PRODUCT_NAME'
61498                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
61499                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
61500                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
61501                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
61502                                     ,p_ae_header_id            =>  NULL
61503                                        );
61504 
61505         IF (C_LEVEL_ERROR>= g_log_level) THEN
61506                  trace
61507                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
61508                       ,p_level    => C_LEVEL_ERROR
61509                       ,p_module   => l_log_module);
61510         END IF;
61511       END IF;
61512    END IF;
61513    --
61514    --
61515    ------------------------------------------------------------------------------------------------
61516    -- 4219869 Business Flow
61517    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
61518    -- Prior Entry.  Currently, the following code is always generated.
61519    ------------------------------------------------------------------------------------------------
61520    XLA_AE_LINES_PKG.ValidateCurrentLine;
61521 
61522    ------------------------------------------------------------------------------------
61523    -- 4219869 Business Flow
61524    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
61525    ------------------------------------------------------------------------------------
61526    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
61527 
61528    ----------------------------------------------------------------------------------
61529    -- 4219869 Business Flow
61530    -- Update journal entry status -- Need to generate this within IF <condition>
61531    ----------------------------------------------------------------------------------
61532    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
61533          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
61534          ,p_balance_type_code => l_balance_type_code
61535          );
61536 
61537    -------------------------------------------------------------------------------------------
61538    -- 4262811 - Generate the Accrual Reversal lines
61539    -------------------------------------------------------------------------------------------
61540    BEGIN
61541       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
61542                               (g_array_event(p_event_id).array_value_num('header_index'));
61543       IF l_acc_rev_flag IS NULL THEN
61544          l_acc_rev_flag := 'N';
61545       END IF;
61546    EXCEPTION
61547       WHEN OTHERS THEN
61548          l_acc_rev_flag := 'N';
61549    END;
61550    --
61551    IF (l_acc_rev_flag = 'Y') THEN
61552 
61553        -- 4645092  ------------------------------------------------------------------------------
61554        -- To allow MPA report to determine if it should generate report process
61555        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
61556        ------------------------------------------------------------------------------------------
61557 
61558        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
61559        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
61560    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
61561    -- call ADRs
61562    -- Bug 4922099
61563    --
61564    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
61565         (NVL(l_actual_upg_option, 'N') = 'O') OR
61566         (NVL(l_enc_upg_option, 'N') = 'O')
61567       )
61568    THEN
61569    NULL;
61570    --
61571    --
61572    
61573   l_ccid := AcctDerRule_4(
61574            p_application_id           => p_application_id
61575          , p_ae_header_id             => l_ae_header_id 
61576 , p_source_4 => p_source_4
61577          , x_transaction_coa_id       => l_adr_transaction_coa_id
61578          , x_accounting_coa_id        => l_adr_accounting_coa_id
61579          , x_value_type_code          => l_adr_value_type_code
61580          , p_side                     => 'NA'
61581    );
61582 
61583    xla_ae_lines_pkg.set_ccid(
61584     p_code_combination_id          => l_ccid
61585   , p_value_type_code              => l_adr_value_type_code
61586   , p_transaction_coa_id           => l_adr_transaction_coa_id
61587   , p_accounting_coa_id            => l_adr_accounting_coa_id
61588   , p_adr_code                     => 'CST_DEFAULT'
61589   , p_adr_type_code                => 'S'
61590   , p_component_type               => l_component_type
61591   , p_component_code               => l_component_code
61592   , p_component_type_code          => l_component_type_code
61593   , p_component_appl_id            => l_component_appl_id
61594   , p_amb_context_code             => l_amb_context_code
61595   , p_side                         => 'NA'
61596   );
61597 
61598 
61599    --
61600    --
61601    END IF;
61602 
61603        --
61604        -- Update the line information that should be overwritten
61605        --
61606        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
61607                                          p_header_num   => 1);
61608        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
61609 
61610        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
61611 
61612        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
61613           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
61614        END IF;
61615 
61616       --
61617       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
61618       --
61619       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
61620           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
61621       ELSE
61622           ---------------------------------------------------------------------------------------------------
61623           -- 4262811a Switch Sign
61624           ---------------------------------------------------------------------------------------------------
61625           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
61626           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61627                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61628           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61629                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61630           -- 5132302
61631           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
61632                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61633 
61634       END IF;
61635 
61636       -- 4955764
61637       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61638       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
61639 
61640 
61641       XLA_AE_LINES_PKG.ValidateCurrentLine;
61642       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
61643 
61644       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
61645                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
61646                ,p_balance_type_code => l_balance_type_code);
61647 
61648    END IF;
61649 
61650    -----------------------------------------------------------------------------------------
61651    -- 4262811 Multiperiod Accounting
61652    -----------------------------------------------------------------------------------------
61653      -- No MPA option is assigned.
61654 
61655 
61656 END IF;
61657 END IF;
61658 --
61659 
61660 --
61661 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61662    trace
61663       (p_msg      => 'END of AcctLineType_113'
61664       ,p_level    => C_LEVEL_PROCEDURE
61665       ,p_module   => l_log_module);
61666 END IF;
61667 --
61668 EXCEPTION
61669   WHEN xla_exceptions_pkg.application_exception THEN
61670       RAISE;
61671   WHEN OTHERS THEN
61672        xla_exceptions_pkg.raise_message
61673            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_113');
61674 END AcctLineType_113;
61675 --
61676 
61677 ---------------------------------------
61678 --
61679 -- PRIVATE FUNCTION
61680 --         AcctLineType_114
61681 --
61682 ---------------------------------------
61683 PROCEDURE AcctLineType_114 (
61684   p_application_id        IN NUMBER
61685  ,p_event_id              IN NUMBER
61686  ,p_calculate_acctd_flag  IN VARCHAR2
61687  ,p_calculate_g_l_flag    IN VARCHAR2
61688  ,p_actual_flag           IN OUT VARCHAR2
61689  ,p_balance_type_code     OUT VARCHAR2
61690  ,p_gain_or_loss_ref      OUT VARCHAR2
61691  
61692 --Cost Management Default Account
61693  , p_source_4            IN NUMBER
61694 --DISTRIBUTION_IDENTIFIER
61695  , p_source_11            IN NUMBER
61696 --Distribution Type
61697  , p_source_12            IN VARCHAR2
61698  , p_source_12_meaning    IN VARCHAR2
61699 --Entered Currency Code
61700  , p_source_15            IN VARCHAR2
61701 --Entered Amount
61702  , p_source_18            IN NUMBER
61703 --Currency Conversion Date
61704  , p_source_19            IN DATE
61705 --Currency Conversion Rate
61706  , p_source_20            IN NUMBER
61707 --Currency Conversion Type
61708  , p_source_21            IN VARCHAR2
61709 --Accounted Amount
61710  , p_source_22            IN NUMBER
61711 --Accounting Line Type
61712  , p_source_24            IN NUMBER
61713 )
61714 IS
61715 
61716 l_component_type              VARCHAR2(80);
61717 l_component_code              VARCHAR2(30);
61718 l_component_type_code         VARCHAR2(1);
61719 l_component_appl_id           INTEGER;
61720 l_amb_context_code            VARCHAR2(30);
61721 l_entity_code                 VARCHAR2(30);
61722 l_event_class_code            VARCHAR2(30);
61723 l_ae_header_id                NUMBER;
61724 l_event_type_code             VARCHAR2(30);
61725 l_line_definition_code        VARCHAR2(30);
61726 l_line_definition_owner_code  VARCHAR2(1);
61727 --
61728 -- adr variables
61729 l_segment                     VARCHAR2(30);
61730 l_ccid                        NUMBER;
61731 l_adr_transaction_coa_id      NUMBER;
61732 l_adr_accounting_coa_id       NUMBER;
61733 l_adr_flexfield_segment_code  VARCHAR2(30);
61734 l_adr_flex_value_set_id       NUMBER;
61735 l_adr_value_type_code         VARCHAR2(30);
61736 l_adr_value_combination_id    NUMBER;
61737 l_adr_value_segment_code      VARCHAR2(30);
61738 
61739 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
61740 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
61741 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
61742 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
61743 
61744 -- 4262811 Variables ------------------------------------------------------------------------------------------
61745 l_entered_amt_idx             NUMBER;
61746 l_accted_amt_idx              NUMBER;
61747 l_acc_rev_flag                VARCHAR2(1);
61748 l_accrual_line_num            NUMBER;
61749 l_tmp_amt                     NUMBER;
61750 l_acc_rev_natural_side_code   VARCHAR2(1);
61751 
61752 l_num_entries                 NUMBER;
61753 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
61754 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
61755 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
61756 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
61757 l_recog_line_1                NUMBER;
61758 l_recog_line_2                NUMBER;
61759 
61760 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
61761 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
61762 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
61763 
61764 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
61765 
61766 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
61767 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
61768 
61769 ---------------------------------------------------------------------------------------------------------------
61770 
61771 
61772 --
61773 -- bulk performance
61774 --
61775 l_balance_type_code           VARCHAR2(1);
61776 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
61777 l_log_module                  VARCHAR2(240);
61778 
61779 --
61780 -- Upgrade strategy
61781 --
61782 l_actual_upg_option           VARCHAR2(1);
61783 l_enc_upg_option           VARCHAR2(1);
61784 
61785 --
61786 BEGIN
61787 --
61788 IF g_log_enabled THEN
61789       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_114';
61790 END IF;
61791 --
61792 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61793 
61794       trace
61795          (p_msg      => 'BEGIN of AcctLineType_114'
61796          ,p_level    => C_LEVEL_PROCEDURE
61797          ,p_module   => l_log_module);
61798 
61799 END IF;
61800 --
61801 l_component_type             := 'AMB_JLT';
61802 l_component_code             := 'INTERORG_TRANSFER_CREDIT';
61803 l_component_type_code        := 'S';
61804 l_component_appl_id          :=  707;
61805 l_amb_context_code           := 'DEFAULT';
61806 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
61807 l_event_class_code           := 'USER_DEFINE';
61808 l_event_type_code            := 'UDIR_INTERORG_SHIP_NO_TP';
61809 l_line_definition_owner_code := 'S';
61810 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_NO_TP';
61811 --
61812 l_balance_type_code          := 'A';
61813 l_segment                     := NULL;
61814 l_ccid                        := NULL;
61815 l_adr_transaction_coa_id      := NULL;
61816 l_adr_accounting_coa_id       := NULL;
61817 l_adr_flexfield_segment_code  := NULL;
61818 l_adr_flex_value_set_id       := NULL;
61819 l_adr_value_type_code         := NULL;
61820 l_adr_value_combination_id    := NULL;
61821 l_adr_value_segment_code      := NULL;
61822 
61823 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
61824 l_bflow_class_code           := '';    -- 4219869 Business Flow
61825 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
61826 l_budgetary_control_flag     := 'N';
61827 
61828 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
61829 l_bflow_applied_to_amt       := NULL; -- 5132302
61830 l_entered_amt_idx            := NULL;          -- 4262811
61831 l_accted_amt_idx             := NULL;          -- 4262811
61832 l_acc_rev_flag               := NULL;          -- 4262811
61833 l_accrual_line_num           := NULL;          -- 4262811
61834 l_tmp_amt                    := NULL;          -- 4262811
61835 --
61836  
61837 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
61838     l_balance_type_code <> 'B' THEN
61839 IF NVL(p_source_24,9E125) =  11
61840  THEN 
61841 
61842    --
61843    XLA_AE_LINES_PKG.SetNewLine;
61844 
61845    p_balance_type_code          := l_balance_type_code;
61846    -- set the flag so later we will know whether the gain loss line needs to be created
61847    
61848    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
61849      p_actual_flag :='A';
61850    END IF;
61851 
61852    --
61853    -- bulk performance
61854    --
61855    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
61856                                       p_header_num   => 0); -- 4262811
61857    --
61858    -- set accounting line options
61859    --
61860    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
61861            p_natural_side_code          => 'D'
61862          , p_gain_or_loss_flag          => 'N'
61863          , p_gl_transfer_mode_code      => 'S'
61864          , p_acct_entry_type_code       => 'A'
61865          , p_switch_side_flag           => 'Y'
61866          , p_merge_duplicate_code       => 'N'
61867          );
61868    --
61869    l_acc_rev_natural_side_code := 'C';  -- 4262811
61870    -- 
61871    --
61872    -- set accounting line type info
61873    --
61874    xla_ae_lines_pkg.SetAcctLineType
61875       (p_component_type             => l_component_type
61876       ,p_event_type_code            => l_event_type_code
61877       ,p_line_definition_owner_code => l_line_definition_owner_code
61878       ,p_line_definition_code       => l_line_definition_code
61879       ,p_accounting_line_code       => l_component_code
61880       ,p_accounting_line_type_code  => l_component_type_code
61881       ,p_accounting_line_appl_id    => l_component_appl_id
61882       ,p_amb_context_code           => l_amb_context_code
61883       ,p_entity_code                => l_entity_code
61884       ,p_event_class_code           => l_event_class_code);
61885    --
61886    -- set accounting class
61887    --
61888    xla_ae_lines_pkg.SetAcctClass(
61889            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
61890          , p_ae_header_id           => l_ae_header_id
61891          );
61892 
61893    --
61894    -- set rounding class
61895    --
61896    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
61897                       'INTERORG_TRANSFER_CREDIT';
61898 
61899    --
61900    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
61901    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
61902    --
61903    -- bulk performance
61904    --
61905    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
61906 
61907    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
61908       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
61909 
61910    -- 4955764
61911    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61912       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
61913 
61914    -- 4458381 Public Sector Enh
61915    
61916    --
61917    -- set accounting attributes for the line type
61918    --
61919    l_entered_amt_idx := 3;
61920    l_accted_amt_idx  := 8;
61921    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
61922    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
61923    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
61924    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
61925    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
61926    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
61927    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
61928    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
61929    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
61930    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
61931    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
61932    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
61933    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
61934    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
61935    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
61936    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
61937    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
61938 
61939    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
61940    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
61941 
61942    ---------------------------------------------------------------------------------------------------------------
61943    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
61944    ---------------------------------------------------------------------------------------------------------------
61945    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
61946 
61947    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61948    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61949 
61950    IF xla_accounting_cache_pkg.GetValueChar
61951          (p_source_code         => 'LEDGER_CATEGORY_CODE'
61952          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
61953    AND l_bflow_method_code = 'PRIOR_ENTRY'
61954 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
61955    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
61956          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
61957        )
61958    THEN
61959          xla_ae_lines_pkg.BflowUpgEntry
61960            (p_business_method_code    => l_bflow_method_code
61961            ,p_business_class_code     => l_bflow_class_code
61962            ,p_balance_type            => l_balance_type_code);
61963    ELSE
61964       NULL;
61965 -- No business flow processing for business flow method of NONE.
61966    END IF;
61967 
61968    --
61969    -- call analytical criteria
61970    --
61971    
61972    --
61973    -- call description
61974    --
61975    -- No description or it is inherited.
61976    --
61977    -- call ADRs
61978    -- Bug 4922099
61979    --
61980    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
61981         (NVL(l_actual_upg_option, 'N') = 'O') OR
61982         (NVL(l_enc_upg_option, 'N') = 'O')
61983       )
61984    THEN
61985    NULL;
61986    --
61987    --
61988    
61989   l_ccid := AcctDerRule_4(
61990            p_application_id           => p_application_id
61991          , p_ae_header_id             => l_ae_header_id 
61992 , p_source_4 => p_source_4
61993          , x_transaction_coa_id       => l_adr_transaction_coa_id
61994          , x_accounting_coa_id        => l_adr_accounting_coa_id
61995          , x_value_type_code          => l_adr_value_type_code
61996          , p_side                     => 'NA'
61997    );
61998 
61999    xla_ae_lines_pkg.set_ccid(
62000     p_code_combination_id          => l_ccid
62001   , p_value_type_code              => l_adr_value_type_code
62002   , p_transaction_coa_id           => l_adr_transaction_coa_id
62003   , p_accounting_coa_id            => l_adr_accounting_coa_id
62004   , p_adr_code                     => 'CST_DEFAULT'
62005   , p_adr_type_code                => 'S'
62006   , p_component_type               => l_component_type
62007   , p_component_code               => l_component_code
62008   , p_component_type_code          => l_component_type_code
62009   , p_component_appl_id            => l_component_appl_id
62010   , p_amb_context_code             => l_amb_context_code
62011   , p_side                         => 'NA'
62012   );
62013 
62014 
62015    --
62016    --
62017    END IF;
62018    --
62019    -- Bug 4922099
62020    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
62021           (NVL(l_enc_upg_option, 'N') = 'O')
62022         ) AND
62023         (l_bflow_method_code = 'PRIOR_ENTRY')
62024       )
62025    THEN
62026       IF
62027       --
62028       1 = 2
62029       --
62030       THEN
62031       xla_accounting_err_pkg.build_message
62032                                     (p_appli_s_name            => 'XLA'
62033                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62034                                     ,p_token_1                 => 'LINE_NUMBER'
62035                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
62036                                     ,p_token_2                 => 'LINE_TYPE_NAME'
62037                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
62038                                                                              l_component_type
62039                                                                             ,l_component_code
62040                                                                             ,l_component_type_code
62041                                                                             ,l_component_appl_id
62042                                                                             ,l_amb_context_code
62043                                                                             ,l_entity_code
62044                                                                             ,l_event_class_code
62045                                                                            )
62046                                     ,p_token_3                 => 'OWNER'
62047                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
62048                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
62049                                                                           ,p_lookup_code    => l_component_type_code
62050                                                                          )
62051                                     ,p_token_4                 => 'PRODUCT_NAME'
62052                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
62053                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
62054                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
62055                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
62056                                     ,p_ae_header_id            =>  NULL
62057                                        );
62058 
62059         IF (C_LEVEL_ERROR>= g_log_level) THEN
62060                  trace
62061                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62062                       ,p_level    => C_LEVEL_ERROR
62063                       ,p_module   => l_log_module);
62064         END IF;
62065       END IF;
62066    END IF;
62067    --
62068    --
62069    ------------------------------------------------------------------------------------------------
62070    -- 4219869 Business Flow
62071    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
62072    -- Prior Entry.  Currently, the following code is always generated.
62073    ------------------------------------------------------------------------------------------------
62074    XLA_AE_LINES_PKG.ValidateCurrentLine;
62075 
62076    ------------------------------------------------------------------------------------
62077    -- 4219869 Business Flow
62078    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
62079    ------------------------------------------------------------------------------------
62080    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62081 
62082    ----------------------------------------------------------------------------------
62083    -- 4219869 Business Flow
62084    -- Update journal entry status -- Need to generate this within IF <condition>
62085    ----------------------------------------------------------------------------------
62086    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62087          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
62088          ,p_balance_type_code => l_balance_type_code
62089          );
62090 
62091    -------------------------------------------------------------------------------------------
62092    -- 4262811 - Generate the Accrual Reversal lines
62093    -------------------------------------------------------------------------------------------
62094    BEGIN
62095       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
62096                               (g_array_event(p_event_id).array_value_num('header_index'));
62097       IF l_acc_rev_flag IS NULL THEN
62098          l_acc_rev_flag := 'N';
62099       END IF;
62100    EXCEPTION
62101       WHEN OTHERS THEN
62102          l_acc_rev_flag := 'N';
62103    END;
62104    --
62105    IF (l_acc_rev_flag = 'Y') THEN
62106 
62107        -- 4645092  ------------------------------------------------------------------------------
62108        -- To allow MPA report to determine if it should generate report process
62109        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
62110        ------------------------------------------------------------------------------------------
62111 
62112        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
62113        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
62114    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
62115    -- call ADRs
62116    -- Bug 4922099
62117    --
62118    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
62119         (NVL(l_actual_upg_option, 'N') = 'O') OR
62120         (NVL(l_enc_upg_option, 'N') = 'O')
62121       )
62122    THEN
62123    NULL;
62124    --
62125    --
62126    
62127   l_ccid := AcctDerRule_4(
62128            p_application_id           => p_application_id
62129          , p_ae_header_id             => l_ae_header_id 
62130 , p_source_4 => p_source_4
62131          , x_transaction_coa_id       => l_adr_transaction_coa_id
62132          , x_accounting_coa_id        => l_adr_accounting_coa_id
62133          , x_value_type_code          => l_adr_value_type_code
62134          , p_side                     => 'NA'
62135    );
62136 
62137    xla_ae_lines_pkg.set_ccid(
62138     p_code_combination_id          => l_ccid
62139   , p_value_type_code              => l_adr_value_type_code
62140   , p_transaction_coa_id           => l_adr_transaction_coa_id
62141   , p_accounting_coa_id            => l_adr_accounting_coa_id
62142   , p_adr_code                     => 'CST_DEFAULT'
62143   , p_adr_type_code                => 'S'
62144   , p_component_type               => l_component_type
62145   , p_component_code               => l_component_code
62146   , p_component_type_code          => l_component_type_code
62147   , p_component_appl_id            => l_component_appl_id
62148   , p_amb_context_code             => l_amb_context_code
62149   , p_side                         => 'NA'
62150   );
62151 
62152 
62153    --
62154    --
62155    END IF;
62156 
62157        --
62158        -- Update the line information that should be overwritten
62159        --
62160        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
62161                                          p_header_num   => 1);
62162        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
62163 
62164        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
62165 
62166        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
62167           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
62168        END IF;
62169 
62170       --
62171       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
62172       --
62173       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
62174           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
62175       ELSE
62176           ---------------------------------------------------------------------------------------------------
62177           -- 4262811a Switch Sign
62178           ---------------------------------------------------------------------------------------------------
62179           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
62180           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62181                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62182           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62183                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62184           -- 5132302
62185           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
62186                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62187 
62188       END IF;
62189 
62190       -- 4955764
62191       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62192       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
62193 
62194 
62195       XLA_AE_LINES_PKG.ValidateCurrentLine;
62196       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62197 
62198       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62199                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
62200                ,p_balance_type_code => l_balance_type_code);
62201 
62202    END IF;
62203 
62204    -----------------------------------------------------------------------------------------
62205    -- 4262811 Multiperiod Accounting
62206    -----------------------------------------------------------------------------------------
62207      -- No MPA option is assigned.
62208 
62209 
62210 END IF;
62211 END IF;
62212 --
62213 
62214 --
62215 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62216    trace
62217       (p_msg      => 'END of AcctLineType_114'
62218       ,p_level    => C_LEVEL_PROCEDURE
62219       ,p_module   => l_log_module);
62220 END IF;
62221 --
62222 EXCEPTION
62223   WHEN xla_exceptions_pkg.application_exception THEN
62224       RAISE;
62225   WHEN OTHERS THEN
62226        xla_exceptions_pkg.raise_message
62227            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_114');
62228 END AcctLineType_114;
62229 --
62230 
62231 ---------------------------------------
62232 --
62233 -- PRIVATE FUNCTION
62234 --         AcctLineType_115
62235 --
62236 ---------------------------------------
62237 PROCEDURE AcctLineType_115 (
62238   p_application_id        IN NUMBER
62239  ,p_event_id              IN NUMBER
62240  ,p_calculate_acctd_flag  IN VARCHAR2
62241  ,p_calculate_g_l_flag    IN VARCHAR2
62242  ,p_actual_flag           IN OUT VARCHAR2
62243  ,p_balance_type_code     OUT VARCHAR2
62244  ,p_gain_or_loss_ref      OUT VARCHAR2
62245  
62246 --Cost Management Default Account
62247  , p_source_4            IN NUMBER
62248 --DISTRIBUTION_IDENTIFIER
62249  , p_source_11            IN NUMBER
62250 --Distribution Type
62251  , p_source_12            IN VARCHAR2
62252  , p_source_12_meaning    IN VARCHAR2
62253 --Entered Currency Code
62254  , p_source_15            IN VARCHAR2
62255 --Entered Amount
62256  , p_source_18            IN NUMBER
62257 --Currency Conversion Date
62258  , p_source_19            IN DATE
62259 --Currency Conversion Rate
62260  , p_source_20            IN NUMBER
62261 --Currency Conversion Type
62262  , p_source_21            IN VARCHAR2
62263 --Accounted Amount
62264  , p_source_22            IN NUMBER
62265 --Accounting Line Type
62266  , p_source_24            IN NUMBER
62267 )
62268 IS
62269 
62270 l_component_type              VARCHAR2(80);
62271 l_component_code              VARCHAR2(30);
62272 l_component_type_code         VARCHAR2(1);
62273 l_component_appl_id           INTEGER;
62274 l_amb_context_code            VARCHAR2(30);
62275 l_entity_code                 VARCHAR2(30);
62276 l_event_class_code            VARCHAR2(30);
62277 l_ae_header_id                NUMBER;
62278 l_event_type_code             VARCHAR2(30);
62279 l_line_definition_code        VARCHAR2(30);
62280 l_line_definition_owner_code  VARCHAR2(1);
62281 --
62282 -- adr variables
62283 l_segment                     VARCHAR2(30);
62284 l_ccid                        NUMBER;
62285 l_adr_transaction_coa_id      NUMBER;
62286 l_adr_accounting_coa_id       NUMBER;
62287 l_adr_flexfield_segment_code  VARCHAR2(30);
62288 l_adr_flex_value_set_id       NUMBER;
62289 l_adr_value_type_code         VARCHAR2(30);
62290 l_adr_value_combination_id    NUMBER;
62291 l_adr_value_segment_code      VARCHAR2(30);
62292 
62293 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
62294 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
62295 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
62296 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
62297 
62298 -- 4262811 Variables ------------------------------------------------------------------------------------------
62299 l_entered_amt_idx             NUMBER;
62300 l_accted_amt_idx              NUMBER;
62301 l_acc_rev_flag                VARCHAR2(1);
62302 l_accrual_line_num            NUMBER;
62303 l_tmp_amt                     NUMBER;
62304 l_acc_rev_natural_side_code   VARCHAR2(1);
62305 
62306 l_num_entries                 NUMBER;
62307 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
62308 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
62309 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
62310 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
62311 l_recog_line_1                NUMBER;
62312 l_recog_line_2                NUMBER;
62313 
62314 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
62315 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
62316 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
62317 
62318 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
62319 
62320 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
62321 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
62322 
62323 ---------------------------------------------------------------------------------------------------------------
62324 
62325 
62326 --
62327 -- bulk performance
62328 --
62329 l_balance_type_code           VARCHAR2(1);
62330 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
62331 l_log_module                  VARCHAR2(240);
62332 
62333 --
62334 -- Upgrade strategy
62335 --
62336 l_actual_upg_option           VARCHAR2(1);
62337 l_enc_upg_option           VARCHAR2(1);
62338 
62339 --
62340 BEGIN
62341 --
62342 IF g_log_enabled THEN
62343       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_115';
62344 END IF;
62345 --
62346 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62347 
62348       trace
62349          (p_msg      => 'BEGIN of AcctLineType_115'
62350          ,p_level    => C_LEVEL_PROCEDURE
62351          ,p_module   => l_log_module);
62352 
62353 END IF;
62354 --
62355 l_component_type             := 'AMB_JLT';
62356 l_component_code             := 'INTERORG_TRANSFER_CREDIT';
62357 l_component_type_code        := 'S';
62358 l_component_appl_id          :=  707;
62359 l_amb_context_code           := 'DEFAULT';
62360 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
62361 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
62362 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_ALL';
62363 l_line_definition_owner_code := 'S';
62364 l_line_definition_code       := 'FOB_SHIP_SENDER_SHIP';
62365 --
62366 l_balance_type_code          := 'A';
62367 l_segment                     := NULL;
62368 l_ccid                        := NULL;
62369 l_adr_transaction_coa_id      := NULL;
62370 l_adr_accounting_coa_id       := NULL;
62371 l_adr_flexfield_segment_code  := NULL;
62372 l_adr_flex_value_set_id       := NULL;
62373 l_adr_value_type_code         := NULL;
62374 l_adr_value_combination_id    := NULL;
62375 l_adr_value_segment_code      := NULL;
62376 
62377 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
62378 l_bflow_class_code           := '';    -- 4219869 Business Flow
62379 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
62380 l_budgetary_control_flag     := 'N';
62381 
62382 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
62383 l_bflow_applied_to_amt       := NULL; -- 5132302
62384 l_entered_amt_idx            := NULL;          -- 4262811
62385 l_accted_amt_idx             := NULL;          -- 4262811
62386 l_acc_rev_flag               := NULL;          -- 4262811
62387 l_accrual_line_num           := NULL;          -- 4262811
62388 l_tmp_amt                    := NULL;          -- 4262811
62389 --
62390  
62391 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
62392     l_balance_type_code <> 'B' THEN
62393 IF NVL(p_source_24,9E125) =  11
62394  THEN 
62395 
62396    --
62397    XLA_AE_LINES_PKG.SetNewLine;
62398 
62399    p_balance_type_code          := l_balance_type_code;
62400    -- set the flag so later we will know whether the gain loss line needs to be created
62401    
62402    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
62403      p_actual_flag :='A';
62404    END IF;
62405 
62406    --
62407    -- bulk performance
62408    --
62409    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
62410                                       p_header_num   => 0); -- 4262811
62411    --
62412    -- set accounting line options
62413    --
62414    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
62415            p_natural_side_code          => 'D'
62416          , p_gain_or_loss_flag          => 'N'
62417          , p_gl_transfer_mode_code      => 'S'
62418          , p_acct_entry_type_code       => 'A'
62419          , p_switch_side_flag           => 'Y'
62420          , p_merge_duplicate_code       => 'N'
62421          );
62422    --
62423    l_acc_rev_natural_side_code := 'C';  -- 4262811
62424    -- 
62425    --
62426    -- set accounting line type info
62427    --
62428    xla_ae_lines_pkg.SetAcctLineType
62429       (p_component_type             => l_component_type
62430       ,p_event_type_code            => l_event_type_code
62431       ,p_line_definition_owner_code => l_line_definition_owner_code
62432       ,p_line_definition_code       => l_line_definition_code
62433       ,p_accounting_line_code       => l_component_code
62434       ,p_accounting_line_type_code  => l_component_type_code
62435       ,p_accounting_line_appl_id    => l_component_appl_id
62436       ,p_amb_context_code           => l_amb_context_code
62437       ,p_entity_code                => l_entity_code
62438       ,p_event_class_code           => l_event_class_code);
62439    --
62440    -- set accounting class
62441    --
62442    xla_ae_lines_pkg.SetAcctClass(
62443            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
62444          , p_ae_header_id           => l_ae_header_id
62445          );
62446 
62447    --
62448    -- set rounding class
62449    --
62450    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
62451                       'INTERORG_TRANSFER_CREDIT';
62452 
62453    --
62454    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
62455    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
62456    --
62457    -- bulk performance
62458    --
62459    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
62460 
62461    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
62462       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
62463 
62464    -- 4955764
62465    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62466       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
62467 
62468    -- 4458381 Public Sector Enh
62469    
62470    --
62471    -- set accounting attributes for the line type
62472    --
62473    l_entered_amt_idx := 3;
62474    l_accted_amt_idx  := 8;
62475    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
62476    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
62477    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
62478    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
62479    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
62480    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
62481    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
62482    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
62483    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
62484    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
62485    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
62486    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
62487    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
62488    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
62489    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
62490    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
62491    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
62492 
62493    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
62494    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
62495 
62496    ---------------------------------------------------------------------------------------------------------------
62497    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
62498    ---------------------------------------------------------------------------------------------------------------
62499    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
62500 
62501    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
62502    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
62503 
62504    IF xla_accounting_cache_pkg.GetValueChar
62505          (p_source_code         => 'LEDGER_CATEGORY_CODE'
62506          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
62507    AND l_bflow_method_code = 'PRIOR_ENTRY'
62508 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
62509    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
62510          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
62511        )
62512    THEN
62513          xla_ae_lines_pkg.BflowUpgEntry
62514            (p_business_method_code    => l_bflow_method_code
62515            ,p_business_class_code     => l_bflow_class_code
62516            ,p_balance_type            => l_balance_type_code);
62517    ELSE
62518       NULL;
62519 -- No business flow processing for business flow method of NONE.
62520    END IF;
62521 
62522    --
62523    -- call analytical criteria
62524    --
62525    
62526    --
62527    -- call description
62528    --
62529    -- No description or it is inherited.
62530    --
62531    -- call ADRs
62532    -- Bug 4922099
62533    --
62534    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
62535         (NVL(l_actual_upg_option, 'N') = 'O') OR
62536         (NVL(l_enc_upg_option, 'N') = 'O')
62537       )
62538    THEN
62539    NULL;
62540    --
62541    --
62542    
62543   l_ccid := AcctDerRule_4(
62544            p_application_id           => p_application_id
62545          , p_ae_header_id             => l_ae_header_id 
62546 , p_source_4 => p_source_4
62547          , x_transaction_coa_id       => l_adr_transaction_coa_id
62548          , x_accounting_coa_id        => l_adr_accounting_coa_id
62549          , x_value_type_code          => l_adr_value_type_code
62550          , p_side                     => 'NA'
62551    );
62552 
62553    xla_ae_lines_pkg.set_ccid(
62554     p_code_combination_id          => l_ccid
62555   , p_value_type_code              => l_adr_value_type_code
62556   , p_transaction_coa_id           => l_adr_transaction_coa_id
62557   , p_accounting_coa_id            => l_adr_accounting_coa_id
62558   , p_adr_code                     => 'CST_DEFAULT'
62559   , p_adr_type_code                => 'S'
62560   , p_component_type               => l_component_type
62561   , p_component_code               => l_component_code
62562   , p_component_type_code          => l_component_type_code
62563   , p_component_appl_id            => l_component_appl_id
62564   , p_amb_context_code             => l_amb_context_code
62565   , p_side                         => 'NA'
62566   );
62567 
62568 
62569    --
62570    --
62571    END IF;
62572    --
62573    -- Bug 4922099
62574    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
62575           (NVL(l_enc_upg_option, 'N') = 'O')
62576         ) AND
62577         (l_bflow_method_code = 'PRIOR_ENTRY')
62578       )
62579    THEN
62580       IF
62581       --
62582       1 = 2
62583       --
62584       THEN
62585       xla_accounting_err_pkg.build_message
62586                                     (p_appli_s_name            => 'XLA'
62587                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62588                                     ,p_token_1                 => 'LINE_NUMBER'
62589                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
62590                                     ,p_token_2                 => 'LINE_TYPE_NAME'
62591                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
62592                                                                              l_component_type
62593                                                                             ,l_component_code
62594                                                                             ,l_component_type_code
62595                                                                             ,l_component_appl_id
62596                                                                             ,l_amb_context_code
62597                                                                             ,l_entity_code
62598                                                                             ,l_event_class_code
62599                                                                            )
62600                                     ,p_token_3                 => 'OWNER'
62601                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
62602                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
62603                                                                           ,p_lookup_code    => l_component_type_code
62604                                                                          )
62605                                     ,p_token_4                 => 'PRODUCT_NAME'
62606                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
62607                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
62608                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
62609                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
62610                                     ,p_ae_header_id            =>  NULL
62611                                        );
62612 
62613         IF (C_LEVEL_ERROR>= g_log_level) THEN
62614                  trace
62615                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62616                       ,p_level    => C_LEVEL_ERROR
62617                       ,p_module   => l_log_module);
62618         END IF;
62619       END IF;
62620    END IF;
62621    --
62622    --
62623    ------------------------------------------------------------------------------------------------
62624    -- 4219869 Business Flow
62625    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
62626    -- Prior Entry.  Currently, the following code is always generated.
62627    ------------------------------------------------------------------------------------------------
62628    XLA_AE_LINES_PKG.ValidateCurrentLine;
62629 
62630    ------------------------------------------------------------------------------------
62631    -- 4219869 Business Flow
62632    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
62633    ------------------------------------------------------------------------------------
62634    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62635 
62636    ----------------------------------------------------------------------------------
62637    -- 4219869 Business Flow
62638    -- Update journal entry status -- Need to generate this within IF <condition>
62639    ----------------------------------------------------------------------------------
62640    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62641          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
62642          ,p_balance_type_code => l_balance_type_code
62643          );
62644 
62645    -------------------------------------------------------------------------------------------
62646    -- 4262811 - Generate the Accrual Reversal lines
62647    -------------------------------------------------------------------------------------------
62648    BEGIN
62649       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
62650                               (g_array_event(p_event_id).array_value_num('header_index'));
62651       IF l_acc_rev_flag IS NULL THEN
62652          l_acc_rev_flag := 'N';
62653       END IF;
62654    EXCEPTION
62655       WHEN OTHERS THEN
62656          l_acc_rev_flag := 'N';
62657    END;
62658    --
62659    IF (l_acc_rev_flag = 'Y') THEN
62660 
62661        -- 4645092  ------------------------------------------------------------------------------
62662        -- To allow MPA report to determine if it should generate report process
62663        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
62664        ------------------------------------------------------------------------------------------
62665 
62666        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
62667        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
62668    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
62669    -- call ADRs
62670    -- Bug 4922099
62671    --
62672    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
62673         (NVL(l_actual_upg_option, 'N') = 'O') OR
62674         (NVL(l_enc_upg_option, 'N') = 'O')
62675       )
62676    THEN
62677    NULL;
62678    --
62679    --
62680    
62681   l_ccid := AcctDerRule_4(
62682            p_application_id           => p_application_id
62683          , p_ae_header_id             => l_ae_header_id 
62684 , p_source_4 => p_source_4
62685          , x_transaction_coa_id       => l_adr_transaction_coa_id
62686          , x_accounting_coa_id        => l_adr_accounting_coa_id
62687          , x_value_type_code          => l_adr_value_type_code
62688          , p_side                     => 'NA'
62689    );
62690 
62691    xla_ae_lines_pkg.set_ccid(
62692     p_code_combination_id          => l_ccid
62693   , p_value_type_code              => l_adr_value_type_code
62694   , p_transaction_coa_id           => l_adr_transaction_coa_id
62695   , p_accounting_coa_id            => l_adr_accounting_coa_id
62696   , p_adr_code                     => 'CST_DEFAULT'
62697   , p_adr_type_code                => 'S'
62698   , p_component_type               => l_component_type
62699   , p_component_code               => l_component_code
62700   , p_component_type_code          => l_component_type_code
62701   , p_component_appl_id            => l_component_appl_id
62702   , p_amb_context_code             => l_amb_context_code
62703   , p_side                         => 'NA'
62704   );
62705 
62706 
62707    --
62708    --
62709    END IF;
62710 
62711        --
62712        -- Update the line information that should be overwritten
62713        --
62714        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
62715                                          p_header_num   => 1);
62716        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
62717 
62718        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
62719 
62720        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
62721           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
62722        END IF;
62723 
62724       --
62725       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
62726       --
62727       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
62728           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
62729       ELSE
62730           ---------------------------------------------------------------------------------------------------
62731           -- 4262811a Switch Sign
62732           ---------------------------------------------------------------------------------------------------
62733           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
62734           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62735                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62736           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62737                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62738           -- 5132302
62739           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
62740                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62741 
62742       END IF;
62743 
62744       -- 4955764
62745       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62746       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
62747 
62748 
62749       XLA_AE_LINES_PKG.ValidateCurrentLine;
62750       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62751 
62752       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62753                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
62754                ,p_balance_type_code => l_balance_type_code);
62755 
62756    END IF;
62757 
62758    -----------------------------------------------------------------------------------------
62759    -- 4262811 Multiperiod Accounting
62760    -----------------------------------------------------------------------------------------
62761      -- No MPA option is assigned.
62762 
62763 
62764 END IF;
62765 END IF;
62766 --
62767 
62768 --
62769 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62770    trace
62771       (p_msg      => 'END of AcctLineType_115'
62772       ,p_level    => C_LEVEL_PROCEDURE
62773       ,p_module   => l_log_module);
62774 END IF;
62775 --
62776 EXCEPTION
62777   WHEN xla_exceptions_pkg.application_exception THEN
62778       RAISE;
62779   WHEN OTHERS THEN
62780        xla_exceptions_pkg.raise_message
62781            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_115');
62782 END AcctLineType_115;
62783 --
62784 
62785 ---------------------------------------
62786 --
62787 -- PRIVATE FUNCTION
62788 --         AcctLineType_116
62789 --
62790 ---------------------------------------
62791 PROCEDURE AcctLineType_116 (
62792   p_application_id        IN NUMBER
62793  ,p_event_id              IN NUMBER
62794  ,p_calculate_acctd_flag  IN VARCHAR2
62795  ,p_calculate_g_l_flag    IN VARCHAR2
62796  ,p_actual_flag           IN OUT VARCHAR2
62797  ,p_balance_type_code     OUT VARCHAR2
62798  ,p_gain_or_loss_ref      OUT VARCHAR2
62799  
62800 --Cost Management Default Account
62801  , p_source_4            IN NUMBER
62802 --DISTRIBUTION_IDENTIFIER
62803  , p_source_11            IN NUMBER
62804 --Distribution Type
62805  , p_source_12            IN VARCHAR2
62806  , p_source_12_meaning    IN VARCHAR2
62807 --Entered Currency Code
62808  , p_source_15            IN VARCHAR2
62809 --Entered Amount
62810  , p_source_18            IN NUMBER
62811 --Currency Conversion Date
62812  , p_source_19            IN DATE
62813 --Currency Conversion Rate
62814  , p_source_20            IN NUMBER
62815 --Currency Conversion Type
62816  , p_source_21            IN VARCHAR2
62817 --Accounted Amount
62818  , p_source_22            IN NUMBER
62819 --Accounting Line Type
62820  , p_source_24            IN NUMBER
62821 )
62822 IS
62823 
62824 l_component_type              VARCHAR2(80);
62825 l_component_code              VARCHAR2(30);
62826 l_component_type_code         VARCHAR2(1);
62827 l_component_appl_id           INTEGER;
62828 l_amb_context_code            VARCHAR2(30);
62829 l_entity_code                 VARCHAR2(30);
62830 l_event_class_code            VARCHAR2(30);
62831 l_ae_header_id                NUMBER;
62832 l_event_type_code             VARCHAR2(30);
62833 l_line_definition_code        VARCHAR2(30);
62834 l_line_definition_owner_code  VARCHAR2(1);
62835 --
62836 -- adr variables
62837 l_segment                     VARCHAR2(30);
62838 l_ccid                        NUMBER;
62839 l_adr_transaction_coa_id      NUMBER;
62840 l_adr_accounting_coa_id       NUMBER;
62841 l_adr_flexfield_segment_code  VARCHAR2(30);
62842 l_adr_flex_value_set_id       NUMBER;
62843 l_adr_value_type_code         VARCHAR2(30);
62844 l_adr_value_combination_id    NUMBER;
62845 l_adr_value_segment_code      VARCHAR2(30);
62846 
62847 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
62848 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
62849 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
62850 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
62851 
62852 -- 4262811 Variables ------------------------------------------------------------------------------------------
62853 l_entered_amt_idx             NUMBER;
62854 l_accted_amt_idx              NUMBER;
62855 l_acc_rev_flag                VARCHAR2(1);
62856 l_accrual_line_num            NUMBER;
62857 l_tmp_amt                     NUMBER;
62858 l_acc_rev_natural_side_code   VARCHAR2(1);
62859 
62860 l_num_entries                 NUMBER;
62861 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
62862 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
62863 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
62864 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
62865 l_recog_line_1                NUMBER;
62866 l_recog_line_2                NUMBER;
62867 
62868 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
62869 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
62870 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
62871 
62872 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
62873 
62874 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
62875 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
62876 
62877 ---------------------------------------------------------------------------------------------------------------
62878 
62879 
62880 --
62881 -- bulk performance
62882 --
62883 l_balance_type_code           VARCHAR2(1);
62884 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
62885 l_log_module                  VARCHAR2(240);
62886 
62887 --
62888 -- Upgrade strategy
62889 --
62890 l_actual_upg_option           VARCHAR2(1);
62891 l_enc_upg_option           VARCHAR2(1);
62892 
62893 --
62894 BEGIN
62895 --
62896 IF g_log_enabled THEN
62897       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_116';
62898 END IF;
62899 --
62900 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62901 
62902       trace
62903          (p_msg      => 'BEGIN of AcctLineType_116'
62904          ,p_level    => C_LEVEL_PROCEDURE
62905          ,p_module   => l_log_module);
62906 
62907 END IF;
62908 --
62909 l_component_type             := 'AMB_JLT';
62910 l_component_code             := 'INTERORG_TRANSFER_CREDIT';
62911 l_component_type_code        := 'S';
62912 l_component_appl_id          :=  707;
62913 l_amb_context_code           := 'DEFAULT';
62914 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
62915 l_event_class_code           := 'DIR_INTERORG_SHIP';
62916 l_event_type_code            := 'DIR_INTERORG_SHIP_ALL';
62917 l_line_definition_owner_code := 'S';
62918 l_line_definition_code       := 'DIRECT_INTERORG_SHIP';
62919 --
62920 l_balance_type_code          := 'A';
62921 l_segment                     := NULL;
62922 l_ccid                        := NULL;
62923 l_adr_transaction_coa_id      := NULL;
62924 l_adr_accounting_coa_id       := NULL;
62925 l_adr_flexfield_segment_code  := NULL;
62926 l_adr_flex_value_set_id       := NULL;
62927 l_adr_value_type_code         := NULL;
62928 l_adr_value_combination_id    := NULL;
62929 l_adr_value_segment_code      := NULL;
62930 
62931 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
62932 l_bflow_class_code           := '';    -- 4219869 Business Flow
62933 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
62934 l_budgetary_control_flag     := 'N';
62935 
62936 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
62937 l_bflow_applied_to_amt       := NULL; -- 5132302
62938 l_entered_amt_idx            := NULL;          -- 4262811
62939 l_accted_amt_idx             := NULL;          -- 4262811
62940 l_acc_rev_flag               := NULL;          -- 4262811
62941 l_accrual_line_num           := NULL;          -- 4262811
62942 l_tmp_amt                    := NULL;          -- 4262811
62943 --
62944  
62945 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
62946     l_balance_type_code <> 'B' THEN
62947 IF NVL(p_source_24,9E125) =  11
62948  THEN 
62949 
62950    --
62951    XLA_AE_LINES_PKG.SetNewLine;
62952 
62953    p_balance_type_code          := l_balance_type_code;
62954    -- set the flag so later we will know whether the gain loss line needs to be created
62955    
62956    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
62957      p_actual_flag :='A';
62958    END IF;
62959 
62960    --
62961    -- bulk performance
62962    --
62963    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
62964                                       p_header_num   => 0); -- 4262811
62965    --
62966    -- set accounting line options
62967    --
62968    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
62969            p_natural_side_code          => 'D'
62970          , p_gain_or_loss_flag          => 'N'
62971          , p_gl_transfer_mode_code      => 'S'
62972          , p_acct_entry_type_code       => 'A'
62973          , p_switch_side_flag           => 'Y'
62974          , p_merge_duplicate_code       => 'N'
62975          );
62976    --
62977    l_acc_rev_natural_side_code := 'C';  -- 4262811
62978    -- 
62979    --
62980    -- set accounting line type info
62981    --
62982    xla_ae_lines_pkg.SetAcctLineType
62983       (p_component_type             => l_component_type
62984       ,p_event_type_code            => l_event_type_code
62985       ,p_line_definition_owner_code => l_line_definition_owner_code
62986       ,p_line_definition_code       => l_line_definition_code
62987       ,p_accounting_line_code       => l_component_code
62988       ,p_accounting_line_type_code  => l_component_type_code
62989       ,p_accounting_line_appl_id    => l_component_appl_id
62990       ,p_amb_context_code           => l_amb_context_code
62991       ,p_entity_code                => l_entity_code
62992       ,p_event_class_code           => l_event_class_code);
62993    --
62994    -- set accounting class
62995    --
62996    xla_ae_lines_pkg.SetAcctClass(
62997            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
62998          , p_ae_header_id           => l_ae_header_id
62999          );
63000 
63001    --
63002    -- set rounding class
63003    --
63004    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
63005                       'INTERORG_TRANSFER_CREDIT';
63006 
63007    --
63008    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
63009    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
63010    --
63011    -- bulk performance
63012    --
63013    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
63014 
63015    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
63016       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
63017 
63018    -- 4955764
63019    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63020       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
63021 
63022    -- 4458381 Public Sector Enh
63023    
63024    --
63025    -- set accounting attributes for the line type
63026    --
63027    l_entered_amt_idx := 3;
63028    l_accted_amt_idx  := 8;
63029    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
63030    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
63031    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
63032    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
63033    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
63034    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
63035    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
63036    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
63037    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
63038    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
63039    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
63040    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
63041    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
63042    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
63043    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
63044    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
63045    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
63046 
63047    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
63048    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
63049 
63050    ---------------------------------------------------------------------------------------------------------------
63051    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
63052    ---------------------------------------------------------------------------------------------------------------
63053    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
63054 
63055    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63056    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63057 
63058    IF xla_accounting_cache_pkg.GetValueChar
63059          (p_source_code         => 'LEDGER_CATEGORY_CODE'
63060          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
63061    AND l_bflow_method_code = 'PRIOR_ENTRY'
63062 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
63063    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
63064          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
63065        )
63066    THEN
63067          xla_ae_lines_pkg.BflowUpgEntry
63068            (p_business_method_code    => l_bflow_method_code
63069            ,p_business_class_code     => l_bflow_class_code
63070            ,p_balance_type            => l_balance_type_code);
63071    ELSE
63072       NULL;
63073 -- No business flow processing for business flow method of NONE.
63074    END IF;
63075 
63076    --
63077    -- call analytical criteria
63078    --
63079    
63080    --
63081    -- call description
63082    --
63083    -- No description or it is inherited.
63084    --
63085    -- call ADRs
63086    -- Bug 4922099
63087    --
63088    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63089         (NVL(l_actual_upg_option, 'N') = 'O') OR
63090         (NVL(l_enc_upg_option, 'N') = 'O')
63091       )
63092    THEN
63093    NULL;
63094    --
63095    --
63096    
63097   l_ccid := AcctDerRule_4(
63098            p_application_id           => p_application_id
63099          , p_ae_header_id             => l_ae_header_id 
63100 , p_source_4 => p_source_4
63101          , x_transaction_coa_id       => l_adr_transaction_coa_id
63102          , x_accounting_coa_id        => l_adr_accounting_coa_id
63103          , x_value_type_code          => l_adr_value_type_code
63104          , p_side                     => 'NA'
63105    );
63106 
63107    xla_ae_lines_pkg.set_ccid(
63108     p_code_combination_id          => l_ccid
63109   , p_value_type_code              => l_adr_value_type_code
63110   , p_transaction_coa_id           => l_adr_transaction_coa_id
63111   , p_accounting_coa_id            => l_adr_accounting_coa_id
63112   , p_adr_code                     => 'CST_DEFAULT'
63113   , p_adr_type_code                => 'S'
63114   , p_component_type               => l_component_type
63115   , p_component_code               => l_component_code
63116   , p_component_type_code          => l_component_type_code
63117   , p_component_appl_id            => l_component_appl_id
63118   , p_amb_context_code             => l_amb_context_code
63119   , p_side                         => 'NA'
63120   );
63121 
63122 
63123    --
63124    --
63125    END IF;
63126    --
63127    -- Bug 4922099
63128    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
63129           (NVL(l_enc_upg_option, 'N') = 'O')
63130         ) AND
63131         (l_bflow_method_code = 'PRIOR_ENTRY')
63132       )
63133    THEN
63134       IF
63135       --
63136       1 = 2
63137       --
63138       THEN
63139       xla_accounting_err_pkg.build_message
63140                                     (p_appli_s_name            => 'XLA'
63141                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63142                                     ,p_token_1                 => 'LINE_NUMBER'
63143                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
63144                                     ,p_token_2                 => 'LINE_TYPE_NAME'
63145                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
63146                                                                              l_component_type
63147                                                                             ,l_component_code
63148                                                                             ,l_component_type_code
63149                                                                             ,l_component_appl_id
63150                                                                             ,l_amb_context_code
63151                                                                             ,l_entity_code
63152                                                                             ,l_event_class_code
63153                                                                            )
63154                                     ,p_token_3                 => 'OWNER'
63155                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
63156                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
63157                                                                           ,p_lookup_code    => l_component_type_code
63158                                                                          )
63159                                     ,p_token_4                 => 'PRODUCT_NAME'
63160                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
63161                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
63162                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
63163                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
63164                                     ,p_ae_header_id            =>  NULL
63165                                        );
63166 
63167         IF (C_LEVEL_ERROR>= g_log_level) THEN
63168                  trace
63169                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63170                       ,p_level    => C_LEVEL_ERROR
63171                       ,p_module   => l_log_module);
63172         END IF;
63173       END IF;
63174    END IF;
63175    --
63176    --
63177    ------------------------------------------------------------------------------------------------
63178    -- 4219869 Business Flow
63179    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
63180    -- Prior Entry.  Currently, the following code is always generated.
63181    ------------------------------------------------------------------------------------------------
63182    XLA_AE_LINES_PKG.ValidateCurrentLine;
63183 
63184    ------------------------------------------------------------------------------------
63185    -- 4219869 Business Flow
63186    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
63187    ------------------------------------------------------------------------------------
63188    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63189 
63190    ----------------------------------------------------------------------------------
63191    -- 4219869 Business Flow
63192    -- Update journal entry status -- Need to generate this within IF <condition>
63193    ----------------------------------------------------------------------------------
63194    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63195          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
63196          ,p_balance_type_code => l_balance_type_code
63197          );
63198 
63199    -------------------------------------------------------------------------------------------
63200    -- 4262811 - Generate the Accrual Reversal lines
63201    -------------------------------------------------------------------------------------------
63202    BEGIN
63203       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
63204                               (g_array_event(p_event_id).array_value_num('header_index'));
63205       IF l_acc_rev_flag IS NULL THEN
63206          l_acc_rev_flag := 'N';
63207       END IF;
63208    EXCEPTION
63209       WHEN OTHERS THEN
63210          l_acc_rev_flag := 'N';
63211    END;
63212    --
63213    IF (l_acc_rev_flag = 'Y') THEN
63214 
63215        -- 4645092  ------------------------------------------------------------------------------
63216        -- To allow MPA report to determine if it should generate report process
63217        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
63218        ------------------------------------------------------------------------------------------
63219 
63220        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
63221        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
63222    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
63223    -- call ADRs
63224    -- Bug 4922099
63225    --
63226    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63227         (NVL(l_actual_upg_option, 'N') = 'O') OR
63228         (NVL(l_enc_upg_option, 'N') = 'O')
63229       )
63230    THEN
63231    NULL;
63232    --
63233    --
63234    
63235   l_ccid := AcctDerRule_4(
63236            p_application_id           => p_application_id
63237          , p_ae_header_id             => l_ae_header_id 
63238 , p_source_4 => p_source_4
63239          , x_transaction_coa_id       => l_adr_transaction_coa_id
63240          , x_accounting_coa_id        => l_adr_accounting_coa_id
63241          , x_value_type_code          => l_adr_value_type_code
63242          , p_side                     => 'NA'
63243    );
63244 
63245    xla_ae_lines_pkg.set_ccid(
63246     p_code_combination_id          => l_ccid
63247   , p_value_type_code              => l_adr_value_type_code
63248   , p_transaction_coa_id           => l_adr_transaction_coa_id
63249   , p_accounting_coa_id            => l_adr_accounting_coa_id
63250   , p_adr_code                     => 'CST_DEFAULT'
63251   , p_adr_type_code                => 'S'
63252   , p_component_type               => l_component_type
63253   , p_component_code               => l_component_code
63254   , p_component_type_code          => l_component_type_code
63255   , p_component_appl_id            => l_component_appl_id
63256   , p_amb_context_code             => l_amb_context_code
63257   , p_side                         => 'NA'
63258   );
63259 
63260 
63261    --
63262    --
63263    END IF;
63264 
63265        --
63266        -- Update the line information that should be overwritten
63267        --
63268        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
63269                                          p_header_num   => 1);
63270        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
63271 
63272        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
63273 
63274        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
63275           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
63276        END IF;
63277 
63278       --
63279       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
63280       --
63281       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
63282           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
63283       ELSE
63284           ---------------------------------------------------------------------------------------------------
63285           -- 4262811a Switch Sign
63286           ---------------------------------------------------------------------------------------------------
63287           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
63288           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63289                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63290           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63291                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63292           -- 5132302
63293           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
63294                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63295 
63296       END IF;
63297 
63298       -- 4955764
63299       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63300       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
63301 
63302 
63303       XLA_AE_LINES_PKG.ValidateCurrentLine;
63304       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63305 
63306       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63307                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
63308                ,p_balance_type_code => l_balance_type_code);
63309 
63310    END IF;
63311 
63312    -----------------------------------------------------------------------------------------
63313    -- 4262811 Multiperiod Accounting
63314    -----------------------------------------------------------------------------------------
63315      -- No MPA option is assigned.
63316 
63317 
63318 END IF;
63319 END IF;
63320 --
63321 
63322 --
63323 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63324    trace
63325       (p_msg      => 'END of AcctLineType_116'
63326       ,p_level    => C_LEVEL_PROCEDURE
63327       ,p_module   => l_log_module);
63328 END IF;
63329 --
63330 EXCEPTION
63331   WHEN xla_exceptions_pkg.application_exception THEN
63332       RAISE;
63333   WHEN OTHERS THEN
63334        xla_exceptions_pkg.raise_message
63335            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_116');
63336 END AcctLineType_116;
63337 --
63338 
63339 ---------------------------------------
63340 --
63341 -- PRIVATE FUNCTION
63342 --         AcctLineType_117
63343 --
63344 ---------------------------------------
63345 PROCEDURE AcctLineType_117 (
63346   p_application_id        IN NUMBER
63347  ,p_event_id              IN NUMBER
63348  ,p_calculate_acctd_flag  IN VARCHAR2
63349  ,p_calculate_g_l_flag    IN VARCHAR2
63350  ,p_actual_flag           IN OUT VARCHAR2
63351  ,p_balance_type_code     OUT VARCHAR2
63352  ,p_gain_or_loss_ref      OUT VARCHAR2
63353  
63354 --Cost Management Default Account
63355  , p_source_4            IN NUMBER
63356 --DISTRIBUTION_IDENTIFIER
63357  , p_source_11            IN NUMBER
63358 --Distribution Type
63359  , p_source_12            IN VARCHAR2
63360  , p_source_12_meaning    IN VARCHAR2
63361 --Entered Currency Code
63362  , p_source_15            IN VARCHAR2
63363 --Entered Amount
63364  , p_source_18            IN NUMBER
63365 --Currency Conversion Date
63366  , p_source_19            IN DATE
63367 --Currency Conversion Rate
63368  , p_source_20            IN NUMBER
63369 --Currency Conversion Type
63370  , p_source_21            IN VARCHAR2
63371 --Accounted Amount
63372  , p_source_22            IN NUMBER
63373 --Accounting Line Type
63374  , p_source_24            IN NUMBER
63375 )
63376 IS
63377 
63378 l_component_type              VARCHAR2(80);
63379 l_component_code              VARCHAR2(30);
63380 l_component_type_code         VARCHAR2(1);
63381 l_component_appl_id           INTEGER;
63382 l_amb_context_code            VARCHAR2(30);
63383 l_entity_code                 VARCHAR2(30);
63384 l_event_class_code            VARCHAR2(30);
63385 l_ae_header_id                NUMBER;
63386 l_event_type_code             VARCHAR2(30);
63387 l_line_definition_code        VARCHAR2(30);
63388 l_line_definition_owner_code  VARCHAR2(1);
63389 --
63390 -- adr variables
63391 l_segment                     VARCHAR2(30);
63392 l_ccid                        NUMBER;
63393 l_adr_transaction_coa_id      NUMBER;
63394 l_adr_accounting_coa_id       NUMBER;
63395 l_adr_flexfield_segment_code  VARCHAR2(30);
63396 l_adr_flex_value_set_id       NUMBER;
63397 l_adr_value_type_code         VARCHAR2(30);
63398 l_adr_value_combination_id    NUMBER;
63399 l_adr_value_segment_code      VARCHAR2(30);
63400 
63401 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
63402 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
63403 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
63404 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
63405 
63406 -- 4262811 Variables ------------------------------------------------------------------------------------------
63407 l_entered_amt_idx             NUMBER;
63408 l_accted_amt_idx              NUMBER;
63409 l_acc_rev_flag                VARCHAR2(1);
63410 l_accrual_line_num            NUMBER;
63411 l_tmp_amt                     NUMBER;
63412 l_acc_rev_natural_side_code   VARCHAR2(1);
63413 
63414 l_num_entries                 NUMBER;
63415 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
63416 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
63417 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
63418 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
63419 l_recog_line_1                NUMBER;
63420 l_recog_line_2                NUMBER;
63421 
63422 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
63423 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
63424 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
63425 
63426 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
63427 
63428 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
63429 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
63430 
63431 ---------------------------------------------------------------------------------------------------------------
63432 
63433 
63434 --
63435 -- bulk performance
63436 --
63437 l_balance_type_code           VARCHAR2(1);
63438 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
63439 l_log_module                  VARCHAR2(240);
63440 
63441 --
63442 -- Upgrade strategy
63443 --
63444 l_actual_upg_option           VARCHAR2(1);
63445 l_enc_upg_option           VARCHAR2(1);
63446 
63447 --
63448 BEGIN
63449 --
63450 IF g_log_enabled THEN
63451       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_117';
63452 END IF;
63453 --
63454 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63455 
63456       trace
63457          (p_msg      => 'BEGIN of AcctLineType_117'
63458          ,p_level    => C_LEVEL_PROCEDURE
63459          ,p_module   => l_log_module);
63460 
63461 END IF;
63462 --
63463 l_component_type             := 'AMB_JLT';
63464 l_component_code             := 'INTERORG_TRANSFER_CREDIT';
63465 l_component_type_code        := 'S';
63466 l_component_appl_id          :=  707;
63467 l_amb_context_code           := 'DEFAULT';
63468 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
63469 l_event_class_code           := 'USER_DEFINE';
63470 l_event_type_code            := 'UDIR_INTERORG_SHIP_TP';
63471 l_line_definition_owner_code := 'S';
63472 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_TP';
63473 --
63474 l_balance_type_code          := 'A';
63475 l_segment                     := NULL;
63476 l_ccid                        := NULL;
63477 l_adr_transaction_coa_id      := NULL;
63478 l_adr_accounting_coa_id       := NULL;
63479 l_adr_flexfield_segment_code  := NULL;
63480 l_adr_flex_value_set_id       := NULL;
63481 l_adr_value_type_code         := NULL;
63482 l_adr_value_combination_id    := NULL;
63483 l_adr_value_segment_code      := NULL;
63484 
63485 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
63486 l_bflow_class_code           := '';    -- 4219869 Business Flow
63487 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
63488 l_budgetary_control_flag     := 'N';
63489 
63490 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
63491 l_bflow_applied_to_amt       := NULL; -- 5132302
63492 l_entered_amt_idx            := NULL;          -- 4262811
63493 l_accted_amt_idx             := NULL;          -- 4262811
63494 l_acc_rev_flag               := NULL;          -- 4262811
63495 l_accrual_line_num           := NULL;          -- 4262811
63496 l_tmp_amt                    := NULL;          -- 4262811
63497 --
63498  
63499 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
63500     l_balance_type_code <> 'B' THEN
63501 IF NVL(p_source_24,9E125) =  11
63502  THEN 
63503 
63504    --
63505    XLA_AE_LINES_PKG.SetNewLine;
63506 
63507    p_balance_type_code          := l_balance_type_code;
63508    -- set the flag so later we will know whether the gain loss line needs to be created
63509    
63510    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
63511      p_actual_flag :='A';
63512    END IF;
63513 
63514    --
63515    -- bulk performance
63516    --
63517    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
63518                                       p_header_num   => 0); -- 4262811
63519    --
63520    -- set accounting line options
63521    --
63522    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
63523            p_natural_side_code          => 'D'
63524          , p_gain_or_loss_flag          => 'N'
63525          , p_gl_transfer_mode_code      => 'S'
63526          , p_acct_entry_type_code       => 'A'
63527          , p_switch_side_flag           => 'Y'
63528          , p_merge_duplicate_code       => 'N'
63529          );
63530    --
63531    l_acc_rev_natural_side_code := 'C';  -- 4262811
63532    -- 
63533    --
63534    -- set accounting line type info
63535    --
63536    xla_ae_lines_pkg.SetAcctLineType
63537       (p_component_type             => l_component_type
63538       ,p_event_type_code            => l_event_type_code
63539       ,p_line_definition_owner_code => l_line_definition_owner_code
63540       ,p_line_definition_code       => l_line_definition_code
63541       ,p_accounting_line_code       => l_component_code
63542       ,p_accounting_line_type_code  => l_component_type_code
63543       ,p_accounting_line_appl_id    => l_component_appl_id
63544       ,p_amb_context_code           => l_amb_context_code
63545       ,p_entity_code                => l_entity_code
63546       ,p_event_class_code           => l_event_class_code);
63547    --
63548    -- set accounting class
63549    --
63550    xla_ae_lines_pkg.SetAcctClass(
63551            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
63552          , p_ae_header_id           => l_ae_header_id
63553          );
63554 
63555    --
63556    -- set rounding class
63557    --
63558    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
63559                       'INTERORG_TRANSFER_CREDIT';
63560 
63561    --
63562    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
63563    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
63564    --
63565    -- bulk performance
63566    --
63567    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
63568 
63569    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
63570       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
63571 
63572    -- 4955764
63573    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63574       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
63575 
63576    -- 4458381 Public Sector Enh
63577    
63578    --
63579    -- set accounting attributes for the line type
63580    --
63581    l_entered_amt_idx := 3;
63582    l_accted_amt_idx  := 8;
63583    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
63584    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
63585    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
63586    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
63587    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
63588    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
63589    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
63590    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
63591    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
63592    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
63593    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
63594    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
63595    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
63596    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
63597    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
63598    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
63599    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
63600 
63601    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
63602    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
63603 
63604    ---------------------------------------------------------------------------------------------------------------
63605    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
63606    ---------------------------------------------------------------------------------------------------------------
63607    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
63608 
63609    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63610    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63611 
63612    IF xla_accounting_cache_pkg.GetValueChar
63613          (p_source_code         => 'LEDGER_CATEGORY_CODE'
63614          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
63615    AND l_bflow_method_code = 'PRIOR_ENTRY'
63616 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
63617    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
63618          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
63619        )
63620    THEN
63621          xla_ae_lines_pkg.BflowUpgEntry
63622            (p_business_method_code    => l_bflow_method_code
63623            ,p_business_class_code     => l_bflow_class_code
63624            ,p_balance_type            => l_balance_type_code);
63625    ELSE
63626       NULL;
63627 -- No business flow processing for business flow method of NONE.
63628    END IF;
63629 
63630    --
63631    -- call analytical criteria
63632    --
63633    
63634    --
63635    -- call description
63636    --
63637    -- No description or it is inherited.
63638    --
63639    -- call ADRs
63640    -- Bug 4922099
63641    --
63642    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63643         (NVL(l_actual_upg_option, 'N') = 'O') OR
63644         (NVL(l_enc_upg_option, 'N') = 'O')
63645       )
63646    THEN
63647    NULL;
63648    --
63649    --
63650    
63651   l_ccid := AcctDerRule_4(
63652            p_application_id           => p_application_id
63653          , p_ae_header_id             => l_ae_header_id 
63654 , p_source_4 => p_source_4
63655          , x_transaction_coa_id       => l_adr_transaction_coa_id
63656          , x_accounting_coa_id        => l_adr_accounting_coa_id
63657          , x_value_type_code          => l_adr_value_type_code
63658          , p_side                     => 'NA'
63659    );
63660 
63661    xla_ae_lines_pkg.set_ccid(
63662     p_code_combination_id          => l_ccid
63663   , p_value_type_code              => l_adr_value_type_code
63664   , p_transaction_coa_id           => l_adr_transaction_coa_id
63665   , p_accounting_coa_id            => l_adr_accounting_coa_id
63666   , p_adr_code                     => 'CST_DEFAULT'
63667   , p_adr_type_code                => 'S'
63668   , p_component_type               => l_component_type
63669   , p_component_code               => l_component_code
63670   , p_component_type_code          => l_component_type_code
63671   , p_component_appl_id            => l_component_appl_id
63672   , p_amb_context_code             => l_amb_context_code
63673   , p_side                         => 'NA'
63674   );
63675 
63676 
63677    --
63678    --
63679    END IF;
63680    --
63681    -- Bug 4922099
63682    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
63683           (NVL(l_enc_upg_option, 'N') = 'O')
63684         ) AND
63685         (l_bflow_method_code = 'PRIOR_ENTRY')
63686       )
63687    THEN
63688       IF
63689       --
63690       1 = 2
63691       --
63692       THEN
63693       xla_accounting_err_pkg.build_message
63694                                     (p_appli_s_name            => 'XLA'
63695                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63696                                     ,p_token_1                 => 'LINE_NUMBER'
63697                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
63698                                     ,p_token_2                 => 'LINE_TYPE_NAME'
63699                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
63700                                                                              l_component_type
63701                                                                             ,l_component_code
63702                                                                             ,l_component_type_code
63703                                                                             ,l_component_appl_id
63704                                                                             ,l_amb_context_code
63705                                                                             ,l_entity_code
63706                                                                             ,l_event_class_code
63707                                                                            )
63708                                     ,p_token_3                 => 'OWNER'
63709                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
63710                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
63711                                                                           ,p_lookup_code    => l_component_type_code
63712                                                                          )
63713                                     ,p_token_4                 => 'PRODUCT_NAME'
63714                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
63715                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
63716                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
63717                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
63718                                     ,p_ae_header_id            =>  NULL
63719                                        );
63720 
63721         IF (C_LEVEL_ERROR>= g_log_level) THEN
63722                  trace
63723                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63724                       ,p_level    => C_LEVEL_ERROR
63725                       ,p_module   => l_log_module);
63726         END IF;
63727       END IF;
63728    END IF;
63729    --
63730    --
63731    ------------------------------------------------------------------------------------------------
63732    -- 4219869 Business Flow
63733    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
63734    -- Prior Entry.  Currently, the following code is always generated.
63735    ------------------------------------------------------------------------------------------------
63736    XLA_AE_LINES_PKG.ValidateCurrentLine;
63737 
63738    ------------------------------------------------------------------------------------
63739    -- 4219869 Business Flow
63740    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
63741    ------------------------------------------------------------------------------------
63742    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63743 
63744    ----------------------------------------------------------------------------------
63745    -- 4219869 Business Flow
63746    -- Update journal entry status -- Need to generate this within IF <condition>
63747    ----------------------------------------------------------------------------------
63748    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63749          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
63750          ,p_balance_type_code => l_balance_type_code
63751          );
63752 
63753    -------------------------------------------------------------------------------------------
63754    -- 4262811 - Generate the Accrual Reversal lines
63755    -------------------------------------------------------------------------------------------
63756    BEGIN
63757       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
63758                               (g_array_event(p_event_id).array_value_num('header_index'));
63759       IF l_acc_rev_flag IS NULL THEN
63760          l_acc_rev_flag := 'N';
63761       END IF;
63762    EXCEPTION
63763       WHEN OTHERS THEN
63764          l_acc_rev_flag := 'N';
63765    END;
63766    --
63767    IF (l_acc_rev_flag = 'Y') THEN
63768 
63769        -- 4645092  ------------------------------------------------------------------------------
63770        -- To allow MPA report to determine if it should generate report process
63771        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
63772        ------------------------------------------------------------------------------------------
63773 
63774        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
63775        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
63776    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
63777    -- call ADRs
63778    -- Bug 4922099
63779    --
63780    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63781         (NVL(l_actual_upg_option, 'N') = 'O') OR
63782         (NVL(l_enc_upg_option, 'N') = 'O')
63783       )
63784    THEN
63785    NULL;
63786    --
63787    --
63788    
63789   l_ccid := AcctDerRule_4(
63790            p_application_id           => p_application_id
63791          , p_ae_header_id             => l_ae_header_id 
63792 , p_source_4 => p_source_4
63793          , x_transaction_coa_id       => l_adr_transaction_coa_id
63794          , x_accounting_coa_id        => l_adr_accounting_coa_id
63795          , x_value_type_code          => l_adr_value_type_code
63796          , p_side                     => 'NA'
63797    );
63798 
63799    xla_ae_lines_pkg.set_ccid(
63800     p_code_combination_id          => l_ccid
63801   , p_value_type_code              => l_adr_value_type_code
63802   , p_transaction_coa_id           => l_adr_transaction_coa_id
63803   , p_accounting_coa_id            => l_adr_accounting_coa_id
63804   , p_adr_code                     => 'CST_DEFAULT'
63805   , p_adr_type_code                => 'S'
63806   , p_component_type               => l_component_type
63807   , p_component_code               => l_component_code
63808   , p_component_type_code          => l_component_type_code
63809   , p_component_appl_id            => l_component_appl_id
63810   , p_amb_context_code             => l_amb_context_code
63811   , p_side                         => 'NA'
63812   );
63813 
63814 
63815    --
63816    --
63817    END IF;
63818 
63819        --
63820        -- Update the line information that should be overwritten
63821        --
63822        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
63823                                          p_header_num   => 1);
63824        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
63825 
63826        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
63827 
63828        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
63829           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
63830        END IF;
63831 
63832       --
63833       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
63834       --
63835       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
63836           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
63837       ELSE
63838           ---------------------------------------------------------------------------------------------------
63839           -- 4262811a Switch Sign
63840           ---------------------------------------------------------------------------------------------------
63841           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
63842           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63843                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63844           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63845                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63846           -- 5132302
63847           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
63848                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63849 
63850       END IF;
63851 
63852       -- 4955764
63853       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63854       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
63855 
63856 
63857       XLA_AE_LINES_PKG.ValidateCurrentLine;
63858       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63859 
63860       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63861                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
63862                ,p_balance_type_code => l_balance_type_code);
63863 
63864    END IF;
63865 
63866    -----------------------------------------------------------------------------------------
63867    -- 4262811 Multiperiod Accounting
63868    -----------------------------------------------------------------------------------------
63869      -- No MPA option is assigned.
63870 
63871 
63872 END IF;
63873 END IF;
63874 --
63875 
63876 --
63877 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63878    trace
63879       (p_msg      => 'END of AcctLineType_117'
63880       ,p_level    => C_LEVEL_PROCEDURE
63881       ,p_module   => l_log_module);
63882 END IF;
63883 --
63884 EXCEPTION
63885   WHEN xla_exceptions_pkg.application_exception THEN
63886       RAISE;
63887   WHEN OTHERS THEN
63888        xla_exceptions_pkg.raise_message
63889            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_117');
63890 END AcctLineType_117;
63891 --
63892 
63893 ---------------------------------------
63894 --
63895 -- PRIVATE FUNCTION
63896 --         AcctLineType_118
63897 --
63898 ---------------------------------------
63899 PROCEDURE AcctLineType_118 (
63900   p_application_id        IN NUMBER
63901  ,p_event_id              IN NUMBER
63902  ,p_calculate_acctd_flag  IN VARCHAR2
63903  ,p_calculate_g_l_flag    IN VARCHAR2
63904  ,p_actual_flag           IN OUT VARCHAR2
63905  ,p_balance_type_code     OUT VARCHAR2
63906  ,p_gain_or_loss_ref      OUT VARCHAR2
63907  
63908 --Cost Management Default Account
63909  , p_source_4            IN NUMBER
63910 --DISTRIBUTION_IDENTIFIER
63911  , p_source_11            IN NUMBER
63912 --Distribution Type
63913  , p_source_12            IN VARCHAR2
63914  , p_source_12_meaning    IN VARCHAR2
63915 --Entered Currency Code
63916  , p_source_15            IN VARCHAR2
63917 --Entered Amount
63918  , p_source_18            IN NUMBER
63919 --Currency Conversion Date
63920  , p_source_19            IN DATE
63921 --Currency Conversion Rate
63922  , p_source_20            IN NUMBER
63923 --Currency Conversion Type
63924  , p_source_21            IN VARCHAR2
63925 --Accounted Amount
63926  , p_source_22            IN NUMBER
63927 --Accounting Line Type
63928  , p_source_24            IN NUMBER
63929 )
63930 IS
63931 
63932 l_component_type              VARCHAR2(80);
63933 l_component_code              VARCHAR2(30);
63934 l_component_type_code         VARCHAR2(1);
63935 l_component_appl_id           INTEGER;
63936 l_amb_context_code            VARCHAR2(30);
63937 l_entity_code                 VARCHAR2(30);
63938 l_event_class_code            VARCHAR2(30);
63939 l_ae_header_id                NUMBER;
63940 l_event_type_code             VARCHAR2(30);
63941 l_line_definition_code        VARCHAR2(30);
63942 l_line_definition_owner_code  VARCHAR2(1);
63943 --
63944 -- adr variables
63945 l_segment                     VARCHAR2(30);
63946 l_ccid                        NUMBER;
63947 l_adr_transaction_coa_id      NUMBER;
63948 l_adr_accounting_coa_id       NUMBER;
63949 l_adr_flexfield_segment_code  VARCHAR2(30);
63950 l_adr_flex_value_set_id       NUMBER;
63951 l_adr_value_type_code         VARCHAR2(30);
63952 l_adr_value_combination_id    NUMBER;
63953 l_adr_value_segment_code      VARCHAR2(30);
63954 
63955 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
63956 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
63957 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
63958 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
63959 
63960 -- 4262811 Variables ------------------------------------------------------------------------------------------
63961 l_entered_amt_idx             NUMBER;
63962 l_accted_amt_idx              NUMBER;
63963 l_acc_rev_flag                VARCHAR2(1);
63964 l_accrual_line_num            NUMBER;
63965 l_tmp_amt                     NUMBER;
63966 l_acc_rev_natural_side_code   VARCHAR2(1);
63967 
63968 l_num_entries                 NUMBER;
63969 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
63970 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
63971 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
63972 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
63973 l_recog_line_1                NUMBER;
63974 l_recog_line_2                NUMBER;
63975 
63976 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
63977 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
63978 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
63979 
63980 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
63981 
63982 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
63983 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
63984 
63985 ---------------------------------------------------------------------------------------------------------------
63986 
63987 
63988 --
63989 -- bulk performance
63990 --
63991 l_balance_type_code           VARCHAR2(1);
63992 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
63993 l_log_module                  VARCHAR2(240);
63994 
63995 --
63996 -- Upgrade strategy
63997 --
63998 l_actual_upg_option           VARCHAR2(1);
63999 l_enc_upg_option           VARCHAR2(1);
64000 
64001 --
64002 BEGIN
64003 --
64004 IF g_log_enabled THEN
64005       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_118';
64006 END IF;
64007 --
64008 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64009 
64010       trace
64011          (p_msg      => 'BEGIN of AcctLineType_118'
64012          ,p_level    => C_LEVEL_PROCEDURE
64013          ,p_module   => l_log_module);
64014 
64015 END IF;
64016 --
64017 l_component_type             := 'AMB_JLT';
64018 l_component_code             := 'INTERORG_TRANSFER_CREDIT';
64019 l_component_type_code        := 'S';
64020 l_component_appl_id          :=  707;
64021 l_amb_context_code           := 'DEFAULT';
64022 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
64023 l_event_class_code           := 'USER_DEFINE';
64024 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
64025 l_line_definition_owner_code := 'S';
64026 l_line_definition_code       := 'USER_FOB_SHIP_SENDER_SHIP_NOTP';
64027 --
64028 l_balance_type_code          := 'A';
64029 l_segment                     := NULL;
64030 l_ccid                        := NULL;
64031 l_adr_transaction_coa_id      := NULL;
64032 l_adr_accounting_coa_id       := NULL;
64033 l_adr_flexfield_segment_code  := NULL;
64034 l_adr_flex_value_set_id       := NULL;
64035 l_adr_value_type_code         := NULL;
64036 l_adr_value_combination_id    := NULL;
64037 l_adr_value_segment_code      := NULL;
64038 
64039 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
64040 l_bflow_class_code           := '';    -- 4219869 Business Flow
64041 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
64042 l_budgetary_control_flag     := 'N';
64043 
64044 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
64045 l_bflow_applied_to_amt       := NULL; -- 5132302
64046 l_entered_amt_idx            := NULL;          -- 4262811
64047 l_accted_amt_idx             := NULL;          -- 4262811
64048 l_acc_rev_flag               := NULL;          -- 4262811
64049 l_accrual_line_num           := NULL;          -- 4262811
64050 l_tmp_amt                    := NULL;          -- 4262811
64051 --
64052  
64053 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
64054     l_balance_type_code <> 'B' THEN
64055 IF NVL(p_source_24,9E125) =  11
64056  THEN 
64057 
64058    --
64059    XLA_AE_LINES_PKG.SetNewLine;
64060 
64061    p_balance_type_code          := l_balance_type_code;
64062    -- set the flag so later we will know whether the gain loss line needs to be created
64063    
64064    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
64065      p_actual_flag :='A';
64066    END IF;
64067 
64068    --
64069    -- bulk performance
64070    --
64071    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
64072                                       p_header_num   => 0); -- 4262811
64073    --
64074    -- set accounting line options
64075    --
64076    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
64077            p_natural_side_code          => 'D'
64078          , p_gain_or_loss_flag          => 'N'
64079          , p_gl_transfer_mode_code      => 'S'
64080          , p_acct_entry_type_code       => 'A'
64081          , p_switch_side_flag           => 'Y'
64082          , p_merge_duplicate_code       => 'N'
64083          );
64084    --
64085    l_acc_rev_natural_side_code := 'C';  -- 4262811
64086    -- 
64087    --
64088    -- set accounting line type info
64089    --
64090    xla_ae_lines_pkg.SetAcctLineType
64091       (p_component_type             => l_component_type
64092       ,p_event_type_code            => l_event_type_code
64093       ,p_line_definition_owner_code => l_line_definition_owner_code
64094       ,p_line_definition_code       => l_line_definition_code
64095       ,p_accounting_line_code       => l_component_code
64096       ,p_accounting_line_type_code  => l_component_type_code
64097       ,p_accounting_line_appl_id    => l_component_appl_id
64098       ,p_amb_context_code           => l_amb_context_code
64099       ,p_entity_code                => l_entity_code
64100       ,p_event_class_code           => l_event_class_code);
64101    --
64102    -- set accounting class
64103    --
64104    xla_ae_lines_pkg.SetAcctClass(
64105            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
64106          , p_ae_header_id           => l_ae_header_id
64107          );
64108 
64109    --
64110    -- set rounding class
64111    --
64112    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
64113                       'INTERORG_TRANSFER_CREDIT';
64114 
64115    --
64116    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
64117    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
64118    --
64119    -- bulk performance
64120    --
64121    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
64122 
64123    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
64124       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
64125 
64126    -- 4955764
64127    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
64128       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
64129 
64130    -- 4458381 Public Sector Enh
64131    
64132    --
64133    -- set accounting attributes for the line type
64134    --
64135    l_entered_amt_idx := 3;
64136    l_accted_amt_idx  := 8;
64137    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
64138    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
64139    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
64140    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
64141    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
64142    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
64143    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
64144    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
64145    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
64146    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
64147    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
64148    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
64149    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
64150    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
64151    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
64152    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
64153    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
64154 
64155    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
64156    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
64157 
64158    ---------------------------------------------------------------------------------------------------------------
64159    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
64160    ---------------------------------------------------------------------------------------------------------------
64161    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
64162 
64163    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64164    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64165 
64166    IF xla_accounting_cache_pkg.GetValueChar
64167          (p_source_code         => 'LEDGER_CATEGORY_CODE'
64168          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
64169    AND l_bflow_method_code = 'PRIOR_ENTRY'
64170 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
64171    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
64172          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
64173        )
64174    THEN
64175          xla_ae_lines_pkg.BflowUpgEntry
64176            (p_business_method_code    => l_bflow_method_code
64177            ,p_business_class_code     => l_bflow_class_code
64178            ,p_balance_type            => l_balance_type_code);
64179    ELSE
64180       NULL;
64181 -- No business flow processing for business flow method of NONE.
64182    END IF;
64183 
64184    --
64185    -- call analytical criteria
64186    --
64187    
64188    --
64189    -- call description
64190    --
64191    -- No description or it is inherited.
64192    --
64193    -- call ADRs
64194    -- Bug 4922099
64195    --
64196    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64197         (NVL(l_actual_upg_option, 'N') = 'O') OR
64198         (NVL(l_enc_upg_option, 'N') = 'O')
64199       )
64200    THEN
64201    NULL;
64202    --
64203    --
64204    
64205   l_ccid := AcctDerRule_4(
64206            p_application_id           => p_application_id
64207          , p_ae_header_id             => l_ae_header_id 
64208 , p_source_4 => p_source_4
64209          , x_transaction_coa_id       => l_adr_transaction_coa_id
64210          , x_accounting_coa_id        => l_adr_accounting_coa_id
64211          , x_value_type_code          => l_adr_value_type_code
64212          , p_side                     => 'NA'
64213    );
64214 
64215    xla_ae_lines_pkg.set_ccid(
64216     p_code_combination_id          => l_ccid
64217   , p_value_type_code              => l_adr_value_type_code
64218   , p_transaction_coa_id           => l_adr_transaction_coa_id
64219   , p_accounting_coa_id            => l_adr_accounting_coa_id
64220   , p_adr_code                     => 'CST_DEFAULT'
64221   , p_adr_type_code                => 'S'
64222   , p_component_type               => l_component_type
64223   , p_component_code               => l_component_code
64224   , p_component_type_code          => l_component_type_code
64225   , p_component_appl_id            => l_component_appl_id
64226   , p_amb_context_code             => l_amb_context_code
64227   , p_side                         => 'NA'
64228   );
64229 
64230 
64231    --
64232    --
64233    END IF;
64234    --
64235    -- Bug 4922099
64236    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
64237           (NVL(l_enc_upg_option, 'N') = 'O')
64238         ) AND
64239         (l_bflow_method_code = 'PRIOR_ENTRY')
64240       )
64241    THEN
64242       IF
64243       --
64244       1 = 2
64245       --
64246       THEN
64247       xla_accounting_err_pkg.build_message
64248                                     (p_appli_s_name            => 'XLA'
64249                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64250                                     ,p_token_1                 => 'LINE_NUMBER'
64251                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
64252                                     ,p_token_2                 => 'LINE_TYPE_NAME'
64253                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
64254                                                                              l_component_type
64255                                                                             ,l_component_code
64256                                                                             ,l_component_type_code
64257                                                                             ,l_component_appl_id
64258                                                                             ,l_amb_context_code
64259                                                                             ,l_entity_code
64260                                                                             ,l_event_class_code
64261                                                                            )
64262                                     ,p_token_3                 => 'OWNER'
64263                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
64264                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
64265                                                                           ,p_lookup_code    => l_component_type_code
64266                                                                          )
64267                                     ,p_token_4                 => 'PRODUCT_NAME'
64268                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
64269                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
64270                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
64271                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
64272                                     ,p_ae_header_id            =>  NULL
64273                                        );
64274 
64275         IF (C_LEVEL_ERROR>= g_log_level) THEN
64276                  trace
64277                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64278                       ,p_level    => C_LEVEL_ERROR
64279                       ,p_module   => l_log_module);
64280         END IF;
64281       END IF;
64282    END IF;
64283    --
64284    --
64285    ------------------------------------------------------------------------------------------------
64286    -- 4219869 Business Flow
64287    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
64288    -- Prior Entry.  Currently, the following code is always generated.
64289    ------------------------------------------------------------------------------------------------
64290    XLA_AE_LINES_PKG.ValidateCurrentLine;
64291 
64292    ------------------------------------------------------------------------------------
64293    -- 4219869 Business Flow
64294    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
64295    ------------------------------------------------------------------------------------
64296    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
64297 
64298    ----------------------------------------------------------------------------------
64299    -- 4219869 Business Flow
64300    -- Update journal entry status -- Need to generate this within IF <condition>
64301    ----------------------------------------------------------------------------------
64302    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
64303          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
64304          ,p_balance_type_code => l_balance_type_code
64305          );
64306 
64307    -------------------------------------------------------------------------------------------
64308    -- 4262811 - Generate the Accrual Reversal lines
64309    -------------------------------------------------------------------------------------------
64310    BEGIN
64311       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
64312                               (g_array_event(p_event_id).array_value_num('header_index'));
64313       IF l_acc_rev_flag IS NULL THEN
64314          l_acc_rev_flag := 'N';
64315       END IF;
64316    EXCEPTION
64317       WHEN OTHERS THEN
64318          l_acc_rev_flag := 'N';
64319    END;
64320    --
64321    IF (l_acc_rev_flag = 'Y') THEN
64322 
64323        -- 4645092  ------------------------------------------------------------------------------
64324        -- To allow MPA report to determine if it should generate report process
64325        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
64326        ------------------------------------------------------------------------------------------
64327 
64328        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
64329        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
64330    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
64331    -- call ADRs
64332    -- Bug 4922099
64333    --
64334    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64335         (NVL(l_actual_upg_option, 'N') = 'O') OR
64336         (NVL(l_enc_upg_option, 'N') = 'O')
64337       )
64338    THEN
64339    NULL;
64340    --
64341    --
64342    
64343   l_ccid := AcctDerRule_4(
64344            p_application_id           => p_application_id
64345          , p_ae_header_id             => l_ae_header_id 
64346 , p_source_4 => p_source_4
64347          , x_transaction_coa_id       => l_adr_transaction_coa_id
64348          , x_accounting_coa_id        => l_adr_accounting_coa_id
64349          , x_value_type_code          => l_adr_value_type_code
64350          , p_side                     => 'NA'
64351    );
64352 
64353    xla_ae_lines_pkg.set_ccid(
64354     p_code_combination_id          => l_ccid
64355   , p_value_type_code              => l_adr_value_type_code
64356   , p_transaction_coa_id           => l_adr_transaction_coa_id
64357   , p_accounting_coa_id            => l_adr_accounting_coa_id
64358   , p_adr_code                     => 'CST_DEFAULT'
64359   , p_adr_type_code                => 'S'
64360   , p_component_type               => l_component_type
64361   , p_component_code               => l_component_code
64362   , p_component_type_code          => l_component_type_code
64363   , p_component_appl_id            => l_component_appl_id
64364   , p_amb_context_code             => l_amb_context_code
64365   , p_side                         => 'NA'
64366   );
64367 
64368 
64369    --
64370    --
64371    END IF;
64372 
64373        --
64374        -- Update the line information that should be overwritten
64375        --
64376        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
64377                                          p_header_num   => 1);
64378        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
64379 
64380        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
64381 
64382        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
64383           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
64384        END IF;
64385 
64386       --
64387       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
64388       --
64389       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
64390           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
64391       ELSE
64392           ---------------------------------------------------------------------------------------------------
64393           -- 4262811a Switch Sign
64394           ---------------------------------------------------------------------------------------------------
64395           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
64396           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
64397                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64398           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
64399                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64400           -- 5132302
64401           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
64402                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64403 
64404       END IF;
64405 
64406       -- 4955764
64407       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
64408       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
64409 
64410 
64411       XLA_AE_LINES_PKG.ValidateCurrentLine;
64412       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
64413 
64414       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
64415                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
64416                ,p_balance_type_code => l_balance_type_code);
64417 
64418    END IF;
64419 
64420    -----------------------------------------------------------------------------------------
64421    -- 4262811 Multiperiod Accounting
64422    -----------------------------------------------------------------------------------------
64423      -- No MPA option is assigned.
64424 
64425 
64426 END IF;
64427 END IF;
64428 --
64429 
64430 --
64431 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64432    trace
64433       (p_msg      => 'END of AcctLineType_118'
64434       ,p_level    => C_LEVEL_PROCEDURE
64435       ,p_module   => l_log_module);
64436 END IF;
64437 --
64438 EXCEPTION
64439   WHEN xla_exceptions_pkg.application_exception THEN
64440       RAISE;
64441   WHEN OTHERS THEN
64442        xla_exceptions_pkg.raise_message
64443            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_118');
64444 END AcctLineType_118;
64445 --
64446 
64447 ---------------------------------------
64448 --
64449 -- PRIVATE FUNCTION
64450 --         AcctLineType_119
64451 --
64452 ---------------------------------------
64453 PROCEDURE AcctLineType_119 (
64454   p_application_id        IN NUMBER
64455  ,p_event_id              IN NUMBER
64456  ,p_calculate_acctd_flag  IN VARCHAR2
64457  ,p_calculate_g_l_flag    IN VARCHAR2
64458  ,p_actual_flag           IN OUT VARCHAR2
64459  ,p_balance_type_code     OUT VARCHAR2
64460  ,p_gain_or_loss_ref      OUT VARCHAR2
64461  
64462 --Cost Management Default Account
64463  , p_source_4            IN NUMBER
64464 --Applied to Application ID
64465  , p_source_6            IN NUMBER
64466 --Applied to Distribution Link Type
64467  , p_source_7            IN VARCHAR2
64468 --Applied to Entity Code
64469  , p_source_8            IN VARCHAR2
64470 --DISTRIBUTION_IDENTIFIER
64471  , p_source_11            IN NUMBER
64472 --Distribution Type
64473  , p_source_12            IN VARCHAR2
64474  , p_source_12_meaning    IN VARCHAR2
64475 --Encumbrance Reversal Amount Entered
64476  , p_source_14            IN NUMBER
64477 --Entered Currency Code
64478  , p_source_15            IN VARCHAR2
64479 --Transaction Encumbrance Reversal Amount
64480  , p_source_16            IN NUMBER
64481 --Entered Amount
64482  , p_source_18            IN NUMBER
64483 --Currency Conversion Date
64484  , p_source_19            IN DATE
64485 --Currency Conversion Rate
64486  , p_source_20            IN NUMBER
64487 --Currency Conversion Type
64488  , p_source_21            IN VARCHAR2
64489 --Accounted Amount
64490  , p_source_22            IN NUMBER
64491 --Accounting Line Type
64492  , p_source_24            IN NUMBER
64493 --Costing Encumbrance Upgrade Option
64494  , p_source_27            IN VARCHAR2
64495 --TXN_PO_DISTRIBUTION_ID
64496  , p_source_28            IN NUMBER
64497 --TXN_PO_HEADER_ID
64498  , p_source_29            IN NUMBER
64499 --Requisition Budget Account
64500  , p_source_30            IN NUMBER
64501 --Requisition Encumbrance Type Identifier
64502  , p_source_31            IN NUMBER
64503 )
64504 IS
64505 
64506 l_component_type              VARCHAR2(80);
64507 l_component_code              VARCHAR2(30);
64508 l_component_type_code         VARCHAR2(1);
64509 l_component_appl_id           INTEGER;
64510 l_amb_context_code            VARCHAR2(30);
64511 l_entity_code                 VARCHAR2(30);
64512 l_event_class_code            VARCHAR2(30);
64513 l_ae_header_id                NUMBER;
64514 l_event_type_code             VARCHAR2(30);
64515 l_line_definition_code        VARCHAR2(30);
64516 l_line_definition_owner_code  VARCHAR2(1);
64517 --
64518 -- adr variables
64519 l_segment                     VARCHAR2(30);
64520 l_ccid                        NUMBER;
64521 l_adr_transaction_coa_id      NUMBER;
64522 l_adr_accounting_coa_id       NUMBER;
64523 l_adr_flexfield_segment_code  VARCHAR2(30);
64524 l_adr_flex_value_set_id       NUMBER;
64525 l_adr_value_type_code         VARCHAR2(30);
64526 l_adr_value_combination_id    NUMBER;
64527 l_adr_value_segment_code      VARCHAR2(30);
64528 
64529 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
64530 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
64531 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
64532 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
64533 
64534 -- 4262811 Variables ------------------------------------------------------------------------------------------
64535 l_entered_amt_idx             NUMBER;
64536 l_accted_amt_idx              NUMBER;
64537 l_acc_rev_flag                VARCHAR2(1);
64538 l_accrual_line_num            NUMBER;
64539 l_tmp_amt                     NUMBER;
64540 l_acc_rev_natural_side_code   VARCHAR2(1);
64541 
64542 l_num_entries                 NUMBER;
64543 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
64544 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
64545 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
64546 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
64547 l_recog_line_1                NUMBER;
64548 l_recog_line_2                NUMBER;
64549 
64550 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
64551 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
64552 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
64553 
64554 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
64555 
64556 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
64557 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
64558 
64559 ---------------------------------------------------------------------------------------------------------------
64560 
64561 
64562 --
64563 -- bulk performance
64564 --
64565 l_balance_type_code           VARCHAR2(1);
64566 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
64567 l_log_module                  VARCHAR2(240);
64568 
64569 --
64570 -- Upgrade strategy
64571 --
64572 l_actual_upg_option           VARCHAR2(1);
64573 l_enc_upg_option           VARCHAR2(1);
64574 
64575 --
64576 BEGIN
64577 --
64578 IF g_log_enabled THEN
64579       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_119';
64580 END IF;
64581 --
64582 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64583 
64584       trace
64585          (p_msg      => 'BEGIN of AcctLineType_119'
64586          ,p_level    => C_LEVEL_PROCEDURE
64587          ,p_module   => l_log_module);
64588 
64589 END IF;
64590 --
64591 l_component_type             := 'AMB_JLT';
64592 l_component_code             := 'INTERORG_TRANSFER_CREDIT';
64593 l_component_type_code        := 'S';
64594 l_component_appl_id          :=  707;
64595 l_amb_context_code           := 'DEFAULT';
64596 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
64597 l_event_class_code           := 'DIR_INTERORG_RCPT';
64598 l_event_type_code            := 'DIR_INTERORG_RCPT_ALL';
64599 l_line_definition_owner_code := 'S';
64600 l_line_definition_code       := 'DIRECT_INTERORG_RCPT';
64601 --
64602 l_balance_type_code          := 'A';
64603 l_segment                     := NULL;
64604 l_ccid                        := NULL;
64605 l_adr_transaction_coa_id      := NULL;
64606 l_adr_accounting_coa_id       := NULL;
64607 l_adr_flexfield_segment_code  := NULL;
64608 l_adr_flex_value_set_id       := NULL;
64609 l_adr_value_type_code         := NULL;
64610 l_adr_value_combination_id    := NULL;
64611 l_adr_value_segment_code      := NULL;
64612 
64613 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
64614 l_bflow_class_code           := '';    -- 4219869 Business Flow
64615 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
64616 l_budgetary_control_flag     := 'N';
64617 
64618 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
64619 l_bflow_applied_to_amt       := NULL; -- 5132302
64620 l_entered_amt_idx            := NULL;          -- 4262811
64621 l_accted_amt_idx             := NULL;          -- 4262811
64622 l_acc_rev_flag               := NULL;          -- 4262811
64623 l_accrual_line_num           := NULL;          -- 4262811
64624 l_tmp_amt                    := NULL;          -- 4262811
64625 --
64626  
64627 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
64628     l_balance_type_code <> 'B' THEN
64629 IF NVL(p_source_24,9E125) =  11
64630  THEN 
64631 
64632    --
64633    XLA_AE_LINES_PKG.SetNewLine;
64634 
64635    p_balance_type_code          := l_balance_type_code;
64636    -- set the flag so later we will know whether the gain loss line needs to be created
64637    
64638    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
64639      p_actual_flag :='A';
64640    END IF;
64641 
64642    --
64643    -- bulk performance
64644    --
64645    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
64646                                       p_header_num   => 0); -- 4262811
64647    --
64648    -- set accounting line options
64649    --
64650    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
64651            p_natural_side_code          => 'D'
64652          , p_gain_or_loss_flag          => 'N'
64653          , p_gl_transfer_mode_code      => 'S'
64654          , p_acct_entry_type_code       => 'A'
64655          , p_switch_side_flag           => 'Y'
64656          , p_merge_duplicate_code       => 'N'
64657          );
64658    --
64659    l_acc_rev_natural_side_code := 'C';  -- 4262811
64660    -- 
64661    --
64662    -- set accounting line type info
64663    --
64664    xla_ae_lines_pkg.SetAcctLineType
64665       (p_component_type             => l_component_type
64666       ,p_event_type_code            => l_event_type_code
64667       ,p_line_definition_owner_code => l_line_definition_owner_code
64668       ,p_line_definition_code       => l_line_definition_code
64669       ,p_accounting_line_code       => l_component_code
64670       ,p_accounting_line_type_code  => l_component_type_code
64671       ,p_accounting_line_appl_id    => l_component_appl_id
64672       ,p_amb_context_code           => l_amb_context_code
64673       ,p_entity_code                => l_entity_code
64674       ,p_event_class_code           => l_event_class_code);
64675    --
64676    -- set accounting class
64677    --
64678    xla_ae_lines_pkg.SetAcctClass(
64679            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
64680          , p_ae_header_id           => l_ae_header_id
64681          );
64682 
64683    --
64684    -- set rounding class
64685    --
64686    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
64687                       'INTERORG_TRANSFER_CREDIT';
64688 
64689    --
64690    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
64691    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
64692    --
64693    -- bulk performance
64694    --
64695    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
64696 
64697    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
64698       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
64699 
64700    -- 4955764
64701    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
64702       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
64703 
64704    -- 4458381 Public Sector Enh
64705    
64706    --
64707    -- set accounting attributes for the line type
64708    --
64709    l_entered_amt_idx := 17;
64710    l_accted_amt_idx  := 22;
64711    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
64712    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
64713    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
64714    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
64715    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
64716    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
64717    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
64718    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
64719    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
64720    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
64721    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
64722    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
64723    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
64724    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
64725    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
64726    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
64727    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
64728    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
64729    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
64730    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
64731    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
64732    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
64733    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
64734    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
64735    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
64736    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
64737    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
64738    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
64739    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
64740    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
64741    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
64742    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
64743    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
64744    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
64745    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
64746    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
64747    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
64748    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
64749    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
64750    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
64751    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
64752    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
64753    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
64754    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
64755    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
64756    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
64757    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
64758    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
64759    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
64760 
64761    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
64762    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
64763 
64764    ---------------------------------------------------------------------------------------------------------------
64765    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
64766    ---------------------------------------------------------------------------------------------------------------
64767    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
64768 
64769    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64770    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64771 
64772    IF xla_accounting_cache_pkg.GetValueChar
64773          (p_source_code         => 'LEDGER_CATEGORY_CODE'
64774          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
64775    AND l_bflow_method_code = 'PRIOR_ENTRY'
64776 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
64777    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
64778          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
64779        )
64780    THEN
64781          xla_ae_lines_pkg.BflowUpgEntry
64782            (p_business_method_code    => l_bflow_method_code
64783            ,p_business_class_code     => l_bflow_class_code
64784            ,p_balance_type            => l_balance_type_code);
64785    ELSE
64786       NULL;
64787 -- No business flow processing for business flow method of NONE.
64788    END IF;
64789 
64790    --
64791    -- call analytical criteria
64792    --
64793    
64794    --
64795    -- call description
64796    --
64797    -- No description or it is inherited.
64798    --
64799    -- call ADRs
64800    -- Bug 4922099
64801    --
64802    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64803         (NVL(l_actual_upg_option, 'N') = 'O') OR
64804         (NVL(l_enc_upg_option, 'N') = 'O')
64805       )
64806    THEN
64807    NULL;
64808    --
64809    --
64810    
64811   l_ccid := AcctDerRule_4(
64812            p_application_id           => p_application_id
64813          , p_ae_header_id             => l_ae_header_id 
64814 , p_source_4 => p_source_4
64815          , x_transaction_coa_id       => l_adr_transaction_coa_id
64816          , x_accounting_coa_id        => l_adr_accounting_coa_id
64817          , x_value_type_code          => l_adr_value_type_code
64818          , p_side                     => 'NA'
64819    );
64820 
64821    xla_ae_lines_pkg.set_ccid(
64822     p_code_combination_id          => l_ccid
64823   , p_value_type_code              => l_adr_value_type_code
64824   , p_transaction_coa_id           => l_adr_transaction_coa_id
64825   , p_accounting_coa_id            => l_adr_accounting_coa_id
64826   , p_adr_code                     => 'CST_DEFAULT'
64827   , p_adr_type_code                => 'S'
64828   , p_component_type               => l_component_type
64829   , p_component_code               => l_component_code
64830   , p_component_type_code          => l_component_type_code
64831   , p_component_appl_id            => l_component_appl_id
64832   , p_amb_context_code             => l_amb_context_code
64833   , p_side                         => 'NA'
64834   );
64835 
64836 
64837    --
64838    --
64839    END IF;
64840    --
64841    -- Bug 4922099
64842    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
64843           (NVL(l_enc_upg_option, 'N') = 'O')
64844         ) AND
64845         (l_bflow_method_code = 'PRIOR_ENTRY')
64846       )
64847    THEN
64848       IF
64849       --
64850       1 = 2
64851       --
64852       THEN
64853       xla_accounting_err_pkg.build_message
64854                                     (p_appli_s_name            => 'XLA'
64855                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64856                                     ,p_token_1                 => 'LINE_NUMBER'
64857                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
64858                                     ,p_token_2                 => 'LINE_TYPE_NAME'
64859                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
64860                                                                              l_component_type
64861                                                                             ,l_component_code
64862                                                                             ,l_component_type_code
64863                                                                             ,l_component_appl_id
64864                                                                             ,l_amb_context_code
64865                                                                             ,l_entity_code
64866                                                                             ,l_event_class_code
64867                                                                            )
64868                                     ,p_token_3                 => 'OWNER'
64869                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
64870                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
64871                                                                           ,p_lookup_code    => l_component_type_code
64872                                                                          )
64873                                     ,p_token_4                 => 'PRODUCT_NAME'
64874                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
64875                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
64876                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
64877                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
64878                                     ,p_ae_header_id            =>  NULL
64879                                        );
64880 
64881         IF (C_LEVEL_ERROR>= g_log_level) THEN
64882                  trace
64883                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64884                       ,p_level    => C_LEVEL_ERROR
64885                       ,p_module   => l_log_module);
64886         END IF;
64887       END IF;
64888    END IF;
64889    --
64890    --
64891    ------------------------------------------------------------------------------------------------
64892    -- 4219869 Business Flow
64893    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
64894    -- Prior Entry.  Currently, the following code is always generated.
64895    ------------------------------------------------------------------------------------------------
64896    XLA_AE_LINES_PKG.ValidateCurrentLine;
64897 
64898    ------------------------------------------------------------------------------------
64899    -- 4219869 Business Flow
64900    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
64901    ------------------------------------------------------------------------------------
64902    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
64903 
64904    ----------------------------------------------------------------------------------
64905    -- 4219869 Business Flow
64906    -- Update journal entry status -- Need to generate this within IF <condition>
64907    ----------------------------------------------------------------------------------
64908    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
64909          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
64910          ,p_balance_type_code => l_balance_type_code
64911          );
64912 
64913    -------------------------------------------------------------------------------------------
64914    -- 4262811 - Generate the Accrual Reversal lines
64915    -------------------------------------------------------------------------------------------
64916    BEGIN
64917       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
64918                               (g_array_event(p_event_id).array_value_num('header_index'));
64919       IF l_acc_rev_flag IS NULL THEN
64920          l_acc_rev_flag := 'N';
64921       END IF;
64922    EXCEPTION
64923       WHEN OTHERS THEN
64924          l_acc_rev_flag := 'N';
64925    END;
64926    --
64927    IF (l_acc_rev_flag = 'Y') THEN
64928 
64929        -- 4645092  ------------------------------------------------------------------------------
64930        -- To allow MPA report to determine if it should generate report process
64931        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
64932        ------------------------------------------------------------------------------------------
64933 
64934        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
64935        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
64936    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
64937    -- call ADRs
64938    -- Bug 4922099
64939    --
64940    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64941         (NVL(l_actual_upg_option, 'N') = 'O') OR
64942         (NVL(l_enc_upg_option, 'N') = 'O')
64943       )
64944    THEN
64945    NULL;
64946    --
64947    --
64948    
64949   l_ccid := AcctDerRule_4(
64950            p_application_id           => p_application_id
64951          , p_ae_header_id             => l_ae_header_id 
64952 , p_source_4 => p_source_4
64953          , x_transaction_coa_id       => l_adr_transaction_coa_id
64954          , x_accounting_coa_id        => l_adr_accounting_coa_id
64955          , x_value_type_code          => l_adr_value_type_code
64956          , p_side                     => 'NA'
64957    );
64958 
64959    xla_ae_lines_pkg.set_ccid(
64960     p_code_combination_id          => l_ccid
64961   , p_value_type_code              => l_adr_value_type_code
64962   , p_transaction_coa_id           => l_adr_transaction_coa_id
64963   , p_accounting_coa_id            => l_adr_accounting_coa_id
64964   , p_adr_code                     => 'CST_DEFAULT'
64965   , p_adr_type_code                => 'S'
64966   , p_component_type               => l_component_type
64967   , p_component_code               => l_component_code
64968   , p_component_type_code          => l_component_type_code
64969   , p_component_appl_id            => l_component_appl_id
64970   , p_amb_context_code             => l_amb_context_code
64971   , p_side                         => 'NA'
64972   );
64973 
64974 
64975    --
64976    --
64977    END IF;
64978 
64979        --
64980        -- Update the line information that should be overwritten
64981        --
64982        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
64983                                          p_header_num   => 1);
64984        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
64985 
64986        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
64987 
64988        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
64989           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
64990        END IF;
64991 
64992       --
64993       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
64994       --
64995       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
64996           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
64997       ELSE
64998           ---------------------------------------------------------------------------------------------------
64999           -- 4262811a Switch Sign
65000           ---------------------------------------------------------------------------------------------------
65001           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
65002           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65003                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65004           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65005                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65006           -- 5132302
65007           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
65008                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65009 
65010       END IF;
65011 
65012       -- 4955764
65013       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65014       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
65015 
65016 
65017       XLA_AE_LINES_PKG.ValidateCurrentLine;
65018       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
65019 
65020       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
65021                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
65022                ,p_balance_type_code => l_balance_type_code);
65023 
65024    END IF;
65025 
65026    -----------------------------------------------------------------------------------------
65027    -- 4262811 Multiperiod Accounting
65028    -----------------------------------------------------------------------------------------
65029      -- No MPA option is assigned.
65030 
65031 
65032 END IF;
65033 END IF;
65034 --
65035 
65036 --
65037 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65038    trace
65039       (p_msg      => 'END of AcctLineType_119'
65040       ,p_level    => C_LEVEL_PROCEDURE
65041       ,p_module   => l_log_module);
65042 END IF;
65043 --
65044 EXCEPTION
65045   WHEN xla_exceptions_pkg.application_exception THEN
65046       RAISE;
65047   WHEN OTHERS THEN
65048        xla_exceptions_pkg.raise_message
65049            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_119');
65050 END AcctLineType_119;
65051 --
65052 
65053 ---------------------------------------
65054 --
65055 -- PRIVATE FUNCTION
65056 --         AcctLineType_120
65057 --
65058 ---------------------------------------
65059 PROCEDURE AcctLineType_120 (
65060   p_application_id        IN NUMBER
65061  ,p_event_id              IN NUMBER
65062  ,p_calculate_acctd_flag  IN VARCHAR2
65063  ,p_calculate_g_l_flag    IN VARCHAR2
65064  ,p_actual_flag           IN OUT VARCHAR2
65065  ,p_balance_type_code     OUT VARCHAR2
65066  ,p_gain_or_loss_ref      OUT VARCHAR2
65067  
65068 --Cost Management Default Account
65069  , p_source_4            IN NUMBER
65070 --DISTRIBUTION_IDENTIFIER
65071  , p_source_11            IN NUMBER
65072 --Distribution Type
65073  , p_source_12            IN VARCHAR2
65074  , p_source_12_meaning    IN VARCHAR2
65075 --Entered Currency Code
65076  , p_source_15            IN VARCHAR2
65077 --Entered Amount
65078  , p_source_18            IN NUMBER
65079 --Currency Conversion Date
65080  , p_source_19            IN DATE
65081 --Currency Conversion Rate
65082  , p_source_20            IN NUMBER
65083 --Currency Conversion Type
65084  , p_source_21            IN VARCHAR2
65085 --Accounted Amount
65086  , p_source_22            IN NUMBER
65087 --Accounting Line Type
65088  , p_source_24            IN NUMBER
65089 )
65090 IS
65091 
65092 l_component_type              VARCHAR2(80);
65093 l_component_code              VARCHAR2(30);
65094 l_component_type_code         VARCHAR2(1);
65095 l_component_appl_id           INTEGER;
65096 l_amb_context_code            VARCHAR2(30);
65097 l_entity_code                 VARCHAR2(30);
65098 l_event_class_code            VARCHAR2(30);
65099 l_ae_header_id                NUMBER;
65100 l_event_type_code             VARCHAR2(30);
65101 l_line_definition_code        VARCHAR2(30);
65102 l_line_definition_owner_code  VARCHAR2(1);
65103 --
65104 -- adr variables
65105 l_segment                     VARCHAR2(30);
65106 l_ccid                        NUMBER;
65107 l_adr_transaction_coa_id      NUMBER;
65108 l_adr_accounting_coa_id       NUMBER;
65109 l_adr_flexfield_segment_code  VARCHAR2(30);
65110 l_adr_flex_value_set_id       NUMBER;
65111 l_adr_value_type_code         VARCHAR2(30);
65112 l_adr_value_combination_id    NUMBER;
65113 l_adr_value_segment_code      VARCHAR2(30);
65114 
65115 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
65116 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
65117 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
65118 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
65119 
65120 -- 4262811 Variables ------------------------------------------------------------------------------------------
65121 l_entered_amt_idx             NUMBER;
65122 l_accted_amt_idx              NUMBER;
65123 l_acc_rev_flag                VARCHAR2(1);
65124 l_accrual_line_num            NUMBER;
65125 l_tmp_amt                     NUMBER;
65126 l_acc_rev_natural_side_code   VARCHAR2(1);
65127 
65128 l_num_entries                 NUMBER;
65129 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
65130 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
65131 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
65132 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
65133 l_recog_line_1                NUMBER;
65134 l_recog_line_2                NUMBER;
65135 
65136 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
65137 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
65138 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
65139 
65140 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
65141 
65142 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
65143 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
65144 
65145 ---------------------------------------------------------------------------------------------------------------
65146 
65147 
65148 --
65149 -- bulk performance
65150 --
65151 l_balance_type_code           VARCHAR2(1);
65152 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
65153 l_log_module                  VARCHAR2(240);
65154 
65155 --
65156 -- Upgrade strategy
65157 --
65158 l_actual_upg_option           VARCHAR2(1);
65159 l_enc_upg_option           VARCHAR2(1);
65160 
65161 --
65162 BEGIN
65163 --
65164 IF g_log_enabled THEN
65165       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_120';
65166 END IF;
65167 --
65168 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65169 
65170       trace
65171          (p_msg      => 'BEGIN of AcctLineType_120'
65172          ,p_level    => C_LEVEL_PROCEDURE
65173          ,p_module   => l_log_module);
65174 
65175 END IF;
65176 --
65177 l_component_type             := 'AMB_JLT';
65178 l_component_code             := 'INTERORG_TRANSFER_CREDIT';
65179 l_component_type_code        := 'S';
65180 l_component_appl_id          :=  707;
65181 l_amb_context_code           := 'DEFAULT';
65182 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
65183 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
65184 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_ALL';
65185 l_line_definition_owner_code := 'S';
65186 l_line_definition_code       := 'FOB_RCPT_SENDER_RCPT';
65187 --
65188 l_balance_type_code          := 'A';
65189 l_segment                     := NULL;
65190 l_ccid                        := NULL;
65191 l_adr_transaction_coa_id      := NULL;
65192 l_adr_accounting_coa_id       := NULL;
65193 l_adr_flexfield_segment_code  := NULL;
65194 l_adr_flex_value_set_id       := NULL;
65195 l_adr_value_type_code         := NULL;
65196 l_adr_value_combination_id    := NULL;
65197 l_adr_value_segment_code      := NULL;
65198 
65199 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
65200 l_bflow_class_code           := '';    -- 4219869 Business Flow
65201 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
65202 l_budgetary_control_flag     := 'N';
65203 
65204 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
65205 l_bflow_applied_to_amt       := NULL; -- 5132302
65206 l_entered_amt_idx            := NULL;          -- 4262811
65207 l_accted_amt_idx             := NULL;          -- 4262811
65208 l_acc_rev_flag               := NULL;          -- 4262811
65209 l_accrual_line_num           := NULL;          -- 4262811
65210 l_tmp_amt                    := NULL;          -- 4262811
65211 --
65212  
65213 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
65214     l_balance_type_code <> 'B' THEN
65215 IF NVL(p_source_24,9E125) =  11
65216  THEN 
65217 
65218    --
65219    XLA_AE_LINES_PKG.SetNewLine;
65220 
65221    p_balance_type_code          := l_balance_type_code;
65222    -- set the flag so later we will know whether the gain loss line needs to be created
65223    
65224    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
65225      p_actual_flag :='A';
65226    END IF;
65227 
65228    --
65229    -- bulk performance
65230    --
65231    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
65232                                       p_header_num   => 0); -- 4262811
65233    --
65234    -- set accounting line options
65235    --
65236    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
65237            p_natural_side_code          => 'D'
65238          , p_gain_or_loss_flag          => 'N'
65239          , p_gl_transfer_mode_code      => 'S'
65240          , p_acct_entry_type_code       => 'A'
65241          , p_switch_side_flag           => 'Y'
65242          , p_merge_duplicate_code       => 'N'
65243          );
65244    --
65245    l_acc_rev_natural_side_code := 'C';  -- 4262811
65246    -- 
65247    --
65248    -- set accounting line type info
65249    --
65250    xla_ae_lines_pkg.SetAcctLineType
65251       (p_component_type             => l_component_type
65252       ,p_event_type_code            => l_event_type_code
65253       ,p_line_definition_owner_code => l_line_definition_owner_code
65254       ,p_line_definition_code       => l_line_definition_code
65255       ,p_accounting_line_code       => l_component_code
65256       ,p_accounting_line_type_code  => l_component_type_code
65257       ,p_accounting_line_appl_id    => l_component_appl_id
65258       ,p_amb_context_code           => l_amb_context_code
65259       ,p_entity_code                => l_entity_code
65260       ,p_event_class_code           => l_event_class_code);
65261    --
65262    -- set accounting class
65263    --
65264    xla_ae_lines_pkg.SetAcctClass(
65265            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
65266          , p_ae_header_id           => l_ae_header_id
65267          );
65268 
65269    --
65270    -- set rounding class
65271    --
65272    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
65273                       'INTERORG_TRANSFER_CREDIT';
65274 
65275    --
65276    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
65277    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
65278    --
65279    -- bulk performance
65280    --
65281    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
65282 
65283    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
65284       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
65285 
65286    -- 4955764
65287    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65288       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
65289 
65290    -- 4458381 Public Sector Enh
65291    
65292    --
65293    -- set accounting attributes for the line type
65294    --
65295    l_entered_amt_idx := 3;
65296    l_accted_amt_idx  := 8;
65297    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
65298    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
65299    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
65300    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
65301    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
65302    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
65303    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
65304    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
65305    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
65306    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
65307    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
65308    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
65309    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
65310    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
65311    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
65312    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
65313    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
65314 
65315    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
65316    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
65317 
65318    ---------------------------------------------------------------------------------------------------------------
65319    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
65320    ---------------------------------------------------------------------------------------------------------------
65321    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
65322 
65323    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65324    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65325 
65326    IF xla_accounting_cache_pkg.GetValueChar
65327          (p_source_code         => 'LEDGER_CATEGORY_CODE'
65328          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
65329    AND l_bflow_method_code = 'PRIOR_ENTRY'
65330 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
65331    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
65332          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
65333        )
65334    THEN
65335          xla_ae_lines_pkg.BflowUpgEntry
65336            (p_business_method_code    => l_bflow_method_code
65337            ,p_business_class_code     => l_bflow_class_code
65338            ,p_balance_type            => l_balance_type_code);
65339    ELSE
65340       NULL;
65341 -- No business flow processing for business flow method of NONE.
65342    END IF;
65343 
65344    --
65345    -- call analytical criteria
65346    --
65347    
65348    --
65349    -- call description
65350    --
65351    -- No description or it is inherited.
65352    --
65353    -- call ADRs
65354    -- Bug 4922099
65355    --
65356    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
65357         (NVL(l_actual_upg_option, 'N') = 'O') OR
65358         (NVL(l_enc_upg_option, 'N') = 'O')
65359       )
65360    THEN
65361    NULL;
65362    --
65363    --
65364    
65365   l_ccid := AcctDerRule_4(
65366            p_application_id           => p_application_id
65367          , p_ae_header_id             => l_ae_header_id 
65368 , p_source_4 => p_source_4
65369          , x_transaction_coa_id       => l_adr_transaction_coa_id
65370          , x_accounting_coa_id        => l_adr_accounting_coa_id
65371          , x_value_type_code          => l_adr_value_type_code
65372          , p_side                     => 'NA'
65373    );
65374 
65375    xla_ae_lines_pkg.set_ccid(
65376     p_code_combination_id          => l_ccid
65377   , p_value_type_code              => l_adr_value_type_code
65378   , p_transaction_coa_id           => l_adr_transaction_coa_id
65379   , p_accounting_coa_id            => l_adr_accounting_coa_id
65380   , p_adr_code                     => 'CST_DEFAULT'
65381   , p_adr_type_code                => 'S'
65382   , p_component_type               => l_component_type
65383   , p_component_code               => l_component_code
65384   , p_component_type_code          => l_component_type_code
65385   , p_component_appl_id            => l_component_appl_id
65386   , p_amb_context_code             => l_amb_context_code
65387   , p_side                         => 'NA'
65388   );
65389 
65390 
65391    --
65392    --
65393    END IF;
65394    --
65395    -- Bug 4922099
65396    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
65397           (NVL(l_enc_upg_option, 'N') = 'O')
65398         ) AND
65399         (l_bflow_method_code = 'PRIOR_ENTRY')
65400       )
65401    THEN
65402       IF
65403       --
65404       1 = 2
65405       --
65406       THEN
65407       xla_accounting_err_pkg.build_message
65408                                     (p_appli_s_name            => 'XLA'
65409                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65410                                     ,p_token_1                 => 'LINE_NUMBER'
65411                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
65412                                     ,p_token_2                 => 'LINE_TYPE_NAME'
65413                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
65414                                                                              l_component_type
65415                                                                             ,l_component_code
65416                                                                             ,l_component_type_code
65417                                                                             ,l_component_appl_id
65418                                                                             ,l_amb_context_code
65419                                                                             ,l_entity_code
65420                                                                             ,l_event_class_code
65421                                                                            )
65422                                     ,p_token_3                 => 'OWNER'
65423                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
65424                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
65425                                                                           ,p_lookup_code    => l_component_type_code
65426                                                                          )
65427                                     ,p_token_4                 => 'PRODUCT_NAME'
65428                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
65429                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
65430                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
65431                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
65432                                     ,p_ae_header_id            =>  NULL
65433                                        );
65434 
65435         IF (C_LEVEL_ERROR>= g_log_level) THEN
65436                  trace
65437                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65438                       ,p_level    => C_LEVEL_ERROR
65439                       ,p_module   => l_log_module);
65440         END IF;
65441       END IF;
65442    END IF;
65443    --
65444    --
65445    ------------------------------------------------------------------------------------------------
65446    -- 4219869 Business Flow
65447    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
65448    -- Prior Entry.  Currently, the following code is always generated.
65449    ------------------------------------------------------------------------------------------------
65450    XLA_AE_LINES_PKG.ValidateCurrentLine;
65451 
65452    ------------------------------------------------------------------------------------
65453    -- 4219869 Business Flow
65454    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
65455    ------------------------------------------------------------------------------------
65456    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
65457 
65458    ----------------------------------------------------------------------------------
65459    -- 4219869 Business Flow
65460    -- Update journal entry status -- Need to generate this within IF <condition>
65461    ----------------------------------------------------------------------------------
65462    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
65463          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
65464          ,p_balance_type_code => l_balance_type_code
65465          );
65466 
65467    -------------------------------------------------------------------------------------------
65468    -- 4262811 - Generate the Accrual Reversal lines
65469    -------------------------------------------------------------------------------------------
65470    BEGIN
65471       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
65472                               (g_array_event(p_event_id).array_value_num('header_index'));
65473       IF l_acc_rev_flag IS NULL THEN
65474          l_acc_rev_flag := 'N';
65475       END IF;
65476    EXCEPTION
65477       WHEN OTHERS THEN
65478          l_acc_rev_flag := 'N';
65479    END;
65480    --
65481    IF (l_acc_rev_flag = 'Y') THEN
65482 
65483        -- 4645092  ------------------------------------------------------------------------------
65484        -- To allow MPA report to determine if it should generate report process
65485        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
65486        ------------------------------------------------------------------------------------------
65487 
65488        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
65489        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
65490    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
65491    -- call ADRs
65492    -- Bug 4922099
65493    --
65494    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
65495         (NVL(l_actual_upg_option, 'N') = 'O') OR
65496         (NVL(l_enc_upg_option, 'N') = 'O')
65497       )
65498    THEN
65499    NULL;
65500    --
65501    --
65502    
65503   l_ccid := AcctDerRule_4(
65504            p_application_id           => p_application_id
65505          , p_ae_header_id             => l_ae_header_id 
65506 , p_source_4 => p_source_4
65507          , x_transaction_coa_id       => l_adr_transaction_coa_id
65508          , x_accounting_coa_id        => l_adr_accounting_coa_id
65509          , x_value_type_code          => l_adr_value_type_code
65510          , p_side                     => 'NA'
65511    );
65512 
65513    xla_ae_lines_pkg.set_ccid(
65514     p_code_combination_id          => l_ccid
65515   , p_value_type_code              => l_adr_value_type_code
65516   , p_transaction_coa_id           => l_adr_transaction_coa_id
65517   , p_accounting_coa_id            => l_adr_accounting_coa_id
65518   , p_adr_code                     => 'CST_DEFAULT'
65519   , p_adr_type_code                => 'S'
65520   , p_component_type               => l_component_type
65521   , p_component_code               => l_component_code
65522   , p_component_type_code          => l_component_type_code
65523   , p_component_appl_id            => l_component_appl_id
65524   , p_amb_context_code             => l_amb_context_code
65525   , p_side                         => 'NA'
65526   );
65527 
65528 
65529    --
65530    --
65531    END IF;
65532 
65533        --
65534        -- Update the line information that should be overwritten
65535        --
65536        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
65537                                          p_header_num   => 1);
65538        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
65539 
65540        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
65541 
65542        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
65543           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
65544        END IF;
65545 
65546       --
65547       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
65548       --
65549       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
65550           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
65551       ELSE
65552           ---------------------------------------------------------------------------------------------------
65553           -- 4262811a Switch Sign
65554           ---------------------------------------------------------------------------------------------------
65555           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
65556           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65557                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65558           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65559                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65560           -- 5132302
65561           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
65562                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65563 
65564       END IF;
65565 
65566       -- 4955764
65567       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65568       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
65569 
65570 
65571       XLA_AE_LINES_PKG.ValidateCurrentLine;
65572       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
65573 
65574       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
65575                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
65576                ,p_balance_type_code => l_balance_type_code);
65577 
65578    END IF;
65579 
65580    -----------------------------------------------------------------------------------------
65581    -- 4262811 Multiperiod Accounting
65582    -----------------------------------------------------------------------------------------
65583      -- No MPA option is assigned.
65584 
65585 
65586 END IF;
65587 END IF;
65588 --
65589 
65590 --
65591 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65592    trace
65593       (p_msg      => 'END of AcctLineType_120'
65594       ,p_level    => C_LEVEL_PROCEDURE
65595       ,p_module   => l_log_module);
65596 END IF;
65597 --
65598 EXCEPTION
65599   WHEN xla_exceptions_pkg.application_exception THEN
65600       RAISE;
65601   WHEN OTHERS THEN
65602        xla_exceptions_pkg.raise_message
65603            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_120');
65604 END AcctLineType_120;
65605 --
65606 
65607 ---------------------------------------
65608 --
65609 -- PRIVATE FUNCTION
65610 --         AcctLineType_121
65611 --
65612 ---------------------------------------
65613 PROCEDURE AcctLineType_121 (
65614   p_application_id        IN NUMBER
65615  ,p_event_id              IN NUMBER
65616  ,p_calculate_acctd_flag  IN VARCHAR2
65617  ,p_calculate_g_l_flag    IN VARCHAR2
65618  ,p_actual_flag           IN OUT VARCHAR2
65619  ,p_balance_type_code     OUT VARCHAR2
65620  ,p_gain_or_loss_ref      OUT VARCHAR2
65621  
65622 --Cost Management Default Account
65623  , p_source_4            IN NUMBER
65624 --DISTRIBUTION_IDENTIFIER
65625  , p_source_11            IN NUMBER
65626 --Distribution Type
65627  , p_source_12            IN VARCHAR2
65628  , p_source_12_meaning    IN VARCHAR2
65629 --Entered Currency Code
65630  , p_source_15            IN VARCHAR2
65631 --Entered Amount
65632  , p_source_18            IN NUMBER
65633 --Currency Conversion Date
65634  , p_source_19            IN DATE
65635 --Currency Conversion Rate
65636  , p_source_20            IN NUMBER
65637 --Currency Conversion Type
65638  , p_source_21            IN VARCHAR2
65639 --Accounted Amount
65640  , p_source_22            IN NUMBER
65641 --Accounting Line Type
65642  , p_source_24            IN NUMBER
65643 )
65644 IS
65645 
65646 l_component_type              VARCHAR2(80);
65647 l_component_code              VARCHAR2(30);
65648 l_component_type_code         VARCHAR2(1);
65649 l_component_appl_id           INTEGER;
65650 l_amb_context_code            VARCHAR2(30);
65651 l_entity_code                 VARCHAR2(30);
65652 l_event_class_code            VARCHAR2(30);
65653 l_ae_header_id                NUMBER;
65654 l_event_type_code             VARCHAR2(30);
65655 l_line_definition_code        VARCHAR2(30);
65656 l_line_definition_owner_code  VARCHAR2(1);
65657 --
65658 -- adr variables
65659 l_segment                     VARCHAR2(30);
65660 l_ccid                        NUMBER;
65661 l_adr_transaction_coa_id      NUMBER;
65662 l_adr_accounting_coa_id       NUMBER;
65663 l_adr_flexfield_segment_code  VARCHAR2(30);
65664 l_adr_flex_value_set_id       NUMBER;
65665 l_adr_value_type_code         VARCHAR2(30);
65666 l_adr_value_combination_id    NUMBER;
65667 l_adr_value_segment_code      VARCHAR2(30);
65668 
65669 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
65670 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
65671 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
65672 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
65673 
65674 -- 4262811 Variables ------------------------------------------------------------------------------------------
65675 l_entered_amt_idx             NUMBER;
65676 l_accted_amt_idx              NUMBER;
65677 l_acc_rev_flag                VARCHAR2(1);
65678 l_accrual_line_num            NUMBER;
65679 l_tmp_amt                     NUMBER;
65680 l_acc_rev_natural_side_code   VARCHAR2(1);
65681 
65682 l_num_entries                 NUMBER;
65683 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
65684 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
65685 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
65686 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
65687 l_recog_line_1                NUMBER;
65688 l_recog_line_2                NUMBER;
65689 
65690 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
65691 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
65692 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
65693 
65694 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
65695 
65696 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
65697 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
65698 
65699 ---------------------------------------------------------------------------------------------------------------
65700 
65701 
65702 --
65703 -- bulk performance
65704 --
65705 l_balance_type_code           VARCHAR2(1);
65706 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
65707 l_log_module                  VARCHAR2(240);
65708 
65709 --
65710 -- Upgrade strategy
65711 --
65712 l_actual_upg_option           VARCHAR2(1);
65713 l_enc_upg_option           VARCHAR2(1);
65714 
65715 --
65716 BEGIN
65717 --
65718 IF g_log_enabled THEN
65719       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_121';
65720 END IF;
65721 --
65722 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65723 
65724       trace
65725          (p_msg      => 'BEGIN of AcctLineType_121'
65726          ,p_level    => C_LEVEL_PROCEDURE
65727          ,p_module   => l_log_module);
65728 
65729 END IF;
65730 --
65731 l_component_type             := 'AMB_JLT';
65732 l_component_code             := 'INTRANSIT_VALUATION';
65733 l_component_type_code        := 'S';
65734 l_component_appl_id          :=  707;
65735 l_amb_context_code           := 'DEFAULT';
65736 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
65737 l_event_class_code           := 'USER_DEFINE';
65738 l_event_type_code            := 'UFOB_RCPT_SENDER_SHIP';
65739 l_line_definition_owner_code := 'S';
65740 l_line_definition_code       := 'USER_FOB_RCPT_SENDER_SHIP';
65741 --
65742 l_balance_type_code          := 'A';
65743 l_segment                     := NULL;
65744 l_ccid                        := NULL;
65745 l_adr_transaction_coa_id      := NULL;
65746 l_adr_accounting_coa_id       := NULL;
65747 l_adr_flexfield_segment_code  := NULL;
65748 l_adr_flex_value_set_id       := NULL;
65749 l_adr_value_type_code         := NULL;
65750 l_adr_value_combination_id    := NULL;
65751 l_adr_value_segment_code      := NULL;
65752 
65753 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
65754 l_bflow_class_code           := '';    -- 4219869 Business Flow
65755 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
65756 l_budgetary_control_flag     := 'N';
65757 
65758 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
65759 l_bflow_applied_to_amt       := NULL; -- 5132302
65760 l_entered_amt_idx            := NULL;          -- 4262811
65761 l_accted_amt_idx             := NULL;          -- 4262811
65762 l_acc_rev_flag               := NULL;          -- 4262811
65763 l_accrual_line_num           := NULL;          -- 4262811
65764 l_tmp_amt                    := NULL;          -- 4262811
65765 --
65766  
65767 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
65768     l_balance_type_code <> 'B' THEN
65769 IF NVL(p_source_24,9E125) =  14
65770  THEN 
65771 
65772    --
65773    XLA_AE_LINES_PKG.SetNewLine;
65774 
65775    p_balance_type_code          := l_balance_type_code;
65776    -- set the flag so later we will know whether the gain loss line needs to be created
65777    
65778    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
65779      p_actual_flag :='A';
65780    END IF;
65781 
65782    --
65783    -- bulk performance
65784    --
65785    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
65786                                       p_header_num   => 0); -- 4262811
65787    --
65788    -- set accounting line options
65789    --
65790    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
65791            p_natural_side_code          => 'D'
65792          , p_gain_or_loss_flag          => 'N'
65793          , p_gl_transfer_mode_code      => 'S'
65794          , p_acct_entry_type_code       => 'A'
65795          , p_switch_side_flag           => 'Y'
65796          , p_merge_duplicate_code       => 'N'
65797          );
65798    --
65799    l_acc_rev_natural_side_code := 'C';  -- 4262811
65800    -- 
65801    --
65802    -- set accounting line type info
65803    --
65804    xla_ae_lines_pkg.SetAcctLineType
65805       (p_component_type             => l_component_type
65806       ,p_event_type_code            => l_event_type_code
65807       ,p_line_definition_owner_code => l_line_definition_owner_code
65808       ,p_line_definition_code       => l_line_definition_code
65809       ,p_accounting_line_code       => l_component_code
65810       ,p_accounting_line_type_code  => l_component_type_code
65811       ,p_accounting_line_appl_id    => l_component_appl_id
65812       ,p_amb_context_code           => l_amb_context_code
65813       ,p_entity_code                => l_entity_code
65814       ,p_event_class_code           => l_event_class_code);
65815    --
65816    -- set accounting class
65817    --
65818    xla_ae_lines_pkg.SetAcctClass(
65819            p_accounting_class_code  => 'INTRANSIT_VALUATION'
65820          , p_ae_header_id           => l_ae_header_id
65821          );
65822 
65823    --
65824    -- set rounding class
65825    --
65826    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
65827                       'INTRANSIT_VALUATION';
65828 
65829    --
65830    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
65831    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
65832    --
65833    -- bulk performance
65834    --
65835    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
65836 
65837    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
65838       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
65839 
65840    -- 4955764
65841    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65842       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
65843 
65844    -- 4458381 Public Sector Enh
65845    
65846    --
65847    -- set accounting attributes for the line type
65848    --
65849    l_entered_amt_idx := 3;
65850    l_accted_amt_idx  := 8;
65851    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
65852    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
65853    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
65854    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
65855    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
65856    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
65857    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
65858    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
65859    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
65860    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
65861    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
65862    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
65863    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
65864    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
65865    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
65866    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
65867    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
65868 
65869    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
65870    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
65871 
65872    ---------------------------------------------------------------------------------------------------------------
65873    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
65874    ---------------------------------------------------------------------------------------------------------------
65875    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
65876 
65877    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65878    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65879 
65880    IF xla_accounting_cache_pkg.GetValueChar
65881          (p_source_code         => 'LEDGER_CATEGORY_CODE'
65882          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
65883    AND l_bflow_method_code = 'PRIOR_ENTRY'
65884 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
65885    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
65886          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
65887        )
65888    THEN
65889          xla_ae_lines_pkg.BflowUpgEntry
65890            (p_business_method_code    => l_bflow_method_code
65891            ,p_business_class_code     => l_bflow_class_code
65892            ,p_balance_type            => l_balance_type_code);
65893    ELSE
65894       NULL;
65895 -- No business flow processing for business flow method of NONE.
65896    END IF;
65897 
65898    --
65899    -- call analytical criteria
65900    --
65901    
65902    --
65903    -- call description
65904    --
65905    -- No description or it is inherited.
65906    --
65907    -- call ADRs
65908    -- Bug 4922099
65909    --
65910    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
65911         (NVL(l_actual_upg_option, 'N') = 'O') OR
65912         (NVL(l_enc_upg_option, 'N') = 'O')
65913       )
65914    THEN
65915    NULL;
65916    --
65917    --
65918    
65919   l_ccid := AcctDerRule_4(
65920            p_application_id           => p_application_id
65921          , p_ae_header_id             => l_ae_header_id 
65922 , p_source_4 => p_source_4
65923          , x_transaction_coa_id       => l_adr_transaction_coa_id
65924          , x_accounting_coa_id        => l_adr_accounting_coa_id
65925          , x_value_type_code          => l_adr_value_type_code
65926          , p_side                     => 'NA'
65927    );
65928 
65929    xla_ae_lines_pkg.set_ccid(
65930     p_code_combination_id          => l_ccid
65931   , p_value_type_code              => l_adr_value_type_code
65932   , p_transaction_coa_id           => l_adr_transaction_coa_id
65933   , p_accounting_coa_id            => l_adr_accounting_coa_id
65934   , p_adr_code                     => 'CST_DEFAULT'
65935   , p_adr_type_code                => 'S'
65936   , p_component_type               => l_component_type
65937   , p_component_code               => l_component_code
65938   , p_component_type_code          => l_component_type_code
65939   , p_component_appl_id            => l_component_appl_id
65940   , p_amb_context_code             => l_amb_context_code
65941   , p_side                         => 'NA'
65942   );
65943 
65944 
65945    --
65946    --
65947    END IF;
65948    --
65949    -- Bug 4922099
65950    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
65951           (NVL(l_enc_upg_option, 'N') = 'O')
65952         ) AND
65953         (l_bflow_method_code = 'PRIOR_ENTRY')
65954       )
65955    THEN
65956       IF
65957       --
65958       1 = 2
65959       --
65960       THEN
65961       xla_accounting_err_pkg.build_message
65962                                     (p_appli_s_name            => 'XLA'
65963                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65964                                     ,p_token_1                 => 'LINE_NUMBER'
65965                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
65966                                     ,p_token_2                 => 'LINE_TYPE_NAME'
65967                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
65968                                                                              l_component_type
65969                                                                             ,l_component_code
65970                                                                             ,l_component_type_code
65971                                                                             ,l_component_appl_id
65972                                                                             ,l_amb_context_code
65973                                                                             ,l_entity_code
65974                                                                             ,l_event_class_code
65975                                                                            )
65976                                     ,p_token_3                 => 'OWNER'
65977                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
65978                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
65979                                                                           ,p_lookup_code    => l_component_type_code
65980                                                                          )
65981                                     ,p_token_4                 => 'PRODUCT_NAME'
65982                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
65983                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
65984                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
65985                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
65986                                     ,p_ae_header_id            =>  NULL
65987                                        );
65988 
65989         IF (C_LEVEL_ERROR>= g_log_level) THEN
65990                  trace
65991                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65992                       ,p_level    => C_LEVEL_ERROR
65993                       ,p_module   => l_log_module);
65994         END IF;
65995       END IF;
65996    END IF;
65997    --
65998    --
65999    ------------------------------------------------------------------------------------------------
66000    -- 4219869 Business Flow
66001    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
66002    -- Prior Entry.  Currently, the following code is always generated.
66003    ------------------------------------------------------------------------------------------------
66004    XLA_AE_LINES_PKG.ValidateCurrentLine;
66005 
66006    ------------------------------------------------------------------------------------
66007    -- 4219869 Business Flow
66008    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
66009    ------------------------------------------------------------------------------------
66010    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
66011 
66012    ----------------------------------------------------------------------------------
66013    -- 4219869 Business Flow
66014    -- Update journal entry status -- Need to generate this within IF <condition>
66015    ----------------------------------------------------------------------------------
66016    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
66017          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
66018          ,p_balance_type_code => l_balance_type_code
66019          );
66020 
66021    -------------------------------------------------------------------------------------------
66022    -- 4262811 - Generate the Accrual Reversal lines
66023    -------------------------------------------------------------------------------------------
66024    BEGIN
66025       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
66026                               (g_array_event(p_event_id).array_value_num('header_index'));
66027       IF l_acc_rev_flag IS NULL THEN
66028          l_acc_rev_flag := 'N';
66029       END IF;
66030    EXCEPTION
66031       WHEN OTHERS THEN
66032          l_acc_rev_flag := 'N';
66033    END;
66034    --
66035    IF (l_acc_rev_flag = 'Y') THEN
66036 
66037        -- 4645092  ------------------------------------------------------------------------------
66038        -- To allow MPA report to determine if it should generate report process
66039        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
66040        ------------------------------------------------------------------------------------------
66041 
66042        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
66043        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
66044    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
66045    -- call ADRs
66046    -- Bug 4922099
66047    --
66048    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
66049         (NVL(l_actual_upg_option, 'N') = 'O') OR
66050         (NVL(l_enc_upg_option, 'N') = 'O')
66051       )
66052    THEN
66053    NULL;
66054    --
66055    --
66056    
66057   l_ccid := AcctDerRule_4(
66058            p_application_id           => p_application_id
66059          , p_ae_header_id             => l_ae_header_id 
66060 , p_source_4 => p_source_4
66061          , x_transaction_coa_id       => l_adr_transaction_coa_id
66062          , x_accounting_coa_id        => l_adr_accounting_coa_id
66063          , x_value_type_code          => l_adr_value_type_code
66064          , p_side                     => 'NA'
66065    );
66066 
66067    xla_ae_lines_pkg.set_ccid(
66068     p_code_combination_id          => l_ccid
66069   , p_value_type_code              => l_adr_value_type_code
66070   , p_transaction_coa_id           => l_adr_transaction_coa_id
66071   , p_accounting_coa_id            => l_adr_accounting_coa_id
66072   , p_adr_code                     => 'CST_DEFAULT'
66073   , p_adr_type_code                => 'S'
66074   , p_component_type               => l_component_type
66075   , p_component_code               => l_component_code
66076   , p_component_type_code          => l_component_type_code
66077   , p_component_appl_id            => l_component_appl_id
66078   , p_amb_context_code             => l_amb_context_code
66079   , p_side                         => 'NA'
66080   );
66081 
66082 
66083    --
66084    --
66085    END IF;
66086 
66087        --
66088        -- Update the line information that should be overwritten
66089        --
66090        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
66091                                          p_header_num   => 1);
66092        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
66093 
66094        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
66095 
66096        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
66097           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
66098        END IF;
66099 
66100       --
66101       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
66102       --
66103       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
66104           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
66105       ELSE
66106           ---------------------------------------------------------------------------------------------------
66107           -- 4262811a Switch Sign
66108           ---------------------------------------------------------------------------------------------------
66109           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
66110           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
66111                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66112           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
66113                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66114           -- 5132302
66115           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
66116                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66117 
66118       END IF;
66119 
66120       -- 4955764
66121       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
66122       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
66123 
66124 
66125       XLA_AE_LINES_PKG.ValidateCurrentLine;
66126       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
66127 
66128       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
66129                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
66130                ,p_balance_type_code => l_balance_type_code);
66131 
66132    END IF;
66133 
66134    -----------------------------------------------------------------------------------------
66135    -- 4262811 Multiperiod Accounting
66136    -----------------------------------------------------------------------------------------
66137      -- No MPA option is assigned.
66138 
66139 
66140 END IF;
66141 END IF;
66142 --
66143 
66144 --
66145 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66146    trace
66147       (p_msg      => 'END of AcctLineType_121'
66148       ,p_level    => C_LEVEL_PROCEDURE
66149       ,p_module   => l_log_module);
66150 END IF;
66151 --
66152 EXCEPTION
66153   WHEN xla_exceptions_pkg.application_exception THEN
66154       RAISE;
66155   WHEN OTHERS THEN
66156        xla_exceptions_pkg.raise_message
66157            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_121');
66158 END AcctLineType_121;
66159 --
66160 
66161 ---------------------------------------
66162 --
66163 -- PRIVATE FUNCTION
66164 --         AcctLineType_122
66165 --
66166 ---------------------------------------
66167 PROCEDURE AcctLineType_122 (
66168   p_application_id        IN NUMBER
66169  ,p_event_id              IN NUMBER
66170  ,p_calculate_acctd_flag  IN VARCHAR2
66171  ,p_calculate_g_l_flag    IN VARCHAR2
66172  ,p_actual_flag           IN OUT VARCHAR2
66173  ,p_balance_type_code     OUT VARCHAR2
66174  ,p_gain_or_loss_ref      OUT VARCHAR2
66175  
66176 --Cost Management Default Account
66177  , p_source_4            IN NUMBER
66178 --DISTRIBUTION_IDENTIFIER
66179  , p_source_11            IN NUMBER
66180 --Distribution Type
66181  , p_source_12            IN VARCHAR2
66182  , p_source_12_meaning    IN VARCHAR2
66183 --Entered Currency Code
66184  , p_source_15            IN VARCHAR2
66185 --Entered Amount
66186  , p_source_18            IN NUMBER
66187 --Currency Conversion Date
66188  , p_source_19            IN DATE
66189 --Currency Conversion Rate
66190  , p_source_20            IN NUMBER
66191 --Currency Conversion Type
66192  , p_source_21            IN VARCHAR2
66193 --Accounted Amount
66194  , p_source_22            IN NUMBER
66195 --Accounting Line Type
66196  , p_source_24            IN NUMBER
66197 )
66198 IS
66199 
66200 l_component_type              VARCHAR2(80);
66201 l_component_code              VARCHAR2(30);
66202 l_component_type_code         VARCHAR2(1);
66203 l_component_appl_id           INTEGER;
66204 l_amb_context_code            VARCHAR2(30);
66205 l_entity_code                 VARCHAR2(30);
66206 l_event_class_code            VARCHAR2(30);
66207 l_ae_header_id                NUMBER;
66208 l_event_type_code             VARCHAR2(30);
66209 l_line_definition_code        VARCHAR2(30);
66210 l_line_definition_owner_code  VARCHAR2(1);
66211 --
66212 -- adr variables
66213 l_segment                     VARCHAR2(30);
66214 l_ccid                        NUMBER;
66215 l_adr_transaction_coa_id      NUMBER;
66216 l_adr_accounting_coa_id       NUMBER;
66217 l_adr_flexfield_segment_code  VARCHAR2(30);
66218 l_adr_flex_value_set_id       NUMBER;
66219 l_adr_value_type_code         VARCHAR2(30);
66220 l_adr_value_combination_id    NUMBER;
66221 l_adr_value_segment_code      VARCHAR2(30);
66222 
66223 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
66224 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
66225 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
66226 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
66227 
66228 -- 4262811 Variables ------------------------------------------------------------------------------------------
66229 l_entered_amt_idx             NUMBER;
66230 l_accted_amt_idx              NUMBER;
66231 l_acc_rev_flag                VARCHAR2(1);
66232 l_accrual_line_num            NUMBER;
66233 l_tmp_amt                     NUMBER;
66234 l_acc_rev_natural_side_code   VARCHAR2(1);
66235 
66236 l_num_entries                 NUMBER;
66237 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
66238 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
66239 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
66240 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
66241 l_recog_line_1                NUMBER;
66242 l_recog_line_2                NUMBER;
66243 
66244 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
66245 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
66246 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
66247 
66248 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
66249 
66250 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
66251 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
66252 
66253 ---------------------------------------------------------------------------------------------------------------
66254 
66255 
66256 --
66257 -- bulk performance
66258 --
66259 l_balance_type_code           VARCHAR2(1);
66260 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
66261 l_log_module                  VARCHAR2(240);
66262 
66263 --
66264 -- Upgrade strategy
66265 --
66266 l_actual_upg_option           VARCHAR2(1);
66267 l_enc_upg_option           VARCHAR2(1);
66268 
66269 --
66270 BEGIN
66271 --
66272 IF g_log_enabled THEN
66273       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_122';
66274 END IF;
66275 --
66276 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66277 
66278       trace
66279          (p_msg      => 'BEGIN of AcctLineType_122'
66280          ,p_level    => C_LEVEL_PROCEDURE
66281          ,p_module   => l_log_module);
66282 
66283 END IF;
66284 --
66285 l_component_type             := 'AMB_JLT';
66286 l_component_code             := 'INTRANSIT_VALUATION';
66287 l_component_type_code        := 'S';
66288 l_component_appl_id          :=  707;
66289 l_amb_context_code           := 'DEFAULT';
66290 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
66291 l_event_class_code           := 'USER_DEFINE';
66292 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
66293 l_line_definition_owner_code := 'S';
66294 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_TP';
66295 --
66296 l_balance_type_code          := 'A';
66297 l_segment                     := NULL;
66298 l_ccid                        := NULL;
66299 l_adr_transaction_coa_id      := NULL;
66300 l_adr_accounting_coa_id       := NULL;
66301 l_adr_flexfield_segment_code  := NULL;
66302 l_adr_flex_value_set_id       := NULL;
66303 l_adr_value_type_code         := NULL;
66304 l_adr_value_combination_id    := NULL;
66305 l_adr_value_segment_code      := NULL;
66306 
66307 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
66308 l_bflow_class_code           := '';    -- 4219869 Business Flow
66309 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
66310 l_budgetary_control_flag     := 'N';
66311 
66312 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
66313 l_bflow_applied_to_amt       := NULL; -- 5132302
66314 l_entered_amt_idx            := NULL;          -- 4262811
66315 l_accted_amt_idx             := NULL;          -- 4262811
66316 l_acc_rev_flag               := NULL;          -- 4262811
66317 l_accrual_line_num           := NULL;          -- 4262811
66318 l_tmp_amt                    := NULL;          -- 4262811
66319 --
66320  
66321 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
66322     l_balance_type_code <> 'B' THEN
66323 IF NVL(p_source_24,9E125) =  14
66324  THEN 
66325 
66326    --
66327    XLA_AE_LINES_PKG.SetNewLine;
66328 
66329    p_balance_type_code          := l_balance_type_code;
66330    -- set the flag so later we will know whether the gain loss line needs to be created
66331    
66332    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
66333      p_actual_flag :='A';
66334    END IF;
66335 
66336    --
66337    -- bulk performance
66338    --
66339    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
66340                                       p_header_num   => 0); -- 4262811
66341    --
66342    -- set accounting line options
66343    --
66344    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
66345            p_natural_side_code          => 'D'
66346          , p_gain_or_loss_flag          => 'N'
66347          , p_gl_transfer_mode_code      => 'S'
66348          , p_acct_entry_type_code       => 'A'
66349          , p_switch_side_flag           => 'Y'
66350          , p_merge_duplicate_code       => 'N'
66351          );
66352    --
66353    l_acc_rev_natural_side_code := 'C';  -- 4262811
66354    -- 
66355    --
66356    -- set accounting line type info
66357    --
66358    xla_ae_lines_pkg.SetAcctLineType
66359       (p_component_type             => l_component_type
66360       ,p_event_type_code            => l_event_type_code
66361       ,p_line_definition_owner_code => l_line_definition_owner_code
66362       ,p_line_definition_code       => l_line_definition_code
66363       ,p_accounting_line_code       => l_component_code
66364       ,p_accounting_line_type_code  => l_component_type_code
66365       ,p_accounting_line_appl_id    => l_component_appl_id
66366       ,p_amb_context_code           => l_amb_context_code
66367       ,p_entity_code                => l_entity_code
66368       ,p_event_class_code           => l_event_class_code);
66369    --
66370    -- set accounting class
66371    --
66372    xla_ae_lines_pkg.SetAcctClass(
66373            p_accounting_class_code  => 'INTRANSIT_VALUATION'
66374          , p_ae_header_id           => l_ae_header_id
66375          );
66376 
66377    --
66378    -- set rounding class
66379    --
66380    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
66381                       'INTRANSIT_VALUATION';
66382 
66383    --
66384    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
66385    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
66386    --
66387    -- bulk performance
66388    --
66389    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
66390 
66391    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
66392       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
66393 
66394    -- 4955764
66395    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
66396       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
66397 
66398    -- 4458381 Public Sector Enh
66399    
66400    --
66401    -- set accounting attributes for the line type
66402    --
66403    l_entered_amt_idx := 3;
66404    l_accted_amt_idx  := 8;
66405    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
66406    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
66407    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
66408    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
66409    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
66410    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
66411    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
66412    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
66413    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
66414    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
66415    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
66416    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
66417    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
66418    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
66419    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
66420    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
66421    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
66422 
66423    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
66424    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
66425 
66426    ---------------------------------------------------------------------------------------------------------------
66427    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
66428    ---------------------------------------------------------------------------------------------------------------
66429    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
66430 
66431    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
66432    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
66433 
66434    IF xla_accounting_cache_pkg.GetValueChar
66435          (p_source_code         => 'LEDGER_CATEGORY_CODE'
66436          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
66437    AND l_bflow_method_code = 'PRIOR_ENTRY'
66438 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
66439    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
66440          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
66441        )
66442    THEN
66443          xla_ae_lines_pkg.BflowUpgEntry
66444            (p_business_method_code    => l_bflow_method_code
66445            ,p_business_class_code     => l_bflow_class_code
66446            ,p_balance_type            => l_balance_type_code);
66447    ELSE
66448       NULL;
66449 -- No business flow processing for business flow method of NONE.
66450    END IF;
66451 
66452    --
66453    -- call analytical criteria
66454    --
66455    
66456    --
66457    -- call description
66458    --
66459    -- No description or it is inherited.
66460    --
66461    -- call ADRs
66462    -- Bug 4922099
66463    --
66464    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
66465         (NVL(l_actual_upg_option, 'N') = 'O') OR
66466         (NVL(l_enc_upg_option, 'N') = 'O')
66467       )
66468    THEN
66469    NULL;
66470    --
66471    --
66472    
66473   l_ccid := AcctDerRule_4(
66474            p_application_id           => p_application_id
66475          , p_ae_header_id             => l_ae_header_id 
66476 , p_source_4 => p_source_4
66477          , x_transaction_coa_id       => l_adr_transaction_coa_id
66478          , x_accounting_coa_id        => l_adr_accounting_coa_id
66479          , x_value_type_code          => l_adr_value_type_code
66480          , p_side                     => 'NA'
66481    );
66482 
66483    xla_ae_lines_pkg.set_ccid(
66484     p_code_combination_id          => l_ccid
66485   , p_value_type_code              => l_adr_value_type_code
66486   , p_transaction_coa_id           => l_adr_transaction_coa_id
66487   , p_accounting_coa_id            => l_adr_accounting_coa_id
66488   , p_adr_code                     => 'CST_DEFAULT'
66489   , p_adr_type_code                => 'S'
66490   , p_component_type               => l_component_type
66491   , p_component_code               => l_component_code
66492   , p_component_type_code          => l_component_type_code
66493   , p_component_appl_id            => l_component_appl_id
66494   , p_amb_context_code             => l_amb_context_code
66495   , p_side                         => 'NA'
66496   );
66497 
66498 
66499    --
66500    --
66501    END IF;
66502    --
66503    -- Bug 4922099
66504    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
66505           (NVL(l_enc_upg_option, 'N') = 'O')
66506         ) AND
66507         (l_bflow_method_code = 'PRIOR_ENTRY')
66508       )
66509    THEN
66510       IF
66511       --
66512       1 = 2
66513       --
66514       THEN
66515       xla_accounting_err_pkg.build_message
66516                                     (p_appli_s_name            => 'XLA'
66517                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
66518                                     ,p_token_1                 => 'LINE_NUMBER'
66519                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
66520                                     ,p_token_2                 => 'LINE_TYPE_NAME'
66521                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
66522                                                                              l_component_type
66523                                                                             ,l_component_code
66524                                                                             ,l_component_type_code
66525                                                                             ,l_component_appl_id
66526                                                                             ,l_amb_context_code
66527                                                                             ,l_entity_code
66528                                                                             ,l_event_class_code
66529                                                                            )
66530                                     ,p_token_3                 => 'OWNER'
66531                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
66532                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
66533                                                                           ,p_lookup_code    => l_component_type_code
66534                                                                          )
66535                                     ,p_token_4                 => 'PRODUCT_NAME'
66536                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
66537                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
66538                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
66539                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
66540                                     ,p_ae_header_id            =>  NULL
66541                                        );
66542 
66543         IF (C_LEVEL_ERROR>= g_log_level) THEN
66544                  trace
66545                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
66546                       ,p_level    => C_LEVEL_ERROR
66547                       ,p_module   => l_log_module);
66548         END IF;
66549       END IF;
66550    END IF;
66551    --
66552    --
66553    ------------------------------------------------------------------------------------------------
66554    -- 4219869 Business Flow
66555    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
66556    -- Prior Entry.  Currently, the following code is always generated.
66557    ------------------------------------------------------------------------------------------------
66558    XLA_AE_LINES_PKG.ValidateCurrentLine;
66559 
66560    ------------------------------------------------------------------------------------
66561    -- 4219869 Business Flow
66562    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
66563    ------------------------------------------------------------------------------------
66564    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
66565 
66566    ----------------------------------------------------------------------------------
66567    -- 4219869 Business Flow
66568    -- Update journal entry status -- Need to generate this within IF <condition>
66569    ----------------------------------------------------------------------------------
66570    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
66571          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
66572          ,p_balance_type_code => l_balance_type_code
66573          );
66574 
66575    -------------------------------------------------------------------------------------------
66576    -- 4262811 - Generate the Accrual Reversal lines
66577    -------------------------------------------------------------------------------------------
66578    BEGIN
66579       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
66580                               (g_array_event(p_event_id).array_value_num('header_index'));
66581       IF l_acc_rev_flag IS NULL THEN
66582          l_acc_rev_flag := 'N';
66583       END IF;
66584    EXCEPTION
66585       WHEN OTHERS THEN
66586          l_acc_rev_flag := 'N';
66587    END;
66588    --
66589    IF (l_acc_rev_flag = 'Y') THEN
66590 
66591        -- 4645092  ------------------------------------------------------------------------------
66592        -- To allow MPA report to determine if it should generate report process
66593        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
66594        ------------------------------------------------------------------------------------------
66595 
66596        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
66597        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
66598    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
66599    -- call ADRs
66600    -- Bug 4922099
66601    --
66602    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
66603         (NVL(l_actual_upg_option, 'N') = 'O') OR
66604         (NVL(l_enc_upg_option, 'N') = 'O')
66605       )
66606    THEN
66607    NULL;
66608    --
66609    --
66610    
66611   l_ccid := AcctDerRule_4(
66612            p_application_id           => p_application_id
66613          , p_ae_header_id             => l_ae_header_id 
66614 , p_source_4 => p_source_4
66615          , x_transaction_coa_id       => l_adr_transaction_coa_id
66616          , x_accounting_coa_id        => l_adr_accounting_coa_id
66617          , x_value_type_code          => l_adr_value_type_code
66618          , p_side                     => 'NA'
66619    );
66620 
66621    xla_ae_lines_pkg.set_ccid(
66622     p_code_combination_id          => l_ccid
66623   , p_value_type_code              => l_adr_value_type_code
66624   , p_transaction_coa_id           => l_adr_transaction_coa_id
66625   , p_accounting_coa_id            => l_adr_accounting_coa_id
66626   , p_adr_code                     => 'CST_DEFAULT'
66627   , p_adr_type_code                => 'S'
66628   , p_component_type               => l_component_type
66629   , p_component_code               => l_component_code
66630   , p_component_type_code          => l_component_type_code
66631   , p_component_appl_id            => l_component_appl_id
66632   , p_amb_context_code             => l_amb_context_code
66633   , p_side                         => 'NA'
66634   );
66635 
66636 
66637    --
66638    --
66639    END IF;
66640 
66641        --
66642        -- Update the line information that should be overwritten
66643        --
66644        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
66645                                          p_header_num   => 1);
66646        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
66647 
66648        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
66649 
66650        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
66651           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
66652        END IF;
66653 
66654       --
66655       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
66656       --
66657       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
66658           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
66659       ELSE
66660           ---------------------------------------------------------------------------------------------------
66661           -- 4262811a Switch Sign
66662           ---------------------------------------------------------------------------------------------------
66663           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
66664           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
66665                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66666           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
66667                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66668           -- 5132302
66669           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
66670                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66671 
66672       END IF;
66673 
66674       -- 4955764
66675       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
66676       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
66677 
66678 
66679       XLA_AE_LINES_PKG.ValidateCurrentLine;
66680       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
66681 
66682       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
66683                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
66684                ,p_balance_type_code => l_balance_type_code);
66685 
66686    END IF;
66687 
66688    -----------------------------------------------------------------------------------------
66689    -- 4262811 Multiperiod Accounting
66690    -----------------------------------------------------------------------------------------
66691      -- No MPA option is assigned.
66692 
66693 
66694 END IF;
66695 END IF;
66696 --
66697 
66698 --
66699 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66700    trace
66701       (p_msg      => 'END of AcctLineType_122'
66702       ,p_level    => C_LEVEL_PROCEDURE
66703       ,p_module   => l_log_module);
66704 END IF;
66705 --
66706 EXCEPTION
66707   WHEN xla_exceptions_pkg.application_exception THEN
66708       RAISE;
66709   WHEN OTHERS THEN
66710        xla_exceptions_pkg.raise_message
66711            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_122');
66712 END AcctLineType_122;
66713 --
66714 
66715 ---------------------------------------
66716 --
66717 -- PRIVATE FUNCTION
66718 --         AcctLineType_123
66719 --
66720 ---------------------------------------
66721 PROCEDURE AcctLineType_123 (
66722   p_application_id        IN NUMBER
66723  ,p_event_id              IN NUMBER
66724  ,p_calculate_acctd_flag  IN VARCHAR2
66725  ,p_calculate_g_l_flag    IN VARCHAR2
66726  ,p_actual_flag           IN OUT VARCHAR2
66727  ,p_balance_type_code     OUT VARCHAR2
66728  ,p_gain_or_loss_ref      OUT VARCHAR2
66729  
66730 --Cost Management Default Account
66731  , p_source_4            IN NUMBER
66732 --DISTRIBUTION_IDENTIFIER
66733  , p_source_11            IN NUMBER
66734 --Distribution Type
66735  , p_source_12            IN VARCHAR2
66736  , p_source_12_meaning    IN VARCHAR2
66737 --Entered Currency Code
66738  , p_source_15            IN VARCHAR2
66739 --Entered Amount
66740  , p_source_18            IN NUMBER
66741 --Currency Conversion Date
66742  , p_source_19            IN DATE
66743 --Currency Conversion Rate
66744  , p_source_20            IN NUMBER
66745 --Currency Conversion Type
66746  , p_source_21            IN VARCHAR2
66747 --Accounted Amount
66748  , p_source_22            IN NUMBER
66749 --Accounting Line Type
66750  , p_source_24            IN NUMBER
66751 )
66752 IS
66753 
66754 l_component_type              VARCHAR2(80);
66755 l_component_code              VARCHAR2(30);
66756 l_component_type_code         VARCHAR2(1);
66757 l_component_appl_id           INTEGER;
66758 l_amb_context_code            VARCHAR2(30);
66759 l_entity_code                 VARCHAR2(30);
66760 l_event_class_code            VARCHAR2(30);
66761 l_ae_header_id                NUMBER;
66762 l_event_type_code             VARCHAR2(30);
66763 l_line_definition_code        VARCHAR2(30);
66764 l_line_definition_owner_code  VARCHAR2(1);
66765 --
66766 -- adr variables
66767 l_segment                     VARCHAR2(30);
66768 l_ccid                        NUMBER;
66769 l_adr_transaction_coa_id      NUMBER;
66770 l_adr_accounting_coa_id       NUMBER;
66771 l_adr_flexfield_segment_code  VARCHAR2(30);
66772 l_adr_flex_value_set_id       NUMBER;
66773 l_adr_value_type_code         VARCHAR2(30);
66774 l_adr_value_combination_id    NUMBER;
66775 l_adr_value_segment_code      VARCHAR2(30);
66776 
66777 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
66778 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
66779 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
66780 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
66781 
66782 -- 4262811 Variables ------------------------------------------------------------------------------------------
66783 l_entered_amt_idx             NUMBER;
66784 l_accted_amt_idx              NUMBER;
66785 l_acc_rev_flag                VARCHAR2(1);
66786 l_accrual_line_num            NUMBER;
66787 l_tmp_amt                     NUMBER;
66788 l_acc_rev_natural_side_code   VARCHAR2(1);
66789 
66790 l_num_entries                 NUMBER;
66791 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
66792 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
66793 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
66794 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
66795 l_recog_line_1                NUMBER;
66796 l_recog_line_2                NUMBER;
66797 
66798 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
66799 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
66800 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
66801 
66802 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
66803 
66804 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
66805 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
66806 
66807 ---------------------------------------------------------------------------------------------------------------
66808 
66809 
66810 --
66811 -- bulk performance
66812 --
66813 l_balance_type_code           VARCHAR2(1);
66814 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
66815 l_log_module                  VARCHAR2(240);
66816 
66817 --
66818 -- Upgrade strategy
66819 --
66820 l_actual_upg_option           VARCHAR2(1);
66821 l_enc_upg_option           VARCHAR2(1);
66822 
66823 --
66824 BEGIN
66825 --
66826 IF g_log_enabled THEN
66827       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_123';
66828 END IF;
66829 --
66830 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66831 
66832       trace
66833          (p_msg      => 'BEGIN of AcctLineType_123'
66834          ,p_level    => C_LEVEL_PROCEDURE
66835          ,p_module   => l_log_module);
66836 
66837 END IF;
66838 --
66839 l_component_type             := 'AMB_JLT';
66840 l_component_code             := 'INTRANSIT_VALUATION';
66841 l_component_type_code        := 'S';
66842 l_component_appl_id          :=  707;
66843 l_amb_context_code           := 'DEFAULT';
66844 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
66845 l_event_class_code           := 'USER_DEFINE';
66846 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
66847 l_line_definition_owner_code := 'S';
66848 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
66849 --
66850 l_balance_type_code          := 'A';
66851 l_segment                     := NULL;
66852 l_ccid                        := NULL;
66853 l_adr_transaction_coa_id      := NULL;
66854 l_adr_accounting_coa_id       := NULL;
66855 l_adr_flexfield_segment_code  := NULL;
66856 l_adr_flex_value_set_id       := NULL;
66857 l_adr_value_type_code         := NULL;
66858 l_adr_value_combination_id    := NULL;
66859 l_adr_value_segment_code      := NULL;
66860 
66861 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
66862 l_bflow_class_code           := '';    -- 4219869 Business Flow
66863 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
66864 l_budgetary_control_flag     := 'N';
66865 
66866 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
66867 l_bflow_applied_to_amt       := NULL; -- 5132302
66868 l_entered_amt_idx            := NULL;          -- 4262811
66869 l_accted_amt_idx             := NULL;          -- 4262811
66870 l_acc_rev_flag               := NULL;          -- 4262811
66871 l_accrual_line_num           := NULL;          -- 4262811
66872 l_tmp_amt                    := NULL;          -- 4262811
66873 --
66874  
66875 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
66876     l_balance_type_code <> 'B' THEN
66877 IF NVL(p_source_24,9E125) =  14
66878  THEN 
66879 
66880    --
66881    XLA_AE_LINES_PKG.SetNewLine;
66882 
66883    p_balance_type_code          := l_balance_type_code;
66884    -- set the flag so later we will know whether the gain loss line needs to be created
66885    
66886    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
66887      p_actual_flag :='A';
66888    END IF;
66889 
66890    --
66891    -- bulk performance
66892    --
66893    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
66894                                       p_header_num   => 0); -- 4262811
66895    --
66896    -- set accounting line options
66897    --
66898    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
66899            p_natural_side_code          => 'D'
66900          , p_gain_or_loss_flag          => 'N'
66901          , p_gl_transfer_mode_code      => 'S'
66902          , p_acct_entry_type_code       => 'A'
66903          , p_switch_side_flag           => 'Y'
66904          , p_merge_duplicate_code       => 'N'
66905          );
66906    --
66907    l_acc_rev_natural_side_code := 'C';  -- 4262811
66908    -- 
66909    --
66910    -- set accounting line type info
66911    --
66912    xla_ae_lines_pkg.SetAcctLineType
66913       (p_component_type             => l_component_type
66914       ,p_event_type_code            => l_event_type_code
66915       ,p_line_definition_owner_code => l_line_definition_owner_code
66916       ,p_line_definition_code       => l_line_definition_code
66917       ,p_accounting_line_code       => l_component_code
66918       ,p_accounting_line_type_code  => l_component_type_code
66919       ,p_accounting_line_appl_id    => l_component_appl_id
66920       ,p_amb_context_code           => l_amb_context_code
66921       ,p_entity_code                => l_entity_code
66922       ,p_event_class_code           => l_event_class_code);
66923    --
66924    -- set accounting class
66925    --
66926    xla_ae_lines_pkg.SetAcctClass(
66927            p_accounting_class_code  => 'INTRANSIT_VALUATION'
66928          , p_ae_header_id           => l_ae_header_id
66929          );
66930 
66931    --
66932    -- set rounding class
66933    --
66934    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
66935                       'INTRANSIT_VALUATION';
66936 
66937    --
66938    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
66939    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
66940    --
66941    -- bulk performance
66942    --
66943    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
66944 
66945    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
66946       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
66947 
66948    -- 4955764
66949    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
66950       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
66951 
66952    -- 4458381 Public Sector Enh
66953    
66954    --
66955    -- set accounting attributes for the line type
66956    --
66957    l_entered_amt_idx := 3;
66958    l_accted_amt_idx  := 8;
66959    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
66960    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
66961    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
66962    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
66963    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
66964    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
66965    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
66966    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
66967    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
66968    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
66969    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
66970    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
66971    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
66972    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
66973    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
66974    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
66975    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
66976 
66977    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
66978    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
66979 
66980    ---------------------------------------------------------------------------------------------------------------
66981    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
66982    ---------------------------------------------------------------------------------------------------------------
66983    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
66984 
66985    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
66986    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
66987 
66988    IF xla_accounting_cache_pkg.GetValueChar
66989          (p_source_code         => 'LEDGER_CATEGORY_CODE'
66990          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
66991    AND l_bflow_method_code = 'PRIOR_ENTRY'
66992 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
66993    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
66994          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
66995        )
66996    THEN
66997          xla_ae_lines_pkg.BflowUpgEntry
66998            (p_business_method_code    => l_bflow_method_code
66999            ,p_business_class_code     => l_bflow_class_code
67000            ,p_balance_type            => l_balance_type_code);
67001    ELSE
67002       NULL;
67003 -- No business flow processing for business flow method of NONE.
67004    END IF;
67005 
67006    --
67007    -- call analytical criteria
67008    --
67009    
67010    --
67011    -- call description
67012    --
67013    -- No description or it is inherited.
67014    --
67015    -- call ADRs
67016    -- Bug 4922099
67017    --
67018    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
67019         (NVL(l_actual_upg_option, 'N') = 'O') OR
67020         (NVL(l_enc_upg_option, 'N') = 'O')
67021       )
67022    THEN
67023    NULL;
67024    --
67025    --
67026    
67027   l_ccid := AcctDerRule_4(
67028            p_application_id           => p_application_id
67029          , p_ae_header_id             => l_ae_header_id 
67030 , p_source_4 => p_source_4
67031          , x_transaction_coa_id       => l_adr_transaction_coa_id
67032          , x_accounting_coa_id        => l_adr_accounting_coa_id
67033          , x_value_type_code          => l_adr_value_type_code
67034          , p_side                     => 'NA'
67035    );
67036 
67037    xla_ae_lines_pkg.set_ccid(
67038     p_code_combination_id          => l_ccid
67039   , p_value_type_code              => l_adr_value_type_code
67040   , p_transaction_coa_id           => l_adr_transaction_coa_id
67041   , p_accounting_coa_id            => l_adr_accounting_coa_id
67042   , p_adr_code                     => 'CST_DEFAULT'
67043   , p_adr_type_code                => 'S'
67044   , p_component_type               => l_component_type
67045   , p_component_code               => l_component_code
67046   , p_component_type_code          => l_component_type_code
67047   , p_component_appl_id            => l_component_appl_id
67048   , p_amb_context_code             => l_amb_context_code
67049   , p_side                         => 'NA'
67050   );
67051 
67052 
67053    --
67054    --
67055    END IF;
67056    --
67057    -- Bug 4922099
67058    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
67059           (NVL(l_enc_upg_option, 'N') = 'O')
67060         ) AND
67061         (l_bflow_method_code = 'PRIOR_ENTRY')
67062       )
67063    THEN
67064       IF
67065       --
67066       1 = 2
67067       --
67068       THEN
67069       xla_accounting_err_pkg.build_message
67070                                     (p_appli_s_name            => 'XLA'
67071                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
67072                                     ,p_token_1                 => 'LINE_NUMBER'
67073                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
67074                                     ,p_token_2                 => 'LINE_TYPE_NAME'
67075                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
67076                                                                              l_component_type
67077                                                                             ,l_component_code
67078                                                                             ,l_component_type_code
67079                                                                             ,l_component_appl_id
67080                                                                             ,l_amb_context_code
67081                                                                             ,l_entity_code
67082                                                                             ,l_event_class_code
67083                                                                            )
67084                                     ,p_token_3                 => 'OWNER'
67085                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
67086                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
67087                                                                           ,p_lookup_code    => l_component_type_code
67088                                                                          )
67089                                     ,p_token_4                 => 'PRODUCT_NAME'
67090                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
67091                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
67092                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
67093                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
67094                                     ,p_ae_header_id            =>  NULL
67095                                        );
67096 
67097         IF (C_LEVEL_ERROR>= g_log_level) THEN
67098                  trace
67099                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
67100                       ,p_level    => C_LEVEL_ERROR
67101                       ,p_module   => l_log_module);
67102         END IF;
67103       END IF;
67104    END IF;
67105    --
67106    --
67107    ------------------------------------------------------------------------------------------------
67108    -- 4219869 Business Flow
67109    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
67110    -- Prior Entry.  Currently, the following code is always generated.
67111    ------------------------------------------------------------------------------------------------
67112    XLA_AE_LINES_PKG.ValidateCurrentLine;
67113 
67114    ------------------------------------------------------------------------------------
67115    -- 4219869 Business Flow
67116    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
67117    ------------------------------------------------------------------------------------
67118    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
67119 
67120    ----------------------------------------------------------------------------------
67121    -- 4219869 Business Flow
67122    -- Update journal entry status -- Need to generate this within IF <condition>
67123    ----------------------------------------------------------------------------------
67124    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
67125          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
67126          ,p_balance_type_code => l_balance_type_code
67127          );
67128 
67129    -------------------------------------------------------------------------------------------
67130    -- 4262811 - Generate the Accrual Reversal lines
67131    -------------------------------------------------------------------------------------------
67132    BEGIN
67133       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
67134                               (g_array_event(p_event_id).array_value_num('header_index'));
67135       IF l_acc_rev_flag IS NULL THEN
67136          l_acc_rev_flag := 'N';
67137       END IF;
67138    EXCEPTION
67139       WHEN OTHERS THEN
67140          l_acc_rev_flag := 'N';
67141    END;
67142    --
67143    IF (l_acc_rev_flag = 'Y') THEN
67144 
67145        -- 4645092  ------------------------------------------------------------------------------
67146        -- To allow MPA report to determine if it should generate report process
67147        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
67148        ------------------------------------------------------------------------------------------
67149 
67150        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
67151        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
67152    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
67153    -- call ADRs
67154    -- Bug 4922099
67155    --
67156    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
67157         (NVL(l_actual_upg_option, 'N') = 'O') OR
67158         (NVL(l_enc_upg_option, 'N') = 'O')
67159       )
67160    THEN
67161    NULL;
67162    --
67163    --
67164    
67165   l_ccid := AcctDerRule_4(
67166            p_application_id           => p_application_id
67167          , p_ae_header_id             => l_ae_header_id 
67168 , p_source_4 => p_source_4
67169          , x_transaction_coa_id       => l_adr_transaction_coa_id
67170          , x_accounting_coa_id        => l_adr_accounting_coa_id
67171          , x_value_type_code          => l_adr_value_type_code
67172          , p_side                     => 'NA'
67173    );
67174 
67175    xla_ae_lines_pkg.set_ccid(
67176     p_code_combination_id          => l_ccid
67177   , p_value_type_code              => l_adr_value_type_code
67178   , p_transaction_coa_id           => l_adr_transaction_coa_id
67179   , p_accounting_coa_id            => l_adr_accounting_coa_id
67180   , p_adr_code                     => 'CST_DEFAULT'
67181   , p_adr_type_code                => 'S'
67182   , p_component_type               => l_component_type
67183   , p_component_code               => l_component_code
67184   , p_component_type_code          => l_component_type_code
67185   , p_component_appl_id            => l_component_appl_id
67186   , p_amb_context_code             => l_amb_context_code
67187   , p_side                         => 'NA'
67188   );
67189 
67190 
67191    --
67192    --
67193    END IF;
67194 
67195        --
67196        -- Update the line information that should be overwritten
67197        --
67198        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
67199                                          p_header_num   => 1);
67200        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
67201 
67202        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
67203 
67204        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
67205           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
67206        END IF;
67207 
67208       --
67209       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
67210       --
67211       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
67212           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
67213       ELSE
67214           ---------------------------------------------------------------------------------------------------
67215           -- 4262811a Switch Sign
67216           ---------------------------------------------------------------------------------------------------
67217           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
67218           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67219                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67220           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67221                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67222           -- 5132302
67223           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
67224                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67225 
67226       END IF;
67227 
67228       -- 4955764
67229       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
67230       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
67231 
67232 
67233       XLA_AE_LINES_PKG.ValidateCurrentLine;
67234       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
67235 
67236       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
67237                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
67238                ,p_balance_type_code => l_balance_type_code);
67239 
67240    END IF;
67241 
67242    -----------------------------------------------------------------------------------------
67243    -- 4262811 Multiperiod Accounting
67244    -----------------------------------------------------------------------------------------
67245      -- No MPA option is assigned.
67246 
67247 
67248 END IF;
67249 END IF;
67250 --
67251 
67252 --
67253 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67254    trace
67255       (p_msg      => 'END of AcctLineType_123'
67256       ,p_level    => C_LEVEL_PROCEDURE
67257       ,p_module   => l_log_module);
67258 END IF;
67259 --
67260 EXCEPTION
67261   WHEN xla_exceptions_pkg.application_exception THEN
67262       RAISE;
67263   WHEN OTHERS THEN
67264        xla_exceptions_pkg.raise_message
67265            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_123');
67266 END AcctLineType_123;
67267 --
67268 
67269 ---------------------------------------
67270 --
67271 -- PRIVATE FUNCTION
67272 --         AcctLineType_124
67273 --
67274 ---------------------------------------
67275 PROCEDURE AcctLineType_124 (
67276   p_application_id        IN NUMBER
67277  ,p_event_id              IN NUMBER
67278  ,p_calculate_acctd_flag  IN VARCHAR2
67279  ,p_calculate_g_l_flag    IN VARCHAR2
67280  ,p_actual_flag           IN OUT VARCHAR2
67281  ,p_balance_type_code     OUT VARCHAR2
67282  ,p_gain_or_loss_ref      OUT VARCHAR2
67283  
67284 --Cost Management Default Account
67285  , p_source_4            IN NUMBER
67286 --DISTRIBUTION_IDENTIFIER
67287  , p_source_11            IN NUMBER
67288 --Distribution Type
67289  , p_source_12            IN VARCHAR2
67290  , p_source_12_meaning    IN VARCHAR2
67291 --Entered Currency Code
67292  , p_source_15            IN VARCHAR2
67293 --Entered Amount
67294  , p_source_18            IN NUMBER
67295 --Currency Conversion Date
67296  , p_source_19            IN DATE
67297 --Currency Conversion Rate
67298  , p_source_20            IN NUMBER
67299 --Currency Conversion Type
67300  , p_source_21            IN VARCHAR2
67301 --Accounted Amount
67302  , p_source_22            IN NUMBER
67303 --Accounting Line Type
67304  , p_source_24            IN NUMBER
67305 )
67306 IS
67307 
67308 l_component_type              VARCHAR2(80);
67309 l_component_code              VARCHAR2(30);
67310 l_component_type_code         VARCHAR2(1);
67311 l_component_appl_id           INTEGER;
67312 l_amb_context_code            VARCHAR2(30);
67313 l_entity_code                 VARCHAR2(30);
67314 l_event_class_code            VARCHAR2(30);
67315 l_ae_header_id                NUMBER;
67316 l_event_type_code             VARCHAR2(30);
67317 l_line_definition_code        VARCHAR2(30);
67318 l_line_definition_owner_code  VARCHAR2(1);
67319 --
67320 -- adr variables
67321 l_segment                     VARCHAR2(30);
67322 l_ccid                        NUMBER;
67323 l_adr_transaction_coa_id      NUMBER;
67324 l_adr_accounting_coa_id       NUMBER;
67325 l_adr_flexfield_segment_code  VARCHAR2(30);
67326 l_adr_flex_value_set_id       NUMBER;
67327 l_adr_value_type_code         VARCHAR2(30);
67328 l_adr_value_combination_id    NUMBER;
67329 l_adr_value_segment_code      VARCHAR2(30);
67330 
67331 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
67332 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
67333 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
67334 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
67335 
67336 -- 4262811 Variables ------------------------------------------------------------------------------------------
67337 l_entered_amt_idx             NUMBER;
67338 l_accted_amt_idx              NUMBER;
67339 l_acc_rev_flag                VARCHAR2(1);
67340 l_accrual_line_num            NUMBER;
67341 l_tmp_amt                     NUMBER;
67342 l_acc_rev_natural_side_code   VARCHAR2(1);
67343 
67344 l_num_entries                 NUMBER;
67345 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
67346 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
67347 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
67348 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
67349 l_recog_line_1                NUMBER;
67350 l_recog_line_2                NUMBER;
67351 
67352 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
67353 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
67354 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
67355 
67356 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
67357 
67358 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
67359 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
67360 
67361 ---------------------------------------------------------------------------------------------------------------
67362 
67363 
67364 --
67365 -- bulk performance
67366 --
67367 l_balance_type_code           VARCHAR2(1);
67368 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
67369 l_log_module                  VARCHAR2(240);
67370 
67371 --
67372 -- Upgrade strategy
67373 --
67374 l_actual_upg_option           VARCHAR2(1);
67375 l_enc_upg_option           VARCHAR2(1);
67376 
67377 --
67378 BEGIN
67379 --
67380 IF g_log_enabled THEN
67381       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_124';
67382 END IF;
67383 --
67384 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67385 
67386       trace
67387          (p_msg      => 'BEGIN of AcctLineType_124'
67388          ,p_level    => C_LEVEL_PROCEDURE
67389          ,p_module   => l_log_module);
67390 
67391 END IF;
67392 --
67393 l_component_type             := 'AMB_JLT';
67394 l_component_code             := 'INTRANSIT_VALUATION';
67395 l_component_type_code        := 'S';
67396 l_component_appl_id          :=  707;
67397 l_amb_context_code           := 'DEFAULT';
67398 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
67399 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
67400 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
67401 l_line_definition_owner_code := 'S';
67402 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_SHIP';
67403 --
67404 l_balance_type_code          := 'A';
67405 l_segment                     := NULL;
67406 l_ccid                        := NULL;
67407 l_adr_transaction_coa_id      := NULL;
67408 l_adr_accounting_coa_id       := NULL;
67409 l_adr_flexfield_segment_code  := NULL;
67410 l_adr_flex_value_set_id       := NULL;
67411 l_adr_value_type_code         := NULL;
67412 l_adr_value_combination_id    := NULL;
67413 l_adr_value_segment_code      := NULL;
67414 
67415 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
67416 l_bflow_class_code           := '';    -- 4219869 Business Flow
67417 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
67418 l_budgetary_control_flag     := 'N';
67419 
67420 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
67421 l_bflow_applied_to_amt       := NULL; -- 5132302
67422 l_entered_amt_idx            := NULL;          -- 4262811
67423 l_accted_amt_idx             := NULL;          -- 4262811
67424 l_acc_rev_flag               := NULL;          -- 4262811
67425 l_accrual_line_num           := NULL;          -- 4262811
67426 l_tmp_amt                    := NULL;          -- 4262811
67427 --
67428  
67429 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
67430     l_balance_type_code <> 'B' THEN
67431 IF NVL(p_source_24,9E125) =  14
67432  THEN 
67433 
67434    --
67435    XLA_AE_LINES_PKG.SetNewLine;
67436 
67437    p_balance_type_code          := l_balance_type_code;
67438    -- set the flag so later we will know whether the gain loss line needs to be created
67439    
67440    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
67441      p_actual_flag :='A';
67442    END IF;
67443 
67444    --
67445    -- bulk performance
67446    --
67447    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
67448                                       p_header_num   => 0); -- 4262811
67449    --
67450    -- set accounting line options
67451    --
67452    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
67453            p_natural_side_code          => 'D'
67454          , p_gain_or_loss_flag          => 'N'
67455          , p_gl_transfer_mode_code      => 'S'
67456          , p_acct_entry_type_code       => 'A'
67457          , p_switch_side_flag           => 'Y'
67458          , p_merge_duplicate_code       => 'N'
67459          );
67460    --
67461    l_acc_rev_natural_side_code := 'C';  -- 4262811
67462    -- 
67463    --
67464    -- set accounting line type info
67465    --
67466    xla_ae_lines_pkg.SetAcctLineType
67467       (p_component_type             => l_component_type
67468       ,p_event_type_code            => l_event_type_code
67469       ,p_line_definition_owner_code => l_line_definition_owner_code
67470       ,p_line_definition_code       => l_line_definition_code
67471       ,p_accounting_line_code       => l_component_code
67472       ,p_accounting_line_type_code  => l_component_type_code
67473       ,p_accounting_line_appl_id    => l_component_appl_id
67474       ,p_amb_context_code           => l_amb_context_code
67475       ,p_entity_code                => l_entity_code
67476       ,p_event_class_code           => l_event_class_code);
67477    --
67478    -- set accounting class
67479    --
67480    xla_ae_lines_pkg.SetAcctClass(
67481            p_accounting_class_code  => 'INTRANSIT_VALUATION'
67482          , p_ae_header_id           => l_ae_header_id
67483          );
67484 
67485    --
67486    -- set rounding class
67487    --
67488    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
67489                       'INTRANSIT_VALUATION';
67490 
67491    --
67492    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
67493    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
67494    --
67495    -- bulk performance
67496    --
67497    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
67498 
67499    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
67500       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
67501 
67502    -- 4955764
67503    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
67504       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
67505 
67506    -- 4458381 Public Sector Enh
67507    
67508    --
67509    -- set accounting attributes for the line type
67510    --
67511    l_entered_amt_idx := 3;
67512    l_accted_amt_idx  := 8;
67513    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
67514    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
67515    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
67516    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
67517    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
67518    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
67519    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
67520    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
67521    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
67522    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
67523    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
67524    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
67525    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
67526    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
67527    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
67528    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
67529    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
67530 
67531    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
67532    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
67533 
67534    ---------------------------------------------------------------------------------------------------------------
67535    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
67536    ---------------------------------------------------------------------------------------------------------------
67537    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
67538 
67539    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
67540    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
67541 
67542    IF xla_accounting_cache_pkg.GetValueChar
67543          (p_source_code         => 'LEDGER_CATEGORY_CODE'
67544          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
67545    AND l_bflow_method_code = 'PRIOR_ENTRY'
67546 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
67547    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
67548          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
67549        )
67550    THEN
67551          xla_ae_lines_pkg.BflowUpgEntry
67552            (p_business_method_code    => l_bflow_method_code
67553            ,p_business_class_code     => l_bflow_class_code
67554            ,p_balance_type            => l_balance_type_code);
67555    ELSE
67556       NULL;
67557 -- No business flow processing for business flow method of NONE.
67558    END IF;
67559 
67560    --
67561    -- call analytical criteria
67562    --
67563    
67564    --
67565    -- call description
67566    --
67567    -- No description or it is inherited.
67568    --
67569    -- call ADRs
67570    -- Bug 4922099
67571    --
67572    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
67573         (NVL(l_actual_upg_option, 'N') = 'O') OR
67574         (NVL(l_enc_upg_option, 'N') = 'O')
67575       )
67576    THEN
67577    NULL;
67578    --
67579    --
67580    
67581   l_ccid := AcctDerRule_4(
67582            p_application_id           => p_application_id
67583          , p_ae_header_id             => l_ae_header_id 
67584 , p_source_4 => p_source_4
67585          , x_transaction_coa_id       => l_adr_transaction_coa_id
67586          , x_accounting_coa_id        => l_adr_accounting_coa_id
67587          , x_value_type_code          => l_adr_value_type_code
67588          , p_side                     => 'NA'
67589    );
67590 
67591    xla_ae_lines_pkg.set_ccid(
67592     p_code_combination_id          => l_ccid
67593   , p_value_type_code              => l_adr_value_type_code
67594   , p_transaction_coa_id           => l_adr_transaction_coa_id
67595   , p_accounting_coa_id            => l_adr_accounting_coa_id
67596   , p_adr_code                     => 'CST_DEFAULT'
67597   , p_adr_type_code                => 'S'
67598   , p_component_type               => l_component_type
67599   , p_component_code               => l_component_code
67600   , p_component_type_code          => l_component_type_code
67601   , p_component_appl_id            => l_component_appl_id
67602   , p_amb_context_code             => l_amb_context_code
67603   , p_side                         => 'NA'
67604   );
67605 
67606 
67607    --
67608    --
67609    END IF;
67610    --
67611    -- Bug 4922099
67612    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
67613           (NVL(l_enc_upg_option, 'N') = 'O')
67614         ) AND
67615         (l_bflow_method_code = 'PRIOR_ENTRY')
67616       )
67617    THEN
67618       IF
67619       --
67620       1 = 2
67621       --
67622       THEN
67623       xla_accounting_err_pkg.build_message
67624                                     (p_appli_s_name            => 'XLA'
67625                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
67626                                     ,p_token_1                 => 'LINE_NUMBER'
67627                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
67628                                     ,p_token_2                 => 'LINE_TYPE_NAME'
67629                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
67630                                                                              l_component_type
67631                                                                             ,l_component_code
67632                                                                             ,l_component_type_code
67633                                                                             ,l_component_appl_id
67634                                                                             ,l_amb_context_code
67635                                                                             ,l_entity_code
67636                                                                             ,l_event_class_code
67637                                                                            )
67638                                     ,p_token_3                 => 'OWNER'
67639                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
67640                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
67641                                                                           ,p_lookup_code    => l_component_type_code
67642                                                                          )
67643                                     ,p_token_4                 => 'PRODUCT_NAME'
67644                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
67645                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
67646                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
67647                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
67648                                     ,p_ae_header_id            =>  NULL
67649                                        );
67650 
67651         IF (C_LEVEL_ERROR>= g_log_level) THEN
67652                  trace
67653                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
67654                       ,p_level    => C_LEVEL_ERROR
67655                       ,p_module   => l_log_module);
67656         END IF;
67657       END IF;
67658    END IF;
67659    --
67660    --
67661    ------------------------------------------------------------------------------------------------
67662    -- 4219869 Business Flow
67663    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
67664    -- Prior Entry.  Currently, the following code is always generated.
67665    ------------------------------------------------------------------------------------------------
67666    XLA_AE_LINES_PKG.ValidateCurrentLine;
67667 
67668    ------------------------------------------------------------------------------------
67669    -- 4219869 Business Flow
67670    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
67671    ------------------------------------------------------------------------------------
67672    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
67673 
67674    ----------------------------------------------------------------------------------
67675    -- 4219869 Business Flow
67676    -- Update journal entry status -- Need to generate this within IF <condition>
67677    ----------------------------------------------------------------------------------
67678    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
67679          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
67680          ,p_balance_type_code => l_balance_type_code
67681          );
67682 
67683    -------------------------------------------------------------------------------------------
67684    -- 4262811 - Generate the Accrual Reversal lines
67685    -------------------------------------------------------------------------------------------
67686    BEGIN
67687       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
67688                               (g_array_event(p_event_id).array_value_num('header_index'));
67689       IF l_acc_rev_flag IS NULL THEN
67690          l_acc_rev_flag := 'N';
67691       END IF;
67692    EXCEPTION
67693       WHEN OTHERS THEN
67694          l_acc_rev_flag := 'N';
67695    END;
67696    --
67697    IF (l_acc_rev_flag = 'Y') THEN
67698 
67699        -- 4645092  ------------------------------------------------------------------------------
67700        -- To allow MPA report to determine if it should generate report process
67701        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
67702        ------------------------------------------------------------------------------------------
67703 
67704        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
67705        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
67706    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
67707    -- call ADRs
67708    -- Bug 4922099
67709    --
67710    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
67711         (NVL(l_actual_upg_option, 'N') = 'O') OR
67712         (NVL(l_enc_upg_option, 'N') = 'O')
67713       )
67714    THEN
67715    NULL;
67716    --
67717    --
67718    
67719   l_ccid := AcctDerRule_4(
67720            p_application_id           => p_application_id
67721          , p_ae_header_id             => l_ae_header_id 
67722 , p_source_4 => p_source_4
67723          , x_transaction_coa_id       => l_adr_transaction_coa_id
67724          , x_accounting_coa_id        => l_adr_accounting_coa_id
67725          , x_value_type_code          => l_adr_value_type_code
67726          , p_side                     => 'NA'
67727    );
67728 
67729    xla_ae_lines_pkg.set_ccid(
67730     p_code_combination_id          => l_ccid
67731   , p_value_type_code              => l_adr_value_type_code
67732   , p_transaction_coa_id           => l_adr_transaction_coa_id
67733   , p_accounting_coa_id            => l_adr_accounting_coa_id
67734   , p_adr_code                     => 'CST_DEFAULT'
67735   , p_adr_type_code                => 'S'
67736   , p_component_type               => l_component_type
67737   , p_component_code               => l_component_code
67738   , p_component_type_code          => l_component_type_code
67739   , p_component_appl_id            => l_component_appl_id
67740   , p_amb_context_code             => l_amb_context_code
67741   , p_side                         => 'NA'
67742   );
67743 
67744 
67745    --
67746    --
67747    END IF;
67748 
67749        --
67750        -- Update the line information that should be overwritten
67751        --
67752        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
67753                                          p_header_num   => 1);
67754        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
67755 
67756        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
67757 
67758        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
67759           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
67760        END IF;
67761 
67762       --
67763       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
67764       --
67765       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
67766           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
67767       ELSE
67768           ---------------------------------------------------------------------------------------------------
67769           -- 4262811a Switch Sign
67770           ---------------------------------------------------------------------------------------------------
67771           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
67772           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67773                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67774           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67775                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67776           -- 5132302
67777           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
67778                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67779 
67780       END IF;
67781 
67782       -- 4955764
67783       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
67784       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
67785 
67786 
67787       XLA_AE_LINES_PKG.ValidateCurrentLine;
67788       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
67789 
67790       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
67791                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
67792                ,p_balance_type_code => l_balance_type_code);
67793 
67794    END IF;
67795 
67796    -----------------------------------------------------------------------------------------
67797    -- 4262811 Multiperiod Accounting
67798    -----------------------------------------------------------------------------------------
67799      -- No MPA option is assigned.
67800 
67801 
67802 END IF;
67803 END IF;
67804 --
67805 
67806 --
67807 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67808    trace
67809       (p_msg      => 'END of AcctLineType_124'
67810       ,p_level    => C_LEVEL_PROCEDURE
67811       ,p_module   => l_log_module);
67812 END IF;
67813 --
67814 EXCEPTION
67815   WHEN xla_exceptions_pkg.application_exception THEN
67816       RAISE;
67817   WHEN OTHERS THEN
67818        xla_exceptions_pkg.raise_message
67819            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_124');
67820 END AcctLineType_124;
67821 --
67822 
67823 ---------------------------------------
67824 --
67825 -- PRIVATE FUNCTION
67826 --         AcctLineType_125
67827 --
67828 ---------------------------------------
67829 PROCEDURE AcctLineType_125 (
67830   p_application_id        IN NUMBER
67831  ,p_event_id              IN NUMBER
67832  ,p_calculate_acctd_flag  IN VARCHAR2
67833  ,p_calculate_g_l_flag    IN VARCHAR2
67834  ,p_actual_flag           IN OUT VARCHAR2
67835  ,p_balance_type_code     OUT VARCHAR2
67836  ,p_gain_or_loss_ref      OUT VARCHAR2
67837  
67838 --Cost Management Default Account
67839  , p_source_4            IN NUMBER
67840 --DISTRIBUTION_IDENTIFIER
67841  , p_source_11            IN NUMBER
67842 --Distribution Type
67843  , p_source_12            IN VARCHAR2
67844  , p_source_12_meaning    IN VARCHAR2
67845 --Entered Currency Code
67846  , p_source_15            IN VARCHAR2
67847 --Entered Amount
67848  , p_source_18            IN NUMBER
67849 --Currency Conversion Date
67850  , p_source_19            IN DATE
67851 --Currency Conversion Rate
67852  , p_source_20            IN NUMBER
67853 --Currency Conversion Type
67854  , p_source_21            IN VARCHAR2
67855 --Accounted Amount
67856  , p_source_22            IN NUMBER
67857 --Accounting Line Type
67858  , p_source_24            IN NUMBER
67859 )
67860 IS
67861 
67862 l_component_type              VARCHAR2(80);
67863 l_component_code              VARCHAR2(30);
67864 l_component_type_code         VARCHAR2(1);
67865 l_component_appl_id           INTEGER;
67866 l_amb_context_code            VARCHAR2(30);
67867 l_entity_code                 VARCHAR2(30);
67868 l_event_class_code            VARCHAR2(30);
67869 l_ae_header_id                NUMBER;
67870 l_event_type_code             VARCHAR2(30);
67871 l_line_definition_code        VARCHAR2(30);
67872 l_line_definition_owner_code  VARCHAR2(1);
67873 --
67874 -- adr variables
67875 l_segment                     VARCHAR2(30);
67876 l_ccid                        NUMBER;
67877 l_adr_transaction_coa_id      NUMBER;
67878 l_adr_accounting_coa_id       NUMBER;
67879 l_adr_flexfield_segment_code  VARCHAR2(30);
67880 l_adr_flex_value_set_id       NUMBER;
67881 l_adr_value_type_code         VARCHAR2(30);
67882 l_adr_value_combination_id    NUMBER;
67883 l_adr_value_segment_code      VARCHAR2(30);
67884 
67885 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
67886 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
67887 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
67888 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
67889 
67890 -- 4262811 Variables ------------------------------------------------------------------------------------------
67891 l_entered_amt_idx             NUMBER;
67892 l_accted_amt_idx              NUMBER;
67893 l_acc_rev_flag                VARCHAR2(1);
67894 l_accrual_line_num            NUMBER;
67895 l_tmp_amt                     NUMBER;
67896 l_acc_rev_natural_side_code   VARCHAR2(1);
67897 
67898 l_num_entries                 NUMBER;
67899 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
67900 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
67901 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
67902 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
67903 l_recog_line_1                NUMBER;
67904 l_recog_line_2                NUMBER;
67905 
67906 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
67907 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
67908 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
67909 
67910 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
67911 
67912 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
67913 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
67914 
67915 ---------------------------------------------------------------------------------------------------------------
67916 
67917 
67918 --
67919 -- bulk performance
67920 --
67921 l_balance_type_code           VARCHAR2(1);
67922 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
67923 l_log_module                  VARCHAR2(240);
67924 
67925 --
67926 -- Upgrade strategy
67927 --
67928 l_actual_upg_option           VARCHAR2(1);
67929 l_enc_upg_option           VARCHAR2(1);
67930 
67931 --
67932 BEGIN
67933 --
67934 IF g_log_enabled THEN
67935       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_125';
67936 END IF;
67937 --
67938 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67939 
67940       trace
67941          (p_msg      => 'BEGIN of AcctLineType_125'
67942          ,p_level    => C_LEVEL_PROCEDURE
67943          ,p_module   => l_log_module);
67944 
67945 END IF;
67946 --
67947 l_component_type             := 'AMB_JLT';
67948 l_component_code             := 'INTRANSIT_VALUATION';
67949 l_component_type_code        := 'S';
67950 l_component_appl_id          :=  707;
67951 l_amb_context_code           := 'DEFAULT';
67952 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
67953 l_event_class_code           := 'MTL_COST_UPD';
67954 l_event_type_code            := 'MTL_COST_UPD_ALL';
67955 l_line_definition_owner_code := 'S';
67956 l_line_definition_code       := 'MTL_COST_UPD';
67957 --
67958 l_balance_type_code          := 'A';
67959 l_segment                     := NULL;
67960 l_ccid                        := NULL;
67961 l_adr_transaction_coa_id      := NULL;
67962 l_adr_accounting_coa_id       := NULL;
67963 l_adr_flexfield_segment_code  := NULL;
67964 l_adr_flex_value_set_id       := NULL;
67965 l_adr_value_type_code         := NULL;
67966 l_adr_value_combination_id    := NULL;
67967 l_adr_value_segment_code      := NULL;
67968 
67969 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
67970 l_bflow_class_code           := '';    -- 4219869 Business Flow
67971 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
67972 l_budgetary_control_flag     := 'N';
67973 
67974 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
67975 l_bflow_applied_to_amt       := NULL; -- 5132302
67976 l_entered_amt_idx            := NULL;          -- 4262811
67977 l_accted_amt_idx             := NULL;          -- 4262811
67978 l_acc_rev_flag               := NULL;          -- 4262811
67979 l_accrual_line_num           := NULL;          -- 4262811
67980 l_tmp_amt                    := NULL;          -- 4262811
67981 --
67982  
67983 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
67984     l_balance_type_code <> 'B' THEN
67985 IF NVL(p_source_24,9E125) =  14
67986  THEN 
67987 
67988    --
67989    XLA_AE_LINES_PKG.SetNewLine;
67990 
67991    p_balance_type_code          := l_balance_type_code;
67992    -- set the flag so later we will know whether the gain loss line needs to be created
67993    
67994    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
67995      p_actual_flag :='A';
67996    END IF;
67997 
67998    --
67999    -- bulk performance
68000    --
68001    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
68002                                       p_header_num   => 0); -- 4262811
68003    --
68004    -- set accounting line options
68005    --
68006    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
68007            p_natural_side_code          => 'D'
68008          , p_gain_or_loss_flag          => 'N'
68009          , p_gl_transfer_mode_code      => 'S'
68010          , p_acct_entry_type_code       => 'A'
68011          , p_switch_side_flag           => 'Y'
68012          , p_merge_duplicate_code       => 'N'
68013          );
68014    --
68015    l_acc_rev_natural_side_code := 'C';  -- 4262811
68016    -- 
68017    --
68018    -- set accounting line type info
68019    --
68020    xla_ae_lines_pkg.SetAcctLineType
68021       (p_component_type             => l_component_type
68022       ,p_event_type_code            => l_event_type_code
68023       ,p_line_definition_owner_code => l_line_definition_owner_code
68024       ,p_line_definition_code       => l_line_definition_code
68025       ,p_accounting_line_code       => l_component_code
68026       ,p_accounting_line_type_code  => l_component_type_code
68027       ,p_accounting_line_appl_id    => l_component_appl_id
68028       ,p_amb_context_code           => l_amb_context_code
68029       ,p_entity_code                => l_entity_code
68030       ,p_event_class_code           => l_event_class_code);
68031    --
68032    -- set accounting class
68033    --
68034    xla_ae_lines_pkg.SetAcctClass(
68035            p_accounting_class_code  => 'INTRANSIT_VALUATION'
68036          , p_ae_header_id           => l_ae_header_id
68037          );
68038 
68039    --
68040    -- set rounding class
68041    --
68042    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
68043                       'INTRANSIT_VALUATION';
68044 
68045    --
68046    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
68047    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
68048    --
68049    -- bulk performance
68050    --
68051    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
68052 
68053    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
68054       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
68055 
68056    -- 4955764
68057    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
68058       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
68059 
68060    -- 4458381 Public Sector Enh
68061    
68062    --
68063    -- set accounting attributes for the line type
68064    --
68065    l_entered_amt_idx := 3;
68066    l_accted_amt_idx  := 8;
68067    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
68068    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
68069    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
68070    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
68071    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
68072    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
68073    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
68074    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
68075    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
68076    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
68077    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
68078    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
68079    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
68080    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
68081    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
68082    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
68083    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
68084 
68085    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
68086    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
68087 
68088    ---------------------------------------------------------------------------------------------------------------
68089    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
68090    ---------------------------------------------------------------------------------------------------------------
68091    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
68092 
68093    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68094    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68095 
68096    IF xla_accounting_cache_pkg.GetValueChar
68097          (p_source_code         => 'LEDGER_CATEGORY_CODE'
68098          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
68099    AND l_bflow_method_code = 'PRIOR_ENTRY'
68100 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
68101    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
68102          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
68103        )
68104    THEN
68105          xla_ae_lines_pkg.BflowUpgEntry
68106            (p_business_method_code    => l_bflow_method_code
68107            ,p_business_class_code     => l_bflow_class_code
68108            ,p_balance_type            => l_balance_type_code);
68109    ELSE
68110       NULL;
68111 -- No business flow processing for business flow method of NONE.
68112    END IF;
68113 
68114    --
68115    -- call analytical criteria
68116    --
68117    
68118    --
68119    -- call description
68120    --
68121    -- No description or it is inherited.
68122    --
68123    -- call ADRs
68124    -- Bug 4922099
68125    --
68126    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
68127         (NVL(l_actual_upg_option, 'N') = 'O') OR
68128         (NVL(l_enc_upg_option, 'N') = 'O')
68129       )
68130    THEN
68131    NULL;
68132    --
68133    --
68134    
68135   l_ccid := AcctDerRule_4(
68136            p_application_id           => p_application_id
68137          , p_ae_header_id             => l_ae_header_id 
68138 , p_source_4 => p_source_4
68139          , x_transaction_coa_id       => l_adr_transaction_coa_id
68140          , x_accounting_coa_id        => l_adr_accounting_coa_id
68141          , x_value_type_code          => l_adr_value_type_code
68142          , p_side                     => 'NA'
68143    );
68144 
68145    xla_ae_lines_pkg.set_ccid(
68146     p_code_combination_id          => l_ccid
68147   , p_value_type_code              => l_adr_value_type_code
68148   , p_transaction_coa_id           => l_adr_transaction_coa_id
68149   , p_accounting_coa_id            => l_adr_accounting_coa_id
68150   , p_adr_code                     => 'CST_DEFAULT'
68151   , p_adr_type_code                => 'S'
68152   , p_component_type               => l_component_type
68153   , p_component_code               => l_component_code
68154   , p_component_type_code          => l_component_type_code
68155   , p_component_appl_id            => l_component_appl_id
68156   , p_amb_context_code             => l_amb_context_code
68157   , p_side                         => 'NA'
68158   );
68159 
68160 
68161    --
68162    --
68163    END IF;
68164    --
68165    -- Bug 4922099
68166    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
68167           (NVL(l_enc_upg_option, 'N') = 'O')
68168         ) AND
68169         (l_bflow_method_code = 'PRIOR_ENTRY')
68170       )
68171    THEN
68172       IF
68173       --
68174       1 = 2
68175       --
68176       THEN
68177       xla_accounting_err_pkg.build_message
68178                                     (p_appli_s_name            => 'XLA'
68179                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68180                                     ,p_token_1                 => 'LINE_NUMBER'
68181                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
68182                                     ,p_token_2                 => 'LINE_TYPE_NAME'
68183                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
68184                                                                              l_component_type
68185                                                                             ,l_component_code
68186                                                                             ,l_component_type_code
68187                                                                             ,l_component_appl_id
68188                                                                             ,l_amb_context_code
68189                                                                             ,l_entity_code
68190                                                                             ,l_event_class_code
68191                                                                            )
68192                                     ,p_token_3                 => 'OWNER'
68193                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
68194                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
68195                                                                           ,p_lookup_code    => l_component_type_code
68196                                                                          )
68197                                     ,p_token_4                 => 'PRODUCT_NAME'
68198                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
68199                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
68200                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
68201                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
68202                                     ,p_ae_header_id            =>  NULL
68203                                        );
68204 
68205         IF (C_LEVEL_ERROR>= g_log_level) THEN
68206                  trace
68207                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68208                       ,p_level    => C_LEVEL_ERROR
68209                       ,p_module   => l_log_module);
68210         END IF;
68211       END IF;
68212    END IF;
68213    --
68214    --
68215    ------------------------------------------------------------------------------------------------
68216    -- 4219869 Business Flow
68217    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
68218    -- Prior Entry.  Currently, the following code is always generated.
68219    ------------------------------------------------------------------------------------------------
68220    XLA_AE_LINES_PKG.ValidateCurrentLine;
68221 
68222    ------------------------------------------------------------------------------------
68223    -- 4219869 Business Flow
68224    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
68225    ------------------------------------------------------------------------------------
68226    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68227 
68228    ----------------------------------------------------------------------------------
68229    -- 4219869 Business Flow
68230    -- Update journal entry status -- Need to generate this within IF <condition>
68231    ----------------------------------------------------------------------------------
68232    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68233          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
68234          ,p_balance_type_code => l_balance_type_code
68235          );
68236 
68237    -------------------------------------------------------------------------------------------
68238    -- 4262811 - Generate the Accrual Reversal lines
68239    -------------------------------------------------------------------------------------------
68240    BEGIN
68241       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
68242                               (g_array_event(p_event_id).array_value_num('header_index'));
68243       IF l_acc_rev_flag IS NULL THEN
68244          l_acc_rev_flag := 'N';
68245       END IF;
68246    EXCEPTION
68247       WHEN OTHERS THEN
68248          l_acc_rev_flag := 'N';
68249    END;
68250    --
68251    IF (l_acc_rev_flag = 'Y') THEN
68252 
68253        -- 4645092  ------------------------------------------------------------------------------
68254        -- To allow MPA report to determine if it should generate report process
68255        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
68256        ------------------------------------------------------------------------------------------
68257 
68258        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
68259        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
68260    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
68261    -- call ADRs
68262    -- Bug 4922099
68263    --
68264    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
68265         (NVL(l_actual_upg_option, 'N') = 'O') OR
68266         (NVL(l_enc_upg_option, 'N') = 'O')
68267       )
68268    THEN
68269    NULL;
68270    --
68271    --
68272    
68273   l_ccid := AcctDerRule_4(
68274            p_application_id           => p_application_id
68275          , p_ae_header_id             => l_ae_header_id 
68276 , p_source_4 => p_source_4
68277          , x_transaction_coa_id       => l_adr_transaction_coa_id
68278          , x_accounting_coa_id        => l_adr_accounting_coa_id
68279          , x_value_type_code          => l_adr_value_type_code
68280          , p_side                     => 'NA'
68281    );
68282 
68283    xla_ae_lines_pkg.set_ccid(
68284     p_code_combination_id          => l_ccid
68285   , p_value_type_code              => l_adr_value_type_code
68286   , p_transaction_coa_id           => l_adr_transaction_coa_id
68287   , p_accounting_coa_id            => l_adr_accounting_coa_id
68288   , p_adr_code                     => 'CST_DEFAULT'
68289   , p_adr_type_code                => 'S'
68290   , p_component_type               => l_component_type
68291   , p_component_code               => l_component_code
68292   , p_component_type_code          => l_component_type_code
68293   , p_component_appl_id            => l_component_appl_id
68294   , p_amb_context_code             => l_amb_context_code
68295   , p_side                         => 'NA'
68296   );
68297 
68298 
68299    --
68300    --
68301    END IF;
68302 
68303        --
68304        -- Update the line information that should be overwritten
68305        --
68306        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
68307                                          p_header_num   => 1);
68308        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
68309 
68310        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
68311 
68312        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
68313           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
68314        END IF;
68315 
68316       --
68317       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
68318       --
68319       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
68320           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
68321       ELSE
68322           ---------------------------------------------------------------------------------------------------
68323           -- 4262811a Switch Sign
68324           ---------------------------------------------------------------------------------------------------
68325           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
68326           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68327                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68328           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68329                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68330           -- 5132302
68331           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
68332                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68333 
68334       END IF;
68335 
68336       -- 4955764
68337       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
68338       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
68339 
68340 
68341       XLA_AE_LINES_PKG.ValidateCurrentLine;
68342       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68343 
68344       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68345                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
68346                ,p_balance_type_code => l_balance_type_code);
68347 
68348    END IF;
68349 
68350    -----------------------------------------------------------------------------------------
68351    -- 4262811 Multiperiod Accounting
68352    -----------------------------------------------------------------------------------------
68353      -- No MPA option is assigned.
68354 
68355 
68356 END IF;
68357 END IF;
68358 --
68359 
68360 --
68361 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68362    trace
68363       (p_msg      => 'END of AcctLineType_125'
68364       ,p_level    => C_LEVEL_PROCEDURE
68365       ,p_module   => l_log_module);
68366 END IF;
68367 --
68368 EXCEPTION
68369   WHEN xla_exceptions_pkg.application_exception THEN
68370       RAISE;
68371   WHEN OTHERS THEN
68372        xla_exceptions_pkg.raise_message
68373            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_125');
68374 END AcctLineType_125;
68375 --
68376 
68377 ---------------------------------------
68378 --
68379 -- PRIVATE FUNCTION
68380 --         AcctLineType_126
68381 --
68382 ---------------------------------------
68383 PROCEDURE AcctLineType_126 (
68384   p_application_id        IN NUMBER
68385  ,p_event_id              IN NUMBER
68386  ,p_calculate_acctd_flag  IN VARCHAR2
68387  ,p_calculate_g_l_flag    IN VARCHAR2
68388  ,p_actual_flag           IN OUT VARCHAR2
68389  ,p_balance_type_code     OUT VARCHAR2
68390  ,p_gain_or_loss_ref      OUT VARCHAR2
68391  
68392 --Cost Management Default Account
68393  , p_source_4            IN NUMBER
68394 --DISTRIBUTION_IDENTIFIER
68395  , p_source_11            IN NUMBER
68396 --Distribution Type
68397  , p_source_12            IN VARCHAR2
68398  , p_source_12_meaning    IN VARCHAR2
68399 --Entered Currency Code
68400  , p_source_15            IN VARCHAR2
68401 --Entered Amount
68402  , p_source_18            IN NUMBER
68403 --Currency Conversion Date
68404  , p_source_19            IN DATE
68405 --Currency Conversion Rate
68406  , p_source_20            IN NUMBER
68407 --Currency Conversion Type
68408  , p_source_21            IN VARCHAR2
68409 --Accounted Amount
68410  , p_source_22            IN NUMBER
68411 --Accounting Line Type
68412  , p_source_24            IN NUMBER
68413 )
68414 IS
68415 
68416 l_component_type              VARCHAR2(80);
68417 l_component_code              VARCHAR2(30);
68418 l_component_type_code         VARCHAR2(1);
68419 l_component_appl_id           INTEGER;
68420 l_amb_context_code            VARCHAR2(30);
68421 l_entity_code                 VARCHAR2(30);
68422 l_event_class_code            VARCHAR2(30);
68423 l_ae_header_id                NUMBER;
68424 l_event_type_code             VARCHAR2(30);
68425 l_line_definition_code        VARCHAR2(30);
68426 l_line_definition_owner_code  VARCHAR2(1);
68427 --
68428 -- adr variables
68429 l_segment                     VARCHAR2(30);
68430 l_ccid                        NUMBER;
68431 l_adr_transaction_coa_id      NUMBER;
68432 l_adr_accounting_coa_id       NUMBER;
68433 l_adr_flexfield_segment_code  VARCHAR2(30);
68434 l_adr_flex_value_set_id       NUMBER;
68435 l_adr_value_type_code         VARCHAR2(30);
68436 l_adr_value_combination_id    NUMBER;
68437 l_adr_value_segment_code      VARCHAR2(30);
68438 
68439 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
68440 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
68441 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
68442 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
68443 
68444 -- 4262811 Variables ------------------------------------------------------------------------------------------
68445 l_entered_amt_idx             NUMBER;
68446 l_accted_amt_idx              NUMBER;
68447 l_acc_rev_flag                VARCHAR2(1);
68448 l_accrual_line_num            NUMBER;
68449 l_tmp_amt                     NUMBER;
68450 l_acc_rev_natural_side_code   VARCHAR2(1);
68451 
68452 l_num_entries                 NUMBER;
68453 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
68454 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
68455 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
68456 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
68457 l_recog_line_1                NUMBER;
68458 l_recog_line_2                NUMBER;
68459 
68460 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
68461 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
68462 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
68463 
68464 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
68465 
68466 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
68467 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
68468 
68469 ---------------------------------------------------------------------------------------------------------------
68470 
68471 
68472 --
68473 -- bulk performance
68474 --
68475 l_balance_type_code           VARCHAR2(1);
68476 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
68477 l_log_module                  VARCHAR2(240);
68478 
68479 --
68480 -- Upgrade strategy
68481 --
68482 l_actual_upg_option           VARCHAR2(1);
68483 l_enc_upg_option           VARCHAR2(1);
68484 
68485 --
68486 BEGIN
68487 --
68488 IF g_log_enabled THEN
68489       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_126';
68490 END IF;
68491 --
68492 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68493 
68494       trace
68495          (p_msg      => 'BEGIN of AcctLineType_126'
68496          ,p_level    => C_LEVEL_PROCEDURE
68497          ,p_module   => l_log_module);
68498 
68499 END IF;
68500 --
68501 l_component_type             := 'AMB_JLT';
68502 l_component_code             := 'INTRANSIT_VALUATION';
68503 l_component_type_code        := 'S';
68504 l_component_appl_id          :=  707;
68505 l_amb_context_code           := 'DEFAULT';
68506 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
68507 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
68508 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_ALL';
68509 l_line_definition_owner_code := 'S';
68510 l_line_definition_code       := 'FOB_RCPT_SENDER_RCPT';
68511 --
68512 l_balance_type_code          := 'A';
68513 l_segment                     := NULL;
68514 l_ccid                        := NULL;
68515 l_adr_transaction_coa_id      := NULL;
68516 l_adr_accounting_coa_id       := NULL;
68517 l_adr_flexfield_segment_code  := NULL;
68518 l_adr_flex_value_set_id       := NULL;
68519 l_adr_value_type_code         := NULL;
68520 l_adr_value_combination_id    := NULL;
68521 l_adr_value_segment_code      := NULL;
68522 
68523 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
68524 l_bflow_class_code           := '';    -- 4219869 Business Flow
68525 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
68526 l_budgetary_control_flag     := 'N';
68527 
68528 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
68529 l_bflow_applied_to_amt       := NULL; -- 5132302
68530 l_entered_amt_idx            := NULL;          -- 4262811
68531 l_accted_amt_idx             := NULL;          -- 4262811
68532 l_acc_rev_flag               := NULL;          -- 4262811
68533 l_accrual_line_num           := NULL;          -- 4262811
68534 l_tmp_amt                    := NULL;          -- 4262811
68535 --
68536  
68537 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
68538     l_balance_type_code <> 'B' THEN
68539 IF NVL(p_source_24,9E125) =  14
68540  THEN 
68541 
68542    --
68543    XLA_AE_LINES_PKG.SetNewLine;
68544 
68545    p_balance_type_code          := l_balance_type_code;
68546    -- set the flag so later we will know whether the gain loss line needs to be created
68547    
68548    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
68549      p_actual_flag :='A';
68550    END IF;
68551 
68552    --
68553    -- bulk performance
68554    --
68555    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
68556                                       p_header_num   => 0); -- 4262811
68557    --
68558    -- set accounting line options
68559    --
68560    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
68561            p_natural_side_code          => 'D'
68562          , p_gain_or_loss_flag          => 'N'
68563          , p_gl_transfer_mode_code      => 'S'
68564          , p_acct_entry_type_code       => 'A'
68565          , p_switch_side_flag           => 'Y'
68566          , p_merge_duplicate_code       => 'N'
68567          );
68568    --
68569    l_acc_rev_natural_side_code := 'C';  -- 4262811
68570    -- 
68571    --
68572    -- set accounting line type info
68573    --
68574    xla_ae_lines_pkg.SetAcctLineType
68575       (p_component_type             => l_component_type
68576       ,p_event_type_code            => l_event_type_code
68577       ,p_line_definition_owner_code => l_line_definition_owner_code
68578       ,p_line_definition_code       => l_line_definition_code
68579       ,p_accounting_line_code       => l_component_code
68580       ,p_accounting_line_type_code  => l_component_type_code
68581       ,p_accounting_line_appl_id    => l_component_appl_id
68582       ,p_amb_context_code           => l_amb_context_code
68583       ,p_entity_code                => l_entity_code
68584       ,p_event_class_code           => l_event_class_code);
68585    --
68586    -- set accounting class
68587    --
68588    xla_ae_lines_pkg.SetAcctClass(
68589            p_accounting_class_code  => 'INTRANSIT_VALUATION'
68590          , p_ae_header_id           => l_ae_header_id
68591          );
68592 
68593    --
68594    -- set rounding class
68595    --
68596    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
68597                       'INTRANSIT_VALUATION';
68598 
68599    --
68600    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
68601    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
68602    --
68603    -- bulk performance
68604    --
68605    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
68606 
68607    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
68608       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
68609 
68610    -- 4955764
68611    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
68612       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
68613 
68614    -- 4458381 Public Sector Enh
68615    
68616    --
68617    -- set accounting attributes for the line type
68618    --
68619    l_entered_amt_idx := 3;
68620    l_accted_amt_idx  := 8;
68621    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
68622    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
68623    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
68624    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
68625    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
68626    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
68627    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
68628    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
68629    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
68630    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
68631    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
68632    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
68633    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
68634    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
68635    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
68636    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
68637    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
68638 
68639    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
68640    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
68641 
68642    ---------------------------------------------------------------------------------------------------------------
68643    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
68644    ---------------------------------------------------------------------------------------------------------------
68645    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
68646 
68647    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68648    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68649 
68650    IF xla_accounting_cache_pkg.GetValueChar
68651          (p_source_code         => 'LEDGER_CATEGORY_CODE'
68652          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
68653    AND l_bflow_method_code = 'PRIOR_ENTRY'
68654 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
68655    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
68656          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
68657        )
68658    THEN
68659          xla_ae_lines_pkg.BflowUpgEntry
68660            (p_business_method_code    => l_bflow_method_code
68661            ,p_business_class_code     => l_bflow_class_code
68662            ,p_balance_type            => l_balance_type_code);
68663    ELSE
68664       NULL;
68665 -- No business flow processing for business flow method of NONE.
68666    END IF;
68667 
68668    --
68669    -- call analytical criteria
68670    --
68671    
68672    --
68673    -- call description
68674    --
68675    -- No description or it is inherited.
68676    --
68677    -- call ADRs
68678    -- Bug 4922099
68679    --
68680    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
68681         (NVL(l_actual_upg_option, 'N') = 'O') OR
68682         (NVL(l_enc_upg_option, 'N') = 'O')
68683       )
68684    THEN
68685    NULL;
68686    --
68687    --
68688    
68689   l_ccid := AcctDerRule_4(
68690            p_application_id           => p_application_id
68691          , p_ae_header_id             => l_ae_header_id 
68692 , p_source_4 => p_source_4
68693          , x_transaction_coa_id       => l_adr_transaction_coa_id
68694          , x_accounting_coa_id        => l_adr_accounting_coa_id
68695          , x_value_type_code          => l_adr_value_type_code
68696          , p_side                     => 'NA'
68697    );
68698 
68699    xla_ae_lines_pkg.set_ccid(
68700     p_code_combination_id          => l_ccid
68701   , p_value_type_code              => l_adr_value_type_code
68702   , p_transaction_coa_id           => l_adr_transaction_coa_id
68703   , p_accounting_coa_id            => l_adr_accounting_coa_id
68704   , p_adr_code                     => 'CST_DEFAULT'
68705   , p_adr_type_code                => 'S'
68706   , p_component_type               => l_component_type
68707   , p_component_code               => l_component_code
68708   , p_component_type_code          => l_component_type_code
68709   , p_component_appl_id            => l_component_appl_id
68710   , p_amb_context_code             => l_amb_context_code
68711   , p_side                         => 'NA'
68712   );
68713 
68714 
68715    --
68716    --
68717    END IF;
68718    --
68719    -- Bug 4922099
68720    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
68721           (NVL(l_enc_upg_option, 'N') = 'O')
68722         ) AND
68723         (l_bflow_method_code = 'PRIOR_ENTRY')
68724       )
68725    THEN
68726       IF
68727       --
68728       1 = 2
68729       --
68730       THEN
68731       xla_accounting_err_pkg.build_message
68732                                     (p_appli_s_name            => 'XLA'
68733                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68734                                     ,p_token_1                 => 'LINE_NUMBER'
68735                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
68736                                     ,p_token_2                 => 'LINE_TYPE_NAME'
68737                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
68738                                                                              l_component_type
68739                                                                             ,l_component_code
68740                                                                             ,l_component_type_code
68741                                                                             ,l_component_appl_id
68742                                                                             ,l_amb_context_code
68743                                                                             ,l_entity_code
68744                                                                             ,l_event_class_code
68745                                                                            )
68746                                     ,p_token_3                 => 'OWNER'
68747                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
68748                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
68749                                                                           ,p_lookup_code    => l_component_type_code
68750                                                                          )
68751                                     ,p_token_4                 => 'PRODUCT_NAME'
68752                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
68753                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
68754                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
68755                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
68756                                     ,p_ae_header_id            =>  NULL
68757                                        );
68758 
68759         IF (C_LEVEL_ERROR>= g_log_level) THEN
68760                  trace
68761                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68762                       ,p_level    => C_LEVEL_ERROR
68763                       ,p_module   => l_log_module);
68764         END IF;
68765       END IF;
68766    END IF;
68767    --
68768    --
68769    ------------------------------------------------------------------------------------------------
68770    -- 4219869 Business Flow
68771    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
68772    -- Prior Entry.  Currently, the following code is always generated.
68773    ------------------------------------------------------------------------------------------------
68774    XLA_AE_LINES_PKG.ValidateCurrentLine;
68775 
68776    ------------------------------------------------------------------------------------
68777    -- 4219869 Business Flow
68778    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
68779    ------------------------------------------------------------------------------------
68780    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68781 
68782    ----------------------------------------------------------------------------------
68783    -- 4219869 Business Flow
68784    -- Update journal entry status -- Need to generate this within IF <condition>
68785    ----------------------------------------------------------------------------------
68786    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68787          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
68788          ,p_balance_type_code => l_balance_type_code
68789          );
68790 
68791    -------------------------------------------------------------------------------------------
68792    -- 4262811 - Generate the Accrual Reversal lines
68793    -------------------------------------------------------------------------------------------
68794    BEGIN
68795       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
68796                               (g_array_event(p_event_id).array_value_num('header_index'));
68797       IF l_acc_rev_flag IS NULL THEN
68798          l_acc_rev_flag := 'N';
68799       END IF;
68800    EXCEPTION
68801       WHEN OTHERS THEN
68802          l_acc_rev_flag := 'N';
68803    END;
68804    --
68805    IF (l_acc_rev_flag = 'Y') THEN
68806 
68807        -- 4645092  ------------------------------------------------------------------------------
68808        -- To allow MPA report to determine if it should generate report process
68809        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
68810        ------------------------------------------------------------------------------------------
68811 
68812        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
68813        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
68814    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
68815    -- call ADRs
68816    -- Bug 4922099
68817    --
68818    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
68819         (NVL(l_actual_upg_option, 'N') = 'O') OR
68820         (NVL(l_enc_upg_option, 'N') = 'O')
68821       )
68822    THEN
68823    NULL;
68824    --
68825    --
68826    
68827   l_ccid := AcctDerRule_4(
68828            p_application_id           => p_application_id
68829          , p_ae_header_id             => l_ae_header_id 
68830 , p_source_4 => p_source_4
68831          , x_transaction_coa_id       => l_adr_transaction_coa_id
68832          , x_accounting_coa_id        => l_adr_accounting_coa_id
68833          , x_value_type_code          => l_adr_value_type_code
68834          , p_side                     => 'NA'
68835    );
68836 
68837    xla_ae_lines_pkg.set_ccid(
68838     p_code_combination_id          => l_ccid
68839   , p_value_type_code              => l_adr_value_type_code
68840   , p_transaction_coa_id           => l_adr_transaction_coa_id
68841   , p_accounting_coa_id            => l_adr_accounting_coa_id
68842   , p_adr_code                     => 'CST_DEFAULT'
68843   , p_adr_type_code                => 'S'
68844   , p_component_type               => l_component_type
68845   , p_component_code               => l_component_code
68846   , p_component_type_code          => l_component_type_code
68847   , p_component_appl_id            => l_component_appl_id
68848   , p_amb_context_code             => l_amb_context_code
68849   , p_side                         => 'NA'
68850   );
68851 
68852 
68853    --
68854    --
68855    END IF;
68856 
68857        --
68858        -- Update the line information that should be overwritten
68859        --
68860        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
68861                                          p_header_num   => 1);
68862        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
68863 
68864        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
68865 
68866        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
68867           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
68868        END IF;
68869 
68870       --
68871       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
68872       --
68873       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
68874           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
68875       ELSE
68876           ---------------------------------------------------------------------------------------------------
68877           -- 4262811a Switch Sign
68878           ---------------------------------------------------------------------------------------------------
68879           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
68880           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68881                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68882           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68883                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68884           -- 5132302
68885           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
68886                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68887 
68888       END IF;
68889 
68890       -- 4955764
68891       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
68892       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
68893 
68894 
68895       XLA_AE_LINES_PKG.ValidateCurrentLine;
68896       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68897 
68898       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68899                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
68900                ,p_balance_type_code => l_balance_type_code);
68901 
68902    END IF;
68903 
68904    -----------------------------------------------------------------------------------------
68905    -- 4262811 Multiperiod Accounting
68906    -----------------------------------------------------------------------------------------
68907      -- No MPA option is assigned.
68908 
68909 
68910 END IF;
68911 END IF;
68912 --
68913 
68914 --
68915 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68916    trace
68917       (p_msg      => 'END of AcctLineType_126'
68918       ,p_level    => C_LEVEL_PROCEDURE
68919       ,p_module   => l_log_module);
68920 END IF;
68921 --
68922 EXCEPTION
68923   WHEN xla_exceptions_pkg.application_exception THEN
68924       RAISE;
68925   WHEN OTHERS THEN
68926        xla_exceptions_pkg.raise_message
68927            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_126');
68928 END AcctLineType_126;
68929 --
68930 
68931 ---------------------------------------
68932 --
68933 -- PRIVATE FUNCTION
68934 --         AcctLineType_127
68935 --
68936 ---------------------------------------
68937 PROCEDURE AcctLineType_127 (
68938   p_application_id        IN NUMBER
68939  ,p_event_id              IN NUMBER
68940  ,p_calculate_acctd_flag  IN VARCHAR2
68941  ,p_calculate_g_l_flag    IN VARCHAR2
68942  ,p_actual_flag           IN OUT VARCHAR2
68943  ,p_balance_type_code     OUT VARCHAR2
68944  ,p_gain_or_loss_ref      OUT VARCHAR2
68945  
68946 --Cost Management Default Account
68947  , p_source_4            IN NUMBER
68948 --DISTRIBUTION_IDENTIFIER
68949  , p_source_11            IN NUMBER
68950 --Distribution Type
68951  , p_source_12            IN VARCHAR2
68952  , p_source_12_meaning    IN VARCHAR2
68953 --Entered Currency Code
68954  , p_source_15            IN VARCHAR2
68955 --Entered Amount
68956  , p_source_18            IN NUMBER
68957 --Currency Conversion Date
68958  , p_source_19            IN DATE
68959 --Currency Conversion Rate
68960  , p_source_20            IN NUMBER
68961 --Currency Conversion Type
68962  , p_source_21            IN VARCHAR2
68963 --Accounted Amount
68964  , p_source_22            IN NUMBER
68965 --Accounting Line Type
68966  , p_source_24            IN NUMBER
68967 )
68968 IS
68969 
68970 l_component_type              VARCHAR2(80);
68971 l_component_code              VARCHAR2(30);
68972 l_component_type_code         VARCHAR2(1);
68973 l_component_appl_id           INTEGER;
68974 l_amb_context_code            VARCHAR2(30);
68975 l_entity_code                 VARCHAR2(30);
68976 l_event_class_code            VARCHAR2(30);
68977 l_ae_header_id                NUMBER;
68978 l_event_type_code             VARCHAR2(30);
68979 l_line_definition_code        VARCHAR2(30);
68980 l_line_definition_owner_code  VARCHAR2(1);
68981 --
68982 -- adr variables
68983 l_segment                     VARCHAR2(30);
68984 l_ccid                        NUMBER;
68985 l_adr_transaction_coa_id      NUMBER;
68986 l_adr_accounting_coa_id       NUMBER;
68987 l_adr_flexfield_segment_code  VARCHAR2(30);
68988 l_adr_flex_value_set_id       NUMBER;
68989 l_adr_value_type_code         VARCHAR2(30);
68990 l_adr_value_combination_id    NUMBER;
68991 l_adr_value_segment_code      VARCHAR2(30);
68992 
68993 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
68994 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
68995 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
68996 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
68997 
68998 -- 4262811 Variables ------------------------------------------------------------------------------------------
68999 l_entered_amt_idx             NUMBER;
69000 l_accted_amt_idx              NUMBER;
69001 l_acc_rev_flag                VARCHAR2(1);
69002 l_accrual_line_num            NUMBER;
69003 l_tmp_amt                     NUMBER;
69004 l_acc_rev_natural_side_code   VARCHAR2(1);
69005 
69006 l_num_entries                 NUMBER;
69007 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
69008 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
69009 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
69010 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
69011 l_recog_line_1                NUMBER;
69012 l_recog_line_2                NUMBER;
69013 
69014 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
69015 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
69016 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
69017 
69018 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
69019 
69020 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
69021 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
69022 
69023 ---------------------------------------------------------------------------------------------------------------
69024 
69025 
69026 --
69027 -- bulk performance
69028 --
69029 l_balance_type_code           VARCHAR2(1);
69030 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
69031 l_log_module                  VARCHAR2(240);
69032 
69033 --
69034 -- Upgrade strategy
69035 --
69036 l_actual_upg_option           VARCHAR2(1);
69037 l_enc_upg_option           VARCHAR2(1);
69038 
69039 --
69040 BEGIN
69041 --
69042 IF g_log_enabled THEN
69043       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_127';
69044 END IF;
69045 --
69046 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69047 
69048       trace
69049          (p_msg      => 'BEGIN of AcctLineType_127'
69050          ,p_level    => C_LEVEL_PROCEDURE
69051          ,p_module   => l_log_module);
69052 
69053 END IF;
69054 --
69055 l_component_type             := 'AMB_JLT';
69056 l_component_code             := 'INTRANSIT_VALUATION';
69057 l_component_type_code        := 'S';
69058 l_component_appl_id          :=  707;
69059 l_amb_context_code           := 'DEFAULT';
69060 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
69061 l_event_class_code           := 'USER_DEFINE';
69062 l_event_type_code            := 'UIPV_TXFR';
69063 l_line_definition_owner_code := 'S';
69064 l_line_definition_code       := 'USER_IPV_TXFR';
69065 --
69066 l_balance_type_code          := 'A';
69067 l_segment                     := NULL;
69068 l_ccid                        := NULL;
69069 l_adr_transaction_coa_id      := NULL;
69070 l_adr_accounting_coa_id       := NULL;
69071 l_adr_flexfield_segment_code  := NULL;
69072 l_adr_flex_value_set_id       := NULL;
69073 l_adr_value_type_code         := NULL;
69074 l_adr_value_combination_id    := NULL;
69075 l_adr_value_segment_code      := NULL;
69076 
69077 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
69078 l_bflow_class_code           := '';    -- 4219869 Business Flow
69079 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
69080 l_budgetary_control_flag     := 'N';
69081 
69082 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
69083 l_bflow_applied_to_amt       := NULL; -- 5132302
69084 l_entered_amt_idx            := NULL;          -- 4262811
69085 l_accted_amt_idx             := NULL;          -- 4262811
69086 l_acc_rev_flag               := NULL;          -- 4262811
69087 l_accrual_line_num           := NULL;          -- 4262811
69088 l_tmp_amt                    := NULL;          -- 4262811
69089 --
69090  
69091 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
69092     l_balance_type_code <> 'B' THEN
69093 IF NVL(p_source_24,9E125) =  14
69094  THEN 
69095 
69096    --
69097    XLA_AE_LINES_PKG.SetNewLine;
69098 
69099    p_balance_type_code          := l_balance_type_code;
69100    -- set the flag so later we will know whether the gain loss line needs to be created
69101    
69102    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
69103      p_actual_flag :='A';
69104    END IF;
69105 
69106    --
69107    -- bulk performance
69108    --
69109    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
69110                                       p_header_num   => 0); -- 4262811
69111    --
69112    -- set accounting line options
69113    --
69114    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
69115            p_natural_side_code          => 'D'
69116          , p_gain_or_loss_flag          => 'N'
69117          , p_gl_transfer_mode_code      => 'S'
69118          , p_acct_entry_type_code       => 'A'
69119          , p_switch_side_flag           => 'Y'
69120          , p_merge_duplicate_code       => 'N'
69121          );
69122    --
69123    l_acc_rev_natural_side_code := 'C';  -- 4262811
69124    -- 
69125    --
69126    -- set accounting line type info
69127    --
69128    xla_ae_lines_pkg.SetAcctLineType
69129       (p_component_type             => l_component_type
69130       ,p_event_type_code            => l_event_type_code
69131       ,p_line_definition_owner_code => l_line_definition_owner_code
69132       ,p_line_definition_code       => l_line_definition_code
69133       ,p_accounting_line_code       => l_component_code
69134       ,p_accounting_line_type_code  => l_component_type_code
69135       ,p_accounting_line_appl_id    => l_component_appl_id
69136       ,p_amb_context_code           => l_amb_context_code
69137       ,p_entity_code                => l_entity_code
69138       ,p_event_class_code           => l_event_class_code);
69139    --
69140    -- set accounting class
69141    --
69142    xla_ae_lines_pkg.SetAcctClass(
69143            p_accounting_class_code  => 'INTRANSIT_VALUATION'
69144          , p_ae_header_id           => l_ae_header_id
69145          );
69146 
69147    --
69148    -- set rounding class
69149    --
69150    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
69151                       'INTRANSIT_VALUATION';
69152 
69153    --
69154    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
69155    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
69156    --
69157    -- bulk performance
69158    --
69159    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
69160 
69161    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
69162       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
69163 
69164    -- 4955764
69165    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
69166       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
69167 
69168    -- 4458381 Public Sector Enh
69169    
69170    --
69171    -- set accounting attributes for the line type
69172    --
69173    l_entered_amt_idx := 3;
69174    l_accted_amt_idx  := 8;
69175    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
69176    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
69177    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
69178    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
69179    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
69180    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
69181    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
69182    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
69183    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
69184    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
69185    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
69186    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
69187    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
69188    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
69189    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
69190    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
69191    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
69192 
69193    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
69194    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
69195 
69196    ---------------------------------------------------------------------------------------------------------------
69197    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
69198    ---------------------------------------------------------------------------------------------------------------
69199    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
69200 
69201    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69202    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69203 
69204    IF xla_accounting_cache_pkg.GetValueChar
69205          (p_source_code         => 'LEDGER_CATEGORY_CODE'
69206          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
69207    AND l_bflow_method_code = 'PRIOR_ENTRY'
69208 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
69209    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
69210          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
69211        )
69212    THEN
69213          xla_ae_lines_pkg.BflowUpgEntry
69214            (p_business_method_code    => l_bflow_method_code
69215            ,p_business_class_code     => l_bflow_class_code
69216            ,p_balance_type            => l_balance_type_code);
69217    ELSE
69218       NULL;
69219 -- No business flow processing for business flow method of NONE.
69220    END IF;
69221 
69222    --
69223    -- call analytical criteria
69224    --
69225    
69226    --
69227    -- call description
69228    --
69229    -- No description or it is inherited.
69230    --
69231    -- call ADRs
69232    -- Bug 4922099
69233    --
69234    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
69235         (NVL(l_actual_upg_option, 'N') = 'O') OR
69236         (NVL(l_enc_upg_option, 'N') = 'O')
69237       )
69238    THEN
69239    NULL;
69240    --
69241    --
69242    
69243   l_ccid := AcctDerRule_4(
69244            p_application_id           => p_application_id
69245          , p_ae_header_id             => l_ae_header_id 
69246 , p_source_4 => p_source_4
69247          , x_transaction_coa_id       => l_adr_transaction_coa_id
69248          , x_accounting_coa_id        => l_adr_accounting_coa_id
69249          , x_value_type_code          => l_adr_value_type_code
69250          , p_side                     => 'NA'
69251    );
69252 
69253    xla_ae_lines_pkg.set_ccid(
69254     p_code_combination_id          => l_ccid
69255   , p_value_type_code              => l_adr_value_type_code
69256   , p_transaction_coa_id           => l_adr_transaction_coa_id
69257   , p_accounting_coa_id            => l_adr_accounting_coa_id
69258   , p_adr_code                     => 'CST_DEFAULT'
69259   , p_adr_type_code                => 'S'
69260   , p_component_type               => l_component_type
69261   , p_component_code               => l_component_code
69262   , p_component_type_code          => l_component_type_code
69263   , p_component_appl_id            => l_component_appl_id
69264   , p_amb_context_code             => l_amb_context_code
69265   , p_side                         => 'NA'
69266   );
69267 
69268 
69269    --
69270    --
69271    END IF;
69272    --
69273    -- Bug 4922099
69274    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
69275           (NVL(l_enc_upg_option, 'N') = 'O')
69276         ) AND
69277         (l_bflow_method_code = 'PRIOR_ENTRY')
69278       )
69279    THEN
69280       IF
69281       --
69282       1 = 2
69283       --
69284       THEN
69285       xla_accounting_err_pkg.build_message
69286                                     (p_appli_s_name            => 'XLA'
69287                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69288                                     ,p_token_1                 => 'LINE_NUMBER'
69289                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
69290                                     ,p_token_2                 => 'LINE_TYPE_NAME'
69291                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
69292                                                                              l_component_type
69293                                                                             ,l_component_code
69294                                                                             ,l_component_type_code
69295                                                                             ,l_component_appl_id
69296                                                                             ,l_amb_context_code
69297                                                                             ,l_entity_code
69298                                                                             ,l_event_class_code
69299                                                                            )
69300                                     ,p_token_3                 => 'OWNER'
69301                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
69302                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
69303                                                                           ,p_lookup_code    => l_component_type_code
69304                                                                          )
69305                                     ,p_token_4                 => 'PRODUCT_NAME'
69306                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
69307                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
69308                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
69309                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
69310                                     ,p_ae_header_id            =>  NULL
69311                                        );
69312 
69313         IF (C_LEVEL_ERROR>= g_log_level) THEN
69314                  trace
69315                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69316                       ,p_level    => C_LEVEL_ERROR
69317                       ,p_module   => l_log_module);
69318         END IF;
69319       END IF;
69320    END IF;
69321    --
69322    --
69323    ------------------------------------------------------------------------------------------------
69324    -- 4219869 Business Flow
69325    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
69326    -- Prior Entry.  Currently, the following code is always generated.
69327    ------------------------------------------------------------------------------------------------
69328    XLA_AE_LINES_PKG.ValidateCurrentLine;
69329 
69330    ------------------------------------------------------------------------------------
69331    -- 4219869 Business Flow
69332    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
69333    ------------------------------------------------------------------------------------
69334    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
69335 
69336    ----------------------------------------------------------------------------------
69337    -- 4219869 Business Flow
69338    -- Update journal entry status -- Need to generate this within IF <condition>
69339    ----------------------------------------------------------------------------------
69340    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
69341          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
69342          ,p_balance_type_code => l_balance_type_code
69343          );
69344 
69345    -------------------------------------------------------------------------------------------
69346    -- 4262811 - Generate the Accrual Reversal lines
69347    -------------------------------------------------------------------------------------------
69348    BEGIN
69349       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
69350                               (g_array_event(p_event_id).array_value_num('header_index'));
69351       IF l_acc_rev_flag IS NULL THEN
69352          l_acc_rev_flag := 'N';
69353       END IF;
69354    EXCEPTION
69355       WHEN OTHERS THEN
69356          l_acc_rev_flag := 'N';
69357    END;
69358    --
69359    IF (l_acc_rev_flag = 'Y') THEN
69360 
69361        -- 4645092  ------------------------------------------------------------------------------
69362        -- To allow MPA report to determine if it should generate report process
69363        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
69364        ------------------------------------------------------------------------------------------
69365 
69366        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
69367        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
69368    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
69369    -- call ADRs
69370    -- Bug 4922099
69371    --
69372    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
69373         (NVL(l_actual_upg_option, 'N') = 'O') OR
69374         (NVL(l_enc_upg_option, 'N') = 'O')
69375       )
69376    THEN
69377    NULL;
69378    --
69379    --
69380    
69381   l_ccid := AcctDerRule_4(
69382            p_application_id           => p_application_id
69383          , p_ae_header_id             => l_ae_header_id 
69384 , p_source_4 => p_source_4
69385          , x_transaction_coa_id       => l_adr_transaction_coa_id
69386          , x_accounting_coa_id        => l_adr_accounting_coa_id
69387          , x_value_type_code          => l_adr_value_type_code
69388          , p_side                     => 'NA'
69389    );
69390 
69391    xla_ae_lines_pkg.set_ccid(
69392     p_code_combination_id          => l_ccid
69393   , p_value_type_code              => l_adr_value_type_code
69394   , p_transaction_coa_id           => l_adr_transaction_coa_id
69395   , p_accounting_coa_id            => l_adr_accounting_coa_id
69396   , p_adr_code                     => 'CST_DEFAULT'
69397   , p_adr_type_code                => 'S'
69398   , p_component_type               => l_component_type
69399   , p_component_code               => l_component_code
69400   , p_component_type_code          => l_component_type_code
69401   , p_component_appl_id            => l_component_appl_id
69402   , p_amb_context_code             => l_amb_context_code
69403   , p_side                         => 'NA'
69404   );
69405 
69406 
69407    --
69408    --
69409    END IF;
69410 
69411        --
69412        -- Update the line information that should be overwritten
69413        --
69414        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
69415                                          p_header_num   => 1);
69416        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
69417 
69418        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
69419 
69420        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
69421           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
69422        END IF;
69423 
69424       --
69425       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
69426       --
69427       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
69428           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
69429       ELSE
69430           ---------------------------------------------------------------------------------------------------
69431           -- 4262811a Switch Sign
69432           ---------------------------------------------------------------------------------------------------
69433           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
69434           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
69435                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69436           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
69437                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69438           -- 5132302
69439           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
69440                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69441 
69442       END IF;
69443 
69444       -- 4955764
69445       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
69446       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
69447 
69448 
69449       XLA_AE_LINES_PKG.ValidateCurrentLine;
69450       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
69451 
69452       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
69453                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
69454                ,p_balance_type_code => l_balance_type_code);
69455 
69456    END IF;
69457 
69458    -----------------------------------------------------------------------------------------
69459    -- 4262811 Multiperiod Accounting
69460    -----------------------------------------------------------------------------------------
69461      -- No MPA option is assigned.
69462 
69463 
69464 END IF;
69465 END IF;
69466 --
69467 
69468 --
69469 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69470    trace
69471       (p_msg      => 'END of AcctLineType_127'
69472       ,p_level    => C_LEVEL_PROCEDURE
69473       ,p_module   => l_log_module);
69474 END IF;
69475 --
69476 EXCEPTION
69477   WHEN xla_exceptions_pkg.application_exception THEN
69478       RAISE;
69479   WHEN OTHERS THEN
69480        xla_exceptions_pkg.raise_message
69481            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_127');
69482 END AcctLineType_127;
69483 --
69484 
69485 ---------------------------------------
69486 --
69487 -- PRIVATE FUNCTION
69488 --         AcctLineType_128
69489 --
69490 ---------------------------------------
69491 PROCEDURE AcctLineType_128 (
69492   p_application_id        IN NUMBER
69493  ,p_event_id              IN NUMBER
69494  ,p_calculate_acctd_flag  IN VARCHAR2
69495  ,p_calculate_g_l_flag    IN VARCHAR2
69496  ,p_actual_flag           IN OUT VARCHAR2
69497  ,p_balance_type_code     OUT VARCHAR2
69498  ,p_gain_or_loss_ref      OUT VARCHAR2
69499  
69500 --Cost Management Default Account
69501  , p_source_4            IN NUMBER
69502 --DISTRIBUTION_IDENTIFIER
69503  , p_source_11            IN NUMBER
69504 --Distribution Type
69505  , p_source_12            IN VARCHAR2
69506  , p_source_12_meaning    IN VARCHAR2
69507 --Entered Currency Code
69508  , p_source_15            IN VARCHAR2
69509 --Entered Amount
69510  , p_source_18            IN NUMBER
69511 --Currency Conversion Date
69512  , p_source_19            IN DATE
69513 --Currency Conversion Rate
69514  , p_source_20            IN NUMBER
69515 --Currency Conversion Type
69516  , p_source_21            IN VARCHAR2
69517 --Accounted Amount
69518  , p_source_22            IN NUMBER
69519 --Accounting Line Type
69520  , p_source_24            IN NUMBER
69521 )
69522 IS
69523 
69524 l_component_type              VARCHAR2(80);
69525 l_component_code              VARCHAR2(30);
69526 l_component_type_code         VARCHAR2(1);
69527 l_component_appl_id           INTEGER;
69528 l_amb_context_code            VARCHAR2(30);
69529 l_entity_code                 VARCHAR2(30);
69530 l_event_class_code            VARCHAR2(30);
69531 l_ae_header_id                NUMBER;
69532 l_event_type_code             VARCHAR2(30);
69533 l_line_definition_code        VARCHAR2(30);
69534 l_line_definition_owner_code  VARCHAR2(1);
69535 --
69536 -- adr variables
69537 l_segment                     VARCHAR2(30);
69538 l_ccid                        NUMBER;
69539 l_adr_transaction_coa_id      NUMBER;
69540 l_adr_accounting_coa_id       NUMBER;
69541 l_adr_flexfield_segment_code  VARCHAR2(30);
69542 l_adr_flex_value_set_id       NUMBER;
69543 l_adr_value_type_code         VARCHAR2(30);
69544 l_adr_value_combination_id    NUMBER;
69545 l_adr_value_segment_code      VARCHAR2(30);
69546 
69547 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
69548 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
69549 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
69550 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
69551 
69552 -- 4262811 Variables ------------------------------------------------------------------------------------------
69553 l_entered_amt_idx             NUMBER;
69554 l_accted_amt_idx              NUMBER;
69555 l_acc_rev_flag                VARCHAR2(1);
69556 l_accrual_line_num            NUMBER;
69557 l_tmp_amt                     NUMBER;
69558 l_acc_rev_natural_side_code   VARCHAR2(1);
69559 
69560 l_num_entries                 NUMBER;
69561 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
69562 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
69563 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
69564 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
69565 l_recog_line_1                NUMBER;
69566 l_recog_line_2                NUMBER;
69567 
69568 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
69569 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
69570 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
69571 
69572 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
69573 
69574 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
69575 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
69576 
69577 ---------------------------------------------------------------------------------------------------------------
69578 
69579 
69580 --
69581 -- bulk performance
69582 --
69583 l_balance_type_code           VARCHAR2(1);
69584 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
69585 l_log_module                  VARCHAR2(240);
69586 
69587 --
69588 -- Upgrade strategy
69589 --
69590 l_actual_upg_option           VARCHAR2(1);
69591 l_enc_upg_option           VARCHAR2(1);
69592 
69593 --
69594 BEGIN
69595 --
69596 IF g_log_enabled THEN
69597       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_128';
69598 END IF;
69599 --
69600 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69601 
69602       trace
69603          (p_msg      => 'BEGIN of AcctLineType_128'
69604          ,p_level    => C_LEVEL_PROCEDURE
69605          ,p_module   => l_log_module);
69606 
69607 END IF;
69608 --
69609 l_component_type             := 'AMB_JLT';
69610 l_component_code             := 'INTRANSIT_VALUATION';
69611 l_component_type_code        := 'S';
69612 l_component_appl_id          :=  707;
69613 l_amb_context_code           := 'DEFAULT';
69614 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
69615 l_event_class_code           := 'FOB_RCPT_SENDER_SHIP';
69616 l_event_type_code            := 'FOB_RCPT_SENDER_SHIP_ALL';
69617 l_line_definition_owner_code := 'S';
69618 l_line_definition_code       := 'FOB_RCPT_SEND_SHIP';
69619 --
69620 l_balance_type_code          := 'A';
69621 l_segment                     := NULL;
69622 l_ccid                        := NULL;
69623 l_adr_transaction_coa_id      := NULL;
69624 l_adr_accounting_coa_id       := NULL;
69625 l_adr_flexfield_segment_code  := NULL;
69626 l_adr_flex_value_set_id       := NULL;
69627 l_adr_value_type_code         := NULL;
69628 l_adr_value_combination_id    := NULL;
69629 l_adr_value_segment_code      := NULL;
69630 
69631 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
69632 l_bflow_class_code           := '';    -- 4219869 Business Flow
69633 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
69634 l_budgetary_control_flag     := 'N';
69635 
69636 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
69637 l_bflow_applied_to_amt       := NULL; -- 5132302
69638 l_entered_amt_idx            := NULL;          -- 4262811
69639 l_accted_amt_idx             := NULL;          -- 4262811
69640 l_acc_rev_flag               := NULL;          -- 4262811
69641 l_accrual_line_num           := NULL;          -- 4262811
69642 l_tmp_amt                    := NULL;          -- 4262811
69643 --
69644  
69645 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
69646     l_balance_type_code <> 'B' THEN
69647 IF NVL(p_source_24,9E125) =  14
69648  THEN 
69649 
69650    --
69651    XLA_AE_LINES_PKG.SetNewLine;
69652 
69653    p_balance_type_code          := l_balance_type_code;
69654    -- set the flag so later we will know whether the gain loss line needs to be created
69655    
69656    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
69657      p_actual_flag :='A';
69658    END IF;
69659 
69660    --
69661    -- bulk performance
69662    --
69663    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
69664                                       p_header_num   => 0); -- 4262811
69665    --
69666    -- set accounting line options
69667    --
69668    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
69669            p_natural_side_code          => 'D'
69670          , p_gain_or_loss_flag          => 'N'
69671          , p_gl_transfer_mode_code      => 'S'
69672          , p_acct_entry_type_code       => 'A'
69673          , p_switch_side_flag           => 'Y'
69674          , p_merge_duplicate_code       => 'N'
69675          );
69676    --
69677    l_acc_rev_natural_side_code := 'C';  -- 4262811
69678    -- 
69679    --
69680    -- set accounting line type info
69681    --
69682    xla_ae_lines_pkg.SetAcctLineType
69683       (p_component_type             => l_component_type
69684       ,p_event_type_code            => l_event_type_code
69685       ,p_line_definition_owner_code => l_line_definition_owner_code
69686       ,p_line_definition_code       => l_line_definition_code
69687       ,p_accounting_line_code       => l_component_code
69688       ,p_accounting_line_type_code  => l_component_type_code
69689       ,p_accounting_line_appl_id    => l_component_appl_id
69690       ,p_amb_context_code           => l_amb_context_code
69691       ,p_entity_code                => l_entity_code
69692       ,p_event_class_code           => l_event_class_code);
69693    --
69694    -- set accounting class
69695    --
69696    xla_ae_lines_pkg.SetAcctClass(
69697            p_accounting_class_code  => 'INTRANSIT_VALUATION'
69698          , p_ae_header_id           => l_ae_header_id
69699          );
69700 
69701    --
69702    -- set rounding class
69703    --
69704    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
69705                       'INTRANSIT_VALUATION';
69706 
69707    --
69708    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
69709    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
69710    --
69711    -- bulk performance
69712    --
69713    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
69714 
69715    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
69716       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
69717 
69718    -- 4955764
69719    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
69720       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
69721 
69722    -- 4458381 Public Sector Enh
69723    
69724    --
69725    -- set accounting attributes for the line type
69726    --
69727    l_entered_amt_idx := 3;
69728    l_accted_amt_idx  := 8;
69729    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
69730    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
69731    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
69732    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
69733    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
69734    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
69735    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
69736    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
69737    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
69738    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
69739    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
69740    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
69741    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
69742    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
69743    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
69744    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
69745    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
69746 
69747    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
69748    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
69749 
69750    ---------------------------------------------------------------------------------------------------------------
69751    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
69752    ---------------------------------------------------------------------------------------------------------------
69753    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
69754 
69755    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69756    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69757 
69758    IF xla_accounting_cache_pkg.GetValueChar
69759          (p_source_code         => 'LEDGER_CATEGORY_CODE'
69760          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
69761    AND l_bflow_method_code = 'PRIOR_ENTRY'
69762 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
69763    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
69764          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
69765        )
69766    THEN
69767          xla_ae_lines_pkg.BflowUpgEntry
69768            (p_business_method_code    => l_bflow_method_code
69769            ,p_business_class_code     => l_bflow_class_code
69770            ,p_balance_type            => l_balance_type_code);
69771    ELSE
69772       NULL;
69773 -- No business flow processing for business flow method of NONE.
69774    END IF;
69775 
69776    --
69777    -- call analytical criteria
69778    --
69779    
69780    --
69781    -- call description
69782    --
69783    -- No description or it is inherited.
69784    --
69785    -- call ADRs
69786    -- Bug 4922099
69787    --
69788    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
69789         (NVL(l_actual_upg_option, 'N') = 'O') OR
69790         (NVL(l_enc_upg_option, 'N') = 'O')
69791       )
69792    THEN
69793    NULL;
69794    --
69795    --
69796    
69797   l_ccid := AcctDerRule_4(
69798            p_application_id           => p_application_id
69799          , p_ae_header_id             => l_ae_header_id 
69800 , p_source_4 => p_source_4
69801          , x_transaction_coa_id       => l_adr_transaction_coa_id
69802          , x_accounting_coa_id        => l_adr_accounting_coa_id
69803          , x_value_type_code          => l_adr_value_type_code
69804          , p_side                     => 'NA'
69805    );
69806 
69807    xla_ae_lines_pkg.set_ccid(
69808     p_code_combination_id          => l_ccid
69809   , p_value_type_code              => l_adr_value_type_code
69810   , p_transaction_coa_id           => l_adr_transaction_coa_id
69811   , p_accounting_coa_id            => l_adr_accounting_coa_id
69812   , p_adr_code                     => 'CST_DEFAULT'
69813   , p_adr_type_code                => 'S'
69814   , p_component_type               => l_component_type
69815   , p_component_code               => l_component_code
69816   , p_component_type_code          => l_component_type_code
69817   , p_component_appl_id            => l_component_appl_id
69818   , p_amb_context_code             => l_amb_context_code
69819   , p_side                         => 'NA'
69820   );
69821 
69822 
69823    --
69824    --
69825    END IF;
69826    --
69827    -- Bug 4922099
69828    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
69829           (NVL(l_enc_upg_option, 'N') = 'O')
69830         ) AND
69831         (l_bflow_method_code = 'PRIOR_ENTRY')
69832       )
69833    THEN
69834       IF
69835       --
69836       1 = 2
69837       --
69838       THEN
69839       xla_accounting_err_pkg.build_message
69840                                     (p_appli_s_name            => 'XLA'
69841                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69842                                     ,p_token_1                 => 'LINE_NUMBER'
69843                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
69844                                     ,p_token_2                 => 'LINE_TYPE_NAME'
69845                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
69846                                                                              l_component_type
69847                                                                             ,l_component_code
69848                                                                             ,l_component_type_code
69849                                                                             ,l_component_appl_id
69850                                                                             ,l_amb_context_code
69851                                                                             ,l_entity_code
69852                                                                             ,l_event_class_code
69853                                                                            )
69854                                     ,p_token_3                 => 'OWNER'
69855                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
69856                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
69857                                                                           ,p_lookup_code    => l_component_type_code
69858                                                                          )
69859                                     ,p_token_4                 => 'PRODUCT_NAME'
69860                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
69861                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
69862                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
69863                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
69864                                     ,p_ae_header_id            =>  NULL
69865                                        );
69866 
69867         IF (C_LEVEL_ERROR>= g_log_level) THEN
69868                  trace
69869                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69870                       ,p_level    => C_LEVEL_ERROR
69871                       ,p_module   => l_log_module);
69872         END IF;
69873       END IF;
69874    END IF;
69875    --
69876    --
69877    ------------------------------------------------------------------------------------------------
69878    -- 4219869 Business Flow
69879    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
69880    -- Prior Entry.  Currently, the following code is always generated.
69881    ------------------------------------------------------------------------------------------------
69882    XLA_AE_LINES_PKG.ValidateCurrentLine;
69883 
69884    ------------------------------------------------------------------------------------
69885    -- 4219869 Business Flow
69886    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
69887    ------------------------------------------------------------------------------------
69888    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
69889 
69890    ----------------------------------------------------------------------------------
69891    -- 4219869 Business Flow
69892    -- Update journal entry status -- Need to generate this within IF <condition>
69893    ----------------------------------------------------------------------------------
69894    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
69895          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
69896          ,p_balance_type_code => l_balance_type_code
69897          );
69898 
69899    -------------------------------------------------------------------------------------------
69900    -- 4262811 - Generate the Accrual Reversal lines
69901    -------------------------------------------------------------------------------------------
69902    BEGIN
69903       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
69904                               (g_array_event(p_event_id).array_value_num('header_index'));
69905       IF l_acc_rev_flag IS NULL THEN
69906          l_acc_rev_flag := 'N';
69907       END IF;
69908    EXCEPTION
69909       WHEN OTHERS THEN
69910          l_acc_rev_flag := 'N';
69911    END;
69912    --
69913    IF (l_acc_rev_flag = 'Y') THEN
69914 
69915        -- 4645092  ------------------------------------------------------------------------------
69916        -- To allow MPA report to determine if it should generate report process
69917        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
69918        ------------------------------------------------------------------------------------------
69919 
69920        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
69921        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
69922    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
69923    -- call ADRs
69924    -- Bug 4922099
69925    --
69926    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
69927         (NVL(l_actual_upg_option, 'N') = 'O') OR
69928         (NVL(l_enc_upg_option, 'N') = 'O')
69929       )
69930    THEN
69931    NULL;
69932    --
69933    --
69934    
69935   l_ccid := AcctDerRule_4(
69936            p_application_id           => p_application_id
69937          , p_ae_header_id             => l_ae_header_id 
69938 , p_source_4 => p_source_4
69939          , x_transaction_coa_id       => l_adr_transaction_coa_id
69940          , x_accounting_coa_id        => l_adr_accounting_coa_id
69941          , x_value_type_code          => l_adr_value_type_code
69942          , p_side                     => 'NA'
69943    );
69944 
69945    xla_ae_lines_pkg.set_ccid(
69946     p_code_combination_id          => l_ccid
69947   , p_value_type_code              => l_adr_value_type_code
69948   , p_transaction_coa_id           => l_adr_transaction_coa_id
69949   , p_accounting_coa_id            => l_adr_accounting_coa_id
69950   , p_adr_code                     => 'CST_DEFAULT'
69951   , p_adr_type_code                => 'S'
69952   , p_component_type               => l_component_type
69953   , p_component_code               => l_component_code
69954   , p_component_type_code          => l_component_type_code
69955   , p_component_appl_id            => l_component_appl_id
69956   , p_amb_context_code             => l_amb_context_code
69957   , p_side                         => 'NA'
69958   );
69959 
69960 
69961    --
69962    --
69963    END IF;
69964 
69965        --
69966        -- Update the line information that should be overwritten
69967        --
69968        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
69969                                          p_header_num   => 1);
69970        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
69971 
69972        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
69973 
69974        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
69975           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
69976        END IF;
69977 
69978       --
69979       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
69980       --
69981       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
69982           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
69983       ELSE
69984           ---------------------------------------------------------------------------------------------------
69985           -- 4262811a Switch Sign
69986           ---------------------------------------------------------------------------------------------------
69987           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
69988           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
69989                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69990           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
69991                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69992           -- 5132302
69993           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
69994                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69995 
69996       END IF;
69997 
69998       -- 4955764
69999       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
70000       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
70001 
70002 
70003       XLA_AE_LINES_PKG.ValidateCurrentLine;
70004       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
70005 
70006       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
70007                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
70008                ,p_balance_type_code => l_balance_type_code);
70009 
70010    END IF;
70011 
70012    -----------------------------------------------------------------------------------------
70013    -- 4262811 Multiperiod Accounting
70014    -----------------------------------------------------------------------------------------
70015      -- No MPA option is assigned.
70016 
70017 
70018 END IF;
70019 END IF;
70020 --
70021 
70022 --
70023 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70024    trace
70025       (p_msg      => 'END of AcctLineType_128'
70026       ,p_level    => C_LEVEL_PROCEDURE
70027       ,p_module   => l_log_module);
70028 END IF;
70029 --
70030 EXCEPTION
70031   WHEN xla_exceptions_pkg.application_exception THEN
70032       RAISE;
70033   WHEN OTHERS THEN
70034        xla_exceptions_pkg.raise_message
70035            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_128');
70036 END AcctLineType_128;
70037 --
70038 
70039 ---------------------------------------
70040 --
70041 -- PRIVATE FUNCTION
70042 --         AcctLineType_129
70043 --
70044 ---------------------------------------
70045 PROCEDURE AcctLineType_129 (
70046   p_application_id        IN NUMBER
70047  ,p_event_id              IN NUMBER
70048  ,p_calculate_acctd_flag  IN VARCHAR2
70049  ,p_calculate_g_l_flag    IN VARCHAR2
70050  ,p_actual_flag           IN OUT VARCHAR2
70051  ,p_balance_type_code     OUT VARCHAR2
70052  ,p_gain_or_loss_ref      OUT VARCHAR2
70053  
70054 --Cost Management Default Account
70055  , p_source_4            IN NUMBER
70056 --Applied to Application ID
70057  , p_source_6            IN NUMBER
70058 --Applied to Distribution Link Type
70059  , p_source_7            IN VARCHAR2
70060 --Applied to Entity Code
70061  , p_source_8            IN VARCHAR2
70062 --DISTRIBUTION_IDENTIFIER
70063  , p_source_11            IN NUMBER
70064 --Distribution Type
70065  , p_source_12            IN VARCHAR2
70066  , p_source_12_meaning    IN VARCHAR2
70067 --Encumbrance Reversal Amount Entered
70068  , p_source_14            IN NUMBER
70069 --Entered Currency Code
70070  , p_source_15            IN VARCHAR2
70071 --Transaction Encumbrance Reversal Amount
70072  , p_source_16            IN NUMBER
70073 --Entered Amount
70074  , p_source_18            IN NUMBER
70075 --Currency Conversion Date
70076  , p_source_19            IN DATE
70077 --Currency Conversion Rate
70078  , p_source_20            IN NUMBER
70079 --Currency Conversion Type
70080  , p_source_21            IN VARCHAR2
70081 --Accounted Amount
70082  , p_source_22            IN NUMBER
70083 --Accounting Line Type
70084  , p_source_24            IN NUMBER
70085 --Costing Encumbrance Upgrade Option
70086  , p_source_27            IN VARCHAR2
70087 --TXN_PO_DISTRIBUTION_ID
70088  , p_source_28            IN NUMBER
70089 --TXN_PO_HEADER_ID
70090  , p_source_29            IN NUMBER
70091 --Requisition Budget Account
70092  , p_source_30            IN NUMBER
70093 --Requisition Encumbrance Type Identifier
70094  , p_source_31            IN NUMBER
70095 )
70096 IS
70097 
70098 l_component_type              VARCHAR2(80);
70099 l_component_code              VARCHAR2(30);
70100 l_component_type_code         VARCHAR2(1);
70101 l_component_appl_id           INTEGER;
70102 l_amb_context_code            VARCHAR2(30);
70103 l_entity_code                 VARCHAR2(30);
70104 l_event_class_code            VARCHAR2(30);
70105 l_ae_header_id                NUMBER;
70106 l_event_type_code             VARCHAR2(30);
70107 l_line_definition_code        VARCHAR2(30);
70108 l_line_definition_owner_code  VARCHAR2(1);
70109 --
70110 -- adr variables
70111 l_segment                     VARCHAR2(30);
70112 l_ccid                        NUMBER;
70113 l_adr_transaction_coa_id      NUMBER;
70114 l_adr_accounting_coa_id       NUMBER;
70115 l_adr_flexfield_segment_code  VARCHAR2(30);
70116 l_adr_flex_value_set_id       NUMBER;
70117 l_adr_value_type_code         VARCHAR2(30);
70118 l_adr_value_combination_id    NUMBER;
70119 l_adr_value_segment_code      VARCHAR2(30);
70120 
70121 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
70122 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
70123 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
70124 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
70125 
70126 -- 4262811 Variables ------------------------------------------------------------------------------------------
70127 l_entered_amt_idx             NUMBER;
70128 l_accted_amt_idx              NUMBER;
70129 l_acc_rev_flag                VARCHAR2(1);
70130 l_accrual_line_num            NUMBER;
70131 l_tmp_amt                     NUMBER;
70132 l_acc_rev_natural_side_code   VARCHAR2(1);
70133 
70134 l_num_entries                 NUMBER;
70135 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
70136 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
70137 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
70138 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
70139 l_recog_line_1                NUMBER;
70140 l_recog_line_2                NUMBER;
70141 
70142 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
70143 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
70144 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
70145 
70146 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
70147 
70148 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
70149 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
70150 
70151 ---------------------------------------------------------------------------------------------------------------
70152 
70153 
70154 --
70155 -- bulk performance
70156 --
70157 l_balance_type_code           VARCHAR2(1);
70158 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
70159 l_log_module                  VARCHAR2(240);
70160 
70161 --
70162 -- Upgrade strategy
70163 --
70164 l_actual_upg_option           VARCHAR2(1);
70165 l_enc_upg_option           VARCHAR2(1);
70166 
70167 --
70168 BEGIN
70169 --
70170 IF g_log_enabled THEN
70171       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_129';
70172 END IF;
70173 --
70174 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70175 
70176       trace
70177          (p_msg      => 'BEGIN of AcctLineType_129'
70178          ,p_level    => C_LEVEL_PROCEDURE
70179          ,p_module   => l_log_module);
70180 
70181 END IF;
70182 --
70183 l_component_type             := 'AMB_JLT';
70184 l_component_code             := 'INTRANSIT_VALUATION';
70185 l_component_type_code        := 'S';
70186 l_component_appl_id          :=  707;
70187 l_amb_context_code           := 'DEFAULT';
70188 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
70189 l_event_class_code           := 'FOB_SHIP_RECIPIENT_RCPT';
70190 l_event_type_code            := 'FOB_SHIP_RECIPIENT_RCPT_ALL';
70191 l_line_definition_owner_code := 'S';
70192 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_RCPT';
70193 --
70194 l_balance_type_code          := 'A';
70195 l_segment                     := NULL;
70196 l_ccid                        := NULL;
70197 l_adr_transaction_coa_id      := NULL;
70198 l_adr_accounting_coa_id       := NULL;
70199 l_adr_flexfield_segment_code  := NULL;
70200 l_adr_flex_value_set_id       := NULL;
70201 l_adr_value_type_code         := NULL;
70202 l_adr_value_combination_id    := NULL;
70203 l_adr_value_segment_code      := NULL;
70204 
70205 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
70206 l_bflow_class_code           := '';    -- 4219869 Business Flow
70207 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
70208 l_budgetary_control_flag     := 'N';
70209 
70210 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
70211 l_bflow_applied_to_amt       := NULL; -- 5132302
70212 l_entered_amt_idx            := NULL;          -- 4262811
70213 l_accted_amt_idx             := NULL;          -- 4262811
70214 l_acc_rev_flag               := NULL;          -- 4262811
70215 l_accrual_line_num           := NULL;          -- 4262811
70216 l_tmp_amt                    := NULL;          -- 4262811
70217 --
70218  
70219 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
70220     l_balance_type_code <> 'B' THEN
70221 IF NVL(p_source_24,9E125) =  14
70222  THEN 
70223 
70224    --
70225    XLA_AE_LINES_PKG.SetNewLine;
70226 
70227    p_balance_type_code          := l_balance_type_code;
70228    -- set the flag so later we will know whether the gain loss line needs to be created
70229    
70230    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
70231      p_actual_flag :='A';
70232    END IF;
70233 
70234    --
70235    -- bulk performance
70236    --
70237    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
70238                                       p_header_num   => 0); -- 4262811
70239    --
70240    -- set accounting line options
70241    --
70242    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
70243            p_natural_side_code          => 'D'
70244          , p_gain_or_loss_flag          => 'N'
70245          , p_gl_transfer_mode_code      => 'S'
70246          , p_acct_entry_type_code       => 'A'
70247          , p_switch_side_flag           => 'Y'
70248          , p_merge_duplicate_code       => 'N'
70249          );
70250    --
70251    l_acc_rev_natural_side_code := 'C';  -- 4262811
70252    -- 
70253    --
70254    -- set accounting line type info
70255    --
70256    xla_ae_lines_pkg.SetAcctLineType
70257       (p_component_type             => l_component_type
70258       ,p_event_type_code            => l_event_type_code
70259       ,p_line_definition_owner_code => l_line_definition_owner_code
70260       ,p_line_definition_code       => l_line_definition_code
70261       ,p_accounting_line_code       => l_component_code
70262       ,p_accounting_line_type_code  => l_component_type_code
70263       ,p_accounting_line_appl_id    => l_component_appl_id
70264       ,p_amb_context_code           => l_amb_context_code
70265       ,p_entity_code                => l_entity_code
70266       ,p_event_class_code           => l_event_class_code);
70267    --
70268    -- set accounting class
70269    --
70270    xla_ae_lines_pkg.SetAcctClass(
70271            p_accounting_class_code  => 'INTRANSIT_VALUATION'
70272          , p_ae_header_id           => l_ae_header_id
70273          );
70274 
70275    --
70276    -- set rounding class
70277    --
70278    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
70279                       'INTRANSIT_VALUATION';
70280 
70281    --
70282    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
70283    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
70284    --
70285    -- bulk performance
70286    --
70287    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
70288 
70289    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
70290       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
70291 
70292    -- 4955764
70293    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
70294       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
70295 
70296    -- 4458381 Public Sector Enh
70297    
70298    --
70299    -- set accounting attributes for the line type
70300    --
70301    l_entered_amt_idx := 17;
70302    l_accted_amt_idx  := 22;
70303    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
70304    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
70305    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
70306    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
70307    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
70308    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
70309    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
70310    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
70311    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
70312    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
70313    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
70314    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
70315    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
70316    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
70317    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
70318    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
70319    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
70320    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
70321    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
70322    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
70323    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
70324    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
70325    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
70326    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
70327    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
70328    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
70329    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
70330    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
70331    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
70332    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
70333    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
70334    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
70335    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
70336    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
70337    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
70338    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
70339    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
70340    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
70341    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
70342    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
70343    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
70344    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
70345    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
70346    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
70347    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
70348    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
70349    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
70350    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
70351    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
70352 
70353    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
70354    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
70355 
70356    ---------------------------------------------------------------------------------------------------------------
70357    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
70358    ---------------------------------------------------------------------------------------------------------------
70359    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
70360 
70361    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
70362    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
70363 
70364    IF xla_accounting_cache_pkg.GetValueChar
70365          (p_source_code         => 'LEDGER_CATEGORY_CODE'
70366          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
70367    AND l_bflow_method_code = 'PRIOR_ENTRY'
70368 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
70369    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
70370          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
70371        )
70372    THEN
70373          xla_ae_lines_pkg.BflowUpgEntry
70374            (p_business_method_code    => l_bflow_method_code
70375            ,p_business_class_code     => l_bflow_class_code
70376            ,p_balance_type            => l_balance_type_code);
70377    ELSE
70378       NULL;
70379 -- No business flow processing for business flow method of NONE.
70380    END IF;
70381 
70382    --
70383    -- call analytical criteria
70384    --
70385    
70386    --
70387    -- call description
70388    --
70389    -- No description or it is inherited.
70390    --
70391    -- call ADRs
70392    -- Bug 4922099
70393    --
70394    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
70395         (NVL(l_actual_upg_option, 'N') = 'O') OR
70396         (NVL(l_enc_upg_option, 'N') = 'O')
70397       )
70398    THEN
70399    NULL;
70400    --
70401    --
70402    
70403   l_ccid := AcctDerRule_4(
70404            p_application_id           => p_application_id
70405          , p_ae_header_id             => l_ae_header_id 
70406 , p_source_4 => p_source_4
70407          , x_transaction_coa_id       => l_adr_transaction_coa_id
70408          , x_accounting_coa_id        => l_adr_accounting_coa_id
70409          , x_value_type_code          => l_adr_value_type_code
70410          , p_side                     => 'NA'
70411    );
70412 
70413    xla_ae_lines_pkg.set_ccid(
70414     p_code_combination_id          => l_ccid
70415   , p_value_type_code              => l_adr_value_type_code
70416   , p_transaction_coa_id           => l_adr_transaction_coa_id
70417   , p_accounting_coa_id            => l_adr_accounting_coa_id
70418   , p_adr_code                     => 'CST_DEFAULT'
70419   , p_adr_type_code                => 'S'
70420   , p_component_type               => l_component_type
70421   , p_component_code               => l_component_code
70422   , p_component_type_code          => l_component_type_code
70423   , p_component_appl_id            => l_component_appl_id
70424   , p_amb_context_code             => l_amb_context_code
70425   , p_side                         => 'NA'
70426   );
70427 
70428 
70429    --
70430    --
70431    END IF;
70432    --
70433    -- Bug 4922099
70434    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
70435           (NVL(l_enc_upg_option, 'N') = 'O')
70436         ) AND
70437         (l_bflow_method_code = 'PRIOR_ENTRY')
70438       )
70439    THEN
70440       IF
70441       --
70442       1 = 2
70443       --
70444       THEN
70445       xla_accounting_err_pkg.build_message
70446                                     (p_appli_s_name            => 'XLA'
70447                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
70448                                     ,p_token_1                 => 'LINE_NUMBER'
70449                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
70450                                     ,p_token_2                 => 'LINE_TYPE_NAME'
70451                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
70452                                                                              l_component_type
70453                                                                             ,l_component_code
70454                                                                             ,l_component_type_code
70455                                                                             ,l_component_appl_id
70456                                                                             ,l_amb_context_code
70457                                                                             ,l_entity_code
70458                                                                             ,l_event_class_code
70459                                                                            )
70460                                     ,p_token_3                 => 'OWNER'
70461                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
70462                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
70463                                                                           ,p_lookup_code    => l_component_type_code
70464                                                                          )
70465                                     ,p_token_4                 => 'PRODUCT_NAME'
70466                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
70467                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
70468                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
70469                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
70470                                     ,p_ae_header_id            =>  NULL
70471                                        );
70472 
70473         IF (C_LEVEL_ERROR>= g_log_level) THEN
70474                  trace
70475                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
70476                       ,p_level    => C_LEVEL_ERROR
70477                       ,p_module   => l_log_module);
70478         END IF;
70479       END IF;
70480    END IF;
70481    --
70482    --
70483    ------------------------------------------------------------------------------------------------
70484    -- 4219869 Business Flow
70485    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
70486    -- Prior Entry.  Currently, the following code is always generated.
70487    ------------------------------------------------------------------------------------------------
70488    XLA_AE_LINES_PKG.ValidateCurrentLine;
70489 
70490    ------------------------------------------------------------------------------------
70491    -- 4219869 Business Flow
70492    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
70493    ------------------------------------------------------------------------------------
70494    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
70495 
70496    ----------------------------------------------------------------------------------
70497    -- 4219869 Business Flow
70498    -- Update journal entry status -- Need to generate this within IF <condition>
70499    ----------------------------------------------------------------------------------
70500    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
70501          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
70502          ,p_balance_type_code => l_balance_type_code
70503          );
70504 
70505    -------------------------------------------------------------------------------------------
70506    -- 4262811 - Generate the Accrual Reversal lines
70507    -------------------------------------------------------------------------------------------
70508    BEGIN
70509       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
70510                               (g_array_event(p_event_id).array_value_num('header_index'));
70511       IF l_acc_rev_flag IS NULL THEN
70512          l_acc_rev_flag := 'N';
70513       END IF;
70514    EXCEPTION
70515       WHEN OTHERS THEN
70516          l_acc_rev_flag := 'N';
70517    END;
70518    --
70519    IF (l_acc_rev_flag = 'Y') THEN
70520 
70521        -- 4645092  ------------------------------------------------------------------------------
70522        -- To allow MPA report to determine if it should generate report process
70523        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
70524        ------------------------------------------------------------------------------------------
70525 
70526        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
70527        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
70528    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
70529    -- call ADRs
70530    -- Bug 4922099
70531    --
70532    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
70533         (NVL(l_actual_upg_option, 'N') = 'O') OR
70534         (NVL(l_enc_upg_option, 'N') = 'O')
70535       )
70536    THEN
70537    NULL;
70538    --
70539    --
70540    
70541   l_ccid := AcctDerRule_4(
70542            p_application_id           => p_application_id
70543          , p_ae_header_id             => l_ae_header_id 
70544 , p_source_4 => p_source_4
70545          , x_transaction_coa_id       => l_adr_transaction_coa_id
70546          , x_accounting_coa_id        => l_adr_accounting_coa_id
70547          , x_value_type_code          => l_adr_value_type_code
70548          , p_side                     => 'NA'
70549    );
70550 
70551    xla_ae_lines_pkg.set_ccid(
70552     p_code_combination_id          => l_ccid
70553   , p_value_type_code              => l_adr_value_type_code
70554   , p_transaction_coa_id           => l_adr_transaction_coa_id
70555   , p_accounting_coa_id            => l_adr_accounting_coa_id
70556   , p_adr_code                     => 'CST_DEFAULT'
70557   , p_adr_type_code                => 'S'
70558   , p_component_type               => l_component_type
70559   , p_component_code               => l_component_code
70560   , p_component_type_code          => l_component_type_code
70561   , p_component_appl_id            => l_component_appl_id
70562   , p_amb_context_code             => l_amb_context_code
70563   , p_side                         => 'NA'
70564   );
70565 
70566 
70567    --
70568    --
70569    END IF;
70570 
70571        --
70572        -- Update the line information that should be overwritten
70573        --
70574        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
70575                                          p_header_num   => 1);
70576        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
70577 
70578        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
70579 
70580        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
70581           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
70582        END IF;
70583 
70584       --
70585       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
70586       --
70587       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
70588           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
70589       ELSE
70590           ---------------------------------------------------------------------------------------------------
70591           -- 4262811a Switch Sign
70592           ---------------------------------------------------------------------------------------------------
70593           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
70594           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
70595                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
70596           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
70597                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
70598           -- 5132302
70599           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
70600                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
70601 
70602       END IF;
70603 
70604       -- 4955764
70605       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
70606       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
70607 
70608 
70609       XLA_AE_LINES_PKG.ValidateCurrentLine;
70610       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
70611 
70612       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
70613                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
70614                ,p_balance_type_code => l_balance_type_code);
70615 
70616    END IF;
70617 
70618    -----------------------------------------------------------------------------------------
70619    -- 4262811 Multiperiod Accounting
70620    -----------------------------------------------------------------------------------------
70621      -- No MPA option is assigned.
70622 
70623 
70624 END IF;
70625 END IF;
70626 --
70627 
70628 --
70629 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70630    trace
70631       (p_msg      => 'END of AcctLineType_129'
70632       ,p_level    => C_LEVEL_PROCEDURE
70633       ,p_module   => l_log_module);
70634 END IF;
70635 --
70636 EXCEPTION
70637   WHEN xla_exceptions_pkg.application_exception THEN
70638       RAISE;
70639   WHEN OTHERS THEN
70640        xla_exceptions_pkg.raise_message
70641            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_129');
70642 END AcctLineType_129;
70643 --
70644 
70645 ---------------------------------------
70646 --
70647 -- PRIVATE FUNCTION
70648 --         AcctLineType_130
70649 --
70650 ---------------------------------------
70651 PROCEDURE AcctLineType_130 (
70652   p_application_id        IN NUMBER
70653  ,p_event_id              IN NUMBER
70654  ,p_calculate_acctd_flag  IN VARCHAR2
70655  ,p_calculate_g_l_flag    IN VARCHAR2
70656  ,p_actual_flag           IN OUT VARCHAR2
70657  ,p_balance_type_code     OUT VARCHAR2
70658  ,p_gain_or_loss_ref      OUT VARCHAR2
70659  
70660 --Cost Management Default Account
70661  , p_source_4            IN NUMBER
70662 --DISTRIBUTION_IDENTIFIER
70663  , p_source_11            IN NUMBER
70664 --Distribution Type
70665  , p_source_12            IN VARCHAR2
70666  , p_source_12_meaning    IN VARCHAR2
70667 --Entered Currency Code
70668  , p_source_15            IN VARCHAR2
70669 --Entered Amount
70670  , p_source_18            IN NUMBER
70671 --Currency Conversion Date
70672  , p_source_19            IN DATE
70673 --Currency Conversion Rate
70674  , p_source_20            IN NUMBER
70675 --Currency Conversion Type
70676  , p_source_21            IN VARCHAR2
70677 --Accounted Amount
70678  , p_source_22            IN NUMBER
70679 --Accounting Line Type
70680  , p_source_24            IN NUMBER
70681 )
70682 IS
70683 
70684 l_component_type              VARCHAR2(80);
70685 l_component_code              VARCHAR2(30);
70686 l_component_type_code         VARCHAR2(1);
70687 l_component_appl_id           INTEGER;
70688 l_amb_context_code            VARCHAR2(30);
70689 l_entity_code                 VARCHAR2(30);
70690 l_event_class_code            VARCHAR2(30);
70691 l_ae_header_id                NUMBER;
70692 l_event_type_code             VARCHAR2(30);
70693 l_line_definition_code        VARCHAR2(30);
70694 l_line_definition_owner_code  VARCHAR2(1);
70695 --
70696 -- adr variables
70697 l_segment                     VARCHAR2(30);
70698 l_ccid                        NUMBER;
70699 l_adr_transaction_coa_id      NUMBER;
70700 l_adr_accounting_coa_id       NUMBER;
70701 l_adr_flexfield_segment_code  VARCHAR2(30);
70702 l_adr_flex_value_set_id       NUMBER;
70703 l_adr_value_type_code         VARCHAR2(30);
70704 l_adr_value_combination_id    NUMBER;
70705 l_adr_value_segment_code      VARCHAR2(30);
70706 
70707 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
70708 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
70709 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
70710 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
70711 
70712 -- 4262811 Variables ------------------------------------------------------------------------------------------
70713 l_entered_amt_idx             NUMBER;
70714 l_accted_amt_idx              NUMBER;
70715 l_acc_rev_flag                VARCHAR2(1);
70716 l_accrual_line_num            NUMBER;
70717 l_tmp_amt                     NUMBER;
70718 l_acc_rev_natural_side_code   VARCHAR2(1);
70719 
70720 l_num_entries                 NUMBER;
70721 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
70722 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
70723 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
70724 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
70725 l_recog_line_1                NUMBER;
70726 l_recog_line_2                NUMBER;
70727 
70728 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
70729 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
70730 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
70731 
70732 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
70733 
70734 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
70735 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
70736 
70737 ---------------------------------------------------------------------------------------------------------------
70738 
70739 
70740 --
70741 -- bulk performance
70742 --
70743 l_balance_type_code           VARCHAR2(1);
70744 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
70745 l_log_module                  VARCHAR2(240);
70746 
70747 --
70748 -- Upgrade strategy
70749 --
70750 l_actual_upg_option           VARCHAR2(1);
70751 l_enc_upg_option           VARCHAR2(1);
70752 
70753 --
70754 BEGIN
70755 --
70756 IF g_log_enabled THEN
70757       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_130';
70758 END IF;
70759 --
70760 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70761 
70762       trace
70763          (p_msg      => 'BEGIN of AcctLineType_130'
70764          ,p_level    => C_LEVEL_PROCEDURE
70765          ,p_module   => l_log_module);
70766 
70767 END IF;
70768 --
70769 l_component_type             := 'AMB_JLT';
70770 l_component_code             := 'INTRANSIT_VALUATION';
70771 l_component_type_code        := 'S';
70772 l_component_appl_id          :=  707;
70773 l_amb_context_code           := 'DEFAULT';
70774 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
70775 l_event_class_code           := 'USER_DEFINE';
70776 l_event_type_code            := 'UAVG_COST_UPD';
70777 l_line_definition_owner_code := 'S';
70778 l_line_definition_code       := 'USER_COST_UPD';
70779 --
70780 l_balance_type_code          := 'A';
70781 l_segment                     := NULL;
70782 l_ccid                        := NULL;
70783 l_adr_transaction_coa_id      := NULL;
70784 l_adr_accounting_coa_id       := NULL;
70785 l_adr_flexfield_segment_code  := NULL;
70786 l_adr_flex_value_set_id       := NULL;
70787 l_adr_value_type_code         := NULL;
70788 l_adr_value_combination_id    := NULL;
70789 l_adr_value_segment_code      := NULL;
70790 
70791 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
70792 l_bflow_class_code           := '';    -- 4219869 Business Flow
70793 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
70794 l_budgetary_control_flag     := 'N';
70795 
70796 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
70797 l_bflow_applied_to_amt       := NULL; -- 5132302
70798 l_entered_amt_idx            := NULL;          -- 4262811
70799 l_accted_amt_idx             := NULL;          -- 4262811
70800 l_acc_rev_flag               := NULL;          -- 4262811
70801 l_accrual_line_num           := NULL;          -- 4262811
70802 l_tmp_amt                    := NULL;          -- 4262811
70803 --
70804  
70805 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
70806     l_balance_type_code <> 'B' THEN
70807 IF NVL(p_source_24,9E125) =  14
70808  THEN 
70809 
70810    --
70811    XLA_AE_LINES_PKG.SetNewLine;
70812 
70813    p_balance_type_code          := l_balance_type_code;
70814    -- set the flag so later we will know whether the gain loss line needs to be created
70815    
70816    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
70817      p_actual_flag :='A';
70818    END IF;
70819 
70820    --
70821    -- bulk performance
70822    --
70823    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
70824                                       p_header_num   => 0); -- 4262811
70825    --
70826    -- set accounting line options
70827    --
70828    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
70829            p_natural_side_code          => 'D'
70830          , p_gain_or_loss_flag          => 'N'
70831          , p_gl_transfer_mode_code      => 'S'
70832          , p_acct_entry_type_code       => 'A'
70833          , p_switch_side_flag           => 'Y'
70834          , p_merge_duplicate_code       => 'N'
70835          );
70836    --
70837    l_acc_rev_natural_side_code := 'C';  -- 4262811
70838    -- 
70839    --
70840    -- set accounting line type info
70841    --
70842    xla_ae_lines_pkg.SetAcctLineType
70843       (p_component_type             => l_component_type
70844       ,p_event_type_code            => l_event_type_code
70845       ,p_line_definition_owner_code => l_line_definition_owner_code
70846       ,p_line_definition_code       => l_line_definition_code
70847       ,p_accounting_line_code       => l_component_code
70848       ,p_accounting_line_type_code  => l_component_type_code
70849       ,p_accounting_line_appl_id    => l_component_appl_id
70850       ,p_amb_context_code           => l_amb_context_code
70851       ,p_entity_code                => l_entity_code
70852       ,p_event_class_code           => l_event_class_code);
70853    --
70854    -- set accounting class
70855    --
70856    xla_ae_lines_pkg.SetAcctClass(
70857            p_accounting_class_code  => 'INTRANSIT_VALUATION'
70858          , p_ae_header_id           => l_ae_header_id
70859          );
70860 
70861    --
70862    -- set rounding class
70863    --
70864    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
70865                       'INTRANSIT_VALUATION';
70866 
70867    --
70868    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
70869    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
70870    --
70871    -- bulk performance
70872    --
70873    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
70874 
70875    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
70876       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
70877 
70878    -- 4955764
70879    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
70880       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
70881 
70882    -- 4458381 Public Sector Enh
70883    
70884    --
70885    -- set accounting attributes for the line type
70886    --
70887    l_entered_amt_idx := 3;
70888    l_accted_amt_idx  := 8;
70889    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
70890    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
70891    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
70892    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
70893    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
70894    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
70895    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
70896    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
70897    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
70898    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
70899    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
70900    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
70901    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
70902    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
70903    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
70904    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
70905    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
70906 
70907    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
70908    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
70909 
70910    ---------------------------------------------------------------------------------------------------------------
70911    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
70912    ---------------------------------------------------------------------------------------------------------------
70913    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
70914 
70915    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
70916    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
70917 
70918    IF xla_accounting_cache_pkg.GetValueChar
70919          (p_source_code         => 'LEDGER_CATEGORY_CODE'
70920          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
70921    AND l_bflow_method_code = 'PRIOR_ENTRY'
70922 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
70923    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
70924          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
70925        )
70926    THEN
70927          xla_ae_lines_pkg.BflowUpgEntry
70928            (p_business_method_code    => l_bflow_method_code
70929            ,p_business_class_code     => l_bflow_class_code
70930            ,p_balance_type            => l_balance_type_code);
70931    ELSE
70932       NULL;
70933 -- No business flow processing for business flow method of NONE.
70934    END IF;
70935 
70936    --
70937    -- call analytical criteria
70938    --
70939    
70940    --
70941    -- call description
70942    --
70943    -- No description or it is inherited.
70944    --
70945    -- call ADRs
70946    -- Bug 4922099
70947    --
70948    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
70949         (NVL(l_actual_upg_option, 'N') = 'O') OR
70950         (NVL(l_enc_upg_option, 'N') = 'O')
70951       )
70952    THEN
70953    NULL;
70954    --
70955    --
70956    
70957   l_ccid := AcctDerRule_4(
70958            p_application_id           => p_application_id
70959          , p_ae_header_id             => l_ae_header_id 
70960 , p_source_4 => p_source_4
70961          , x_transaction_coa_id       => l_adr_transaction_coa_id
70962          , x_accounting_coa_id        => l_adr_accounting_coa_id
70963          , x_value_type_code          => l_adr_value_type_code
70964          , p_side                     => 'NA'
70965    );
70966 
70967    xla_ae_lines_pkg.set_ccid(
70968     p_code_combination_id          => l_ccid
70969   , p_value_type_code              => l_adr_value_type_code
70970   , p_transaction_coa_id           => l_adr_transaction_coa_id
70971   , p_accounting_coa_id            => l_adr_accounting_coa_id
70972   , p_adr_code                     => 'CST_DEFAULT'
70973   , p_adr_type_code                => 'S'
70974   , p_component_type               => l_component_type
70975   , p_component_code               => l_component_code
70976   , p_component_type_code          => l_component_type_code
70977   , p_component_appl_id            => l_component_appl_id
70978   , p_amb_context_code             => l_amb_context_code
70979   , p_side                         => 'NA'
70980   );
70981 
70982 
70983    --
70984    --
70985    END IF;
70986    --
70987    -- Bug 4922099
70988    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
70989           (NVL(l_enc_upg_option, 'N') = 'O')
70990         ) AND
70991         (l_bflow_method_code = 'PRIOR_ENTRY')
70992       )
70993    THEN
70994       IF
70995       --
70996       1 = 2
70997       --
70998       THEN
70999       xla_accounting_err_pkg.build_message
71000                                     (p_appli_s_name            => 'XLA'
71001                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
71002                                     ,p_token_1                 => 'LINE_NUMBER'
71003                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
71004                                     ,p_token_2                 => 'LINE_TYPE_NAME'
71005                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
71006                                                                              l_component_type
71007                                                                             ,l_component_code
71008                                                                             ,l_component_type_code
71009                                                                             ,l_component_appl_id
71010                                                                             ,l_amb_context_code
71011                                                                             ,l_entity_code
71012                                                                             ,l_event_class_code
71013                                                                            )
71014                                     ,p_token_3                 => 'OWNER'
71015                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
71016                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
71017                                                                           ,p_lookup_code    => l_component_type_code
71018                                                                          )
71019                                     ,p_token_4                 => 'PRODUCT_NAME'
71020                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
71021                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
71022                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
71023                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
71024                                     ,p_ae_header_id            =>  NULL
71025                                        );
71026 
71027         IF (C_LEVEL_ERROR>= g_log_level) THEN
71028                  trace
71029                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
71030                       ,p_level    => C_LEVEL_ERROR
71031                       ,p_module   => l_log_module);
71032         END IF;
71033       END IF;
71034    END IF;
71035    --
71036    --
71037    ------------------------------------------------------------------------------------------------
71038    -- 4219869 Business Flow
71039    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
71040    -- Prior Entry.  Currently, the following code is always generated.
71041    ------------------------------------------------------------------------------------------------
71042    XLA_AE_LINES_PKG.ValidateCurrentLine;
71043 
71044    ------------------------------------------------------------------------------------
71045    -- 4219869 Business Flow
71046    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
71047    ------------------------------------------------------------------------------------
71048    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
71049 
71050    ----------------------------------------------------------------------------------
71051    -- 4219869 Business Flow
71052    -- Update journal entry status -- Need to generate this within IF <condition>
71053    ----------------------------------------------------------------------------------
71054    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
71055          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
71056          ,p_balance_type_code => l_balance_type_code
71057          );
71058 
71059    -------------------------------------------------------------------------------------------
71060    -- 4262811 - Generate the Accrual Reversal lines
71061    -------------------------------------------------------------------------------------------
71062    BEGIN
71063       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
71064                               (g_array_event(p_event_id).array_value_num('header_index'));
71065       IF l_acc_rev_flag IS NULL THEN
71066          l_acc_rev_flag := 'N';
71067       END IF;
71068    EXCEPTION
71069       WHEN OTHERS THEN
71070          l_acc_rev_flag := 'N';
71071    END;
71072    --
71073    IF (l_acc_rev_flag = 'Y') THEN
71074 
71075        -- 4645092  ------------------------------------------------------------------------------
71076        -- To allow MPA report to determine if it should generate report process
71077        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
71078        ------------------------------------------------------------------------------------------
71079 
71080        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
71081        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
71082    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
71083    -- call ADRs
71084    -- Bug 4922099
71085    --
71086    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
71087         (NVL(l_actual_upg_option, 'N') = 'O') OR
71088         (NVL(l_enc_upg_option, 'N') = 'O')
71089       )
71090    THEN
71091    NULL;
71092    --
71093    --
71094    
71095   l_ccid := AcctDerRule_4(
71096            p_application_id           => p_application_id
71097          , p_ae_header_id             => l_ae_header_id 
71098 , p_source_4 => p_source_4
71099          , x_transaction_coa_id       => l_adr_transaction_coa_id
71100          , x_accounting_coa_id        => l_adr_accounting_coa_id
71101          , x_value_type_code          => l_adr_value_type_code
71102          , p_side                     => 'NA'
71103    );
71104 
71105    xla_ae_lines_pkg.set_ccid(
71106     p_code_combination_id          => l_ccid
71107   , p_value_type_code              => l_adr_value_type_code
71108   , p_transaction_coa_id           => l_adr_transaction_coa_id
71109   , p_accounting_coa_id            => l_adr_accounting_coa_id
71110   , p_adr_code                     => 'CST_DEFAULT'
71111   , p_adr_type_code                => 'S'
71112   , p_component_type               => l_component_type
71113   , p_component_code               => l_component_code
71114   , p_component_type_code          => l_component_type_code
71115   , p_component_appl_id            => l_component_appl_id
71116   , p_amb_context_code             => l_amb_context_code
71117   , p_side                         => 'NA'
71118   );
71119 
71120 
71121    --
71122    --
71123    END IF;
71124 
71125        --
71126        -- Update the line information that should be overwritten
71127        --
71128        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
71129                                          p_header_num   => 1);
71130        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
71131 
71132        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
71133 
71134        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
71135           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
71136        END IF;
71137 
71138       --
71139       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
71140       --
71141       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
71142           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
71143       ELSE
71144           ---------------------------------------------------------------------------------------------------
71145           -- 4262811a Switch Sign
71146           ---------------------------------------------------------------------------------------------------
71147           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
71148           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
71149                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71150           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
71151                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71152           -- 5132302
71153           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
71154                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71155 
71156       END IF;
71157 
71158       -- 4955764
71159       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
71160       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
71161 
71162 
71163       XLA_AE_LINES_PKG.ValidateCurrentLine;
71164       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
71165 
71166       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
71167                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
71168                ,p_balance_type_code => l_balance_type_code);
71169 
71170    END IF;
71171 
71172    -----------------------------------------------------------------------------------------
71173    -- 4262811 Multiperiod Accounting
71174    -----------------------------------------------------------------------------------------
71175      -- No MPA option is assigned.
71176 
71177 
71178 END IF;
71179 END IF;
71180 --
71181 
71182 --
71183 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71184    trace
71185       (p_msg      => 'END of AcctLineType_130'
71186       ,p_level    => C_LEVEL_PROCEDURE
71187       ,p_module   => l_log_module);
71188 END IF;
71189 --
71190 EXCEPTION
71191   WHEN xla_exceptions_pkg.application_exception THEN
71192       RAISE;
71193   WHEN OTHERS THEN
71194        xla_exceptions_pkg.raise_message
71195            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_130');
71196 END AcctLineType_130;
71197 --
71198 
71199 ---------------------------------------
71200 --
71201 -- PRIVATE FUNCTION
71202 --         AcctLineType_131
71203 --
71204 ---------------------------------------
71205 PROCEDURE AcctLineType_131 (
71206   p_application_id        IN NUMBER
71207  ,p_event_id              IN NUMBER
71208  ,p_calculate_acctd_flag  IN VARCHAR2
71209  ,p_calculate_g_l_flag    IN VARCHAR2
71210  ,p_actual_flag           IN OUT VARCHAR2
71211  ,p_balance_type_code     OUT VARCHAR2
71212  ,p_gain_or_loss_ref      OUT VARCHAR2
71213  
71214 --Cost Management Default Account
71215  , p_source_4            IN NUMBER
71216 --DISTRIBUTION_IDENTIFIER
71217  , p_source_11            IN NUMBER
71218 --Distribution Type
71219  , p_source_12            IN VARCHAR2
71220  , p_source_12_meaning    IN VARCHAR2
71221 --Entered Currency Code
71222  , p_source_15            IN VARCHAR2
71223 --Entered Amount
71224  , p_source_18            IN NUMBER
71225 --Currency Conversion Date
71226  , p_source_19            IN DATE
71227 --Currency Conversion Rate
71228  , p_source_20            IN NUMBER
71229 --Currency Conversion Type
71230  , p_source_21            IN VARCHAR2
71231 --Accounted Amount
71232  , p_source_22            IN NUMBER
71233 --Accounting Line Type
71234  , p_source_24            IN NUMBER
71235 )
71236 IS
71237 
71238 l_component_type              VARCHAR2(80);
71239 l_component_code              VARCHAR2(30);
71240 l_component_type_code         VARCHAR2(1);
71241 l_component_appl_id           INTEGER;
71242 l_amb_context_code            VARCHAR2(30);
71243 l_entity_code                 VARCHAR2(30);
71244 l_event_class_code            VARCHAR2(30);
71245 l_ae_header_id                NUMBER;
71246 l_event_type_code             VARCHAR2(30);
71247 l_line_definition_code        VARCHAR2(30);
71248 l_line_definition_owner_code  VARCHAR2(1);
71249 --
71250 -- adr variables
71251 l_segment                     VARCHAR2(30);
71252 l_ccid                        NUMBER;
71253 l_adr_transaction_coa_id      NUMBER;
71254 l_adr_accounting_coa_id       NUMBER;
71255 l_adr_flexfield_segment_code  VARCHAR2(30);
71256 l_adr_flex_value_set_id       NUMBER;
71257 l_adr_value_type_code         VARCHAR2(30);
71258 l_adr_value_combination_id    NUMBER;
71259 l_adr_value_segment_code      VARCHAR2(30);
71260 
71261 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
71262 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
71263 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
71264 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
71265 
71266 -- 4262811 Variables ------------------------------------------------------------------------------------------
71267 l_entered_amt_idx             NUMBER;
71268 l_accted_amt_idx              NUMBER;
71269 l_acc_rev_flag                VARCHAR2(1);
71270 l_accrual_line_num            NUMBER;
71271 l_tmp_amt                     NUMBER;
71272 l_acc_rev_natural_side_code   VARCHAR2(1);
71273 
71274 l_num_entries                 NUMBER;
71275 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
71276 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
71277 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
71278 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
71279 l_recog_line_1                NUMBER;
71280 l_recog_line_2                NUMBER;
71281 
71282 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
71283 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
71284 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
71285 
71286 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
71287 
71288 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
71289 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
71290 
71291 ---------------------------------------------------------------------------------------------------------------
71292 
71293 
71294 --
71295 -- bulk performance
71296 --
71297 l_balance_type_code           VARCHAR2(1);
71298 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
71299 l_log_module                  VARCHAR2(240);
71300 
71301 --
71302 -- Upgrade strategy
71303 --
71304 l_actual_upg_option           VARCHAR2(1);
71305 l_enc_upg_option           VARCHAR2(1);
71306 
71307 --
71308 BEGIN
71309 --
71310 IF g_log_enabled THEN
71311       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_131';
71312 END IF;
71313 --
71314 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71315 
71316       trace
71317          (p_msg      => 'BEGIN of AcctLineType_131'
71318          ,p_level    => C_LEVEL_PROCEDURE
71319          ,p_module   => l_log_module);
71320 
71321 END IF;
71322 --
71323 l_component_type             := 'AMB_JLT';
71324 l_component_code             := 'INVENTORY_VALUATION';
71325 l_component_type_code        := 'S';
71326 l_component_appl_id          :=  707;
71327 l_amb_context_code           := 'DEFAULT';
71328 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
71329 l_event_class_code           := 'USER_DEFINE';
71330 l_event_type_code            := 'UAVG_COST_UPD';
71331 l_line_definition_owner_code := 'S';
71332 l_line_definition_code       := 'USER_COST_UPD';
71333 --
71334 l_balance_type_code          := 'A';
71335 l_segment                     := NULL;
71336 l_ccid                        := NULL;
71337 l_adr_transaction_coa_id      := NULL;
71338 l_adr_accounting_coa_id       := NULL;
71339 l_adr_flexfield_segment_code  := NULL;
71340 l_adr_flex_value_set_id       := NULL;
71341 l_adr_value_type_code         := NULL;
71342 l_adr_value_combination_id    := NULL;
71343 l_adr_value_segment_code      := NULL;
71344 
71345 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
71346 l_bflow_class_code           := '';    -- 4219869 Business Flow
71347 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
71348 l_budgetary_control_flag     := 'N';
71349 
71350 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
71351 l_bflow_applied_to_amt       := NULL; -- 5132302
71352 l_entered_amt_idx            := NULL;          -- 4262811
71353 l_accted_amt_idx             := NULL;          -- 4262811
71354 l_acc_rev_flag               := NULL;          -- 4262811
71355 l_accrual_line_num           := NULL;          -- 4262811
71356 l_tmp_amt                    := NULL;          -- 4262811
71357 --
71358  
71359 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
71360     l_balance_type_code <> 'B' THEN
71361 IF NVL(p_source_24,9E125) =  1
71362  THEN 
71363 
71364    --
71365    XLA_AE_LINES_PKG.SetNewLine;
71366 
71367    p_balance_type_code          := l_balance_type_code;
71368    -- set the flag so later we will know whether the gain loss line needs to be created
71369    
71370    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
71371      p_actual_flag :='A';
71372    END IF;
71373 
71374    --
71375    -- bulk performance
71376    --
71377    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
71378                                       p_header_num   => 0); -- 4262811
71379    --
71380    -- set accounting line options
71381    --
71382    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
71383            p_natural_side_code          => 'D'
71384          , p_gain_or_loss_flag          => 'N'
71385          , p_gl_transfer_mode_code      => 'S'
71386          , p_acct_entry_type_code       => 'A'
71387          , p_switch_side_flag           => 'Y'
71388          , p_merge_duplicate_code       => 'N'
71389          );
71390    --
71391    l_acc_rev_natural_side_code := 'C';  -- 4262811
71392    -- 
71393    --
71394    -- set accounting line type info
71395    --
71396    xla_ae_lines_pkg.SetAcctLineType
71397       (p_component_type             => l_component_type
71398       ,p_event_type_code            => l_event_type_code
71399       ,p_line_definition_owner_code => l_line_definition_owner_code
71400       ,p_line_definition_code       => l_line_definition_code
71401       ,p_accounting_line_code       => l_component_code
71402       ,p_accounting_line_type_code  => l_component_type_code
71403       ,p_accounting_line_appl_id    => l_component_appl_id
71404       ,p_amb_context_code           => l_amb_context_code
71405       ,p_entity_code                => l_entity_code
71406       ,p_event_class_code           => l_event_class_code);
71407    --
71408    -- set accounting class
71409    --
71410    xla_ae_lines_pkg.SetAcctClass(
71411            p_accounting_class_code  => 'INVENTORY_VALUATION'
71412          , p_ae_header_id           => l_ae_header_id
71413          );
71414 
71415    --
71416    -- set rounding class
71417    --
71418    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
71419                       'INVENTORY_VALUATION';
71420 
71421    --
71422    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
71423    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
71424    --
71425    -- bulk performance
71426    --
71427    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
71428 
71429    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
71430       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
71431 
71432    -- 4955764
71433    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
71434       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
71435 
71436    -- 4458381 Public Sector Enh
71437    
71438    --
71439    -- set accounting attributes for the line type
71440    --
71441    l_entered_amt_idx := 3;
71442    l_accted_amt_idx  := 8;
71443    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
71444    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
71445    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
71446    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
71447    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
71448    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
71449    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
71450    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
71451    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
71452    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
71453    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
71454    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
71455    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
71456    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
71457    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
71458    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
71459    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
71460 
71461    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
71462    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
71463 
71464    ---------------------------------------------------------------------------------------------------------------
71465    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
71466    ---------------------------------------------------------------------------------------------------------------
71467    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
71468 
71469    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
71470    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
71471 
71472    IF xla_accounting_cache_pkg.GetValueChar
71473          (p_source_code         => 'LEDGER_CATEGORY_CODE'
71474          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
71475    AND l_bflow_method_code = 'PRIOR_ENTRY'
71476 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
71477    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
71478          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
71479        )
71480    THEN
71481          xla_ae_lines_pkg.BflowUpgEntry
71482            (p_business_method_code    => l_bflow_method_code
71483            ,p_business_class_code     => l_bflow_class_code
71484            ,p_balance_type            => l_balance_type_code);
71485    ELSE
71486       NULL;
71487 -- No business flow processing for business flow method of NONE.
71488    END IF;
71489 
71490    --
71491    -- call analytical criteria
71492    --
71493    
71494    --
71495    -- call description
71496    --
71497    -- No description or it is inherited.
71498    --
71499    -- call ADRs
71500    -- Bug 4922099
71501    --
71502    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
71503         (NVL(l_actual_upg_option, 'N') = 'O') OR
71504         (NVL(l_enc_upg_option, 'N') = 'O')
71505       )
71506    THEN
71507    NULL;
71508    --
71509    --
71510    
71511   l_ccid := AcctDerRule_4(
71512            p_application_id           => p_application_id
71513          , p_ae_header_id             => l_ae_header_id 
71514 , p_source_4 => p_source_4
71515          , x_transaction_coa_id       => l_adr_transaction_coa_id
71516          , x_accounting_coa_id        => l_adr_accounting_coa_id
71517          , x_value_type_code          => l_adr_value_type_code
71518          , p_side                     => 'NA'
71519    );
71520 
71521    xla_ae_lines_pkg.set_ccid(
71522     p_code_combination_id          => l_ccid
71523   , p_value_type_code              => l_adr_value_type_code
71524   , p_transaction_coa_id           => l_adr_transaction_coa_id
71525   , p_accounting_coa_id            => l_adr_accounting_coa_id
71526   , p_adr_code                     => 'CST_DEFAULT'
71527   , p_adr_type_code                => 'S'
71528   , p_component_type               => l_component_type
71529   , p_component_code               => l_component_code
71530   , p_component_type_code          => l_component_type_code
71531   , p_component_appl_id            => l_component_appl_id
71532   , p_amb_context_code             => l_amb_context_code
71533   , p_side                         => 'NA'
71534   );
71535 
71536 
71537    --
71538    --
71539    END IF;
71540    --
71541    -- Bug 4922099
71542    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
71543           (NVL(l_enc_upg_option, 'N') = 'O')
71544         ) AND
71545         (l_bflow_method_code = 'PRIOR_ENTRY')
71546       )
71547    THEN
71548       IF
71549       --
71550       1 = 2
71551       --
71552       THEN
71553       xla_accounting_err_pkg.build_message
71554                                     (p_appli_s_name            => 'XLA'
71555                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
71556                                     ,p_token_1                 => 'LINE_NUMBER'
71557                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
71558                                     ,p_token_2                 => 'LINE_TYPE_NAME'
71559                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
71560                                                                              l_component_type
71561                                                                             ,l_component_code
71562                                                                             ,l_component_type_code
71563                                                                             ,l_component_appl_id
71564                                                                             ,l_amb_context_code
71565                                                                             ,l_entity_code
71566                                                                             ,l_event_class_code
71567                                                                            )
71568                                     ,p_token_3                 => 'OWNER'
71569                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
71570                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
71571                                                                           ,p_lookup_code    => l_component_type_code
71572                                                                          )
71573                                     ,p_token_4                 => 'PRODUCT_NAME'
71574                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
71575                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
71576                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
71577                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
71578                                     ,p_ae_header_id            =>  NULL
71579                                        );
71580 
71581         IF (C_LEVEL_ERROR>= g_log_level) THEN
71582                  trace
71583                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
71584                       ,p_level    => C_LEVEL_ERROR
71585                       ,p_module   => l_log_module);
71586         END IF;
71587       END IF;
71588    END IF;
71589    --
71590    --
71591    ------------------------------------------------------------------------------------------------
71592    -- 4219869 Business Flow
71593    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
71594    -- Prior Entry.  Currently, the following code is always generated.
71595    ------------------------------------------------------------------------------------------------
71596    XLA_AE_LINES_PKG.ValidateCurrentLine;
71597 
71598    ------------------------------------------------------------------------------------
71599    -- 4219869 Business Flow
71600    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
71601    ------------------------------------------------------------------------------------
71602    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
71603 
71604    ----------------------------------------------------------------------------------
71605    -- 4219869 Business Flow
71606    -- Update journal entry status -- Need to generate this within IF <condition>
71607    ----------------------------------------------------------------------------------
71608    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
71609          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
71610          ,p_balance_type_code => l_balance_type_code
71611          );
71612 
71613    -------------------------------------------------------------------------------------------
71614    -- 4262811 - Generate the Accrual Reversal lines
71615    -------------------------------------------------------------------------------------------
71616    BEGIN
71617       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
71618                               (g_array_event(p_event_id).array_value_num('header_index'));
71619       IF l_acc_rev_flag IS NULL THEN
71620          l_acc_rev_flag := 'N';
71621       END IF;
71622    EXCEPTION
71623       WHEN OTHERS THEN
71624          l_acc_rev_flag := 'N';
71625    END;
71626    --
71627    IF (l_acc_rev_flag = 'Y') THEN
71628 
71629        -- 4645092  ------------------------------------------------------------------------------
71630        -- To allow MPA report to determine if it should generate report process
71631        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
71632        ------------------------------------------------------------------------------------------
71633 
71634        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
71635        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
71636    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
71637    -- call ADRs
71638    -- Bug 4922099
71639    --
71640    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
71641         (NVL(l_actual_upg_option, 'N') = 'O') OR
71642         (NVL(l_enc_upg_option, 'N') = 'O')
71643       )
71644    THEN
71645    NULL;
71646    --
71647    --
71648    
71649   l_ccid := AcctDerRule_4(
71650            p_application_id           => p_application_id
71651          , p_ae_header_id             => l_ae_header_id 
71652 , p_source_4 => p_source_4
71653          , x_transaction_coa_id       => l_adr_transaction_coa_id
71654          , x_accounting_coa_id        => l_adr_accounting_coa_id
71655          , x_value_type_code          => l_adr_value_type_code
71656          , p_side                     => 'NA'
71657    );
71658 
71659    xla_ae_lines_pkg.set_ccid(
71660     p_code_combination_id          => l_ccid
71661   , p_value_type_code              => l_adr_value_type_code
71662   , p_transaction_coa_id           => l_adr_transaction_coa_id
71663   , p_accounting_coa_id            => l_adr_accounting_coa_id
71664   , p_adr_code                     => 'CST_DEFAULT'
71665   , p_adr_type_code                => 'S'
71666   , p_component_type               => l_component_type
71667   , p_component_code               => l_component_code
71668   , p_component_type_code          => l_component_type_code
71669   , p_component_appl_id            => l_component_appl_id
71670   , p_amb_context_code             => l_amb_context_code
71671   , p_side                         => 'NA'
71672   );
71673 
71674 
71675    --
71676    --
71677    END IF;
71678 
71679        --
71680        -- Update the line information that should be overwritten
71681        --
71682        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
71683                                          p_header_num   => 1);
71684        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
71685 
71686        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
71687 
71688        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
71689           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
71690        END IF;
71691 
71692       --
71693       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
71694       --
71695       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
71696           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
71697       ELSE
71698           ---------------------------------------------------------------------------------------------------
71699           -- 4262811a Switch Sign
71700           ---------------------------------------------------------------------------------------------------
71701           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
71702           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
71703                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71704           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
71705                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71706           -- 5132302
71707           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
71708                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71709 
71710       END IF;
71711 
71712       -- 4955764
71713       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
71714       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
71715 
71716 
71717       XLA_AE_LINES_PKG.ValidateCurrentLine;
71718       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
71719 
71720       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
71721                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
71722                ,p_balance_type_code => l_balance_type_code);
71723 
71724    END IF;
71725 
71726    -----------------------------------------------------------------------------------------
71727    -- 4262811 Multiperiod Accounting
71728    -----------------------------------------------------------------------------------------
71729      -- No MPA option is assigned.
71730 
71731 
71732 END IF;
71733 END IF;
71734 --
71735 
71736 --
71737 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71738    trace
71739       (p_msg      => 'END of AcctLineType_131'
71740       ,p_level    => C_LEVEL_PROCEDURE
71741       ,p_module   => l_log_module);
71742 END IF;
71743 --
71744 EXCEPTION
71745   WHEN xla_exceptions_pkg.application_exception THEN
71746       RAISE;
71747   WHEN OTHERS THEN
71748        xla_exceptions_pkg.raise_message
71749            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_131');
71750 END AcctLineType_131;
71751 --
71752 
71753 ---------------------------------------
71754 --
71755 -- PRIVATE FUNCTION
71756 --         AcctLineType_132
71757 --
71758 ---------------------------------------
71759 PROCEDURE AcctLineType_132 (
71760   p_application_id        IN NUMBER
71761  ,p_event_id              IN NUMBER
71762  ,p_calculate_acctd_flag  IN VARCHAR2
71763  ,p_calculate_g_l_flag    IN VARCHAR2
71764  ,p_actual_flag           IN OUT VARCHAR2
71765  ,p_balance_type_code     OUT VARCHAR2
71766  ,p_gain_or_loss_ref      OUT VARCHAR2
71767  
71768 --Cost Management Default Account
71769  , p_source_4            IN NUMBER
71770 --DISTRIBUTION_IDENTIFIER
71771  , p_source_11            IN NUMBER
71772 --Distribution Type
71773  , p_source_12            IN VARCHAR2
71774  , p_source_12_meaning    IN VARCHAR2
71775 --Entered Currency Code
71776  , p_source_15            IN VARCHAR2
71777 --Entered Amount
71778  , p_source_18            IN NUMBER
71779 --Currency Conversion Date
71780  , p_source_19            IN DATE
71781 --Currency Conversion Rate
71782  , p_source_20            IN NUMBER
71783 --Currency Conversion Type
71784  , p_source_21            IN VARCHAR2
71785 --Accounted Amount
71786  , p_source_22            IN NUMBER
71787 --Accounting Line Type
71788  , p_source_24            IN NUMBER
71789 )
71790 IS
71791 
71792 l_component_type              VARCHAR2(80);
71793 l_component_code              VARCHAR2(30);
71794 l_component_type_code         VARCHAR2(1);
71795 l_component_appl_id           INTEGER;
71796 l_amb_context_code            VARCHAR2(30);
71797 l_entity_code                 VARCHAR2(30);
71798 l_event_class_code            VARCHAR2(30);
71799 l_ae_header_id                NUMBER;
71800 l_event_type_code             VARCHAR2(30);
71801 l_line_definition_code        VARCHAR2(30);
71802 l_line_definition_owner_code  VARCHAR2(1);
71803 --
71804 -- adr variables
71805 l_segment                     VARCHAR2(30);
71806 l_ccid                        NUMBER;
71807 l_adr_transaction_coa_id      NUMBER;
71808 l_adr_accounting_coa_id       NUMBER;
71809 l_adr_flexfield_segment_code  VARCHAR2(30);
71810 l_adr_flex_value_set_id       NUMBER;
71811 l_adr_value_type_code         VARCHAR2(30);
71812 l_adr_value_combination_id    NUMBER;
71813 l_adr_value_segment_code      VARCHAR2(30);
71814 
71815 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
71816 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
71817 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
71818 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
71819 
71820 -- 4262811 Variables ------------------------------------------------------------------------------------------
71821 l_entered_amt_idx             NUMBER;
71822 l_accted_amt_idx              NUMBER;
71823 l_acc_rev_flag                VARCHAR2(1);
71824 l_accrual_line_num            NUMBER;
71825 l_tmp_amt                     NUMBER;
71826 l_acc_rev_natural_side_code   VARCHAR2(1);
71827 
71828 l_num_entries                 NUMBER;
71829 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
71830 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
71831 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
71832 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
71833 l_recog_line_1                NUMBER;
71834 l_recog_line_2                NUMBER;
71835 
71836 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
71837 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
71838 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
71839 
71840 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
71841 
71842 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
71843 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
71844 
71845 ---------------------------------------------------------------------------------------------------------------
71846 
71847 
71848 --
71849 -- bulk performance
71850 --
71851 l_balance_type_code           VARCHAR2(1);
71852 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
71853 l_log_module                  VARCHAR2(240);
71854 
71855 --
71856 -- Upgrade strategy
71857 --
71858 l_actual_upg_option           VARCHAR2(1);
71859 l_enc_upg_option           VARCHAR2(1);
71860 
71861 --
71862 BEGIN
71863 --
71864 IF g_log_enabled THEN
71865       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_132';
71866 END IF;
71867 --
71868 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71869 
71870       trace
71871          (p_msg      => 'BEGIN of AcctLineType_132'
71872          ,p_level    => C_LEVEL_PROCEDURE
71873          ,p_module   => l_log_module);
71874 
71875 END IF;
71876 --
71877 l_component_type             := 'AMB_JLT';
71878 l_component_code             := 'INVENTORY_VALUATION';
71879 l_component_type_code        := 'S';
71880 l_component_appl_id          :=  707;
71881 l_amb_context_code           := 'DEFAULT';
71882 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
71883 l_event_class_code           := 'USER_DEFINE';
71884 l_event_type_code            := 'UMISC_RCPT';
71885 l_line_definition_owner_code := 'S';
71886 l_line_definition_code       := 'USER_RCPT';
71887 --
71888 l_balance_type_code          := 'A';
71889 l_segment                     := NULL;
71890 l_ccid                        := NULL;
71891 l_adr_transaction_coa_id      := NULL;
71892 l_adr_accounting_coa_id       := NULL;
71893 l_adr_flexfield_segment_code  := NULL;
71894 l_adr_flex_value_set_id       := NULL;
71895 l_adr_value_type_code         := NULL;
71896 l_adr_value_combination_id    := NULL;
71897 l_adr_value_segment_code      := NULL;
71898 
71899 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
71900 l_bflow_class_code           := '';    -- 4219869 Business Flow
71901 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
71902 l_budgetary_control_flag     := 'N';
71903 
71904 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
71905 l_bflow_applied_to_amt       := NULL; -- 5132302
71906 l_entered_amt_idx            := NULL;          -- 4262811
71907 l_accted_amt_idx             := NULL;          -- 4262811
71908 l_acc_rev_flag               := NULL;          -- 4262811
71909 l_accrual_line_num           := NULL;          -- 4262811
71910 l_tmp_amt                    := NULL;          -- 4262811
71911 --
71912  
71913 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
71914     l_balance_type_code <> 'B' THEN
71915 IF NVL(p_source_24,9E125) =  1
71916  THEN 
71917 
71918    --
71919    XLA_AE_LINES_PKG.SetNewLine;
71920 
71921    p_balance_type_code          := l_balance_type_code;
71922    -- set the flag so later we will know whether the gain loss line needs to be created
71923    
71924    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
71925      p_actual_flag :='A';
71926    END IF;
71927 
71928    --
71929    -- bulk performance
71930    --
71931    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
71932                                       p_header_num   => 0); -- 4262811
71933    --
71934    -- set accounting line options
71935    --
71936    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
71937            p_natural_side_code          => 'D'
71938          , p_gain_or_loss_flag          => 'N'
71939          , p_gl_transfer_mode_code      => 'S'
71940          , p_acct_entry_type_code       => 'A'
71941          , p_switch_side_flag           => 'Y'
71942          , p_merge_duplicate_code       => 'N'
71943          );
71944    --
71945    l_acc_rev_natural_side_code := 'C';  -- 4262811
71946    -- 
71947    --
71948    -- set accounting line type info
71949    --
71950    xla_ae_lines_pkg.SetAcctLineType
71951       (p_component_type             => l_component_type
71952       ,p_event_type_code            => l_event_type_code
71953       ,p_line_definition_owner_code => l_line_definition_owner_code
71954       ,p_line_definition_code       => l_line_definition_code
71955       ,p_accounting_line_code       => l_component_code
71956       ,p_accounting_line_type_code  => l_component_type_code
71957       ,p_accounting_line_appl_id    => l_component_appl_id
71958       ,p_amb_context_code           => l_amb_context_code
71959       ,p_entity_code                => l_entity_code
71960       ,p_event_class_code           => l_event_class_code);
71961    --
71962    -- set accounting class
71963    --
71964    xla_ae_lines_pkg.SetAcctClass(
71965            p_accounting_class_code  => 'INVENTORY_VALUATION'
71966          , p_ae_header_id           => l_ae_header_id
71967          );
71968 
71969    --
71970    -- set rounding class
71971    --
71972    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
71973                       'INVENTORY_VALUATION';
71974 
71975    --
71976    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
71977    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
71978    --
71979    -- bulk performance
71980    --
71981    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
71982 
71983    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
71984       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
71985 
71986    -- 4955764
71987    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
71988       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
71989 
71990    -- 4458381 Public Sector Enh
71991    
71992    --
71993    -- set accounting attributes for the line type
71994    --
71995    l_entered_amt_idx := 3;
71996    l_accted_amt_idx  := 8;
71997    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
71998    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
71999    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
72000    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
72001    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
72002    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
72003    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
72004    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
72005    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
72006    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
72007    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
72008    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
72009    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
72010    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
72011    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
72012    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
72013    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
72014 
72015    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
72016    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
72017 
72018    ---------------------------------------------------------------------------------------------------------------
72019    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
72020    ---------------------------------------------------------------------------------------------------------------
72021    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
72022 
72023    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
72024    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
72025 
72026    IF xla_accounting_cache_pkg.GetValueChar
72027          (p_source_code         => 'LEDGER_CATEGORY_CODE'
72028          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
72029    AND l_bflow_method_code = 'PRIOR_ENTRY'
72030 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
72031    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
72032          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
72033        )
72034    THEN
72035          xla_ae_lines_pkg.BflowUpgEntry
72036            (p_business_method_code    => l_bflow_method_code
72037            ,p_business_class_code     => l_bflow_class_code
72038            ,p_balance_type            => l_balance_type_code);
72039    ELSE
72040       NULL;
72041 -- No business flow processing for business flow method of NONE.
72042    END IF;
72043 
72044    --
72045    -- call analytical criteria
72046    --
72047    
72048    --
72049    -- call description
72050    --
72051    -- No description or it is inherited.
72052    --
72053    -- call ADRs
72054    -- Bug 4922099
72055    --
72056    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
72057         (NVL(l_actual_upg_option, 'N') = 'O') OR
72058         (NVL(l_enc_upg_option, 'N') = 'O')
72059       )
72060    THEN
72061    NULL;
72062    --
72063    --
72064    
72065   l_ccid := AcctDerRule_4(
72066            p_application_id           => p_application_id
72067          , p_ae_header_id             => l_ae_header_id 
72068 , p_source_4 => p_source_4
72069          , x_transaction_coa_id       => l_adr_transaction_coa_id
72070          , x_accounting_coa_id        => l_adr_accounting_coa_id
72071          , x_value_type_code          => l_adr_value_type_code
72072          , p_side                     => 'NA'
72073    );
72074 
72075    xla_ae_lines_pkg.set_ccid(
72076     p_code_combination_id          => l_ccid
72077   , p_value_type_code              => l_adr_value_type_code
72078   , p_transaction_coa_id           => l_adr_transaction_coa_id
72079   , p_accounting_coa_id            => l_adr_accounting_coa_id
72080   , p_adr_code                     => 'CST_DEFAULT'
72081   , p_adr_type_code                => 'S'
72082   , p_component_type               => l_component_type
72083   , p_component_code               => l_component_code
72084   , p_component_type_code          => l_component_type_code
72085   , p_component_appl_id            => l_component_appl_id
72086   , p_amb_context_code             => l_amb_context_code
72087   , p_side                         => 'NA'
72088   );
72089 
72090 
72091    --
72092    --
72093    END IF;
72094    --
72095    -- Bug 4922099
72096    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
72097           (NVL(l_enc_upg_option, 'N') = 'O')
72098         ) AND
72099         (l_bflow_method_code = 'PRIOR_ENTRY')
72100       )
72101    THEN
72102       IF
72103       --
72104       1 = 2
72105       --
72106       THEN
72107       xla_accounting_err_pkg.build_message
72108                                     (p_appli_s_name            => 'XLA'
72109                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
72110                                     ,p_token_1                 => 'LINE_NUMBER'
72111                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
72112                                     ,p_token_2                 => 'LINE_TYPE_NAME'
72113                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
72114                                                                              l_component_type
72115                                                                             ,l_component_code
72116                                                                             ,l_component_type_code
72117                                                                             ,l_component_appl_id
72118                                                                             ,l_amb_context_code
72119                                                                             ,l_entity_code
72120                                                                             ,l_event_class_code
72121                                                                            )
72122                                     ,p_token_3                 => 'OWNER'
72123                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
72124                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
72125                                                                           ,p_lookup_code    => l_component_type_code
72126                                                                          )
72127                                     ,p_token_4                 => 'PRODUCT_NAME'
72128                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
72129                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
72130                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
72131                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
72132                                     ,p_ae_header_id            =>  NULL
72133                                        );
72134 
72135         IF (C_LEVEL_ERROR>= g_log_level) THEN
72136                  trace
72137                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
72138                       ,p_level    => C_LEVEL_ERROR
72139                       ,p_module   => l_log_module);
72140         END IF;
72141       END IF;
72142    END IF;
72143    --
72144    --
72145    ------------------------------------------------------------------------------------------------
72146    -- 4219869 Business Flow
72147    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
72148    -- Prior Entry.  Currently, the following code is always generated.
72149    ------------------------------------------------------------------------------------------------
72150    XLA_AE_LINES_PKG.ValidateCurrentLine;
72151 
72152    ------------------------------------------------------------------------------------
72153    -- 4219869 Business Flow
72154    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
72155    ------------------------------------------------------------------------------------
72156    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
72157 
72158    ----------------------------------------------------------------------------------
72159    -- 4219869 Business Flow
72160    -- Update journal entry status -- Need to generate this within IF <condition>
72161    ----------------------------------------------------------------------------------
72162    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
72163          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
72164          ,p_balance_type_code => l_balance_type_code
72165          );
72166 
72167    -------------------------------------------------------------------------------------------
72168    -- 4262811 - Generate the Accrual Reversal lines
72169    -------------------------------------------------------------------------------------------
72170    BEGIN
72171       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
72172                               (g_array_event(p_event_id).array_value_num('header_index'));
72173       IF l_acc_rev_flag IS NULL THEN
72174          l_acc_rev_flag := 'N';
72175       END IF;
72176    EXCEPTION
72177       WHEN OTHERS THEN
72178          l_acc_rev_flag := 'N';
72179    END;
72180    --
72181    IF (l_acc_rev_flag = 'Y') THEN
72182 
72183        -- 4645092  ------------------------------------------------------------------------------
72184        -- To allow MPA report to determine if it should generate report process
72185        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
72186        ------------------------------------------------------------------------------------------
72187 
72188        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
72189        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
72190    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
72191    -- call ADRs
72192    -- Bug 4922099
72193    --
72194    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
72195         (NVL(l_actual_upg_option, 'N') = 'O') OR
72196         (NVL(l_enc_upg_option, 'N') = 'O')
72197       )
72198    THEN
72199    NULL;
72200    --
72201    --
72202    
72203   l_ccid := AcctDerRule_4(
72204            p_application_id           => p_application_id
72205          , p_ae_header_id             => l_ae_header_id 
72206 , p_source_4 => p_source_4
72207          , x_transaction_coa_id       => l_adr_transaction_coa_id
72208          , x_accounting_coa_id        => l_adr_accounting_coa_id
72209          , x_value_type_code          => l_adr_value_type_code
72210          , p_side                     => 'NA'
72211    );
72212 
72213    xla_ae_lines_pkg.set_ccid(
72214     p_code_combination_id          => l_ccid
72215   , p_value_type_code              => l_adr_value_type_code
72216   , p_transaction_coa_id           => l_adr_transaction_coa_id
72217   , p_accounting_coa_id            => l_adr_accounting_coa_id
72218   , p_adr_code                     => 'CST_DEFAULT'
72219   , p_adr_type_code                => 'S'
72220   , p_component_type               => l_component_type
72221   , p_component_code               => l_component_code
72222   , p_component_type_code          => l_component_type_code
72223   , p_component_appl_id            => l_component_appl_id
72224   , p_amb_context_code             => l_amb_context_code
72225   , p_side                         => 'NA'
72226   );
72227 
72228 
72229    --
72230    --
72231    END IF;
72232 
72233        --
72234        -- Update the line information that should be overwritten
72235        --
72236        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
72237                                          p_header_num   => 1);
72238        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
72239 
72240        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
72241 
72242        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
72243           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
72244        END IF;
72245 
72246       --
72247       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
72248       --
72249       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
72250           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
72251       ELSE
72252           ---------------------------------------------------------------------------------------------------
72253           -- 4262811a Switch Sign
72254           ---------------------------------------------------------------------------------------------------
72255           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
72256           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
72257                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72258           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
72259                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72260           -- 5132302
72261           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
72262                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72263 
72264       END IF;
72265 
72266       -- 4955764
72267       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
72268       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
72269 
72270 
72271       XLA_AE_LINES_PKG.ValidateCurrentLine;
72272       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
72273 
72274       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
72275                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
72276                ,p_balance_type_code => l_balance_type_code);
72277 
72278    END IF;
72279 
72280    -----------------------------------------------------------------------------------------
72281    -- 4262811 Multiperiod Accounting
72282    -----------------------------------------------------------------------------------------
72283      -- No MPA option is assigned.
72284 
72285 
72286 END IF;
72287 END IF;
72288 --
72289 
72290 --
72291 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72292    trace
72293       (p_msg      => 'END of AcctLineType_132'
72294       ,p_level    => C_LEVEL_PROCEDURE
72295       ,p_module   => l_log_module);
72296 END IF;
72297 --
72298 EXCEPTION
72299   WHEN xla_exceptions_pkg.application_exception THEN
72300       RAISE;
72301   WHEN OTHERS THEN
72302        xla_exceptions_pkg.raise_message
72303            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_132');
72304 END AcctLineType_132;
72305 --
72306 
72307 ---------------------------------------
72308 --
72309 -- PRIVATE FUNCTION
72310 --         AcctLineType_133
72311 --
72312 ---------------------------------------
72313 PROCEDURE AcctLineType_133 (
72314   p_application_id        IN NUMBER
72315  ,p_event_id              IN NUMBER
72316  ,p_calculate_acctd_flag  IN VARCHAR2
72317  ,p_calculate_g_l_flag    IN VARCHAR2
72318  ,p_actual_flag           IN OUT VARCHAR2
72319  ,p_balance_type_code     OUT VARCHAR2
72320  ,p_gain_or_loss_ref      OUT VARCHAR2
72321  
72322 --Cost Management Default Account
72323  , p_source_4            IN NUMBER
72324 --DISTRIBUTION_IDENTIFIER
72325  , p_source_11            IN NUMBER
72326 --Distribution Type
72327  , p_source_12            IN VARCHAR2
72328  , p_source_12_meaning    IN VARCHAR2
72329 --Entered Currency Code
72330  , p_source_15            IN VARCHAR2
72331 --Entered Amount
72332  , p_source_18            IN NUMBER
72333 --Currency Conversion Date
72334  , p_source_19            IN DATE
72335 --Currency Conversion Rate
72336  , p_source_20            IN NUMBER
72337 --Currency Conversion Type
72338  , p_source_21            IN VARCHAR2
72339 --Accounted Amount
72340  , p_source_22            IN NUMBER
72341 --Accounting Line Type
72342  , p_source_24            IN NUMBER
72343 )
72344 IS
72345 
72346 l_component_type              VARCHAR2(80);
72347 l_component_code              VARCHAR2(30);
72348 l_component_type_code         VARCHAR2(1);
72349 l_component_appl_id           INTEGER;
72350 l_amb_context_code            VARCHAR2(30);
72351 l_entity_code                 VARCHAR2(30);
72352 l_event_class_code            VARCHAR2(30);
72353 l_ae_header_id                NUMBER;
72354 l_event_type_code             VARCHAR2(30);
72355 l_line_definition_code        VARCHAR2(30);
72356 l_line_definition_owner_code  VARCHAR2(1);
72357 --
72358 -- adr variables
72359 l_segment                     VARCHAR2(30);
72360 l_ccid                        NUMBER;
72361 l_adr_transaction_coa_id      NUMBER;
72362 l_adr_accounting_coa_id       NUMBER;
72363 l_adr_flexfield_segment_code  VARCHAR2(30);
72364 l_adr_flex_value_set_id       NUMBER;
72365 l_adr_value_type_code         VARCHAR2(30);
72366 l_adr_value_combination_id    NUMBER;
72367 l_adr_value_segment_code      VARCHAR2(30);
72368 
72369 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
72370 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
72371 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
72372 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
72373 
72374 -- 4262811 Variables ------------------------------------------------------------------------------------------
72375 l_entered_amt_idx             NUMBER;
72376 l_accted_amt_idx              NUMBER;
72377 l_acc_rev_flag                VARCHAR2(1);
72378 l_accrual_line_num            NUMBER;
72379 l_tmp_amt                     NUMBER;
72380 l_acc_rev_natural_side_code   VARCHAR2(1);
72381 
72382 l_num_entries                 NUMBER;
72383 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
72384 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
72385 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
72386 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
72387 l_recog_line_1                NUMBER;
72388 l_recog_line_2                NUMBER;
72389 
72390 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
72391 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
72392 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
72393 
72394 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
72395 
72396 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
72397 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
72398 
72399 ---------------------------------------------------------------------------------------------------------------
72400 
72401 
72402 --
72403 -- bulk performance
72404 --
72405 l_balance_type_code           VARCHAR2(1);
72406 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
72407 l_log_module                  VARCHAR2(240);
72408 
72409 --
72410 -- Upgrade strategy
72411 --
72412 l_actual_upg_option           VARCHAR2(1);
72413 l_enc_upg_option           VARCHAR2(1);
72414 
72415 --
72416 BEGIN
72417 --
72418 IF g_log_enabled THEN
72419       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_133';
72420 END IF;
72421 --
72422 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72423 
72424       trace
72425          (p_msg      => 'BEGIN of AcctLineType_133'
72426          ,p_level    => C_LEVEL_PROCEDURE
72427          ,p_module   => l_log_module);
72428 
72429 END IF;
72430 --
72431 l_component_type             := 'AMB_JLT';
72432 l_component_code             := 'INVENTORY_VALUATION';
72433 l_component_type_code        := 'S';
72434 l_component_appl_id          :=  707;
72435 l_amb_context_code           := 'DEFAULT';
72436 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
72437 l_event_class_code           := 'USER_DEFINE';
72438 l_event_type_code            := 'UDIR_INTERORG_RCPT_NO_TP';
72439 l_line_definition_owner_code := 'S';
72440 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_NO_TP';
72441 --
72442 l_balance_type_code          := 'A';
72443 l_segment                     := NULL;
72444 l_ccid                        := NULL;
72445 l_adr_transaction_coa_id      := NULL;
72446 l_adr_accounting_coa_id       := NULL;
72447 l_adr_flexfield_segment_code  := NULL;
72448 l_adr_flex_value_set_id       := NULL;
72449 l_adr_value_type_code         := NULL;
72450 l_adr_value_combination_id    := NULL;
72451 l_adr_value_segment_code      := NULL;
72452 
72453 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
72454 l_bflow_class_code           := '';    -- 4219869 Business Flow
72455 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
72456 l_budgetary_control_flag     := 'N';
72457 
72458 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
72459 l_bflow_applied_to_amt       := NULL; -- 5132302
72460 l_entered_amt_idx            := NULL;          -- 4262811
72461 l_accted_amt_idx             := NULL;          -- 4262811
72462 l_acc_rev_flag               := NULL;          -- 4262811
72463 l_accrual_line_num           := NULL;          -- 4262811
72464 l_tmp_amt                    := NULL;          -- 4262811
72465 --
72466  
72467 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
72468     l_balance_type_code <> 'B' THEN
72469 IF NVL(p_source_24,9E125) =  1
72470  THEN 
72471 
72472    --
72473    XLA_AE_LINES_PKG.SetNewLine;
72474 
72475    p_balance_type_code          := l_balance_type_code;
72476    -- set the flag so later we will know whether the gain loss line needs to be created
72477    
72478    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
72479      p_actual_flag :='A';
72480    END IF;
72481 
72482    --
72483    -- bulk performance
72484    --
72485    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
72486                                       p_header_num   => 0); -- 4262811
72487    --
72488    -- set accounting line options
72489    --
72490    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
72491            p_natural_side_code          => 'D'
72492          , p_gain_or_loss_flag          => 'N'
72493          , p_gl_transfer_mode_code      => 'S'
72494          , p_acct_entry_type_code       => 'A'
72495          , p_switch_side_flag           => 'Y'
72496          , p_merge_duplicate_code       => 'N'
72497          );
72498    --
72499    l_acc_rev_natural_side_code := 'C';  -- 4262811
72500    -- 
72501    --
72502    -- set accounting line type info
72503    --
72504    xla_ae_lines_pkg.SetAcctLineType
72505       (p_component_type             => l_component_type
72506       ,p_event_type_code            => l_event_type_code
72507       ,p_line_definition_owner_code => l_line_definition_owner_code
72508       ,p_line_definition_code       => l_line_definition_code
72509       ,p_accounting_line_code       => l_component_code
72510       ,p_accounting_line_type_code  => l_component_type_code
72511       ,p_accounting_line_appl_id    => l_component_appl_id
72512       ,p_amb_context_code           => l_amb_context_code
72513       ,p_entity_code                => l_entity_code
72514       ,p_event_class_code           => l_event_class_code);
72515    --
72516    -- set accounting class
72517    --
72518    xla_ae_lines_pkg.SetAcctClass(
72519            p_accounting_class_code  => 'INVENTORY_VALUATION'
72520          , p_ae_header_id           => l_ae_header_id
72521          );
72522 
72523    --
72524    -- set rounding class
72525    --
72526    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
72527                       'INVENTORY_VALUATION';
72528 
72529    --
72530    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
72531    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
72532    --
72533    -- bulk performance
72534    --
72535    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
72536 
72537    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
72538       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
72539 
72540    -- 4955764
72541    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
72542       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
72543 
72544    -- 4458381 Public Sector Enh
72545    
72546    --
72547    -- set accounting attributes for the line type
72548    --
72549    l_entered_amt_idx := 3;
72550    l_accted_amt_idx  := 8;
72551    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
72552    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
72553    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
72554    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
72555    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
72556    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
72557    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
72558    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
72559    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
72560    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
72561    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
72562    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
72563    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
72564    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
72565    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
72566    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
72567    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
72568 
72569    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
72570    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
72571 
72572    ---------------------------------------------------------------------------------------------------------------
72573    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
72574    ---------------------------------------------------------------------------------------------------------------
72575    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
72576 
72577    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
72578    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
72579 
72580    IF xla_accounting_cache_pkg.GetValueChar
72581          (p_source_code         => 'LEDGER_CATEGORY_CODE'
72582          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
72583    AND l_bflow_method_code = 'PRIOR_ENTRY'
72584 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
72585    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
72586          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
72587        )
72588    THEN
72589          xla_ae_lines_pkg.BflowUpgEntry
72590            (p_business_method_code    => l_bflow_method_code
72591            ,p_business_class_code     => l_bflow_class_code
72592            ,p_balance_type            => l_balance_type_code);
72593    ELSE
72594       NULL;
72595 -- No business flow processing for business flow method of NONE.
72596    END IF;
72597 
72598    --
72599    -- call analytical criteria
72600    --
72601    
72602    --
72603    -- call description
72604    --
72605    -- No description or it is inherited.
72606    --
72607    -- call ADRs
72608    -- Bug 4922099
72609    --
72610    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
72611         (NVL(l_actual_upg_option, 'N') = 'O') OR
72612         (NVL(l_enc_upg_option, 'N') = 'O')
72613       )
72614    THEN
72615    NULL;
72616    --
72617    --
72618    
72619   l_ccid := AcctDerRule_4(
72620            p_application_id           => p_application_id
72621          , p_ae_header_id             => l_ae_header_id 
72622 , p_source_4 => p_source_4
72623          , x_transaction_coa_id       => l_adr_transaction_coa_id
72624          , x_accounting_coa_id        => l_adr_accounting_coa_id
72625          , x_value_type_code          => l_adr_value_type_code
72626          , p_side                     => 'NA'
72627    );
72628 
72629    xla_ae_lines_pkg.set_ccid(
72630     p_code_combination_id          => l_ccid
72631   , p_value_type_code              => l_adr_value_type_code
72632   , p_transaction_coa_id           => l_adr_transaction_coa_id
72633   , p_accounting_coa_id            => l_adr_accounting_coa_id
72634   , p_adr_code                     => 'CST_DEFAULT'
72635   , p_adr_type_code                => 'S'
72636   , p_component_type               => l_component_type
72637   , p_component_code               => l_component_code
72638   , p_component_type_code          => l_component_type_code
72639   , p_component_appl_id            => l_component_appl_id
72640   , p_amb_context_code             => l_amb_context_code
72641   , p_side                         => 'NA'
72642   );
72643 
72644 
72645    --
72646    --
72647    END IF;
72648    --
72649    -- Bug 4922099
72650    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
72651           (NVL(l_enc_upg_option, 'N') = 'O')
72652         ) AND
72653         (l_bflow_method_code = 'PRIOR_ENTRY')
72654       )
72655    THEN
72656       IF
72657       --
72658       1 = 2
72659       --
72660       THEN
72661       xla_accounting_err_pkg.build_message
72662                                     (p_appli_s_name            => 'XLA'
72663                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
72664                                     ,p_token_1                 => 'LINE_NUMBER'
72665                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
72666                                     ,p_token_2                 => 'LINE_TYPE_NAME'
72667                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
72668                                                                              l_component_type
72669                                                                             ,l_component_code
72670                                                                             ,l_component_type_code
72671                                                                             ,l_component_appl_id
72672                                                                             ,l_amb_context_code
72673                                                                             ,l_entity_code
72674                                                                             ,l_event_class_code
72675                                                                            )
72676                                     ,p_token_3                 => 'OWNER'
72677                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
72678                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
72679                                                                           ,p_lookup_code    => l_component_type_code
72680                                                                          )
72681                                     ,p_token_4                 => 'PRODUCT_NAME'
72682                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
72683                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
72684                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
72685                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
72686                                     ,p_ae_header_id            =>  NULL
72687                                        );
72688 
72689         IF (C_LEVEL_ERROR>= g_log_level) THEN
72690                  trace
72691                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
72692                       ,p_level    => C_LEVEL_ERROR
72693                       ,p_module   => l_log_module);
72694         END IF;
72695       END IF;
72696    END IF;
72697    --
72698    --
72699    ------------------------------------------------------------------------------------------------
72700    -- 4219869 Business Flow
72701    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
72702    -- Prior Entry.  Currently, the following code is always generated.
72703    ------------------------------------------------------------------------------------------------
72704    XLA_AE_LINES_PKG.ValidateCurrentLine;
72705 
72706    ------------------------------------------------------------------------------------
72707    -- 4219869 Business Flow
72708    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
72709    ------------------------------------------------------------------------------------
72710    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
72711 
72712    ----------------------------------------------------------------------------------
72713    -- 4219869 Business Flow
72714    -- Update journal entry status -- Need to generate this within IF <condition>
72715    ----------------------------------------------------------------------------------
72716    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
72717          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
72718          ,p_balance_type_code => l_balance_type_code
72719          );
72720 
72721    -------------------------------------------------------------------------------------------
72722    -- 4262811 - Generate the Accrual Reversal lines
72723    -------------------------------------------------------------------------------------------
72724    BEGIN
72725       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
72726                               (g_array_event(p_event_id).array_value_num('header_index'));
72727       IF l_acc_rev_flag IS NULL THEN
72728          l_acc_rev_flag := 'N';
72729       END IF;
72730    EXCEPTION
72731       WHEN OTHERS THEN
72732          l_acc_rev_flag := 'N';
72733    END;
72734    --
72735    IF (l_acc_rev_flag = 'Y') THEN
72736 
72737        -- 4645092  ------------------------------------------------------------------------------
72738        -- To allow MPA report to determine if it should generate report process
72739        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
72740        ------------------------------------------------------------------------------------------
72741 
72742        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
72743        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
72744    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
72745    -- call ADRs
72746    -- Bug 4922099
72747    --
72748    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
72749         (NVL(l_actual_upg_option, 'N') = 'O') OR
72750         (NVL(l_enc_upg_option, 'N') = 'O')
72751       )
72752    THEN
72753    NULL;
72754    --
72755    --
72756    
72757   l_ccid := AcctDerRule_4(
72758            p_application_id           => p_application_id
72759          , p_ae_header_id             => l_ae_header_id 
72760 , p_source_4 => p_source_4
72761          , x_transaction_coa_id       => l_adr_transaction_coa_id
72762          , x_accounting_coa_id        => l_adr_accounting_coa_id
72763          , x_value_type_code          => l_adr_value_type_code
72764          , p_side                     => 'NA'
72765    );
72766 
72767    xla_ae_lines_pkg.set_ccid(
72768     p_code_combination_id          => l_ccid
72769   , p_value_type_code              => l_adr_value_type_code
72770   , p_transaction_coa_id           => l_adr_transaction_coa_id
72771   , p_accounting_coa_id            => l_adr_accounting_coa_id
72772   , p_adr_code                     => 'CST_DEFAULT'
72773   , p_adr_type_code                => 'S'
72774   , p_component_type               => l_component_type
72775   , p_component_code               => l_component_code
72776   , p_component_type_code          => l_component_type_code
72777   , p_component_appl_id            => l_component_appl_id
72778   , p_amb_context_code             => l_amb_context_code
72779   , p_side                         => 'NA'
72780   );
72781 
72782 
72783    --
72784    --
72785    END IF;
72786 
72787        --
72788        -- Update the line information that should be overwritten
72789        --
72790        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
72791                                          p_header_num   => 1);
72792        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
72793 
72794        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
72795 
72796        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
72797           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
72798        END IF;
72799 
72800       --
72801       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
72802       --
72803       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
72804           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
72805       ELSE
72806           ---------------------------------------------------------------------------------------------------
72807           -- 4262811a Switch Sign
72808           ---------------------------------------------------------------------------------------------------
72809           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
72810           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
72811                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72812           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
72813                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72814           -- 5132302
72815           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
72816                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72817 
72818       END IF;
72819 
72820       -- 4955764
72821       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
72822       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
72823 
72824 
72825       XLA_AE_LINES_PKG.ValidateCurrentLine;
72826       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
72827 
72828       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
72829                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
72830                ,p_balance_type_code => l_balance_type_code);
72831 
72832    END IF;
72833 
72834    -----------------------------------------------------------------------------------------
72835    -- 4262811 Multiperiod Accounting
72836    -----------------------------------------------------------------------------------------
72837      -- No MPA option is assigned.
72838 
72839 
72840 END IF;
72841 END IF;
72842 --
72843 
72844 --
72845 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72846    trace
72847       (p_msg      => 'END of AcctLineType_133'
72848       ,p_level    => C_LEVEL_PROCEDURE
72849       ,p_module   => l_log_module);
72850 END IF;
72851 --
72852 EXCEPTION
72853   WHEN xla_exceptions_pkg.application_exception THEN
72854       RAISE;
72855   WHEN OTHERS THEN
72856        xla_exceptions_pkg.raise_message
72857            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_133');
72858 END AcctLineType_133;
72859 --
72860 
72861 ---------------------------------------
72862 --
72863 -- PRIVATE FUNCTION
72864 --         AcctLineType_134
72865 --
72866 ---------------------------------------
72867 PROCEDURE AcctLineType_134 (
72868   p_application_id        IN NUMBER
72869  ,p_event_id              IN NUMBER
72870  ,p_calculate_acctd_flag  IN VARCHAR2
72871  ,p_calculate_g_l_flag    IN VARCHAR2
72872  ,p_actual_flag           IN OUT VARCHAR2
72873  ,p_balance_type_code     OUT VARCHAR2
72874  ,p_gain_or_loss_ref      OUT VARCHAR2
72875  
72876 --Cost Management Default Account
72877  , p_source_4            IN NUMBER
72878 --DISTRIBUTION_IDENTIFIER
72879  , p_source_11            IN NUMBER
72880 --Distribution Type
72881  , p_source_12            IN VARCHAR2
72882  , p_source_12_meaning    IN VARCHAR2
72883 --Entered Currency Code
72884  , p_source_15            IN VARCHAR2
72885 --Entered Amount
72886  , p_source_18            IN NUMBER
72887 --Currency Conversion Date
72888  , p_source_19            IN DATE
72889 --Currency Conversion Rate
72890  , p_source_20            IN NUMBER
72891 --Currency Conversion Type
72892  , p_source_21            IN VARCHAR2
72893 --Accounted Amount
72894  , p_source_22            IN NUMBER
72895 --Accounting Line Type
72896  , p_source_24            IN NUMBER
72897 )
72898 IS
72899 
72900 l_component_type              VARCHAR2(80);
72901 l_component_code              VARCHAR2(30);
72902 l_component_type_code         VARCHAR2(1);
72903 l_component_appl_id           INTEGER;
72904 l_amb_context_code            VARCHAR2(30);
72905 l_entity_code                 VARCHAR2(30);
72906 l_event_class_code            VARCHAR2(30);
72907 l_ae_header_id                NUMBER;
72908 l_event_type_code             VARCHAR2(30);
72909 l_line_definition_code        VARCHAR2(30);
72910 l_line_definition_owner_code  VARCHAR2(1);
72911 --
72912 -- adr variables
72913 l_segment                     VARCHAR2(30);
72914 l_ccid                        NUMBER;
72915 l_adr_transaction_coa_id      NUMBER;
72916 l_adr_accounting_coa_id       NUMBER;
72917 l_adr_flexfield_segment_code  VARCHAR2(30);
72918 l_adr_flex_value_set_id       NUMBER;
72919 l_adr_value_type_code         VARCHAR2(30);
72920 l_adr_value_combination_id    NUMBER;
72921 l_adr_value_segment_code      VARCHAR2(30);
72922 
72923 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
72924 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
72925 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
72926 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
72927 
72928 -- 4262811 Variables ------------------------------------------------------------------------------------------
72929 l_entered_amt_idx             NUMBER;
72930 l_accted_amt_idx              NUMBER;
72931 l_acc_rev_flag                VARCHAR2(1);
72932 l_accrual_line_num            NUMBER;
72933 l_tmp_amt                     NUMBER;
72934 l_acc_rev_natural_side_code   VARCHAR2(1);
72935 
72936 l_num_entries                 NUMBER;
72937 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
72938 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
72939 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
72940 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
72941 l_recog_line_1                NUMBER;
72942 l_recog_line_2                NUMBER;
72943 
72944 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
72945 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
72946 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
72947 
72948 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
72949 
72950 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
72951 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
72952 
72953 ---------------------------------------------------------------------------------------------------------------
72954 
72955 
72956 --
72957 -- bulk performance
72958 --
72959 l_balance_type_code           VARCHAR2(1);
72960 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
72961 l_log_module                  VARCHAR2(240);
72962 
72963 --
72964 -- Upgrade strategy
72965 --
72966 l_actual_upg_option           VARCHAR2(1);
72967 l_enc_upg_option           VARCHAR2(1);
72968 
72969 --
72970 BEGIN
72971 --
72972 IF g_log_enabled THEN
72973       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_134';
72974 END IF;
72975 --
72976 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72977 
72978       trace
72979          (p_msg      => 'BEGIN of AcctLineType_134'
72980          ,p_level    => C_LEVEL_PROCEDURE
72981          ,p_module   => l_log_module);
72982 
72983 END IF;
72984 --
72985 l_component_type             := 'AMB_JLT';
72986 l_component_code             := 'INVENTORY_VALUATION';
72987 l_component_type_code        := 'S';
72988 l_component_appl_id          :=  707;
72989 l_amb_context_code           := 'DEFAULT';
72990 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
72991 l_event_class_code           := 'USER_DEFINE';
72992 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
72993 l_line_definition_owner_code := 'S';
72994 l_line_definition_code       := 'USER_FOB_SHIP_SENDER_SHIP_NOTP';
72995 --
72996 l_balance_type_code          := 'A';
72997 l_segment                     := NULL;
72998 l_ccid                        := NULL;
72999 l_adr_transaction_coa_id      := NULL;
73000 l_adr_accounting_coa_id       := NULL;
73001 l_adr_flexfield_segment_code  := NULL;
73002 l_adr_flex_value_set_id       := NULL;
73003 l_adr_value_type_code         := NULL;
73004 l_adr_value_combination_id    := NULL;
73005 l_adr_value_segment_code      := NULL;
73006 
73007 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
73008 l_bflow_class_code           := '';    -- 4219869 Business Flow
73009 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
73010 l_budgetary_control_flag     := 'N';
73011 
73012 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
73013 l_bflow_applied_to_amt       := NULL; -- 5132302
73014 l_entered_amt_idx            := NULL;          -- 4262811
73015 l_accted_amt_idx             := NULL;          -- 4262811
73016 l_acc_rev_flag               := NULL;          -- 4262811
73017 l_accrual_line_num           := NULL;          -- 4262811
73018 l_tmp_amt                    := NULL;          -- 4262811
73019 --
73020  
73021 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
73022     l_balance_type_code <> 'B' THEN
73023 IF NVL(p_source_24,9E125) =  1
73024  THEN 
73025 
73026    --
73027    XLA_AE_LINES_PKG.SetNewLine;
73028 
73029    p_balance_type_code          := l_balance_type_code;
73030    -- set the flag so later we will know whether the gain loss line needs to be created
73031    
73032    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
73033      p_actual_flag :='A';
73034    END IF;
73035 
73036    --
73037    -- bulk performance
73038    --
73039    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
73040                                       p_header_num   => 0); -- 4262811
73041    --
73042    -- set accounting line options
73043    --
73044    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
73045            p_natural_side_code          => 'D'
73046          , p_gain_or_loss_flag          => 'N'
73047          , p_gl_transfer_mode_code      => 'S'
73048          , p_acct_entry_type_code       => 'A'
73049          , p_switch_side_flag           => 'Y'
73050          , p_merge_duplicate_code       => 'N'
73051          );
73052    --
73053    l_acc_rev_natural_side_code := 'C';  -- 4262811
73054    -- 
73055    --
73056    -- set accounting line type info
73057    --
73058    xla_ae_lines_pkg.SetAcctLineType
73059       (p_component_type             => l_component_type
73060       ,p_event_type_code            => l_event_type_code
73061       ,p_line_definition_owner_code => l_line_definition_owner_code
73062       ,p_line_definition_code       => l_line_definition_code
73063       ,p_accounting_line_code       => l_component_code
73064       ,p_accounting_line_type_code  => l_component_type_code
73065       ,p_accounting_line_appl_id    => l_component_appl_id
73066       ,p_amb_context_code           => l_amb_context_code
73067       ,p_entity_code                => l_entity_code
73068       ,p_event_class_code           => l_event_class_code);
73069    --
73070    -- set accounting class
73071    --
73072    xla_ae_lines_pkg.SetAcctClass(
73073            p_accounting_class_code  => 'INVENTORY_VALUATION'
73074          , p_ae_header_id           => l_ae_header_id
73075          );
73076 
73077    --
73078    -- set rounding class
73079    --
73080    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
73081                       'INVENTORY_VALUATION';
73082 
73083    --
73084    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
73085    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
73086    --
73087    -- bulk performance
73088    --
73089    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
73090 
73091    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
73092       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
73093 
73094    -- 4955764
73095    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
73096       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
73097 
73098    -- 4458381 Public Sector Enh
73099    
73100    --
73101    -- set accounting attributes for the line type
73102    --
73103    l_entered_amt_idx := 3;
73104    l_accted_amt_idx  := 8;
73105    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
73106    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
73107    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
73108    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
73109    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
73110    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
73111    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
73112    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
73113    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
73114    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
73115    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
73116    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
73117    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
73118    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
73119    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
73120    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
73121    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
73122 
73123    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
73124    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
73125 
73126    ---------------------------------------------------------------------------------------------------------------
73127    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
73128    ---------------------------------------------------------------------------------------------------------------
73129    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
73130 
73131    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
73132    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
73133 
73134    IF xla_accounting_cache_pkg.GetValueChar
73135          (p_source_code         => 'LEDGER_CATEGORY_CODE'
73136          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
73137    AND l_bflow_method_code = 'PRIOR_ENTRY'
73138 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
73139    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
73140          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
73141        )
73142    THEN
73143          xla_ae_lines_pkg.BflowUpgEntry
73144            (p_business_method_code    => l_bflow_method_code
73145            ,p_business_class_code     => l_bflow_class_code
73146            ,p_balance_type            => l_balance_type_code);
73147    ELSE
73148       NULL;
73149 -- No business flow processing for business flow method of NONE.
73150    END IF;
73151 
73152    --
73153    -- call analytical criteria
73154    --
73155    
73156    --
73157    -- call description
73158    --
73159    -- No description or it is inherited.
73160    --
73161    -- call ADRs
73162    -- Bug 4922099
73163    --
73164    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
73165         (NVL(l_actual_upg_option, 'N') = 'O') OR
73166         (NVL(l_enc_upg_option, 'N') = 'O')
73167       )
73168    THEN
73169    NULL;
73170    --
73171    --
73172    
73173   l_ccid := AcctDerRule_4(
73174            p_application_id           => p_application_id
73175          , p_ae_header_id             => l_ae_header_id 
73176 , p_source_4 => p_source_4
73177          , x_transaction_coa_id       => l_adr_transaction_coa_id
73178          , x_accounting_coa_id        => l_adr_accounting_coa_id
73179          , x_value_type_code          => l_adr_value_type_code
73180          , p_side                     => 'NA'
73181    );
73182 
73183    xla_ae_lines_pkg.set_ccid(
73184     p_code_combination_id          => l_ccid
73185   , p_value_type_code              => l_adr_value_type_code
73186   , p_transaction_coa_id           => l_adr_transaction_coa_id
73187   , p_accounting_coa_id            => l_adr_accounting_coa_id
73188   , p_adr_code                     => 'CST_DEFAULT'
73189   , p_adr_type_code                => 'S'
73190   , p_component_type               => l_component_type
73191   , p_component_code               => l_component_code
73192   , p_component_type_code          => l_component_type_code
73193   , p_component_appl_id            => l_component_appl_id
73194   , p_amb_context_code             => l_amb_context_code
73195   , p_side                         => 'NA'
73196   );
73197 
73198 
73199    --
73200    --
73201    END IF;
73202    --
73203    -- Bug 4922099
73204    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
73205           (NVL(l_enc_upg_option, 'N') = 'O')
73206         ) AND
73207         (l_bflow_method_code = 'PRIOR_ENTRY')
73208       )
73209    THEN
73210       IF
73211       --
73212       1 = 2
73213       --
73214       THEN
73215       xla_accounting_err_pkg.build_message
73216                                     (p_appli_s_name            => 'XLA'
73217                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
73218                                     ,p_token_1                 => 'LINE_NUMBER'
73219                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
73220                                     ,p_token_2                 => 'LINE_TYPE_NAME'
73221                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
73222                                                                              l_component_type
73223                                                                             ,l_component_code
73224                                                                             ,l_component_type_code
73225                                                                             ,l_component_appl_id
73226                                                                             ,l_amb_context_code
73227                                                                             ,l_entity_code
73228                                                                             ,l_event_class_code
73229                                                                            )
73230                                     ,p_token_3                 => 'OWNER'
73231                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
73232                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
73233                                                                           ,p_lookup_code    => l_component_type_code
73234                                                                          )
73235                                     ,p_token_4                 => 'PRODUCT_NAME'
73236                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
73237                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
73238                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
73239                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
73240                                     ,p_ae_header_id            =>  NULL
73241                                        );
73242 
73243         IF (C_LEVEL_ERROR>= g_log_level) THEN
73244                  trace
73245                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
73246                       ,p_level    => C_LEVEL_ERROR
73247                       ,p_module   => l_log_module);
73248         END IF;
73249       END IF;
73250    END IF;
73251    --
73252    --
73253    ------------------------------------------------------------------------------------------------
73254    -- 4219869 Business Flow
73255    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
73256    -- Prior Entry.  Currently, the following code is always generated.
73257    ------------------------------------------------------------------------------------------------
73258    XLA_AE_LINES_PKG.ValidateCurrentLine;
73259 
73260    ------------------------------------------------------------------------------------
73261    -- 4219869 Business Flow
73262    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
73263    ------------------------------------------------------------------------------------
73264    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
73265 
73266    ----------------------------------------------------------------------------------
73267    -- 4219869 Business Flow
73268    -- Update journal entry status -- Need to generate this within IF <condition>
73269    ----------------------------------------------------------------------------------
73270    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
73271          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
73272          ,p_balance_type_code => l_balance_type_code
73273          );
73274 
73275    -------------------------------------------------------------------------------------------
73276    -- 4262811 - Generate the Accrual Reversal lines
73277    -------------------------------------------------------------------------------------------
73278    BEGIN
73279       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
73280                               (g_array_event(p_event_id).array_value_num('header_index'));
73281       IF l_acc_rev_flag IS NULL THEN
73282          l_acc_rev_flag := 'N';
73283       END IF;
73284    EXCEPTION
73285       WHEN OTHERS THEN
73286          l_acc_rev_flag := 'N';
73287    END;
73288    --
73289    IF (l_acc_rev_flag = 'Y') THEN
73290 
73291        -- 4645092  ------------------------------------------------------------------------------
73292        -- To allow MPA report to determine if it should generate report process
73293        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
73294        ------------------------------------------------------------------------------------------
73295 
73296        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
73297        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
73298    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
73299    -- call ADRs
73300    -- Bug 4922099
73301    --
73302    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
73303         (NVL(l_actual_upg_option, 'N') = 'O') OR
73304         (NVL(l_enc_upg_option, 'N') = 'O')
73305       )
73306    THEN
73307    NULL;
73308    --
73309    --
73310    
73311   l_ccid := AcctDerRule_4(
73312            p_application_id           => p_application_id
73313          , p_ae_header_id             => l_ae_header_id 
73314 , p_source_4 => p_source_4
73315          , x_transaction_coa_id       => l_adr_transaction_coa_id
73316          , x_accounting_coa_id        => l_adr_accounting_coa_id
73317          , x_value_type_code          => l_adr_value_type_code
73318          , p_side                     => 'NA'
73319    );
73320 
73321    xla_ae_lines_pkg.set_ccid(
73322     p_code_combination_id          => l_ccid
73323   , p_value_type_code              => l_adr_value_type_code
73324   , p_transaction_coa_id           => l_adr_transaction_coa_id
73325   , p_accounting_coa_id            => l_adr_accounting_coa_id
73326   , p_adr_code                     => 'CST_DEFAULT'
73327   , p_adr_type_code                => 'S'
73328   , p_component_type               => l_component_type
73329   , p_component_code               => l_component_code
73330   , p_component_type_code          => l_component_type_code
73331   , p_component_appl_id            => l_component_appl_id
73332   , p_amb_context_code             => l_amb_context_code
73333   , p_side                         => 'NA'
73334   );
73335 
73336 
73337    --
73338    --
73339    END IF;
73340 
73341        --
73342        -- Update the line information that should be overwritten
73343        --
73344        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
73345                                          p_header_num   => 1);
73346        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
73347 
73348        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
73349 
73350        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
73351           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
73352        END IF;
73353 
73354       --
73355       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
73356       --
73357       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
73358           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
73359       ELSE
73360           ---------------------------------------------------------------------------------------------------
73361           -- 4262811a Switch Sign
73362           ---------------------------------------------------------------------------------------------------
73363           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
73364           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
73365                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73366           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
73367                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73368           -- 5132302
73369           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
73370                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73371 
73372       END IF;
73373 
73374       -- 4955764
73375       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
73376       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
73377 
73378 
73379       XLA_AE_LINES_PKG.ValidateCurrentLine;
73380       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
73381 
73382       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
73383                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
73384                ,p_balance_type_code => l_balance_type_code);
73385 
73386    END IF;
73387 
73388    -----------------------------------------------------------------------------------------
73389    -- 4262811 Multiperiod Accounting
73390    -----------------------------------------------------------------------------------------
73391      -- No MPA option is assigned.
73392 
73393 
73394 END IF;
73395 END IF;
73396 --
73397 
73398 --
73399 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73400    trace
73401       (p_msg      => 'END of AcctLineType_134'
73402       ,p_level    => C_LEVEL_PROCEDURE
73403       ,p_module   => l_log_module);
73404 END IF;
73405 --
73406 EXCEPTION
73407   WHEN xla_exceptions_pkg.application_exception THEN
73408       RAISE;
73409   WHEN OTHERS THEN
73410        xla_exceptions_pkg.raise_message
73411            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_134');
73412 END AcctLineType_134;
73413 --
73414 
73415 ---------------------------------------
73416 --
73417 -- PRIVATE FUNCTION
73418 --         AcctLineType_135
73419 --
73420 ---------------------------------------
73421 PROCEDURE AcctLineType_135 (
73422   p_application_id        IN NUMBER
73423  ,p_event_id              IN NUMBER
73424  ,p_calculate_acctd_flag  IN VARCHAR2
73425  ,p_calculate_g_l_flag    IN VARCHAR2
73426  ,p_actual_flag           IN OUT VARCHAR2
73427  ,p_balance_type_code     OUT VARCHAR2
73428  ,p_gain_or_loss_ref      OUT VARCHAR2
73429  
73430 --Cost Management Default Account
73431  , p_source_4            IN NUMBER
73432 --DISTRIBUTION_IDENTIFIER
73433  , p_source_11            IN NUMBER
73434 --Distribution Type
73435  , p_source_12            IN VARCHAR2
73436  , p_source_12_meaning    IN VARCHAR2
73437 --Entered Currency Code
73438  , p_source_15            IN VARCHAR2
73439 --Entered Amount
73440  , p_source_18            IN NUMBER
73441 --Currency Conversion Date
73442  , p_source_19            IN DATE
73443 --Currency Conversion Rate
73444  , p_source_20            IN NUMBER
73445 --Currency Conversion Type
73446  , p_source_21            IN VARCHAR2
73447 --Accounted Amount
73448  , p_source_22            IN NUMBER
73449 --Accounting Line Type
73450  , p_source_24            IN NUMBER
73451 )
73452 IS
73453 
73454 l_component_type              VARCHAR2(80);
73455 l_component_code              VARCHAR2(30);
73456 l_component_type_code         VARCHAR2(1);
73457 l_component_appl_id           INTEGER;
73458 l_amb_context_code            VARCHAR2(30);
73459 l_entity_code                 VARCHAR2(30);
73460 l_event_class_code            VARCHAR2(30);
73461 l_ae_header_id                NUMBER;
73462 l_event_type_code             VARCHAR2(30);
73463 l_line_definition_code        VARCHAR2(30);
73464 l_line_definition_owner_code  VARCHAR2(1);
73465 --
73466 -- adr variables
73467 l_segment                     VARCHAR2(30);
73468 l_ccid                        NUMBER;
73469 l_adr_transaction_coa_id      NUMBER;
73470 l_adr_accounting_coa_id       NUMBER;
73471 l_adr_flexfield_segment_code  VARCHAR2(30);
73472 l_adr_flex_value_set_id       NUMBER;
73473 l_adr_value_type_code         VARCHAR2(30);
73474 l_adr_value_combination_id    NUMBER;
73475 l_adr_value_segment_code      VARCHAR2(30);
73476 
73477 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
73478 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
73479 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
73480 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
73481 
73482 -- 4262811 Variables ------------------------------------------------------------------------------------------
73483 l_entered_amt_idx             NUMBER;
73484 l_accted_amt_idx              NUMBER;
73485 l_acc_rev_flag                VARCHAR2(1);
73486 l_accrual_line_num            NUMBER;
73487 l_tmp_amt                     NUMBER;
73488 l_acc_rev_natural_side_code   VARCHAR2(1);
73489 
73490 l_num_entries                 NUMBER;
73491 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
73492 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
73493 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
73494 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
73495 l_recog_line_1                NUMBER;
73496 l_recog_line_2                NUMBER;
73497 
73498 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
73499 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
73500 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
73501 
73502 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
73503 
73504 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
73505 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
73506 
73507 ---------------------------------------------------------------------------------------------------------------
73508 
73509 
73510 --
73511 -- bulk performance
73512 --
73513 l_balance_type_code           VARCHAR2(1);
73514 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
73515 l_log_module                  VARCHAR2(240);
73516 
73517 --
73518 -- Upgrade strategy
73519 --
73520 l_actual_upg_option           VARCHAR2(1);
73521 l_enc_upg_option           VARCHAR2(1);
73522 
73523 --
73524 BEGIN
73525 --
73526 IF g_log_enabled THEN
73527       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_135';
73528 END IF;
73529 --
73530 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73531 
73532       trace
73533          (p_msg      => 'BEGIN of AcctLineType_135'
73534          ,p_level    => C_LEVEL_PROCEDURE
73535          ,p_module   => l_log_module);
73536 
73537 END IF;
73538 --
73539 l_component_type             := 'AMB_JLT';
73540 l_component_code             := 'INVENTORY_VALUATION';
73541 l_component_type_code        := 'S';
73542 l_component_appl_id          :=  707;
73543 l_amb_context_code           := 'DEFAULT';
73544 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
73545 l_event_class_code           := 'WIP_MTL';
73546 l_event_type_code            := 'WIP_MTL_ALL';
73547 l_line_definition_owner_code := 'S';
73548 l_line_definition_code       := 'WIP_MTL';
73549 --
73550 l_balance_type_code          := 'A';
73551 l_segment                     := NULL;
73552 l_ccid                        := NULL;
73553 l_adr_transaction_coa_id      := NULL;
73554 l_adr_accounting_coa_id       := NULL;
73555 l_adr_flexfield_segment_code  := NULL;
73556 l_adr_flex_value_set_id       := NULL;
73557 l_adr_value_type_code         := NULL;
73558 l_adr_value_combination_id    := NULL;
73559 l_adr_value_segment_code      := NULL;
73560 
73561 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
73562 l_bflow_class_code           := '';    -- 4219869 Business Flow
73563 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
73564 l_budgetary_control_flag     := 'N';
73565 
73566 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
73567 l_bflow_applied_to_amt       := NULL; -- 5132302
73568 l_entered_amt_idx            := NULL;          -- 4262811
73569 l_accted_amt_idx             := NULL;          -- 4262811
73570 l_acc_rev_flag               := NULL;          -- 4262811
73571 l_accrual_line_num           := NULL;          -- 4262811
73572 l_tmp_amt                    := NULL;          -- 4262811
73573 --
73574  
73575 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
73576     l_balance_type_code <> 'B' THEN
73577 IF NVL(p_source_24,9E125) =  1
73578  THEN 
73579 
73580    --
73581    XLA_AE_LINES_PKG.SetNewLine;
73582 
73583    p_balance_type_code          := l_balance_type_code;
73584    -- set the flag so later we will know whether the gain loss line needs to be created
73585    
73586    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
73587      p_actual_flag :='A';
73588    END IF;
73589 
73590    --
73591    -- bulk performance
73592    --
73593    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
73594                                       p_header_num   => 0); -- 4262811
73595    --
73596    -- set accounting line options
73597    --
73598    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
73599            p_natural_side_code          => 'D'
73600          , p_gain_or_loss_flag          => 'N'
73601          , p_gl_transfer_mode_code      => 'S'
73602          , p_acct_entry_type_code       => 'A'
73603          , p_switch_side_flag           => 'Y'
73604          , p_merge_duplicate_code       => 'N'
73605          );
73606    --
73607    l_acc_rev_natural_side_code := 'C';  -- 4262811
73608    -- 
73609    --
73610    -- set accounting line type info
73611    --
73612    xla_ae_lines_pkg.SetAcctLineType
73613       (p_component_type             => l_component_type
73614       ,p_event_type_code            => l_event_type_code
73615       ,p_line_definition_owner_code => l_line_definition_owner_code
73616       ,p_line_definition_code       => l_line_definition_code
73617       ,p_accounting_line_code       => l_component_code
73618       ,p_accounting_line_type_code  => l_component_type_code
73619       ,p_accounting_line_appl_id    => l_component_appl_id
73620       ,p_amb_context_code           => l_amb_context_code
73621       ,p_entity_code                => l_entity_code
73622       ,p_event_class_code           => l_event_class_code);
73623    --
73624    -- set accounting class
73625    --
73626    xla_ae_lines_pkg.SetAcctClass(
73627            p_accounting_class_code  => 'INVENTORY_VALUATION'
73628          , p_ae_header_id           => l_ae_header_id
73629          );
73630 
73631    --
73632    -- set rounding class
73633    --
73634    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
73635                       'INVENTORY_VALUATION';
73636 
73637    --
73638    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
73639    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
73640    --
73641    -- bulk performance
73642    --
73643    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
73644 
73645    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
73646       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
73647 
73648    -- 4955764
73649    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
73650       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
73651 
73652    -- 4458381 Public Sector Enh
73653    
73654    --
73655    -- set accounting attributes for the line type
73656    --
73657    l_entered_amt_idx := 3;
73658    l_accted_amt_idx  := 8;
73659    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
73660    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
73661    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
73662    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
73663    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
73664    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
73665    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
73666    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
73667    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
73668    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
73669    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
73670    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
73671    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
73672    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
73673    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
73674    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
73675    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
73676 
73677    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
73678    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
73679 
73680    ---------------------------------------------------------------------------------------------------------------
73681    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
73682    ---------------------------------------------------------------------------------------------------------------
73683    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
73684 
73685    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
73686    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
73687 
73688    IF xla_accounting_cache_pkg.GetValueChar
73689          (p_source_code         => 'LEDGER_CATEGORY_CODE'
73690          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
73691    AND l_bflow_method_code = 'PRIOR_ENTRY'
73692 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
73693    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
73694          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
73695        )
73696    THEN
73697          xla_ae_lines_pkg.BflowUpgEntry
73698            (p_business_method_code    => l_bflow_method_code
73699            ,p_business_class_code     => l_bflow_class_code
73700            ,p_balance_type            => l_balance_type_code);
73701    ELSE
73702       NULL;
73703 -- No business flow processing for business flow method of NONE.
73704    END IF;
73705 
73706    --
73707    -- call analytical criteria
73708    --
73709    
73710    --
73711    -- call description
73712    --
73713    -- No description or it is inherited.
73714    --
73715    -- call ADRs
73716    -- Bug 4922099
73717    --
73718    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
73719         (NVL(l_actual_upg_option, 'N') = 'O') OR
73720         (NVL(l_enc_upg_option, 'N') = 'O')
73721       )
73722    THEN
73723    NULL;
73724    --
73725    --
73726    
73727   l_ccid := AcctDerRule_4(
73728            p_application_id           => p_application_id
73729          , p_ae_header_id             => l_ae_header_id 
73730 , p_source_4 => p_source_4
73731          , x_transaction_coa_id       => l_adr_transaction_coa_id
73732          , x_accounting_coa_id        => l_adr_accounting_coa_id
73733          , x_value_type_code          => l_adr_value_type_code
73734          , p_side                     => 'NA'
73735    );
73736 
73737    xla_ae_lines_pkg.set_ccid(
73738     p_code_combination_id          => l_ccid
73739   , p_value_type_code              => l_adr_value_type_code
73740   , p_transaction_coa_id           => l_adr_transaction_coa_id
73741   , p_accounting_coa_id            => l_adr_accounting_coa_id
73742   , p_adr_code                     => 'CST_DEFAULT'
73743   , p_adr_type_code                => 'S'
73744   , p_component_type               => l_component_type
73745   , p_component_code               => l_component_code
73746   , p_component_type_code          => l_component_type_code
73747   , p_component_appl_id            => l_component_appl_id
73748   , p_amb_context_code             => l_amb_context_code
73749   , p_side                         => 'NA'
73750   );
73751 
73752 
73753    --
73754    --
73755    END IF;
73756    --
73757    -- Bug 4922099
73758    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
73759           (NVL(l_enc_upg_option, 'N') = 'O')
73760         ) AND
73761         (l_bflow_method_code = 'PRIOR_ENTRY')
73762       )
73763    THEN
73764       IF
73765       --
73766       1 = 2
73767       --
73768       THEN
73769       xla_accounting_err_pkg.build_message
73770                                     (p_appli_s_name            => 'XLA'
73771                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
73772                                     ,p_token_1                 => 'LINE_NUMBER'
73773                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
73774                                     ,p_token_2                 => 'LINE_TYPE_NAME'
73775                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
73776                                                                              l_component_type
73777                                                                             ,l_component_code
73778                                                                             ,l_component_type_code
73779                                                                             ,l_component_appl_id
73780                                                                             ,l_amb_context_code
73781                                                                             ,l_entity_code
73782                                                                             ,l_event_class_code
73783                                                                            )
73784                                     ,p_token_3                 => 'OWNER'
73785                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
73786                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
73787                                                                           ,p_lookup_code    => l_component_type_code
73788                                                                          )
73789                                     ,p_token_4                 => 'PRODUCT_NAME'
73790                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
73791                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
73792                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
73793                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
73794                                     ,p_ae_header_id            =>  NULL
73795                                        );
73796 
73797         IF (C_LEVEL_ERROR>= g_log_level) THEN
73798                  trace
73799                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
73800                       ,p_level    => C_LEVEL_ERROR
73801                       ,p_module   => l_log_module);
73802         END IF;
73803       END IF;
73804    END IF;
73805    --
73806    --
73807    ------------------------------------------------------------------------------------------------
73808    -- 4219869 Business Flow
73809    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
73810    -- Prior Entry.  Currently, the following code is always generated.
73811    ------------------------------------------------------------------------------------------------
73812    XLA_AE_LINES_PKG.ValidateCurrentLine;
73813 
73814    ------------------------------------------------------------------------------------
73815    -- 4219869 Business Flow
73816    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
73817    ------------------------------------------------------------------------------------
73818    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
73819 
73820    ----------------------------------------------------------------------------------
73821    -- 4219869 Business Flow
73822    -- Update journal entry status -- Need to generate this within IF <condition>
73823    ----------------------------------------------------------------------------------
73824    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
73825          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
73826          ,p_balance_type_code => l_balance_type_code
73827          );
73828 
73829    -------------------------------------------------------------------------------------------
73830    -- 4262811 - Generate the Accrual Reversal lines
73831    -------------------------------------------------------------------------------------------
73832    BEGIN
73833       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
73834                               (g_array_event(p_event_id).array_value_num('header_index'));
73835       IF l_acc_rev_flag IS NULL THEN
73836          l_acc_rev_flag := 'N';
73837       END IF;
73838    EXCEPTION
73839       WHEN OTHERS THEN
73840          l_acc_rev_flag := 'N';
73841    END;
73842    --
73843    IF (l_acc_rev_flag = 'Y') THEN
73844 
73845        -- 4645092  ------------------------------------------------------------------------------
73846        -- To allow MPA report to determine if it should generate report process
73847        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
73848        ------------------------------------------------------------------------------------------
73849 
73850        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
73851        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
73852    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
73853    -- call ADRs
73854    -- Bug 4922099
73855    --
73856    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
73857         (NVL(l_actual_upg_option, 'N') = 'O') OR
73858         (NVL(l_enc_upg_option, 'N') = 'O')
73859       )
73860    THEN
73861    NULL;
73862    --
73863    --
73864    
73865   l_ccid := AcctDerRule_4(
73866            p_application_id           => p_application_id
73867          , p_ae_header_id             => l_ae_header_id 
73868 , p_source_4 => p_source_4
73869          , x_transaction_coa_id       => l_adr_transaction_coa_id
73870          , x_accounting_coa_id        => l_adr_accounting_coa_id
73871          , x_value_type_code          => l_adr_value_type_code
73872          , p_side                     => 'NA'
73873    );
73874 
73875    xla_ae_lines_pkg.set_ccid(
73876     p_code_combination_id          => l_ccid
73877   , p_value_type_code              => l_adr_value_type_code
73878   , p_transaction_coa_id           => l_adr_transaction_coa_id
73879   , p_accounting_coa_id            => l_adr_accounting_coa_id
73880   , p_adr_code                     => 'CST_DEFAULT'
73881   , p_adr_type_code                => 'S'
73882   , p_component_type               => l_component_type
73883   , p_component_code               => l_component_code
73884   , p_component_type_code          => l_component_type_code
73885   , p_component_appl_id            => l_component_appl_id
73886   , p_amb_context_code             => l_amb_context_code
73887   , p_side                         => 'NA'
73888   );
73889 
73890 
73891    --
73892    --
73893    END IF;
73894 
73895        --
73896        -- Update the line information that should be overwritten
73897        --
73898        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
73899                                          p_header_num   => 1);
73900        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
73901 
73902        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
73903 
73904        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
73905           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
73906        END IF;
73907 
73908       --
73909       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
73910       --
73911       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
73912           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
73913       ELSE
73914           ---------------------------------------------------------------------------------------------------
73915           -- 4262811a Switch Sign
73916           ---------------------------------------------------------------------------------------------------
73917           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
73918           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
73919                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73920           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
73921                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73922           -- 5132302
73923           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
73924                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73925 
73926       END IF;
73927 
73928       -- 4955764
73929       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
73930       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
73931 
73932 
73933       XLA_AE_LINES_PKG.ValidateCurrentLine;
73934       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
73935 
73936       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
73937                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
73938                ,p_balance_type_code => l_balance_type_code);
73939 
73940    END IF;
73941 
73942    -----------------------------------------------------------------------------------------
73943    -- 4262811 Multiperiod Accounting
73944    -----------------------------------------------------------------------------------------
73945      -- No MPA option is assigned.
73946 
73947 
73948 END IF;
73949 END IF;
73950 --
73951 
73952 --
73953 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73954    trace
73955       (p_msg      => 'END of AcctLineType_135'
73956       ,p_level    => C_LEVEL_PROCEDURE
73957       ,p_module   => l_log_module);
73958 END IF;
73959 --
73960 EXCEPTION
73961   WHEN xla_exceptions_pkg.application_exception THEN
73962       RAISE;
73963   WHEN OTHERS THEN
73964        xla_exceptions_pkg.raise_message
73965            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_135');
73966 END AcctLineType_135;
73967 --
73968 
73969 ---------------------------------------
73970 --
73971 -- PRIVATE FUNCTION
73972 --         AcctLineType_136
73973 --
73974 ---------------------------------------
73975 PROCEDURE AcctLineType_136 (
73976   p_application_id        IN NUMBER
73977  ,p_event_id              IN NUMBER
73978  ,p_calculate_acctd_flag  IN VARCHAR2
73979  ,p_calculate_g_l_flag    IN VARCHAR2
73980  ,p_actual_flag           IN OUT VARCHAR2
73981  ,p_balance_type_code     OUT VARCHAR2
73982  ,p_gain_or_loss_ref      OUT VARCHAR2
73983  
73984 --Cost Management Default Account
73985  , p_source_4            IN NUMBER
73986 --Applied to Application ID
73987  , p_source_6            IN NUMBER
73988 --Applied to Distribution Link Type
73989  , p_source_7            IN VARCHAR2
73990 --Applied to Entity Code
73991  , p_source_8            IN VARCHAR2
73992 --Applied To Purchase Document Identifier
73993  , p_source_10            IN NUMBER
73994 --DISTRIBUTION_IDENTIFIER
73995  , p_source_11            IN NUMBER
73996 --Distribution Type
73997  , p_source_12            IN VARCHAR2
73998  , p_source_12_meaning    IN VARCHAR2
73999 --PO Budget Account
74000  , p_source_13            IN NUMBER
74001 --Encumbrance Reversal Amount Entered
74002  , p_source_14            IN NUMBER
74003 --Entered Currency Code
74004  , p_source_15            IN VARCHAR2
74005 --Transaction Encumbrance Reversal Amount
74006  , p_source_16            IN NUMBER
74007 --Entered Amount
74008  , p_source_18            IN NUMBER
74009 --Currency Conversion Date
74010  , p_source_19            IN DATE
74011 --Currency Conversion Rate
74012  , p_source_20            IN NUMBER
74013 --Currency Conversion Type
74014  , p_source_21            IN VARCHAR2
74015 --Accounted Amount
74016  , p_source_22            IN NUMBER
74017 --Purchasing Encumbrance Type Identifier
74018  , p_source_23            IN NUMBER
74019 --Accounting Line Type
74020  , p_source_24            IN NUMBER
74021 --Costing Encumbrance Upgrade Option
74022  , p_source_27            IN VARCHAR2
74023 --TXN_PO_DISTRIBUTION_ID
74024  , p_source_28            IN NUMBER
74025 )
74026 IS
74027 
74028 l_component_type              VARCHAR2(80);
74029 l_component_code              VARCHAR2(30);
74030 l_component_type_code         VARCHAR2(1);
74031 l_component_appl_id           INTEGER;
74032 l_amb_context_code            VARCHAR2(30);
74033 l_entity_code                 VARCHAR2(30);
74034 l_event_class_code            VARCHAR2(30);
74035 l_ae_header_id                NUMBER;
74036 l_event_type_code             VARCHAR2(30);
74037 l_line_definition_code        VARCHAR2(30);
74038 l_line_definition_owner_code  VARCHAR2(1);
74039 --
74040 -- adr variables
74041 l_segment                     VARCHAR2(30);
74042 l_ccid                        NUMBER;
74043 l_adr_transaction_coa_id      NUMBER;
74044 l_adr_accounting_coa_id       NUMBER;
74045 l_adr_flexfield_segment_code  VARCHAR2(30);
74046 l_adr_flex_value_set_id       NUMBER;
74047 l_adr_value_type_code         VARCHAR2(30);
74048 l_adr_value_combination_id    NUMBER;
74049 l_adr_value_segment_code      VARCHAR2(30);
74050 
74051 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
74052 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
74053 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
74054 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
74055 
74056 -- 4262811 Variables ------------------------------------------------------------------------------------------
74057 l_entered_amt_idx             NUMBER;
74058 l_accted_amt_idx              NUMBER;
74059 l_acc_rev_flag                VARCHAR2(1);
74060 l_accrual_line_num            NUMBER;
74061 l_tmp_amt                     NUMBER;
74062 l_acc_rev_natural_side_code   VARCHAR2(1);
74063 
74064 l_num_entries                 NUMBER;
74065 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
74066 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
74067 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
74068 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
74069 l_recog_line_1                NUMBER;
74070 l_recog_line_2                NUMBER;
74071 
74072 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
74073 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
74074 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
74075 
74076 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
74077 
74078 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
74079 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
74080 
74081 ---------------------------------------------------------------------------------------------------------------
74082 
74083 
74084 --
74085 -- bulk performance
74086 --
74087 l_balance_type_code           VARCHAR2(1);
74088 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
74089 l_log_module                  VARCHAR2(240);
74090 
74091 --
74092 -- Upgrade strategy
74093 --
74094 l_actual_upg_option           VARCHAR2(1);
74095 l_enc_upg_option           VARCHAR2(1);
74096 
74097 --
74098 BEGIN
74099 --
74100 IF g_log_enabled THEN
74101       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_136';
74102 END IF;
74103 --
74104 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74105 
74106       trace
74107          (p_msg      => 'BEGIN of AcctLineType_136'
74108          ,p_level    => C_LEVEL_PROCEDURE
74109          ,p_module   => l_log_module);
74110 
74111 END IF;
74112 --
74113 l_component_type             := 'AMB_JLT';
74114 l_component_code             := 'INVENTORY_VALUATION';
74115 l_component_type_code        := 'S';
74116 l_component_appl_id          :=  707;
74117 l_amb_context_code           := 'DEFAULT';
74118 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
74119 l_event_class_code           := 'PURCHASE_ORDER';
74120 l_event_type_code            := 'PURCHASE_ORDER_ALL';
74121 l_line_definition_owner_code := 'S';
74122 l_line_definition_code       := 'PURCHASE_ORDER';
74123 --
74124 l_balance_type_code          := 'A';
74125 l_segment                     := NULL;
74126 l_ccid                        := NULL;
74127 l_adr_transaction_coa_id      := NULL;
74128 l_adr_accounting_coa_id       := NULL;
74129 l_adr_flexfield_segment_code  := NULL;
74130 l_adr_flex_value_set_id       := NULL;
74131 l_adr_value_type_code         := NULL;
74132 l_adr_value_combination_id    := NULL;
74133 l_adr_value_segment_code      := NULL;
74134 
74135 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
74136 l_bflow_class_code           := '';    -- 4219869 Business Flow
74137 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
74138 l_budgetary_control_flag     := 'N';
74139 
74140 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
74141 l_bflow_applied_to_amt       := NULL; -- 5132302
74142 l_entered_amt_idx            := NULL;          -- 4262811
74143 l_accted_amt_idx             := NULL;          -- 4262811
74144 l_acc_rev_flag               := NULL;          -- 4262811
74145 l_accrual_line_num           := NULL;          -- 4262811
74146 l_tmp_amt                    := NULL;          -- 4262811
74147 --
74148  
74149 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
74150     l_balance_type_code <> 'B' THEN
74151 IF NVL(p_source_24,9E125) =  1
74152  THEN 
74153 
74154    --
74155    XLA_AE_LINES_PKG.SetNewLine;
74156 
74157    p_balance_type_code          := l_balance_type_code;
74158    -- set the flag so later we will know whether the gain loss line needs to be created
74159    
74160    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
74161      p_actual_flag :='A';
74162    END IF;
74163 
74164    --
74165    -- bulk performance
74166    --
74167    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
74168                                       p_header_num   => 0); -- 4262811
74169    --
74170    -- set accounting line options
74171    --
74172    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
74173            p_natural_side_code          => 'D'
74174          , p_gain_or_loss_flag          => 'N'
74175          , p_gl_transfer_mode_code      => 'S'
74176          , p_acct_entry_type_code       => 'A'
74177          , p_switch_side_flag           => 'Y'
74178          , p_merge_duplicate_code       => 'N'
74179          );
74180    --
74181    l_acc_rev_natural_side_code := 'C';  -- 4262811
74182    -- 
74183    --
74184    -- set accounting line type info
74185    --
74186    xla_ae_lines_pkg.SetAcctLineType
74187       (p_component_type             => l_component_type
74188       ,p_event_type_code            => l_event_type_code
74189       ,p_line_definition_owner_code => l_line_definition_owner_code
74190       ,p_line_definition_code       => l_line_definition_code
74191       ,p_accounting_line_code       => l_component_code
74192       ,p_accounting_line_type_code  => l_component_type_code
74193       ,p_accounting_line_appl_id    => l_component_appl_id
74194       ,p_amb_context_code           => l_amb_context_code
74195       ,p_entity_code                => l_entity_code
74196       ,p_event_class_code           => l_event_class_code);
74197    --
74198    -- set accounting class
74199    --
74200    xla_ae_lines_pkg.SetAcctClass(
74201            p_accounting_class_code  => 'INVENTORY_VALUATION'
74202          , p_ae_header_id           => l_ae_header_id
74203          );
74204 
74205    --
74206    -- set rounding class
74207    --
74208    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
74209                       'INVENTORY_VALUATION';
74210 
74211    --
74212    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
74213    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
74214    --
74215    -- bulk performance
74216    --
74217    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
74218 
74219    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
74220       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
74221 
74222    -- 4955764
74223    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
74224       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
74225 
74226    -- 4458381 Public Sector Enh
74227    
74228    --
74229    -- set accounting attributes for the line type
74230    --
74231    l_entered_amt_idx := 17;
74232    l_accted_amt_idx  := 22;
74233    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
74234    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
74235    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
74236    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
74237    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
74238    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
74239    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
74240    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
74241    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
74242    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
74243    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_10);
74244    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
74245    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
74246    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
74247    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
74248    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
74249    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_13);
74250    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
74251    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
74252    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
74253    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
74254    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
74255    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
74256    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
74257    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_13);
74258    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
74259    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
74260    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
74261    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
74262    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
74263    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
74264    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
74265    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
74266    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
74267    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
74268    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
74269    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
74270    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
74271    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
74272    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
74273    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
74274    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
74275    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
74276    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
74277    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
74278    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
74279    l_rec_acct_attrs.array_num_value(23)  := p_source_23;
74280    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
74281    l_rec_acct_attrs.array_num_value(24)  := p_source_23;
74282 
74283    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
74284    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
74285 
74286    ---------------------------------------------------------------------------------------------------------------
74287    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
74288    ---------------------------------------------------------------------------------------------------------------
74289    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
74290 
74291    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
74292    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
74293 
74294    IF xla_accounting_cache_pkg.GetValueChar
74295          (p_source_code         => 'LEDGER_CATEGORY_CODE'
74296          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
74297    AND l_bflow_method_code = 'PRIOR_ENTRY'
74298 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
74299    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
74300          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
74301        )
74302    THEN
74303          xla_ae_lines_pkg.BflowUpgEntry
74304            (p_business_method_code    => l_bflow_method_code
74305            ,p_business_class_code     => l_bflow_class_code
74306            ,p_balance_type            => l_balance_type_code);
74307    ELSE
74308       NULL;
74309 -- No business flow processing for business flow method of NONE.
74310    END IF;
74311 
74312    --
74313    -- call analytical criteria
74314    --
74315    
74316    --
74317    -- call description
74318    --
74319    -- No description or it is inherited.
74320    --
74321    -- call ADRs
74322    -- Bug 4922099
74323    --
74324    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
74325         (NVL(l_actual_upg_option, 'N') = 'O') OR
74326         (NVL(l_enc_upg_option, 'N') = 'O')
74327       )
74328    THEN
74329    NULL;
74330    --
74331    --
74332    
74333   l_ccid := AcctDerRule_4(
74334            p_application_id           => p_application_id
74335          , p_ae_header_id             => l_ae_header_id 
74336 , p_source_4 => p_source_4
74337          , x_transaction_coa_id       => l_adr_transaction_coa_id
74338          , x_accounting_coa_id        => l_adr_accounting_coa_id
74339          , x_value_type_code          => l_adr_value_type_code
74340          , p_side                     => 'NA'
74341    );
74342 
74343    xla_ae_lines_pkg.set_ccid(
74344     p_code_combination_id          => l_ccid
74345   , p_value_type_code              => l_adr_value_type_code
74346   , p_transaction_coa_id           => l_adr_transaction_coa_id
74347   , p_accounting_coa_id            => l_adr_accounting_coa_id
74348   , p_adr_code                     => 'CST_DEFAULT'
74349   , p_adr_type_code                => 'S'
74350   , p_component_type               => l_component_type
74351   , p_component_code               => l_component_code
74352   , p_component_type_code          => l_component_type_code
74353   , p_component_appl_id            => l_component_appl_id
74354   , p_amb_context_code             => l_amb_context_code
74355   , p_side                         => 'NA'
74356   );
74357 
74358 
74359    --
74360    --
74361    END IF;
74362    --
74363    -- Bug 4922099
74364    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
74365           (NVL(l_enc_upg_option, 'N') = 'O')
74366         ) AND
74367         (l_bflow_method_code = 'PRIOR_ENTRY')
74368       )
74369    THEN
74370       IF
74371       --
74372       1 = 2
74373       --
74374       THEN
74375       xla_accounting_err_pkg.build_message
74376                                     (p_appli_s_name            => 'XLA'
74377                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
74378                                     ,p_token_1                 => 'LINE_NUMBER'
74379                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
74380                                     ,p_token_2                 => 'LINE_TYPE_NAME'
74381                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
74382                                                                              l_component_type
74383                                                                             ,l_component_code
74384                                                                             ,l_component_type_code
74385                                                                             ,l_component_appl_id
74386                                                                             ,l_amb_context_code
74387                                                                             ,l_entity_code
74388                                                                             ,l_event_class_code
74389                                                                            )
74390                                     ,p_token_3                 => 'OWNER'
74391                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
74392                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
74393                                                                           ,p_lookup_code    => l_component_type_code
74394                                                                          )
74395                                     ,p_token_4                 => 'PRODUCT_NAME'
74396                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
74397                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
74398                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
74399                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
74400                                     ,p_ae_header_id            =>  NULL
74401                                        );
74402 
74403         IF (C_LEVEL_ERROR>= g_log_level) THEN
74404                  trace
74405                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
74406                       ,p_level    => C_LEVEL_ERROR
74407                       ,p_module   => l_log_module);
74408         END IF;
74409       END IF;
74410    END IF;
74411    --
74412    --
74413    ------------------------------------------------------------------------------------------------
74414    -- 4219869 Business Flow
74415    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
74416    -- Prior Entry.  Currently, the following code is always generated.
74417    ------------------------------------------------------------------------------------------------
74418    XLA_AE_LINES_PKG.ValidateCurrentLine;
74419 
74420    ------------------------------------------------------------------------------------
74421    -- 4219869 Business Flow
74422    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
74423    ------------------------------------------------------------------------------------
74424    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
74425 
74426    ----------------------------------------------------------------------------------
74427    -- 4219869 Business Flow
74428    -- Update journal entry status -- Need to generate this within IF <condition>
74429    ----------------------------------------------------------------------------------
74430    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
74431          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
74432          ,p_balance_type_code => l_balance_type_code
74433          );
74434 
74435    -------------------------------------------------------------------------------------------
74436    -- 4262811 - Generate the Accrual Reversal lines
74437    -------------------------------------------------------------------------------------------
74438    BEGIN
74439       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
74440                               (g_array_event(p_event_id).array_value_num('header_index'));
74441       IF l_acc_rev_flag IS NULL THEN
74442          l_acc_rev_flag := 'N';
74443       END IF;
74444    EXCEPTION
74445       WHEN OTHERS THEN
74446          l_acc_rev_flag := 'N';
74447    END;
74448    --
74449    IF (l_acc_rev_flag = 'Y') THEN
74450 
74451        -- 4645092  ------------------------------------------------------------------------------
74452        -- To allow MPA report to determine if it should generate report process
74453        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
74454        ------------------------------------------------------------------------------------------
74455 
74456        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
74457        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
74458    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
74459    -- call ADRs
74460    -- Bug 4922099
74461    --
74462    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
74463         (NVL(l_actual_upg_option, 'N') = 'O') OR
74464         (NVL(l_enc_upg_option, 'N') = 'O')
74465       )
74466    THEN
74467    NULL;
74468    --
74469    --
74470    
74471   l_ccid := AcctDerRule_4(
74472            p_application_id           => p_application_id
74473          , p_ae_header_id             => l_ae_header_id 
74474 , p_source_4 => p_source_4
74475          , x_transaction_coa_id       => l_adr_transaction_coa_id
74476          , x_accounting_coa_id        => l_adr_accounting_coa_id
74477          , x_value_type_code          => l_adr_value_type_code
74478          , p_side                     => 'NA'
74479    );
74480 
74481    xla_ae_lines_pkg.set_ccid(
74482     p_code_combination_id          => l_ccid
74483   , p_value_type_code              => l_adr_value_type_code
74484   , p_transaction_coa_id           => l_adr_transaction_coa_id
74485   , p_accounting_coa_id            => l_adr_accounting_coa_id
74486   , p_adr_code                     => 'CST_DEFAULT'
74487   , p_adr_type_code                => 'S'
74488   , p_component_type               => l_component_type
74489   , p_component_code               => l_component_code
74490   , p_component_type_code          => l_component_type_code
74491   , p_component_appl_id            => l_component_appl_id
74492   , p_amb_context_code             => l_amb_context_code
74493   , p_side                         => 'NA'
74494   );
74495 
74496 
74497    --
74498    --
74499    END IF;
74500 
74501        --
74502        -- Update the line information that should be overwritten
74503        --
74504        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
74505                                          p_header_num   => 1);
74506        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
74507 
74508        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
74509 
74510        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
74511           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
74512        END IF;
74513 
74514       --
74515       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
74516       --
74517       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
74518           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
74519       ELSE
74520           ---------------------------------------------------------------------------------------------------
74521           -- 4262811a Switch Sign
74522           ---------------------------------------------------------------------------------------------------
74523           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
74524           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
74525                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
74526           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
74527                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
74528           -- 5132302
74529           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
74530                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
74531 
74532       END IF;
74533 
74534       -- 4955764
74535       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
74536       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
74537 
74538 
74539       XLA_AE_LINES_PKG.ValidateCurrentLine;
74540       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
74541 
74542       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
74543                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
74544                ,p_balance_type_code => l_balance_type_code);
74545 
74546    END IF;
74547 
74548    -----------------------------------------------------------------------------------------
74549    -- 4262811 Multiperiod Accounting
74550    -----------------------------------------------------------------------------------------
74551      -- No MPA option is assigned.
74552 
74553 
74554 END IF;
74555 END IF;
74556 --
74557 
74558 --
74559 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74560    trace
74561       (p_msg      => 'END of AcctLineType_136'
74562       ,p_level    => C_LEVEL_PROCEDURE
74563       ,p_module   => l_log_module);
74564 END IF;
74565 --
74566 EXCEPTION
74567   WHEN xla_exceptions_pkg.application_exception THEN
74568       RAISE;
74569   WHEN OTHERS THEN
74570        xla_exceptions_pkg.raise_message
74571            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_136');
74572 END AcctLineType_136;
74573 --
74574 
74575 ---------------------------------------
74576 --
74577 -- PRIVATE FUNCTION
74578 --         AcctLineType_137
74579 --
74580 ---------------------------------------
74581 PROCEDURE AcctLineType_137 (
74582   p_application_id        IN NUMBER
74583  ,p_event_id              IN NUMBER
74584  ,p_calculate_acctd_flag  IN VARCHAR2
74585  ,p_calculate_g_l_flag    IN VARCHAR2
74586  ,p_actual_flag           IN OUT VARCHAR2
74587  ,p_balance_type_code     OUT VARCHAR2
74588  ,p_gain_or_loss_ref      OUT VARCHAR2
74589  
74590 --Cost Management Default Account
74591  , p_source_4            IN NUMBER
74592 --DISTRIBUTION_IDENTIFIER
74593  , p_source_11            IN NUMBER
74594 --Distribution Type
74595  , p_source_12            IN VARCHAR2
74596  , p_source_12_meaning    IN VARCHAR2
74597 --Entered Currency Code
74598  , p_source_15            IN VARCHAR2
74599 --Entered Amount
74600  , p_source_18            IN NUMBER
74601 --Currency Conversion Date
74602  , p_source_19            IN DATE
74603 --Currency Conversion Rate
74604  , p_source_20            IN NUMBER
74605 --Currency Conversion Type
74606  , p_source_21            IN VARCHAR2
74607 --Accounted Amount
74608  , p_source_22            IN NUMBER
74609 --Accounting Line Type
74610  , p_source_24            IN NUMBER
74611 )
74612 IS
74613 
74614 l_component_type              VARCHAR2(80);
74615 l_component_code              VARCHAR2(30);
74616 l_component_type_code         VARCHAR2(1);
74617 l_component_appl_id           INTEGER;
74618 l_amb_context_code            VARCHAR2(30);
74619 l_entity_code                 VARCHAR2(30);
74620 l_event_class_code            VARCHAR2(30);
74621 l_ae_header_id                NUMBER;
74622 l_event_type_code             VARCHAR2(30);
74623 l_line_definition_code        VARCHAR2(30);
74624 l_line_definition_owner_code  VARCHAR2(1);
74625 --
74626 -- adr variables
74627 l_segment                     VARCHAR2(30);
74628 l_ccid                        NUMBER;
74629 l_adr_transaction_coa_id      NUMBER;
74630 l_adr_accounting_coa_id       NUMBER;
74631 l_adr_flexfield_segment_code  VARCHAR2(30);
74632 l_adr_flex_value_set_id       NUMBER;
74633 l_adr_value_type_code         VARCHAR2(30);
74634 l_adr_value_combination_id    NUMBER;
74635 l_adr_value_segment_code      VARCHAR2(30);
74636 
74637 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
74638 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
74639 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
74640 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
74641 
74642 -- 4262811 Variables ------------------------------------------------------------------------------------------
74643 l_entered_amt_idx             NUMBER;
74644 l_accted_amt_idx              NUMBER;
74645 l_acc_rev_flag                VARCHAR2(1);
74646 l_accrual_line_num            NUMBER;
74647 l_tmp_amt                     NUMBER;
74648 l_acc_rev_natural_side_code   VARCHAR2(1);
74649 
74650 l_num_entries                 NUMBER;
74651 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
74652 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
74653 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
74654 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
74655 l_recog_line_1                NUMBER;
74656 l_recog_line_2                NUMBER;
74657 
74658 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
74659 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
74660 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
74661 
74662 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
74663 
74664 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
74665 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
74666 
74667 ---------------------------------------------------------------------------------------------------------------
74668 
74669 
74670 --
74671 -- bulk performance
74672 --
74673 l_balance_type_code           VARCHAR2(1);
74674 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
74675 l_log_module                  VARCHAR2(240);
74676 
74677 --
74678 -- Upgrade strategy
74679 --
74680 l_actual_upg_option           VARCHAR2(1);
74681 l_enc_upg_option           VARCHAR2(1);
74682 
74683 --
74684 BEGIN
74685 --
74686 IF g_log_enabled THEN
74687       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_137';
74688 END IF;
74689 --
74690 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74691 
74692       trace
74693          (p_msg      => 'BEGIN of AcctLineType_137'
74694          ,p_level    => C_LEVEL_PROCEDURE
74695          ,p_module   => l_log_module);
74696 
74697 END IF;
74698 --
74699 l_component_type             := 'AMB_JLT';
74700 l_component_code             := 'INVENTORY_VALUATION';
74701 l_component_type_code        := 'S';
74702 l_component_appl_id          :=  707;
74703 l_amb_context_code           := 'DEFAULT';
74704 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
74705 l_event_class_code           := 'INT_ORDER_TO_EXP';
74706 l_event_type_code            := 'INT_ORDER_TO_EXP_ALL';
74707 l_line_definition_owner_code := 'S';
74708 l_line_definition_code       := 'INT_ORDER_TO_EXP';
74709 --
74710 l_balance_type_code          := 'A';
74711 l_segment                     := NULL;
74712 l_ccid                        := NULL;
74713 l_adr_transaction_coa_id      := NULL;
74714 l_adr_accounting_coa_id       := NULL;
74715 l_adr_flexfield_segment_code  := NULL;
74716 l_adr_flex_value_set_id       := NULL;
74717 l_adr_value_type_code         := NULL;
74718 l_adr_value_combination_id    := NULL;
74719 l_adr_value_segment_code      := NULL;
74720 
74721 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
74722 l_bflow_class_code           := '';    -- 4219869 Business Flow
74723 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
74724 l_budgetary_control_flag     := 'N';
74725 
74726 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
74727 l_bflow_applied_to_amt       := NULL; -- 5132302
74728 l_entered_amt_idx            := NULL;          -- 4262811
74729 l_accted_amt_idx             := NULL;          -- 4262811
74730 l_acc_rev_flag               := NULL;          -- 4262811
74731 l_accrual_line_num           := NULL;          -- 4262811
74732 l_tmp_amt                    := NULL;          -- 4262811
74733 --
74734  
74735 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
74736     l_balance_type_code <> 'B' THEN
74737 IF NVL(p_source_24,9E125) =  1
74738  THEN 
74739 
74740    --
74741    XLA_AE_LINES_PKG.SetNewLine;
74742 
74743    p_balance_type_code          := l_balance_type_code;
74744    -- set the flag so later we will know whether the gain loss line needs to be created
74745    
74746    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
74747      p_actual_flag :='A';
74748    END IF;
74749 
74750    --
74751    -- bulk performance
74752    --
74753    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
74754                                       p_header_num   => 0); -- 4262811
74755    --
74756    -- set accounting line options
74757    --
74758    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
74759            p_natural_side_code          => 'D'
74760          , p_gain_or_loss_flag          => 'N'
74761          , p_gl_transfer_mode_code      => 'S'
74762          , p_acct_entry_type_code       => 'A'
74763          , p_switch_side_flag           => 'Y'
74764          , p_merge_duplicate_code       => 'N'
74765          );
74766    --
74767    l_acc_rev_natural_side_code := 'C';  -- 4262811
74768    -- 
74769    --
74770    -- set accounting line type info
74771    --
74772    xla_ae_lines_pkg.SetAcctLineType
74773       (p_component_type             => l_component_type
74774       ,p_event_type_code            => l_event_type_code
74775       ,p_line_definition_owner_code => l_line_definition_owner_code
74776       ,p_line_definition_code       => l_line_definition_code
74777       ,p_accounting_line_code       => l_component_code
74778       ,p_accounting_line_type_code  => l_component_type_code
74779       ,p_accounting_line_appl_id    => l_component_appl_id
74780       ,p_amb_context_code           => l_amb_context_code
74781       ,p_entity_code                => l_entity_code
74782       ,p_event_class_code           => l_event_class_code);
74783    --
74784    -- set accounting class
74785    --
74786    xla_ae_lines_pkg.SetAcctClass(
74787            p_accounting_class_code  => 'INVENTORY_VALUATION'
74788          , p_ae_header_id           => l_ae_header_id
74789          );
74790 
74791    --
74792    -- set rounding class
74793    --
74794    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
74795                       'INVENTORY_VALUATION';
74796 
74797    --
74798    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
74799    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
74800    --
74801    -- bulk performance
74802    --
74803    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
74804 
74805    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
74806       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
74807 
74808    -- 4955764
74809    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
74810       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
74811 
74812    -- 4458381 Public Sector Enh
74813    
74814    --
74815    -- set accounting attributes for the line type
74816    --
74817    l_entered_amt_idx := 3;
74818    l_accted_amt_idx  := 8;
74819    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
74820    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
74821    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
74822    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
74823    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
74824    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
74825    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
74826    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
74827    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
74828    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
74829    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
74830    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
74831    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
74832    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
74833    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
74834    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
74835    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
74836 
74837    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
74838    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
74839 
74840    ---------------------------------------------------------------------------------------------------------------
74841    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
74842    ---------------------------------------------------------------------------------------------------------------
74843    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
74844 
74845    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
74846    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
74847 
74848    IF xla_accounting_cache_pkg.GetValueChar
74849          (p_source_code         => 'LEDGER_CATEGORY_CODE'
74850          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
74851    AND l_bflow_method_code = 'PRIOR_ENTRY'
74852 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
74853    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
74854          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
74855        )
74856    THEN
74857          xla_ae_lines_pkg.BflowUpgEntry
74858            (p_business_method_code    => l_bflow_method_code
74859            ,p_business_class_code     => l_bflow_class_code
74860            ,p_balance_type            => l_balance_type_code);
74861    ELSE
74862       NULL;
74863 -- No business flow processing for business flow method of NONE.
74864    END IF;
74865 
74866    --
74867    -- call analytical criteria
74868    --
74869    
74870    --
74871    -- call description
74872    --
74873    -- No description or it is inherited.
74874    --
74875    -- call ADRs
74876    -- Bug 4922099
74877    --
74878    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
74879         (NVL(l_actual_upg_option, 'N') = 'O') OR
74880         (NVL(l_enc_upg_option, 'N') = 'O')
74881       )
74882    THEN
74883    NULL;
74884    --
74885    --
74886    
74887   l_ccid := AcctDerRule_4(
74888            p_application_id           => p_application_id
74889          , p_ae_header_id             => l_ae_header_id 
74890 , p_source_4 => p_source_4
74891          , x_transaction_coa_id       => l_adr_transaction_coa_id
74892          , x_accounting_coa_id        => l_adr_accounting_coa_id
74893          , x_value_type_code          => l_adr_value_type_code
74894          , p_side                     => 'NA'
74895    );
74896 
74897    xla_ae_lines_pkg.set_ccid(
74898     p_code_combination_id          => l_ccid
74899   , p_value_type_code              => l_adr_value_type_code
74900   , p_transaction_coa_id           => l_adr_transaction_coa_id
74901   , p_accounting_coa_id            => l_adr_accounting_coa_id
74902   , p_adr_code                     => 'CST_DEFAULT'
74903   , p_adr_type_code                => 'S'
74904   , p_component_type               => l_component_type
74905   , p_component_code               => l_component_code
74906   , p_component_type_code          => l_component_type_code
74907   , p_component_appl_id            => l_component_appl_id
74908   , p_amb_context_code             => l_amb_context_code
74909   , p_side                         => 'NA'
74910   );
74911 
74912 
74913    --
74914    --
74915    END IF;
74916    --
74917    -- Bug 4922099
74918    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
74919           (NVL(l_enc_upg_option, 'N') = 'O')
74920         ) AND
74921         (l_bflow_method_code = 'PRIOR_ENTRY')
74922       )
74923    THEN
74924       IF
74925       --
74926       1 = 2
74927       --
74928       THEN
74929       xla_accounting_err_pkg.build_message
74930                                     (p_appli_s_name            => 'XLA'
74931                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
74932                                     ,p_token_1                 => 'LINE_NUMBER'
74933                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
74934                                     ,p_token_2                 => 'LINE_TYPE_NAME'
74935                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
74936                                                                              l_component_type
74937                                                                             ,l_component_code
74938                                                                             ,l_component_type_code
74939                                                                             ,l_component_appl_id
74940                                                                             ,l_amb_context_code
74941                                                                             ,l_entity_code
74942                                                                             ,l_event_class_code
74943                                                                            )
74944                                     ,p_token_3                 => 'OWNER'
74945                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
74946                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
74947                                                                           ,p_lookup_code    => l_component_type_code
74948                                                                          )
74949                                     ,p_token_4                 => 'PRODUCT_NAME'
74950                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
74951                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
74952                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
74953                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
74954                                     ,p_ae_header_id            =>  NULL
74955                                        );
74956 
74957         IF (C_LEVEL_ERROR>= g_log_level) THEN
74958                  trace
74959                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
74960                       ,p_level    => C_LEVEL_ERROR
74961                       ,p_module   => l_log_module);
74962         END IF;
74963       END IF;
74964    END IF;
74965    --
74966    --
74967    ------------------------------------------------------------------------------------------------
74968    -- 4219869 Business Flow
74969    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
74970    -- Prior Entry.  Currently, the following code is always generated.
74971    ------------------------------------------------------------------------------------------------
74972    XLA_AE_LINES_PKG.ValidateCurrentLine;
74973 
74974    ------------------------------------------------------------------------------------
74975    -- 4219869 Business Flow
74976    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
74977    ------------------------------------------------------------------------------------
74978    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
74979 
74980    ----------------------------------------------------------------------------------
74981    -- 4219869 Business Flow
74982    -- Update journal entry status -- Need to generate this within IF <condition>
74983    ----------------------------------------------------------------------------------
74984    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
74985          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
74986          ,p_balance_type_code => l_balance_type_code
74987          );
74988 
74989    -------------------------------------------------------------------------------------------
74990    -- 4262811 - Generate the Accrual Reversal lines
74991    -------------------------------------------------------------------------------------------
74992    BEGIN
74993       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
74994                               (g_array_event(p_event_id).array_value_num('header_index'));
74995       IF l_acc_rev_flag IS NULL THEN
74996          l_acc_rev_flag := 'N';
74997       END IF;
74998    EXCEPTION
74999       WHEN OTHERS THEN
75000          l_acc_rev_flag := 'N';
75001    END;
75002    --
75003    IF (l_acc_rev_flag = 'Y') THEN
75004 
75005        -- 4645092  ------------------------------------------------------------------------------
75006        -- To allow MPA report to determine if it should generate report process
75007        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
75008        ------------------------------------------------------------------------------------------
75009 
75010        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
75011        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
75012    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
75013    -- call ADRs
75014    -- Bug 4922099
75015    --
75016    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
75017         (NVL(l_actual_upg_option, 'N') = 'O') OR
75018         (NVL(l_enc_upg_option, 'N') = 'O')
75019       )
75020    THEN
75021    NULL;
75022    --
75023    --
75024    
75025   l_ccid := AcctDerRule_4(
75026            p_application_id           => p_application_id
75027          , p_ae_header_id             => l_ae_header_id 
75028 , p_source_4 => p_source_4
75029          , x_transaction_coa_id       => l_adr_transaction_coa_id
75030          , x_accounting_coa_id        => l_adr_accounting_coa_id
75031          , x_value_type_code          => l_adr_value_type_code
75032          , p_side                     => 'NA'
75033    );
75034 
75035    xla_ae_lines_pkg.set_ccid(
75036     p_code_combination_id          => l_ccid
75037   , p_value_type_code              => l_adr_value_type_code
75038   , p_transaction_coa_id           => l_adr_transaction_coa_id
75039   , p_accounting_coa_id            => l_adr_accounting_coa_id
75040   , p_adr_code                     => 'CST_DEFAULT'
75041   , p_adr_type_code                => 'S'
75042   , p_component_type               => l_component_type
75043   , p_component_code               => l_component_code
75044   , p_component_type_code          => l_component_type_code
75045   , p_component_appl_id            => l_component_appl_id
75046   , p_amb_context_code             => l_amb_context_code
75047   , p_side                         => 'NA'
75048   );
75049 
75050 
75051    --
75052    --
75053    END IF;
75054 
75055        --
75056        -- Update the line information that should be overwritten
75057        --
75058        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
75059                                          p_header_num   => 1);
75060        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
75061 
75062        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
75063 
75064        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
75065           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
75066        END IF;
75067 
75068       --
75069       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
75070       --
75071       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
75072           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
75073       ELSE
75074           ---------------------------------------------------------------------------------------------------
75075           -- 4262811a Switch Sign
75076           ---------------------------------------------------------------------------------------------------
75077           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
75078           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
75079                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75080           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
75081                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75082           -- 5132302
75083           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
75084                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75085 
75086       END IF;
75087 
75088       -- 4955764
75089       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
75090       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
75091 
75092 
75093       XLA_AE_LINES_PKG.ValidateCurrentLine;
75094       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
75095 
75096       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
75097                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
75098                ,p_balance_type_code => l_balance_type_code);
75099 
75100    END IF;
75101 
75102    -----------------------------------------------------------------------------------------
75103    -- 4262811 Multiperiod Accounting
75104    -----------------------------------------------------------------------------------------
75105      -- No MPA option is assigned.
75106 
75107 
75108 END IF;
75109 END IF;
75110 --
75111 
75112 --
75113 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75114    trace
75115       (p_msg      => 'END of AcctLineType_137'
75116       ,p_level    => C_LEVEL_PROCEDURE
75117       ,p_module   => l_log_module);
75118 END IF;
75119 --
75120 EXCEPTION
75121   WHEN xla_exceptions_pkg.application_exception THEN
75122       RAISE;
75123   WHEN OTHERS THEN
75124        xla_exceptions_pkg.raise_message
75125            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_137');
75126 END AcctLineType_137;
75127 --
75128 
75129 ---------------------------------------
75130 --
75131 -- PRIVATE FUNCTION
75132 --         AcctLineType_138
75133 --
75134 ---------------------------------------
75135 PROCEDURE AcctLineType_138 (
75136   p_application_id        IN NUMBER
75137  ,p_event_id              IN NUMBER
75138  ,p_calculate_acctd_flag  IN VARCHAR2
75139  ,p_calculate_g_l_flag    IN VARCHAR2
75140  ,p_actual_flag           IN OUT VARCHAR2
75141  ,p_balance_type_code     OUT VARCHAR2
75142  ,p_gain_or_loss_ref      OUT VARCHAR2
75143  
75144 --Cost Management Default Account
75145  , p_source_4            IN NUMBER
75146 --DISTRIBUTION_IDENTIFIER
75147  , p_source_11            IN NUMBER
75148 --Distribution Type
75149  , p_source_12            IN VARCHAR2
75150  , p_source_12_meaning    IN VARCHAR2
75151 --Entered Currency Code
75152  , p_source_15            IN VARCHAR2
75153 --Entered Amount
75154  , p_source_18            IN NUMBER
75155 --Currency Conversion Date
75156  , p_source_19            IN DATE
75157 --Currency Conversion Rate
75158  , p_source_20            IN NUMBER
75159 --Currency Conversion Type
75160  , p_source_21            IN VARCHAR2
75161 --Accounted Amount
75162  , p_source_22            IN NUMBER
75163 --Accounting Line Type
75164  , p_source_24            IN NUMBER
75165 )
75166 IS
75167 
75168 l_component_type              VARCHAR2(80);
75169 l_component_code              VARCHAR2(30);
75170 l_component_type_code         VARCHAR2(1);
75171 l_component_appl_id           INTEGER;
75172 l_amb_context_code            VARCHAR2(30);
75173 l_entity_code                 VARCHAR2(30);
75174 l_event_class_code            VARCHAR2(30);
75175 l_ae_header_id                NUMBER;
75176 l_event_type_code             VARCHAR2(30);
75177 l_line_definition_code        VARCHAR2(30);
75178 l_line_definition_owner_code  VARCHAR2(1);
75179 --
75180 -- adr variables
75181 l_segment                     VARCHAR2(30);
75182 l_ccid                        NUMBER;
75183 l_adr_transaction_coa_id      NUMBER;
75184 l_adr_accounting_coa_id       NUMBER;
75185 l_adr_flexfield_segment_code  VARCHAR2(30);
75186 l_adr_flex_value_set_id       NUMBER;
75187 l_adr_value_type_code         VARCHAR2(30);
75188 l_adr_value_combination_id    NUMBER;
75189 l_adr_value_segment_code      VARCHAR2(30);
75190 
75191 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
75192 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
75193 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
75194 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
75195 
75196 -- 4262811 Variables ------------------------------------------------------------------------------------------
75197 l_entered_amt_idx             NUMBER;
75198 l_accted_amt_idx              NUMBER;
75199 l_acc_rev_flag                VARCHAR2(1);
75200 l_accrual_line_num            NUMBER;
75201 l_tmp_amt                     NUMBER;
75202 l_acc_rev_natural_side_code   VARCHAR2(1);
75203 
75204 l_num_entries                 NUMBER;
75205 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
75206 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
75207 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
75208 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
75209 l_recog_line_1                NUMBER;
75210 l_recog_line_2                NUMBER;
75211 
75212 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
75213 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
75214 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
75215 
75216 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
75217 
75218 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
75219 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
75220 
75221 ---------------------------------------------------------------------------------------------------------------
75222 
75223 
75224 --
75225 -- bulk performance
75226 --
75227 l_balance_type_code           VARCHAR2(1);
75228 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
75229 l_log_module                  VARCHAR2(240);
75230 
75231 --
75232 -- Upgrade strategy
75233 --
75234 l_actual_upg_option           VARCHAR2(1);
75235 l_enc_upg_option           VARCHAR2(1);
75236 
75237 --
75238 BEGIN
75239 --
75240 IF g_log_enabled THEN
75241       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_138';
75242 END IF;
75243 --
75244 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75245 
75246       trace
75247          (p_msg      => 'BEGIN of AcctLineType_138'
75248          ,p_level    => C_LEVEL_PROCEDURE
75249          ,p_module   => l_log_module);
75250 
75251 END IF;
75252 --
75253 l_component_type             := 'AMB_JLT';
75254 l_component_code             := 'INVENTORY_VALUATION';
75255 l_component_type_code        := 'S';
75256 l_component_appl_id          :=  707;
75257 l_amb_context_code           := 'DEFAULT';
75258 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
75259 l_event_class_code           := 'USER_DEFINE';
75260 l_event_type_code            := 'UFOB_RCPT_SENDER_SHIP';
75261 l_line_definition_owner_code := 'S';
75262 l_line_definition_code       := 'USER_FOB_RCPT_SENDER_SHIP';
75263 --
75264 l_balance_type_code          := 'A';
75265 l_segment                     := NULL;
75266 l_ccid                        := NULL;
75267 l_adr_transaction_coa_id      := NULL;
75268 l_adr_accounting_coa_id       := NULL;
75269 l_adr_flexfield_segment_code  := NULL;
75270 l_adr_flex_value_set_id       := NULL;
75271 l_adr_value_type_code         := NULL;
75272 l_adr_value_combination_id    := NULL;
75273 l_adr_value_segment_code      := NULL;
75274 
75275 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
75276 l_bflow_class_code           := '';    -- 4219869 Business Flow
75277 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
75278 l_budgetary_control_flag     := 'N';
75279 
75280 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
75281 l_bflow_applied_to_amt       := NULL; -- 5132302
75282 l_entered_amt_idx            := NULL;          -- 4262811
75283 l_accted_amt_idx             := NULL;          -- 4262811
75284 l_acc_rev_flag               := NULL;          -- 4262811
75285 l_accrual_line_num           := NULL;          -- 4262811
75286 l_tmp_amt                    := NULL;          -- 4262811
75287 --
75288  
75289 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
75290     l_balance_type_code <> 'B' THEN
75291 IF NVL(p_source_24,9E125) =  1
75292  THEN 
75293 
75294    --
75295    XLA_AE_LINES_PKG.SetNewLine;
75296 
75297    p_balance_type_code          := l_balance_type_code;
75298    -- set the flag so later we will know whether the gain loss line needs to be created
75299    
75300    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
75301      p_actual_flag :='A';
75302    END IF;
75303 
75304    --
75305    -- bulk performance
75306    --
75307    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
75308                                       p_header_num   => 0); -- 4262811
75309    --
75310    -- set accounting line options
75311    --
75312    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
75313            p_natural_side_code          => 'D'
75314          , p_gain_or_loss_flag          => 'N'
75315          , p_gl_transfer_mode_code      => 'S'
75316          , p_acct_entry_type_code       => 'A'
75317          , p_switch_side_flag           => 'Y'
75318          , p_merge_duplicate_code       => 'N'
75319          );
75320    --
75321    l_acc_rev_natural_side_code := 'C';  -- 4262811
75322    -- 
75323    --
75324    -- set accounting line type info
75325    --
75326    xla_ae_lines_pkg.SetAcctLineType
75327       (p_component_type             => l_component_type
75328       ,p_event_type_code            => l_event_type_code
75329       ,p_line_definition_owner_code => l_line_definition_owner_code
75330       ,p_line_definition_code       => l_line_definition_code
75331       ,p_accounting_line_code       => l_component_code
75332       ,p_accounting_line_type_code  => l_component_type_code
75333       ,p_accounting_line_appl_id    => l_component_appl_id
75334       ,p_amb_context_code           => l_amb_context_code
75335       ,p_entity_code                => l_entity_code
75336       ,p_event_class_code           => l_event_class_code);
75337    --
75338    -- set accounting class
75339    --
75340    xla_ae_lines_pkg.SetAcctClass(
75341            p_accounting_class_code  => 'INVENTORY_VALUATION'
75342          , p_ae_header_id           => l_ae_header_id
75343          );
75344 
75345    --
75346    -- set rounding class
75347    --
75348    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
75349                       'INVENTORY_VALUATION';
75350 
75351    --
75352    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
75353    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
75354    --
75355    -- bulk performance
75356    --
75357    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
75358 
75359    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
75360       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
75361 
75362    -- 4955764
75363    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
75364       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
75365 
75366    -- 4458381 Public Sector Enh
75367    
75368    --
75369    -- set accounting attributes for the line type
75370    --
75371    l_entered_amt_idx := 3;
75372    l_accted_amt_idx  := 8;
75373    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
75374    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
75375    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
75376    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
75377    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
75378    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
75379    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
75380    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
75381    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
75382    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
75383    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
75384    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
75385    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
75386    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
75387    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
75388    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
75389    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
75390 
75391    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
75392    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
75393 
75394    ---------------------------------------------------------------------------------------------------------------
75395    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
75396    ---------------------------------------------------------------------------------------------------------------
75397    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
75398 
75399    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
75400    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
75401 
75402    IF xla_accounting_cache_pkg.GetValueChar
75403          (p_source_code         => 'LEDGER_CATEGORY_CODE'
75404          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
75405    AND l_bflow_method_code = 'PRIOR_ENTRY'
75406 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
75407    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
75408          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
75409        )
75410    THEN
75411          xla_ae_lines_pkg.BflowUpgEntry
75412            (p_business_method_code    => l_bflow_method_code
75413            ,p_business_class_code     => l_bflow_class_code
75414            ,p_balance_type            => l_balance_type_code);
75415    ELSE
75416       NULL;
75417 -- No business flow processing for business flow method of NONE.
75418    END IF;
75419 
75420    --
75421    -- call analytical criteria
75422    --
75423    
75424    --
75425    -- call description
75426    --
75427    -- No description or it is inherited.
75428    --
75429    -- call ADRs
75430    -- Bug 4922099
75431    --
75432    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
75433         (NVL(l_actual_upg_option, 'N') = 'O') OR
75434         (NVL(l_enc_upg_option, 'N') = 'O')
75435       )
75436    THEN
75437    NULL;
75438    --
75439    --
75440    
75441   l_ccid := AcctDerRule_4(
75442            p_application_id           => p_application_id
75443          , p_ae_header_id             => l_ae_header_id 
75444 , p_source_4 => p_source_4
75445          , x_transaction_coa_id       => l_adr_transaction_coa_id
75446          , x_accounting_coa_id        => l_adr_accounting_coa_id
75447          , x_value_type_code          => l_adr_value_type_code
75448          , p_side                     => 'NA'
75449    );
75450 
75451    xla_ae_lines_pkg.set_ccid(
75452     p_code_combination_id          => l_ccid
75453   , p_value_type_code              => l_adr_value_type_code
75454   , p_transaction_coa_id           => l_adr_transaction_coa_id
75455   , p_accounting_coa_id            => l_adr_accounting_coa_id
75456   , p_adr_code                     => 'CST_DEFAULT'
75457   , p_adr_type_code                => 'S'
75458   , p_component_type               => l_component_type
75459   , p_component_code               => l_component_code
75460   , p_component_type_code          => l_component_type_code
75461   , p_component_appl_id            => l_component_appl_id
75462   , p_amb_context_code             => l_amb_context_code
75463   , p_side                         => 'NA'
75464   );
75465 
75466 
75467    --
75468    --
75469    END IF;
75470    --
75471    -- Bug 4922099
75472    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
75473           (NVL(l_enc_upg_option, 'N') = 'O')
75474         ) AND
75475         (l_bflow_method_code = 'PRIOR_ENTRY')
75476       )
75477    THEN
75478       IF
75479       --
75480       1 = 2
75481       --
75482       THEN
75483       xla_accounting_err_pkg.build_message
75484                                     (p_appli_s_name            => 'XLA'
75485                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
75486                                     ,p_token_1                 => 'LINE_NUMBER'
75487                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
75488                                     ,p_token_2                 => 'LINE_TYPE_NAME'
75489                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
75490                                                                              l_component_type
75491                                                                             ,l_component_code
75492                                                                             ,l_component_type_code
75493                                                                             ,l_component_appl_id
75494                                                                             ,l_amb_context_code
75495                                                                             ,l_entity_code
75496                                                                             ,l_event_class_code
75497                                                                            )
75498                                     ,p_token_3                 => 'OWNER'
75499                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
75500                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
75501                                                                           ,p_lookup_code    => l_component_type_code
75502                                                                          )
75503                                     ,p_token_4                 => 'PRODUCT_NAME'
75504                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
75505                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
75506                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
75507                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
75508                                     ,p_ae_header_id            =>  NULL
75509                                        );
75510 
75511         IF (C_LEVEL_ERROR>= g_log_level) THEN
75512                  trace
75513                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
75514                       ,p_level    => C_LEVEL_ERROR
75515                       ,p_module   => l_log_module);
75516         END IF;
75517       END IF;
75518    END IF;
75519    --
75520    --
75521    ------------------------------------------------------------------------------------------------
75522    -- 4219869 Business Flow
75523    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
75524    -- Prior Entry.  Currently, the following code is always generated.
75525    ------------------------------------------------------------------------------------------------
75526    XLA_AE_LINES_PKG.ValidateCurrentLine;
75527 
75528    ------------------------------------------------------------------------------------
75529    -- 4219869 Business Flow
75530    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
75531    ------------------------------------------------------------------------------------
75532    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
75533 
75534    ----------------------------------------------------------------------------------
75535    -- 4219869 Business Flow
75536    -- Update journal entry status -- Need to generate this within IF <condition>
75537    ----------------------------------------------------------------------------------
75538    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
75539          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
75540          ,p_balance_type_code => l_balance_type_code
75541          );
75542 
75543    -------------------------------------------------------------------------------------------
75544    -- 4262811 - Generate the Accrual Reversal lines
75545    -------------------------------------------------------------------------------------------
75546    BEGIN
75547       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
75548                               (g_array_event(p_event_id).array_value_num('header_index'));
75549       IF l_acc_rev_flag IS NULL THEN
75550          l_acc_rev_flag := 'N';
75551       END IF;
75552    EXCEPTION
75553       WHEN OTHERS THEN
75554          l_acc_rev_flag := 'N';
75555    END;
75556    --
75557    IF (l_acc_rev_flag = 'Y') THEN
75558 
75559        -- 4645092  ------------------------------------------------------------------------------
75560        -- To allow MPA report to determine if it should generate report process
75561        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
75562        ------------------------------------------------------------------------------------------
75563 
75564        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
75565        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
75566    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
75567    -- call ADRs
75568    -- Bug 4922099
75569    --
75570    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
75571         (NVL(l_actual_upg_option, 'N') = 'O') OR
75572         (NVL(l_enc_upg_option, 'N') = 'O')
75573       )
75574    THEN
75575    NULL;
75576    --
75577    --
75578    
75579   l_ccid := AcctDerRule_4(
75580            p_application_id           => p_application_id
75581          , p_ae_header_id             => l_ae_header_id 
75582 , p_source_4 => p_source_4
75583          , x_transaction_coa_id       => l_adr_transaction_coa_id
75584          , x_accounting_coa_id        => l_adr_accounting_coa_id
75585          , x_value_type_code          => l_adr_value_type_code
75586          , p_side                     => 'NA'
75587    );
75588 
75589    xla_ae_lines_pkg.set_ccid(
75590     p_code_combination_id          => l_ccid
75591   , p_value_type_code              => l_adr_value_type_code
75592   , p_transaction_coa_id           => l_adr_transaction_coa_id
75593   , p_accounting_coa_id            => l_adr_accounting_coa_id
75594   , p_adr_code                     => 'CST_DEFAULT'
75595   , p_adr_type_code                => 'S'
75596   , p_component_type               => l_component_type
75597   , p_component_code               => l_component_code
75598   , p_component_type_code          => l_component_type_code
75599   , p_component_appl_id            => l_component_appl_id
75600   , p_amb_context_code             => l_amb_context_code
75601   , p_side                         => 'NA'
75602   );
75603 
75604 
75605    --
75606    --
75607    END IF;
75608 
75609        --
75610        -- Update the line information that should be overwritten
75611        --
75612        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
75613                                          p_header_num   => 1);
75614        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
75615 
75616        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
75617 
75618        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
75619           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
75620        END IF;
75621 
75622       --
75623       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
75624       --
75625       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
75626           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
75627       ELSE
75628           ---------------------------------------------------------------------------------------------------
75629           -- 4262811a Switch Sign
75630           ---------------------------------------------------------------------------------------------------
75631           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
75632           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
75633                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75634           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
75635                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75636           -- 5132302
75637           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
75638                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75639 
75640       END IF;
75641 
75642       -- 4955764
75643       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
75644       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
75645 
75646 
75647       XLA_AE_LINES_PKG.ValidateCurrentLine;
75648       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
75649 
75650       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
75651                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
75652                ,p_balance_type_code => l_balance_type_code);
75653 
75654    END IF;
75655 
75656    -----------------------------------------------------------------------------------------
75657    -- 4262811 Multiperiod Accounting
75658    -----------------------------------------------------------------------------------------
75659      -- No MPA option is assigned.
75660 
75661 
75662 END IF;
75663 END IF;
75664 --
75665 
75666 --
75667 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75668    trace
75669       (p_msg      => 'END of AcctLineType_138'
75670       ,p_level    => C_LEVEL_PROCEDURE
75671       ,p_module   => l_log_module);
75672 END IF;
75673 --
75674 EXCEPTION
75675   WHEN xla_exceptions_pkg.application_exception THEN
75676       RAISE;
75677   WHEN OTHERS THEN
75678        xla_exceptions_pkg.raise_message
75679            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_138');
75680 END AcctLineType_138;
75681 --
75682 
75683 ---------------------------------------
75684 --
75685 -- PRIVATE FUNCTION
75686 --         AcctLineType_139
75687 --
75688 ---------------------------------------
75689 PROCEDURE AcctLineType_139 (
75690   p_application_id        IN NUMBER
75691  ,p_event_id              IN NUMBER
75692  ,p_calculate_acctd_flag  IN VARCHAR2
75693  ,p_calculate_g_l_flag    IN VARCHAR2
75694  ,p_actual_flag           IN OUT VARCHAR2
75695  ,p_balance_type_code     OUT VARCHAR2
75696  ,p_gain_or_loss_ref      OUT VARCHAR2
75697  
75698 --Cost Management Default Account
75699  , p_source_4            IN NUMBER
75700 --DISTRIBUTION_IDENTIFIER
75701  , p_source_11            IN NUMBER
75702 --Distribution Type
75703  , p_source_12            IN VARCHAR2
75704  , p_source_12_meaning    IN VARCHAR2
75705 --Entered Currency Code
75706  , p_source_15            IN VARCHAR2
75707 --Entered Amount
75708  , p_source_18            IN NUMBER
75709 --Currency Conversion Date
75710  , p_source_19            IN DATE
75711 --Currency Conversion Rate
75712  , p_source_20            IN NUMBER
75713 --Currency Conversion Type
75714  , p_source_21            IN VARCHAR2
75715 --Accounted Amount
75716  , p_source_22            IN NUMBER
75717 --Accounting Line Type
75718  , p_source_24            IN NUMBER
75719 )
75720 IS
75721 
75722 l_component_type              VARCHAR2(80);
75723 l_component_code              VARCHAR2(30);
75724 l_component_type_code         VARCHAR2(1);
75725 l_component_appl_id           INTEGER;
75726 l_amb_context_code            VARCHAR2(30);
75727 l_entity_code                 VARCHAR2(30);
75728 l_event_class_code            VARCHAR2(30);
75729 l_ae_header_id                NUMBER;
75730 l_event_type_code             VARCHAR2(30);
75731 l_line_definition_code        VARCHAR2(30);
75732 l_line_definition_owner_code  VARCHAR2(1);
75733 --
75734 -- adr variables
75735 l_segment                     VARCHAR2(30);
75736 l_ccid                        NUMBER;
75737 l_adr_transaction_coa_id      NUMBER;
75738 l_adr_accounting_coa_id       NUMBER;
75739 l_adr_flexfield_segment_code  VARCHAR2(30);
75740 l_adr_flex_value_set_id       NUMBER;
75741 l_adr_value_type_code         VARCHAR2(30);
75742 l_adr_value_combination_id    NUMBER;
75743 l_adr_value_segment_code      VARCHAR2(30);
75744 
75745 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
75746 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
75747 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
75748 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
75749 
75750 -- 4262811 Variables ------------------------------------------------------------------------------------------
75751 l_entered_amt_idx             NUMBER;
75752 l_accted_amt_idx              NUMBER;
75753 l_acc_rev_flag                VARCHAR2(1);
75754 l_accrual_line_num            NUMBER;
75755 l_tmp_amt                     NUMBER;
75756 l_acc_rev_natural_side_code   VARCHAR2(1);
75757 
75758 l_num_entries                 NUMBER;
75759 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
75760 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
75761 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
75762 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
75763 l_recog_line_1                NUMBER;
75764 l_recog_line_2                NUMBER;
75765 
75766 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
75767 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
75768 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
75769 
75770 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
75771 
75772 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
75773 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
75774 
75775 ---------------------------------------------------------------------------------------------------------------
75776 
75777 
75778 --
75779 -- bulk performance
75780 --
75781 l_balance_type_code           VARCHAR2(1);
75782 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
75783 l_log_module                  VARCHAR2(240);
75784 
75785 --
75786 -- Upgrade strategy
75787 --
75788 l_actual_upg_option           VARCHAR2(1);
75789 l_enc_upg_option           VARCHAR2(1);
75790 
75791 --
75792 BEGIN
75793 --
75794 IF g_log_enabled THEN
75795       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_139';
75796 END IF;
75797 --
75798 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75799 
75800       trace
75801          (p_msg      => 'BEGIN of AcctLineType_139'
75802          ,p_level    => C_LEVEL_PROCEDURE
75803          ,p_module   => l_log_module);
75804 
75805 END IF;
75806 --
75807 l_component_type             := 'AMB_JLT';
75808 l_component_code             := 'INVENTORY_VALUATION';
75809 l_component_type_code        := 'S';
75810 l_component_appl_id          :=  707;
75811 l_amb_context_code           := 'DEFAULT';
75812 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
75813 l_event_class_code           := 'USER_DEFINE';
75814 l_event_type_code            := 'UIPV_TXFR';
75815 l_line_definition_owner_code := 'S';
75816 l_line_definition_code       := 'USER_IPV_TXFR';
75817 --
75818 l_balance_type_code          := 'A';
75819 l_segment                     := NULL;
75820 l_ccid                        := NULL;
75821 l_adr_transaction_coa_id      := NULL;
75822 l_adr_accounting_coa_id       := NULL;
75823 l_adr_flexfield_segment_code  := NULL;
75824 l_adr_flex_value_set_id       := NULL;
75825 l_adr_value_type_code         := NULL;
75826 l_adr_value_combination_id    := NULL;
75827 l_adr_value_segment_code      := NULL;
75828 
75829 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
75830 l_bflow_class_code           := '';    -- 4219869 Business Flow
75831 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
75832 l_budgetary_control_flag     := 'N';
75833 
75834 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
75835 l_bflow_applied_to_amt       := NULL; -- 5132302
75836 l_entered_amt_idx            := NULL;          -- 4262811
75837 l_accted_amt_idx             := NULL;          -- 4262811
75838 l_acc_rev_flag               := NULL;          -- 4262811
75839 l_accrual_line_num           := NULL;          -- 4262811
75840 l_tmp_amt                    := NULL;          -- 4262811
75841 --
75842  
75843 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
75844     l_balance_type_code <> 'B' THEN
75845 IF NVL(p_source_24,9E125) =  1
75846  THEN 
75847 
75848    --
75849    XLA_AE_LINES_PKG.SetNewLine;
75850 
75851    p_balance_type_code          := l_balance_type_code;
75852    -- set the flag so later we will know whether the gain loss line needs to be created
75853    
75854    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
75855      p_actual_flag :='A';
75856    END IF;
75857 
75858    --
75859    -- bulk performance
75860    --
75861    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
75862                                       p_header_num   => 0); -- 4262811
75863    --
75864    -- set accounting line options
75865    --
75866    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
75867            p_natural_side_code          => 'D'
75868          , p_gain_or_loss_flag          => 'N'
75869          , p_gl_transfer_mode_code      => 'S'
75870          , p_acct_entry_type_code       => 'A'
75871          , p_switch_side_flag           => 'Y'
75872          , p_merge_duplicate_code       => 'N'
75873          );
75874    --
75875    l_acc_rev_natural_side_code := 'C';  -- 4262811
75876    -- 
75877    --
75878    -- set accounting line type info
75879    --
75880    xla_ae_lines_pkg.SetAcctLineType
75881       (p_component_type             => l_component_type
75882       ,p_event_type_code            => l_event_type_code
75883       ,p_line_definition_owner_code => l_line_definition_owner_code
75884       ,p_line_definition_code       => l_line_definition_code
75885       ,p_accounting_line_code       => l_component_code
75886       ,p_accounting_line_type_code  => l_component_type_code
75887       ,p_accounting_line_appl_id    => l_component_appl_id
75888       ,p_amb_context_code           => l_amb_context_code
75889       ,p_entity_code                => l_entity_code
75890       ,p_event_class_code           => l_event_class_code);
75891    --
75892    -- set accounting class
75893    --
75894    xla_ae_lines_pkg.SetAcctClass(
75895            p_accounting_class_code  => 'INVENTORY_VALUATION'
75896          , p_ae_header_id           => l_ae_header_id
75897          );
75898 
75899    --
75900    -- set rounding class
75901    --
75902    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
75903                       'INVENTORY_VALUATION';
75904 
75905    --
75906    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
75907    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
75908    --
75909    -- bulk performance
75910    --
75911    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
75912 
75913    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
75914       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
75915 
75916    -- 4955764
75917    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
75918       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
75919 
75920    -- 4458381 Public Sector Enh
75921    
75922    --
75923    -- set accounting attributes for the line type
75924    --
75925    l_entered_amt_idx := 3;
75926    l_accted_amt_idx  := 8;
75927    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
75928    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
75929    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
75930    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
75931    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
75932    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
75933    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
75934    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
75935    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
75936    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
75937    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
75938    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
75939    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
75940    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
75941    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
75942    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
75943    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
75944 
75945    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
75946    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
75947 
75948    ---------------------------------------------------------------------------------------------------------------
75949    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
75950    ---------------------------------------------------------------------------------------------------------------
75951    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
75952 
75953    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
75954    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
75955 
75956    IF xla_accounting_cache_pkg.GetValueChar
75957          (p_source_code         => 'LEDGER_CATEGORY_CODE'
75958          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
75959    AND l_bflow_method_code = 'PRIOR_ENTRY'
75960 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
75961    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
75962          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
75963        )
75964    THEN
75965          xla_ae_lines_pkg.BflowUpgEntry
75966            (p_business_method_code    => l_bflow_method_code
75967            ,p_business_class_code     => l_bflow_class_code
75968            ,p_balance_type            => l_balance_type_code);
75969    ELSE
75970       NULL;
75971 -- No business flow processing for business flow method of NONE.
75972    END IF;
75973 
75974    --
75975    -- call analytical criteria
75976    --
75977    
75978    --
75979    -- call description
75980    --
75981    -- No description or it is inherited.
75982    --
75983    -- call ADRs
75984    -- Bug 4922099
75985    --
75986    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
75987         (NVL(l_actual_upg_option, 'N') = 'O') OR
75988         (NVL(l_enc_upg_option, 'N') = 'O')
75989       )
75990    THEN
75991    NULL;
75992    --
75993    --
75994    
75995   l_ccid := AcctDerRule_4(
75996            p_application_id           => p_application_id
75997          , p_ae_header_id             => l_ae_header_id 
75998 , p_source_4 => p_source_4
75999          , x_transaction_coa_id       => l_adr_transaction_coa_id
76000          , x_accounting_coa_id        => l_adr_accounting_coa_id
76001          , x_value_type_code          => l_adr_value_type_code
76002          , p_side                     => 'NA'
76003    );
76004 
76005    xla_ae_lines_pkg.set_ccid(
76006     p_code_combination_id          => l_ccid
76007   , p_value_type_code              => l_adr_value_type_code
76008   , p_transaction_coa_id           => l_adr_transaction_coa_id
76009   , p_accounting_coa_id            => l_adr_accounting_coa_id
76010   , p_adr_code                     => 'CST_DEFAULT'
76011   , p_adr_type_code                => 'S'
76012   , p_component_type               => l_component_type
76013   , p_component_code               => l_component_code
76014   , p_component_type_code          => l_component_type_code
76015   , p_component_appl_id            => l_component_appl_id
76016   , p_amb_context_code             => l_amb_context_code
76017   , p_side                         => 'NA'
76018   );
76019 
76020 
76021    --
76022    --
76023    END IF;
76024    --
76025    -- Bug 4922099
76026    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
76027           (NVL(l_enc_upg_option, 'N') = 'O')
76028         ) AND
76029         (l_bflow_method_code = 'PRIOR_ENTRY')
76030       )
76031    THEN
76032       IF
76033       --
76034       1 = 2
76035       --
76036       THEN
76037       xla_accounting_err_pkg.build_message
76038                                     (p_appli_s_name            => 'XLA'
76039                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
76040                                     ,p_token_1                 => 'LINE_NUMBER'
76041                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
76042                                     ,p_token_2                 => 'LINE_TYPE_NAME'
76043                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
76044                                                                              l_component_type
76045                                                                             ,l_component_code
76046                                                                             ,l_component_type_code
76047                                                                             ,l_component_appl_id
76048                                                                             ,l_amb_context_code
76049                                                                             ,l_entity_code
76050                                                                             ,l_event_class_code
76051                                                                            )
76052                                     ,p_token_3                 => 'OWNER'
76053                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
76054                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
76055                                                                           ,p_lookup_code    => l_component_type_code
76056                                                                          )
76057                                     ,p_token_4                 => 'PRODUCT_NAME'
76058                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
76059                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
76060                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
76061                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
76062                                     ,p_ae_header_id            =>  NULL
76063                                        );
76064 
76065         IF (C_LEVEL_ERROR>= g_log_level) THEN
76066                  trace
76067                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
76068                       ,p_level    => C_LEVEL_ERROR
76069                       ,p_module   => l_log_module);
76070         END IF;
76071       END IF;
76072    END IF;
76073    --
76074    --
76075    ------------------------------------------------------------------------------------------------
76076    -- 4219869 Business Flow
76077    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
76078    -- Prior Entry.  Currently, the following code is always generated.
76079    ------------------------------------------------------------------------------------------------
76080    XLA_AE_LINES_PKG.ValidateCurrentLine;
76081 
76082    ------------------------------------------------------------------------------------
76083    -- 4219869 Business Flow
76084    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
76085    ------------------------------------------------------------------------------------
76086    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
76087 
76088    ----------------------------------------------------------------------------------
76089    -- 4219869 Business Flow
76090    -- Update journal entry status -- Need to generate this within IF <condition>
76091    ----------------------------------------------------------------------------------
76092    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
76093          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
76094          ,p_balance_type_code => l_balance_type_code
76095          );
76096 
76097    -------------------------------------------------------------------------------------------
76098    -- 4262811 - Generate the Accrual Reversal lines
76099    -------------------------------------------------------------------------------------------
76100    BEGIN
76101       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
76102                               (g_array_event(p_event_id).array_value_num('header_index'));
76103       IF l_acc_rev_flag IS NULL THEN
76104          l_acc_rev_flag := 'N';
76105       END IF;
76106    EXCEPTION
76107       WHEN OTHERS THEN
76108          l_acc_rev_flag := 'N';
76109    END;
76110    --
76111    IF (l_acc_rev_flag = 'Y') THEN
76112 
76113        -- 4645092  ------------------------------------------------------------------------------
76114        -- To allow MPA report to determine if it should generate report process
76115        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
76116        ------------------------------------------------------------------------------------------
76117 
76118        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
76119        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
76120    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
76121    -- call ADRs
76122    -- Bug 4922099
76123    --
76124    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
76125         (NVL(l_actual_upg_option, 'N') = 'O') OR
76126         (NVL(l_enc_upg_option, 'N') = 'O')
76127       )
76128    THEN
76129    NULL;
76130    --
76131    --
76132    
76133   l_ccid := AcctDerRule_4(
76134            p_application_id           => p_application_id
76135          , p_ae_header_id             => l_ae_header_id 
76136 , p_source_4 => p_source_4
76137          , x_transaction_coa_id       => l_adr_transaction_coa_id
76138          , x_accounting_coa_id        => l_adr_accounting_coa_id
76139          , x_value_type_code          => l_adr_value_type_code
76140          , p_side                     => 'NA'
76141    );
76142 
76143    xla_ae_lines_pkg.set_ccid(
76144     p_code_combination_id          => l_ccid
76145   , p_value_type_code              => l_adr_value_type_code
76146   , p_transaction_coa_id           => l_adr_transaction_coa_id
76147   , p_accounting_coa_id            => l_adr_accounting_coa_id
76148   , p_adr_code                     => 'CST_DEFAULT'
76149   , p_adr_type_code                => 'S'
76150   , p_component_type               => l_component_type
76151   , p_component_code               => l_component_code
76152   , p_component_type_code          => l_component_type_code
76153   , p_component_appl_id            => l_component_appl_id
76154   , p_amb_context_code             => l_amb_context_code
76155   , p_side                         => 'NA'
76156   );
76157 
76158 
76159    --
76160    --
76161    END IF;
76162 
76163        --
76164        -- Update the line information that should be overwritten
76165        --
76166        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
76167                                          p_header_num   => 1);
76168        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
76169 
76170        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
76171 
76172        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
76173           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
76174        END IF;
76175 
76176       --
76177       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
76178       --
76179       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
76180           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
76181       ELSE
76182           ---------------------------------------------------------------------------------------------------
76183           -- 4262811a Switch Sign
76184           ---------------------------------------------------------------------------------------------------
76185           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
76186           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
76187                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76188           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
76189                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76190           -- 5132302
76191           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
76192                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76193 
76194       END IF;
76195 
76196       -- 4955764
76197       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
76198       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
76199 
76200 
76201       XLA_AE_LINES_PKG.ValidateCurrentLine;
76202       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
76203 
76204       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
76205                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
76206                ,p_balance_type_code => l_balance_type_code);
76207 
76208    END IF;
76209 
76210    -----------------------------------------------------------------------------------------
76211    -- 4262811 Multiperiod Accounting
76212    -----------------------------------------------------------------------------------------
76213      -- No MPA option is assigned.
76214 
76215 
76216 END IF;
76217 END IF;
76218 --
76219 
76220 --
76221 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76222    trace
76223       (p_msg      => 'END of AcctLineType_139'
76224       ,p_level    => C_LEVEL_PROCEDURE
76225       ,p_module   => l_log_module);
76226 END IF;
76227 --
76228 EXCEPTION
76229   WHEN xla_exceptions_pkg.application_exception THEN
76230       RAISE;
76231   WHEN OTHERS THEN
76232        xla_exceptions_pkg.raise_message
76233            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_139');
76234 END AcctLineType_139;
76235 --
76236 
76237 ---------------------------------------
76238 --
76239 -- PRIVATE FUNCTION
76240 --         AcctLineType_140
76241 --
76242 ---------------------------------------
76243 PROCEDURE AcctLineType_140 (
76244   p_application_id        IN NUMBER
76245  ,p_event_id              IN NUMBER
76246  ,p_calculate_acctd_flag  IN VARCHAR2
76247  ,p_calculate_g_l_flag    IN VARCHAR2
76248  ,p_actual_flag           IN OUT VARCHAR2
76249  ,p_balance_type_code     OUT VARCHAR2
76250  ,p_gain_or_loss_ref      OUT VARCHAR2
76251  
76252 --Cost Management Default Account
76253  , p_source_4            IN NUMBER
76254 --DISTRIBUTION_IDENTIFIER
76255  , p_source_11            IN NUMBER
76256 --Distribution Type
76257  , p_source_12            IN VARCHAR2
76258  , p_source_12_meaning    IN VARCHAR2
76259 --Entered Currency Code
76260  , p_source_15            IN VARCHAR2
76261 --Entered Amount
76262  , p_source_18            IN NUMBER
76263 --Currency Conversion Date
76264  , p_source_19            IN DATE
76265 --Currency Conversion Rate
76266  , p_source_20            IN NUMBER
76267 --Currency Conversion Type
76268  , p_source_21            IN VARCHAR2
76269 --Accounted Amount
76270  , p_source_22            IN NUMBER
76271 --Accounting Line Type
76272  , p_source_24            IN NUMBER
76273 )
76274 IS
76275 
76276 l_component_type              VARCHAR2(80);
76277 l_component_code              VARCHAR2(30);
76278 l_component_type_code         VARCHAR2(1);
76279 l_component_appl_id           INTEGER;
76280 l_amb_context_code            VARCHAR2(30);
76281 l_entity_code                 VARCHAR2(30);
76282 l_event_class_code            VARCHAR2(30);
76283 l_ae_header_id                NUMBER;
76284 l_event_type_code             VARCHAR2(30);
76285 l_line_definition_code        VARCHAR2(30);
76286 l_line_definition_owner_code  VARCHAR2(1);
76287 --
76288 -- adr variables
76289 l_segment                     VARCHAR2(30);
76290 l_ccid                        NUMBER;
76291 l_adr_transaction_coa_id      NUMBER;
76292 l_adr_accounting_coa_id       NUMBER;
76293 l_adr_flexfield_segment_code  VARCHAR2(30);
76294 l_adr_flex_value_set_id       NUMBER;
76295 l_adr_value_type_code         VARCHAR2(30);
76296 l_adr_value_combination_id    NUMBER;
76297 l_adr_value_segment_code      VARCHAR2(30);
76298 
76299 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
76300 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
76301 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
76302 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
76303 
76304 -- 4262811 Variables ------------------------------------------------------------------------------------------
76305 l_entered_amt_idx             NUMBER;
76306 l_accted_amt_idx              NUMBER;
76307 l_acc_rev_flag                VARCHAR2(1);
76308 l_accrual_line_num            NUMBER;
76309 l_tmp_amt                     NUMBER;
76310 l_acc_rev_natural_side_code   VARCHAR2(1);
76311 
76312 l_num_entries                 NUMBER;
76313 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
76314 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
76315 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
76316 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
76317 l_recog_line_1                NUMBER;
76318 l_recog_line_2                NUMBER;
76319 
76320 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
76321 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
76322 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
76323 
76324 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
76325 
76326 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
76327 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
76328 
76329 ---------------------------------------------------------------------------------------------------------------
76330 
76331 
76332 --
76333 -- bulk performance
76334 --
76335 l_balance_type_code           VARCHAR2(1);
76336 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
76337 l_log_module                  VARCHAR2(240);
76338 
76339 --
76340 -- Upgrade strategy
76341 --
76342 l_actual_upg_option           VARCHAR2(1);
76343 l_enc_upg_option           VARCHAR2(1);
76344 
76345 --
76346 BEGIN
76347 --
76348 IF g_log_enabled THEN
76349       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_140';
76350 END IF;
76351 --
76352 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76353 
76354       trace
76355          (p_msg      => 'BEGIN of AcctLineType_140'
76356          ,p_level    => C_LEVEL_PROCEDURE
76357          ,p_module   => l_log_module);
76358 
76359 END IF;
76360 --
76361 l_component_type             := 'AMB_JLT';
76362 l_component_code             := 'INVENTORY_VALUATION';
76363 l_component_type_code        := 'S';
76364 l_component_appl_id          :=  707;
76365 l_amb_context_code           := 'DEFAULT';
76366 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
76367 l_event_class_code           := 'USER_DEFINE';
76368 l_event_type_code            := 'USUB_TXFR';
76369 l_line_definition_owner_code := 'S';
76370 l_line_definition_code       := 'USER_SUB_TXFR';
76371 --
76372 l_balance_type_code          := 'A';
76373 l_segment                     := NULL;
76374 l_ccid                        := NULL;
76375 l_adr_transaction_coa_id      := NULL;
76376 l_adr_accounting_coa_id       := NULL;
76377 l_adr_flexfield_segment_code  := NULL;
76378 l_adr_flex_value_set_id       := NULL;
76379 l_adr_value_type_code         := NULL;
76380 l_adr_value_combination_id    := NULL;
76381 l_adr_value_segment_code      := NULL;
76382 
76383 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
76384 l_bflow_class_code           := '';    -- 4219869 Business Flow
76385 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
76386 l_budgetary_control_flag     := 'N';
76387 
76388 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
76389 l_bflow_applied_to_amt       := NULL; -- 5132302
76390 l_entered_amt_idx            := NULL;          -- 4262811
76391 l_accted_amt_idx             := NULL;          -- 4262811
76392 l_acc_rev_flag               := NULL;          -- 4262811
76393 l_accrual_line_num           := NULL;          -- 4262811
76394 l_tmp_amt                    := NULL;          -- 4262811
76395 --
76396  
76397 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
76398     l_balance_type_code <> 'B' THEN
76399 IF NVL(p_source_24,9E125) =  1
76400  THEN 
76401 
76402    --
76403    XLA_AE_LINES_PKG.SetNewLine;
76404 
76405    p_balance_type_code          := l_balance_type_code;
76406    -- set the flag so later we will know whether the gain loss line needs to be created
76407    
76408    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
76409      p_actual_flag :='A';
76410    END IF;
76411 
76412    --
76413    -- bulk performance
76414    --
76415    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
76416                                       p_header_num   => 0); -- 4262811
76417    --
76418    -- set accounting line options
76419    --
76420    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
76421            p_natural_side_code          => 'D'
76422          , p_gain_or_loss_flag          => 'N'
76423          , p_gl_transfer_mode_code      => 'S'
76424          , p_acct_entry_type_code       => 'A'
76425          , p_switch_side_flag           => 'Y'
76426          , p_merge_duplicate_code       => 'N'
76427          );
76428    --
76429    l_acc_rev_natural_side_code := 'C';  -- 4262811
76430    -- 
76431    --
76432    -- set accounting line type info
76433    --
76434    xla_ae_lines_pkg.SetAcctLineType
76435       (p_component_type             => l_component_type
76436       ,p_event_type_code            => l_event_type_code
76437       ,p_line_definition_owner_code => l_line_definition_owner_code
76438       ,p_line_definition_code       => l_line_definition_code
76439       ,p_accounting_line_code       => l_component_code
76440       ,p_accounting_line_type_code  => l_component_type_code
76441       ,p_accounting_line_appl_id    => l_component_appl_id
76442       ,p_amb_context_code           => l_amb_context_code
76443       ,p_entity_code                => l_entity_code
76444       ,p_event_class_code           => l_event_class_code);
76445    --
76446    -- set accounting class
76447    --
76448    xla_ae_lines_pkg.SetAcctClass(
76449            p_accounting_class_code  => 'INVENTORY_VALUATION'
76450          , p_ae_header_id           => l_ae_header_id
76451          );
76452 
76453    --
76454    -- set rounding class
76455    --
76456    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
76457                       'INVENTORY_VALUATION';
76458 
76459    --
76460    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
76461    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
76462    --
76463    -- bulk performance
76464    --
76465    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
76466 
76467    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
76468       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
76469 
76470    -- 4955764
76471    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
76472       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
76473 
76474    -- 4458381 Public Sector Enh
76475    
76476    --
76477    -- set accounting attributes for the line type
76478    --
76479    l_entered_amt_idx := 3;
76480    l_accted_amt_idx  := 8;
76481    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
76482    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
76483    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
76484    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
76485    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
76486    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
76487    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
76488    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
76489    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
76490    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
76491    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
76492    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
76493    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
76494    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
76495    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
76496    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
76497    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
76498 
76499    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
76500    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
76501 
76502    ---------------------------------------------------------------------------------------------------------------
76503    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
76504    ---------------------------------------------------------------------------------------------------------------
76505    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
76506 
76507    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
76508    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
76509 
76510    IF xla_accounting_cache_pkg.GetValueChar
76511          (p_source_code         => 'LEDGER_CATEGORY_CODE'
76512          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
76513    AND l_bflow_method_code = 'PRIOR_ENTRY'
76514 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
76515    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
76516          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
76517        )
76518    THEN
76519          xla_ae_lines_pkg.BflowUpgEntry
76520            (p_business_method_code    => l_bflow_method_code
76521            ,p_business_class_code     => l_bflow_class_code
76522            ,p_balance_type            => l_balance_type_code);
76523    ELSE
76524       NULL;
76525 -- No business flow processing for business flow method of NONE.
76526    END IF;
76527 
76528    --
76529    -- call analytical criteria
76530    --
76531    
76532    --
76533    -- call description
76534    --
76535    -- No description or it is inherited.
76536    --
76537    -- call ADRs
76538    -- Bug 4922099
76539    --
76540    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
76541         (NVL(l_actual_upg_option, 'N') = 'O') OR
76542         (NVL(l_enc_upg_option, 'N') = 'O')
76543       )
76544    THEN
76545    NULL;
76546    --
76547    --
76548    
76549   l_ccid := AcctDerRule_4(
76550            p_application_id           => p_application_id
76551          , p_ae_header_id             => l_ae_header_id 
76552 , p_source_4 => p_source_4
76553          , x_transaction_coa_id       => l_adr_transaction_coa_id
76554          , x_accounting_coa_id        => l_adr_accounting_coa_id
76555          , x_value_type_code          => l_adr_value_type_code
76556          , p_side                     => 'NA'
76557    );
76558 
76559    xla_ae_lines_pkg.set_ccid(
76560     p_code_combination_id          => l_ccid
76561   , p_value_type_code              => l_adr_value_type_code
76562   , p_transaction_coa_id           => l_adr_transaction_coa_id
76563   , p_accounting_coa_id            => l_adr_accounting_coa_id
76564   , p_adr_code                     => 'CST_DEFAULT'
76565   , p_adr_type_code                => 'S'
76566   , p_component_type               => l_component_type
76567   , p_component_code               => l_component_code
76568   , p_component_type_code          => l_component_type_code
76569   , p_component_appl_id            => l_component_appl_id
76570   , p_amb_context_code             => l_amb_context_code
76571   , p_side                         => 'NA'
76572   );
76573 
76574 
76575    --
76576    --
76577    END IF;
76578    --
76579    -- Bug 4922099
76580    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
76581           (NVL(l_enc_upg_option, 'N') = 'O')
76582         ) AND
76583         (l_bflow_method_code = 'PRIOR_ENTRY')
76584       )
76585    THEN
76586       IF
76587       --
76588       1 = 2
76589       --
76590       THEN
76591       xla_accounting_err_pkg.build_message
76592                                     (p_appli_s_name            => 'XLA'
76593                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
76594                                     ,p_token_1                 => 'LINE_NUMBER'
76595                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
76596                                     ,p_token_2                 => 'LINE_TYPE_NAME'
76597                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
76598                                                                              l_component_type
76599                                                                             ,l_component_code
76600                                                                             ,l_component_type_code
76601                                                                             ,l_component_appl_id
76602                                                                             ,l_amb_context_code
76603                                                                             ,l_entity_code
76604                                                                             ,l_event_class_code
76605                                                                            )
76606                                     ,p_token_3                 => 'OWNER'
76607                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
76608                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
76609                                                                           ,p_lookup_code    => l_component_type_code
76610                                                                          )
76611                                     ,p_token_4                 => 'PRODUCT_NAME'
76612                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
76613                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
76614                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
76615                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
76616                                     ,p_ae_header_id            =>  NULL
76617                                        );
76618 
76619         IF (C_LEVEL_ERROR>= g_log_level) THEN
76620                  trace
76621                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
76622                       ,p_level    => C_LEVEL_ERROR
76623                       ,p_module   => l_log_module);
76624         END IF;
76625       END IF;
76626    END IF;
76627    --
76628    --
76629    ------------------------------------------------------------------------------------------------
76630    -- 4219869 Business Flow
76631    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
76632    -- Prior Entry.  Currently, the following code is always generated.
76633    ------------------------------------------------------------------------------------------------
76634    XLA_AE_LINES_PKG.ValidateCurrentLine;
76635 
76636    ------------------------------------------------------------------------------------
76637    -- 4219869 Business Flow
76638    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
76639    ------------------------------------------------------------------------------------
76640    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
76641 
76642    ----------------------------------------------------------------------------------
76643    -- 4219869 Business Flow
76644    -- Update journal entry status -- Need to generate this within IF <condition>
76645    ----------------------------------------------------------------------------------
76646    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
76647          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
76648          ,p_balance_type_code => l_balance_type_code
76649          );
76650 
76651    -------------------------------------------------------------------------------------------
76652    -- 4262811 - Generate the Accrual Reversal lines
76653    -------------------------------------------------------------------------------------------
76654    BEGIN
76655       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
76656                               (g_array_event(p_event_id).array_value_num('header_index'));
76657       IF l_acc_rev_flag IS NULL THEN
76658          l_acc_rev_flag := 'N';
76659       END IF;
76660    EXCEPTION
76661       WHEN OTHERS THEN
76662          l_acc_rev_flag := 'N';
76663    END;
76664    --
76665    IF (l_acc_rev_flag = 'Y') THEN
76666 
76667        -- 4645092  ------------------------------------------------------------------------------
76668        -- To allow MPA report to determine if it should generate report process
76669        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
76670        ------------------------------------------------------------------------------------------
76671 
76672        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
76673        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
76674    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
76675    -- call ADRs
76676    -- Bug 4922099
76677    --
76678    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
76679         (NVL(l_actual_upg_option, 'N') = 'O') OR
76680         (NVL(l_enc_upg_option, 'N') = 'O')
76681       )
76682    THEN
76683    NULL;
76684    --
76685    --
76686    
76687   l_ccid := AcctDerRule_4(
76688            p_application_id           => p_application_id
76689          , p_ae_header_id             => l_ae_header_id 
76690 , p_source_4 => p_source_4
76691          , x_transaction_coa_id       => l_adr_transaction_coa_id
76692          , x_accounting_coa_id        => l_adr_accounting_coa_id
76693          , x_value_type_code          => l_adr_value_type_code
76694          , p_side                     => 'NA'
76695    );
76696 
76697    xla_ae_lines_pkg.set_ccid(
76698     p_code_combination_id          => l_ccid
76699   , p_value_type_code              => l_adr_value_type_code
76700   , p_transaction_coa_id           => l_adr_transaction_coa_id
76701   , p_accounting_coa_id            => l_adr_accounting_coa_id
76702   , p_adr_code                     => 'CST_DEFAULT'
76703   , p_adr_type_code                => 'S'
76704   , p_component_type               => l_component_type
76705   , p_component_code               => l_component_code
76706   , p_component_type_code          => l_component_type_code
76707   , p_component_appl_id            => l_component_appl_id
76708   , p_amb_context_code             => l_amb_context_code
76709   , p_side                         => 'NA'
76710   );
76711 
76712 
76713    --
76714    --
76715    END IF;
76716 
76717        --
76718        -- Update the line information that should be overwritten
76719        --
76720        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
76721                                          p_header_num   => 1);
76722        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
76723 
76724        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
76725 
76726        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
76727           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
76728        END IF;
76729 
76730       --
76731       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
76732       --
76733       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
76734           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
76735       ELSE
76736           ---------------------------------------------------------------------------------------------------
76737           -- 4262811a Switch Sign
76738           ---------------------------------------------------------------------------------------------------
76739           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
76740           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
76741                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76742           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
76743                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76744           -- 5132302
76745           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
76746                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76747 
76748       END IF;
76749 
76750       -- 4955764
76751       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
76752       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
76753 
76754 
76755       XLA_AE_LINES_PKG.ValidateCurrentLine;
76756       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
76757 
76758       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
76759                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
76760                ,p_balance_type_code => l_balance_type_code);
76761 
76762    END IF;
76763 
76764    -----------------------------------------------------------------------------------------
76765    -- 4262811 Multiperiod Accounting
76766    -----------------------------------------------------------------------------------------
76767      -- No MPA option is assigned.
76768 
76769 
76770 END IF;
76771 END IF;
76772 --
76773 
76774 --
76775 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76776    trace
76777       (p_msg      => 'END of AcctLineType_140'
76778       ,p_level    => C_LEVEL_PROCEDURE
76779       ,p_module   => l_log_module);
76780 END IF;
76781 --
76782 EXCEPTION
76783   WHEN xla_exceptions_pkg.application_exception THEN
76784       RAISE;
76785   WHEN OTHERS THEN
76786        xla_exceptions_pkg.raise_message
76787            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_140');
76788 END AcctLineType_140;
76789 --
76790 
76791 ---------------------------------------
76792 --
76793 -- PRIVATE FUNCTION
76794 --         AcctLineType_141
76795 --
76796 ---------------------------------------
76797 PROCEDURE AcctLineType_141 (
76798   p_application_id        IN NUMBER
76799  ,p_event_id              IN NUMBER
76800  ,p_calculate_acctd_flag  IN VARCHAR2
76801  ,p_calculate_g_l_flag    IN VARCHAR2
76802  ,p_actual_flag           IN OUT VARCHAR2
76803  ,p_balance_type_code     OUT VARCHAR2
76804  ,p_gain_or_loss_ref      OUT VARCHAR2
76805  
76806 --Cost Management Default Account
76807  , p_source_4            IN NUMBER
76808 --Applied to Application ID
76809  , p_source_6            IN NUMBER
76810 --Applied to Distribution Link Type
76811  , p_source_7            IN VARCHAR2
76812 --Applied to Entity Code
76813  , p_source_8            IN VARCHAR2
76814 --DISTRIBUTION_IDENTIFIER
76815  , p_source_11            IN NUMBER
76816 --Distribution Type
76817  , p_source_12            IN VARCHAR2
76818  , p_source_12_meaning    IN VARCHAR2
76819 --Encumbrance Reversal Amount Entered
76820  , p_source_14            IN NUMBER
76821 --Entered Currency Code
76822  , p_source_15            IN VARCHAR2
76823 --Transaction Encumbrance Reversal Amount
76824  , p_source_16            IN NUMBER
76825 --Entered Amount
76826  , p_source_18            IN NUMBER
76827 --Currency Conversion Date
76828  , p_source_19            IN DATE
76829 --Currency Conversion Rate
76830  , p_source_20            IN NUMBER
76831 --Currency Conversion Type
76832  , p_source_21            IN VARCHAR2
76833 --Accounted Amount
76834  , p_source_22            IN NUMBER
76835 --Accounting Line Type
76836  , p_source_24            IN NUMBER
76837 --Costing Encumbrance Upgrade Option
76838  , p_source_27            IN VARCHAR2
76839 --TXN_PO_DISTRIBUTION_ID
76840  , p_source_28            IN NUMBER
76841 --TXN_PO_HEADER_ID
76842  , p_source_29            IN NUMBER
76843 --Requisition Budget Account
76844  , p_source_30            IN NUMBER
76845 --Requisition Encumbrance Type Identifier
76846  , p_source_31            IN NUMBER
76847 )
76848 IS
76849 
76850 l_component_type              VARCHAR2(80);
76851 l_component_code              VARCHAR2(30);
76852 l_component_type_code         VARCHAR2(1);
76853 l_component_appl_id           INTEGER;
76854 l_amb_context_code            VARCHAR2(30);
76855 l_entity_code                 VARCHAR2(30);
76856 l_event_class_code            VARCHAR2(30);
76857 l_ae_header_id                NUMBER;
76858 l_event_type_code             VARCHAR2(30);
76859 l_line_definition_code        VARCHAR2(30);
76860 l_line_definition_owner_code  VARCHAR2(1);
76861 --
76862 -- adr variables
76863 l_segment                     VARCHAR2(30);
76864 l_ccid                        NUMBER;
76865 l_adr_transaction_coa_id      NUMBER;
76866 l_adr_accounting_coa_id       NUMBER;
76867 l_adr_flexfield_segment_code  VARCHAR2(30);
76868 l_adr_flex_value_set_id       NUMBER;
76869 l_adr_value_type_code         VARCHAR2(30);
76870 l_adr_value_combination_id    NUMBER;
76871 l_adr_value_segment_code      VARCHAR2(30);
76872 
76873 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
76874 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
76875 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
76876 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
76877 
76878 -- 4262811 Variables ------------------------------------------------------------------------------------------
76879 l_entered_amt_idx             NUMBER;
76880 l_accted_amt_idx              NUMBER;
76881 l_acc_rev_flag                VARCHAR2(1);
76882 l_accrual_line_num            NUMBER;
76883 l_tmp_amt                     NUMBER;
76884 l_acc_rev_natural_side_code   VARCHAR2(1);
76885 
76886 l_num_entries                 NUMBER;
76887 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
76888 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
76889 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
76890 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
76891 l_recog_line_1                NUMBER;
76892 l_recog_line_2                NUMBER;
76893 
76894 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
76895 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
76896 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
76897 
76898 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
76899 
76900 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
76901 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
76902 
76903 ---------------------------------------------------------------------------------------------------------------
76904 
76905 
76906 --
76907 -- bulk performance
76908 --
76909 l_balance_type_code           VARCHAR2(1);
76910 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
76911 l_log_module                  VARCHAR2(240);
76912 
76913 --
76914 -- Upgrade strategy
76915 --
76916 l_actual_upg_option           VARCHAR2(1);
76917 l_enc_upg_option           VARCHAR2(1);
76918 
76919 --
76920 BEGIN
76921 --
76922 IF g_log_enabled THEN
76923       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_141';
76924 END IF;
76925 --
76926 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76927 
76928       trace
76929          (p_msg      => 'BEGIN of AcctLineType_141'
76930          ,p_level    => C_LEVEL_PROCEDURE
76931          ,p_module   => l_log_module);
76932 
76933 END IF;
76934 --
76935 l_component_type             := 'AMB_JLT';
76936 l_component_code             := 'INVENTORY_VALUATION';
76937 l_component_type_code        := 'S';
76938 l_component_appl_id          :=  707;
76939 l_amb_context_code           := 'DEFAULT';
76940 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
76941 l_event_class_code           := 'FOB_SHIP_RECIPIENT_RCPT';
76942 l_event_type_code            := 'FOB_SHIP_RECIPIENT_RCPT_ALL';
76943 l_line_definition_owner_code := 'S';
76944 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_RCPT';
76945 --
76946 l_balance_type_code          := 'A';
76947 l_segment                     := NULL;
76948 l_ccid                        := NULL;
76949 l_adr_transaction_coa_id      := NULL;
76950 l_adr_accounting_coa_id       := NULL;
76951 l_adr_flexfield_segment_code  := NULL;
76952 l_adr_flex_value_set_id       := NULL;
76953 l_adr_value_type_code         := NULL;
76954 l_adr_value_combination_id    := NULL;
76955 l_adr_value_segment_code      := NULL;
76956 
76957 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
76958 l_bflow_class_code           := '';    -- 4219869 Business Flow
76959 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
76960 l_budgetary_control_flag     := 'N';
76961 
76962 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
76963 l_bflow_applied_to_amt       := NULL; -- 5132302
76964 l_entered_amt_idx            := NULL;          -- 4262811
76965 l_accted_amt_idx             := NULL;          -- 4262811
76966 l_acc_rev_flag               := NULL;          -- 4262811
76967 l_accrual_line_num           := NULL;          -- 4262811
76968 l_tmp_amt                    := NULL;          -- 4262811
76969 --
76970  
76971 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
76972     l_balance_type_code <> 'B' THEN
76973 IF NVL(p_source_24,9E125) =  1
76974  THEN 
76975 
76976    --
76977    XLA_AE_LINES_PKG.SetNewLine;
76978 
76979    p_balance_type_code          := l_balance_type_code;
76980    -- set the flag so later we will know whether the gain loss line needs to be created
76981    
76982    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
76983      p_actual_flag :='A';
76984    END IF;
76985 
76986    --
76987    -- bulk performance
76988    --
76989    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
76990                                       p_header_num   => 0); -- 4262811
76991    --
76992    -- set accounting line options
76993    --
76994    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
76995            p_natural_side_code          => 'D'
76996          , p_gain_or_loss_flag          => 'N'
76997          , p_gl_transfer_mode_code      => 'S'
76998          , p_acct_entry_type_code       => 'A'
76999          , p_switch_side_flag           => 'Y'
77000          , p_merge_duplicate_code       => 'N'
77001          );
77002    --
77003    l_acc_rev_natural_side_code := 'C';  -- 4262811
77004    -- 
77005    --
77006    -- set accounting line type info
77007    --
77008    xla_ae_lines_pkg.SetAcctLineType
77009       (p_component_type             => l_component_type
77010       ,p_event_type_code            => l_event_type_code
77011       ,p_line_definition_owner_code => l_line_definition_owner_code
77012       ,p_line_definition_code       => l_line_definition_code
77013       ,p_accounting_line_code       => l_component_code
77014       ,p_accounting_line_type_code  => l_component_type_code
77015       ,p_accounting_line_appl_id    => l_component_appl_id
77016       ,p_amb_context_code           => l_amb_context_code
77017       ,p_entity_code                => l_entity_code
77018       ,p_event_class_code           => l_event_class_code);
77019    --
77020    -- set accounting class
77021    --
77022    xla_ae_lines_pkg.SetAcctClass(
77023            p_accounting_class_code  => 'INVENTORY_VALUATION'
77024          , p_ae_header_id           => l_ae_header_id
77025          );
77026 
77027    --
77028    -- set rounding class
77029    --
77030    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
77031                       'INVENTORY_VALUATION';
77032 
77033    --
77034    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
77035    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
77036    --
77037    -- bulk performance
77038    --
77039    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
77040 
77041    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
77042       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
77043 
77044    -- 4955764
77045    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
77046       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
77047 
77048    -- 4458381 Public Sector Enh
77049    
77050    --
77051    -- set accounting attributes for the line type
77052    --
77053    l_entered_amt_idx := 17;
77054    l_accted_amt_idx  := 22;
77055    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
77056    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
77057    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
77058    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
77059    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
77060    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
77061    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
77062    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
77063    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
77064    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
77065    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
77066    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
77067    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
77068    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
77069    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
77070    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
77071    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
77072    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
77073    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
77074    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
77075    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
77076    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
77077    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
77078    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
77079    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
77080    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
77081    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
77082    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
77083    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
77084    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
77085    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
77086    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
77087    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
77088    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
77089    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
77090    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
77091    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
77092    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
77093    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
77094    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
77095    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
77096    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
77097    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
77098    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
77099    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
77100    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
77101    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
77102    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
77103    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
77104 
77105    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
77106    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
77107 
77108    ---------------------------------------------------------------------------------------------------------------
77109    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
77110    ---------------------------------------------------------------------------------------------------------------
77111    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
77112 
77113    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
77114    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
77115 
77116    IF xla_accounting_cache_pkg.GetValueChar
77117          (p_source_code         => 'LEDGER_CATEGORY_CODE'
77118          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
77119    AND l_bflow_method_code = 'PRIOR_ENTRY'
77120 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
77121    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
77122          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
77123        )
77124    THEN
77125          xla_ae_lines_pkg.BflowUpgEntry
77126            (p_business_method_code    => l_bflow_method_code
77127            ,p_business_class_code     => l_bflow_class_code
77128            ,p_balance_type            => l_balance_type_code);
77129    ELSE
77130       NULL;
77131 -- No business flow processing for business flow method of NONE.
77132    END IF;
77133 
77134    --
77135    -- call analytical criteria
77136    --
77137    
77138    --
77139    -- call description
77140    --
77141    -- No description or it is inherited.
77142    --
77143    -- call ADRs
77144    -- Bug 4922099
77145    --
77146    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
77147         (NVL(l_actual_upg_option, 'N') = 'O') OR
77148         (NVL(l_enc_upg_option, 'N') = 'O')
77149       )
77150    THEN
77151    NULL;
77152    --
77153    --
77154    
77155   l_ccid := AcctDerRule_4(
77156            p_application_id           => p_application_id
77157          , p_ae_header_id             => l_ae_header_id 
77158 , p_source_4 => p_source_4
77159          , x_transaction_coa_id       => l_adr_transaction_coa_id
77160          , x_accounting_coa_id        => l_adr_accounting_coa_id
77161          , x_value_type_code          => l_adr_value_type_code
77162          , p_side                     => 'NA'
77163    );
77164 
77165    xla_ae_lines_pkg.set_ccid(
77166     p_code_combination_id          => l_ccid
77167   , p_value_type_code              => l_adr_value_type_code
77168   , p_transaction_coa_id           => l_adr_transaction_coa_id
77169   , p_accounting_coa_id            => l_adr_accounting_coa_id
77170   , p_adr_code                     => 'CST_DEFAULT'
77171   , p_adr_type_code                => 'S'
77172   , p_component_type               => l_component_type
77173   , p_component_code               => l_component_code
77174   , p_component_type_code          => l_component_type_code
77175   , p_component_appl_id            => l_component_appl_id
77176   , p_amb_context_code             => l_amb_context_code
77177   , p_side                         => 'NA'
77178   );
77179 
77180 
77181    --
77182    --
77183    END IF;
77184    --
77185    -- Bug 4922099
77186    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
77187           (NVL(l_enc_upg_option, 'N') = 'O')
77188         ) AND
77189         (l_bflow_method_code = 'PRIOR_ENTRY')
77190       )
77191    THEN
77192       IF
77193       --
77194       1 = 2
77195       --
77196       THEN
77197       xla_accounting_err_pkg.build_message
77198                                     (p_appli_s_name            => 'XLA'
77199                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
77200                                     ,p_token_1                 => 'LINE_NUMBER'
77201                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
77202                                     ,p_token_2                 => 'LINE_TYPE_NAME'
77203                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
77204                                                                              l_component_type
77205                                                                             ,l_component_code
77206                                                                             ,l_component_type_code
77207                                                                             ,l_component_appl_id
77208                                                                             ,l_amb_context_code
77209                                                                             ,l_entity_code
77210                                                                             ,l_event_class_code
77211                                                                            )
77212                                     ,p_token_3                 => 'OWNER'
77213                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
77214                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
77215                                                                           ,p_lookup_code    => l_component_type_code
77216                                                                          )
77217                                     ,p_token_4                 => 'PRODUCT_NAME'
77218                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
77219                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
77220                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
77221                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
77222                                     ,p_ae_header_id            =>  NULL
77223                                        );
77224 
77225         IF (C_LEVEL_ERROR>= g_log_level) THEN
77226                  trace
77227                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
77228                       ,p_level    => C_LEVEL_ERROR
77229                       ,p_module   => l_log_module);
77230         END IF;
77231       END IF;
77232    END IF;
77233    --
77234    --
77235    ------------------------------------------------------------------------------------------------
77236    -- 4219869 Business Flow
77237    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
77238    -- Prior Entry.  Currently, the following code is always generated.
77239    ------------------------------------------------------------------------------------------------
77240    XLA_AE_LINES_PKG.ValidateCurrentLine;
77241 
77242    ------------------------------------------------------------------------------------
77243    -- 4219869 Business Flow
77244    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
77245    ------------------------------------------------------------------------------------
77246    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
77247 
77248    ----------------------------------------------------------------------------------
77249    -- 4219869 Business Flow
77250    -- Update journal entry status -- Need to generate this within IF <condition>
77251    ----------------------------------------------------------------------------------
77252    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
77253          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
77254          ,p_balance_type_code => l_balance_type_code
77255          );
77256 
77257    -------------------------------------------------------------------------------------------
77258    -- 4262811 - Generate the Accrual Reversal lines
77259    -------------------------------------------------------------------------------------------
77260    BEGIN
77261       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
77262                               (g_array_event(p_event_id).array_value_num('header_index'));
77263       IF l_acc_rev_flag IS NULL THEN
77264          l_acc_rev_flag := 'N';
77265       END IF;
77266    EXCEPTION
77267       WHEN OTHERS THEN
77268          l_acc_rev_flag := 'N';
77269    END;
77270    --
77271    IF (l_acc_rev_flag = 'Y') THEN
77272 
77273        -- 4645092  ------------------------------------------------------------------------------
77274        -- To allow MPA report to determine if it should generate report process
77275        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
77276        ------------------------------------------------------------------------------------------
77277 
77278        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
77279        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
77280    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
77281    -- call ADRs
77282    -- Bug 4922099
77283    --
77284    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
77285         (NVL(l_actual_upg_option, 'N') = 'O') OR
77286         (NVL(l_enc_upg_option, 'N') = 'O')
77287       )
77288    THEN
77289    NULL;
77290    --
77291    --
77292    
77293   l_ccid := AcctDerRule_4(
77294            p_application_id           => p_application_id
77295          , p_ae_header_id             => l_ae_header_id 
77296 , p_source_4 => p_source_4
77297          , x_transaction_coa_id       => l_adr_transaction_coa_id
77298          , x_accounting_coa_id        => l_adr_accounting_coa_id
77299          , x_value_type_code          => l_adr_value_type_code
77300          , p_side                     => 'NA'
77301    );
77302 
77303    xla_ae_lines_pkg.set_ccid(
77304     p_code_combination_id          => l_ccid
77305   , p_value_type_code              => l_adr_value_type_code
77306   , p_transaction_coa_id           => l_adr_transaction_coa_id
77307   , p_accounting_coa_id            => l_adr_accounting_coa_id
77308   , p_adr_code                     => 'CST_DEFAULT'
77309   , p_adr_type_code                => 'S'
77310   , p_component_type               => l_component_type
77311   , p_component_code               => l_component_code
77312   , p_component_type_code          => l_component_type_code
77313   , p_component_appl_id            => l_component_appl_id
77314   , p_amb_context_code             => l_amb_context_code
77315   , p_side                         => 'NA'
77316   );
77317 
77318 
77319    --
77320    --
77321    END IF;
77322 
77323        --
77324        -- Update the line information that should be overwritten
77325        --
77326        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
77327                                          p_header_num   => 1);
77328        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
77329 
77330        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
77331 
77332        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
77333           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
77334        END IF;
77335 
77336       --
77337       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
77338       --
77339       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
77340           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
77341       ELSE
77342           ---------------------------------------------------------------------------------------------------
77343           -- 4262811a Switch Sign
77344           ---------------------------------------------------------------------------------------------------
77345           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
77346           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
77347                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77348           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
77349                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77350           -- 5132302
77351           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
77352                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77353 
77354       END IF;
77355 
77356       -- 4955764
77357       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
77358       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
77359 
77360 
77361       XLA_AE_LINES_PKG.ValidateCurrentLine;
77362       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
77363 
77364       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
77365                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
77366                ,p_balance_type_code => l_balance_type_code);
77367 
77368    END IF;
77369 
77370    -----------------------------------------------------------------------------------------
77371    -- 4262811 Multiperiod Accounting
77372    -----------------------------------------------------------------------------------------
77373      -- No MPA option is assigned.
77374 
77375 
77376 END IF;
77377 END IF;
77378 --
77379 
77380 --
77381 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77382    trace
77383       (p_msg      => 'END of AcctLineType_141'
77384       ,p_level    => C_LEVEL_PROCEDURE
77385       ,p_module   => l_log_module);
77386 END IF;
77387 --
77388 EXCEPTION
77389   WHEN xla_exceptions_pkg.application_exception THEN
77390       RAISE;
77391   WHEN OTHERS THEN
77392        xla_exceptions_pkg.raise_message
77393            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_141');
77394 END AcctLineType_141;
77395 --
77396 
77397 ---------------------------------------
77398 --
77399 -- PRIVATE FUNCTION
77400 --         AcctLineType_142
77401 --
77402 ---------------------------------------
77403 PROCEDURE AcctLineType_142 (
77404   p_application_id        IN NUMBER
77405  ,p_event_id              IN NUMBER
77406  ,p_calculate_acctd_flag  IN VARCHAR2
77407  ,p_calculate_g_l_flag    IN VARCHAR2
77408  ,p_actual_flag           IN OUT VARCHAR2
77409  ,p_balance_type_code     OUT VARCHAR2
77410  ,p_gain_or_loss_ref      OUT VARCHAR2
77411  
77412 --Cost Management Default Account
77413  , p_source_4            IN NUMBER
77414 --DISTRIBUTION_IDENTIFIER
77415  , p_source_11            IN NUMBER
77416 --Distribution Type
77417  , p_source_12            IN VARCHAR2
77418  , p_source_12_meaning    IN VARCHAR2
77419 --Entered Currency Code
77420  , p_source_15            IN VARCHAR2
77421 --Entered Amount
77422  , p_source_18            IN NUMBER
77423 --Currency Conversion Date
77424  , p_source_19            IN DATE
77425 --Currency Conversion Rate
77426  , p_source_20            IN NUMBER
77427 --Currency Conversion Type
77428  , p_source_21            IN VARCHAR2
77429 --Accounted Amount
77430  , p_source_22            IN NUMBER
77431 --Accounting Line Type
77432  , p_source_24            IN NUMBER
77433 )
77434 IS
77435 
77436 l_component_type              VARCHAR2(80);
77437 l_component_code              VARCHAR2(30);
77438 l_component_type_code         VARCHAR2(1);
77439 l_component_appl_id           INTEGER;
77440 l_amb_context_code            VARCHAR2(30);
77441 l_entity_code                 VARCHAR2(30);
77442 l_event_class_code            VARCHAR2(30);
77443 l_ae_header_id                NUMBER;
77444 l_event_type_code             VARCHAR2(30);
77445 l_line_definition_code        VARCHAR2(30);
77446 l_line_definition_owner_code  VARCHAR2(1);
77447 --
77448 -- adr variables
77449 l_segment                     VARCHAR2(30);
77450 l_ccid                        NUMBER;
77451 l_adr_transaction_coa_id      NUMBER;
77452 l_adr_accounting_coa_id       NUMBER;
77453 l_adr_flexfield_segment_code  VARCHAR2(30);
77454 l_adr_flex_value_set_id       NUMBER;
77455 l_adr_value_type_code         VARCHAR2(30);
77456 l_adr_value_combination_id    NUMBER;
77457 l_adr_value_segment_code      VARCHAR2(30);
77458 
77459 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
77460 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
77461 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
77462 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
77463 
77464 -- 4262811 Variables ------------------------------------------------------------------------------------------
77465 l_entered_amt_idx             NUMBER;
77466 l_accted_amt_idx              NUMBER;
77467 l_acc_rev_flag                VARCHAR2(1);
77468 l_accrual_line_num            NUMBER;
77469 l_tmp_amt                     NUMBER;
77470 l_acc_rev_natural_side_code   VARCHAR2(1);
77471 
77472 l_num_entries                 NUMBER;
77473 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
77474 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
77475 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
77476 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
77477 l_recog_line_1                NUMBER;
77478 l_recog_line_2                NUMBER;
77479 
77480 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
77481 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
77482 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
77483 
77484 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
77485 
77486 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
77487 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
77488 
77489 ---------------------------------------------------------------------------------------------------------------
77490 
77491 
77492 --
77493 -- bulk performance
77494 --
77495 l_balance_type_code           VARCHAR2(1);
77496 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
77497 l_log_module                  VARCHAR2(240);
77498 
77499 --
77500 -- Upgrade strategy
77501 --
77502 l_actual_upg_option           VARCHAR2(1);
77503 l_enc_upg_option           VARCHAR2(1);
77504 
77505 --
77506 BEGIN
77507 --
77508 IF g_log_enabled THEN
77509       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_142';
77510 END IF;
77511 --
77512 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77513 
77514       trace
77515          (p_msg      => 'BEGIN of AcctLineType_142'
77516          ,p_level    => C_LEVEL_PROCEDURE
77517          ,p_module   => l_log_module);
77518 
77519 END IF;
77520 --
77521 l_component_type             := 'AMB_JLT';
77522 l_component_code             := 'INVENTORY_VALUATION';
77523 l_component_type_code        := 'S';
77524 l_component_appl_id          :=  707;
77525 l_amb_context_code           := 'DEFAULT';
77526 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
77527 l_event_class_code           := 'INTRAORG_TXFR';
77528 l_event_type_code            := 'INTRAORG_TXFR_ALL';
77529 l_line_definition_owner_code := 'S';
77530 l_line_definition_code       := 'INTRAORG_TXFR';
77531 --
77532 l_balance_type_code          := 'A';
77533 l_segment                     := NULL;
77534 l_ccid                        := NULL;
77535 l_adr_transaction_coa_id      := NULL;
77536 l_adr_accounting_coa_id       := NULL;
77537 l_adr_flexfield_segment_code  := NULL;
77538 l_adr_flex_value_set_id       := NULL;
77539 l_adr_value_type_code         := NULL;
77540 l_adr_value_combination_id    := NULL;
77541 l_adr_value_segment_code      := NULL;
77542 
77543 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
77544 l_bflow_class_code           := '';    -- 4219869 Business Flow
77545 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
77546 l_budgetary_control_flag     := 'N';
77547 
77548 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
77549 l_bflow_applied_to_amt       := NULL; -- 5132302
77550 l_entered_amt_idx            := NULL;          -- 4262811
77551 l_accted_amt_idx             := NULL;          -- 4262811
77552 l_acc_rev_flag               := NULL;          -- 4262811
77553 l_accrual_line_num           := NULL;          -- 4262811
77554 l_tmp_amt                    := NULL;          -- 4262811
77555 --
77556  
77557 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
77558     l_balance_type_code <> 'B' THEN
77559 IF NVL(p_source_24,9E125) =  1
77560  THEN 
77561 
77562    --
77563    XLA_AE_LINES_PKG.SetNewLine;
77564 
77565    p_balance_type_code          := l_balance_type_code;
77566    -- set the flag so later we will know whether the gain loss line needs to be created
77567    
77568    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
77569      p_actual_flag :='A';
77570    END IF;
77571 
77572    --
77573    -- bulk performance
77574    --
77575    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
77576                                       p_header_num   => 0); -- 4262811
77577    --
77578    -- set accounting line options
77579    --
77580    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
77581            p_natural_side_code          => 'D'
77582          , p_gain_or_loss_flag          => 'N'
77583          , p_gl_transfer_mode_code      => 'S'
77584          , p_acct_entry_type_code       => 'A'
77585          , p_switch_side_flag           => 'Y'
77586          , p_merge_duplicate_code       => 'N'
77587          );
77588    --
77589    l_acc_rev_natural_side_code := 'C';  -- 4262811
77590    -- 
77591    --
77592    -- set accounting line type info
77593    --
77594    xla_ae_lines_pkg.SetAcctLineType
77595       (p_component_type             => l_component_type
77596       ,p_event_type_code            => l_event_type_code
77597       ,p_line_definition_owner_code => l_line_definition_owner_code
77598       ,p_line_definition_code       => l_line_definition_code
77599       ,p_accounting_line_code       => l_component_code
77600       ,p_accounting_line_type_code  => l_component_type_code
77601       ,p_accounting_line_appl_id    => l_component_appl_id
77602       ,p_amb_context_code           => l_amb_context_code
77603       ,p_entity_code                => l_entity_code
77604       ,p_event_class_code           => l_event_class_code);
77605    --
77606    -- set accounting class
77607    --
77608    xla_ae_lines_pkg.SetAcctClass(
77609            p_accounting_class_code  => 'INVENTORY_VALUATION'
77610          , p_ae_header_id           => l_ae_header_id
77611          );
77612 
77613    --
77614    -- set rounding class
77615    --
77616    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
77617                       'INVENTORY_VALUATION';
77618 
77619    --
77620    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
77621    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
77622    --
77623    -- bulk performance
77624    --
77625    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
77626 
77627    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
77628       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
77629 
77630    -- 4955764
77631    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
77632       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
77633 
77634    -- 4458381 Public Sector Enh
77635    
77636    --
77637    -- set accounting attributes for the line type
77638    --
77639    l_entered_amt_idx := 3;
77640    l_accted_amt_idx  := 8;
77641    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
77642    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
77643    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
77644    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
77645    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
77646    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
77647    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
77648    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
77649    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
77650    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
77651    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
77652    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
77653    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
77654    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
77655    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
77656    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
77657    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
77658 
77659    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
77660    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
77661 
77662    ---------------------------------------------------------------------------------------------------------------
77663    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
77664    ---------------------------------------------------------------------------------------------------------------
77665    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
77666 
77667    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
77668    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
77669 
77670    IF xla_accounting_cache_pkg.GetValueChar
77671          (p_source_code         => 'LEDGER_CATEGORY_CODE'
77672          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
77673    AND l_bflow_method_code = 'PRIOR_ENTRY'
77674 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
77675    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
77676          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
77677        )
77678    THEN
77679          xla_ae_lines_pkg.BflowUpgEntry
77680            (p_business_method_code    => l_bflow_method_code
77681            ,p_business_class_code     => l_bflow_class_code
77682            ,p_balance_type            => l_balance_type_code);
77683    ELSE
77684       NULL;
77685 -- No business flow processing for business flow method of NONE.
77686    END IF;
77687 
77688    --
77689    -- call analytical criteria
77690    --
77691    
77692    --
77693    -- call description
77694    --
77695    -- No description or it is inherited.
77696    --
77697    -- call ADRs
77698    -- Bug 4922099
77699    --
77700    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
77701         (NVL(l_actual_upg_option, 'N') = 'O') OR
77702         (NVL(l_enc_upg_option, 'N') = 'O')
77703       )
77704    THEN
77705    NULL;
77706    --
77707    --
77708    
77709   l_ccid := AcctDerRule_4(
77710            p_application_id           => p_application_id
77711          , p_ae_header_id             => l_ae_header_id 
77712 , p_source_4 => p_source_4
77713          , x_transaction_coa_id       => l_adr_transaction_coa_id
77714          , x_accounting_coa_id        => l_adr_accounting_coa_id
77715          , x_value_type_code          => l_adr_value_type_code
77716          , p_side                     => 'NA'
77717    );
77718 
77719    xla_ae_lines_pkg.set_ccid(
77720     p_code_combination_id          => l_ccid
77721   , p_value_type_code              => l_adr_value_type_code
77722   , p_transaction_coa_id           => l_adr_transaction_coa_id
77723   , p_accounting_coa_id            => l_adr_accounting_coa_id
77724   , p_adr_code                     => 'CST_DEFAULT'
77725   , p_adr_type_code                => 'S'
77726   , p_component_type               => l_component_type
77727   , p_component_code               => l_component_code
77728   , p_component_type_code          => l_component_type_code
77729   , p_component_appl_id            => l_component_appl_id
77730   , p_amb_context_code             => l_amb_context_code
77731   , p_side                         => 'NA'
77732   );
77733 
77734 
77735    --
77736    --
77737    END IF;
77738    --
77739    -- Bug 4922099
77740    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
77741           (NVL(l_enc_upg_option, 'N') = 'O')
77742         ) AND
77743         (l_bflow_method_code = 'PRIOR_ENTRY')
77744       )
77745    THEN
77746       IF
77747       --
77748       1 = 2
77749       --
77750       THEN
77751       xla_accounting_err_pkg.build_message
77752                                     (p_appli_s_name            => 'XLA'
77753                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
77754                                     ,p_token_1                 => 'LINE_NUMBER'
77755                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
77756                                     ,p_token_2                 => 'LINE_TYPE_NAME'
77757                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
77758                                                                              l_component_type
77759                                                                             ,l_component_code
77760                                                                             ,l_component_type_code
77761                                                                             ,l_component_appl_id
77762                                                                             ,l_amb_context_code
77763                                                                             ,l_entity_code
77764                                                                             ,l_event_class_code
77765                                                                            )
77766                                     ,p_token_3                 => 'OWNER'
77767                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
77768                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
77769                                                                           ,p_lookup_code    => l_component_type_code
77770                                                                          )
77771                                     ,p_token_4                 => 'PRODUCT_NAME'
77772                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
77773                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
77774                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
77775                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
77776                                     ,p_ae_header_id            =>  NULL
77777                                        );
77778 
77779         IF (C_LEVEL_ERROR>= g_log_level) THEN
77780                  trace
77781                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
77782                       ,p_level    => C_LEVEL_ERROR
77783                       ,p_module   => l_log_module);
77784         END IF;
77785       END IF;
77786    END IF;
77787    --
77788    --
77789    ------------------------------------------------------------------------------------------------
77790    -- 4219869 Business Flow
77791    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
77792    -- Prior Entry.  Currently, the following code is always generated.
77793    ------------------------------------------------------------------------------------------------
77794    XLA_AE_LINES_PKG.ValidateCurrentLine;
77795 
77796    ------------------------------------------------------------------------------------
77797    -- 4219869 Business Flow
77798    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
77799    ------------------------------------------------------------------------------------
77800    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
77801 
77802    ----------------------------------------------------------------------------------
77803    -- 4219869 Business Flow
77804    -- Update journal entry status -- Need to generate this within IF <condition>
77805    ----------------------------------------------------------------------------------
77806    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
77807          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
77808          ,p_balance_type_code => l_balance_type_code
77809          );
77810 
77811    -------------------------------------------------------------------------------------------
77812    -- 4262811 - Generate the Accrual Reversal lines
77813    -------------------------------------------------------------------------------------------
77814    BEGIN
77815       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
77816                               (g_array_event(p_event_id).array_value_num('header_index'));
77817       IF l_acc_rev_flag IS NULL THEN
77818          l_acc_rev_flag := 'N';
77819       END IF;
77820    EXCEPTION
77821       WHEN OTHERS THEN
77822          l_acc_rev_flag := 'N';
77823    END;
77824    --
77825    IF (l_acc_rev_flag = 'Y') THEN
77826 
77827        -- 4645092  ------------------------------------------------------------------------------
77828        -- To allow MPA report to determine if it should generate report process
77829        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
77830        ------------------------------------------------------------------------------------------
77831 
77832        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
77833        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
77834    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
77835    -- call ADRs
77836    -- Bug 4922099
77837    --
77838    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
77839         (NVL(l_actual_upg_option, 'N') = 'O') OR
77840         (NVL(l_enc_upg_option, 'N') = 'O')
77841       )
77842    THEN
77843    NULL;
77844    --
77845    --
77846    
77847   l_ccid := AcctDerRule_4(
77848            p_application_id           => p_application_id
77849          , p_ae_header_id             => l_ae_header_id 
77850 , p_source_4 => p_source_4
77851          , x_transaction_coa_id       => l_adr_transaction_coa_id
77852          , x_accounting_coa_id        => l_adr_accounting_coa_id
77853          , x_value_type_code          => l_adr_value_type_code
77854          , p_side                     => 'NA'
77855    );
77856 
77857    xla_ae_lines_pkg.set_ccid(
77858     p_code_combination_id          => l_ccid
77859   , p_value_type_code              => l_adr_value_type_code
77860   , p_transaction_coa_id           => l_adr_transaction_coa_id
77861   , p_accounting_coa_id            => l_adr_accounting_coa_id
77862   , p_adr_code                     => 'CST_DEFAULT'
77863   , p_adr_type_code                => 'S'
77864   , p_component_type               => l_component_type
77865   , p_component_code               => l_component_code
77866   , p_component_type_code          => l_component_type_code
77867   , p_component_appl_id            => l_component_appl_id
77868   , p_amb_context_code             => l_amb_context_code
77869   , p_side                         => 'NA'
77870   );
77871 
77872 
77873    --
77874    --
77875    END IF;
77876 
77877        --
77878        -- Update the line information that should be overwritten
77879        --
77880        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
77881                                          p_header_num   => 1);
77882        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
77883 
77884        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
77885 
77886        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
77887           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
77888        END IF;
77889 
77890       --
77891       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
77892       --
77893       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
77894           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
77895       ELSE
77896           ---------------------------------------------------------------------------------------------------
77897           -- 4262811a Switch Sign
77898           ---------------------------------------------------------------------------------------------------
77899           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
77900           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
77901                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77902           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
77903                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77904           -- 5132302
77905           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
77906                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77907 
77908       END IF;
77909 
77910       -- 4955764
77911       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
77912       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
77913 
77914 
77915       XLA_AE_LINES_PKG.ValidateCurrentLine;
77916       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
77917 
77918       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
77919                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
77920                ,p_balance_type_code => l_balance_type_code);
77921 
77922    END IF;
77923 
77924    -----------------------------------------------------------------------------------------
77925    -- 4262811 Multiperiod Accounting
77926    -----------------------------------------------------------------------------------------
77927      -- No MPA option is assigned.
77928 
77929 
77930 END IF;
77931 END IF;
77932 --
77933 
77934 --
77935 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77936    trace
77937       (p_msg      => 'END of AcctLineType_142'
77938       ,p_level    => C_LEVEL_PROCEDURE
77939       ,p_module   => l_log_module);
77940 END IF;
77941 --
77942 EXCEPTION
77943   WHEN xla_exceptions_pkg.application_exception THEN
77944       RAISE;
77945   WHEN OTHERS THEN
77946        xla_exceptions_pkg.raise_message
77947            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_142');
77948 END AcctLineType_142;
77949 --
77950 
77951 ---------------------------------------
77952 --
77953 -- PRIVATE FUNCTION
77954 --         AcctLineType_143
77955 --
77956 ---------------------------------------
77957 PROCEDURE AcctLineType_143 (
77958   p_application_id        IN NUMBER
77959  ,p_event_id              IN NUMBER
77960  ,p_calculate_acctd_flag  IN VARCHAR2
77961  ,p_calculate_g_l_flag    IN VARCHAR2
77962  ,p_actual_flag           IN OUT VARCHAR2
77963  ,p_balance_type_code     OUT VARCHAR2
77964  ,p_gain_or_loss_ref      OUT VARCHAR2
77965  
77966 --Cost Management Default Account
77967  , p_source_4            IN NUMBER
77968 --DISTRIBUTION_IDENTIFIER
77969  , p_source_11            IN NUMBER
77970 --Distribution Type
77971  , p_source_12            IN VARCHAR2
77972  , p_source_12_meaning    IN VARCHAR2
77973 --Entered Currency Code
77974  , p_source_15            IN VARCHAR2
77975 --Entered Amount
77976  , p_source_18            IN NUMBER
77977 --Currency Conversion Date
77978  , p_source_19            IN DATE
77979 --Currency Conversion Rate
77980  , p_source_20            IN NUMBER
77981 --Currency Conversion Type
77982  , p_source_21            IN VARCHAR2
77983 --Accounted Amount
77984  , p_source_22            IN NUMBER
77985 --Accounting Line Type
77986  , p_source_24            IN NUMBER
77987 )
77988 IS
77989 
77990 l_component_type              VARCHAR2(80);
77991 l_component_code              VARCHAR2(30);
77992 l_component_type_code         VARCHAR2(1);
77993 l_component_appl_id           INTEGER;
77994 l_amb_context_code            VARCHAR2(30);
77995 l_entity_code                 VARCHAR2(30);
77996 l_event_class_code            VARCHAR2(30);
77997 l_ae_header_id                NUMBER;
77998 l_event_type_code             VARCHAR2(30);
77999 l_line_definition_code        VARCHAR2(30);
78000 l_line_definition_owner_code  VARCHAR2(1);
78001 --
78002 -- adr variables
78003 l_segment                     VARCHAR2(30);
78004 l_ccid                        NUMBER;
78005 l_adr_transaction_coa_id      NUMBER;
78006 l_adr_accounting_coa_id       NUMBER;
78007 l_adr_flexfield_segment_code  VARCHAR2(30);
78008 l_adr_flex_value_set_id       NUMBER;
78009 l_adr_value_type_code         VARCHAR2(30);
78010 l_adr_value_combination_id    NUMBER;
78011 l_adr_value_segment_code      VARCHAR2(30);
78012 
78013 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
78014 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
78015 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
78016 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
78017 
78018 -- 4262811 Variables ------------------------------------------------------------------------------------------
78019 l_entered_amt_idx             NUMBER;
78020 l_accted_amt_idx              NUMBER;
78021 l_acc_rev_flag                VARCHAR2(1);
78022 l_accrual_line_num            NUMBER;
78023 l_tmp_amt                     NUMBER;
78024 l_acc_rev_natural_side_code   VARCHAR2(1);
78025 
78026 l_num_entries                 NUMBER;
78027 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
78028 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
78029 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
78030 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
78031 l_recog_line_1                NUMBER;
78032 l_recog_line_2                NUMBER;
78033 
78034 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
78035 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
78036 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
78037 
78038 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
78039 
78040 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
78041 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
78042 
78043 ---------------------------------------------------------------------------------------------------------------
78044 
78045 
78046 --
78047 -- bulk performance
78048 --
78049 l_balance_type_code           VARCHAR2(1);
78050 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
78051 l_log_module                  VARCHAR2(240);
78052 
78053 --
78054 -- Upgrade strategy
78055 --
78056 l_actual_upg_option           VARCHAR2(1);
78057 l_enc_upg_option           VARCHAR2(1);
78058 
78059 --
78060 BEGIN
78061 --
78062 IF g_log_enabled THEN
78063       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_143';
78064 END IF;
78065 --
78066 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78067 
78068       trace
78069          (p_msg      => 'BEGIN of AcctLineType_143'
78070          ,p_level    => C_LEVEL_PROCEDURE
78071          ,p_module   => l_log_module);
78072 
78073 END IF;
78074 --
78075 l_component_type             := 'AMB_JLT';
78076 l_component_code             := 'INVENTORY_VALUATION';
78077 l_component_type_code        := 'S';
78078 l_component_appl_id          :=  707;
78079 l_amb_context_code           := 'DEFAULT';
78080 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
78081 l_event_class_code           := 'MISC_ISSUE_RCPT';
78082 l_event_type_code            := 'MISC_ISSUE_RCPT_ALL';
78083 l_line_definition_owner_code := 'S';
78084 l_line_definition_code       := 'MISC_ISSUE_RCPT';
78085 --
78086 l_balance_type_code          := 'A';
78087 l_segment                     := NULL;
78088 l_ccid                        := NULL;
78089 l_adr_transaction_coa_id      := NULL;
78090 l_adr_accounting_coa_id       := NULL;
78091 l_adr_flexfield_segment_code  := NULL;
78092 l_adr_flex_value_set_id       := NULL;
78093 l_adr_value_type_code         := NULL;
78094 l_adr_value_combination_id    := NULL;
78095 l_adr_value_segment_code      := NULL;
78096 
78097 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
78098 l_bflow_class_code           := '';    -- 4219869 Business Flow
78099 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
78100 l_budgetary_control_flag     := 'N';
78101 
78102 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
78103 l_bflow_applied_to_amt       := NULL; -- 5132302
78104 l_entered_amt_idx            := NULL;          -- 4262811
78105 l_accted_amt_idx             := NULL;          -- 4262811
78106 l_acc_rev_flag               := NULL;          -- 4262811
78107 l_accrual_line_num           := NULL;          -- 4262811
78108 l_tmp_amt                    := NULL;          -- 4262811
78109 --
78110  
78111 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
78112     l_balance_type_code <> 'B' THEN
78113 IF NVL(p_source_24,9E125) =  1
78114  THEN 
78115 
78116    --
78117    XLA_AE_LINES_PKG.SetNewLine;
78118 
78119    p_balance_type_code          := l_balance_type_code;
78120    -- set the flag so later we will know whether the gain loss line needs to be created
78121    
78122    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
78123      p_actual_flag :='A';
78124    END IF;
78125 
78126    --
78127    -- bulk performance
78128    --
78129    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
78130                                       p_header_num   => 0); -- 4262811
78131    --
78132    -- set accounting line options
78133    --
78134    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
78135            p_natural_side_code          => 'D'
78136          , p_gain_or_loss_flag          => 'N'
78137          , p_gl_transfer_mode_code      => 'S'
78138          , p_acct_entry_type_code       => 'A'
78139          , p_switch_side_flag           => 'Y'
78140          , p_merge_duplicate_code       => 'N'
78141          );
78142    --
78143    l_acc_rev_natural_side_code := 'C';  -- 4262811
78144    -- 
78145    --
78146    -- set accounting line type info
78147    --
78148    xla_ae_lines_pkg.SetAcctLineType
78149       (p_component_type             => l_component_type
78150       ,p_event_type_code            => l_event_type_code
78151       ,p_line_definition_owner_code => l_line_definition_owner_code
78152       ,p_line_definition_code       => l_line_definition_code
78153       ,p_accounting_line_code       => l_component_code
78154       ,p_accounting_line_type_code  => l_component_type_code
78155       ,p_accounting_line_appl_id    => l_component_appl_id
78156       ,p_amb_context_code           => l_amb_context_code
78157       ,p_entity_code                => l_entity_code
78158       ,p_event_class_code           => l_event_class_code);
78159    --
78160    -- set accounting class
78161    --
78162    xla_ae_lines_pkg.SetAcctClass(
78163            p_accounting_class_code  => 'INVENTORY_VALUATION'
78164          , p_ae_header_id           => l_ae_header_id
78165          );
78166 
78167    --
78168    -- set rounding class
78169    --
78170    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
78171                       'INVENTORY_VALUATION';
78172 
78173    --
78174    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
78175    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
78176    --
78177    -- bulk performance
78178    --
78179    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
78180 
78181    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
78182       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
78183 
78184    -- 4955764
78185    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
78186       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
78187 
78188    -- 4458381 Public Sector Enh
78189    
78190    --
78191    -- set accounting attributes for the line type
78192    --
78193    l_entered_amt_idx := 3;
78194    l_accted_amt_idx  := 8;
78195    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
78196    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
78197    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
78198    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
78199    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
78200    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
78201    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
78202    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
78203    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
78204    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
78205    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
78206    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
78207    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
78208    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
78209    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
78210    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
78211    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
78212 
78213    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
78214    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
78215 
78216    ---------------------------------------------------------------------------------------------------------------
78217    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
78218    ---------------------------------------------------------------------------------------------------------------
78219    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
78220 
78221    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
78222    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
78223 
78224    IF xla_accounting_cache_pkg.GetValueChar
78225          (p_source_code         => 'LEDGER_CATEGORY_CODE'
78226          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
78227    AND l_bflow_method_code = 'PRIOR_ENTRY'
78228 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
78229    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
78230          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
78231        )
78232    THEN
78233          xla_ae_lines_pkg.BflowUpgEntry
78234            (p_business_method_code    => l_bflow_method_code
78235            ,p_business_class_code     => l_bflow_class_code
78236            ,p_balance_type            => l_balance_type_code);
78237    ELSE
78238       NULL;
78239 -- No business flow processing for business flow method of NONE.
78240    END IF;
78241 
78242    --
78243    -- call analytical criteria
78244    --
78245    
78246    --
78247    -- call description
78248    --
78249    -- No description or it is inherited.
78250    --
78251    -- call ADRs
78252    -- Bug 4922099
78253    --
78254    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
78255         (NVL(l_actual_upg_option, 'N') = 'O') OR
78256         (NVL(l_enc_upg_option, 'N') = 'O')
78257       )
78258    THEN
78259    NULL;
78260    --
78261    --
78262    
78263   l_ccid := AcctDerRule_4(
78264            p_application_id           => p_application_id
78265          , p_ae_header_id             => l_ae_header_id 
78266 , p_source_4 => p_source_4
78267          , x_transaction_coa_id       => l_adr_transaction_coa_id
78268          , x_accounting_coa_id        => l_adr_accounting_coa_id
78269          , x_value_type_code          => l_adr_value_type_code
78270          , p_side                     => 'NA'
78271    );
78272 
78273    xla_ae_lines_pkg.set_ccid(
78274     p_code_combination_id          => l_ccid
78275   , p_value_type_code              => l_adr_value_type_code
78276   , p_transaction_coa_id           => l_adr_transaction_coa_id
78277   , p_accounting_coa_id            => l_adr_accounting_coa_id
78278   , p_adr_code                     => 'CST_DEFAULT'
78279   , p_adr_type_code                => 'S'
78280   , p_component_type               => l_component_type
78281   , p_component_code               => l_component_code
78282   , p_component_type_code          => l_component_type_code
78283   , p_component_appl_id            => l_component_appl_id
78284   , p_amb_context_code             => l_amb_context_code
78285   , p_side                         => 'NA'
78286   );
78287 
78288 
78289    --
78290    --
78291    END IF;
78292    --
78293    -- Bug 4922099
78294    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
78295           (NVL(l_enc_upg_option, 'N') = 'O')
78296         ) AND
78297         (l_bflow_method_code = 'PRIOR_ENTRY')
78298       )
78299    THEN
78300       IF
78301       --
78302       1 = 2
78303       --
78304       THEN
78305       xla_accounting_err_pkg.build_message
78306                                     (p_appli_s_name            => 'XLA'
78307                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
78308                                     ,p_token_1                 => 'LINE_NUMBER'
78309                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
78310                                     ,p_token_2                 => 'LINE_TYPE_NAME'
78311                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
78312                                                                              l_component_type
78313                                                                             ,l_component_code
78314                                                                             ,l_component_type_code
78315                                                                             ,l_component_appl_id
78316                                                                             ,l_amb_context_code
78317                                                                             ,l_entity_code
78318                                                                             ,l_event_class_code
78319                                                                            )
78320                                     ,p_token_3                 => 'OWNER'
78321                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
78322                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
78323                                                                           ,p_lookup_code    => l_component_type_code
78324                                                                          )
78325                                     ,p_token_4                 => 'PRODUCT_NAME'
78326                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
78327                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
78328                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
78329                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
78330                                     ,p_ae_header_id            =>  NULL
78331                                        );
78332 
78333         IF (C_LEVEL_ERROR>= g_log_level) THEN
78334                  trace
78335                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
78336                       ,p_level    => C_LEVEL_ERROR
78337                       ,p_module   => l_log_module);
78338         END IF;
78339       END IF;
78340    END IF;
78341    --
78342    --
78343    ------------------------------------------------------------------------------------------------
78344    -- 4219869 Business Flow
78345    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
78346    -- Prior Entry.  Currently, the following code is always generated.
78347    ------------------------------------------------------------------------------------------------
78348    XLA_AE_LINES_PKG.ValidateCurrentLine;
78349 
78350    ------------------------------------------------------------------------------------
78351    -- 4219869 Business Flow
78352    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
78353    ------------------------------------------------------------------------------------
78354    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
78355 
78356    ----------------------------------------------------------------------------------
78357    -- 4219869 Business Flow
78358    -- Update journal entry status -- Need to generate this within IF <condition>
78359    ----------------------------------------------------------------------------------
78360    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
78361          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
78362          ,p_balance_type_code => l_balance_type_code
78363          );
78364 
78365    -------------------------------------------------------------------------------------------
78366    -- 4262811 - Generate the Accrual Reversal lines
78367    -------------------------------------------------------------------------------------------
78368    BEGIN
78369       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
78370                               (g_array_event(p_event_id).array_value_num('header_index'));
78371       IF l_acc_rev_flag IS NULL THEN
78372          l_acc_rev_flag := 'N';
78373       END IF;
78374    EXCEPTION
78375       WHEN OTHERS THEN
78376          l_acc_rev_flag := 'N';
78377    END;
78378    --
78379    IF (l_acc_rev_flag = 'Y') THEN
78380 
78381        -- 4645092  ------------------------------------------------------------------------------
78382        -- To allow MPA report to determine if it should generate report process
78383        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
78384        ------------------------------------------------------------------------------------------
78385 
78386        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
78387        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
78388    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
78389    -- call ADRs
78390    -- Bug 4922099
78391    --
78392    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
78393         (NVL(l_actual_upg_option, 'N') = 'O') OR
78394         (NVL(l_enc_upg_option, 'N') = 'O')
78395       )
78396    THEN
78397    NULL;
78398    --
78399    --
78400    
78401   l_ccid := AcctDerRule_4(
78402            p_application_id           => p_application_id
78403          , p_ae_header_id             => l_ae_header_id 
78404 , p_source_4 => p_source_4
78405          , x_transaction_coa_id       => l_adr_transaction_coa_id
78406          , x_accounting_coa_id        => l_adr_accounting_coa_id
78407          , x_value_type_code          => l_adr_value_type_code
78408          , p_side                     => 'NA'
78409    );
78410 
78411    xla_ae_lines_pkg.set_ccid(
78412     p_code_combination_id          => l_ccid
78413   , p_value_type_code              => l_adr_value_type_code
78414   , p_transaction_coa_id           => l_adr_transaction_coa_id
78415   , p_accounting_coa_id            => l_adr_accounting_coa_id
78416   , p_adr_code                     => 'CST_DEFAULT'
78417   , p_adr_type_code                => 'S'
78418   , p_component_type               => l_component_type
78419   , p_component_code               => l_component_code
78420   , p_component_type_code          => l_component_type_code
78421   , p_component_appl_id            => l_component_appl_id
78422   , p_amb_context_code             => l_amb_context_code
78423   , p_side                         => 'NA'
78424   );
78425 
78426 
78427    --
78428    --
78429    END IF;
78430 
78431        --
78432        -- Update the line information that should be overwritten
78433        --
78434        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
78435                                          p_header_num   => 1);
78436        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
78437 
78438        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
78439 
78440        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
78441           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
78442        END IF;
78443 
78444       --
78445       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
78446       --
78447       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
78448           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
78449       ELSE
78450           ---------------------------------------------------------------------------------------------------
78451           -- 4262811a Switch Sign
78452           ---------------------------------------------------------------------------------------------------
78453           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
78454           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
78455                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78456           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
78457                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78458           -- 5132302
78459           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
78460                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78461 
78462       END IF;
78463 
78464       -- 4955764
78465       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
78466       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
78467 
78468 
78469       XLA_AE_LINES_PKG.ValidateCurrentLine;
78470       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
78471 
78472       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
78473                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
78474                ,p_balance_type_code => l_balance_type_code);
78475 
78476    END IF;
78477 
78478    -----------------------------------------------------------------------------------------
78479    -- 4262811 Multiperiod Accounting
78480    -----------------------------------------------------------------------------------------
78481      -- No MPA option is assigned.
78482 
78483 
78484 END IF;
78485 END IF;
78486 --
78487 
78488 --
78489 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78490    trace
78491       (p_msg      => 'END of AcctLineType_143'
78492       ,p_level    => C_LEVEL_PROCEDURE
78493       ,p_module   => l_log_module);
78494 END IF;
78495 --
78496 EXCEPTION
78497   WHEN xla_exceptions_pkg.application_exception THEN
78498       RAISE;
78499   WHEN OTHERS THEN
78500        xla_exceptions_pkg.raise_message
78501            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_143');
78502 END AcctLineType_143;
78503 --
78504 
78505 ---------------------------------------
78506 --
78507 -- PRIVATE FUNCTION
78508 --         AcctLineType_144
78509 --
78510 ---------------------------------------
78511 PROCEDURE AcctLineType_144 (
78512   p_application_id        IN NUMBER
78513  ,p_event_id              IN NUMBER
78514  ,p_calculate_acctd_flag  IN VARCHAR2
78515  ,p_calculate_g_l_flag    IN VARCHAR2
78516  ,p_actual_flag           IN OUT VARCHAR2
78517  ,p_balance_type_code     OUT VARCHAR2
78518  ,p_gain_or_loss_ref      OUT VARCHAR2
78519  
78520 --Cost Management Default Account
78521  , p_source_4            IN NUMBER
78522 --DISTRIBUTION_IDENTIFIER
78523  , p_source_11            IN NUMBER
78524 --Distribution Type
78525  , p_source_12            IN VARCHAR2
78526  , p_source_12_meaning    IN VARCHAR2
78527 --Entered Currency Code
78528  , p_source_15            IN VARCHAR2
78529 --Entered Amount
78530  , p_source_18            IN NUMBER
78531 --Currency Conversion Date
78532  , p_source_19            IN DATE
78533 --Currency Conversion Rate
78534  , p_source_20            IN NUMBER
78535 --Currency Conversion Type
78536  , p_source_21            IN VARCHAR2
78537 --Accounted Amount
78538  , p_source_22            IN NUMBER
78539 --Accounting Line Type
78540  , p_source_24            IN NUMBER
78541 )
78542 IS
78543 
78544 l_component_type              VARCHAR2(80);
78545 l_component_code              VARCHAR2(30);
78546 l_component_type_code         VARCHAR2(1);
78547 l_component_appl_id           INTEGER;
78548 l_amb_context_code            VARCHAR2(30);
78549 l_entity_code                 VARCHAR2(30);
78550 l_event_class_code            VARCHAR2(30);
78551 l_ae_header_id                NUMBER;
78552 l_event_type_code             VARCHAR2(30);
78553 l_line_definition_code        VARCHAR2(30);
78554 l_line_definition_owner_code  VARCHAR2(1);
78555 --
78556 -- adr variables
78557 l_segment                     VARCHAR2(30);
78558 l_ccid                        NUMBER;
78559 l_adr_transaction_coa_id      NUMBER;
78560 l_adr_accounting_coa_id       NUMBER;
78561 l_adr_flexfield_segment_code  VARCHAR2(30);
78562 l_adr_flex_value_set_id       NUMBER;
78563 l_adr_value_type_code         VARCHAR2(30);
78564 l_adr_value_combination_id    NUMBER;
78565 l_adr_value_segment_code      VARCHAR2(30);
78566 
78567 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
78568 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
78569 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
78570 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
78571 
78572 -- 4262811 Variables ------------------------------------------------------------------------------------------
78573 l_entered_amt_idx             NUMBER;
78574 l_accted_amt_idx              NUMBER;
78575 l_acc_rev_flag                VARCHAR2(1);
78576 l_accrual_line_num            NUMBER;
78577 l_tmp_amt                     NUMBER;
78578 l_acc_rev_natural_side_code   VARCHAR2(1);
78579 
78580 l_num_entries                 NUMBER;
78581 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
78582 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
78583 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
78584 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
78585 l_recog_line_1                NUMBER;
78586 l_recog_line_2                NUMBER;
78587 
78588 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
78589 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
78590 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
78591 
78592 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
78593 
78594 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
78595 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
78596 
78597 ---------------------------------------------------------------------------------------------------------------
78598 
78599 
78600 --
78601 -- bulk performance
78602 --
78603 l_balance_type_code           VARCHAR2(1);
78604 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
78605 l_log_module                  VARCHAR2(240);
78606 
78607 --
78608 -- Upgrade strategy
78609 --
78610 l_actual_upg_option           VARCHAR2(1);
78611 l_enc_upg_option           VARCHAR2(1);
78612 
78613 --
78614 BEGIN
78615 --
78616 IF g_log_enabled THEN
78617       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_144';
78618 END IF;
78619 --
78620 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78621 
78622       trace
78623          (p_msg      => 'BEGIN of AcctLineType_144'
78624          ,p_level    => C_LEVEL_PROCEDURE
78625          ,p_module   => l_log_module);
78626 
78627 END IF;
78628 --
78629 l_component_type             := 'AMB_JLT';
78630 l_component_code             := 'INVENTORY_VALUATION';
78631 l_component_type_code        := 'S';
78632 l_component_appl_id          :=  707;
78633 l_amb_context_code           := 'DEFAULT';
78634 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
78635 l_event_class_code           := 'USER_DEFINE';
78636 l_event_type_code            := 'UDIR_INTERORG_SHIP_NO_TP';
78637 l_line_definition_owner_code := 'S';
78638 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_NO_TP';
78639 --
78640 l_balance_type_code          := 'A';
78641 l_segment                     := NULL;
78642 l_ccid                        := NULL;
78643 l_adr_transaction_coa_id      := NULL;
78644 l_adr_accounting_coa_id       := NULL;
78645 l_adr_flexfield_segment_code  := NULL;
78646 l_adr_flex_value_set_id       := NULL;
78647 l_adr_value_type_code         := NULL;
78648 l_adr_value_combination_id    := NULL;
78649 l_adr_value_segment_code      := NULL;
78650 
78651 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
78652 l_bflow_class_code           := '';    -- 4219869 Business Flow
78653 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
78654 l_budgetary_control_flag     := 'N';
78655 
78656 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
78657 l_bflow_applied_to_amt       := NULL; -- 5132302
78658 l_entered_amt_idx            := NULL;          -- 4262811
78659 l_accted_amt_idx             := NULL;          -- 4262811
78660 l_acc_rev_flag               := NULL;          -- 4262811
78661 l_accrual_line_num           := NULL;          -- 4262811
78662 l_tmp_amt                    := NULL;          -- 4262811
78663 --
78664  
78665 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
78666     l_balance_type_code <> 'B' THEN
78667 IF NVL(p_source_24,9E125) =  1
78668  THEN 
78669 
78670    --
78671    XLA_AE_LINES_PKG.SetNewLine;
78672 
78673    p_balance_type_code          := l_balance_type_code;
78674    -- set the flag so later we will know whether the gain loss line needs to be created
78675    
78676    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
78677      p_actual_flag :='A';
78678    END IF;
78679 
78680    --
78681    -- bulk performance
78682    --
78683    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
78684                                       p_header_num   => 0); -- 4262811
78685    --
78686    -- set accounting line options
78687    --
78688    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
78689            p_natural_side_code          => 'D'
78690          , p_gain_or_loss_flag          => 'N'
78691          , p_gl_transfer_mode_code      => 'S'
78692          , p_acct_entry_type_code       => 'A'
78693          , p_switch_side_flag           => 'Y'
78694          , p_merge_duplicate_code       => 'N'
78695          );
78696    --
78697    l_acc_rev_natural_side_code := 'C';  -- 4262811
78698    -- 
78699    --
78700    -- set accounting line type info
78701    --
78702    xla_ae_lines_pkg.SetAcctLineType
78703       (p_component_type             => l_component_type
78704       ,p_event_type_code            => l_event_type_code
78705       ,p_line_definition_owner_code => l_line_definition_owner_code
78706       ,p_line_definition_code       => l_line_definition_code
78707       ,p_accounting_line_code       => l_component_code
78708       ,p_accounting_line_type_code  => l_component_type_code
78709       ,p_accounting_line_appl_id    => l_component_appl_id
78710       ,p_amb_context_code           => l_amb_context_code
78711       ,p_entity_code                => l_entity_code
78712       ,p_event_class_code           => l_event_class_code);
78713    --
78714    -- set accounting class
78715    --
78716    xla_ae_lines_pkg.SetAcctClass(
78717            p_accounting_class_code  => 'INVENTORY_VALUATION'
78718          , p_ae_header_id           => l_ae_header_id
78719          );
78720 
78721    --
78722    -- set rounding class
78723    --
78724    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
78725                       'INVENTORY_VALUATION';
78726 
78727    --
78728    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
78729    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
78730    --
78731    -- bulk performance
78732    --
78733    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
78734 
78735    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
78736       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
78737 
78738    -- 4955764
78739    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
78740       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
78741 
78742    -- 4458381 Public Sector Enh
78743    
78744    --
78745    -- set accounting attributes for the line type
78746    --
78747    l_entered_amt_idx := 3;
78748    l_accted_amt_idx  := 8;
78749    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
78750    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
78751    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
78752    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
78753    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
78754    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
78755    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
78756    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
78757    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
78758    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
78759    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
78760    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
78761    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
78762    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
78763    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
78764    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
78765    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
78766 
78767    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
78768    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
78769 
78770    ---------------------------------------------------------------------------------------------------------------
78771    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
78772    ---------------------------------------------------------------------------------------------------------------
78773    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
78774 
78775    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
78776    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
78777 
78778    IF xla_accounting_cache_pkg.GetValueChar
78779          (p_source_code         => 'LEDGER_CATEGORY_CODE'
78780          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
78781    AND l_bflow_method_code = 'PRIOR_ENTRY'
78782 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
78783    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
78784          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
78785        )
78786    THEN
78787          xla_ae_lines_pkg.BflowUpgEntry
78788            (p_business_method_code    => l_bflow_method_code
78789            ,p_business_class_code     => l_bflow_class_code
78790            ,p_balance_type            => l_balance_type_code);
78791    ELSE
78792       NULL;
78793 -- No business flow processing for business flow method of NONE.
78794    END IF;
78795 
78796    --
78797    -- call analytical criteria
78798    --
78799    
78800    --
78801    -- call description
78802    --
78803    -- No description or it is inherited.
78804    --
78805    -- call ADRs
78806    -- Bug 4922099
78807    --
78808    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
78809         (NVL(l_actual_upg_option, 'N') = 'O') OR
78810         (NVL(l_enc_upg_option, 'N') = 'O')
78811       )
78812    THEN
78813    NULL;
78814    --
78815    --
78816    
78817   l_ccid := AcctDerRule_4(
78818            p_application_id           => p_application_id
78819          , p_ae_header_id             => l_ae_header_id 
78820 , p_source_4 => p_source_4
78821          , x_transaction_coa_id       => l_adr_transaction_coa_id
78822          , x_accounting_coa_id        => l_adr_accounting_coa_id
78823          , x_value_type_code          => l_adr_value_type_code
78824          , p_side                     => 'NA'
78825    );
78826 
78827    xla_ae_lines_pkg.set_ccid(
78828     p_code_combination_id          => l_ccid
78829   , p_value_type_code              => l_adr_value_type_code
78830   , p_transaction_coa_id           => l_adr_transaction_coa_id
78831   , p_accounting_coa_id            => l_adr_accounting_coa_id
78832   , p_adr_code                     => 'CST_DEFAULT'
78833   , p_adr_type_code                => 'S'
78834   , p_component_type               => l_component_type
78835   , p_component_code               => l_component_code
78836   , p_component_type_code          => l_component_type_code
78837   , p_component_appl_id            => l_component_appl_id
78838   , p_amb_context_code             => l_amb_context_code
78839   , p_side                         => 'NA'
78840   );
78841 
78842 
78843    --
78844    --
78845    END IF;
78846    --
78847    -- Bug 4922099
78848    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
78849           (NVL(l_enc_upg_option, 'N') = 'O')
78850         ) AND
78851         (l_bflow_method_code = 'PRIOR_ENTRY')
78852       )
78853    THEN
78854       IF
78855       --
78856       1 = 2
78857       --
78858       THEN
78859       xla_accounting_err_pkg.build_message
78860                                     (p_appli_s_name            => 'XLA'
78861                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
78862                                     ,p_token_1                 => 'LINE_NUMBER'
78863                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
78864                                     ,p_token_2                 => 'LINE_TYPE_NAME'
78865                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
78866                                                                              l_component_type
78867                                                                             ,l_component_code
78868                                                                             ,l_component_type_code
78869                                                                             ,l_component_appl_id
78870                                                                             ,l_amb_context_code
78871                                                                             ,l_entity_code
78872                                                                             ,l_event_class_code
78873                                                                            )
78874                                     ,p_token_3                 => 'OWNER'
78875                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
78876                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
78877                                                                           ,p_lookup_code    => l_component_type_code
78878                                                                          )
78879                                     ,p_token_4                 => 'PRODUCT_NAME'
78880                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
78881                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
78882                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
78883                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
78884                                     ,p_ae_header_id            =>  NULL
78885                                        );
78886 
78887         IF (C_LEVEL_ERROR>= g_log_level) THEN
78888                  trace
78889                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
78890                       ,p_level    => C_LEVEL_ERROR
78891                       ,p_module   => l_log_module);
78892         END IF;
78893       END IF;
78894    END IF;
78895    --
78896    --
78897    ------------------------------------------------------------------------------------------------
78898    -- 4219869 Business Flow
78899    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
78900    -- Prior Entry.  Currently, the following code is always generated.
78901    ------------------------------------------------------------------------------------------------
78902    XLA_AE_LINES_PKG.ValidateCurrentLine;
78903 
78904    ------------------------------------------------------------------------------------
78905    -- 4219869 Business Flow
78906    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
78907    ------------------------------------------------------------------------------------
78908    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
78909 
78910    ----------------------------------------------------------------------------------
78911    -- 4219869 Business Flow
78912    -- Update journal entry status -- Need to generate this within IF <condition>
78913    ----------------------------------------------------------------------------------
78914    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
78915          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
78916          ,p_balance_type_code => l_balance_type_code
78917          );
78918 
78919    -------------------------------------------------------------------------------------------
78920    -- 4262811 - Generate the Accrual Reversal lines
78921    -------------------------------------------------------------------------------------------
78922    BEGIN
78923       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
78924                               (g_array_event(p_event_id).array_value_num('header_index'));
78925       IF l_acc_rev_flag IS NULL THEN
78926          l_acc_rev_flag := 'N';
78927       END IF;
78928    EXCEPTION
78929       WHEN OTHERS THEN
78930          l_acc_rev_flag := 'N';
78931    END;
78932    --
78933    IF (l_acc_rev_flag = 'Y') THEN
78934 
78935        -- 4645092  ------------------------------------------------------------------------------
78936        -- To allow MPA report to determine if it should generate report process
78937        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
78938        ------------------------------------------------------------------------------------------
78939 
78940        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
78941        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
78942    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
78943    -- call ADRs
78944    -- Bug 4922099
78945    --
78946    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
78947         (NVL(l_actual_upg_option, 'N') = 'O') OR
78948         (NVL(l_enc_upg_option, 'N') = 'O')
78949       )
78950    THEN
78951    NULL;
78952    --
78953    --
78954    
78955   l_ccid := AcctDerRule_4(
78956            p_application_id           => p_application_id
78957          , p_ae_header_id             => l_ae_header_id 
78958 , p_source_4 => p_source_4
78959          , x_transaction_coa_id       => l_adr_transaction_coa_id
78960          , x_accounting_coa_id        => l_adr_accounting_coa_id
78961          , x_value_type_code          => l_adr_value_type_code
78962          , p_side                     => 'NA'
78963    );
78964 
78965    xla_ae_lines_pkg.set_ccid(
78966     p_code_combination_id          => l_ccid
78967   , p_value_type_code              => l_adr_value_type_code
78968   , p_transaction_coa_id           => l_adr_transaction_coa_id
78969   , p_accounting_coa_id            => l_adr_accounting_coa_id
78970   , p_adr_code                     => 'CST_DEFAULT'
78971   , p_adr_type_code                => 'S'
78972   , p_component_type               => l_component_type
78973   , p_component_code               => l_component_code
78974   , p_component_type_code          => l_component_type_code
78975   , p_component_appl_id            => l_component_appl_id
78976   , p_amb_context_code             => l_amb_context_code
78977   , p_side                         => 'NA'
78978   );
78979 
78980 
78981    --
78982    --
78983    END IF;
78984 
78985        --
78986        -- Update the line information that should be overwritten
78987        --
78988        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
78989                                          p_header_num   => 1);
78990        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
78991 
78992        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
78993 
78994        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
78995           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
78996        END IF;
78997 
78998       --
78999       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
79000       --
79001       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
79002           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
79003       ELSE
79004           ---------------------------------------------------------------------------------------------------
79005           -- 4262811a Switch Sign
79006           ---------------------------------------------------------------------------------------------------
79007           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
79008           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
79009                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
79010           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
79011                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
79012           -- 5132302
79013           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
79014                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
79015 
79016       END IF;
79017 
79018       -- 4955764
79019       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
79020       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
79021 
79022 
79023       XLA_AE_LINES_PKG.ValidateCurrentLine;
79024       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
79025 
79026       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
79027                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
79028                ,p_balance_type_code => l_balance_type_code);
79029 
79030    END IF;
79031 
79032    -----------------------------------------------------------------------------------------
79033    -- 4262811 Multiperiod Accounting
79034    -----------------------------------------------------------------------------------------
79035      -- No MPA option is assigned.
79036 
79037 
79038 END IF;
79039 END IF;
79040 --
79041 
79042 --
79043 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79044    trace
79045       (p_msg      => 'END of AcctLineType_144'
79046       ,p_level    => C_LEVEL_PROCEDURE
79047       ,p_module   => l_log_module);
79048 END IF;
79049 --
79050 EXCEPTION
79051   WHEN xla_exceptions_pkg.application_exception THEN
79052       RAISE;
79053   WHEN OTHERS THEN
79054        xla_exceptions_pkg.raise_message
79055            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_144');
79056 END AcctLineType_144;
79057 --
79058 
79059 ---------------------------------------
79060 --
79061 -- PRIVATE FUNCTION
79062 --         AcctLineType_145
79063 --
79064 ---------------------------------------
79065 PROCEDURE AcctLineType_145 (
79066   p_application_id        IN NUMBER
79067  ,p_event_id              IN NUMBER
79068  ,p_calculate_acctd_flag  IN VARCHAR2
79069  ,p_calculate_g_l_flag    IN VARCHAR2
79070  ,p_actual_flag           IN OUT VARCHAR2
79071  ,p_balance_type_code     OUT VARCHAR2
79072  ,p_gain_or_loss_ref      OUT VARCHAR2
79073  
79074 --Cost Management Default Account
79075  , p_source_4            IN NUMBER
79076 --DISTRIBUTION_IDENTIFIER
79077  , p_source_11            IN NUMBER
79078 --Distribution Type
79079  , p_source_12            IN VARCHAR2
79080  , p_source_12_meaning    IN VARCHAR2
79081 --Entered Currency Code
79082  , p_source_15            IN VARCHAR2
79083 --Entered Amount
79084  , p_source_18            IN NUMBER
79085 --Currency Conversion Date
79086  , p_source_19            IN DATE
79087 --Currency Conversion Rate
79088  , p_source_20            IN NUMBER
79089 --Currency Conversion Type
79090  , p_source_21            IN VARCHAR2
79091 --Accounted Amount
79092  , p_source_22            IN NUMBER
79093 --Accounting Line Type
79094  , p_source_24            IN NUMBER
79095 )
79096 IS
79097 
79098 l_component_type              VARCHAR2(80);
79099 l_component_code              VARCHAR2(30);
79100 l_component_type_code         VARCHAR2(1);
79101 l_component_appl_id           INTEGER;
79102 l_amb_context_code            VARCHAR2(30);
79103 l_entity_code                 VARCHAR2(30);
79104 l_event_class_code            VARCHAR2(30);
79105 l_ae_header_id                NUMBER;
79106 l_event_type_code             VARCHAR2(30);
79107 l_line_definition_code        VARCHAR2(30);
79108 l_line_definition_owner_code  VARCHAR2(1);
79109 --
79110 -- adr variables
79111 l_segment                     VARCHAR2(30);
79112 l_ccid                        NUMBER;
79113 l_adr_transaction_coa_id      NUMBER;
79114 l_adr_accounting_coa_id       NUMBER;
79115 l_adr_flexfield_segment_code  VARCHAR2(30);
79116 l_adr_flex_value_set_id       NUMBER;
79117 l_adr_value_type_code         VARCHAR2(30);
79118 l_adr_value_combination_id    NUMBER;
79119 l_adr_value_segment_code      VARCHAR2(30);
79120 
79121 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
79122 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
79123 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
79124 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
79125 
79126 -- 4262811 Variables ------------------------------------------------------------------------------------------
79127 l_entered_amt_idx             NUMBER;
79128 l_accted_amt_idx              NUMBER;
79129 l_acc_rev_flag                VARCHAR2(1);
79130 l_accrual_line_num            NUMBER;
79131 l_tmp_amt                     NUMBER;
79132 l_acc_rev_natural_side_code   VARCHAR2(1);
79133 
79134 l_num_entries                 NUMBER;
79135 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
79136 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
79137 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
79138 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
79139 l_recog_line_1                NUMBER;
79140 l_recog_line_2                NUMBER;
79141 
79142 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
79143 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
79144 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
79145 
79146 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
79147 
79148 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
79149 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
79150 
79151 ---------------------------------------------------------------------------------------------------------------
79152 
79153 
79154 --
79155 -- bulk performance
79156 --
79157 l_balance_type_code           VARCHAR2(1);
79158 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
79159 l_log_module                  VARCHAR2(240);
79160 
79161 --
79162 -- Upgrade strategy
79163 --
79164 l_actual_upg_option           VARCHAR2(1);
79165 l_enc_upg_option           VARCHAR2(1);
79166 
79167 --
79168 BEGIN
79169 --
79170 IF g_log_enabled THEN
79171       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_145';
79172 END IF;
79173 --
79174 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79175 
79176       trace
79177          (p_msg      => 'BEGIN of AcctLineType_145'
79178          ,p_level    => C_LEVEL_PROCEDURE
79179          ,p_module   => l_log_module);
79180 
79181 END IF;
79182 --
79183 l_component_type             := 'AMB_JLT';
79184 l_component_code             := 'INVENTORY_VALUATION';
79185 l_component_type_code        := 'S';
79186 l_component_appl_id          :=  707;
79187 l_amb_context_code           := 'DEFAULT';
79188 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
79189 l_event_class_code           := 'USER_DEFINE';
79190 l_event_type_code            := 'UDIR_INTERORG_SHIP_TP';
79191 l_line_definition_owner_code := 'S';
79192 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_TP';
79193 --
79194 l_balance_type_code          := 'A';
79195 l_segment                     := NULL;
79196 l_ccid                        := NULL;
79197 l_adr_transaction_coa_id      := NULL;
79198 l_adr_accounting_coa_id       := NULL;
79199 l_adr_flexfield_segment_code  := NULL;
79200 l_adr_flex_value_set_id       := NULL;
79201 l_adr_value_type_code         := NULL;
79202 l_adr_value_combination_id    := NULL;
79203 l_adr_value_segment_code      := NULL;
79204 
79205 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
79206 l_bflow_class_code           := '';    -- 4219869 Business Flow
79207 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
79208 l_budgetary_control_flag     := 'N';
79209 
79210 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
79211 l_bflow_applied_to_amt       := NULL; -- 5132302
79212 l_entered_amt_idx            := NULL;          -- 4262811
79213 l_accted_amt_idx             := NULL;          -- 4262811
79214 l_acc_rev_flag               := NULL;          -- 4262811
79215 l_accrual_line_num           := NULL;          -- 4262811
79216 l_tmp_amt                    := NULL;          -- 4262811
79217 --
79218  
79219 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
79220     l_balance_type_code <> 'B' THEN
79221 IF NVL(p_source_24,9E125) =  1
79222  THEN 
79223 
79224    --
79225    XLA_AE_LINES_PKG.SetNewLine;
79226 
79227    p_balance_type_code          := l_balance_type_code;
79228    -- set the flag so later we will know whether the gain loss line needs to be created
79229    
79230    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
79231      p_actual_flag :='A';
79232    END IF;
79233 
79234    --
79235    -- bulk performance
79236    --
79237    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
79238                                       p_header_num   => 0); -- 4262811
79239    --
79240    -- set accounting line options
79241    --
79242    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
79243            p_natural_side_code          => 'D'
79244          , p_gain_or_loss_flag          => 'N'
79245          , p_gl_transfer_mode_code      => 'S'
79246          , p_acct_entry_type_code       => 'A'
79247          , p_switch_side_flag           => 'Y'
79248          , p_merge_duplicate_code       => 'N'
79249          );
79250    --
79251    l_acc_rev_natural_side_code := 'C';  -- 4262811
79252    -- 
79253    --
79254    -- set accounting line type info
79255    --
79256    xla_ae_lines_pkg.SetAcctLineType
79257       (p_component_type             => l_component_type
79258       ,p_event_type_code            => l_event_type_code
79259       ,p_line_definition_owner_code => l_line_definition_owner_code
79260       ,p_line_definition_code       => l_line_definition_code
79261       ,p_accounting_line_code       => l_component_code
79262       ,p_accounting_line_type_code  => l_component_type_code
79263       ,p_accounting_line_appl_id    => l_component_appl_id
79264       ,p_amb_context_code           => l_amb_context_code
79265       ,p_entity_code                => l_entity_code
79266       ,p_event_class_code           => l_event_class_code);
79267    --
79268    -- set accounting class
79269    --
79270    xla_ae_lines_pkg.SetAcctClass(
79271            p_accounting_class_code  => 'INVENTORY_VALUATION'
79272          , p_ae_header_id           => l_ae_header_id
79273          );
79274 
79275    --
79276    -- set rounding class
79277    --
79278    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
79279                       'INVENTORY_VALUATION';
79280 
79281    --
79282    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
79283    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
79284    --
79285    -- bulk performance
79286    --
79287    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
79288 
79289    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
79290       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
79291 
79292    -- 4955764
79293    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
79294       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
79295 
79296    -- 4458381 Public Sector Enh
79297    
79298    --
79299    -- set accounting attributes for the line type
79300    --
79301    l_entered_amt_idx := 3;
79302    l_accted_amt_idx  := 8;
79303    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
79304    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
79305    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
79306    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
79307    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
79308    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
79309    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
79310    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
79311    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
79312    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
79313    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
79314    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
79315    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
79316    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
79317    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
79318    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
79319    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
79320 
79321    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
79322    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
79323 
79324    ---------------------------------------------------------------------------------------------------------------
79325    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
79326    ---------------------------------------------------------------------------------------------------------------
79327    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
79328 
79329    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
79330    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
79331 
79332    IF xla_accounting_cache_pkg.GetValueChar
79333          (p_source_code         => 'LEDGER_CATEGORY_CODE'
79334          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
79335    AND l_bflow_method_code = 'PRIOR_ENTRY'
79336 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
79337    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
79338          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
79339        )
79340    THEN
79341          xla_ae_lines_pkg.BflowUpgEntry
79342            (p_business_method_code    => l_bflow_method_code
79343            ,p_business_class_code     => l_bflow_class_code
79344            ,p_balance_type            => l_balance_type_code);
79345    ELSE
79346       NULL;
79347 -- No business flow processing for business flow method of NONE.
79348    END IF;
79349 
79350    --
79351    -- call analytical criteria
79352    --
79353    
79354    --
79355    -- call description
79356    --
79357    -- No description or it is inherited.
79358    --
79359    -- call ADRs
79360    -- Bug 4922099
79361    --
79362    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
79363         (NVL(l_actual_upg_option, 'N') = 'O') OR
79364         (NVL(l_enc_upg_option, 'N') = 'O')
79365       )
79366    THEN
79367    NULL;
79368    --
79369    --
79370    
79371   l_ccid := AcctDerRule_4(
79372            p_application_id           => p_application_id
79373          , p_ae_header_id             => l_ae_header_id 
79374 , p_source_4 => p_source_4
79375          , x_transaction_coa_id       => l_adr_transaction_coa_id
79376          , x_accounting_coa_id        => l_adr_accounting_coa_id
79377          , x_value_type_code          => l_adr_value_type_code
79378          , p_side                     => 'NA'
79379    );
79380 
79381    xla_ae_lines_pkg.set_ccid(
79382     p_code_combination_id          => l_ccid
79383   , p_value_type_code              => l_adr_value_type_code
79384   , p_transaction_coa_id           => l_adr_transaction_coa_id
79385   , p_accounting_coa_id            => l_adr_accounting_coa_id
79386   , p_adr_code                     => 'CST_DEFAULT'
79387   , p_adr_type_code                => 'S'
79388   , p_component_type               => l_component_type
79389   , p_component_code               => l_component_code
79390   , p_component_type_code          => l_component_type_code
79391   , p_component_appl_id            => l_component_appl_id
79392   , p_amb_context_code             => l_amb_context_code
79393   , p_side                         => 'NA'
79394   );
79395 
79396 
79397    --
79398    --
79399    END IF;
79400    --
79401    -- Bug 4922099
79402    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
79403           (NVL(l_enc_upg_option, 'N') = 'O')
79404         ) AND
79405         (l_bflow_method_code = 'PRIOR_ENTRY')
79406       )
79407    THEN
79408       IF
79409       --
79410       1 = 2
79411       --
79412       THEN
79413       xla_accounting_err_pkg.build_message
79414                                     (p_appli_s_name            => 'XLA'
79415                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
79416                                     ,p_token_1                 => 'LINE_NUMBER'
79417                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
79418                                     ,p_token_2                 => 'LINE_TYPE_NAME'
79419                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
79420                                                                              l_component_type
79421                                                                             ,l_component_code
79422                                                                             ,l_component_type_code
79423                                                                             ,l_component_appl_id
79424                                                                             ,l_amb_context_code
79425                                                                             ,l_entity_code
79426                                                                             ,l_event_class_code
79427                                                                            )
79428                                     ,p_token_3                 => 'OWNER'
79429                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
79430                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
79431                                                                           ,p_lookup_code    => l_component_type_code
79432                                                                          )
79433                                     ,p_token_4                 => 'PRODUCT_NAME'
79434                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
79435                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
79436                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
79437                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
79438                                     ,p_ae_header_id            =>  NULL
79439                                        );
79440 
79441         IF (C_LEVEL_ERROR>= g_log_level) THEN
79442                  trace
79443                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
79444                       ,p_level    => C_LEVEL_ERROR
79445                       ,p_module   => l_log_module);
79446         END IF;
79447       END IF;
79448    END IF;
79449    --
79450    --
79451    ------------------------------------------------------------------------------------------------
79452    -- 4219869 Business Flow
79453    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
79454    -- Prior Entry.  Currently, the following code is always generated.
79455    ------------------------------------------------------------------------------------------------
79456    XLA_AE_LINES_PKG.ValidateCurrentLine;
79457 
79458    ------------------------------------------------------------------------------------
79459    -- 4219869 Business Flow
79460    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
79461    ------------------------------------------------------------------------------------
79462    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
79463 
79464    ----------------------------------------------------------------------------------
79465    -- 4219869 Business Flow
79466    -- Update journal entry status -- Need to generate this within IF <condition>
79467    ----------------------------------------------------------------------------------
79468    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
79469          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
79470          ,p_balance_type_code => l_balance_type_code
79471          );
79472 
79473    -------------------------------------------------------------------------------------------
79474    -- 4262811 - Generate the Accrual Reversal lines
79475    -------------------------------------------------------------------------------------------
79476    BEGIN
79477       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
79478                               (g_array_event(p_event_id).array_value_num('header_index'));
79479       IF l_acc_rev_flag IS NULL THEN
79480          l_acc_rev_flag := 'N';
79481       END IF;
79482    EXCEPTION
79483       WHEN OTHERS THEN
79484          l_acc_rev_flag := 'N';
79485    END;
79486    --
79487    IF (l_acc_rev_flag = 'Y') THEN
79488 
79489        -- 4645092  ------------------------------------------------------------------------------
79490        -- To allow MPA report to determine if it should generate report process
79491        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
79492        ------------------------------------------------------------------------------------------
79493 
79494        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
79495        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
79496    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
79497    -- call ADRs
79498    -- Bug 4922099
79499    --
79500    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
79501         (NVL(l_actual_upg_option, 'N') = 'O') OR
79502         (NVL(l_enc_upg_option, 'N') = 'O')
79503       )
79504    THEN
79505    NULL;
79506    --
79507    --
79508    
79509   l_ccid := AcctDerRule_4(
79510            p_application_id           => p_application_id
79511          , p_ae_header_id             => l_ae_header_id 
79512 , p_source_4 => p_source_4
79513          , x_transaction_coa_id       => l_adr_transaction_coa_id
79514          , x_accounting_coa_id        => l_adr_accounting_coa_id
79515          , x_value_type_code          => l_adr_value_type_code
79516          , p_side                     => 'NA'
79517    );
79518 
79519    xla_ae_lines_pkg.set_ccid(
79520     p_code_combination_id          => l_ccid
79521   , p_value_type_code              => l_adr_value_type_code
79522   , p_transaction_coa_id           => l_adr_transaction_coa_id
79523   , p_accounting_coa_id            => l_adr_accounting_coa_id
79524   , p_adr_code                     => 'CST_DEFAULT'
79525   , p_adr_type_code                => 'S'
79526   , p_component_type               => l_component_type
79527   , p_component_code               => l_component_code
79528   , p_component_type_code          => l_component_type_code
79529   , p_component_appl_id            => l_component_appl_id
79530   , p_amb_context_code             => l_amb_context_code
79531   , p_side                         => 'NA'
79532   );
79533 
79534 
79535    --
79536    --
79537    END IF;
79538 
79539        --
79540        -- Update the line information that should be overwritten
79541        --
79542        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
79543                                          p_header_num   => 1);
79544        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
79545 
79546        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
79547 
79548        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
79549           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
79550        END IF;
79551 
79552       --
79553       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
79554       --
79555       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
79556           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
79557       ELSE
79558           ---------------------------------------------------------------------------------------------------
79559           -- 4262811a Switch Sign
79560           ---------------------------------------------------------------------------------------------------
79561           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
79562           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
79563                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
79564           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
79565                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
79566           -- 5132302
79567           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
79568                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
79569 
79570       END IF;
79571 
79572       -- 4955764
79573       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
79574       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
79575 
79576 
79577       XLA_AE_LINES_PKG.ValidateCurrentLine;
79578       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
79579 
79580       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
79581                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
79582                ,p_balance_type_code => l_balance_type_code);
79583 
79584    END IF;
79585 
79586    -----------------------------------------------------------------------------------------
79587    -- 4262811 Multiperiod Accounting
79588    -----------------------------------------------------------------------------------------
79589      -- No MPA option is assigned.
79590 
79591 
79592 END IF;
79593 END IF;
79594 --
79595 
79596 --
79597 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79598    trace
79599       (p_msg      => 'END of AcctLineType_145'
79600       ,p_level    => C_LEVEL_PROCEDURE
79601       ,p_module   => l_log_module);
79602 END IF;
79603 --
79604 EXCEPTION
79605   WHEN xla_exceptions_pkg.application_exception THEN
79606       RAISE;
79607   WHEN OTHERS THEN
79608        xla_exceptions_pkg.raise_message
79609            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_145');
79610 END AcctLineType_145;
79611 --
79612 
79613 ---------------------------------------
79614 --
79615 -- PRIVATE FUNCTION
79616 --         AcctLineType_146
79617 --
79618 ---------------------------------------
79619 PROCEDURE AcctLineType_146 (
79620   p_application_id        IN NUMBER
79621  ,p_event_id              IN NUMBER
79622  ,p_calculate_acctd_flag  IN VARCHAR2
79623  ,p_calculate_g_l_flag    IN VARCHAR2
79624  ,p_actual_flag           IN OUT VARCHAR2
79625  ,p_balance_type_code     OUT VARCHAR2
79626  ,p_gain_or_loss_ref      OUT VARCHAR2
79627  
79628 --Cost Management Default Account
79629  , p_source_4            IN NUMBER
79630 --DISTRIBUTION_IDENTIFIER
79631  , p_source_11            IN NUMBER
79632 --Distribution Type
79633  , p_source_12            IN VARCHAR2
79634  , p_source_12_meaning    IN VARCHAR2
79635 --Entered Currency Code
79636  , p_source_15            IN VARCHAR2
79637 --Entered Amount
79638  , p_source_18            IN NUMBER
79639 --Currency Conversion Date
79640  , p_source_19            IN DATE
79641 --Currency Conversion Rate
79642  , p_source_20            IN NUMBER
79643 --Currency Conversion Type
79644  , p_source_21            IN VARCHAR2
79645 --Accounted Amount
79646  , p_source_22            IN NUMBER
79647 --Accounting Line Type
79648  , p_source_24            IN NUMBER
79649 )
79650 IS
79651 
79652 l_component_type              VARCHAR2(80);
79653 l_component_code              VARCHAR2(30);
79654 l_component_type_code         VARCHAR2(1);
79655 l_component_appl_id           INTEGER;
79656 l_amb_context_code            VARCHAR2(30);
79657 l_entity_code                 VARCHAR2(30);
79658 l_event_class_code            VARCHAR2(30);
79659 l_ae_header_id                NUMBER;
79660 l_event_type_code             VARCHAR2(30);
79661 l_line_definition_code        VARCHAR2(30);
79662 l_line_definition_owner_code  VARCHAR2(1);
79663 --
79664 -- adr variables
79665 l_segment                     VARCHAR2(30);
79666 l_ccid                        NUMBER;
79667 l_adr_transaction_coa_id      NUMBER;
79668 l_adr_accounting_coa_id       NUMBER;
79669 l_adr_flexfield_segment_code  VARCHAR2(30);
79670 l_adr_flex_value_set_id       NUMBER;
79671 l_adr_value_type_code         VARCHAR2(30);
79672 l_adr_value_combination_id    NUMBER;
79673 l_adr_value_segment_code      VARCHAR2(30);
79674 
79675 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
79676 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
79677 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
79678 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
79679 
79680 -- 4262811 Variables ------------------------------------------------------------------------------------------
79681 l_entered_amt_idx             NUMBER;
79682 l_accted_amt_idx              NUMBER;
79683 l_acc_rev_flag                VARCHAR2(1);
79684 l_accrual_line_num            NUMBER;
79685 l_tmp_amt                     NUMBER;
79686 l_acc_rev_natural_side_code   VARCHAR2(1);
79687 
79688 l_num_entries                 NUMBER;
79689 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
79690 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
79691 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
79692 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
79693 l_recog_line_1                NUMBER;
79694 l_recog_line_2                NUMBER;
79695 
79696 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
79697 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
79698 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
79699 
79700 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
79701 
79702 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
79703 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
79704 
79705 ---------------------------------------------------------------------------------------------------------------
79706 
79707 
79708 --
79709 -- bulk performance
79710 --
79711 l_balance_type_code           VARCHAR2(1);
79712 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
79713 l_log_module                  VARCHAR2(240);
79714 
79715 --
79716 -- Upgrade strategy
79717 --
79718 l_actual_upg_option           VARCHAR2(1);
79719 l_enc_upg_option           VARCHAR2(1);
79720 
79721 --
79722 BEGIN
79723 --
79724 IF g_log_enabled THEN
79725       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_146';
79726 END IF;
79727 --
79728 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79729 
79730       trace
79731          (p_msg      => 'BEGIN of AcctLineType_146'
79732          ,p_level    => C_LEVEL_PROCEDURE
79733          ,p_module   => l_log_module);
79734 
79735 END IF;
79736 --
79737 l_component_type             := 'AMB_JLT';
79738 l_component_code             := 'INVENTORY_VALUATION';
79739 l_component_type_code        := 'S';
79740 l_component_appl_id          :=  707;
79741 l_amb_context_code           := 'DEFAULT';
79742 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
79743 l_event_class_code           := 'USER_DEFINE';
79744 l_event_type_code            := 'UMISC_ISSUE';
79745 l_line_definition_owner_code := 'S';
79746 l_line_definition_code       := 'USER_ISSUE';
79747 --
79748 l_balance_type_code          := 'A';
79749 l_segment                     := NULL;
79750 l_ccid                        := NULL;
79751 l_adr_transaction_coa_id      := NULL;
79752 l_adr_accounting_coa_id       := NULL;
79753 l_adr_flexfield_segment_code  := NULL;
79754 l_adr_flex_value_set_id       := NULL;
79755 l_adr_value_type_code         := NULL;
79756 l_adr_value_combination_id    := NULL;
79757 l_adr_value_segment_code      := NULL;
79758 
79759 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
79760 l_bflow_class_code           := '';    -- 4219869 Business Flow
79761 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
79762 l_budgetary_control_flag     := 'N';
79763 
79764 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
79765 l_bflow_applied_to_amt       := NULL; -- 5132302
79766 l_entered_amt_idx            := NULL;          -- 4262811
79767 l_accted_amt_idx             := NULL;          -- 4262811
79768 l_acc_rev_flag               := NULL;          -- 4262811
79769 l_accrual_line_num           := NULL;          -- 4262811
79770 l_tmp_amt                    := NULL;          -- 4262811
79771 --
79772  
79773 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
79774     l_balance_type_code <> 'B' THEN
79775 IF NVL(p_source_24,9E125) =  1
79776  THEN 
79777 
79778    --
79779    XLA_AE_LINES_PKG.SetNewLine;
79780 
79781    p_balance_type_code          := l_balance_type_code;
79782    -- set the flag so later we will know whether the gain loss line needs to be created
79783    
79784    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
79785      p_actual_flag :='A';
79786    END IF;
79787 
79788    --
79789    -- bulk performance
79790    --
79791    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
79792                                       p_header_num   => 0); -- 4262811
79793    --
79794    -- set accounting line options
79795    --
79796    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
79797            p_natural_side_code          => 'D'
79798          , p_gain_or_loss_flag          => 'N'
79799          , p_gl_transfer_mode_code      => 'S'
79800          , p_acct_entry_type_code       => 'A'
79801          , p_switch_side_flag           => 'Y'
79802          , p_merge_duplicate_code       => 'N'
79803          );
79804    --
79805    l_acc_rev_natural_side_code := 'C';  -- 4262811
79806    -- 
79807    --
79808    -- set accounting line type info
79809    --
79810    xla_ae_lines_pkg.SetAcctLineType
79811       (p_component_type             => l_component_type
79812       ,p_event_type_code            => l_event_type_code
79813       ,p_line_definition_owner_code => l_line_definition_owner_code
79814       ,p_line_definition_code       => l_line_definition_code
79815       ,p_accounting_line_code       => l_component_code
79816       ,p_accounting_line_type_code  => l_component_type_code
79817       ,p_accounting_line_appl_id    => l_component_appl_id
79818       ,p_amb_context_code           => l_amb_context_code
79819       ,p_entity_code                => l_entity_code
79820       ,p_event_class_code           => l_event_class_code);
79821    --
79822    -- set accounting class
79823    --
79824    xla_ae_lines_pkg.SetAcctClass(
79825            p_accounting_class_code  => 'INVENTORY_VALUATION'
79826          , p_ae_header_id           => l_ae_header_id
79827          );
79828 
79829    --
79830    -- set rounding class
79831    --
79832    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
79833                       'INVENTORY_VALUATION';
79834 
79835    --
79836    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
79837    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
79838    --
79839    -- bulk performance
79840    --
79841    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
79842 
79843    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
79844       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
79845 
79846    -- 4955764
79847    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
79848       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
79849 
79850    -- 4458381 Public Sector Enh
79851    
79852    --
79853    -- set accounting attributes for the line type
79854    --
79855    l_entered_amt_idx := 3;
79856    l_accted_amt_idx  := 8;
79857    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
79858    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
79859    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
79860    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
79861    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
79862    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
79863    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
79864    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
79865    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
79866    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
79867    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
79868    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
79869    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
79870    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
79871    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
79872    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
79873    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
79874 
79875    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
79876    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
79877 
79878    ---------------------------------------------------------------------------------------------------------------
79879    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
79880    ---------------------------------------------------------------------------------------------------------------
79881    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
79882 
79883    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
79884    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
79885 
79886    IF xla_accounting_cache_pkg.GetValueChar
79887          (p_source_code         => 'LEDGER_CATEGORY_CODE'
79888          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
79889    AND l_bflow_method_code = 'PRIOR_ENTRY'
79890 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
79891    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
79892          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
79893        )
79894    THEN
79895          xla_ae_lines_pkg.BflowUpgEntry
79896            (p_business_method_code    => l_bflow_method_code
79897            ,p_business_class_code     => l_bflow_class_code
79898            ,p_balance_type            => l_balance_type_code);
79899    ELSE
79900       NULL;
79901 -- No business flow processing for business flow method of NONE.
79902    END IF;
79903 
79904    --
79905    -- call analytical criteria
79906    --
79907    
79908    --
79909    -- call description
79910    --
79911    -- No description or it is inherited.
79912    --
79913    -- call ADRs
79914    -- Bug 4922099
79915    --
79916    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
79917         (NVL(l_actual_upg_option, 'N') = 'O') OR
79918         (NVL(l_enc_upg_option, 'N') = 'O')
79919       )
79920    THEN
79921    NULL;
79922    --
79923    --
79924    
79925   l_ccid := AcctDerRule_4(
79926            p_application_id           => p_application_id
79927          , p_ae_header_id             => l_ae_header_id 
79928 , p_source_4 => p_source_4
79929          , x_transaction_coa_id       => l_adr_transaction_coa_id
79930          , x_accounting_coa_id        => l_adr_accounting_coa_id
79931          , x_value_type_code          => l_adr_value_type_code
79932          , p_side                     => 'NA'
79933    );
79934 
79935    xla_ae_lines_pkg.set_ccid(
79936     p_code_combination_id          => l_ccid
79937   , p_value_type_code              => l_adr_value_type_code
79938   , p_transaction_coa_id           => l_adr_transaction_coa_id
79939   , p_accounting_coa_id            => l_adr_accounting_coa_id
79940   , p_adr_code                     => 'CST_DEFAULT'
79941   , p_adr_type_code                => 'S'
79942   , p_component_type               => l_component_type
79943   , p_component_code               => l_component_code
79944   , p_component_type_code          => l_component_type_code
79945   , p_component_appl_id            => l_component_appl_id
79946   , p_amb_context_code             => l_amb_context_code
79947   , p_side                         => 'NA'
79948   );
79949 
79950 
79951    --
79952    --
79953    END IF;
79954    --
79955    -- Bug 4922099
79956    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
79957           (NVL(l_enc_upg_option, 'N') = 'O')
79958         ) AND
79959         (l_bflow_method_code = 'PRIOR_ENTRY')
79960       )
79961    THEN
79962       IF
79963       --
79964       1 = 2
79965       --
79966       THEN
79967       xla_accounting_err_pkg.build_message
79968                                     (p_appli_s_name            => 'XLA'
79969                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
79970                                     ,p_token_1                 => 'LINE_NUMBER'
79971                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
79972                                     ,p_token_2                 => 'LINE_TYPE_NAME'
79973                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
79974                                                                              l_component_type
79975                                                                             ,l_component_code
79976                                                                             ,l_component_type_code
79977                                                                             ,l_component_appl_id
79978                                                                             ,l_amb_context_code
79979                                                                             ,l_entity_code
79980                                                                             ,l_event_class_code
79981                                                                            )
79982                                     ,p_token_3                 => 'OWNER'
79983                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
79984                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
79985                                                                           ,p_lookup_code    => l_component_type_code
79986                                                                          )
79987                                     ,p_token_4                 => 'PRODUCT_NAME'
79988                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
79989                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
79990                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
79991                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
79992                                     ,p_ae_header_id            =>  NULL
79993                                        );
79994 
79995         IF (C_LEVEL_ERROR>= g_log_level) THEN
79996                  trace
79997                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
79998                       ,p_level    => C_LEVEL_ERROR
79999                       ,p_module   => l_log_module);
80000         END IF;
80001       END IF;
80002    END IF;
80003    --
80004    --
80005    ------------------------------------------------------------------------------------------------
80006    -- 4219869 Business Flow
80007    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
80008    -- Prior Entry.  Currently, the following code is always generated.
80009    ------------------------------------------------------------------------------------------------
80010    XLA_AE_LINES_PKG.ValidateCurrentLine;
80011 
80012    ------------------------------------------------------------------------------------
80013    -- 4219869 Business Flow
80014    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
80015    ------------------------------------------------------------------------------------
80016    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
80017 
80018    ----------------------------------------------------------------------------------
80019    -- 4219869 Business Flow
80020    -- Update journal entry status -- Need to generate this within IF <condition>
80021    ----------------------------------------------------------------------------------
80022    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
80023          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
80024          ,p_balance_type_code => l_balance_type_code
80025          );
80026 
80027    -------------------------------------------------------------------------------------------
80028    -- 4262811 - Generate the Accrual Reversal lines
80029    -------------------------------------------------------------------------------------------
80030    BEGIN
80031       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
80032                               (g_array_event(p_event_id).array_value_num('header_index'));
80033       IF l_acc_rev_flag IS NULL THEN
80034          l_acc_rev_flag := 'N';
80035       END IF;
80036    EXCEPTION
80037       WHEN OTHERS THEN
80038          l_acc_rev_flag := 'N';
80039    END;
80040    --
80041    IF (l_acc_rev_flag = 'Y') THEN
80042 
80043        -- 4645092  ------------------------------------------------------------------------------
80044        -- To allow MPA report to determine if it should generate report process
80045        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
80046        ------------------------------------------------------------------------------------------
80047 
80048        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
80049        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
80050    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
80051    -- call ADRs
80052    -- Bug 4922099
80053    --
80054    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
80055         (NVL(l_actual_upg_option, 'N') = 'O') OR
80056         (NVL(l_enc_upg_option, 'N') = 'O')
80057       )
80058    THEN
80059    NULL;
80060    --
80061    --
80062    
80063   l_ccid := AcctDerRule_4(
80064            p_application_id           => p_application_id
80065          , p_ae_header_id             => l_ae_header_id 
80066 , p_source_4 => p_source_4
80067          , x_transaction_coa_id       => l_adr_transaction_coa_id
80068          , x_accounting_coa_id        => l_adr_accounting_coa_id
80069          , x_value_type_code          => l_adr_value_type_code
80070          , p_side                     => 'NA'
80071    );
80072 
80073    xla_ae_lines_pkg.set_ccid(
80074     p_code_combination_id          => l_ccid
80075   , p_value_type_code              => l_adr_value_type_code
80076   , p_transaction_coa_id           => l_adr_transaction_coa_id
80077   , p_accounting_coa_id            => l_adr_accounting_coa_id
80078   , p_adr_code                     => 'CST_DEFAULT'
80079   , p_adr_type_code                => 'S'
80080   , p_component_type               => l_component_type
80081   , p_component_code               => l_component_code
80082   , p_component_type_code          => l_component_type_code
80083   , p_component_appl_id            => l_component_appl_id
80084   , p_amb_context_code             => l_amb_context_code
80085   , p_side                         => 'NA'
80086   );
80087 
80088 
80089    --
80090    --
80091    END IF;
80092 
80093        --
80094        -- Update the line information that should be overwritten
80095        --
80096        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
80097                                          p_header_num   => 1);
80098        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
80099 
80100        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
80101 
80102        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
80103           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
80104        END IF;
80105 
80106       --
80107       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
80108       --
80109       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
80110           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
80111       ELSE
80112           ---------------------------------------------------------------------------------------------------
80113           -- 4262811a Switch Sign
80114           ---------------------------------------------------------------------------------------------------
80115           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
80116           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
80117                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
80118           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
80119                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
80120           -- 5132302
80121           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
80122                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
80123 
80124       END IF;
80125 
80126       -- 4955764
80127       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
80128       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
80129 
80130 
80131       XLA_AE_LINES_PKG.ValidateCurrentLine;
80132       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
80133 
80134       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
80135                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
80136                ,p_balance_type_code => l_balance_type_code);
80137 
80138    END IF;
80139 
80140    -----------------------------------------------------------------------------------------
80141    -- 4262811 Multiperiod Accounting
80142    -----------------------------------------------------------------------------------------
80143      -- No MPA option is assigned.
80144 
80145 
80146 END IF;
80147 END IF;
80148 --
80149 
80150 --
80151 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80152    trace
80153       (p_msg      => 'END of AcctLineType_146'
80154       ,p_level    => C_LEVEL_PROCEDURE
80155       ,p_module   => l_log_module);
80156 END IF;
80157 --
80158 EXCEPTION
80159   WHEN xla_exceptions_pkg.application_exception THEN
80160       RAISE;
80161   WHEN OTHERS THEN
80162        xla_exceptions_pkg.raise_message
80163            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_146');
80164 END AcctLineType_146;
80165 --
80166 
80167 ---------------------------------------
80168 --
80169 -- PRIVATE FUNCTION
80170 --         AcctLineType_147
80171 --
80172 ---------------------------------------
80173 PROCEDURE AcctLineType_147 (
80174   p_application_id        IN NUMBER
80175  ,p_event_id              IN NUMBER
80176  ,p_calculate_acctd_flag  IN VARCHAR2
80177  ,p_calculate_g_l_flag    IN VARCHAR2
80178  ,p_actual_flag           IN OUT VARCHAR2
80179  ,p_balance_type_code     OUT VARCHAR2
80180  ,p_gain_or_loss_ref      OUT VARCHAR2
80181  
80182 --Cost Management Default Account
80183  , p_source_4            IN NUMBER
80184 --Applied to Application ID
80185  , p_source_6            IN NUMBER
80186 --Applied to Distribution Link Type
80187  , p_source_7            IN VARCHAR2
80188 --Applied to Entity Code
80189  , p_source_8            IN VARCHAR2
80190 --DISTRIBUTION_IDENTIFIER
80191  , p_source_11            IN NUMBER
80192 --Distribution Type
80193  , p_source_12            IN VARCHAR2
80194  , p_source_12_meaning    IN VARCHAR2
80195 --Encumbrance Reversal Amount Entered
80196  , p_source_14            IN NUMBER
80197 --Entered Currency Code
80198  , p_source_15            IN VARCHAR2
80199 --Transaction Encumbrance Reversal Amount
80200  , p_source_16            IN NUMBER
80201 --Entered Amount
80202  , p_source_18            IN NUMBER
80203 --Currency Conversion Date
80204  , p_source_19            IN DATE
80205 --Currency Conversion Rate
80206  , p_source_20            IN NUMBER
80207 --Currency Conversion Type
80208  , p_source_21            IN VARCHAR2
80209 --Accounted Amount
80210  , p_source_22            IN NUMBER
80211 --Accounting Line Type
80212  , p_source_24            IN NUMBER
80213 --Costing Encumbrance Upgrade Option
80214  , p_source_27            IN VARCHAR2
80215 --TXN_PO_DISTRIBUTION_ID
80216  , p_source_28            IN NUMBER
80217 --TXN_PO_HEADER_ID
80218  , p_source_29            IN NUMBER
80219 --Requisition Budget Account
80220  , p_source_30            IN NUMBER
80221 --Requisition Encumbrance Type Identifier
80222  , p_source_31            IN NUMBER
80223 )
80224 IS
80225 
80226 l_component_type              VARCHAR2(80);
80227 l_component_code              VARCHAR2(30);
80228 l_component_type_code         VARCHAR2(1);
80229 l_component_appl_id           INTEGER;
80230 l_amb_context_code            VARCHAR2(30);
80231 l_entity_code                 VARCHAR2(30);
80232 l_event_class_code            VARCHAR2(30);
80233 l_ae_header_id                NUMBER;
80234 l_event_type_code             VARCHAR2(30);
80235 l_line_definition_code        VARCHAR2(30);
80236 l_line_definition_owner_code  VARCHAR2(1);
80237 --
80238 -- adr variables
80239 l_segment                     VARCHAR2(30);
80240 l_ccid                        NUMBER;
80241 l_adr_transaction_coa_id      NUMBER;
80242 l_adr_accounting_coa_id       NUMBER;
80243 l_adr_flexfield_segment_code  VARCHAR2(30);
80244 l_adr_flex_value_set_id       NUMBER;
80245 l_adr_value_type_code         VARCHAR2(30);
80246 l_adr_value_combination_id    NUMBER;
80247 l_adr_value_segment_code      VARCHAR2(30);
80248 
80249 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
80250 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
80251 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
80252 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
80253 
80254 -- 4262811 Variables ------------------------------------------------------------------------------------------
80255 l_entered_amt_idx             NUMBER;
80256 l_accted_amt_idx              NUMBER;
80257 l_acc_rev_flag                VARCHAR2(1);
80258 l_accrual_line_num            NUMBER;
80259 l_tmp_amt                     NUMBER;
80260 l_acc_rev_natural_side_code   VARCHAR2(1);
80261 
80262 l_num_entries                 NUMBER;
80263 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
80264 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
80265 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
80266 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
80267 l_recog_line_1                NUMBER;
80268 l_recog_line_2                NUMBER;
80269 
80270 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
80271 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
80272 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
80273 
80274 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
80275 
80276 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
80277 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
80278 
80279 ---------------------------------------------------------------------------------------------------------------
80280 
80281 
80282 --
80283 -- bulk performance
80284 --
80285 l_balance_type_code           VARCHAR2(1);
80286 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
80287 l_log_module                  VARCHAR2(240);
80288 
80289 --
80290 -- Upgrade strategy
80291 --
80292 l_actual_upg_option           VARCHAR2(1);
80293 l_enc_upg_option           VARCHAR2(1);
80294 
80295 --
80296 BEGIN
80297 --
80298 IF g_log_enabled THEN
80299       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_147';
80300 END IF;
80301 --
80302 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80303 
80304       trace
80305          (p_msg      => 'BEGIN of AcctLineType_147'
80306          ,p_level    => C_LEVEL_PROCEDURE
80307          ,p_module   => l_log_module);
80308 
80309 END IF;
80310 --
80311 l_component_type             := 'AMB_JLT';
80312 l_component_code             := 'INVENTORY_VALUATION';
80313 l_component_type_code        := 'S';
80314 l_component_appl_id          :=  707;
80315 l_amb_context_code           := 'DEFAULT';
80316 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
80317 l_event_class_code           := 'DIR_INTERORG_RCPT';
80318 l_event_type_code            := 'DIR_INTERORG_RCPT_ALL';
80319 l_line_definition_owner_code := 'S';
80320 l_line_definition_code       := 'DIRECT_INTERORG_RCPT';
80321 --
80322 l_balance_type_code          := 'A';
80323 l_segment                     := NULL;
80324 l_ccid                        := NULL;
80325 l_adr_transaction_coa_id      := NULL;
80326 l_adr_accounting_coa_id       := NULL;
80327 l_adr_flexfield_segment_code  := NULL;
80328 l_adr_flex_value_set_id       := NULL;
80329 l_adr_value_type_code         := NULL;
80330 l_adr_value_combination_id    := NULL;
80331 l_adr_value_segment_code      := NULL;
80332 
80333 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
80334 l_bflow_class_code           := '';    -- 4219869 Business Flow
80335 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
80336 l_budgetary_control_flag     := 'N';
80337 
80338 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
80339 l_bflow_applied_to_amt       := NULL; -- 5132302
80340 l_entered_amt_idx            := NULL;          -- 4262811
80341 l_accted_amt_idx             := NULL;          -- 4262811
80342 l_acc_rev_flag               := NULL;          -- 4262811
80343 l_accrual_line_num           := NULL;          -- 4262811
80344 l_tmp_amt                    := NULL;          -- 4262811
80345 --
80346  
80347 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
80348     l_balance_type_code <> 'B' THEN
80349 IF NVL(p_source_24,9E125) =  1
80350  THEN 
80351 
80352    --
80353    XLA_AE_LINES_PKG.SetNewLine;
80354 
80355    p_balance_type_code          := l_balance_type_code;
80356    -- set the flag so later we will know whether the gain loss line needs to be created
80357    
80358    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
80359      p_actual_flag :='A';
80360    END IF;
80361 
80362    --
80363    -- bulk performance
80364    --
80365    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
80366                                       p_header_num   => 0); -- 4262811
80367    --
80368    -- set accounting line options
80369    --
80370    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
80371            p_natural_side_code          => 'D'
80372          , p_gain_or_loss_flag          => 'N'
80373          , p_gl_transfer_mode_code      => 'S'
80374          , p_acct_entry_type_code       => 'A'
80375          , p_switch_side_flag           => 'Y'
80376          , p_merge_duplicate_code       => 'N'
80377          );
80378    --
80379    l_acc_rev_natural_side_code := 'C';  -- 4262811
80380    -- 
80381    --
80382    -- set accounting line type info
80383    --
80384    xla_ae_lines_pkg.SetAcctLineType
80385       (p_component_type             => l_component_type
80386       ,p_event_type_code            => l_event_type_code
80387       ,p_line_definition_owner_code => l_line_definition_owner_code
80388       ,p_line_definition_code       => l_line_definition_code
80389       ,p_accounting_line_code       => l_component_code
80390       ,p_accounting_line_type_code  => l_component_type_code
80391       ,p_accounting_line_appl_id    => l_component_appl_id
80392       ,p_amb_context_code           => l_amb_context_code
80393       ,p_entity_code                => l_entity_code
80394       ,p_event_class_code           => l_event_class_code);
80395    --
80396    -- set accounting class
80397    --
80398    xla_ae_lines_pkg.SetAcctClass(
80399            p_accounting_class_code  => 'INVENTORY_VALUATION'
80400          , p_ae_header_id           => l_ae_header_id
80401          );
80402 
80403    --
80404    -- set rounding class
80405    --
80406    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
80407                       'INVENTORY_VALUATION';
80408 
80409    --
80410    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
80411    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
80412    --
80413    -- bulk performance
80414    --
80415    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
80416 
80417    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
80418       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
80419 
80420    -- 4955764
80421    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
80422       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
80423 
80424    -- 4458381 Public Sector Enh
80425    
80426    --
80427    -- set accounting attributes for the line type
80428    --
80429    l_entered_amt_idx := 17;
80430    l_accted_amt_idx  := 22;
80431    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
80432    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
80433    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
80434    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
80435    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
80436    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
80437    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
80438    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
80439    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
80440    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
80441    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
80442    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
80443    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
80444    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
80445    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
80446    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
80447    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
80448    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
80449    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
80450    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
80451    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
80452    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
80453    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
80454    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
80455    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
80456    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
80457    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
80458    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
80459    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
80460    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
80461    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
80462    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
80463    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
80464    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
80465    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
80466    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
80467    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
80468    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
80469    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
80470    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
80471    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
80472    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
80473    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
80474    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
80475    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
80476    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
80477    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
80478    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
80479    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
80480 
80481    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
80482    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
80483 
80484    ---------------------------------------------------------------------------------------------------------------
80485    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
80486    ---------------------------------------------------------------------------------------------------------------
80487    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
80488 
80489    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
80490    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
80491 
80492    IF xla_accounting_cache_pkg.GetValueChar
80493          (p_source_code         => 'LEDGER_CATEGORY_CODE'
80494          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
80495    AND l_bflow_method_code = 'PRIOR_ENTRY'
80496 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
80497    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
80498          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
80499        )
80500    THEN
80501          xla_ae_lines_pkg.BflowUpgEntry
80502            (p_business_method_code    => l_bflow_method_code
80503            ,p_business_class_code     => l_bflow_class_code
80504            ,p_balance_type            => l_balance_type_code);
80505    ELSE
80506       NULL;
80507 -- No business flow processing for business flow method of NONE.
80508    END IF;
80509 
80510    --
80511    -- call analytical criteria
80512    --
80513    
80514    --
80515    -- call description
80516    --
80517    -- No description or it is inherited.
80518    --
80519    -- call ADRs
80520    -- Bug 4922099
80521    --
80522    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
80523         (NVL(l_actual_upg_option, 'N') = 'O') OR
80524         (NVL(l_enc_upg_option, 'N') = 'O')
80525       )
80526    THEN
80527    NULL;
80528    --
80529    --
80530    
80531   l_ccid := AcctDerRule_4(
80532            p_application_id           => p_application_id
80533          , p_ae_header_id             => l_ae_header_id 
80534 , p_source_4 => p_source_4
80535          , x_transaction_coa_id       => l_adr_transaction_coa_id
80536          , x_accounting_coa_id        => l_adr_accounting_coa_id
80537          , x_value_type_code          => l_adr_value_type_code
80538          , p_side                     => 'NA'
80539    );
80540 
80541    xla_ae_lines_pkg.set_ccid(
80542     p_code_combination_id          => l_ccid
80543   , p_value_type_code              => l_adr_value_type_code
80544   , p_transaction_coa_id           => l_adr_transaction_coa_id
80545   , p_accounting_coa_id            => l_adr_accounting_coa_id
80546   , p_adr_code                     => 'CST_DEFAULT'
80547   , p_adr_type_code                => 'S'
80548   , p_component_type               => l_component_type
80549   , p_component_code               => l_component_code
80550   , p_component_type_code          => l_component_type_code
80551   , p_component_appl_id            => l_component_appl_id
80552   , p_amb_context_code             => l_amb_context_code
80553   , p_side                         => 'NA'
80554   );
80555 
80556 
80557    --
80558    --
80559    END IF;
80560    --
80561    -- Bug 4922099
80562    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
80563           (NVL(l_enc_upg_option, 'N') = 'O')
80564         ) AND
80565         (l_bflow_method_code = 'PRIOR_ENTRY')
80566       )
80567    THEN
80568       IF
80569       --
80570       1 = 2
80571       --
80572       THEN
80573       xla_accounting_err_pkg.build_message
80574                                     (p_appli_s_name            => 'XLA'
80575                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
80576                                     ,p_token_1                 => 'LINE_NUMBER'
80577                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
80578                                     ,p_token_2                 => 'LINE_TYPE_NAME'
80579                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
80580                                                                              l_component_type
80581                                                                             ,l_component_code
80582                                                                             ,l_component_type_code
80583                                                                             ,l_component_appl_id
80584                                                                             ,l_amb_context_code
80585                                                                             ,l_entity_code
80586                                                                             ,l_event_class_code
80587                                                                            )
80588                                     ,p_token_3                 => 'OWNER'
80589                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
80590                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
80591                                                                           ,p_lookup_code    => l_component_type_code
80592                                                                          )
80593                                     ,p_token_4                 => 'PRODUCT_NAME'
80594                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
80595                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
80596                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
80597                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
80598                                     ,p_ae_header_id            =>  NULL
80599                                        );
80600 
80601         IF (C_LEVEL_ERROR>= g_log_level) THEN
80602                  trace
80603                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
80604                       ,p_level    => C_LEVEL_ERROR
80605                       ,p_module   => l_log_module);
80606         END IF;
80607       END IF;
80608    END IF;
80609    --
80610    --
80611    ------------------------------------------------------------------------------------------------
80612    -- 4219869 Business Flow
80613    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
80614    -- Prior Entry.  Currently, the following code is always generated.
80615    ------------------------------------------------------------------------------------------------
80616    XLA_AE_LINES_PKG.ValidateCurrentLine;
80617 
80618    ------------------------------------------------------------------------------------
80619    -- 4219869 Business Flow
80620    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
80621    ------------------------------------------------------------------------------------
80622    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
80623 
80624    ----------------------------------------------------------------------------------
80625    -- 4219869 Business Flow
80626    -- Update journal entry status -- Need to generate this within IF <condition>
80627    ----------------------------------------------------------------------------------
80628    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
80629          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
80630          ,p_balance_type_code => l_balance_type_code
80631          );
80632 
80633    -------------------------------------------------------------------------------------------
80634    -- 4262811 - Generate the Accrual Reversal lines
80635    -------------------------------------------------------------------------------------------
80636    BEGIN
80637       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
80638                               (g_array_event(p_event_id).array_value_num('header_index'));
80639       IF l_acc_rev_flag IS NULL THEN
80640          l_acc_rev_flag := 'N';
80641       END IF;
80642    EXCEPTION
80643       WHEN OTHERS THEN
80644          l_acc_rev_flag := 'N';
80645    END;
80646    --
80647    IF (l_acc_rev_flag = 'Y') THEN
80648 
80649        -- 4645092  ------------------------------------------------------------------------------
80650        -- To allow MPA report to determine if it should generate report process
80651        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
80652        ------------------------------------------------------------------------------------------
80653 
80654        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
80655        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
80656    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
80657    -- call ADRs
80658    -- Bug 4922099
80659    --
80660    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
80661         (NVL(l_actual_upg_option, 'N') = 'O') OR
80662         (NVL(l_enc_upg_option, 'N') = 'O')
80663       )
80664    THEN
80665    NULL;
80666    --
80667    --
80668    
80669   l_ccid := AcctDerRule_4(
80670            p_application_id           => p_application_id
80671          , p_ae_header_id             => l_ae_header_id 
80672 , p_source_4 => p_source_4
80673          , x_transaction_coa_id       => l_adr_transaction_coa_id
80674          , x_accounting_coa_id        => l_adr_accounting_coa_id
80675          , x_value_type_code          => l_adr_value_type_code
80676          , p_side                     => 'NA'
80677    );
80678 
80679    xla_ae_lines_pkg.set_ccid(
80680     p_code_combination_id          => l_ccid
80681   , p_value_type_code              => l_adr_value_type_code
80682   , p_transaction_coa_id           => l_adr_transaction_coa_id
80683   , p_accounting_coa_id            => l_adr_accounting_coa_id
80684   , p_adr_code                     => 'CST_DEFAULT'
80685   , p_adr_type_code                => 'S'
80686   , p_component_type               => l_component_type
80687   , p_component_code               => l_component_code
80688   , p_component_type_code          => l_component_type_code
80689   , p_component_appl_id            => l_component_appl_id
80690   , p_amb_context_code             => l_amb_context_code
80691   , p_side                         => 'NA'
80692   );
80693 
80694 
80695    --
80696    --
80697    END IF;
80698 
80699        --
80700        -- Update the line information that should be overwritten
80701        --
80702        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
80703                                          p_header_num   => 1);
80704        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
80705 
80706        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
80707 
80708        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
80709           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
80710        END IF;
80711 
80712       --
80713       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
80714       --
80715       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
80716           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
80717       ELSE
80718           ---------------------------------------------------------------------------------------------------
80719           -- 4262811a Switch Sign
80720           ---------------------------------------------------------------------------------------------------
80721           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
80722           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
80723                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
80724           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
80725                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
80726           -- 5132302
80727           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
80728                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
80729 
80730       END IF;
80731 
80732       -- 4955764
80733       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
80734       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
80735 
80736 
80737       XLA_AE_LINES_PKG.ValidateCurrentLine;
80738       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
80739 
80740       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
80741                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
80742                ,p_balance_type_code => l_balance_type_code);
80743 
80744    END IF;
80745 
80746    -----------------------------------------------------------------------------------------
80747    -- 4262811 Multiperiod Accounting
80748    -----------------------------------------------------------------------------------------
80749      -- No MPA option is assigned.
80750 
80751 
80752 END IF;
80753 END IF;
80754 --
80755 
80756 --
80757 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80758    trace
80759       (p_msg      => 'END of AcctLineType_147'
80760       ,p_level    => C_LEVEL_PROCEDURE
80761       ,p_module   => l_log_module);
80762 END IF;
80763 --
80764 EXCEPTION
80765   WHEN xla_exceptions_pkg.application_exception THEN
80766       RAISE;
80767   WHEN OTHERS THEN
80768        xla_exceptions_pkg.raise_message
80769            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_147');
80770 END AcctLineType_147;
80771 --
80772 
80773 ---------------------------------------
80774 --
80775 -- PRIVATE FUNCTION
80776 --         AcctLineType_148
80777 --
80778 ---------------------------------------
80779 PROCEDURE AcctLineType_148 (
80780   p_application_id        IN NUMBER
80781  ,p_event_id              IN NUMBER
80782  ,p_calculate_acctd_flag  IN VARCHAR2
80783  ,p_calculate_g_l_flag    IN VARCHAR2
80784  ,p_actual_flag           IN OUT VARCHAR2
80785  ,p_balance_type_code     OUT VARCHAR2
80786  ,p_gain_or_loss_ref      OUT VARCHAR2
80787  
80788 --Cost Management Default Account
80789  , p_source_4            IN NUMBER
80790 --Applied to Application ID
80791  , p_source_6            IN NUMBER
80792 --Applied to Distribution Link Type
80793  , p_source_7            IN VARCHAR2
80794 --Applied to Entity Code
80795  , p_source_8            IN VARCHAR2
80796 --DISTRIBUTION_IDENTIFIER
80797  , p_source_11            IN NUMBER
80798 --Distribution Type
80799  , p_source_12            IN VARCHAR2
80800  , p_source_12_meaning    IN VARCHAR2
80801 --Encumbrance Reversal Amount Entered
80802  , p_source_14            IN NUMBER
80803 --Entered Currency Code
80804  , p_source_15            IN VARCHAR2
80805 --Transaction Encumbrance Reversal Amount
80806  , p_source_16            IN NUMBER
80807 --Entered Amount
80808  , p_source_18            IN NUMBER
80809 --Currency Conversion Date
80810  , p_source_19            IN DATE
80811 --Currency Conversion Rate
80812  , p_source_20            IN NUMBER
80813 --Currency Conversion Type
80814  , p_source_21            IN VARCHAR2
80815 --Accounted Amount
80816  , p_source_22            IN NUMBER
80817 --Accounting Line Type
80818  , p_source_24            IN NUMBER
80819 --Costing Encumbrance Upgrade Option
80820  , p_source_27            IN VARCHAR2
80821 --TXN_PO_DISTRIBUTION_ID
80822  , p_source_28            IN NUMBER
80823 --TXN_PO_HEADER_ID
80824  , p_source_29            IN NUMBER
80825 --Requisition Budget Account
80826  , p_source_30            IN NUMBER
80827 --Requisition Encumbrance Type Identifier
80828  , p_source_31            IN NUMBER
80829 )
80830 IS
80831 
80832 l_component_type              VARCHAR2(80);
80833 l_component_code              VARCHAR2(30);
80834 l_component_type_code         VARCHAR2(1);
80835 l_component_appl_id           INTEGER;
80836 l_amb_context_code            VARCHAR2(30);
80837 l_entity_code                 VARCHAR2(30);
80838 l_event_class_code            VARCHAR2(30);
80839 l_ae_header_id                NUMBER;
80840 l_event_type_code             VARCHAR2(30);
80841 l_line_definition_code        VARCHAR2(30);
80842 l_line_definition_owner_code  VARCHAR2(1);
80843 --
80844 -- adr variables
80845 l_segment                     VARCHAR2(30);
80846 l_ccid                        NUMBER;
80847 l_adr_transaction_coa_id      NUMBER;
80848 l_adr_accounting_coa_id       NUMBER;
80849 l_adr_flexfield_segment_code  VARCHAR2(30);
80850 l_adr_flex_value_set_id       NUMBER;
80851 l_adr_value_type_code         VARCHAR2(30);
80852 l_adr_value_combination_id    NUMBER;
80853 l_adr_value_segment_code      VARCHAR2(30);
80854 
80855 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
80856 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
80857 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
80858 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
80859 
80860 -- 4262811 Variables ------------------------------------------------------------------------------------------
80861 l_entered_amt_idx             NUMBER;
80862 l_accted_amt_idx              NUMBER;
80863 l_acc_rev_flag                VARCHAR2(1);
80864 l_accrual_line_num            NUMBER;
80865 l_tmp_amt                     NUMBER;
80866 l_acc_rev_natural_side_code   VARCHAR2(1);
80867 
80868 l_num_entries                 NUMBER;
80869 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
80870 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
80871 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
80872 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
80873 l_recog_line_1                NUMBER;
80874 l_recog_line_2                NUMBER;
80875 
80876 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
80877 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
80878 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
80879 
80880 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
80881 
80882 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
80883 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
80884 
80885 ---------------------------------------------------------------------------------------------------------------
80886 
80887 
80888 --
80889 -- bulk performance
80890 --
80891 l_balance_type_code           VARCHAR2(1);
80892 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
80893 l_log_module                  VARCHAR2(240);
80894 
80895 --
80896 -- Upgrade strategy
80897 --
80898 l_actual_upg_option           VARCHAR2(1);
80899 l_enc_upg_option           VARCHAR2(1);
80900 
80901 --
80902 BEGIN
80903 --
80904 IF g_log_enabled THEN
80905       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_148';
80906 END IF;
80907 --
80908 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80909 
80910       trace
80911          (p_msg      => 'BEGIN of AcctLineType_148'
80912          ,p_level    => C_LEVEL_PROCEDURE
80913          ,p_module   => l_log_module);
80914 
80915 END IF;
80916 --
80917 l_component_type             := 'AMB_JLT';
80918 l_component_code             := 'INVENTORY_VALUATION';
80919 l_component_type_code        := 'S';
80920 l_component_appl_id          :=  707;
80921 l_amb_context_code           := 'DEFAULT';
80922 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
80923 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
80924 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
80925 l_line_definition_owner_code := 'S';
80926 l_line_definition_code       := 'FOB_RCPT_RECIPIENT_RCPT';
80927 --
80928 l_balance_type_code          := 'A';
80929 l_segment                     := NULL;
80930 l_ccid                        := NULL;
80931 l_adr_transaction_coa_id      := NULL;
80932 l_adr_accounting_coa_id       := NULL;
80933 l_adr_flexfield_segment_code  := NULL;
80934 l_adr_flex_value_set_id       := NULL;
80935 l_adr_value_type_code         := NULL;
80936 l_adr_value_combination_id    := NULL;
80937 l_adr_value_segment_code      := NULL;
80938 
80939 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
80940 l_bflow_class_code           := '';    -- 4219869 Business Flow
80941 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
80942 l_budgetary_control_flag     := 'N';
80943 
80944 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
80945 l_bflow_applied_to_amt       := NULL; -- 5132302
80946 l_entered_amt_idx            := NULL;          -- 4262811
80947 l_accted_amt_idx             := NULL;          -- 4262811
80948 l_acc_rev_flag               := NULL;          -- 4262811
80949 l_accrual_line_num           := NULL;          -- 4262811
80950 l_tmp_amt                    := NULL;          -- 4262811
80951 --
80952  
80953 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
80954     l_balance_type_code <> 'B' THEN
80955 IF NVL(p_source_24,9E125) =  1
80956  THEN 
80957 
80958    --
80959    XLA_AE_LINES_PKG.SetNewLine;
80960 
80961    p_balance_type_code          := l_balance_type_code;
80962    -- set the flag so later we will know whether the gain loss line needs to be created
80963    
80964    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
80965      p_actual_flag :='A';
80966    END IF;
80967 
80968    --
80969    -- bulk performance
80970    --
80971    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
80972                                       p_header_num   => 0); -- 4262811
80973    --
80974    -- set accounting line options
80975    --
80976    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
80977            p_natural_side_code          => 'D'
80978          , p_gain_or_loss_flag          => 'N'
80979          , p_gl_transfer_mode_code      => 'S'
80980          , p_acct_entry_type_code       => 'A'
80981          , p_switch_side_flag           => 'Y'
80982          , p_merge_duplicate_code       => 'N'
80983          );
80984    --
80985    l_acc_rev_natural_side_code := 'C';  -- 4262811
80986    -- 
80987    --
80988    -- set accounting line type info
80989    --
80990    xla_ae_lines_pkg.SetAcctLineType
80991       (p_component_type             => l_component_type
80992       ,p_event_type_code            => l_event_type_code
80993       ,p_line_definition_owner_code => l_line_definition_owner_code
80994       ,p_line_definition_code       => l_line_definition_code
80995       ,p_accounting_line_code       => l_component_code
80996       ,p_accounting_line_type_code  => l_component_type_code
80997       ,p_accounting_line_appl_id    => l_component_appl_id
80998       ,p_amb_context_code           => l_amb_context_code
80999       ,p_entity_code                => l_entity_code
81000       ,p_event_class_code           => l_event_class_code);
81001    --
81002    -- set accounting class
81003    --
81004    xla_ae_lines_pkg.SetAcctClass(
81005            p_accounting_class_code  => 'INVENTORY_VALUATION'
81006          , p_ae_header_id           => l_ae_header_id
81007          );
81008 
81009    --
81010    -- set rounding class
81011    --
81012    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
81013                       'INVENTORY_VALUATION';
81014 
81015    --
81016    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
81017    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
81018    --
81019    -- bulk performance
81020    --
81021    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
81022 
81023    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
81024       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
81025 
81026    -- 4955764
81027    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
81028       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
81029 
81030    -- 4458381 Public Sector Enh
81031    
81032    --
81033    -- set accounting attributes for the line type
81034    --
81035    l_entered_amt_idx := 17;
81036    l_accted_amt_idx  := 22;
81037    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
81038    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
81039    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
81040    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
81041    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
81042    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
81043    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
81044    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
81045    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
81046    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
81047    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
81048    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
81049    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
81050    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
81051    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
81052    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
81053    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
81054    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
81055    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
81056    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
81057    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
81058    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
81059    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
81060    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
81061    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
81062    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
81063    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
81064    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
81065    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
81066    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
81067    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
81068    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
81069    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
81070    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
81071    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
81072    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
81073    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
81074    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
81075    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
81076    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
81077    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
81078    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
81079    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
81080    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
81081    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
81082    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
81083    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
81084    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
81085    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
81086 
81087    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
81088    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
81089 
81090    ---------------------------------------------------------------------------------------------------------------
81091    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
81092    ---------------------------------------------------------------------------------------------------------------
81093    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
81094 
81095    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
81096    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
81097 
81098    IF xla_accounting_cache_pkg.GetValueChar
81099          (p_source_code         => 'LEDGER_CATEGORY_CODE'
81100          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
81101    AND l_bflow_method_code = 'PRIOR_ENTRY'
81102 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
81103    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
81104          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
81105        )
81106    THEN
81107          xla_ae_lines_pkg.BflowUpgEntry
81108            (p_business_method_code    => l_bflow_method_code
81109            ,p_business_class_code     => l_bflow_class_code
81110            ,p_balance_type            => l_balance_type_code);
81111    ELSE
81112       NULL;
81113 -- No business flow processing for business flow method of NONE.
81114    END IF;
81115 
81116    --
81117    -- call analytical criteria
81118    --
81119    
81120    --
81121    -- call description
81122    --
81123    -- No description or it is inherited.
81124    --
81125    -- call ADRs
81126    -- Bug 4922099
81127    --
81128    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
81129         (NVL(l_actual_upg_option, 'N') = 'O') OR
81130         (NVL(l_enc_upg_option, 'N') = 'O')
81131       )
81132    THEN
81133    NULL;
81134    --
81135    --
81136    
81137   l_ccid := AcctDerRule_4(
81138            p_application_id           => p_application_id
81139          , p_ae_header_id             => l_ae_header_id 
81140 , p_source_4 => p_source_4
81141          , x_transaction_coa_id       => l_adr_transaction_coa_id
81142          , x_accounting_coa_id        => l_adr_accounting_coa_id
81143          , x_value_type_code          => l_adr_value_type_code
81144          , p_side                     => 'NA'
81145    );
81146 
81147    xla_ae_lines_pkg.set_ccid(
81148     p_code_combination_id          => l_ccid
81149   , p_value_type_code              => l_adr_value_type_code
81150   , p_transaction_coa_id           => l_adr_transaction_coa_id
81151   , p_accounting_coa_id            => l_adr_accounting_coa_id
81152   , p_adr_code                     => 'CST_DEFAULT'
81153   , p_adr_type_code                => 'S'
81154   , p_component_type               => l_component_type
81155   , p_component_code               => l_component_code
81156   , p_component_type_code          => l_component_type_code
81157   , p_component_appl_id            => l_component_appl_id
81158   , p_amb_context_code             => l_amb_context_code
81159   , p_side                         => 'NA'
81160   );
81161 
81162 
81163    --
81164    --
81165    END IF;
81166    --
81167    -- Bug 4922099
81168    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
81169           (NVL(l_enc_upg_option, 'N') = 'O')
81170         ) AND
81171         (l_bflow_method_code = 'PRIOR_ENTRY')
81172       )
81173    THEN
81174       IF
81175       --
81176       1 = 2
81177       --
81178       THEN
81179       xla_accounting_err_pkg.build_message
81180                                     (p_appli_s_name            => 'XLA'
81181                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
81182                                     ,p_token_1                 => 'LINE_NUMBER'
81183                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
81184                                     ,p_token_2                 => 'LINE_TYPE_NAME'
81185                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
81186                                                                              l_component_type
81187                                                                             ,l_component_code
81188                                                                             ,l_component_type_code
81189                                                                             ,l_component_appl_id
81190                                                                             ,l_amb_context_code
81191                                                                             ,l_entity_code
81192                                                                             ,l_event_class_code
81193                                                                            )
81194                                     ,p_token_3                 => 'OWNER'
81195                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
81196                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
81197                                                                           ,p_lookup_code    => l_component_type_code
81198                                                                          )
81199                                     ,p_token_4                 => 'PRODUCT_NAME'
81200                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
81201                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
81202                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
81203                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
81204                                     ,p_ae_header_id            =>  NULL
81205                                        );
81206 
81207         IF (C_LEVEL_ERROR>= g_log_level) THEN
81208                  trace
81209                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
81210                       ,p_level    => C_LEVEL_ERROR
81211                       ,p_module   => l_log_module);
81212         END IF;
81213       END IF;
81214    END IF;
81215    --
81216    --
81217    ------------------------------------------------------------------------------------------------
81218    -- 4219869 Business Flow
81219    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
81220    -- Prior Entry.  Currently, the following code is always generated.
81221    ------------------------------------------------------------------------------------------------
81222    XLA_AE_LINES_PKG.ValidateCurrentLine;
81223 
81224    ------------------------------------------------------------------------------------
81225    -- 4219869 Business Flow
81226    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
81227    ------------------------------------------------------------------------------------
81228    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
81229 
81230    ----------------------------------------------------------------------------------
81231    -- 4219869 Business Flow
81232    -- Update journal entry status -- Need to generate this within IF <condition>
81233    ----------------------------------------------------------------------------------
81234    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
81235          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
81236          ,p_balance_type_code => l_balance_type_code
81237          );
81238 
81239    -------------------------------------------------------------------------------------------
81240    -- 4262811 - Generate the Accrual Reversal lines
81241    -------------------------------------------------------------------------------------------
81242    BEGIN
81243       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
81244                               (g_array_event(p_event_id).array_value_num('header_index'));
81245       IF l_acc_rev_flag IS NULL THEN
81246          l_acc_rev_flag := 'N';
81247       END IF;
81248    EXCEPTION
81249       WHEN OTHERS THEN
81250          l_acc_rev_flag := 'N';
81251    END;
81252    --
81253    IF (l_acc_rev_flag = 'Y') THEN
81254 
81255        -- 4645092  ------------------------------------------------------------------------------
81256        -- To allow MPA report to determine if it should generate report process
81257        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
81258        ------------------------------------------------------------------------------------------
81259 
81260        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
81261        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
81262    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
81263    -- call ADRs
81264    -- Bug 4922099
81265    --
81266    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
81267         (NVL(l_actual_upg_option, 'N') = 'O') OR
81268         (NVL(l_enc_upg_option, 'N') = 'O')
81269       )
81270    THEN
81271    NULL;
81272    --
81273    --
81274    
81275   l_ccid := AcctDerRule_4(
81276            p_application_id           => p_application_id
81277          , p_ae_header_id             => l_ae_header_id 
81278 , p_source_4 => p_source_4
81279          , x_transaction_coa_id       => l_adr_transaction_coa_id
81280          , x_accounting_coa_id        => l_adr_accounting_coa_id
81281          , x_value_type_code          => l_adr_value_type_code
81282          , p_side                     => 'NA'
81283    );
81284 
81285    xla_ae_lines_pkg.set_ccid(
81286     p_code_combination_id          => l_ccid
81287   , p_value_type_code              => l_adr_value_type_code
81288   , p_transaction_coa_id           => l_adr_transaction_coa_id
81289   , p_accounting_coa_id            => l_adr_accounting_coa_id
81290   , p_adr_code                     => 'CST_DEFAULT'
81291   , p_adr_type_code                => 'S'
81292   , p_component_type               => l_component_type
81293   , p_component_code               => l_component_code
81294   , p_component_type_code          => l_component_type_code
81295   , p_component_appl_id            => l_component_appl_id
81296   , p_amb_context_code             => l_amb_context_code
81297   , p_side                         => 'NA'
81298   );
81299 
81300 
81301    --
81302    --
81303    END IF;
81304 
81305        --
81306        -- Update the line information that should be overwritten
81307        --
81308        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
81309                                          p_header_num   => 1);
81310        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
81311 
81312        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
81313 
81314        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
81315           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
81316        END IF;
81317 
81318       --
81319       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
81320       --
81321       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
81322           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
81323       ELSE
81324           ---------------------------------------------------------------------------------------------------
81325           -- 4262811a Switch Sign
81326           ---------------------------------------------------------------------------------------------------
81327           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
81328           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
81329                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81330           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
81331                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81332           -- 5132302
81333           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
81334                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81335 
81336       END IF;
81337 
81338       -- 4955764
81339       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
81340       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
81341 
81342 
81343       XLA_AE_LINES_PKG.ValidateCurrentLine;
81344       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
81345 
81346       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
81347                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
81348                ,p_balance_type_code => l_balance_type_code);
81349 
81350    END IF;
81351 
81352    -----------------------------------------------------------------------------------------
81353    -- 4262811 Multiperiod Accounting
81354    -----------------------------------------------------------------------------------------
81355      -- No MPA option is assigned.
81356 
81357 
81358 END IF;
81359 END IF;
81360 --
81361 
81362 --
81363 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81364    trace
81365       (p_msg      => 'END of AcctLineType_148'
81366       ,p_level    => C_LEVEL_PROCEDURE
81367       ,p_module   => l_log_module);
81368 END IF;
81369 --
81370 EXCEPTION
81371   WHEN xla_exceptions_pkg.application_exception THEN
81372       RAISE;
81373   WHEN OTHERS THEN
81374        xla_exceptions_pkg.raise_message
81375            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_148');
81376 END AcctLineType_148;
81377 --
81378 
81379 ---------------------------------------
81380 --
81381 -- PRIVATE FUNCTION
81382 --         AcctLineType_149
81383 --
81384 ---------------------------------------
81385 PROCEDURE AcctLineType_149 (
81386   p_application_id        IN NUMBER
81387  ,p_event_id              IN NUMBER
81388  ,p_calculate_acctd_flag  IN VARCHAR2
81389  ,p_calculate_g_l_flag    IN VARCHAR2
81390  ,p_actual_flag           IN OUT VARCHAR2
81391  ,p_balance_type_code     OUT VARCHAR2
81392  ,p_gain_or_loss_ref      OUT VARCHAR2
81393  
81394 --Cost Management Default Account
81395  , p_source_4            IN NUMBER
81396 --DISTRIBUTION_IDENTIFIER
81397  , p_source_11            IN NUMBER
81398 --Distribution Type
81399  , p_source_12            IN VARCHAR2
81400  , p_source_12_meaning    IN VARCHAR2
81401 --Entered Currency Code
81402  , p_source_15            IN VARCHAR2
81403 --Entered Amount
81404  , p_source_18            IN NUMBER
81405 --Currency Conversion Date
81406  , p_source_19            IN DATE
81407 --Currency Conversion Rate
81408  , p_source_20            IN NUMBER
81409 --Currency Conversion Type
81410  , p_source_21            IN VARCHAR2
81411 --Accounted Amount
81412  , p_source_22            IN NUMBER
81413 --Accounting Line Type
81414  , p_source_24            IN NUMBER
81415 )
81416 IS
81417 
81418 l_component_type              VARCHAR2(80);
81419 l_component_code              VARCHAR2(30);
81420 l_component_type_code         VARCHAR2(1);
81421 l_component_appl_id           INTEGER;
81422 l_amb_context_code            VARCHAR2(30);
81423 l_entity_code                 VARCHAR2(30);
81424 l_event_class_code            VARCHAR2(30);
81425 l_ae_header_id                NUMBER;
81426 l_event_type_code             VARCHAR2(30);
81427 l_line_definition_code        VARCHAR2(30);
81428 l_line_definition_owner_code  VARCHAR2(1);
81429 --
81430 -- adr variables
81431 l_segment                     VARCHAR2(30);
81432 l_ccid                        NUMBER;
81433 l_adr_transaction_coa_id      NUMBER;
81434 l_adr_accounting_coa_id       NUMBER;
81435 l_adr_flexfield_segment_code  VARCHAR2(30);
81436 l_adr_flex_value_set_id       NUMBER;
81437 l_adr_value_type_code         VARCHAR2(30);
81438 l_adr_value_combination_id    NUMBER;
81439 l_adr_value_segment_code      VARCHAR2(30);
81440 
81441 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
81442 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
81443 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
81444 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
81445 
81446 -- 4262811 Variables ------------------------------------------------------------------------------------------
81447 l_entered_amt_idx             NUMBER;
81448 l_accted_amt_idx              NUMBER;
81449 l_acc_rev_flag                VARCHAR2(1);
81450 l_accrual_line_num            NUMBER;
81451 l_tmp_amt                     NUMBER;
81452 l_acc_rev_natural_side_code   VARCHAR2(1);
81453 
81454 l_num_entries                 NUMBER;
81455 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
81456 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
81457 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
81458 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
81459 l_recog_line_1                NUMBER;
81460 l_recog_line_2                NUMBER;
81461 
81462 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
81463 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
81464 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
81465 
81466 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
81467 
81468 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
81469 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
81470 
81471 ---------------------------------------------------------------------------------------------------------------
81472 
81473 
81474 --
81475 -- bulk performance
81476 --
81477 l_balance_type_code           VARCHAR2(1);
81478 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
81479 l_log_module                  VARCHAR2(240);
81480 
81481 --
81482 -- Upgrade strategy
81483 --
81484 l_actual_upg_option           VARCHAR2(1);
81485 l_enc_upg_option           VARCHAR2(1);
81486 
81487 --
81488 BEGIN
81489 --
81490 IF g_log_enabled THEN
81491       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_149';
81492 END IF;
81493 --
81494 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81495 
81496       trace
81497          (p_msg      => 'BEGIN of AcctLineType_149'
81498          ,p_level    => C_LEVEL_PROCEDURE
81499          ,p_module   => l_log_module);
81500 
81501 END IF;
81502 --
81503 l_component_type             := 'AMB_JLT';
81504 l_component_code             := 'INVENTORY_VALUATION';
81505 l_component_type_code        := 'S';
81506 l_component_appl_id          :=  707;
81507 l_amb_context_code           := 'DEFAULT';
81508 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
81509 l_event_class_code           := 'FOB_RCPT_SENDER_SHIP';
81510 l_event_type_code            := 'FOB_RCPT_SENDER_SHIP_ALL';
81511 l_line_definition_owner_code := 'S';
81512 l_line_definition_code       := 'FOB_RCPT_SEND_SHIP';
81513 --
81514 l_balance_type_code          := 'A';
81515 l_segment                     := NULL;
81516 l_ccid                        := NULL;
81517 l_adr_transaction_coa_id      := NULL;
81518 l_adr_accounting_coa_id       := NULL;
81519 l_adr_flexfield_segment_code  := NULL;
81520 l_adr_flex_value_set_id       := NULL;
81521 l_adr_value_type_code         := NULL;
81522 l_adr_value_combination_id    := NULL;
81523 l_adr_value_segment_code      := NULL;
81524 
81525 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
81526 l_bflow_class_code           := '';    -- 4219869 Business Flow
81527 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
81528 l_budgetary_control_flag     := 'N';
81529 
81530 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
81531 l_bflow_applied_to_amt       := NULL; -- 5132302
81532 l_entered_amt_idx            := NULL;          -- 4262811
81533 l_accted_amt_idx             := NULL;          -- 4262811
81534 l_acc_rev_flag               := NULL;          -- 4262811
81535 l_accrual_line_num           := NULL;          -- 4262811
81536 l_tmp_amt                    := NULL;          -- 4262811
81537 --
81538  
81539 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
81540     l_balance_type_code <> 'B' THEN
81541 IF NVL(p_source_24,9E125) =  1
81542  THEN 
81543 
81544    --
81545    XLA_AE_LINES_PKG.SetNewLine;
81546 
81547    p_balance_type_code          := l_balance_type_code;
81548    -- set the flag so later we will know whether the gain loss line needs to be created
81549    
81550    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
81551      p_actual_flag :='A';
81552    END IF;
81553 
81554    --
81555    -- bulk performance
81556    --
81557    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
81558                                       p_header_num   => 0); -- 4262811
81559    --
81560    -- set accounting line options
81561    --
81562    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
81563            p_natural_side_code          => 'D'
81564          , p_gain_or_loss_flag          => 'N'
81565          , p_gl_transfer_mode_code      => 'S'
81566          , p_acct_entry_type_code       => 'A'
81567          , p_switch_side_flag           => 'Y'
81568          , p_merge_duplicate_code       => 'N'
81569          );
81570    --
81571    l_acc_rev_natural_side_code := 'C';  -- 4262811
81572    -- 
81573    --
81574    -- set accounting line type info
81575    --
81576    xla_ae_lines_pkg.SetAcctLineType
81577       (p_component_type             => l_component_type
81578       ,p_event_type_code            => l_event_type_code
81579       ,p_line_definition_owner_code => l_line_definition_owner_code
81580       ,p_line_definition_code       => l_line_definition_code
81581       ,p_accounting_line_code       => l_component_code
81582       ,p_accounting_line_type_code  => l_component_type_code
81583       ,p_accounting_line_appl_id    => l_component_appl_id
81584       ,p_amb_context_code           => l_amb_context_code
81585       ,p_entity_code                => l_entity_code
81586       ,p_event_class_code           => l_event_class_code);
81587    --
81588    -- set accounting class
81589    --
81590    xla_ae_lines_pkg.SetAcctClass(
81591            p_accounting_class_code  => 'INVENTORY_VALUATION'
81592          , p_ae_header_id           => l_ae_header_id
81593          );
81594 
81595    --
81596    -- set rounding class
81597    --
81598    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
81599                       'INVENTORY_VALUATION';
81600 
81601    --
81602    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
81603    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
81604    --
81605    -- bulk performance
81606    --
81607    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
81608 
81609    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
81610       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
81611 
81612    -- 4955764
81613    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
81614       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
81615 
81616    -- 4458381 Public Sector Enh
81617    
81618    --
81619    -- set accounting attributes for the line type
81620    --
81621    l_entered_amt_idx := 3;
81622    l_accted_amt_idx  := 8;
81623    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
81624    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
81625    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
81626    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
81627    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
81628    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
81629    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
81630    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
81631    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
81632    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
81633    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
81634    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
81635    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
81636    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
81637    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
81638    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
81639    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
81640 
81641    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
81642    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
81643 
81644    ---------------------------------------------------------------------------------------------------------------
81645    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
81646    ---------------------------------------------------------------------------------------------------------------
81647    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
81648 
81649    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
81650    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
81651 
81652    IF xla_accounting_cache_pkg.GetValueChar
81653          (p_source_code         => 'LEDGER_CATEGORY_CODE'
81654          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
81655    AND l_bflow_method_code = 'PRIOR_ENTRY'
81656 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
81657    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
81658          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
81659        )
81660    THEN
81661          xla_ae_lines_pkg.BflowUpgEntry
81662            (p_business_method_code    => l_bflow_method_code
81663            ,p_business_class_code     => l_bflow_class_code
81664            ,p_balance_type            => l_balance_type_code);
81665    ELSE
81666       NULL;
81667 -- No business flow processing for business flow method of NONE.
81668    END IF;
81669 
81670    --
81671    -- call analytical criteria
81672    --
81673    
81674    --
81675    -- call description
81676    --
81677    -- No description or it is inherited.
81678    --
81679    -- call ADRs
81680    -- Bug 4922099
81681    --
81682    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
81683         (NVL(l_actual_upg_option, 'N') = 'O') OR
81684         (NVL(l_enc_upg_option, 'N') = 'O')
81685       )
81686    THEN
81687    NULL;
81688    --
81689    --
81690    
81691   l_ccid := AcctDerRule_4(
81692            p_application_id           => p_application_id
81693          , p_ae_header_id             => l_ae_header_id 
81694 , p_source_4 => p_source_4
81695          , x_transaction_coa_id       => l_adr_transaction_coa_id
81696          , x_accounting_coa_id        => l_adr_accounting_coa_id
81697          , x_value_type_code          => l_adr_value_type_code
81698          , p_side                     => 'NA'
81699    );
81700 
81701    xla_ae_lines_pkg.set_ccid(
81702     p_code_combination_id          => l_ccid
81703   , p_value_type_code              => l_adr_value_type_code
81704   , p_transaction_coa_id           => l_adr_transaction_coa_id
81705   , p_accounting_coa_id            => l_adr_accounting_coa_id
81706   , p_adr_code                     => 'CST_DEFAULT'
81707   , p_adr_type_code                => 'S'
81708   , p_component_type               => l_component_type
81709   , p_component_code               => l_component_code
81710   , p_component_type_code          => l_component_type_code
81711   , p_component_appl_id            => l_component_appl_id
81712   , p_amb_context_code             => l_amb_context_code
81713   , p_side                         => 'NA'
81714   );
81715 
81716 
81717    --
81718    --
81719    END IF;
81720    --
81721    -- Bug 4922099
81722    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
81723           (NVL(l_enc_upg_option, 'N') = 'O')
81724         ) AND
81725         (l_bflow_method_code = 'PRIOR_ENTRY')
81726       )
81727    THEN
81728       IF
81729       --
81730       1 = 2
81731       --
81732       THEN
81733       xla_accounting_err_pkg.build_message
81734                                     (p_appli_s_name            => 'XLA'
81735                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
81736                                     ,p_token_1                 => 'LINE_NUMBER'
81737                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
81738                                     ,p_token_2                 => 'LINE_TYPE_NAME'
81739                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
81740                                                                              l_component_type
81741                                                                             ,l_component_code
81742                                                                             ,l_component_type_code
81743                                                                             ,l_component_appl_id
81744                                                                             ,l_amb_context_code
81745                                                                             ,l_entity_code
81746                                                                             ,l_event_class_code
81747                                                                            )
81748                                     ,p_token_3                 => 'OWNER'
81749                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
81750                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
81751                                                                           ,p_lookup_code    => l_component_type_code
81752                                                                          )
81753                                     ,p_token_4                 => 'PRODUCT_NAME'
81754                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
81755                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
81756                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
81757                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
81758                                     ,p_ae_header_id            =>  NULL
81759                                        );
81760 
81761         IF (C_LEVEL_ERROR>= g_log_level) THEN
81762                  trace
81763                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
81764                       ,p_level    => C_LEVEL_ERROR
81765                       ,p_module   => l_log_module);
81766         END IF;
81767       END IF;
81768    END IF;
81769    --
81770    --
81771    ------------------------------------------------------------------------------------------------
81772    -- 4219869 Business Flow
81773    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
81774    -- Prior Entry.  Currently, the following code is always generated.
81775    ------------------------------------------------------------------------------------------------
81776    XLA_AE_LINES_PKG.ValidateCurrentLine;
81777 
81778    ------------------------------------------------------------------------------------
81779    -- 4219869 Business Flow
81780    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
81781    ------------------------------------------------------------------------------------
81782    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
81783 
81784    ----------------------------------------------------------------------------------
81785    -- 4219869 Business Flow
81786    -- Update journal entry status -- Need to generate this within IF <condition>
81787    ----------------------------------------------------------------------------------
81788    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
81789          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
81790          ,p_balance_type_code => l_balance_type_code
81791          );
81792 
81793    -------------------------------------------------------------------------------------------
81794    -- 4262811 - Generate the Accrual Reversal lines
81795    -------------------------------------------------------------------------------------------
81796    BEGIN
81797       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
81798                               (g_array_event(p_event_id).array_value_num('header_index'));
81799       IF l_acc_rev_flag IS NULL THEN
81800          l_acc_rev_flag := 'N';
81801       END IF;
81802    EXCEPTION
81803       WHEN OTHERS THEN
81804          l_acc_rev_flag := 'N';
81805    END;
81806    --
81807    IF (l_acc_rev_flag = 'Y') THEN
81808 
81809        -- 4645092  ------------------------------------------------------------------------------
81810        -- To allow MPA report to determine if it should generate report process
81811        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
81812        ------------------------------------------------------------------------------------------
81813 
81814        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
81815        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
81816    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
81817    -- call ADRs
81818    -- Bug 4922099
81819    --
81820    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
81821         (NVL(l_actual_upg_option, 'N') = 'O') OR
81822         (NVL(l_enc_upg_option, 'N') = 'O')
81823       )
81824    THEN
81825    NULL;
81826    --
81827    --
81828    
81829   l_ccid := AcctDerRule_4(
81830            p_application_id           => p_application_id
81831          , p_ae_header_id             => l_ae_header_id 
81832 , p_source_4 => p_source_4
81833          , x_transaction_coa_id       => l_adr_transaction_coa_id
81834          , x_accounting_coa_id        => l_adr_accounting_coa_id
81835          , x_value_type_code          => l_adr_value_type_code
81836          , p_side                     => 'NA'
81837    );
81838 
81839    xla_ae_lines_pkg.set_ccid(
81840     p_code_combination_id          => l_ccid
81841   , p_value_type_code              => l_adr_value_type_code
81842   , p_transaction_coa_id           => l_adr_transaction_coa_id
81843   , p_accounting_coa_id            => l_adr_accounting_coa_id
81844   , p_adr_code                     => 'CST_DEFAULT'
81845   , p_adr_type_code                => 'S'
81846   , p_component_type               => l_component_type
81847   , p_component_code               => l_component_code
81848   , p_component_type_code          => l_component_type_code
81849   , p_component_appl_id            => l_component_appl_id
81850   , p_amb_context_code             => l_amb_context_code
81851   , p_side                         => 'NA'
81852   );
81853 
81854 
81855    --
81856    --
81857    END IF;
81858 
81859        --
81860        -- Update the line information that should be overwritten
81861        --
81862        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
81863                                          p_header_num   => 1);
81864        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
81865 
81866        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
81867 
81868        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
81869           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
81870        END IF;
81871 
81872       --
81873       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
81874       --
81875       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
81876           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
81877       ELSE
81878           ---------------------------------------------------------------------------------------------------
81879           -- 4262811a Switch Sign
81880           ---------------------------------------------------------------------------------------------------
81881           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
81882           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
81883                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81884           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
81885                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81886           -- 5132302
81887           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
81888                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81889 
81890       END IF;
81891 
81892       -- 4955764
81893       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
81894       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
81895 
81896 
81897       XLA_AE_LINES_PKG.ValidateCurrentLine;
81898       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
81899 
81900       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
81901                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
81902                ,p_balance_type_code => l_balance_type_code);
81903 
81904    END IF;
81905 
81906    -----------------------------------------------------------------------------------------
81907    -- 4262811 Multiperiod Accounting
81908    -----------------------------------------------------------------------------------------
81909      -- No MPA option is assigned.
81910 
81911 
81912 END IF;
81913 END IF;
81914 --
81915 
81916 --
81917 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81918    trace
81919       (p_msg      => 'END of AcctLineType_149'
81920       ,p_level    => C_LEVEL_PROCEDURE
81921       ,p_module   => l_log_module);
81922 END IF;
81923 --
81924 EXCEPTION
81925   WHEN xla_exceptions_pkg.application_exception THEN
81926       RAISE;
81927   WHEN OTHERS THEN
81928        xla_exceptions_pkg.raise_message
81929            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_149');
81930 END AcctLineType_149;
81931 --
81932 
81933 ---------------------------------------
81934 --
81935 -- PRIVATE FUNCTION
81936 --         AcctLineType_150
81937 --
81938 ---------------------------------------
81939 PROCEDURE AcctLineType_150 (
81940   p_application_id        IN NUMBER
81941  ,p_event_id              IN NUMBER
81942  ,p_calculate_acctd_flag  IN VARCHAR2
81943  ,p_calculate_g_l_flag    IN VARCHAR2
81944  ,p_actual_flag           IN OUT VARCHAR2
81945  ,p_balance_type_code     OUT VARCHAR2
81946  ,p_gain_or_loss_ref      OUT VARCHAR2
81947  
81948 --Cost Management Default Account
81949  , p_source_4            IN NUMBER
81950 --DISTRIBUTION_IDENTIFIER
81951  , p_source_11            IN NUMBER
81952 --Distribution Type
81953  , p_source_12            IN VARCHAR2
81954  , p_source_12_meaning    IN VARCHAR2
81955 --Entered Currency Code
81956  , p_source_15            IN VARCHAR2
81957 --Entered Amount
81958  , p_source_18            IN NUMBER
81959 --Currency Conversion Date
81960  , p_source_19            IN DATE
81961 --Currency Conversion Rate
81962  , p_source_20            IN NUMBER
81963 --Currency Conversion Type
81964  , p_source_21            IN VARCHAR2
81965 --Accounted Amount
81966  , p_source_22            IN NUMBER
81967 --Accounting Line Type
81968  , p_source_24            IN NUMBER
81969 )
81970 IS
81971 
81972 l_component_type              VARCHAR2(80);
81973 l_component_code              VARCHAR2(30);
81974 l_component_type_code         VARCHAR2(1);
81975 l_component_appl_id           INTEGER;
81976 l_amb_context_code            VARCHAR2(30);
81977 l_entity_code                 VARCHAR2(30);
81978 l_event_class_code            VARCHAR2(30);
81979 l_ae_header_id                NUMBER;
81980 l_event_type_code             VARCHAR2(30);
81981 l_line_definition_code        VARCHAR2(30);
81982 l_line_definition_owner_code  VARCHAR2(1);
81983 --
81984 -- adr variables
81985 l_segment                     VARCHAR2(30);
81986 l_ccid                        NUMBER;
81987 l_adr_transaction_coa_id      NUMBER;
81988 l_adr_accounting_coa_id       NUMBER;
81989 l_adr_flexfield_segment_code  VARCHAR2(30);
81990 l_adr_flex_value_set_id       NUMBER;
81991 l_adr_value_type_code         VARCHAR2(30);
81992 l_adr_value_combination_id    NUMBER;
81993 l_adr_value_segment_code      VARCHAR2(30);
81994 
81995 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
81996 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
81997 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
81998 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
81999 
82000 -- 4262811 Variables ------------------------------------------------------------------------------------------
82001 l_entered_amt_idx             NUMBER;
82002 l_accted_amt_idx              NUMBER;
82003 l_acc_rev_flag                VARCHAR2(1);
82004 l_accrual_line_num            NUMBER;
82005 l_tmp_amt                     NUMBER;
82006 l_acc_rev_natural_side_code   VARCHAR2(1);
82007 
82008 l_num_entries                 NUMBER;
82009 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
82010 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
82011 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
82012 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
82013 l_recog_line_1                NUMBER;
82014 l_recog_line_2                NUMBER;
82015 
82016 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
82017 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
82018 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
82019 
82020 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
82021 
82022 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
82023 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
82024 
82025 ---------------------------------------------------------------------------------------------------------------
82026 
82027 
82028 --
82029 -- bulk performance
82030 --
82031 l_balance_type_code           VARCHAR2(1);
82032 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
82033 l_log_module                  VARCHAR2(240);
82034 
82035 --
82036 -- Upgrade strategy
82037 --
82038 l_actual_upg_option           VARCHAR2(1);
82039 l_enc_upg_option           VARCHAR2(1);
82040 
82041 --
82042 BEGIN
82043 --
82044 IF g_log_enabled THEN
82045       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_150';
82046 END IF;
82047 --
82048 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82049 
82050       trace
82051          (p_msg      => 'BEGIN of AcctLineType_150'
82052          ,p_level    => C_LEVEL_PROCEDURE
82053          ,p_module   => l_log_module);
82054 
82055 END IF;
82056 --
82057 l_component_type             := 'AMB_JLT';
82058 l_component_code             := 'INVENTORY_VALUATION';
82059 l_component_type_code        := 'S';
82060 l_component_appl_id          :=  707;
82061 l_amb_context_code           := 'DEFAULT';
82062 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
82063 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
82064 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_ALL';
82065 l_line_definition_owner_code := 'S';
82066 l_line_definition_code       := 'FOB_SHIP_SENDER_SHIP';
82067 --
82068 l_balance_type_code          := 'A';
82069 l_segment                     := NULL;
82070 l_ccid                        := NULL;
82071 l_adr_transaction_coa_id      := NULL;
82072 l_adr_accounting_coa_id       := NULL;
82073 l_adr_flexfield_segment_code  := NULL;
82074 l_adr_flex_value_set_id       := NULL;
82075 l_adr_value_type_code         := NULL;
82076 l_adr_value_combination_id    := NULL;
82077 l_adr_value_segment_code      := NULL;
82078 
82079 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
82080 l_bflow_class_code           := '';    -- 4219869 Business Flow
82081 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
82082 l_budgetary_control_flag     := 'N';
82083 
82084 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
82085 l_bflow_applied_to_amt       := NULL; -- 5132302
82086 l_entered_amt_idx            := NULL;          -- 4262811
82087 l_accted_amt_idx             := NULL;          -- 4262811
82088 l_acc_rev_flag               := NULL;          -- 4262811
82089 l_accrual_line_num           := NULL;          -- 4262811
82090 l_tmp_amt                    := NULL;          -- 4262811
82091 --
82092  
82093 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
82094     l_balance_type_code <> 'B' THEN
82095 IF NVL(p_source_24,9E125) =  1
82096  THEN 
82097 
82098    --
82099    XLA_AE_LINES_PKG.SetNewLine;
82100 
82101    p_balance_type_code          := l_balance_type_code;
82102    -- set the flag so later we will know whether the gain loss line needs to be created
82103    
82104    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
82105      p_actual_flag :='A';
82106    END IF;
82107 
82108    --
82109    -- bulk performance
82110    --
82111    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
82112                                       p_header_num   => 0); -- 4262811
82113    --
82114    -- set accounting line options
82115    --
82116    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
82117            p_natural_side_code          => 'D'
82118          , p_gain_or_loss_flag          => 'N'
82119          , p_gl_transfer_mode_code      => 'S'
82120          , p_acct_entry_type_code       => 'A'
82121          , p_switch_side_flag           => 'Y'
82122          , p_merge_duplicate_code       => 'N'
82123          );
82124    --
82125    l_acc_rev_natural_side_code := 'C';  -- 4262811
82126    -- 
82127    --
82128    -- set accounting line type info
82129    --
82130    xla_ae_lines_pkg.SetAcctLineType
82131       (p_component_type             => l_component_type
82132       ,p_event_type_code            => l_event_type_code
82133       ,p_line_definition_owner_code => l_line_definition_owner_code
82134       ,p_line_definition_code       => l_line_definition_code
82135       ,p_accounting_line_code       => l_component_code
82136       ,p_accounting_line_type_code  => l_component_type_code
82137       ,p_accounting_line_appl_id    => l_component_appl_id
82138       ,p_amb_context_code           => l_amb_context_code
82139       ,p_entity_code                => l_entity_code
82140       ,p_event_class_code           => l_event_class_code);
82141    --
82142    -- set accounting class
82143    --
82144    xla_ae_lines_pkg.SetAcctClass(
82145            p_accounting_class_code  => 'INVENTORY_VALUATION'
82146          , p_ae_header_id           => l_ae_header_id
82147          );
82148 
82149    --
82150    -- set rounding class
82151    --
82152    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
82153                       'INVENTORY_VALUATION';
82154 
82155    --
82156    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
82157    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
82158    --
82159    -- bulk performance
82160    --
82161    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
82162 
82163    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
82164       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
82165 
82166    -- 4955764
82167    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
82168       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
82169 
82170    -- 4458381 Public Sector Enh
82171    
82172    --
82173    -- set accounting attributes for the line type
82174    --
82175    l_entered_amt_idx := 3;
82176    l_accted_amt_idx  := 8;
82177    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
82178    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
82179    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
82180    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
82181    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
82182    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
82183    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
82184    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
82185    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
82186    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
82187    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
82188    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
82189    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
82190    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
82191    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
82192    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
82193    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
82194 
82195    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
82196    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
82197 
82198    ---------------------------------------------------------------------------------------------------------------
82199    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
82200    ---------------------------------------------------------------------------------------------------------------
82201    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
82202 
82203    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
82204    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
82205 
82206    IF xla_accounting_cache_pkg.GetValueChar
82207          (p_source_code         => 'LEDGER_CATEGORY_CODE'
82208          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
82209    AND l_bflow_method_code = 'PRIOR_ENTRY'
82210 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
82211    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
82212          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
82213        )
82214    THEN
82215          xla_ae_lines_pkg.BflowUpgEntry
82216            (p_business_method_code    => l_bflow_method_code
82217            ,p_business_class_code     => l_bflow_class_code
82218            ,p_balance_type            => l_balance_type_code);
82219    ELSE
82220       NULL;
82221 -- No business flow processing for business flow method of NONE.
82222    END IF;
82223 
82224    --
82225    -- call analytical criteria
82226    --
82227    
82228    --
82229    -- call description
82230    --
82231    -- No description or it is inherited.
82232    --
82233    -- call ADRs
82234    -- Bug 4922099
82235    --
82236    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
82237         (NVL(l_actual_upg_option, 'N') = 'O') OR
82238         (NVL(l_enc_upg_option, 'N') = 'O')
82239       )
82240    THEN
82241    NULL;
82242    --
82243    --
82244    
82245   l_ccid := AcctDerRule_4(
82246            p_application_id           => p_application_id
82247          , p_ae_header_id             => l_ae_header_id 
82248 , p_source_4 => p_source_4
82249          , x_transaction_coa_id       => l_adr_transaction_coa_id
82250          , x_accounting_coa_id        => l_adr_accounting_coa_id
82251          , x_value_type_code          => l_adr_value_type_code
82252          , p_side                     => 'NA'
82253    );
82254 
82255    xla_ae_lines_pkg.set_ccid(
82256     p_code_combination_id          => l_ccid
82257   , p_value_type_code              => l_adr_value_type_code
82258   , p_transaction_coa_id           => l_adr_transaction_coa_id
82259   , p_accounting_coa_id            => l_adr_accounting_coa_id
82260   , p_adr_code                     => 'CST_DEFAULT'
82261   , p_adr_type_code                => 'S'
82262   , p_component_type               => l_component_type
82263   , p_component_code               => l_component_code
82264   , p_component_type_code          => l_component_type_code
82265   , p_component_appl_id            => l_component_appl_id
82266   , p_amb_context_code             => l_amb_context_code
82267   , p_side                         => 'NA'
82268   );
82269 
82270 
82271    --
82272    --
82273    END IF;
82274    --
82275    -- Bug 4922099
82276    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
82277           (NVL(l_enc_upg_option, 'N') = 'O')
82278         ) AND
82279         (l_bflow_method_code = 'PRIOR_ENTRY')
82280       )
82281    THEN
82282       IF
82283       --
82284       1 = 2
82285       --
82286       THEN
82287       xla_accounting_err_pkg.build_message
82288                                     (p_appli_s_name            => 'XLA'
82289                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
82290                                     ,p_token_1                 => 'LINE_NUMBER'
82291                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
82292                                     ,p_token_2                 => 'LINE_TYPE_NAME'
82293                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
82294                                                                              l_component_type
82295                                                                             ,l_component_code
82296                                                                             ,l_component_type_code
82297                                                                             ,l_component_appl_id
82298                                                                             ,l_amb_context_code
82299                                                                             ,l_entity_code
82300                                                                             ,l_event_class_code
82301                                                                            )
82302                                     ,p_token_3                 => 'OWNER'
82303                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
82304                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
82305                                                                           ,p_lookup_code    => l_component_type_code
82306                                                                          )
82307                                     ,p_token_4                 => 'PRODUCT_NAME'
82308                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
82309                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
82310                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
82311                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
82312                                     ,p_ae_header_id            =>  NULL
82313                                        );
82314 
82315         IF (C_LEVEL_ERROR>= g_log_level) THEN
82316                  trace
82317                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
82318                       ,p_level    => C_LEVEL_ERROR
82319                       ,p_module   => l_log_module);
82320         END IF;
82321       END IF;
82322    END IF;
82323    --
82324    --
82325    ------------------------------------------------------------------------------------------------
82326    -- 4219869 Business Flow
82327    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
82328    -- Prior Entry.  Currently, the following code is always generated.
82329    ------------------------------------------------------------------------------------------------
82330    XLA_AE_LINES_PKG.ValidateCurrentLine;
82331 
82332    ------------------------------------------------------------------------------------
82333    -- 4219869 Business Flow
82334    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
82335    ------------------------------------------------------------------------------------
82336    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
82337 
82338    ----------------------------------------------------------------------------------
82339    -- 4219869 Business Flow
82340    -- Update journal entry status -- Need to generate this within IF <condition>
82341    ----------------------------------------------------------------------------------
82342    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
82343          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
82344          ,p_balance_type_code => l_balance_type_code
82345          );
82346 
82347    -------------------------------------------------------------------------------------------
82348    -- 4262811 - Generate the Accrual Reversal lines
82349    -------------------------------------------------------------------------------------------
82350    BEGIN
82351       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
82352                               (g_array_event(p_event_id).array_value_num('header_index'));
82353       IF l_acc_rev_flag IS NULL THEN
82354          l_acc_rev_flag := 'N';
82355       END IF;
82356    EXCEPTION
82357       WHEN OTHERS THEN
82358          l_acc_rev_flag := 'N';
82359    END;
82360    --
82361    IF (l_acc_rev_flag = 'Y') THEN
82362 
82363        -- 4645092  ------------------------------------------------------------------------------
82364        -- To allow MPA report to determine if it should generate report process
82365        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
82366        ------------------------------------------------------------------------------------------
82367 
82368        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
82369        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
82370    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
82371    -- call ADRs
82372    -- Bug 4922099
82373    --
82374    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
82375         (NVL(l_actual_upg_option, 'N') = 'O') OR
82376         (NVL(l_enc_upg_option, 'N') = 'O')
82377       )
82378    THEN
82379    NULL;
82380    --
82381    --
82382    
82383   l_ccid := AcctDerRule_4(
82384            p_application_id           => p_application_id
82385          , p_ae_header_id             => l_ae_header_id 
82386 , p_source_4 => p_source_4
82387          , x_transaction_coa_id       => l_adr_transaction_coa_id
82388          , x_accounting_coa_id        => l_adr_accounting_coa_id
82389          , x_value_type_code          => l_adr_value_type_code
82390          , p_side                     => 'NA'
82391    );
82392 
82393    xla_ae_lines_pkg.set_ccid(
82394     p_code_combination_id          => l_ccid
82395   , p_value_type_code              => l_adr_value_type_code
82396   , p_transaction_coa_id           => l_adr_transaction_coa_id
82397   , p_accounting_coa_id            => l_adr_accounting_coa_id
82398   , p_adr_code                     => 'CST_DEFAULT'
82399   , p_adr_type_code                => 'S'
82400   , p_component_type               => l_component_type
82401   , p_component_code               => l_component_code
82402   , p_component_type_code          => l_component_type_code
82403   , p_component_appl_id            => l_component_appl_id
82404   , p_amb_context_code             => l_amb_context_code
82405   , p_side                         => 'NA'
82406   );
82407 
82408 
82409    --
82410    --
82411    END IF;
82412 
82413        --
82414        -- Update the line information that should be overwritten
82415        --
82416        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
82417                                          p_header_num   => 1);
82418        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
82419 
82420        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
82421 
82422        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
82423           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
82424        END IF;
82425 
82426       --
82427       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
82428       --
82429       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
82430           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
82431       ELSE
82432           ---------------------------------------------------------------------------------------------------
82433           -- 4262811a Switch Sign
82434           ---------------------------------------------------------------------------------------------------
82435           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
82436           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
82437                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82438           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
82439                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82440           -- 5132302
82441           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
82442                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82443 
82444       END IF;
82445 
82446       -- 4955764
82447       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
82448       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
82449 
82450 
82451       XLA_AE_LINES_PKG.ValidateCurrentLine;
82452       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
82453 
82454       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
82455                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
82456                ,p_balance_type_code => l_balance_type_code);
82457 
82458    END IF;
82459 
82460    -----------------------------------------------------------------------------------------
82461    -- 4262811 Multiperiod Accounting
82462    -----------------------------------------------------------------------------------------
82463      -- No MPA option is assigned.
82464 
82465 
82466 END IF;
82467 END IF;
82468 --
82469 
82470 --
82471 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82472    trace
82473       (p_msg      => 'END of AcctLineType_150'
82474       ,p_level    => C_LEVEL_PROCEDURE
82475       ,p_module   => l_log_module);
82476 END IF;
82477 --
82478 EXCEPTION
82479   WHEN xla_exceptions_pkg.application_exception THEN
82480       RAISE;
82481   WHEN OTHERS THEN
82482        xla_exceptions_pkg.raise_message
82483            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_150');
82484 END AcctLineType_150;
82485 --
82486 
82487 ---------------------------------------
82488 --
82489 -- PRIVATE FUNCTION
82490 --         AcctLineType_151
82491 --
82492 ---------------------------------------
82493 PROCEDURE AcctLineType_151 (
82494   p_application_id        IN NUMBER
82495  ,p_event_id              IN NUMBER
82496  ,p_calculate_acctd_flag  IN VARCHAR2
82497  ,p_calculate_g_l_flag    IN VARCHAR2
82498  ,p_actual_flag           IN OUT VARCHAR2
82499  ,p_balance_type_code     OUT VARCHAR2
82500  ,p_gain_or_loss_ref      OUT VARCHAR2
82501  
82502 --Cost Management Default Account
82503  , p_source_4            IN NUMBER
82504 --DISTRIBUTION_IDENTIFIER
82505  , p_source_11            IN NUMBER
82506 --Distribution Type
82507  , p_source_12            IN VARCHAR2
82508  , p_source_12_meaning    IN VARCHAR2
82509 --Entered Currency Code
82510  , p_source_15            IN VARCHAR2
82511 --Entered Amount
82512  , p_source_18            IN NUMBER
82513 --Currency Conversion Date
82514  , p_source_19            IN DATE
82515 --Currency Conversion Rate
82516  , p_source_20            IN NUMBER
82517 --Currency Conversion Type
82518  , p_source_21            IN VARCHAR2
82519 --Accounted Amount
82520  , p_source_22            IN NUMBER
82521 --Accounting Line Type
82522  , p_source_24            IN NUMBER
82523 )
82524 IS
82525 
82526 l_component_type              VARCHAR2(80);
82527 l_component_code              VARCHAR2(30);
82528 l_component_type_code         VARCHAR2(1);
82529 l_component_appl_id           INTEGER;
82530 l_amb_context_code            VARCHAR2(30);
82531 l_entity_code                 VARCHAR2(30);
82532 l_event_class_code            VARCHAR2(30);
82533 l_ae_header_id                NUMBER;
82534 l_event_type_code             VARCHAR2(30);
82535 l_line_definition_code        VARCHAR2(30);
82536 l_line_definition_owner_code  VARCHAR2(1);
82537 --
82538 -- adr variables
82539 l_segment                     VARCHAR2(30);
82540 l_ccid                        NUMBER;
82541 l_adr_transaction_coa_id      NUMBER;
82542 l_adr_accounting_coa_id       NUMBER;
82543 l_adr_flexfield_segment_code  VARCHAR2(30);
82544 l_adr_flex_value_set_id       NUMBER;
82545 l_adr_value_type_code         VARCHAR2(30);
82546 l_adr_value_combination_id    NUMBER;
82547 l_adr_value_segment_code      VARCHAR2(30);
82548 
82549 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
82550 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
82551 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
82552 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
82553 
82554 -- 4262811 Variables ------------------------------------------------------------------------------------------
82555 l_entered_amt_idx             NUMBER;
82556 l_accted_amt_idx              NUMBER;
82557 l_acc_rev_flag                VARCHAR2(1);
82558 l_accrual_line_num            NUMBER;
82559 l_tmp_amt                     NUMBER;
82560 l_acc_rev_natural_side_code   VARCHAR2(1);
82561 
82562 l_num_entries                 NUMBER;
82563 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
82564 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
82565 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
82566 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
82567 l_recog_line_1                NUMBER;
82568 l_recog_line_2                NUMBER;
82569 
82570 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
82571 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
82572 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
82573 
82574 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
82575 
82576 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
82577 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
82578 
82579 ---------------------------------------------------------------------------------------------------------------
82580 
82581 
82582 --
82583 -- bulk performance
82584 --
82585 l_balance_type_code           VARCHAR2(1);
82586 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
82587 l_log_module                  VARCHAR2(240);
82588 
82589 --
82590 -- Upgrade strategy
82591 --
82592 l_actual_upg_option           VARCHAR2(1);
82593 l_enc_upg_option           VARCHAR2(1);
82594 
82595 --
82596 BEGIN
82597 --
82598 IF g_log_enabled THEN
82599       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_151';
82600 END IF;
82601 --
82602 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82603 
82604       trace
82605          (p_msg      => 'BEGIN of AcctLineType_151'
82606          ,p_level    => C_LEVEL_PROCEDURE
82607          ,p_module   => l_log_module);
82608 
82609 END IF;
82610 --
82611 l_component_type             := 'AMB_JLT';
82612 l_component_code             := 'INVENTORY_VALUATION';
82613 l_component_type_code        := 'S';
82614 l_component_appl_id          :=  707;
82615 l_amb_context_code           := 'DEFAULT';
82616 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
82617 l_event_class_code           := 'LOG_INTERCOMPANY';
82618 l_event_type_code            := 'LOG_INTERCOMPANY_ALL';
82619 l_line_definition_owner_code := 'S';
82620 l_line_definition_code       := 'LOG_INTERCOMPANY';
82621 --
82622 l_balance_type_code          := 'A';
82623 l_segment                     := NULL;
82624 l_ccid                        := NULL;
82625 l_adr_transaction_coa_id      := NULL;
82626 l_adr_accounting_coa_id       := NULL;
82627 l_adr_flexfield_segment_code  := NULL;
82628 l_adr_flex_value_set_id       := NULL;
82629 l_adr_value_type_code         := NULL;
82630 l_adr_value_combination_id    := NULL;
82631 l_adr_value_segment_code      := NULL;
82632 
82633 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
82634 l_bflow_class_code           := '';    -- 4219869 Business Flow
82635 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
82636 l_budgetary_control_flag     := 'N';
82637 
82638 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
82639 l_bflow_applied_to_amt       := NULL; -- 5132302
82640 l_entered_amt_idx            := NULL;          -- 4262811
82641 l_accted_amt_idx             := NULL;          -- 4262811
82642 l_acc_rev_flag               := NULL;          -- 4262811
82643 l_accrual_line_num           := NULL;          -- 4262811
82644 l_tmp_amt                    := NULL;          -- 4262811
82645 --
82646  
82647 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
82648     l_balance_type_code <> 'B' THEN
82649 IF NVL(p_source_24,9E125) =  1
82650  THEN 
82651 
82652    --
82653    XLA_AE_LINES_PKG.SetNewLine;
82654 
82655    p_balance_type_code          := l_balance_type_code;
82656    -- set the flag so later we will know whether the gain loss line needs to be created
82657    
82658    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
82659      p_actual_flag :='A';
82660    END IF;
82661 
82662    --
82663    -- bulk performance
82664    --
82665    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
82666                                       p_header_num   => 0); -- 4262811
82667    --
82668    -- set accounting line options
82669    --
82670    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
82671            p_natural_side_code          => 'D'
82672          , p_gain_or_loss_flag          => 'N'
82673          , p_gl_transfer_mode_code      => 'S'
82674          , p_acct_entry_type_code       => 'A'
82675          , p_switch_side_flag           => 'Y'
82676          , p_merge_duplicate_code       => 'N'
82677          );
82678    --
82679    l_acc_rev_natural_side_code := 'C';  -- 4262811
82680    -- 
82681    --
82682    -- set accounting line type info
82683    --
82684    xla_ae_lines_pkg.SetAcctLineType
82685       (p_component_type             => l_component_type
82686       ,p_event_type_code            => l_event_type_code
82687       ,p_line_definition_owner_code => l_line_definition_owner_code
82688       ,p_line_definition_code       => l_line_definition_code
82689       ,p_accounting_line_code       => l_component_code
82690       ,p_accounting_line_type_code  => l_component_type_code
82691       ,p_accounting_line_appl_id    => l_component_appl_id
82692       ,p_amb_context_code           => l_amb_context_code
82693       ,p_entity_code                => l_entity_code
82694       ,p_event_class_code           => l_event_class_code);
82695    --
82696    -- set accounting class
82697    --
82698    xla_ae_lines_pkg.SetAcctClass(
82699            p_accounting_class_code  => 'INVENTORY_VALUATION'
82700          , p_ae_header_id           => l_ae_header_id
82701          );
82702 
82703    --
82704    -- set rounding class
82705    --
82706    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
82707                       'INVENTORY_VALUATION';
82708 
82709    --
82710    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
82711    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
82712    --
82713    -- bulk performance
82714    --
82715    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
82716 
82717    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
82718       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
82719 
82720    -- 4955764
82721    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
82722       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
82723 
82724    -- 4458381 Public Sector Enh
82725    
82726    --
82727    -- set accounting attributes for the line type
82728    --
82729    l_entered_amt_idx := 3;
82730    l_accted_amt_idx  := 8;
82731    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
82732    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
82733    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
82734    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
82735    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
82736    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
82737    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
82738    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
82739    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
82740    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
82741    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
82742    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
82743    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
82744    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
82745    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
82746    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
82747    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
82748 
82749    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
82750    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
82751 
82752    ---------------------------------------------------------------------------------------------------------------
82753    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
82754    ---------------------------------------------------------------------------------------------------------------
82755    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
82756 
82757    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
82758    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
82759 
82760    IF xla_accounting_cache_pkg.GetValueChar
82761          (p_source_code         => 'LEDGER_CATEGORY_CODE'
82762          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
82763    AND l_bflow_method_code = 'PRIOR_ENTRY'
82764 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
82765    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
82766          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
82767        )
82768    THEN
82769          xla_ae_lines_pkg.BflowUpgEntry
82770            (p_business_method_code    => l_bflow_method_code
82771            ,p_business_class_code     => l_bflow_class_code
82772            ,p_balance_type            => l_balance_type_code);
82773    ELSE
82774       NULL;
82775 -- No business flow processing for business flow method of NONE.
82776    END IF;
82777 
82778    --
82779    -- call analytical criteria
82780    --
82781    
82782    --
82783    -- call description
82784    --
82785    -- No description or it is inherited.
82786    --
82787    -- call ADRs
82788    -- Bug 4922099
82789    --
82790    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
82791         (NVL(l_actual_upg_option, 'N') = 'O') OR
82792         (NVL(l_enc_upg_option, 'N') = 'O')
82793       )
82794    THEN
82795    NULL;
82796    --
82797    --
82798    
82799   l_ccid := AcctDerRule_4(
82800            p_application_id           => p_application_id
82801          , p_ae_header_id             => l_ae_header_id 
82802 , p_source_4 => p_source_4
82803          , x_transaction_coa_id       => l_adr_transaction_coa_id
82804          , x_accounting_coa_id        => l_adr_accounting_coa_id
82805          , x_value_type_code          => l_adr_value_type_code
82806          , p_side                     => 'NA'
82807    );
82808 
82809    xla_ae_lines_pkg.set_ccid(
82810     p_code_combination_id          => l_ccid
82811   , p_value_type_code              => l_adr_value_type_code
82812   , p_transaction_coa_id           => l_adr_transaction_coa_id
82813   , p_accounting_coa_id            => l_adr_accounting_coa_id
82814   , p_adr_code                     => 'CST_DEFAULT'
82815   , p_adr_type_code                => 'S'
82816   , p_component_type               => l_component_type
82817   , p_component_code               => l_component_code
82818   , p_component_type_code          => l_component_type_code
82819   , p_component_appl_id            => l_component_appl_id
82820   , p_amb_context_code             => l_amb_context_code
82821   , p_side                         => 'NA'
82822   );
82823 
82824 
82825    --
82826    --
82827    END IF;
82828    --
82829    -- Bug 4922099
82830    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
82831           (NVL(l_enc_upg_option, 'N') = 'O')
82832         ) AND
82833         (l_bflow_method_code = 'PRIOR_ENTRY')
82834       )
82835    THEN
82836       IF
82837       --
82838       1 = 2
82839       --
82840       THEN
82841       xla_accounting_err_pkg.build_message
82842                                     (p_appli_s_name            => 'XLA'
82843                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
82844                                     ,p_token_1                 => 'LINE_NUMBER'
82845                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
82846                                     ,p_token_2                 => 'LINE_TYPE_NAME'
82847                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
82848                                                                              l_component_type
82849                                                                             ,l_component_code
82850                                                                             ,l_component_type_code
82851                                                                             ,l_component_appl_id
82852                                                                             ,l_amb_context_code
82853                                                                             ,l_entity_code
82854                                                                             ,l_event_class_code
82855                                                                            )
82856                                     ,p_token_3                 => 'OWNER'
82857                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
82858                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
82859                                                                           ,p_lookup_code    => l_component_type_code
82860                                                                          )
82861                                     ,p_token_4                 => 'PRODUCT_NAME'
82862                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
82863                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
82864                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
82865                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
82866                                     ,p_ae_header_id            =>  NULL
82867                                        );
82868 
82869         IF (C_LEVEL_ERROR>= g_log_level) THEN
82870                  trace
82871                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
82872                       ,p_level    => C_LEVEL_ERROR
82873                       ,p_module   => l_log_module);
82874         END IF;
82875       END IF;
82876    END IF;
82877    --
82878    --
82879    ------------------------------------------------------------------------------------------------
82880    -- 4219869 Business Flow
82881    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
82882    -- Prior Entry.  Currently, the following code is always generated.
82883    ------------------------------------------------------------------------------------------------
82884    XLA_AE_LINES_PKG.ValidateCurrentLine;
82885 
82886    ------------------------------------------------------------------------------------
82887    -- 4219869 Business Flow
82888    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
82889    ------------------------------------------------------------------------------------
82890    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
82891 
82892    ----------------------------------------------------------------------------------
82893    -- 4219869 Business Flow
82894    -- Update journal entry status -- Need to generate this within IF <condition>
82895    ----------------------------------------------------------------------------------
82896    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
82897          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
82898          ,p_balance_type_code => l_balance_type_code
82899          );
82900 
82901    -------------------------------------------------------------------------------------------
82902    -- 4262811 - Generate the Accrual Reversal lines
82903    -------------------------------------------------------------------------------------------
82904    BEGIN
82905       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
82906                               (g_array_event(p_event_id).array_value_num('header_index'));
82907       IF l_acc_rev_flag IS NULL THEN
82908          l_acc_rev_flag := 'N';
82909       END IF;
82910    EXCEPTION
82911       WHEN OTHERS THEN
82912          l_acc_rev_flag := 'N';
82913    END;
82914    --
82915    IF (l_acc_rev_flag = 'Y') THEN
82916 
82917        -- 4645092  ------------------------------------------------------------------------------
82918        -- To allow MPA report to determine if it should generate report process
82919        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
82920        ------------------------------------------------------------------------------------------
82921 
82922        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
82923        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
82924    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
82925    -- call ADRs
82926    -- Bug 4922099
82927    --
82928    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
82929         (NVL(l_actual_upg_option, 'N') = 'O') OR
82930         (NVL(l_enc_upg_option, 'N') = 'O')
82931       )
82932    THEN
82933    NULL;
82934    --
82935    --
82936    
82937   l_ccid := AcctDerRule_4(
82938            p_application_id           => p_application_id
82939          , p_ae_header_id             => l_ae_header_id 
82940 , p_source_4 => p_source_4
82941          , x_transaction_coa_id       => l_adr_transaction_coa_id
82942          , x_accounting_coa_id        => l_adr_accounting_coa_id
82943          , x_value_type_code          => l_adr_value_type_code
82944          , p_side                     => 'NA'
82945    );
82946 
82947    xla_ae_lines_pkg.set_ccid(
82948     p_code_combination_id          => l_ccid
82949   , p_value_type_code              => l_adr_value_type_code
82950   , p_transaction_coa_id           => l_adr_transaction_coa_id
82951   , p_accounting_coa_id            => l_adr_accounting_coa_id
82952   , p_adr_code                     => 'CST_DEFAULT'
82953   , p_adr_type_code                => 'S'
82954   , p_component_type               => l_component_type
82955   , p_component_code               => l_component_code
82956   , p_component_type_code          => l_component_type_code
82957   , p_component_appl_id            => l_component_appl_id
82958   , p_amb_context_code             => l_amb_context_code
82959   , p_side                         => 'NA'
82960   );
82961 
82962 
82963    --
82964    --
82965    END IF;
82966 
82967        --
82968        -- Update the line information that should be overwritten
82969        --
82970        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
82971                                          p_header_num   => 1);
82972        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
82973 
82974        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
82975 
82976        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
82977           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
82978        END IF;
82979 
82980       --
82981       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
82982       --
82983       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
82984           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
82985       ELSE
82986           ---------------------------------------------------------------------------------------------------
82987           -- 4262811a Switch Sign
82988           ---------------------------------------------------------------------------------------------------
82989           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
82990           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
82991                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82992           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
82993                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82994           -- 5132302
82995           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
82996                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82997 
82998       END IF;
82999 
83000       -- 4955764
83001       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
83002       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
83003 
83004 
83005       XLA_AE_LINES_PKG.ValidateCurrentLine;
83006       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
83007 
83008       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
83009                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
83010                ,p_balance_type_code => l_balance_type_code);
83011 
83012    END IF;
83013 
83014    -----------------------------------------------------------------------------------------
83015    -- 4262811 Multiperiod Accounting
83016    -----------------------------------------------------------------------------------------
83017      -- No MPA option is assigned.
83018 
83019 
83020 END IF;
83021 END IF;
83022 --
83023 
83024 --
83025 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83026    trace
83027       (p_msg      => 'END of AcctLineType_151'
83028       ,p_level    => C_LEVEL_PROCEDURE
83029       ,p_module   => l_log_module);
83030 END IF;
83031 --
83032 EXCEPTION
83033   WHEN xla_exceptions_pkg.application_exception THEN
83034       RAISE;
83035   WHEN OTHERS THEN
83036        xla_exceptions_pkg.raise_message
83037            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_151');
83038 END AcctLineType_151;
83039 --
83040 
83041 ---------------------------------------
83042 --
83043 -- PRIVATE FUNCTION
83044 --         AcctLineType_152
83045 --
83046 ---------------------------------------
83047 PROCEDURE AcctLineType_152 (
83048   p_application_id        IN NUMBER
83049  ,p_event_id              IN NUMBER
83050  ,p_calculate_acctd_flag  IN VARCHAR2
83051  ,p_calculate_g_l_flag    IN VARCHAR2
83052  ,p_actual_flag           IN OUT VARCHAR2
83053  ,p_balance_type_code     OUT VARCHAR2
83054  ,p_gain_or_loss_ref      OUT VARCHAR2
83055  
83056 --Cost Management Default Account
83057  , p_source_4            IN NUMBER
83058 --DISTRIBUTION_IDENTIFIER
83059  , p_source_11            IN NUMBER
83060 --Distribution Type
83061  , p_source_12            IN VARCHAR2
83062  , p_source_12_meaning    IN VARCHAR2
83063 --Entered Currency Code
83064  , p_source_15            IN VARCHAR2
83065 --Entered Amount
83066  , p_source_18            IN NUMBER
83067 --Currency Conversion Date
83068  , p_source_19            IN DATE
83069 --Currency Conversion Rate
83070  , p_source_20            IN NUMBER
83071 --Currency Conversion Type
83072  , p_source_21            IN VARCHAR2
83073 --Accounted Amount
83074  , p_source_22            IN NUMBER
83075 --Accounting Line Type
83076  , p_source_24            IN NUMBER
83077 )
83078 IS
83079 
83080 l_component_type              VARCHAR2(80);
83081 l_component_code              VARCHAR2(30);
83082 l_component_type_code         VARCHAR2(1);
83083 l_component_appl_id           INTEGER;
83084 l_amb_context_code            VARCHAR2(30);
83085 l_entity_code                 VARCHAR2(30);
83086 l_event_class_code            VARCHAR2(30);
83087 l_ae_header_id                NUMBER;
83088 l_event_type_code             VARCHAR2(30);
83089 l_line_definition_code        VARCHAR2(30);
83090 l_line_definition_owner_code  VARCHAR2(1);
83091 --
83092 -- adr variables
83093 l_segment                     VARCHAR2(30);
83094 l_ccid                        NUMBER;
83095 l_adr_transaction_coa_id      NUMBER;
83096 l_adr_accounting_coa_id       NUMBER;
83097 l_adr_flexfield_segment_code  VARCHAR2(30);
83098 l_adr_flex_value_set_id       NUMBER;
83099 l_adr_value_type_code         VARCHAR2(30);
83100 l_adr_value_combination_id    NUMBER;
83101 l_adr_value_segment_code      VARCHAR2(30);
83102 
83103 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
83104 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
83105 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
83106 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
83107 
83108 -- 4262811 Variables ------------------------------------------------------------------------------------------
83109 l_entered_amt_idx             NUMBER;
83110 l_accted_amt_idx              NUMBER;
83111 l_acc_rev_flag                VARCHAR2(1);
83112 l_accrual_line_num            NUMBER;
83113 l_tmp_amt                     NUMBER;
83114 l_acc_rev_natural_side_code   VARCHAR2(1);
83115 
83116 l_num_entries                 NUMBER;
83117 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
83118 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
83119 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
83120 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
83121 l_recog_line_1                NUMBER;
83122 l_recog_line_2                NUMBER;
83123 
83124 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
83125 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
83126 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
83127 
83128 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
83129 
83130 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
83131 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
83132 
83133 ---------------------------------------------------------------------------------------------------------------
83134 
83135 
83136 --
83137 -- bulk performance
83138 --
83139 l_balance_type_code           VARCHAR2(1);
83140 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
83141 l_log_module                  VARCHAR2(240);
83142 
83143 --
83144 -- Upgrade strategy
83145 --
83146 l_actual_upg_option           VARCHAR2(1);
83147 l_enc_upg_option           VARCHAR2(1);
83148 
83149 --
83150 BEGIN
83151 --
83152 IF g_log_enabled THEN
83153       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_152';
83154 END IF;
83155 --
83156 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83157 
83158       trace
83159          (p_msg      => 'BEGIN of AcctLineType_152'
83160          ,p_level    => C_LEVEL_PROCEDURE
83161          ,p_module   => l_log_module);
83162 
83163 END IF;
83164 --
83165 l_component_type             := 'AMB_JLT';
83166 l_component_code             := 'INVENTORY_VALUATION';
83167 l_component_type_code        := 'S';
83168 l_component_appl_id          :=  707;
83169 l_amb_context_code           := 'DEFAULT';
83170 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
83171 l_event_class_code           := 'MTL_COST_UPD';
83172 l_event_type_code            := 'MTL_COST_UPD_ALL';
83173 l_line_definition_owner_code := 'S';
83174 l_line_definition_code       := 'MTL_COST_UPD';
83175 --
83176 l_balance_type_code          := 'A';
83177 l_segment                     := NULL;
83178 l_ccid                        := NULL;
83179 l_adr_transaction_coa_id      := NULL;
83180 l_adr_accounting_coa_id       := NULL;
83181 l_adr_flexfield_segment_code  := NULL;
83182 l_adr_flex_value_set_id       := NULL;
83183 l_adr_value_type_code         := NULL;
83184 l_adr_value_combination_id    := NULL;
83185 l_adr_value_segment_code      := NULL;
83186 
83187 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
83188 l_bflow_class_code           := '';    -- 4219869 Business Flow
83189 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
83190 l_budgetary_control_flag     := 'N';
83191 
83192 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
83193 l_bflow_applied_to_amt       := NULL; -- 5132302
83194 l_entered_amt_idx            := NULL;          -- 4262811
83195 l_accted_amt_idx             := NULL;          -- 4262811
83196 l_acc_rev_flag               := NULL;          -- 4262811
83197 l_accrual_line_num           := NULL;          -- 4262811
83198 l_tmp_amt                    := NULL;          -- 4262811
83199 --
83200  
83201 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
83202     l_balance_type_code <> 'B' THEN
83203 IF NVL(p_source_24,9E125) =  1
83204  THEN 
83205 
83206    --
83207    XLA_AE_LINES_PKG.SetNewLine;
83208 
83209    p_balance_type_code          := l_balance_type_code;
83210    -- set the flag so later we will know whether the gain loss line needs to be created
83211    
83212    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
83213      p_actual_flag :='A';
83214    END IF;
83215 
83216    --
83217    -- bulk performance
83218    --
83219    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
83220                                       p_header_num   => 0); -- 4262811
83221    --
83222    -- set accounting line options
83223    --
83224    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
83225            p_natural_side_code          => 'D'
83226          , p_gain_or_loss_flag          => 'N'
83227          , p_gl_transfer_mode_code      => 'S'
83228          , p_acct_entry_type_code       => 'A'
83229          , p_switch_side_flag           => 'Y'
83230          , p_merge_duplicate_code       => 'N'
83231          );
83232    --
83233    l_acc_rev_natural_side_code := 'C';  -- 4262811
83234    -- 
83235    --
83236    -- set accounting line type info
83237    --
83238    xla_ae_lines_pkg.SetAcctLineType
83239       (p_component_type             => l_component_type
83240       ,p_event_type_code            => l_event_type_code
83241       ,p_line_definition_owner_code => l_line_definition_owner_code
83242       ,p_line_definition_code       => l_line_definition_code
83243       ,p_accounting_line_code       => l_component_code
83244       ,p_accounting_line_type_code  => l_component_type_code
83245       ,p_accounting_line_appl_id    => l_component_appl_id
83246       ,p_amb_context_code           => l_amb_context_code
83247       ,p_entity_code                => l_entity_code
83248       ,p_event_class_code           => l_event_class_code);
83249    --
83250    -- set accounting class
83251    --
83252    xla_ae_lines_pkg.SetAcctClass(
83253            p_accounting_class_code  => 'INVENTORY_VALUATION'
83254          , p_ae_header_id           => l_ae_header_id
83255          );
83256 
83257    --
83258    -- set rounding class
83259    --
83260    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
83261                       'INVENTORY_VALUATION';
83262 
83263    --
83264    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
83265    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
83266    --
83267    -- bulk performance
83268    --
83269    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
83270 
83271    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
83272       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
83273 
83274    -- 4955764
83275    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
83276       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
83277 
83278    -- 4458381 Public Sector Enh
83279    
83280    --
83281    -- set accounting attributes for the line type
83282    --
83283    l_entered_amt_idx := 3;
83284    l_accted_amt_idx  := 8;
83285    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
83286    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
83287    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
83288    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
83289    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
83290    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
83291    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
83292    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
83293    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
83294    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
83295    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
83296    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
83297    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
83298    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
83299    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
83300    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
83301    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
83302 
83303    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
83304    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
83305 
83306    ---------------------------------------------------------------------------------------------------------------
83307    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
83308    ---------------------------------------------------------------------------------------------------------------
83309    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
83310 
83311    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
83312    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
83313 
83314    IF xla_accounting_cache_pkg.GetValueChar
83315          (p_source_code         => 'LEDGER_CATEGORY_CODE'
83316          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
83317    AND l_bflow_method_code = 'PRIOR_ENTRY'
83318 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
83319    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
83320          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
83321        )
83322    THEN
83323          xla_ae_lines_pkg.BflowUpgEntry
83324            (p_business_method_code    => l_bflow_method_code
83325            ,p_business_class_code     => l_bflow_class_code
83326            ,p_balance_type            => l_balance_type_code);
83327    ELSE
83328       NULL;
83329 -- No business flow processing for business flow method of NONE.
83330    END IF;
83331 
83332    --
83333    -- call analytical criteria
83334    --
83335    
83336    --
83337    -- call description
83338    --
83339    -- No description or it is inherited.
83340    --
83341    -- call ADRs
83342    -- Bug 4922099
83343    --
83344    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
83345         (NVL(l_actual_upg_option, 'N') = 'O') OR
83346         (NVL(l_enc_upg_option, 'N') = 'O')
83347       )
83348    THEN
83349    NULL;
83350    --
83351    --
83352    
83353   l_ccid := AcctDerRule_4(
83354            p_application_id           => p_application_id
83355          , p_ae_header_id             => l_ae_header_id 
83356 , p_source_4 => p_source_4
83357          , x_transaction_coa_id       => l_adr_transaction_coa_id
83358          , x_accounting_coa_id        => l_adr_accounting_coa_id
83359          , x_value_type_code          => l_adr_value_type_code
83360          , p_side                     => 'NA'
83361    );
83362 
83363    xla_ae_lines_pkg.set_ccid(
83364     p_code_combination_id          => l_ccid
83365   , p_value_type_code              => l_adr_value_type_code
83366   , p_transaction_coa_id           => l_adr_transaction_coa_id
83367   , p_accounting_coa_id            => l_adr_accounting_coa_id
83368   , p_adr_code                     => 'CST_DEFAULT'
83369   , p_adr_type_code                => 'S'
83370   , p_component_type               => l_component_type
83371   , p_component_code               => l_component_code
83372   , p_component_type_code          => l_component_type_code
83373   , p_component_appl_id            => l_component_appl_id
83374   , p_amb_context_code             => l_amb_context_code
83375   , p_side                         => 'NA'
83376   );
83377 
83378 
83379    --
83380    --
83381    END IF;
83382    --
83383    -- Bug 4922099
83384    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
83385           (NVL(l_enc_upg_option, 'N') = 'O')
83386         ) AND
83387         (l_bflow_method_code = 'PRIOR_ENTRY')
83388       )
83389    THEN
83390       IF
83391       --
83392       1 = 2
83393       --
83394       THEN
83395       xla_accounting_err_pkg.build_message
83396                                     (p_appli_s_name            => 'XLA'
83397                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
83398                                     ,p_token_1                 => 'LINE_NUMBER'
83399                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
83400                                     ,p_token_2                 => 'LINE_TYPE_NAME'
83401                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
83402                                                                              l_component_type
83403                                                                             ,l_component_code
83404                                                                             ,l_component_type_code
83405                                                                             ,l_component_appl_id
83406                                                                             ,l_amb_context_code
83407                                                                             ,l_entity_code
83408                                                                             ,l_event_class_code
83409                                                                            )
83410                                     ,p_token_3                 => 'OWNER'
83411                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
83412                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
83413                                                                           ,p_lookup_code    => l_component_type_code
83414                                                                          )
83415                                     ,p_token_4                 => 'PRODUCT_NAME'
83416                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
83417                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
83418                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
83419                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
83420                                     ,p_ae_header_id            =>  NULL
83421                                        );
83422 
83423         IF (C_LEVEL_ERROR>= g_log_level) THEN
83424                  trace
83425                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
83426                       ,p_level    => C_LEVEL_ERROR
83427                       ,p_module   => l_log_module);
83428         END IF;
83429       END IF;
83430    END IF;
83431    --
83432    --
83433    ------------------------------------------------------------------------------------------------
83434    -- 4219869 Business Flow
83435    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
83436    -- Prior Entry.  Currently, the following code is always generated.
83437    ------------------------------------------------------------------------------------------------
83438    XLA_AE_LINES_PKG.ValidateCurrentLine;
83439 
83440    ------------------------------------------------------------------------------------
83441    -- 4219869 Business Flow
83442    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
83443    ------------------------------------------------------------------------------------
83444    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
83445 
83446    ----------------------------------------------------------------------------------
83447    -- 4219869 Business Flow
83448    -- Update journal entry status -- Need to generate this within IF <condition>
83449    ----------------------------------------------------------------------------------
83450    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
83451          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
83452          ,p_balance_type_code => l_balance_type_code
83453          );
83454 
83455    -------------------------------------------------------------------------------------------
83456    -- 4262811 - Generate the Accrual Reversal lines
83457    -------------------------------------------------------------------------------------------
83458    BEGIN
83459       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
83460                               (g_array_event(p_event_id).array_value_num('header_index'));
83461       IF l_acc_rev_flag IS NULL THEN
83462          l_acc_rev_flag := 'N';
83463       END IF;
83464    EXCEPTION
83465       WHEN OTHERS THEN
83466          l_acc_rev_flag := 'N';
83467    END;
83468    --
83469    IF (l_acc_rev_flag = 'Y') THEN
83470 
83471        -- 4645092  ------------------------------------------------------------------------------
83472        -- To allow MPA report to determine if it should generate report process
83473        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
83474        ------------------------------------------------------------------------------------------
83475 
83476        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
83477        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
83478    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
83479    -- call ADRs
83480    -- Bug 4922099
83481    --
83482    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
83483         (NVL(l_actual_upg_option, 'N') = 'O') OR
83484         (NVL(l_enc_upg_option, 'N') = 'O')
83485       )
83486    THEN
83487    NULL;
83488    --
83489    --
83490    
83491   l_ccid := AcctDerRule_4(
83492            p_application_id           => p_application_id
83493          , p_ae_header_id             => l_ae_header_id 
83494 , p_source_4 => p_source_4
83495          , x_transaction_coa_id       => l_adr_transaction_coa_id
83496          , x_accounting_coa_id        => l_adr_accounting_coa_id
83497          , x_value_type_code          => l_adr_value_type_code
83498          , p_side                     => 'NA'
83499    );
83500 
83501    xla_ae_lines_pkg.set_ccid(
83502     p_code_combination_id          => l_ccid
83503   , p_value_type_code              => l_adr_value_type_code
83504   , p_transaction_coa_id           => l_adr_transaction_coa_id
83505   , p_accounting_coa_id            => l_adr_accounting_coa_id
83506   , p_adr_code                     => 'CST_DEFAULT'
83507   , p_adr_type_code                => 'S'
83508   , p_component_type               => l_component_type
83509   , p_component_code               => l_component_code
83510   , p_component_type_code          => l_component_type_code
83511   , p_component_appl_id            => l_component_appl_id
83512   , p_amb_context_code             => l_amb_context_code
83513   , p_side                         => 'NA'
83514   );
83515 
83516 
83517    --
83518    --
83519    END IF;
83520 
83521        --
83522        -- Update the line information that should be overwritten
83523        --
83524        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
83525                                          p_header_num   => 1);
83526        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
83527 
83528        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
83529 
83530        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
83531           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
83532        END IF;
83533 
83534       --
83535       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
83536       --
83537       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
83538           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
83539       ELSE
83540           ---------------------------------------------------------------------------------------------------
83541           -- 4262811a Switch Sign
83542           ---------------------------------------------------------------------------------------------------
83543           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
83544           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
83545                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
83546           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
83547                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
83548           -- 5132302
83549           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
83550                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
83551 
83552       END IF;
83553 
83554       -- 4955764
83555       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
83556       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
83557 
83558 
83559       XLA_AE_LINES_PKG.ValidateCurrentLine;
83560       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
83561 
83562       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
83563                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
83564                ,p_balance_type_code => l_balance_type_code);
83565 
83566    END IF;
83567 
83568    -----------------------------------------------------------------------------------------
83569    -- 4262811 Multiperiod Accounting
83570    -----------------------------------------------------------------------------------------
83571      -- No MPA option is assigned.
83572 
83573 
83574 END IF;
83575 END IF;
83576 --
83577 
83578 --
83579 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83580    trace
83581       (p_msg      => 'END of AcctLineType_152'
83582       ,p_level    => C_LEVEL_PROCEDURE
83583       ,p_module   => l_log_module);
83584 END IF;
83585 --
83586 EXCEPTION
83587   WHEN xla_exceptions_pkg.application_exception THEN
83588       RAISE;
83589   WHEN OTHERS THEN
83590        xla_exceptions_pkg.raise_message
83591            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_152');
83592 END AcctLineType_152;
83593 --
83594 
83595 ---------------------------------------
83596 --
83597 -- PRIVATE FUNCTION
83598 --         AcctLineType_153
83599 --
83600 ---------------------------------------
83601 PROCEDURE AcctLineType_153 (
83602   p_application_id        IN NUMBER
83603  ,p_event_id              IN NUMBER
83604  ,p_calculate_acctd_flag  IN VARCHAR2
83605  ,p_calculate_g_l_flag    IN VARCHAR2
83606  ,p_actual_flag           IN OUT VARCHAR2
83607  ,p_balance_type_code     OUT VARCHAR2
83608  ,p_gain_or_loss_ref      OUT VARCHAR2
83609  
83610 --Cost Management Default Account
83611  , p_source_4            IN NUMBER
83612 --DISTRIBUTION_IDENTIFIER
83613  , p_source_11            IN NUMBER
83614 --Distribution Type
83615  , p_source_12            IN VARCHAR2
83616  , p_source_12_meaning    IN VARCHAR2
83617 --Entered Currency Code
83618  , p_source_15            IN VARCHAR2
83619 --Entered Amount
83620  , p_source_18            IN NUMBER
83621 --Currency Conversion Date
83622  , p_source_19            IN DATE
83623 --Currency Conversion Rate
83624  , p_source_20            IN NUMBER
83625 --Currency Conversion Type
83626  , p_source_21            IN VARCHAR2
83627 --Accounted Amount
83628  , p_source_22            IN NUMBER
83629 --Accounting Line Type
83630  , p_source_24            IN NUMBER
83631 )
83632 IS
83633 
83634 l_component_type              VARCHAR2(80);
83635 l_component_code              VARCHAR2(30);
83636 l_component_type_code         VARCHAR2(1);
83637 l_component_appl_id           INTEGER;
83638 l_amb_context_code            VARCHAR2(30);
83639 l_entity_code                 VARCHAR2(30);
83640 l_event_class_code            VARCHAR2(30);
83641 l_ae_header_id                NUMBER;
83642 l_event_type_code             VARCHAR2(30);
83643 l_line_definition_code        VARCHAR2(30);
83644 l_line_definition_owner_code  VARCHAR2(1);
83645 --
83646 -- adr variables
83647 l_segment                     VARCHAR2(30);
83648 l_ccid                        NUMBER;
83649 l_adr_transaction_coa_id      NUMBER;
83650 l_adr_accounting_coa_id       NUMBER;
83651 l_adr_flexfield_segment_code  VARCHAR2(30);
83652 l_adr_flex_value_set_id       NUMBER;
83653 l_adr_value_type_code         VARCHAR2(30);
83654 l_adr_value_combination_id    NUMBER;
83655 l_adr_value_segment_code      VARCHAR2(30);
83656 
83657 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
83658 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
83659 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
83660 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
83661 
83662 -- 4262811 Variables ------------------------------------------------------------------------------------------
83663 l_entered_amt_idx             NUMBER;
83664 l_accted_amt_idx              NUMBER;
83665 l_acc_rev_flag                VARCHAR2(1);
83666 l_accrual_line_num            NUMBER;
83667 l_tmp_amt                     NUMBER;
83668 l_acc_rev_natural_side_code   VARCHAR2(1);
83669 
83670 l_num_entries                 NUMBER;
83671 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
83672 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
83673 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
83674 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
83675 l_recog_line_1                NUMBER;
83676 l_recog_line_2                NUMBER;
83677 
83678 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
83679 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
83680 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
83681 
83682 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
83683 
83684 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
83685 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
83686 
83687 ---------------------------------------------------------------------------------------------------------------
83688 
83689 
83690 --
83691 -- bulk performance
83692 --
83693 l_balance_type_code           VARCHAR2(1);
83694 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
83695 l_log_module                  VARCHAR2(240);
83696 
83697 --
83698 -- Upgrade strategy
83699 --
83700 l_actual_upg_option           VARCHAR2(1);
83701 l_enc_upg_option           VARCHAR2(1);
83702 
83703 --
83704 BEGIN
83705 --
83706 IF g_log_enabled THEN
83707       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_153';
83708 END IF;
83709 --
83710 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83711 
83712       trace
83713          (p_msg      => 'BEGIN of AcctLineType_153'
83714          ,p_level    => C_LEVEL_PROCEDURE
83715          ,p_module   => l_log_module);
83716 
83717 END IF;
83718 --
83719 l_component_type             := 'AMB_JLT';
83720 l_component_code             := 'INVENTORY_VALUATION';
83721 l_component_type_code        := 'S';
83722 l_component_appl_id          :=  707;
83723 l_amb_context_code           := 'DEFAULT';
83724 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
83725 l_event_class_code           := 'SALES_ORDER';
83726 l_event_type_code            := 'SALES_ORDER_ALL';
83727 l_line_definition_owner_code := 'S';
83728 l_line_definition_code       := 'SALES_ORDER';
83729 --
83730 l_balance_type_code          := 'A';
83731 l_segment                     := NULL;
83732 l_ccid                        := NULL;
83733 l_adr_transaction_coa_id      := NULL;
83734 l_adr_accounting_coa_id       := NULL;
83735 l_adr_flexfield_segment_code  := NULL;
83736 l_adr_flex_value_set_id       := NULL;
83737 l_adr_value_type_code         := NULL;
83738 l_adr_value_combination_id    := NULL;
83739 l_adr_value_segment_code      := NULL;
83740 
83741 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
83742 l_bflow_class_code           := '';    -- 4219869 Business Flow
83743 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
83744 l_budgetary_control_flag     := 'N';
83745 
83746 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
83747 l_bflow_applied_to_amt       := NULL; -- 5132302
83748 l_entered_amt_idx            := NULL;          -- 4262811
83749 l_accted_amt_idx             := NULL;          -- 4262811
83750 l_acc_rev_flag               := NULL;          -- 4262811
83751 l_accrual_line_num           := NULL;          -- 4262811
83752 l_tmp_amt                    := NULL;          -- 4262811
83753 --
83754  
83755 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
83756     l_balance_type_code <> 'B' THEN
83757 IF NVL(p_source_24,9E125) =  1
83758  THEN 
83759 
83760    --
83761    XLA_AE_LINES_PKG.SetNewLine;
83762 
83763    p_balance_type_code          := l_balance_type_code;
83764    -- set the flag so later we will know whether the gain loss line needs to be created
83765    
83766    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
83767      p_actual_flag :='A';
83768    END IF;
83769 
83770    --
83771    -- bulk performance
83772    --
83773    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
83774                                       p_header_num   => 0); -- 4262811
83775    --
83776    -- set accounting line options
83777    --
83778    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
83779            p_natural_side_code          => 'D'
83780          , p_gain_or_loss_flag          => 'N'
83781          , p_gl_transfer_mode_code      => 'S'
83782          , p_acct_entry_type_code       => 'A'
83783          , p_switch_side_flag           => 'Y'
83784          , p_merge_duplicate_code       => 'N'
83785          );
83786    --
83787    l_acc_rev_natural_side_code := 'C';  -- 4262811
83788    -- 
83789    --
83790    -- set accounting line type info
83791    --
83792    xla_ae_lines_pkg.SetAcctLineType
83793       (p_component_type             => l_component_type
83794       ,p_event_type_code            => l_event_type_code
83795       ,p_line_definition_owner_code => l_line_definition_owner_code
83796       ,p_line_definition_code       => l_line_definition_code
83797       ,p_accounting_line_code       => l_component_code
83798       ,p_accounting_line_type_code  => l_component_type_code
83799       ,p_accounting_line_appl_id    => l_component_appl_id
83800       ,p_amb_context_code           => l_amb_context_code
83801       ,p_entity_code                => l_entity_code
83802       ,p_event_class_code           => l_event_class_code);
83803    --
83804    -- set accounting class
83805    --
83806    xla_ae_lines_pkg.SetAcctClass(
83807            p_accounting_class_code  => 'INVENTORY_VALUATION'
83808          , p_ae_header_id           => l_ae_header_id
83809          );
83810 
83811    --
83812    -- set rounding class
83813    --
83814    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
83815                       'INVENTORY_VALUATION';
83816 
83817    --
83818    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
83819    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
83820    --
83821    -- bulk performance
83822    --
83823    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
83824 
83825    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
83826       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
83827 
83828    -- 4955764
83829    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
83830       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
83831 
83832    -- 4458381 Public Sector Enh
83833    
83834    --
83835    -- set accounting attributes for the line type
83836    --
83837    l_entered_amt_idx := 3;
83838    l_accted_amt_idx  := 8;
83839    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
83840    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
83841    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
83842    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
83843    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
83844    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
83845    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
83846    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
83847    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
83848    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
83849    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
83850    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
83851    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
83852    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
83853    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
83854    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
83855    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
83856 
83857    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
83858    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
83859 
83860    ---------------------------------------------------------------------------------------------------------------
83861    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
83862    ---------------------------------------------------------------------------------------------------------------
83863    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
83864 
83865    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
83866    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
83867 
83868    IF xla_accounting_cache_pkg.GetValueChar
83869          (p_source_code         => 'LEDGER_CATEGORY_CODE'
83870          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
83871    AND l_bflow_method_code = 'PRIOR_ENTRY'
83872 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
83873    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
83874          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
83875        )
83876    THEN
83877          xla_ae_lines_pkg.BflowUpgEntry
83878            (p_business_method_code    => l_bflow_method_code
83879            ,p_business_class_code     => l_bflow_class_code
83880            ,p_balance_type            => l_balance_type_code);
83881    ELSE
83882       NULL;
83883 -- No business flow processing for business flow method of NONE.
83884    END IF;
83885 
83886    --
83887    -- call analytical criteria
83888    --
83889    
83890    --
83891    -- call description
83892    --
83893    -- No description or it is inherited.
83894    --
83895    -- call ADRs
83896    -- Bug 4922099
83897    --
83898    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
83899         (NVL(l_actual_upg_option, 'N') = 'O') OR
83900         (NVL(l_enc_upg_option, 'N') = 'O')
83901       )
83902    THEN
83903    NULL;
83904    --
83905    --
83906    
83907   l_ccid := AcctDerRule_4(
83908            p_application_id           => p_application_id
83909          , p_ae_header_id             => l_ae_header_id 
83910 , p_source_4 => p_source_4
83911          , x_transaction_coa_id       => l_adr_transaction_coa_id
83912          , x_accounting_coa_id        => l_adr_accounting_coa_id
83913          , x_value_type_code          => l_adr_value_type_code
83914          , p_side                     => 'NA'
83915    );
83916 
83917    xla_ae_lines_pkg.set_ccid(
83918     p_code_combination_id          => l_ccid
83919   , p_value_type_code              => l_adr_value_type_code
83920   , p_transaction_coa_id           => l_adr_transaction_coa_id
83921   , p_accounting_coa_id            => l_adr_accounting_coa_id
83922   , p_adr_code                     => 'CST_DEFAULT'
83923   , p_adr_type_code                => 'S'
83924   , p_component_type               => l_component_type
83925   , p_component_code               => l_component_code
83926   , p_component_type_code          => l_component_type_code
83927   , p_component_appl_id            => l_component_appl_id
83928   , p_amb_context_code             => l_amb_context_code
83929   , p_side                         => 'NA'
83930   );
83931 
83932 
83933    --
83934    --
83935    END IF;
83936    --
83937    -- Bug 4922099
83938    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
83939           (NVL(l_enc_upg_option, 'N') = 'O')
83940         ) AND
83941         (l_bflow_method_code = 'PRIOR_ENTRY')
83942       )
83943    THEN
83944       IF
83945       --
83946       1 = 2
83947       --
83948       THEN
83949       xla_accounting_err_pkg.build_message
83950                                     (p_appli_s_name            => 'XLA'
83951                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
83952                                     ,p_token_1                 => 'LINE_NUMBER'
83953                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
83954                                     ,p_token_2                 => 'LINE_TYPE_NAME'
83955                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
83956                                                                              l_component_type
83957                                                                             ,l_component_code
83958                                                                             ,l_component_type_code
83959                                                                             ,l_component_appl_id
83960                                                                             ,l_amb_context_code
83961                                                                             ,l_entity_code
83962                                                                             ,l_event_class_code
83963                                                                            )
83964                                     ,p_token_3                 => 'OWNER'
83965                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
83966                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
83967                                                                           ,p_lookup_code    => l_component_type_code
83968                                                                          )
83969                                     ,p_token_4                 => 'PRODUCT_NAME'
83970                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
83971                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
83972                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
83973                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
83974                                     ,p_ae_header_id            =>  NULL
83975                                        );
83976 
83977         IF (C_LEVEL_ERROR>= g_log_level) THEN
83978                  trace
83979                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
83980                       ,p_level    => C_LEVEL_ERROR
83981                       ,p_module   => l_log_module);
83982         END IF;
83983       END IF;
83984    END IF;
83985    --
83986    --
83987    ------------------------------------------------------------------------------------------------
83988    -- 4219869 Business Flow
83989    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
83990    -- Prior Entry.  Currently, the following code is always generated.
83991    ------------------------------------------------------------------------------------------------
83992    XLA_AE_LINES_PKG.ValidateCurrentLine;
83993 
83994    ------------------------------------------------------------------------------------
83995    -- 4219869 Business Flow
83996    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
83997    ------------------------------------------------------------------------------------
83998    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
83999 
84000    ----------------------------------------------------------------------------------
84001    -- 4219869 Business Flow
84002    -- Update journal entry status -- Need to generate this within IF <condition>
84003    ----------------------------------------------------------------------------------
84004    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
84005          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
84006          ,p_balance_type_code => l_balance_type_code
84007          );
84008 
84009    -------------------------------------------------------------------------------------------
84010    -- 4262811 - Generate the Accrual Reversal lines
84011    -------------------------------------------------------------------------------------------
84012    BEGIN
84013       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
84014                               (g_array_event(p_event_id).array_value_num('header_index'));
84015       IF l_acc_rev_flag IS NULL THEN
84016          l_acc_rev_flag := 'N';
84017       END IF;
84018    EXCEPTION
84019       WHEN OTHERS THEN
84020          l_acc_rev_flag := 'N';
84021    END;
84022    --
84023    IF (l_acc_rev_flag = 'Y') THEN
84024 
84025        -- 4645092  ------------------------------------------------------------------------------
84026        -- To allow MPA report to determine if it should generate report process
84027        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
84028        ------------------------------------------------------------------------------------------
84029 
84030        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
84031        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
84032    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
84033    -- call ADRs
84034    -- Bug 4922099
84035    --
84036    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
84037         (NVL(l_actual_upg_option, 'N') = 'O') OR
84038         (NVL(l_enc_upg_option, 'N') = 'O')
84039       )
84040    THEN
84041    NULL;
84042    --
84043    --
84044    
84045   l_ccid := AcctDerRule_4(
84046            p_application_id           => p_application_id
84047          , p_ae_header_id             => l_ae_header_id 
84048 , p_source_4 => p_source_4
84049          , x_transaction_coa_id       => l_adr_transaction_coa_id
84050          , x_accounting_coa_id        => l_adr_accounting_coa_id
84051          , x_value_type_code          => l_adr_value_type_code
84052          , p_side                     => 'NA'
84053    );
84054 
84055    xla_ae_lines_pkg.set_ccid(
84056     p_code_combination_id          => l_ccid
84057   , p_value_type_code              => l_adr_value_type_code
84058   , p_transaction_coa_id           => l_adr_transaction_coa_id
84059   , p_accounting_coa_id            => l_adr_accounting_coa_id
84060   , p_adr_code                     => 'CST_DEFAULT'
84061   , p_adr_type_code                => 'S'
84062   , p_component_type               => l_component_type
84063   , p_component_code               => l_component_code
84064   , p_component_type_code          => l_component_type_code
84065   , p_component_appl_id            => l_component_appl_id
84066   , p_amb_context_code             => l_amb_context_code
84067   , p_side                         => 'NA'
84068   );
84069 
84070 
84071    --
84072    --
84073    END IF;
84074 
84075        --
84076        -- Update the line information that should be overwritten
84077        --
84078        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
84079                                          p_header_num   => 1);
84080        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
84081 
84082        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
84083 
84084        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
84085           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
84086        END IF;
84087 
84088       --
84089       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
84090       --
84091       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
84092           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
84093       ELSE
84094           ---------------------------------------------------------------------------------------------------
84095           -- 4262811a Switch Sign
84096           ---------------------------------------------------------------------------------------------------
84097           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
84098           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
84099                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
84100           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
84101                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
84102           -- 5132302
84103           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
84104                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
84105 
84106       END IF;
84107 
84108       -- 4955764
84109       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
84110       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
84111 
84112 
84113       XLA_AE_LINES_PKG.ValidateCurrentLine;
84114       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
84115 
84116       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
84117                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
84118                ,p_balance_type_code => l_balance_type_code);
84119 
84120    END IF;
84121 
84122    -----------------------------------------------------------------------------------------
84123    -- 4262811 Multiperiod Accounting
84124    -----------------------------------------------------------------------------------------
84125      -- No MPA option is assigned.
84126 
84127 
84128 END IF;
84129 END IF;
84130 --
84131 
84132 --
84133 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
84134    trace
84135       (p_msg      => 'END of AcctLineType_153'
84136       ,p_level    => C_LEVEL_PROCEDURE
84137       ,p_module   => l_log_module);
84138 END IF;
84139 --
84140 EXCEPTION
84141   WHEN xla_exceptions_pkg.application_exception THEN
84142       RAISE;
84143   WHEN OTHERS THEN
84144        xla_exceptions_pkg.raise_message
84145            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_153');
84146 END AcctLineType_153;
84147 --
84148 
84149 ---------------------------------------
84150 --
84151 -- PRIVATE FUNCTION
84152 --         AcctLineType_154
84153 --
84154 ---------------------------------------
84155 PROCEDURE AcctLineType_154 (
84156   p_application_id        IN NUMBER
84157  ,p_event_id              IN NUMBER
84158  ,p_calculate_acctd_flag  IN VARCHAR2
84159  ,p_calculate_g_l_flag    IN VARCHAR2
84160  ,p_actual_flag           IN OUT VARCHAR2
84161  ,p_balance_type_code     OUT VARCHAR2
84162  ,p_gain_or_loss_ref      OUT VARCHAR2
84163  
84164 --Cost Management Default Account
84165  , p_source_4            IN NUMBER
84166 --DISTRIBUTION_IDENTIFIER
84167  , p_source_11            IN NUMBER
84168 --Distribution Type
84169  , p_source_12            IN VARCHAR2
84170  , p_source_12_meaning    IN VARCHAR2
84171 --Entered Currency Code
84172  , p_source_15            IN VARCHAR2
84173 --Entered Amount
84174  , p_source_18            IN NUMBER
84175 --Currency Conversion Date
84176  , p_source_19            IN DATE
84177 --Currency Conversion Rate
84178  , p_source_20            IN NUMBER
84179 --Currency Conversion Type
84180  , p_source_21            IN VARCHAR2
84181 --Accounted Amount
84182  , p_source_22            IN NUMBER
84183 --Accounting Line Type
84184  , p_source_24            IN NUMBER
84185 )
84186 IS
84187 
84188 l_component_type              VARCHAR2(80);
84189 l_component_code              VARCHAR2(30);
84190 l_component_type_code         VARCHAR2(1);
84191 l_component_appl_id           INTEGER;
84192 l_amb_context_code            VARCHAR2(30);
84193 l_entity_code                 VARCHAR2(30);
84194 l_event_class_code            VARCHAR2(30);
84195 l_ae_header_id                NUMBER;
84196 l_event_type_code             VARCHAR2(30);
84197 l_line_definition_code        VARCHAR2(30);
84198 l_line_definition_owner_code  VARCHAR2(1);
84199 --
84200 -- adr variables
84201 l_segment                     VARCHAR2(30);
84202 l_ccid                        NUMBER;
84203 l_adr_transaction_coa_id      NUMBER;
84204 l_adr_accounting_coa_id       NUMBER;
84205 l_adr_flexfield_segment_code  VARCHAR2(30);
84206 l_adr_flex_value_set_id       NUMBER;
84207 l_adr_value_type_code         VARCHAR2(30);
84208 l_adr_value_combination_id    NUMBER;
84209 l_adr_value_segment_code      VARCHAR2(30);
84210 
84211 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
84212 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
84213 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
84214 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
84215 
84216 -- 4262811 Variables ------------------------------------------------------------------------------------------
84217 l_entered_amt_idx             NUMBER;
84218 l_accted_amt_idx              NUMBER;
84219 l_acc_rev_flag                VARCHAR2(1);
84220 l_accrual_line_num            NUMBER;
84221 l_tmp_amt                     NUMBER;
84222 l_acc_rev_natural_side_code   VARCHAR2(1);
84223 
84224 l_num_entries                 NUMBER;
84225 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
84226 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
84227 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
84228 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
84229 l_recog_line_1                NUMBER;
84230 l_recog_line_2                NUMBER;
84231 
84232 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
84233 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
84234 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
84235 
84236 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
84237 
84238 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
84239 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
84240 
84241 ---------------------------------------------------------------------------------------------------------------
84242 
84243 
84244 --
84245 -- bulk performance
84246 --
84247 l_balance_type_code           VARCHAR2(1);
84248 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
84249 l_log_module                  VARCHAR2(240);
84250 
84251 --
84252 -- Upgrade strategy
84253 --
84254 l_actual_upg_option           VARCHAR2(1);
84255 l_enc_upg_option           VARCHAR2(1);
84256 
84257 --
84258 BEGIN
84259 --
84260 IF g_log_enabled THEN
84261       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_154';
84262 END IF;
84263 --
84264 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
84265 
84266       trace
84267          (p_msg      => 'BEGIN of AcctLineType_154'
84268          ,p_level    => C_LEVEL_PROCEDURE
84269          ,p_module   => l_log_module);
84270 
84271 END IF;
84272 --
84273 l_component_type             := 'AMB_JLT';
84274 l_component_code             := 'INVENTORY_VALUATION';
84275 l_component_type_code        := 'S';
84276 l_component_appl_id          :=  707;
84277 l_amb_context_code           := 'DEFAULT';
84278 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
84279 l_event_class_code           := 'USER_DEFINE';
84280 l_event_type_code            := 'UDIR_INTERORG_SHIP';
84281 l_line_definition_owner_code := 'S';
84282 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP';
84283 --
84284 l_balance_type_code          := 'A';
84285 l_segment                     := NULL;
84286 l_ccid                        := NULL;
84287 l_adr_transaction_coa_id      := NULL;
84288 l_adr_accounting_coa_id       := NULL;
84289 l_adr_flexfield_segment_code  := NULL;
84290 l_adr_flex_value_set_id       := NULL;
84291 l_adr_value_type_code         := NULL;
84292 l_adr_value_combination_id    := NULL;
84293 l_adr_value_segment_code      := NULL;
84294 
84295 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
84296 l_bflow_class_code           := '';    -- 4219869 Business Flow
84297 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
84298 l_budgetary_control_flag     := 'N';
84299 
84300 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
84301 l_bflow_applied_to_amt       := NULL; -- 5132302
84302 l_entered_amt_idx            := NULL;          -- 4262811
84303 l_accted_amt_idx             := NULL;          -- 4262811
84304 l_acc_rev_flag               := NULL;          -- 4262811
84305 l_accrual_line_num           := NULL;          -- 4262811
84306 l_tmp_amt                    := NULL;          -- 4262811
84307 --
84308  
84309 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
84310     l_balance_type_code <> 'B' THEN
84311 IF NVL(p_source_24,9E125) =  1
84312  THEN 
84313 
84314    --
84315    XLA_AE_LINES_PKG.SetNewLine;
84316 
84317    p_balance_type_code          := l_balance_type_code;
84318    -- set the flag so later we will know whether the gain loss line needs to be created
84319    
84320    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
84321      p_actual_flag :='A';
84322    END IF;
84323 
84324    --
84325    -- bulk performance
84326    --
84327    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
84328                                       p_header_num   => 0); -- 4262811
84329    --
84330    -- set accounting line options
84331    --
84332    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
84333            p_natural_side_code          => 'D'
84334          , p_gain_or_loss_flag          => 'N'
84335          , p_gl_transfer_mode_code      => 'S'
84336          , p_acct_entry_type_code       => 'A'
84337          , p_switch_side_flag           => 'Y'
84338          , p_merge_duplicate_code       => 'N'
84339          );
84340    --
84341    l_acc_rev_natural_side_code := 'C';  -- 4262811
84342    -- 
84343    --
84344    -- set accounting line type info
84345    --
84346    xla_ae_lines_pkg.SetAcctLineType
84347       (p_component_type             => l_component_type
84348       ,p_event_type_code            => l_event_type_code
84349       ,p_line_definition_owner_code => l_line_definition_owner_code
84350       ,p_line_definition_code       => l_line_definition_code
84351       ,p_accounting_line_code       => l_component_code
84352       ,p_accounting_line_type_code  => l_component_type_code
84353       ,p_accounting_line_appl_id    => l_component_appl_id
84354       ,p_amb_context_code           => l_amb_context_code
84355       ,p_entity_code                => l_entity_code
84356       ,p_event_class_code           => l_event_class_code);
84357    --
84358    -- set accounting class
84359    --
84360    xla_ae_lines_pkg.SetAcctClass(
84361            p_accounting_class_code  => 'INVENTORY_VALUATION'
84362          , p_ae_header_id           => l_ae_header_id
84363          );
84364 
84365    --
84366    -- set rounding class
84367    --
84368    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
84369                       'INVENTORY_VALUATION';
84370 
84371    --
84372    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
84373    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
84374    --
84375    -- bulk performance
84376    --
84377    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
84378 
84379    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
84380       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
84381 
84382    -- 4955764
84383    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
84384       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
84385 
84386    -- 4458381 Public Sector Enh
84387    
84388    --
84389    -- set accounting attributes for the line type
84390    --
84391    l_entered_amt_idx := 3;
84392    l_accted_amt_idx  := 8;
84393    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
84394    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
84395    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
84396    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
84397    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
84398    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
84399    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
84400    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
84401    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
84402    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
84403    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
84404    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
84405    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
84406    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
84407    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
84408    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
84409    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
84410 
84411    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
84412    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
84413 
84414    ---------------------------------------------------------------------------------------------------------------
84415    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
84416    ---------------------------------------------------------------------------------------------------------------
84417    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
84418 
84419    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
84420    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
84421 
84422    IF xla_accounting_cache_pkg.GetValueChar
84423          (p_source_code         => 'LEDGER_CATEGORY_CODE'
84424          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
84425    AND l_bflow_method_code = 'PRIOR_ENTRY'
84426 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
84427    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
84428          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
84429        )
84430    THEN
84431          xla_ae_lines_pkg.BflowUpgEntry
84432            (p_business_method_code    => l_bflow_method_code
84433            ,p_business_class_code     => l_bflow_class_code
84434            ,p_balance_type            => l_balance_type_code);
84435    ELSE
84436       NULL;
84437 -- No business flow processing for business flow method of NONE.
84438    END IF;
84439 
84440    --
84441    -- call analytical criteria
84442    --
84443    
84444    --
84445    -- call description
84446    --
84447    -- No description or it is inherited.
84448    --
84449    -- call ADRs
84450    -- Bug 4922099
84451    --
84452    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
84453         (NVL(l_actual_upg_option, 'N') = 'O') OR
84454         (NVL(l_enc_upg_option, 'N') = 'O')
84455       )
84456    THEN
84457    NULL;
84458    --
84459    --
84460    
84461   l_ccid := AcctDerRule_4(
84462            p_application_id           => p_application_id
84463          , p_ae_header_id             => l_ae_header_id 
84464 , p_source_4 => p_source_4
84465          , x_transaction_coa_id       => l_adr_transaction_coa_id
84466          , x_accounting_coa_id        => l_adr_accounting_coa_id
84467          , x_value_type_code          => l_adr_value_type_code
84468          , p_side                     => 'NA'
84469    );
84470 
84471    xla_ae_lines_pkg.set_ccid(
84472     p_code_combination_id          => l_ccid
84473   , p_value_type_code              => l_adr_value_type_code
84474   , p_transaction_coa_id           => l_adr_transaction_coa_id
84475   , p_accounting_coa_id            => l_adr_accounting_coa_id
84476   , p_adr_code                     => 'CST_DEFAULT'
84477   , p_adr_type_code                => 'S'
84478   , p_component_type               => l_component_type
84479   , p_component_code               => l_component_code
84480   , p_component_type_code          => l_component_type_code
84481   , p_component_appl_id            => l_component_appl_id
84482   , p_amb_context_code             => l_amb_context_code
84483   , p_side                         => 'NA'
84484   );
84485 
84486 
84487    --
84488    --
84489    END IF;
84490    --
84491    -- Bug 4922099
84492    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
84493           (NVL(l_enc_upg_option, 'N') = 'O')
84494         ) AND
84495         (l_bflow_method_code = 'PRIOR_ENTRY')
84496       )
84497    THEN
84498       IF
84499       --
84500       1 = 2
84501       --
84502       THEN
84503       xla_accounting_err_pkg.build_message
84504                                     (p_appli_s_name            => 'XLA'
84505                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
84506                                     ,p_token_1                 => 'LINE_NUMBER'
84507                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
84508                                     ,p_token_2                 => 'LINE_TYPE_NAME'
84509                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
84510                                                                              l_component_type
84511                                                                             ,l_component_code
84512                                                                             ,l_component_type_code
84513                                                                             ,l_component_appl_id
84514                                                                             ,l_amb_context_code
84515                                                                             ,l_entity_code
84516                                                                             ,l_event_class_code
84517                                                                            )
84518                                     ,p_token_3                 => 'OWNER'
84519                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
84520                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
84521                                                                           ,p_lookup_code    => l_component_type_code
84522                                                                          )
84523                                     ,p_token_4                 => 'PRODUCT_NAME'
84524                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
84525                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
84526                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
84527                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
84528                                     ,p_ae_header_id            =>  NULL
84529                                        );
84530 
84531         IF (C_LEVEL_ERROR>= g_log_level) THEN
84532                  trace
84533                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
84534                       ,p_level    => C_LEVEL_ERROR
84535                       ,p_module   => l_log_module);
84536         END IF;
84537       END IF;
84538    END IF;
84539    --
84540    --
84541    ------------------------------------------------------------------------------------------------
84542    -- 4219869 Business Flow
84543    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
84544    -- Prior Entry.  Currently, the following code is always generated.
84545    ------------------------------------------------------------------------------------------------
84546    XLA_AE_LINES_PKG.ValidateCurrentLine;
84547 
84548    ------------------------------------------------------------------------------------
84549    -- 4219869 Business Flow
84550    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
84551    ------------------------------------------------------------------------------------
84552    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
84553 
84554    ----------------------------------------------------------------------------------
84555    -- 4219869 Business Flow
84556    -- Update journal entry status -- Need to generate this within IF <condition>
84557    ----------------------------------------------------------------------------------
84558    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
84559          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
84560          ,p_balance_type_code => l_balance_type_code
84561          );
84562 
84563    -------------------------------------------------------------------------------------------
84564    -- 4262811 - Generate the Accrual Reversal lines
84565    -------------------------------------------------------------------------------------------
84566    BEGIN
84567       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
84568                               (g_array_event(p_event_id).array_value_num('header_index'));
84569       IF l_acc_rev_flag IS NULL THEN
84570          l_acc_rev_flag := 'N';
84571       END IF;
84572    EXCEPTION
84573       WHEN OTHERS THEN
84574          l_acc_rev_flag := 'N';
84575    END;
84576    --
84577    IF (l_acc_rev_flag = 'Y') THEN
84578 
84579        -- 4645092  ------------------------------------------------------------------------------
84580        -- To allow MPA report to determine if it should generate report process
84581        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
84582        ------------------------------------------------------------------------------------------
84583 
84584        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
84585        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
84586    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
84587    -- call ADRs
84588    -- Bug 4922099
84589    --
84590    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
84591         (NVL(l_actual_upg_option, 'N') = 'O') OR
84592         (NVL(l_enc_upg_option, 'N') = 'O')
84593       )
84594    THEN
84595    NULL;
84596    --
84597    --
84598    
84599   l_ccid := AcctDerRule_4(
84600            p_application_id           => p_application_id
84601          , p_ae_header_id             => l_ae_header_id 
84602 , p_source_4 => p_source_4
84603          , x_transaction_coa_id       => l_adr_transaction_coa_id
84604          , x_accounting_coa_id        => l_adr_accounting_coa_id
84605          , x_value_type_code          => l_adr_value_type_code
84606          , p_side                     => 'NA'
84607    );
84608 
84609    xla_ae_lines_pkg.set_ccid(
84610     p_code_combination_id          => l_ccid
84611   , p_value_type_code              => l_adr_value_type_code
84612   , p_transaction_coa_id           => l_adr_transaction_coa_id
84613   , p_accounting_coa_id            => l_adr_accounting_coa_id
84614   , p_adr_code                     => 'CST_DEFAULT'
84615   , p_adr_type_code                => 'S'
84616   , p_component_type               => l_component_type
84617   , p_component_code               => l_component_code
84618   , p_component_type_code          => l_component_type_code
84619   , p_component_appl_id            => l_component_appl_id
84620   , p_amb_context_code             => l_amb_context_code
84621   , p_side                         => 'NA'
84622   );
84623 
84624 
84625    --
84626    --
84627    END IF;
84628 
84629        --
84630        -- Update the line information that should be overwritten
84631        --
84632        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
84633                                          p_header_num   => 1);
84634        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
84635 
84636        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
84637 
84638        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
84639           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
84640        END IF;
84641 
84642       --
84643       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
84644       --
84645       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
84646           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
84647       ELSE
84648           ---------------------------------------------------------------------------------------------------
84649           -- 4262811a Switch Sign
84650           ---------------------------------------------------------------------------------------------------
84651           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
84652           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
84653                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
84654           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
84655                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
84656           -- 5132302
84657           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
84658                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
84659 
84660       END IF;
84661 
84662       -- 4955764
84663       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
84664       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
84665 
84666 
84667       XLA_AE_LINES_PKG.ValidateCurrentLine;
84668       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
84669 
84670       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
84671                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
84672                ,p_balance_type_code => l_balance_type_code);
84673 
84674    END IF;
84675 
84676    -----------------------------------------------------------------------------------------
84677    -- 4262811 Multiperiod Accounting
84678    -----------------------------------------------------------------------------------------
84679      -- No MPA option is assigned.
84680 
84681 
84682 END IF;
84683 END IF;
84684 --
84685 
84686 --
84687 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
84688    trace
84689       (p_msg      => 'END of AcctLineType_154'
84690       ,p_level    => C_LEVEL_PROCEDURE
84691       ,p_module   => l_log_module);
84692 END IF;
84693 --
84694 EXCEPTION
84695   WHEN xla_exceptions_pkg.application_exception THEN
84696       RAISE;
84697   WHEN OTHERS THEN
84698        xla_exceptions_pkg.raise_message
84699            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_154');
84700 END AcctLineType_154;
84701 --
84702 
84703 ---------------------------------------
84704 --
84705 -- PRIVATE FUNCTION
84706 --         AcctLineType_155
84707 --
84708 ---------------------------------------
84709 PROCEDURE AcctLineType_155 (
84710   p_application_id        IN NUMBER
84711  ,p_event_id              IN NUMBER
84712  ,p_calculate_acctd_flag  IN VARCHAR2
84713  ,p_calculate_g_l_flag    IN VARCHAR2
84714  ,p_actual_flag           IN OUT VARCHAR2
84715  ,p_balance_type_code     OUT VARCHAR2
84716  ,p_gain_or_loss_ref      OUT VARCHAR2
84717  
84718 --Cost Management Default Account
84719  , p_source_4            IN NUMBER
84720 --DISTRIBUTION_IDENTIFIER
84721  , p_source_11            IN NUMBER
84722 --Distribution Type
84723  , p_source_12            IN VARCHAR2
84724  , p_source_12_meaning    IN VARCHAR2
84725 --Entered Currency Code
84726  , p_source_15            IN VARCHAR2
84727 --Entered Amount
84728  , p_source_18            IN NUMBER
84729 --Currency Conversion Date
84730  , p_source_19            IN DATE
84731 --Currency Conversion Rate
84732  , p_source_20            IN NUMBER
84733 --Currency Conversion Type
84734  , p_source_21            IN VARCHAR2
84735 --Accounted Amount
84736  , p_source_22            IN NUMBER
84737 --Accounting Line Type
84738  , p_source_24            IN NUMBER
84739 )
84740 IS
84741 
84742 l_component_type              VARCHAR2(80);
84743 l_component_code              VARCHAR2(30);
84744 l_component_type_code         VARCHAR2(1);
84745 l_component_appl_id           INTEGER;
84746 l_amb_context_code            VARCHAR2(30);
84747 l_entity_code                 VARCHAR2(30);
84748 l_event_class_code            VARCHAR2(30);
84749 l_ae_header_id                NUMBER;
84750 l_event_type_code             VARCHAR2(30);
84751 l_line_definition_code        VARCHAR2(30);
84752 l_line_definition_owner_code  VARCHAR2(1);
84753 --
84754 -- adr variables
84755 l_segment                     VARCHAR2(30);
84756 l_ccid                        NUMBER;
84757 l_adr_transaction_coa_id      NUMBER;
84758 l_adr_accounting_coa_id       NUMBER;
84759 l_adr_flexfield_segment_code  VARCHAR2(30);
84760 l_adr_flex_value_set_id       NUMBER;
84761 l_adr_value_type_code         VARCHAR2(30);
84762 l_adr_value_combination_id    NUMBER;
84763 l_adr_value_segment_code      VARCHAR2(30);
84764 
84765 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
84766 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
84767 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
84768 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
84769 
84770 -- 4262811 Variables ------------------------------------------------------------------------------------------
84771 l_entered_amt_idx             NUMBER;
84772 l_accted_amt_idx              NUMBER;
84773 l_acc_rev_flag                VARCHAR2(1);
84774 l_accrual_line_num            NUMBER;
84775 l_tmp_amt                     NUMBER;
84776 l_acc_rev_natural_side_code   VARCHAR2(1);
84777 
84778 l_num_entries                 NUMBER;
84779 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
84780 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
84781 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
84782 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
84783 l_recog_line_1                NUMBER;
84784 l_recog_line_2                NUMBER;
84785 
84786 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
84787 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
84788 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
84789 
84790 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
84791 
84792 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
84793 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
84794 
84795 ---------------------------------------------------------------------------------------------------------------
84796 
84797 
84798 --
84799 -- bulk performance
84800 --
84801 l_balance_type_code           VARCHAR2(1);
84802 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
84803 l_log_module                  VARCHAR2(240);
84804 
84805 --
84806 -- Upgrade strategy
84807 --
84808 l_actual_upg_option           VARCHAR2(1);
84809 l_enc_upg_option           VARCHAR2(1);
84810 
84811 --
84812 BEGIN
84813 --
84814 IF g_log_enabled THEN
84815       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_155';
84816 END IF;
84817 --
84818 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
84819 
84820       trace
84821          (p_msg      => 'BEGIN of AcctLineType_155'
84822          ,p_level    => C_LEVEL_PROCEDURE
84823          ,p_module   => l_log_module);
84824 
84825 END IF;
84826 --
84827 l_component_type             := 'AMB_JLT';
84828 l_component_code             := 'INVENTORY_VALUATION';
84829 l_component_type_code        := 'S';
84830 l_component_appl_id          :=  707;
84831 l_amb_context_code           := 'DEFAULT';
84832 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
84833 l_event_class_code           := 'CON_INV_OWNR_TXFR';
84834 l_event_type_code            := 'CON_INV_OWNR_TXFR_ALL';
84835 l_line_definition_owner_code := 'S';
84836 l_line_definition_code       := 'CON_INV_OWNR_TXFR';
84837 --
84838 l_balance_type_code          := 'A';
84839 l_segment                     := NULL;
84840 l_ccid                        := NULL;
84841 l_adr_transaction_coa_id      := NULL;
84842 l_adr_accounting_coa_id       := NULL;
84843 l_adr_flexfield_segment_code  := NULL;
84844 l_adr_flex_value_set_id       := NULL;
84845 l_adr_value_type_code         := NULL;
84846 l_adr_value_combination_id    := NULL;
84847 l_adr_value_segment_code      := NULL;
84848 
84849 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
84850 l_bflow_class_code           := '';    -- 4219869 Business Flow
84851 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
84852 l_budgetary_control_flag     := 'N';
84853 
84854 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
84855 l_bflow_applied_to_amt       := NULL; -- 5132302
84856 l_entered_amt_idx            := NULL;          -- 4262811
84857 l_accted_amt_idx             := NULL;          -- 4262811
84858 l_acc_rev_flag               := NULL;          -- 4262811
84859 l_accrual_line_num           := NULL;          -- 4262811
84860 l_tmp_amt                    := NULL;          -- 4262811
84861 --
84862  
84863 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
84864     l_balance_type_code <> 'B' THEN
84865 IF NVL(p_source_24,9E125) =  1
84866  THEN 
84867 
84868    --
84869    XLA_AE_LINES_PKG.SetNewLine;
84870 
84871    p_balance_type_code          := l_balance_type_code;
84872    -- set the flag so later we will know whether the gain loss line needs to be created
84873    
84874    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
84875      p_actual_flag :='A';
84876    END IF;
84877 
84878    --
84879    -- bulk performance
84880    --
84881    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
84882                                       p_header_num   => 0); -- 4262811
84883    --
84884    -- set accounting line options
84885    --
84886    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
84887            p_natural_side_code          => 'D'
84888          , p_gain_or_loss_flag          => 'N'
84889          , p_gl_transfer_mode_code      => 'S'
84890          , p_acct_entry_type_code       => 'A'
84891          , p_switch_side_flag           => 'Y'
84892          , p_merge_duplicate_code       => 'N'
84893          );
84894    --
84895    l_acc_rev_natural_side_code := 'C';  -- 4262811
84896    -- 
84897    --
84898    -- set accounting line type info
84899    --
84900    xla_ae_lines_pkg.SetAcctLineType
84901       (p_component_type             => l_component_type
84902       ,p_event_type_code            => l_event_type_code
84903       ,p_line_definition_owner_code => l_line_definition_owner_code
84904       ,p_line_definition_code       => l_line_definition_code
84905       ,p_accounting_line_code       => l_component_code
84906       ,p_accounting_line_type_code  => l_component_type_code
84907       ,p_accounting_line_appl_id    => l_component_appl_id
84908       ,p_amb_context_code           => l_amb_context_code
84909       ,p_entity_code                => l_entity_code
84910       ,p_event_class_code           => l_event_class_code);
84911    --
84912    -- set accounting class
84913    --
84914    xla_ae_lines_pkg.SetAcctClass(
84915            p_accounting_class_code  => 'INVENTORY_VALUATION'
84916          , p_ae_header_id           => l_ae_header_id
84917          );
84918 
84919    --
84920    -- set rounding class
84921    --
84922    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
84923                       'INVENTORY_VALUATION';
84924 
84925    --
84926    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
84927    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
84928    --
84929    -- bulk performance
84930    --
84931    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
84932 
84933    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
84934       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
84935 
84936    -- 4955764
84937    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
84938       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
84939 
84940    -- 4458381 Public Sector Enh
84941    
84942    --
84943    -- set accounting attributes for the line type
84944    --
84945    l_entered_amt_idx := 3;
84946    l_accted_amt_idx  := 8;
84947    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
84948    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
84949    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
84950    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
84951    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
84952    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
84953    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
84954    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
84955    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
84956    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
84957    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
84958    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
84959    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
84960    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
84961    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
84962    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
84963    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
84964 
84965    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
84966    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
84967 
84968    ---------------------------------------------------------------------------------------------------------------
84969    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
84970    ---------------------------------------------------------------------------------------------------------------
84971    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
84972 
84973    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
84974    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
84975 
84976    IF xla_accounting_cache_pkg.GetValueChar
84977          (p_source_code         => 'LEDGER_CATEGORY_CODE'
84978          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
84979    AND l_bflow_method_code = 'PRIOR_ENTRY'
84980 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
84981    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
84982          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
84983        )
84984    THEN
84985          xla_ae_lines_pkg.BflowUpgEntry
84986            (p_business_method_code    => l_bflow_method_code
84987            ,p_business_class_code     => l_bflow_class_code
84988            ,p_balance_type            => l_balance_type_code);
84989    ELSE
84990       NULL;
84991 -- No business flow processing for business flow method of NONE.
84992    END IF;
84993 
84994    --
84995    -- call analytical criteria
84996    --
84997    
84998    --
84999    -- call description
85000    --
85001    -- No description or it is inherited.
85002    --
85003    -- call ADRs
85004    -- Bug 4922099
85005    --
85006    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
85007         (NVL(l_actual_upg_option, 'N') = 'O') OR
85008         (NVL(l_enc_upg_option, 'N') = 'O')
85009       )
85010    THEN
85011    NULL;
85012    --
85013    --
85014    
85015   l_ccid := AcctDerRule_4(
85016            p_application_id           => p_application_id
85017          , p_ae_header_id             => l_ae_header_id 
85018 , p_source_4 => p_source_4
85019          , x_transaction_coa_id       => l_adr_transaction_coa_id
85020          , x_accounting_coa_id        => l_adr_accounting_coa_id
85021          , x_value_type_code          => l_adr_value_type_code
85022          , p_side                     => 'NA'
85023    );
85024 
85025    xla_ae_lines_pkg.set_ccid(
85026     p_code_combination_id          => l_ccid
85027   , p_value_type_code              => l_adr_value_type_code
85028   , p_transaction_coa_id           => l_adr_transaction_coa_id
85029   , p_accounting_coa_id            => l_adr_accounting_coa_id
85030   , p_adr_code                     => 'CST_DEFAULT'
85031   , p_adr_type_code                => 'S'
85032   , p_component_type               => l_component_type
85033   , p_component_code               => l_component_code
85034   , p_component_type_code          => l_component_type_code
85035   , p_component_appl_id            => l_component_appl_id
85036   , p_amb_context_code             => l_amb_context_code
85037   , p_side                         => 'NA'
85038   );
85039 
85040 
85041    --
85042    --
85043    END IF;
85044    --
85045    -- Bug 4922099
85046    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
85047           (NVL(l_enc_upg_option, 'N') = 'O')
85048         ) AND
85049         (l_bflow_method_code = 'PRIOR_ENTRY')
85050       )
85051    THEN
85052       IF
85053       --
85054       1 = 2
85055       --
85056       THEN
85057       xla_accounting_err_pkg.build_message
85058                                     (p_appli_s_name            => 'XLA'
85059                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
85060                                     ,p_token_1                 => 'LINE_NUMBER'
85061                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
85062                                     ,p_token_2                 => 'LINE_TYPE_NAME'
85063                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
85064                                                                              l_component_type
85065                                                                             ,l_component_code
85066                                                                             ,l_component_type_code
85067                                                                             ,l_component_appl_id
85068                                                                             ,l_amb_context_code
85069                                                                             ,l_entity_code
85070                                                                             ,l_event_class_code
85071                                                                            )
85072                                     ,p_token_3                 => 'OWNER'
85073                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
85074                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
85075                                                                           ,p_lookup_code    => l_component_type_code
85076                                                                          )
85077                                     ,p_token_4                 => 'PRODUCT_NAME'
85078                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
85079                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
85080                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
85081                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
85082                                     ,p_ae_header_id            =>  NULL
85083                                        );
85084 
85085         IF (C_LEVEL_ERROR>= g_log_level) THEN
85086                  trace
85087                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
85088                       ,p_level    => C_LEVEL_ERROR
85089                       ,p_module   => l_log_module);
85090         END IF;
85091       END IF;
85092    END IF;
85093    --
85094    --
85095    ------------------------------------------------------------------------------------------------
85096    -- 4219869 Business Flow
85097    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
85098    -- Prior Entry.  Currently, the following code is always generated.
85099    ------------------------------------------------------------------------------------------------
85100    XLA_AE_LINES_PKG.ValidateCurrentLine;
85101 
85102    ------------------------------------------------------------------------------------
85103    -- 4219869 Business Flow
85104    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
85105    ------------------------------------------------------------------------------------
85106    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
85107 
85108    ----------------------------------------------------------------------------------
85109    -- 4219869 Business Flow
85110    -- Update journal entry status -- Need to generate this within IF <condition>
85111    ----------------------------------------------------------------------------------
85112    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
85113          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
85114          ,p_balance_type_code => l_balance_type_code
85115          );
85116 
85117    -------------------------------------------------------------------------------------------
85118    -- 4262811 - Generate the Accrual Reversal lines
85119    -------------------------------------------------------------------------------------------
85120    BEGIN
85121       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
85122                               (g_array_event(p_event_id).array_value_num('header_index'));
85123       IF l_acc_rev_flag IS NULL THEN
85124          l_acc_rev_flag := 'N';
85125       END IF;
85126    EXCEPTION
85127       WHEN OTHERS THEN
85128          l_acc_rev_flag := 'N';
85129    END;
85130    --
85131    IF (l_acc_rev_flag = 'Y') THEN
85132 
85133        -- 4645092  ------------------------------------------------------------------------------
85134        -- To allow MPA report to determine if it should generate report process
85135        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
85136        ------------------------------------------------------------------------------------------
85137 
85138        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
85139        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
85140    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
85141    -- call ADRs
85142    -- Bug 4922099
85143    --
85144    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
85145         (NVL(l_actual_upg_option, 'N') = 'O') OR
85146         (NVL(l_enc_upg_option, 'N') = 'O')
85147       )
85148    THEN
85149    NULL;
85150    --
85151    --
85152    
85153   l_ccid := AcctDerRule_4(
85154            p_application_id           => p_application_id
85155          , p_ae_header_id             => l_ae_header_id 
85156 , p_source_4 => p_source_4
85157          , x_transaction_coa_id       => l_adr_transaction_coa_id
85158          , x_accounting_coa_id        => l_adr_accounting_coa_id
85159          , x_value_type_code          => l_adr_value_type_code
85160          , p_side                     => 'NA'
85161    );
85162 
85163    xla_ae_lines_pkg.set_ccid(
85164     p_code_combination_id          => l_ccid
85165   , p_value_type_code              => l_adr_value_type_code
85166   , p_transaction_coa_id           => l_adr_transaction_coa_id
85167   , p_accounting_coa_id            => l_adr_accounting_coa_id
85168   , p_adr_code                     => 'CST_DEFAULT'
85169   , p_adr_type_code                => 'S'
85170   , p_component_type               => l_component_type
85171   , p_component_code               => l_component_code
85172   , p_component_type_code          => l_component_type_code
85173   , p_component_appl_id            => l_component_appl_id
85174   , p_amb_context_code             => l_amb_context_code
85175   , p_side                         => 'NA'
85176   );
85177 
85178 
85179    --
85180    --
85181    END IF;
85182 
85183        --
85184        -- Update the line information that should be overwritten
85185        --
85186        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
85187                                          p_header_num   => 1);
85188        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
85189 
85190        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
85191 
85192        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
85193           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
85194        END IF;
85195 
85196       --
85197       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
85198       --
85199       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
85200           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
85201       ELSE
85202           ---------------------------------------------------------------------------------------------------
85203           -- 4262811a Switch Sign
85204           ---------------------------------------------------------------------------------------------------
85205           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
85206           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
85207                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85208           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
85209                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85210           -- 5132302
85211           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
85212                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85213 
85214       END IF;
85215 
85216       -- 4955764
85217       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
85218       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
85219 
85220 
85221       XLA_AE_LINES_PKG.ValidateCurrentLine;
85222       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
85223 
85224       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
85225                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
85226                ,p_balance_type_code => l_balance_type_code);
85227 
85228    END IF;
85229 
85230    -----------------------------------------------------------------------------------------
85231    -- 4262811 Multiperiod Accounting
85232    -----------------------------------------------------------------------------------------
85233      -- No MPA option is assigned.
85234 
85235 
85236 END IF;
85237 END IF;
85238 --
85239 
85240 --
85241 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85242    trace
85243       (p_msg      => 'END of AcctLineType_155'
85244       ,p_level    => C_LEVEL_PROCEDURE
85245       ,p_module   => l_log_module);
85246 END IF;
85247 --
85248 EXCEPTION
85249   WHEN xla_exceptions_pkg.application_exception THEN
85250       RAISE;
85251   WHEN OTHERS THEN
85252        xla_exceptions_pkg.raise_message
85253            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_155');
85254 END AcctLineType_155;
85255 --
85256 
85257 ---------------------------------------
85258 --
85259 -- PRIVATE FUNCTION
85260 --         AcctLineType_156
85261 --
85262 ---------------------------------------
85263 PROCEDURE AcctLineType_156 (
85264   p_application_id        IN NUMBER
85265  ,p_event_id              IN NUMBER
85266  ,p_calculate_acctd_flag  IN VARCHAR2
85267  ,p_calculate_g_l_flag    IN VARCHAR2
85268  ,p_actual_flag           IN OUT VARCHAR2
85269  ,p_balance_type_code     OUT VARCHAR2
85270  ,p_gain_or_loss_ref      OUT VARCHAR2
85271  
85272 --Cost Management Default Account
85273  , p_source_4            IN NUMBER
85274 --DISTRIBUTION_IDENTIFIER
85275  , p_source_11            IN NUMBER
85276 --Distribution Type
85277  , p_source_12            IN VARCHAR2
85278  , p_source_12_meaning    IN VARCHAR2
85279 --Entered Currency Code
85280  , p_source_15            IN VARCHAR2
85281 --Entered Amount
85282  , p_source_18            IN NUMBER
85283 --Currency Conversion Date
85284  , p_source_19            IN DATE
85285 --Currency Conversion Rate
85286  , p_source_20            IN NUMBER
85287 --Currency Conversion Type
85288  , p_source_21            IN VARCHAR2
85289 --Accounted Amount
85290  , p_source_22            IN NUMBER
85291 --Accounting Line Type
85292  , p_source_24            IN NUMBER
85293 )
85294 IS
85295 
85296 l_component_type              VARCHAR2(80);
85297 l_component_code              VARCHAR2(30);
85298 l_component_type_code         VARCHAR2(1);
85299 l_component_appl_id           INTEGER;
85300 l_amb_context_code            VARCHAR2(30);
85301 l_entity_code                 VARCHAR2(30);
85302 l_event_class_code            VARCHAR2(30);
85303 l_ae_header_id                NUMBER;
85304 l_event_type_code             VARCHAR2(30);
85305 l_line_definition_code        VARCHAR2(30);
85306 l_line_definition_owner_code  VARCHAR2(1);
85307 --
85308 -- adr variables
85309 l_segment                     VARCHAR2(30);
85310 l_ccid                        NUMBER;
85311 l_adr_transaction_coa_id      NUMBER;
85312 l_adr_accounting_coa_id       NUMBER;
85313 l_adr_flexfield_segment_code  VARCHAR2(30);
85314 l_adr_flex_value_set_id       NUMBER;
85315 l_adr_value_type_code         VARCHAR2(30);
85316 l_adr_value_combination_id    NUMBER;
85317 l_adr_value_segment_code      VARCHAR2(30);
85318 
85319 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
85320 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
85321 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
85322 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
85323 
85324 -- 4262811 Variables ------------------------------------------------------------------------------------------
85325 l_entered_amt_idx             NUMBER;
85326 l_accted_amt_idx              NUMBER;
85327 l_acc_rev_flag                VARCHAR2(1);
85328 l_accrual_line_num            NUMBER;
85329 l_tmp_amt                     NUMBER;
85330 l_acc_rev_natural_side_code   VARCHAR2(1);
85331 
85332 l_num_entries                 NUMBER;
85333 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
85334 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
85335 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
85336 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
85337 l_recog_line_1                NUMBER;
85338 l_recog_line_2                NUMBER;
85339 
85340 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
85341 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
85342 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
85343 
85344 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
85345 
85346 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
85347 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
85348 
85349 ---------------------------------------------------------------------------------------------------------------
85350 
85351 
85352 --
85353 -- bulk performance
85354 --
85355 l_balance_type_code           VARCHAR2(1);
85356 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
85357 l_log_module                  VARCHAR2(240);
85358 
85359 --
85360 -- Upgrade strategy
85361 --
85362 l_actual_upg_option           VARCHAR2(1);
85363 l_enc_upg_option           VARCHAR2(1);
85364 
85365 --
85366 BEGIN
85367 --
85368 IF g_log_enabled THEN
85369       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_156';
85370 END IF;
85371 --
85372 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85373 
85374       trace
85375          (p_msg      => 'BEGIN of AcctLineType_156'
85376          ,p_level    => C_LEVEL_PROCEDURE
85377          ,p_module   => l_log_module);
85378 
85379 END IF;
85380 --
85381 l_component_type             := 'AMB_JLT';
85382 l_component_code             := 'INVENTORY_VALUATION';
85383 l_component_type_code        := 'S';
85384 l_component_appl_id          :=  707;
85385 l_amb_context_code           := 'DEFAULT';
85386 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
85387 l_event_class_code           := 'DIR_INTERORG_SHIP';
85388 l_event_type_code            := 'DIR_INTERORG_SHIP_ALL';
85389 l_line_definition_owner_code := 'S';
85390 l_line_definition_code       := 'DIRECT_INTERORG_SHIP';
85391 --
85392 l_balance_type_code          := 'A';
85393 l_segment                     := NULL;
85394 l_ccid                        := NULL;
85395 l_adr_transaction_coa_id      := NULL;
85396 l_adr_accounting_coa_id       := NULL;
85397 l_adr_flexfield_segment_code  := NULL;
85398 l_adr_flex_value_set_id       := NULL;
85399 l_adr_value_type_code         := NULL;
85400 l_adr_value_combination_id    := NULL;
85401 l_adr_value_segment_code      := NULL;
85402 
85403 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
85404 l_bflow_class_code           := '';    -- 4219869 Business Flow
85405 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
85406 l_budgetary_control_flag     := 'N';
85407 
85408 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
85409 l_bflow_applied_to_amt       := NULL; -- 5132302
85410 l_entered_amt_idx            := NULL;          -- 4262811
85411 l_accted_amt_idx             := NULL;          -- 4262811
85412 l_acc_rev_flag               := NULL;          -- 4262811
85413 l_accrual_line_num           := NULL;          -- 4262811
85414 l_tmp_amt                    := NULL;          -- 4262811
85415 --
85416  
85417 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
85418     l_balance_type_code <> 'B' THEN
85419 IF NVL(p_source_24,9E125) =  1
85420  THEN 
85421 
85422    --
85423    XLA_AE_LINES_PKG.SetNewLine;
85424 
85425    p_balance_type_code          := l_balance_type_code;
85426    -- set the flag so later we will know whether the gain loss line needs to be created
85427    
85428    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
85429      p_actual_flag :='A';
85430    END IF;
85431 
85432    --
85433    -- bulk performance
85434    --
85435    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
85436                                       p_header_num   => 0); -- 4262811
85437    --
85438    -- set accounting line options
85439    --
85440    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
85441            p_natural_side_code          => 'D'
85442          , p_gain_or_loss_flag          => 'N'
85443          , p_gl_transfer_mode_code      => 'S'
85444          , p_acct_entry_type_code       => 'A'
85445          , p_switch_side_flag           => 'Y'
85446          , p_merge_duplicate_code       => 'N'
85447          );
85448    --
85449    l_acc_rev_natural_side_code := 'C';  -- 4262811
85450    -- 
85451    --
85452    -- set accounting line type info
85453    --
85454    xla_ae_lines_pkg.SetAcctLineType
85455       (p_component_type             => l_component_type
85456       ,p_event_type_code            => l_event_type_code
85457       ,p_line_definition_owner_code => l_line_definition_owner_code
85458       ,p_line_definition_code       => l_line_definition_code
85459       ,p_accounting_line_code       => l_component_code
85460       ,p_accounting_line_type_code  => l_component_type_code
85461       ,p_accounting_line_appl_id    => l_component_appl_id
85462       ,p_amb_context_code           => l_amb_context_code
85463       ,p_entity_code                => l_entity_code
85464       ,p_event_class_code           => l_event_class_code);
85465    --
85466    -- set accounting class
85467    --
85468    xla_ae_lines_pkg.SetAcctClass(
85469            p_accounting_class_code  => 'INVENTORY_VALUATION'
85470          , p_ae_header_id           => l_ae_header_id
85471          );
85472 
85473    --
85474    -- set rounding class
85475    --
85476    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
85477                       'INVENTORY_VALUATION';
85478 
85479    --
85480    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
85481    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
85482    --
85483    -- bulk performance
85484    --
85485    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
85486 
85487    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
85488       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
85489 
85490    -- 4955764
85491    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
85492       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
85493 
85494    -- 4458381 Public Sector Enh
85495    
85496    --
85497    -- set accounting attributes for the line type
85498    --
85499    l_entered_amt_idx := 3;
85500    l_accted_amt_idx  := 8;
85501    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
85502    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
85503    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
85504    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
85505    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
85506    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
85507    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
85508    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
85509    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
85510    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
85511    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
85512    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
85513    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
85514    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
85515    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
85516    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
85517    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
85518 
85519    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
85520    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
85521 
85522    ---------------------------------------------------------------------------------------------------------------
85523    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
85524    ---------------------------------------------------------------------------------------------------------------
85525    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
85526 
85527    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
85528    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
85529 
85530    IF xla_accounting_cache_pkg.GetValueChar
85531          (p_source_code         => 'LEDGER_CATEGORY_CODE'
85532          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
85533    AND l_bflow_method_code = 'PRIOR_ENTRY'
85534 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
85535    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
85536          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
85537        )
85538    THEN
85539          xla_ae_lines_pkg.BflowUpgEntry
85540            (p_business_method_code    => l_bflow_method_code
85541            ,p_business_class_code     => l_bflow_class_code
85542            ,p_balance_type            => l_balance_type_code);
85543    ELSE
85544       NULL;
85545 -- No business flow processing for business flow method of NONE.
85546    END IF;
85547 
85548    --
85549    -- call analytical criteria
85550    --
85551    
85552    --
85553    -- call description
85554    --
85555    -- No description or it is inherited.
85556    --
85557    -- call ADRs
85558    -- Bug 4922099
85559    --
85560    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
85561         (NVL(l_actual_upg_option, 'N') = 'O') OR
85562         (NVL(l_enc_upg_option, 'N') = 'O')
85563       )
85564    THEN
85565    NULL;
85566    --
85567    --
85568    
85569   l_ccid := AcctDerRule_4(
85570            p_application_id           => p_application_id
85571          , p_ae_header_id             => l_ae_header_id 
85572 , p_source_4 => p_source_4
85573          , x_transaction_coa_id       => l_adr_transaction_coa_id
85574          , x_accounting_coa_id        => l_adr_accounting_coa_id
85575          , x_value_type_code          => l_adr_value_type_code
85576          , p_side                     => 'NA'
85577    );
85578 
85579    xla_ae_lines_pkg.set_ccid(
85580     p_code_combination_id          => l_ccid
85581   , p_value_type_code              => l_adr_value_type_code
85582   , p_transaction_coa_id           => l_adr_transaction_coa_id
85583   , p_accounting_coa_id            => l_adr_accounting_coa_id
85584   , p_adr_code                     => 'CST_DEFAULT'
85585   , p_adr_type_code                => 'S'
85586   , p_component_type               => l_component_type
85587   , p_component_code               => l_component_code
85588   , p_component_type_code          => l_component_type_code
85589   , p_component_appl_id            => l_component_appl_id
85590   , p_amb_context_code             => l_amb_context_code
85591   , p_side                         => 'NA'
85592   );
85593 
85594 
85595    --
85596    --
85597    END IF;
85598    --
85599    -- Bug 4922099
85600    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
85601           (NVL(l_enc_upg_option, 'N') = 'O')
85602         ) AND
85603         (l_bflow_method_code = 'PRIOR_ENTRY')
85604       )
85605    THEN
85606       IF
85607       --
85608       1 = 2
85609       --
85610       THEN
85611       xla_accounting_err_pkg.build_message
85612                                     (p_appli_s_name            => 'XLA'
85613                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
85614                                     ,p_token_1                 => 'LINE_NUMBER'
85615                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
85616                                     ,p_token_2                 => 'LINE_TYPE_NAME'
85617                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
85618                                                                              l_component_type
85619                                                                             ,l_component_code
85620                                                                             ,l_component_type_code
85621                                                                             ,l_component_appl_id
85622                                                                             ,l_amb_context_code
85623                                                                             ,l_entity_code
85624                                                                             ,l_event_class_code
85625                                                                            )
85626                                     ,p_token_3                 => 'OWNER'
85627                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
85628                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
85629                                                                           ,p_lookup_code    => l_component_type_code
85630                                                                          )
85631                                     ,p_token_4                 => 'PRODUCT_NAME'
85632                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
85633                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
85634                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
85635                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
85636                                     ,p_ae_header_id            =>  NULL
85637                                        );
85638 
85639         IF (C_LEVEL_ERROR>= g_log_level) THEN
85640                  trace
85641                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
85642                       ,p_level    => C_LEVEL_ERROR
85643                       ,p_module   => l_log_module);
85644         END IF;
85645       END IF;
85646    END IF;
85647    --
85648    --
85649    ------------------------------------------------------------------------------------------------
85650    -- 4219869 Business Flow
85651    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
85652    -- Prior Entry.  Currently, the following code is always generated.
85653    ------------------------------------------------------------------------------------------------
85654    XLA_AE_LINES_PKG.ValidateCurrentLine;
85655 
85656    ------------------------------------------------------------------------------------
85657    -- 4219869 Business Flow
85658    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
85659    ------------------------------------------------------------------------------------
85660    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
85661 
85662    ----------------------------------------------------------------------------------
85663    -- 4219869 Business Flow
85664    -- Update journal entry status -- Need to generate this within IF <condition>
85665    ----------------------------------------------------------------------------------
85666    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
85667          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
85668          ,p_balance_type_code => l_balance_type_code
85669          );
85670 
85671    -------------------------------------------------------------------------------------------
85672    -- 4262811 - Generate the Accrual Reversal lines
85673    -------------------------------------------------------------------------------------------
85674    BEGIN
85675       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
85676                               (g_array_event(p_event_id).array_value_num('header_index'));
85677       IF l_acc_rev_flag IS NULL THEN
85678          l_acc_rev_flag := 'N';
85679       END IF;
85680    EXCEPTION
85681       WHEN OTHERS THEN
85682          l_acc_rev_flag := 'N';
85683    END;
85684    --
85685    IF (l_acc_rev_flag = 'Y') THEN
85686 
85687        -- 4645092  ------------------------------------------------------------------------------
85688        -- To allow MPA report to determine if it should generate report process
85689        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
85690        ------------------------------------------------------------------------------------------
85691 
85692        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
85693        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
85694    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
85695    -- call ADRs
85696    -- Bug 4922099
85697    --
85698    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
85699         (NVL(l_actual_upg_option, 'N') = 'O') OR
85700         (NVL(l_enc_upg_option, 'N') = 'O')
85701       )
85702    THEN
85703    NULL;
85704    --
85705    --
85706    
85707   l_ccid := AcctDerRule_4(
85708            p_application_id           => p_application_id
85709          , p_ae_header_id             => l_ae_header_id 
85710 , p_source_4 => p_source_4
85711          , x_transaction_coa_id       => l_adr_transaction_coa_id
85712          , x_accounting_coa_id        => l_adr_accounting_coa_id
85713          , x_value_type_code          => l_adr_value_type_code
85714          , p_side                     => 'NA'
85715    );
85716 
85717    xla_ae_lines_pkg.set_ccid(
85718     p_code_combination_id          => l_ccid
85719   , p_value_type_code              => l_adr_value_type_code
85720   , p_transaction_coa_id           => l_adr_transaction_coa_id
85721   , p_accounting_coa_id            => l_adr_accounting_coa_id
85722   , p_adr_code                     => 'CST_DEFAULT'
85723   , p_adr_type_code                => 'S'
85724   , p_component_type               => l_component_type
85725   , p_component_code               => l_component_code
85726   , p_component_type_code          => l_component_type_code
85727   , p_component_appl_id            => l_component_appl_id
85728   , p_amb_context_code             => l_amb_context_code
85729   , p_side                         => 'NA'
85730   );
85731 
85732 
85733    --
85734    --
85735    END IF;
85736 
85737        --
85738        -- Update the line information that should be overwritten
85739        --
85740        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
85741                                          p_header_num   => 1);
85742        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
85743 
85744        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
85745 
85746        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
85747           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
85748        END IF;
85749 
85750       --
85751       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
85752       --
85753       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
85754           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
85755       ELSE
85756           ---------------------------------------------------------------------------------------------------
85757           -- 4262811a Switch Sign
85758           ---------------------------------------------------------------------------------------------------
85759           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
85760           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
85761                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85762           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
85763                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85764           -- 5132302
85765           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
85766                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85767 
85768       END IF;
85769 
85770       -- 4955764
85771       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
85772       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
85773 
85774 
85775       XLA_AE_LINES_PKG.ValidateCurrentLine;
85776       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
85777 
85778       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
85779                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
85780                ,p_balance_type_code => l_balance_type_code);
85781 
85782    END IF;
85783 
85784    -----------------------------------------------------------------------------------------
85785    -- 4262811 Multiperiod Accounting
85786    -----------------------------------------------------------------------------------------
85787      -- No MPA option is assigned.
85788 
85789 
85790 END IF;
85791 END IF;
85792 --
85793 
85794 --
85795 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85796    trace
85797       (p_msg      => 'END of AcctLineType_156'
85798       ,p_level    => C_LEVEL_PROCEDURE
85799       ,p_module   => l_log_module);
85800 END IF;
85801 --
85802 EXCEPTION
85803   WHEN xla_exceptions_pkg.application_exception THEN
85804       RAISE;
85805   WHEN OTHERS THEN
85806        xla_exceptions_pkg.raise_message
85807            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_156');
85808 END AcctLineType_156;
85809 --
85810 
85811 ---------------------------------------
85812 --
85813 -- PRIVATE FUNCTION
85814 --         AcctLineType_157
85815 --
85816 ---------------------------------------
85817 PROCEDURE AcctLineType_157 (
85818   p_application_id        IN NUMBER
85819  ,p_event_id              IN NUMBER
85820  ,p_calculate_acctd_flag  IN VARCHAR2
85821  ,p_calculate_g_l_flag    IN VARCHAR2
85822  ,p_actual_flag           IN OUT VARCHAR2
85823  ,p_balance_type_code     OUT VARCHAR2
85824  ,p_gain_or_loss_ref      OUT VARCHAR2
85825  
85826 --Cost Management Default Account
85827  , p_source_4            IN NUMBER
85828 --DISTRIBUTION_IDENTIFIER
85829  , p_source_11            IN NUMBER
85830 --Distribution Type
85831  , p_source_12            IN VARCHAR2
85832  , p_source_12_meaning    IN VARCHAR2
85833 --Entered Currency Code
85834  , p_source_15            IN VARCHAR2
85835 --Entered Amount
85836  , p_source_18            IN NUMBER
85837 --Currency Conversion Date
85838  , p_source_19            IN DATE
85839 --Currency Conversion Rate
85840  , p_source_20            IN NUMBER
85841 --Currency Conversion Type
85842  , p_source_21            IN VARCHAR2
85843 --Accounted Amount
85844  , p_source_22            IN NUMBER
85845 --Accounting Line Type
85846  , p_source_24            IN NUMBER
85847 )
85848 IS
85849 
85850 l_component_type              VARCHAR2(80);
85851 l_component_code              VARCHAR2(30);
85852 l_component_type_code         VARCHAR2(1);
85853 l_component_appl_id           INTEGER;
85854 l_amb_context_code            VARCHAR2(30);
85855 l_entity_code                 VARCHAR2(30);
85856 l_event_class_code            VARCHAR2(30);
85857 l_ae_header_id                NUMBER;
85858 l_event_type_code             VARCHAR2(30);
85859 l_line_definition_code        VARCHAR2(30);
85860 l_line_definition_owner_code  VARCHAR2(1);
85861 --
85862 -- adr variables
85863 l_segment                     VARCHAR2(30);
85864 l_ccid                        NUMBER;
85865 l_adr_transaction_coa_id      NUMBER;
85866 l_adr_accounting_coa_id       NUMBER;
85867 l_adr_flexfield_segment_code  VARCHAR2(30);
85868 l_adr_flex_value_set_id       NUMBER;
85869 l_adr_value_type_code         VARCHAR2(30);
85870 l_adr_value_combination_id    NUMBER;
85871 l_adr_value_segment_code      VARCHAR2(30);
85872 
85873 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
85874 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
85875 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
85876 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
85877 
85878 -- 4262811 Variables ------------------------------------------------------------------------------------------
85879 l_entered_amt_idx             NUMBER;
85880 l_accted_amt_idx              NUMBER;
85881 l_acc_rev_flag                VARCHAR2(1);
85882 l_accrual_line_num            NUMBER;
85883 l_tmp_amt                     NUMBER;
85884 l_acc_rev_natural_side_code   VARCHAR2(1);
85885 
85886 l_num_entries                 NUMBER;
85887 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
85888 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
85889 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
85890 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
85891 l_recog_line_1                NUMBER;
85892 l_recog_line_2                NUMBER;
85893 
85894 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
85895 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
85896 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
85897 
85898 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
85899 
85900 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
85901 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
85902 
85903 ---------------------------------------------------------------------------------------------------------------
85904 
85905 
85906 --
85907 -- bulk performance
85908 --
85909 l_balance_type_code           VARCHAR2(1);
85910 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
85911 l_log_module                  VARCHAR2(240);
85912 
85913 --
85914 -- Upgrade strategy
85915 --
85916 l_actual_upg_option           VARCHAR2(1);
85917 l_enc_upg_option           VARCHAR2(1);
85918 
85919 --
85920 BEGIN
85921 --
85922 IF g_log_enabled THEN
85923       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_157';
85924 END IF;
85925 --
85926 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85927 
85928       trace
85929          (p_msg      => 'BEGIN of AcctLineType_157'
85930          ,p_level    => C_LEVEL_PROCEDURE
85931          ,p_module   => l_log_module);
85932 
85933 END IF;
85934 --
85935 l_component_type             := 'AMB_JLT';
85936 l_component_code             := 'INVENTORY_VALUATION';
85937 l_component_type_code        := 'S';
85938 l_component_appl_id          :=  707;
85939 l_amb_context_code           := 'DEFAULT';
85940 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
85941 l_event_class_code           := 'USER_DEFINE';
85942 l_event_type_code            := 'UCG_TXFR';
85943 l_line_definition_owner_code := 'S';
85944 l_line_definition_code       := 'USER_CG_TXFR';
85945 --
85946 l_balance_type_code          := 'A';
85947 l_segment                     := NULL;
85948 l_ccid                        := NULL;
85949 l_adr_transaction_coa_id      := NULL;
85950 l_adr_accounting_coa_id       := NULL;
85951 l_adr_flexfield_segment_code  := NULL;
85952 l_adr_flex_value_set_id       := NULL;
85953 l_adr_value_type_code         := NULL;
85954 l_adr_value_combination_id    := NULL;
85955 l_adr_value_segment_code      := NULL;
85956 
85957 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
85958 l_bflow_class_code           := '';    -- 4219869 Business Flow
85959 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
85960 l_budgetary_control_flag     := 'N';
85961 
85962 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
85963 l_bflow_applied_to_amt       := NULL; -- 5132302
85964 l_entered_amt_idx            := NULL;          -- 4262811
85965 l_accted_amt_idx             := NULL;          -- 4262811
85966 l_acc_rev_flag               := NULL;          -- 4262811
85967 l_accrual_line_num           := NULL;          -- 4262811
85968 l_tmp_amt                    := NULL;          -- 4262811
85969 --
85970  
85971 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
85972     l_balance_type_code <> 'B' THEN
85973 IF NVL(p_source_24,9E125) =  1
85974  THEN 
85975 
85976    --
85977    XLA_AE_LINES_PKG.SetNewLine;
85978 
85979    p_balance_type_code          := l_balance_type_code;
85980    -- set the flag so later we will know whether the gain loss line needs to be created
85981    
85982    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
85983      p_actual_flag :='A';
85984    END IF;
85985 
85986    --
85987    -- bulk performance
85988    --
85989    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
85990                                       p_header_num   => 0); -- 4262811
85991    --
85992    -- set accounting line options
85993    --
85994    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
85995            p_natural_side_code          => 'D'
85996          , p_gain_or_loss_flag          => 'N'
85997          , p_gl_transfer_mode_code      => 'S'
85998          , p_acct_entry_type_code       => 'A'
85999          , p_switch_side_flag           => 'Y'
86000          , p_merge_duplicate_code       => 'N'
86001          );
86002    --
86003    l_acc_rev_natural_side_code := 'C';  -- 4262811
86004    -- 
86005    --
86006    -- set accounting line type info
86007    --
86008    xla_ae_lines_pkg.SetAcctLineType
86009       (p_component_type             => l_component_type
86010       ,p_event_type_code            => l_event_type_code
86011       ,p_line_definition_owner_code => l_line_definition_owner_code
86012       ,p_line_definition_code       => l_line_definition_code
86013       ,p_accounting_line_code       => l_component_code
86014       ,p_accounting_line_type_code  => l_component_type_code
86015       ,p_accounting_line_appl_id    => l_component_appl_id
86016       ,p_amb_context_code           => l_amb_context_code
86017       ,p_entity_code                => l_entity_code
86018       ,p_event_class_code           => l_event_class_code);
86019    --
86020    -- set accounting class
86021    --
86022    xla_ae_lines_pkg.SetAcctClass(
86023            p_accounting_class_code  => 'INVENTORY_VALUATION'
86024          , p_ae_header_id           => l_ae_header_id
86025          );
86026 
86027    --
86028    -- set rounding class
86029    --
86030    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
86031                       'INVENTORY_VALUATION';
86032 
86033    --
86034    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
86035    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
86036    --
86037    -- bulk performance
86038    --
86039    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
86040 
86041    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
86042       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
86043 
86044    -- 4955764
86045    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
86046       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
86047 
86048    -- 4458381 Public Sector Enh
86049    
86050    --
86051    -- set accounting attributes for the line type
86052    --
86053    l_entered_amt_idx := 3;
86054    l_accted_amt_idx  := 8;
86055    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
86056    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
86057    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
86058    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
86059    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
86060    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
86061    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
86062    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
86063    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
86064    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
86065    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
86066    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
86067    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
86068    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
86069    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
86070    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
86071    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
86072 
86073    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
86074    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
86075 
86076    ---------------------------------------------------------------------------------------------------------------
86077    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
86078    ---------------------------------------------------------------------------------------------------------------
86079    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
86080 
86081    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
86082    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
86083 
86084    IF xla_accounting_cache_pkg.GetValueChar
86085          (p_source_code         => 'LEDGER_CATEGORY_CODE'
86086          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
86087    AND l_bflow_method_code = 'PRIOR_ENTRY'
86088 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
86089    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
86090          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
86091        )
86092    THEN
86093          xla_ae_lines_pkg.BflowUpgEntry
86094            (p_business_method_code    => l_bflow_method_code
86095            ,p_business_class_code     => l_bflow_class_code
86096            ,p_balance_type            => l_balance_type_code);
86097    ELSE
86098       NULL;
86099 -- No business flow processing for business flow method of NONE.
86100    END IF;
86101 
86102    --
86103    -- call analytical criteria
86104    --
86105    
86106    --
86107    -- call description
86108    --
86109    -- No description or it is inherited.
86110    --
86111    -- call ADRs
86112    -- Bug 4922099
86113    --
86114    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
86115         (NVL(l_actual_upg_option, 'N') = 'O') OR
86116         (NVL(l_enc_upg_option, 'N') = 'O')
86117       )
86118    THEN
86119    NULL;
86120    --
86121    --
86122    
86123   l_ccid := AcctDerRule_4(
86124            p_application_id           => p_application_id
86125          , p_ae_header_id             => l_ae_header_id 
86126 , p_source_4 => p_source_4
86127          , x_transaction_coa_id       => l_adr_transaction_coa_id
86128          , x_accounting_coa_id        => l_adr_accounting_coa_id
86129          , x_value_type_code          => l_adr_value_type_code
86130          , p_side                     => 'NA'
86131    );
86132 
86133    xla_ae_lines_pkg.set_ccid(
86134     p_code_combination_id          => l_ccid
86135   , p_value_type_code              => l_adr_value_type_code
86136   , p_transaction_coa_id           => l_adr_transaction_coa_id
86137   , p_accounting_coa_id            => l_adr_accounting_coa_id
86138   , p_adr_code                     => 'CST_DEFAULT'
86139   , p_adr_type_code                => 'S'
86140   , p_component_type               => l_component_type
86141   , p_component_code               => l_component_code
86142   , p_component_type_code          => l_component_type_code
86143   , p_component_appl_id            => l_component_appl_id
86144   , p_amb_context_code             => l_amb_context_code
86145   , p_side                         => 'NA'
86146   );
86147 
86148 
86149    --
86150    --
86151    END IF;
86152    --
86153    -- Bug 4922099
86154    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
86155           (NVL(l_enc_upg_option, 'N') = 'O')
86156         ) AND
86157         (l_bflow_method_code = 'PRIOR_ENTRY')
86158       )
86159    THEN
86160       IF
86161       --
86162       1 = 2
86163       --
86164       THEN
86165       xla_accounting_err_pkg.build_message
86166                                     (p_appli_s_name            => 'XLA'
86167                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
86168                                     ,p_token_1                 => 'LINE_NUMBER'
86169                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
86170                                     ,p_token_2                 => 'LINE_TYPE_NAME'
86171                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
86172                                                                              l_component_type
86173                                                                             ,l_component_code
86174                                                                             ,l_component_type_code
86175                                                                             ,l_component_appl_id
86176                                                                             ,l_amb_context_code
86177                                                                             ,l_entity_code
86178                                                                             ,l_event_class_code
86179                                                                            )
86180                                     ,p_token_3                 => 'OWNER'
86181                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
86182                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
86183                                                                           ,p_lookup_code    => l_component_type_code
86184                                                                          )
86185                                     ,p_token_4                 => 'PRODUCT_NAME'
86186                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
86187                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
86188                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
86189                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
86190                                     ,p_ae_header_id            =>  NULL
86191                                        );
86192 
86193         IF (C_LEVEL_ERROR>= g_log_level) THEN
86194                  trace
86195                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
86196                       ,p_level    => C_LEVEL_ERROR
86197                       ,p_module   => l_log_module);
86198         END IF;
86199       END IF;
86200    END IF;
86201    --
86202    --
86203    ------------------------------------------------------------------------------------------------
86204    -- 4219869 Business Flow
86205    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
86206    -- Prior Entry.  Currently, the following code is always generated.
86207    ------------------------------------------------------------------------------------------------
86208    XLA_AE_LINES_PKG.ValidateCurrentLine;
86209 
86210    ------------------------------------------------------------------------------------
86211    -- 4219869 Business Flow
86212    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
86213    ------------------------------------------------------------------------------------
86214    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
86215 
86216    ----------------------------------------------------------------------------------
86217    -- 4219869 Business Flow
86218    -- Update journal entry status -- Need to generate this within IF <condition>
86219    ----------------------------------------------------------------------------------
86220    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
86221          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
86222          ,p_balance_type_code => l_balance_type_code
86223          );
86224 
86225    -------------------------------------------------------------------------------------------
86226    -- 4262811 - Generate the Accrual Reversal lines
86227    -------------------------------------------------------------------------------------------
86228    BEGIN
86229       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
86230                               (g_array_event(p_event_id).array_value_num('header_index'));
86231       IF l_acc_rev_flag IS NULL THEN
86232          l_acc_rev_flag := 'N';
86233       END IF;
86234    EXCEPTION
86235       WHEN OTHERS THEN
86236          l_acc_rev_flag := 'N';
86237    END;
86238    --
86239    IF (l_acc_rev_flag = 'Y') THEN
86240 
86241        -- 4645092  ------------------------------------------------------------------------------
86242        -- To allow MPA report to determine if it should generate report process
86243        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
86244        ------------------------------------------------------------------------------------------
86245 
86246        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
86247        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
86248    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
86249    -- call ADRs
86250    -- Bug 4922099
86251    --
86252    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
86253         (NVL(l_actual_upg_option, 'N') = 'O') OR
86254         (NVL(l_enc_upg_option, 'N') = 'O')
86255       )
86256    THEN
86257    NULL;
86258    --
86259    --
86260    
86261   l_ccid := AcctDerRule_4(
86262            p_application_id           => p_application_id
86263          , p_ae_header_id             => l_ae_header_id 
86264 , p_source_4 => p_source_4
86265          , x_transaction_coa_id       => l_adr_transaction_coa_id
86266          , x_accounting_coa_id        => l_adr_accounting_coa_id
86267          , x_value_type_code          => l_adr_value_type_code
86268          , p_side                     => 'NA'
86269    );
86270 
86271    xla_ae_lines_pkg.set_ccid(
86272     p_code_combination_id          => l_ccid
86273   , p_value_type_code              => l_adr_value_type_code
86274   , p_transaction_coa_id           => l_adr_transaction_coa_id
86275   , p_accounting_coa_id            => l_adr_accounting_coa_id
86276   , p_adr_code                     => 'CST_DEFAULT'
86277   , p_adr_type_code                => 'S'
86278   , p_component_type               => l_component_type
86279   , p_component_code               => l_component_code
86280   , p_component_type_code          => l_component_type_code
86281   , p_component_appl_id            => l_component_appl_id
86282   , p_amb_context_code             => l_amb_context_code
86283   , p_side                         => 'NA'
86284   );
86285 
86286 
86287    --
86288    --
86289    END IF;
86290 
86291        --
86292        -- Update the line information that should be overwritten
86293        --
86294        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
86295                                          p_header_num   => 1);
86296        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
86297 
86298        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
86299 
86300        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
86301           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
86302        END IF;
86303 
86304       --
86305       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
86306       --
86307       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
86308           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
86309       ELSE
86310           ---------------------------------------------------------------------------------------------------
86311           -- 4262811a Switch Sign
86312           ---------------------------------------------------------------------------------------------------
86313           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
86314           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
86315                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86316           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
86317                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86318           -- 5132302
86319           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
86320                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86321 
86322       END IF;
86323 
86324       -- 4955764
86325       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
86326       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
86327 
86328 
86329       XLA_AE_LINES_PKG.ValidateCurrentLine;
86330       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
86331 
86332       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
86333                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
86334                ,p_balance_type_code => l_balance_type_code);
86335 
86336    END IF;
86337 
86338    -----------------------------------------------------------------------------------------
86339    -- 4262811 Multiperiod Accounting
86340    -----------------------------------------------------------------------------------------
86341      -- No MPA option is assigned.
86342 
86343 
86344 END IF;
86345 END IF;
86346 --
86347 
86348 --
86349 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86350    trace
86351       (p_msg      => 'END of AcctLineType_157'
86352       ,p_level    => C_LEVEL_PROCEDURE
86353       ,p_module   => l_log_module);
86354 END IF;
86355 --
86356 EXCEPTION
86357   WHEN xla_exceptions_pkg.application_exception THEN
86358       RAISE;
86359   WHEN OTHERS THEN
86360        xla_exceptions_pkg.raise_message
86361            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_157');
86362 END AcctLineType_157;
86363 --
86364 
86365 ---------------------------------------
86366 --
86367 -- PRIVATE FUNCTION
86368 --         AcctLineType_158
86369 --
86370 ---------------------------------------
86371 PROCEDURE AcctLineType_158 (
86372   p_application_id        IN NUMBER
86373  ,p_event_id              IN NUMBER
86374  ,p_calculate_acctd_flag  IN VARCHAR2
86375  ,p_calculate_g_l_flag    IN VARCHAR2
86376  ,p_actual_flag           IN OUT VARCHAR2
86377  ,p_balance_type_code     OUT VARCHAR2
86378  ,p_gain_or_loss_ref      OUT VARCHAR2
86379  
86380 --Cost Management Default Account
86381  , p_source_4            IN NUMBER
86382 --DISTRIBUTION_IDENTIFIER
86383  , p_source_11            IN NUMBER
86384 --Distribution Type
86385  , p_source_12            IN VARCHAR2
86386  , p_source_12_meaning    IN VARCHAR2
86387 --Entered Currency Code
86388  , p_source_15            IN VARCHAR2
86389 --Entered Amount
86390  , p_source_18            IN NUMBER
86391 --Currency Conversion Date
86392  , p_source_19            IN DATE
86393 --Currency Conversion Rate
86394  , p_source_20            IN NUMBER
86395 --Currency Conversion Type
86396  , p_source_21            IN VARCHAR2
86397 --Accounted Amount
86398  , p_source_22            IN NUMBER
86399 --Accounting Line Type
86400  , p_source_24            IN NUMBER
86401 )
86402 IS
86403 
86404 l_component_type              VARCHAR2(80);
86405 l_component_code              VARCHAR2(30);
86406 l_component_type_code         VARCHAR2(1);
86407 l_component_appl_id           INTEGER;
86408 l_amb_context_code            VARCHAR2(30);
86409 l_entity_code                 VARCHAR2(30);
86410 l_event_class_code            VARCHAR2(30);
86411 l_ae_header_id                NUMBER;
86412 l_event_type_code             VARCHAR2(30);
86413 l_line_definition_code        VARCHAR2(30);
86414 l_line_definition_owner_code  VARCHAR2(1);
86415 --
86416 -- adr variables
86417 l_segment                     VARCHAR2(30);
86418 l_ccid                        NUMBER;
86419 l_adr_transaction_coa_id      NUMBER;
86420 l_adr_accounting_coa_id       NUMBER;
86421 l_adr_flexfield_segment_code  VARCHAR2(30);
86422 l_adr_flex_value_set_id       NUMBER;
86423 l_adr_value_type_code         VARCHAR2(30);
86424 l_adr_value_combination_id    NUMBER;
86425 l_adr_value_segment_code      VARCHAR2(30);
86426 
86427 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
86428 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
86429 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
86430 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
86431 
86432 -- 4262811 Variables ------------------------------------------------------------------------------------------
86433 l_entered_amt_idx             NUMBER;
86434 l_accted_amt_idx              NUMBER;
86435 l_acc_rev_flag                VARCHAR2(1);
86436 l_accrual_line_num            NUMBER;
86437 l_tmp_amt                     NUMBER;
86438 l_acc_rev_natural_side_code   VARCHAR2(1);
86439 
86440 l_num_entries                 NUMBER;
86441 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
86442 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
86443 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
86444 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
86445 l_recog_line_1                NUMBER;
86446 l_recog_line_2                NUMBER;
86447 
86448 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
86449 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
86450 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
86451 
86452 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
86453 
86454 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
86455 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
86456 
86457 ---------------------------------------------------------------------------------------------------------------
86458 
86459 
86460 --
86461 -- bulk performance
86462 --
86463 l_balance_type_code           VARCHAR2(1);
86464 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
86465 l_log_module                  VARCHAR2(240);
86466 
86467 --
86468 -- Upgrade strategy
86469 --
86470 l_actual_upg_option           VARCHAR2(1);
86471 l_enc_upg_option           VARCHAR2(1);
86472 
86473 --
86474 BEGIN
86475 --
86476 IF g_log_enabled THEN
86477       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_158';
86478 END IF;
86479 --
86480 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86481 
86482       trace
86483          (p_msg      => 'BEGIN of AcctLineType_158'
86484          ,p_level    => C_LEVEL_PROCEDURE
86485          ,p_module   => l_log_module);
86486 
86487 END IF;
86488 --
86489 l_component_type             := 'AMB_JLT';
86490 l_component_code             := 'INVENTORY_VALUATION';
86491 l_component_type_code        := 'S';
86492 l_component_appl_id          :=  707;
86493 l_amb_context_code           := 'DEFAULT';
86494 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
86495 l_event_class_code           := 'USER_DEFINE';
86496 l_event_type_code            := 'UDIR_INTERORG_RCPT_TP';
86497 l_line_definition_owner_code := 'S';
86498 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_TP';
86499 --
86500 l_balance_type_code          := 'A';
86501 l_segment                     := NULL;
86502 l_ccid                        := NULL;
86503 l_adr_transaction_coa_id      := NULL;
86504 l_adr_accounting_coa_id       := NULL;
86505 l_adr_flexfield_segment_code  := NULL;
86506 l_adr_flex_value_set_id       := NULL;
86507 l_adr_value_type_code         := NULL;
86508 l_adr_value_combination_id    := NULL;
86509 l_adr_value_segment_code      := NULL;
86510 
86511 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
86512 l_bflow_class_code           := '';    -- 4219869 Business Flow
86513 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
86514 l_budgetary_control_flag     := 'N';
86515 
86516 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
86517 l_bflow_applied_to_amt       := NULL; -- 5132302
86518 l_entered_amt_idx            := NULL;          -- 4262811
86519 l_accted_amt_idx             := NULL;          -- 4262811
86520 l_acc_rev_flag               := NULL;          -- 4262811
86521 l_accrual_line_num           := NULL;          -- 4262811
86522 l_tmp_amt                    := NULL;          -- 4262811
86523 --
86524  
86525 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
86526     l_balance_type_code <> 'B' THEN
86527 IF NVL(p_source_24,9E125) =  1
86528  THEN 
86529 
86530    --
86531    XLA_AE_LINES_PKG.SetNewLine;
86532 
86533    p_balance_type_code          := l_balance_type_code;
86534    -- set the flag so later we will know whether the gain loss line needs to be created
86535    
86536    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
86537      p_actual_flag :='A';
86538    END IF;
86539 
86540    --
86541    -- bulk performance
86542    --
86543    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
86544                                       p_header_num   => 0); -- 4262811
86545    --
86546    -- set accounting line options
86547    --
86548    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
86549            p_natural_side_code          => 'D'
86550          , p_gain_or_loss_flag          => 'N'
86551          , p_gl_transfer_mode_code      => 'S'
86552          , p_acct_entry_type_code       => 'A'
86553          , p_switch_side_flag           => 'Y'
86554          , p_merge_duplicate_code       => 'N'
86555          );
86556    --
86557    l_acc_rev_natural_side_code := 'C';  -- 4262811
86558    -- 
86559    --
86560    -- set accounting line type info
86561    --
86562    xla_ae_lines_pkg.SetAcctLineType
86563       (p_component_type             => l_component_type
86564       ,p_event_type_code            => l_event_type_code
86565       ,p_line_definition_owner_code => l_line_definition_owner_code
86566       ,p_line_definition_code       => l_line_definition_code
86567       ,p_accounting_line_code       => l_component_code
86568       ,p_accounting_line_type_code  => l_component_type_code
86569       ,p_accounting_line_appl_id    => l_component_appl_id
86570       ,p_amb_context_code           => l_amb_context_code
86571       ,p_entity_code                => l_entity_code
86572       ,p_event_class_code           => l_event_class_code);
86573    --
86574    -- set accounting class
86575    --
86576    xla_ae_lines_pkg.SetAcctClass(
86577            p_accounting_class_code  => 'INVENTORY_VALUATION'
86578          , p_ae_header_id           => l_ae_header_id
86579          );
86580 
86581    --
86582    -- set rounding class
86583    --
86584    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
86585                       'INVENTORY_VALUATION';
86586 
86587    --
86588    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
86589    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
86590    --
86591    -- bulk performance
86592    --
86593    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
86594 
86595    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
86596       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
86597 
86598    -- 4955764
86599    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
86600       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
86601 
86602    -- 4458381 Public Sector Enh
86603    
86604    --
86605    -- set accounting attributes for the line type
86606    --
86607    l_entered_amt_idx := 3;
86608    l_accted_amt_idx  := 8;
86609    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
86610    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
86611    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
86612    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
86613    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
86614    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
86615    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
86616    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
86617    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
86618    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
86619    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
86620    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
86621    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
86622    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
86623    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
86624    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
86625    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
86626 
86627    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
86628    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
86629 
86630    ---------------------------------------------------------------------------------------------------------------
86631    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
86632    ---------------------------------------------------------------------------------------------------------------
86633    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
86634 
86635    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
86636    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
86637 
86638    IF xla_accounting_cache_pkg.GetValueChar
86639          (p_source_code         => 'LEDGER_CATEGORY_CODE'
86640          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
86641    AND l_bflow_method_code = 'PRIOR_ENTRY'
86642 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
86643    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
86644          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
86645        )
86646    THEN
86647          xla_ae_lines_pkg.BflowUpgEntry
86648            (p_business_method_code    => l_bflow_method_code
86649            ,p_business_class_code     => l_bflow_class_code
86650            ,p_balance_type            => l_balance_type_code);
86651    ELSE
86652       NULL;
86653 -- No business flow processing for business flow method of NONE.
86654    END IF;
86655 
86656    --
86657    -- call analytical criteria
86658    --
86659    
86660    --
86661    -- call description
86662    --
86663    -- No description or it is inherited.
86664    --
86665    -- call ADRs
86666    -- Bug 4922099
86667    --
86668    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
86669         (NVL(l_actual_upg_option, 'N') = 'O') OR
86670         (NVL(l_enc_upg_option, 'N') = 'O')
86671       )
86672    THEN
86673    NULL;
86674    --
86675    --
86676    
86677   l_ccid := AcctDerRule_4(
86678            p_application_id           => p_application_id
86679          , p_ae_header_id             => l_ae_header_id 
86680 , p_source_4 => p_source_4
86681          , x_transaction_coa_id       => l_adr_transaction_coa_id
86682          , x_accounting_coa_id        => l_adr_accounting_coa_id
86683          , x_value_type_code          => l_adr_value_type_code
86684          , p_side                     => 'NA'
86685    );
86686 
86687    xla_ae_lines_pkg.set_ccid(
86688     p_code_combination_id          => l_ccid
86689   , p_value_type_code              => l_adr_value_type_code
86690   , p_transaction_coa_id           => l_adr_transaction_coa_id
86691   , p_accounting_coa_id            => l_adr_accounting_coa_id
86692   , p_adr_code                     => 'CST_DEFAULT'
86693   , p_adr_type_code                => 'S'
86694   , p_component_type               => l_component_type
86695   , p_component_code               => l_component_code
86696   , p_component_type_code          => l_component_type_code
86697   , p_component_appl_id            => l_component_appl_id
86698   , p_amb_context_code             => l_amb_context_code
86699   , p_side                         => 'NA'
86700   );
86701 
86702 
86703    --
86704    --
86705    END IF;
86706    --
86707    -- Bug 4922099
86708    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
86709           (NVL(l_enc_upg_option, 'N') = 'O')
86710         ) AND
86711         (l_bflow_method_code = 'PRIOR_ENTRY')
86712       )
86713    THEN
86714       IF
86715       --
86716       1 = 2
86717       --
86718       THEN
86719       xla_accounting_err_pkg.build_message
86720                                     (p_appli_s_name            => 'XLA'
86721                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
86722                                     ,p_token_1                 => 'LINE_NUMBER'
86723                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
86724                                     ,p_token_2                 => 'LINE_TYPE_NAME'
86725                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
86726                                                                              l_component_type
86727                                                                             ,l_component_code
86728                                                                             ,l_component_type_code
86729                                                                             ,l_component_appl_id
86730                                                                             ,l_amb_context_code
86731                                                                             ,l_entity_code
86732                                                                             ,l_event_class_code
86733                                                                            )
86734                                     ,p_token_3                 => 'OWNER'
86735                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
86736                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
86737                                                                           ,p_lookup_code    => l_component_type_code
86738                                                                          )
86739                                     ,p_token_4                 => 'PRODUCT_NAME'
86740                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
86741                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
86742                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
86743                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
86744                                     ,p_ae_header_id            =>  NULL
86745                                        );
86746 
86747         IF (C_LEVEL_ERROR>= g_log_level) THEN
86748                  trace
86749                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
86750                       ,p_level    => C_LEVEL_ERROR
86751                       ,p_module   => l_log_module);
86752         END IF;
86753       END IF;
86754    END IF;
86755    --
86756    --
86757    ------------------------------------------------------------------------------------------------
86758    -- 4219869 Business Flow
86759    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
86760    -- Prior Entry.  Currently, the following code is always generated.
86761    ------------------------------------------------------------------------------------------------
86762    XLA_AE_LINES_PKG.ValidateCurrentLine;
86763 
86764    ------------------------------------------------------------------------------------
86765    -- 4219869 Business Flow
86766    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
86767    ------------------------------------------------------------------------------------
86768    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
86769 
86770    ----------------------------------------------------------------------------------
86771    -- 4219869 Business Flow
86772    -- Update journal entry status -- Need to generate this within IF <condition>
86773    ----------------------------------------------------------------------------------
86774    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
86775          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
86776          ,p_balance_type_code => l_balance_type_code
86777          );
86778 
86779    -------------------------------------------------------------------------------------------
86780    -- 4262811 - Generate the Accrual Reversal lines
86781    -------------------------------------------------------------------------------------------
86782    BEGIN
86783       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
86784                               (g_array_event(p_event_id).array_value_num('header_index'));
86785       IF l_acc_rev_flag IS NULL THEN
86786          l_acc_rev_flag := 'N';
86787       END IF;
86788    EXCEPTION
86789       WHEN OTHERS THEN
86790          l_acc_rev_flag := 'N';
86791    END;
86792    --
86793    IF (l_acc_rev_flag = 'Y') THEN
86794 
86795        -- 4645092  ------------------------------------------------------------------------------
86796        -- To allow MPA report to determine if it should generate report process
86797        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
86798        ------------------------------------------------------------------------------------------
86799 
86800        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
86801        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
86802    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
86803    -- call ADRs
86804    -- Bug 4922099
86805    --
86806    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
86807         (NVL(l_actual_upg_option, 'N') = 'O') OR
86808         (NVL(l_enc_upg_option, 'N') = 'O')
86809       )
86810    THEN
86811    NULL;
86812    --
86813    --
86814    
86815   l_ccid := AcctDerRule_4(
86816            p_application_id           => p_application_id
86817          , p_ae_header_id             => l_ae_header_id 
86818 , p_source_4 => p_source_4
86819          , x_transaction_coa_id       => l_adr_transaction_coa_id
86820          , x_accounting_coa_id        => l_adr_accounting_coa_id
86821          , x_value_type_code          => l_adr_value_type_code
86822          , p_side                     => 'NA'
86823    );
86824 
86825    xla_ae_lines_pkg.set_ccid(
86826     p_code_combination_id          => l_ccid
86827   , p_value_type_code              => l_adr_value_type_code
86828   , p_transaction_coa_id           => l_adr_transaction_coa_id
86829   , p_accounting_coa_id            => l_adr_accounting_coa_id
86830   , p_adr_code                     => 'CST_DEFAULT'
86831   , p_adr_type_code                => 'S'
86832   , p_component_type               => l_component_type
86833   , p_component_code               => l_component_code
86834   , p_component_type_code          => l_component_type_code
86835   , p_component_appl_id            => l_component_appl_id
86836   , p_amb_context_code             => l_amb_context_code
86837   , p_side                         => 'NA'
86838   );
86839 
86840 
86841    --
86842    --
86843    END IF;
86844 
86845        --
86846        -- Update the line information that should be overwritten
86847        --
86848        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
86849                                          p_header_num   => 1);
86850        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
86851 
86852        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
86853 
86854        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
86855           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
86856        END IF;
86857 
86858       --
86859       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
86860       --
86861       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
86862           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
86863       ELSE
86864           ---------------------------------------------------------------------------------------------------
86865           -- 4262811a Switch Sign
86866           ---------------------------------------------------------------------------------------------------
86867           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
86868           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
86869                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86870           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
86871                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86872           -- 5132302
86873           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
86874                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86875 
86876       END IF;
86877 
86878       -- 4955764
86879       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
86880       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
86881 
86882 
86883       XLA_AE_LINES_PKG.ValidateCurrentLine;
86884       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
86885 
86886       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
86887                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
86888                ,p_balance_type_code => l_balance_type_code);
86889 
86890    END IF;
86891 
86892    -----------------------------------------------------------------------------------------
86893    -- 4262811 Multiperiod Accounting
86894    -----------------------------------------------------------------------------------------
86895      -- No MPA option is assigned.
86896 
86897 
86898 END IF;
86899 END IF;
86900 --
86901 
86902 --
86903 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86904    trace
86905       (p_msg      => 'END of AcctLineType_158'
86906       ,p_level    => C_LEVEL_PROCEDURE
86907       ,p_module   => l_log_module);
86908 END IF;
86909 --
86910 EXCEPTION
86911   WHEN xla_exceptions_pkg.application_exception THEN
86912       RAISE;
86913   WHEN OTHERS THEN
86914        xla_exceptions_pkg.raise_message
86915            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_158');
86916 END AcctLineType_158;
86917 --
86918 
86919 ---------------------------------------
86920 --
86921 -- PRIVATE FUNCTION
86922 --         AcctLineType_159
86923 --
86924 ---------------------------------------
86925 PROCEDURE AcctLineType_159 (
86926   p_application_id        IN NUMBER
86927  ,p_event_id              IN NUMBER
86928  ,p_calculate_acctd_flag  IN VARCHAR2
86929  ,p_calculate_g_l_flag    IN VARCHAR2
86930  ,p_actual_flag           IN OUT VARCHAR2
86931  ,p_balance_type_code     OUT VARCHAR2
86932  ,p_gain_or_loss_ref      OUT VARCHAR2
86933  
86934 --Cost Management Default Account
86935  , p_source_4            IN NUMBER
86936 --DISTRIBUTION_IDENTIFIER
86937  , p_source_11            IN NUMBER
86938 --Distribution Type
86939  , p_source_12            IN VARCHAR2
86940  , p_source_12_meaning    IN VARCHAR2
86941 --Entered Currency Code
86942  , p_source_15            IN VARCHAR2
86943 --Entered Amount
86944  , p_source_18            IN NUMBER
86945 --Currency Conversion Date
86946  , p_source_19            IN DATE
86947 --Currency Conversion Rate
86948  , p_source_20            IN NUMBER
86949 --Currency Conversion Type
86950  , p_source_21            IN VARCHAR2
86951 --Accounted Amount
86952  , p_source_22            IN NUMBER
86953 --Accounting Line Type
86954  , p_source_24            IN NUMBER
86955 )
86956 IS
86957 
86958 l_component_type              VARCHAR2(80);
86959 l_component_code              VARCHAR2(30);
86960 l_component_type_code         VARCHAR2(1);
86961 l_component_appl_id           INTEGER;
86962 l_amb_context_code            VARCHAR2(30);
86963 l_entity_code                 VARCHAR2(30);
86964 l_event_class_code            VARCHAR2(30);
86965 l_ae_header_id                NUMBER;
86966 l_event_type_code             VARCHAR2(30);
86967 l_line_definition_code        VARCHAR2(30);
86968 l_line_definition_owner_code  VARCHAR2(1);
86969 --
86970 -- adr variables
86971 l_segment                     VARCHAR2(30);
86972 l_ccid                        NUMBER;
86973 l_adr_transaction_coa_id      NUMBER;
86974 l_adr_accounting_coa_id       NUMBER;
86975 l_adr_flexfield_segment_code  VARCHAR2(30);
86976 l_adr_flex_value_set_id       NUMBER;
86977 l_adr_value_type_code         VARCHAR2(30);
86978 l_adr_value_combination_id    NUMBER;
86979 l_adr_value_segment_code      VARCHAR2(30);
86980 
86981 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
86982 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
86983 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
86984 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
86985 
86986 -- 4262811 Variables ------------------------------------------------------------------------------------------
86987 l_entered_amt_idx             NUMBER;
86988 l_accted_amt_idx              NUMBER;
86989 l_acc_rev_flag                VARCHAR2(1);
86990 l_accrual_line_num            NUMBER;
86991 l_tmp_amt                     NUMBER;
86992 l_acc_rev_natural_side_code   VARCHAR2(1);
86993 
86994 l_num_entries                 NUMBER;
86995 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
86996 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
86997 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
86998 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
86999 l_recog_line_1                NUMBER;
87000 l_recog_line_2                NUMBER;
87001 
87002 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
87003 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
87004 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
87005 
87006 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
87007 
87008 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
87009 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
87010 
87011 ---------------------------------------------------------------------------------------------------------------
87012 
87013 
87014 --
87015 -- bulk performance
87016 --
87017 l_balance_type_code           VARCHAR2(1);
87018 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
87019 l_log_module                  VARCHAR2(240);
87020 
87021 --
87022 -- Upgrade strategy
87023 --
87024 l_actual_upg_option           VARCHAR2(1);
87025 l_enc_upg_option           VARCHAR2(1);
87026 
87027 --
87028 BEGIN
87029 --
87030 IF g_log_enabled THEN
87031       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_159';
87032 END IF;
87033 --
87034 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
87035 
87036       trace
87037          (p_msg      => 'BEGIN of AcctLineType_159'
87038          ,p_level    => C_LEVEL_PROCEDURE
87039          ,p_module   => l_log_module);
87040 
87041 END IF;
87042 --
87043 l_component_type             := 'AMB_JLT';
87044 l_component_code             := 'INVENTORY_VALUATION';
87045 l_component_type_code        := 'S';
87046 l_component_appl_id          :=  707;
87047 l_amb_context_code           := 'DEFAULT';
87048 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
87049 l_event_class_code           := 'USER_DEFINE';
87050 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_TP';
87051 l_line_definition_owner_code := 'S';
87052 l_line_definition_code       := 'USER_FOB_SHIP_SENDER_SHIP_TP';
87053 --
87054 l_balance_type_code          := 'A';
87055 l_segment                     := NULL;
87056 l_ccid                        := NULL;
87057 l_adr_transaction_coa_id      := NULL;
87058 l_adr_accounting_coa_id       := NULL;
87059 l_adr_flexfield_segment_code  := NULL;
87060 l_adr_flex_value_set_id       := NULL;
87061 l_adr_value_type_code         := NULL;
87062 l_adr_value_combination_id    := NULL;
87063 l_adr_value_segment_code      := NULL;
87064 
87065 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
87066 l_bflow_class_code           := '';    -- 4219869 Business Flow
87067 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
87068 l_budgetary_control_flag     := 'N';
87069 
87070 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
87071 l_bflow_applied_to_amt       := NULL; -- 5132302
87072 l_entered_amt_idx            := NULL;          -- 4262811
87073 l_accted_amt_idx             := NULL;          -- 4262811
87074 l_acc_rev_flag               := NULL;          -- 4262811
87075 l_accrual_line_num           := NULL;          -- 4262811
87076 l_tmp_amt                    := NULL;          -- 4262811
87077 --
87078  
87079 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
87080     l_balance_type_code <> 'B' THEN
87081 IF NVL(p_source_24,9E125) =  1
87082  THEN 
87083 
87084    --
87085    XLA_AE_LINES_PKG.SetNewLine;
87086 
87087    p_balance_type_code          := l_balance_type_code;
87088    -- set the flag so later we will know whether the gain loss line needs to be created
87089    
87090    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
87091      p_actual_flag :='A';
87092    END IF;
87093 
87094    --
87095    -- bulk performance
87096    --
87097    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
87098                                       p_header_num   => 0); -- 4262811
87099    --
87100    -- set accounting line options
87101    --
87102    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
87103            p_natural_side_code          => 'D'
87104          , p_gain_or_loss_flag          => 'N'
87105          , p_gl_transfer_mode_code      => 'S'
87106          , p_acct_entry_type_code       => 'A'
87107          , p_switch_side_flag           => 'Y'
87108          , p_merge_duplicate_code       => 'N'
87109          );
87110    --
87111    l_acc_rev_natural_side_code := 'C';  -- 4262811
87112    -- 
87113    --
87114    -- set accounting line type info
87115    --
87116    xla_ae_lines_pkg.SetAcctLineType
87117       (p_component_type             => l_component_type
87118       ,p_event_type_code            => l_event_type_code
87119       ,p_line_definition_owner_code => l_line_definition_owner_code
87120       ,p_line_definition_code       => l_line_definition_code
87121       ,p_accounting_line_code       => l_component_code
87122       ,p_accounting_line_type_code  => l_component_type_code
87123       ,p_accounting_line_appl_id    => l_component_appl_id
87124       ,p_amb_context_code           => l_amb_context_code
87125       ,p_entity_code                => l_entity_code
87126       ,p_event_class_code           => l_event_class_code);
87127    --
87128    -- set accounting class
87129    --
87130    xla_ae_lines_pkg.SetAcctClass(
87131            p_accounting_class_code  => 'INVENTORY_VALUATION'
87132          , p_ae_header_id           => l_ae_header_id
87133          );
87134 
87135    --
87136    -- set rounding class
87137    --
87138    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
87139                       'INVENTORY_VALUATION';
87140 
87141    --
87142    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
87143    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
87144    --
87145    -- bulk performance
87146    --
87147    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
87148 
87149    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
87150       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
87151 
87152    -- 4955764
87153    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
87154       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
87155 
87156    -- 4458381 Public Sector Enh
87157    
87158    --
87159    -- set accounting attributes for the line type
87160    --
87161    l_entered_amt_idx := 3;
87162    l_accted_amt_idx  := 8;
87163    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
87164    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
87165    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
87166    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
87167    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
87168    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
87169    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
87170    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
87171    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
87172    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
87173    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
87174    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
87175    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
87176    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
87177    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
87178    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
87179    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
87180 
87181    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
87182    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
87183 
87184    ---------------------------------------------------------------------------------------------------------------
87185    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
87186    ---------------------------------------------------------------------------------------------------------------
87187    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
87188 
87189    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
87190    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
87191 
87192    IF xla_accounting_cache_pkg.GetValueChar
87193          (p_source_code         => 'LEDGER_CATEGORY_CODE'
87194          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
87195    AND l_bflow_method_code = 'PRIOR_ENTRY'
87196 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
87197    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
87198          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
87199        )
87200    THEN
87201          xla_ae_lines_pkg.BflowUpgEntry
87202            (p_business_method_code    => l_bflow_method_code
87203            ,p_business_class_code     => l_bflow_class_code
87204            ,p_balance_type            => l_balance_type_code);
87205    ELSE
87206       NULL;
87207 -- No business flow processing for business flow method of NONE.
87208    END IF;
87209 
87210    --
87211    -- call analytical criteria
87212    --
87213    
87214    --
87215    -- call description
87216    --
87217    -- No description or it is inherited.
87218    --
87219    -- call ADRs
87220    -- Bug 4922099
87221    --
87222    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
87223         (NVL(l_actual_upg_option, 'N') = 'O') OR
87224         (NVL(l_enc_upg_option, 'N') = 'O')
87225       )
87226    THEN
87227    NULL;
87228    --
87229    --
87230    
87231   l_ccid := AcctDerRule_4(
87232            p_application_id           => p_application_id
87233          , p_ae_header_id             => l_ae_header_id 
87234 , p_source_4 => p_source_4
87235          , x_transaction_coa_id       => l_adr_transaction_coa_id
87236          , x_accounting_coa_id        => l_adr_accounting_coa_id
87237          , x_value_type_code          => l_adr_value_type_code
87238          , p_side                     => 'NA'
87239    );
87240 
87241    xla_ae_lines_pkg.set_ccid(
87242     p_code_combination_id          => l_ccid
87243   , p_value_type_code              => l_adr_value_type_code
87244   , p_transaction_coa_id           => l_adr_transaction_coa_id
87245   , p_accounting_coa_id            => l_adr_accounting_coa_id
87246   , p_adr_code                     => 'CST_DEFAULT'
87247   , p_adr_type_code                => 'S'
87248   , p_component_type               => l_component_type
87249   , p_component_code               => l_component_code
87250   , p_component_type_code          => l_component_type_code
87251   , p_component_appl_id            => l_component_appl_id
87252   , p_amb_context_code             => l_amb_context_code
87253   , p_side                         => 'NA'
87254   );
87255 
87256 
87257    --
87258    --
87259    END IF;
87260    --
87261    -- Bug 4922099
87262    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
87263           (NVL(l_enc_upg_option, 'N') = 'O')
87264         ) AND
87265         (l_bflow_method_code = 'PRIOR_ENTRY')
87266       )
87267    THEN
87268       IF
87269       --
87270       1 = 2
87271       --
87272       THEN
87273       xla_accounting_err_pkg.build_message
87274                                     (p_appli_s_name            => 'XLA'
87275                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
87276                                     ,p_token_1                 => 'LINE_NUMBER'
87277                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
87278                                     ,p_token_2                 => 'LINE_TYPE_NAME'
87279                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
87280                                                                              l_component_type
87281                                                                             ,l_component_code
87282                                                                             ,l_component_type_code
87283                                                                             ,l_component_appl_id
87284                                                                             ,l_amb_context_code
87285                                                                             ,l_entity_code
87286                                                                             ,l_event_class_code
87287                                                                            )
87288                                     ,p_token_3                 => 'OWNER'
87289                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
87290                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
87291                                                                           ,p_lookup_code    => l_component_type_code
87292                                                                          )
87293                                     ,p_token_4                 => 'PRODUCT_NAME'
87294                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
87295                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
87296                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
87297                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
87298                                     ,p_ae_header_id            =>  NULL
87299                                        );
87300 
87301         IF (C_LEVEL_ERROR>= g_log_level) THEN
87302                  trace
87303                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
87304                       ,p_level    => C_LEVEL_ERROR
87305                       ,p_module   => l_log_module);
87306         END IF;
87307       END IF;
87308    END IF;
87309    --
87310    --
87311    ------------------------------------------------------------------------------------------------
87312    -- 4219869 Business Flow
87313    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
87314    -- Prior Entry.  Currently, the following code is always generated.
87315    ------------------------------------------------------------------------------------------------
87316    XLA_AE_LINES_PKG.ValidateCurrentLine;
87317 
87318    ------------------------------------------------------------------------------------
87319    -- 4219869 Business Flow
87320    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
87321    ------------------------------------------------------------------------------------
87322    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
87323 
87324    ----------------------------------------------------------------------------------
87325    -- 4219869 Business Flow
87326    -- Update journal entry status -- Need to generate this within IF <condition>
87327    ----------------------------------------------------------------------------------
87328    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
87329          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
87330          ,p_balance_type_code => l_balance_type_code
87331          );
87332 
87333    -------------------------------------------------------------------------------------------
87334    -- 4262811 - Generate the Accrual Reversal lines
87335    -------------------------------------------------------------------------------------------
87336    BEGIN
87337       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
87338                               (g_array_event(p_event_id).array_value_num('header_index'));
87339       IF l_acc_rev_flag IS NULL THEN
87340          l_acc_rev_flag := 'N';
87341       END IF;
87342    EXCEPTION
87343       WHEN OTHERS THEN
87344          l_acc_rev_flag := 'N';
87345    END;
87346    --
87347    IF (l_acc_rev_flag = 'Y') THEN
87348 
87349        -- 4645092  ------------------------------------------------------------------------------
87350        -- To allow MPA report to determine if it should generate report process
87351        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
87352        ------------------------------------------------------------------------------------------
87353 
87354        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
87355        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
87356    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
87357    -- call ADRs
87358    -- Bug 4922099
87359    --
87360    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
87361         (NVL(l_actual_upg_option, 'N') = 'O') OR
87362         (NVL(l_enc_upg_option, 'N') = 'O')
87363       )
87364    THEN
87365    NULL;
87366    --
87367    --
87368    
87369   l_ccid := AcctDerRule_4(
87370            p_application_id           => p_application_id
87371          , p_ae_header_id             => l_ae_header_id 
87372 , p_source_4 => p_source_4
87373          , x_transaction_coa_id       => l_adr_transaction_coa_id
87374          , x_accounting_coa_id        => l_adr_accounting_coa_id
87375          , x_value_type_code          => l_adr_value_type_code
87376          , p_side                     => 'NA'
87377    );
87378 
87379    xla_ae_lines_pkg.set_ccid(
87380     p_code_combination_id          => l_ccid
87381   , p_value_type_code              => l_adr_value_type_code
87382   , p_transaction_coa_id           => l_adr_transaction_coa_id
87383   , p_accounting_coa_id            => l_adr_accounting_coa_id
87384   , p_adr_code                     => 'CST_DEFAULT'
87385   , p_adr_type_code                => 'S'
87386   , p_component_type               => l_component_type
87387   , p_component_code               => l_component_code
87388   , p_component_type_code          => l_component_type_code
87389   , p_component_appl_id            => l_component_appl_id
87390   , p_amb_context_code             => l_amb_context_code
87391   , p_side                         => 'NA'
87392   );
87393 
87394 
87395    --
87396    --
87397    END IF;
87398 
87399        --
87400        -- Update the line information that should be overwritten
87401        --
87402        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
87403                                          p_header_num   => 1);
87404        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
87405 
87406        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
87407 
87408        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
87409           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
87410        END IF;
87411 
87412       --
87413       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
87414       --
87415       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
87416           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
87417       ELSE
87418           ---------------------------------------------------------------------------------------------------
87419           -- 4262811a Switch Sign
87420           ---------------------------------------------------------------------------------------------------
87421           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
87422           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
87423                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87424           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
87425                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87426           -- 5132302
87427           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
87428                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87429 
87430       END IF;
87431 
87432       -- 4955764
87433       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
87434       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
87435 
87436 
87437       XLA_AE_LINES_PKG.ValidateCurrentLine;
87438       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
87439 
87440       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
87441                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
87442                ,p_balance_type_code => l_balance_type_code);
87443 
87444    END IF;
87445 
87446    -----------------------------------------------------------------------------------------
87447    -- 4262811 Multiperiod Accounting
87448    -----------------------------------------------------------------------------------------
87449      -- No MPA option is assigned.
87450 
87451 
87452 END IF;
87453 END IF;
87454 --
87455 
87456 --
87457 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
87458    trace
87459       (p_msg      => 'END of AcctLineType_159'
87460       ,p_level    => C_LEVEL_PROCEDURE
87461       ,p_module   => l_log_module);
87462 END IF;
87463 --
87464 EXCEPTION
87465   WHEN xla_exceptions_pkg.application_exception THEN
87466       RAISE;
87467   WHEN OTHERS THEN
87468        xla_exceptions_pkg.raise_message
87469            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_159');
87470 END AcctLineType_159;
87471 --
87472 
87473 ---------------------------------------
87474 --
87475 -- PRIVATE FUNCTION
87476 --         AcctLineType_160
87477 --
87478 ---------------------------------------
87479 PROCEDURE AcctLineType_160 (
87480   p_application_id        IN NUMBER
87481  ,p_event_id              IN NUMBER
87482  ,p_calculate_acctd_flag  IN VARCHAR2
87483  ,p_calculate_g_l_flag    IN VARCHAR2
87484  ,p_actual_flag           IN OUT VARCHAR2
87485  ,p_balance_type_code     OUT VARCHAR2
87486  ,p_gain_or_loss_ref      OUT VARCHAR2
87487  
87488 --Cost Management Default Account
87489  , p_source_4            IN NUMBER
87490 --DISTRIBUTION_IDENTIFIER
87491  , p_source_11            IN NUMBER
87492 --Distribution Type
87493  , p_source_12            IN VARCHAR2
87494  , p_source_12_meaning    IN VARCHAR2
87495 --Entered Currency Code
87496  , p_source_15            IN VARCHAR2
87497 --Entered Amount
87498  , p_source_18            IN NUMBER
87499 --Currency Conversion Date
87500  , p_source_19            IN DATE
87501 --Currency Conversion Rate
87502  , p_source_20            IN NUMBER
87503 --Currency Conversion Type
87504  , p_source_21            IN VARCHAR2
87505 --Accounted Amount
87506  , p_source_22            IN NUMBER
87507 --Accounting Line Type
87508  , p_source_24            IN NUMBER
87509 )
87510 IS
87511 
87512 l_component_type              VARCHAR2(80);
87513 l_component_code              VARCHAR2(30);
87514 l_component_type_code         VARCHAR2(1);
87515 l_component_appl_id           INTEGER;
87516 l_amb_context_code            VARCHAR2(30);
87517 l_entity_code                 VARCHAR2(30);
87518 l_event_class_code            VARCHAR2(30);
87519 l_ae_header_id                NUMBER;
87520 l_event_type_code             VARCHAR2(30);
87521 l_line_definition_code        VARCHAR2(30);
87522 l_line_definition_owner_code  VARCHAR2(1);
87523 --
87524 -- adr variables
87525 l_segment                     VARCHAR2(30);
87526 l_ccid                        NUMBER;
87527 l_adr_transaction_coa_id      NUMBER;
87528 l_adr_accounting_coa_id       NUMBER;
87529 l_adr_flexfield_segment_code  VARCHAR2(30);
87530 l_adr_flex_value_set_id       NUMBER;
87531 l_adr_value_type_code         VARCHAR2(30);
87532 l_adr_value_combination_id    NUMBER;
87533 l_adr_value_segment_code      VARCHAR2(30);
87534 
87535 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
87536 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
87537 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
87538 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
87539 
87540 -- 4262811 Variables ------------------------------------------------------------------------------------------
87541 l_entered_amt_idx             NUMBER;
87542 l_accted_amt_idx              NUMBER;
87543 l_acc_rev_flag                VARCHAR2(1);
87544 l_accrual_line_num            NUMBER;
87545 l_tmp_amt                     NUMBER;
87546 l_acc_rev_natural_side_code   VARCHAR2(1);
87547 
87548 l_num_entries                 NUMBER;
87549 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
87550 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
87551 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
87552 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
87553 l_recog_line_1                NUMBER;
87554 l_recog_line_2                NUMBER;
87555 
87556 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
87557 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
87558 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
87559 
87560 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
87561 
87562 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
87563 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
87564 
87565 ---------------------------------------------------------------------------------------------------------------
87566 
87567 
87568 --
87569 -- bulk performance
87570 --
87571 l_balance_type_code           VARCHAR2(1);
87572 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
87573 l_log_module                  VARCHAR2(240);
87574 
87575 --
87576 -- Upgrade strategy
87577 --
87578 l_actual_upg_option           VARCHAR2(1);
87579 l_enc_upg_option           VARCHAR2(1);
87580 
87581 --
87582 BEGIN
87583 --
87584 IF g_log_enabled THEN
87585       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_160';
87586 END IF;
87587 --
87588 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
87589 
87590       trace
87591          (p_msg      => 'BEGIN of AcctLineType_160'
87592          ,p_level    => C_LEVEL_PROCEDURE
87593          ,p_module   => l_log_module);
87594 
87595 END IF;
87596 --
87597 l_component_type             := 'AMB_JLT';
87598 l_component_code             := 'INVENTORY_VALUATION';
87599 l_component_type_code        := 'S';
87600 l_component_appl_id          :=  707;
87601 l_amb_context_code           := 'DEFAULT';
87602 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
87603 l_event_class_code           := 'USER_DEFINE';
87604 l_event_type_code            := 'UDIR_INTERORG_RCPT';
87605 l_line_definition_owner_code := 'S';
87606 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT';
87607 --
87608 l_balance_type_code          := 'A';
87609 l_segment                     := NULL;
87610 l_ccid                        := NULL;
87611 l_adr_transaction_coa_id      := NULL;
87612 l_adr_accounting_coa_id       := NULL;
87613 l_adr_flexfield_segment_code  := NULL;
87614 l_adr_flex_value_set_id       := NULL;
87615 l_adr_value_type_code         := NULL;
87616 l_adr_value_combination_id    := NULL;
87617 l_adr_value_segment_code      := NULL;
87618 
87619 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
87620 l_bflow_class_code           := '';    -- 4219869 Business Flow
87621 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
87622 l_budgetary_control_flag     := 'N';
87623 
87624 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
87625 l_bflow_applied_to_amt       := NULL; -- 5132302
87626 l_entered_amt_idx            := NULL;          -- 4262811
87627 l_accted_amt_idx             := NULL;          -- 4262811
87628 l_acc_rev_flag               := NULL;          -- 4262811
87629 l_accrual_line_num           := NULL;          -- 4262811
87630 l_tmp_amt                    := NULL;          -- 4262811
87631 --
87632  
87633 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
87634     l_balance_type_code <> 'B' THEN
87635 IF NVL(p_source_24,9E125) =  1
87636  THEN 
87637 
87638    --
87639    XLA_AE_LINES_PKG.SetNewLine;
87640 
87641    p_balance_type_code          := l_balance_type_code;
87642    -- set the flag so later we will know whether the gain loss line needs to be created
87643    
87644    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
87645      p_actual_flag :='A';
87646    END IF;
87647 
87648    --
87649    -- bulk performance
87650    --
87651    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
87652                                       p_header_num   => 0); -- 4262811
87653    --
87654    -- set accounting line options
87655    --
87656    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
87657            p_natural_side_code          => 'D'
87658          , p_gain_or_loss_flag          => 'N'
87659          , p_gl_transfer_mode_code      => 'S'
87660          , p_acct_entry_type_code       => 'A'
87661          , p_switch_side_flag           => 'Y'
87662          , p_merge_duplicate_code       => 'N'
87663          );
87664    --
87665    l_acc_rev_natural_side_code := 'C';  -- 4262811
87666    -- 
87667    --
87668    -- set accounting line type info
87669    --
87670    xla_ae_lines_pkg.SetAcctLineType
87671       (p_component_type             => l_component_type
87672       ,p_event_type_code            => l_event_type_code
87673       ,p_line_definition_owner_code => l_line_definition_owner_code
87674       ,p_line_definition_code       => l_line_definition_code
87675       ,p_accounting_line_code       => l_component_code
87676       ,p_accounting_line_type_code  => l_component_type_code
87677       ,p_accounting_line_appl_id    => l_component_appl_id
87678       ,p_amb_context_code           => l_amb_context_code
87679       ,p_entity_code                => l_entity_code
87680       ,p_event_class_code           => l_event_class_code);
87681    --
87682    -- set accounting class
87683    --
87684    xla_ae_lines_pkg.SetAcctClass(
87685            p_accounting_class_code  => 'INVENTORY_VALUATION'
87686          , p_ae_header_id           => l_ae_header_id
87687          );
87688 
87689    --
87690    -- set rounding class
87691    --
87692    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
87693                       'INVENTORY_VALUATION';
87694 
87695    --
87696    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
87697    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
87698    --
87699    -- bulk performance
87700    --
87701    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
87702 
87703    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
87704       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
87705 
87706    -- 4955764
87707    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
87708       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
87709 
87710    -- 4458381 Public Sector Enh
87711    
87712    --
87713    -- set accounting attributes for the line type
87714    --
87715    l_entered_amt_idx := 3;
87716    l_accted_amt_idx  := 8;
87717    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
87718    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
87719    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
87720    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
87721    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
87722    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
87723    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
87724    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
87725    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
87726    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
87727    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
87728    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
87729    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
87730    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
87731    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
87732    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
87733    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
87734 
87735    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
87736    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
87737 
87738    ---------------------------------------------------------------------------------------------------------------
87739    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
87740    ---------------------------------------------------------------------------------------------------------------
87741    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
87742 
87743    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
87744    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
87745 
87746    IF xla_accounting_cache_pkg.GetValueChar
87747          (p_source_code         => 'LEDGER_CATEGORY_CODE'
87748          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
87749    AND l_bflow_method_code = 'PRIOR_ENTRY'
87750 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
87751    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
87752          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
87753        )
87754    THEN
87755          xla_ae_lines_pkg.BflowUpgEntry
87756            (p_business_method_code    => l_bflow_method_code
87757            ,p_business_class_code     => l_bflow_class_code
87758            ,p_balance_type            => l_balance_type_code);
87759    ELSE
87760       NULL;
87761 -- No business flow processing for business flow method of NONE.
87762    END IF;
87763 
87764    --
87765    -- call analytical criteria
87766    --
87767    
87768    --
87769    -- call description
87770    --
87771    -- No description or it is inherited.
87772    --
87773    -- call ADRs
87774    -- Bug 4922099
87775    --
87776    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
87777         (NVL(l_actual_upg_option, 'N') = 'O') OR
87778         (NVL(l_enc_upg_option, 'N') = 'O')
87779       )
87780    THEN
87781    NULL;
87782    --
87783    --
87784    
87785   l_ccid := AcctDerRule_4(
87786            p_application_id           => p_application_id
87787          , p_ae_header_id             => l_ae_header_id 
87788 , p_source_4 => p_source_4
87789          , x_transaction_coa_id       => l_adr_transaction_coa_id
87790          , x_accounting_coa_id        => l_adr_accounting_coa_id
87791          , x_value_type_code          => l_adr_value_type_code
87792          , p_side                     => 'NA'
87793    );
87794 
87795    xla_ae_lines_pkg.set_ccid(
87796     p_code_combination_id          => l_ccid
87797   , p_value_type_code              => l_adr_value_type_code
87798   , p_transaction_coa_id           => l_adr_transaction_coa_id
87799   , p_accounting_coa_id            => l_adr_accounting_coa_id
87800   , p_adr_code                     => 'CST_DEFAULT'
87801   , p_adr_type_code                => 'S'
87802   , p_component_type               => l_component_type
87803   , p_component_code               => l_component_code
87804   , p_component_type_code          => l_component_type_code
87805   , p_component_appl_id            => l_component_appl_id
87806   , p_amb_context_code             => l_amb_context_code
87807   , p_side                         => 'NA'
87808   );
87809 
87810 
87811    --
87812    --
87813    END IF;
87814    --
87815    -- Bug 4922099
87816    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
87817           (NVL(l_enc_upg_option, 'N') = 'O')
87818         ) AND
87819         (l_bflow_method_code = 'PRIOR_ENTRY')
87820       )
87821    THEN
87822       IF
87823       --
87824       1 = 2
87825       --
87826       THEN
87827       xla_accounting_err_pkg.build_message
87828                                     (p_appli_s_name            => 'XLA'
87829                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
87830                                     ,p_token_1                 => 'LINE_NUMBER'
87831                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
87832                                     ,p_token_2                 => 'LINE_TYPE_NAME'
87833                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
87834                                                                              l_component_type
87835                                                                             ,l_component_code
87836                                                                             ,l_component_type_code
87837                                                                             ,l_component_appl_id
87838                                                                             ,l_amb_context_code
87839                                                                             ,l_entity_code
87840                                                                             ,l_event_class_code
87841                                                                            )
87842                                     ,p_token_3                 => 'OWNER'
87843                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
87844                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
87845                                                                           ,p_lookup_code    => l_component_type_code
87846                                                                          )
87847                                     ,p_token_4                 => 'PRODUCT_NAME'
87848                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
87849                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
87850                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
87851                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
87852                                     ,p_ae_header_id            =>  NULL
87853                                        );
87854 
87855         IF (C_LEVEL_ERROR>= g_log_level) THEN
87856                  trace
87857                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
87858                       ,p_level    => C_LEVEL_ERROR
87859                       ,p_module   => l_log_module);
87860         END IF;
87861       END IF;
87862    END IF;
87863    --
87864    --
87865    ------------------------------------------------------------------------------------------------
87866    -- 4219869 Business Flow
87867    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
87868    -- Prior Entry.  Currently, the following code is always generated.
87869    ------------------------------------------------------------------------------------------------
87870    XLA_AE_LINES_PKG.ValidateCurrentLine;
87871 
87872    ------------------------------------------------------------------------------------
87873    -- 4219869 Business Flow
87874    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
87875    ------------------------------------------------------------------------------------
87876    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
87877 
87878    ----------------------------------------------------------------------------------
87879    -- 4219869 Business Flow
87880    -- Update journal entry status -- Need to generate this within IF <condition>
87881    ----------------------------------------------------------------------------------
87882    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
87883          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
87884          ,p_balance_type_code => l_balance_type_code
87885          );
87886 
87887    -------------------------------------------------------------------------------------------
87888    -- 4262811 - Generate the Accrual Reversal lines
87889    -------------------------------------------------------------------------------------------
87890    BEGIN
87891       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
87892                               (g_array_event(p_event_id).array_value_num('header_index'));
87893       IF l_acc_rev_flag IS NULL THEN
87894          l_acc_rev_flag := 'N';
87895       END IF;
87896    EXCEPTION
87897       WHEN OTHERS THEN
87898          l_acc_rev_flag := 'N';
87899    END;
87900    --
87901    IF (l_acc_rev_flag = 'Y') THEN
87902 
87903        -- 4645092  ------------------------------------------------------------------------------
87904        -- To allow MPA report to determine if it should generate report process
87905        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
87906        ------------------------------------------------------------------------------------------
87907 
87908        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
87909        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
87910    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
87911    -- call ADRs
87912    -- Bug 4922099
87913    --
87914    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
87915         (NVL(l_actual_upg_option, 'N') = 'O') OR
87916         (NVL(l_enc_upg_option, 'N') = 'O')
87917       )
87918    THEN
87919    NULL;
87920    --
87921    --
87922    
87923   l_ccid := AcctDerRule_4(
87924            p_application_id           => p_application_id
87925          , p_ae_header_id             => l_ae_header_id 
87926 , p_source_4 => p_source_4
87927          , x_transaction_coa_id       => l_adr_transaction_coa_id
87928          , x_accounting_coa_id        => l_adr_accounting_coa_id
87929          , x_value_type_code          => l_adr_value_type_code
87930          , p_side                     => 'NA'
87931    );
87932 
87933    xla_ae_lines_pkg.set_ccid(
87934     p_code_combination_id          => l_ccid
87935   , p_value_type_code              => l_adr_value_type_code
87936   , p_transaction_coa_id           => l_adr_transaction_coa_id
87937   , p_accounting_coa_id            => l_adr_accounting_coa_id
87938   , p_adr_code                     => 'CST_DEFAULT'
87939   , p_adr_type_code                => 'S'
87940   , p_component_type               => l_component_type
87941   , p_component_code               => l_component_code
87942   , p_component_type_code          => l_component_type_code
87943   , p_component_appl_id            => l_component_appl_id
87944   , p_amb_context_code             => l_amb_context_code
87945   , p_side                         => 'NA'
87946   );
87947 
87948 
87949    --
87950    --
87951    END IF;
87952 
87953        --
87954        -- Update the line information that should be overwritten
87955        --
87956        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
87957                                          p_header_num   => 1);
87958        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
87959 
87960        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
87961 
87962        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
87963           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
87964        END IF;
87965 
87966       --
87967       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
87968       --
87969       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
87970           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
87971       ELSE
87972           ---------------------------------------------------------------------------------------------------
87973           -- 4262811a Switch Sign
87974           ---------------------------------------------------------------------------------------------------
87975           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
87976           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
87977                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87978           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
87979                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87980           -- 5132302
87981           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
87982                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87983 
87984       END IF;
87985 
87986       -- 4955764
87987       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
87988       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
87989 
87990 
87991       XLA_AE_LINES_PKG.ValidateCurrentLine;
87992       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
87993 
87994       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
87995                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
87996                ,p_balance_type_code => l_balance_type_code);
87997 
87998    END IF;
87999 
88000    -----------------------------------------------------------------------------------------
88001    -- 4262811 Multiperiod Accounting
88002    -----------------------------------------------------------------------------------------
88003      -- No MPA option is assigned.
88004 
88005 
88006 END IF;
88007 END IF;
88008 --
88009 
88010 --
88011 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88012    trace
88013       (p_msg      => 'END of AcctLineType_160'
88014       ,p_level    => C_LEVEL_PROCEDURE
88015       ,p_module   => l_log_module);
88016 END IF;
88017 --
88018 EXCEPTION
88019   WHEN xla_exceptions_pkg.application_exception THEN
88020       RAISE;
88021   WHEN OTHERS THEN
88022        xla_exceptions_pkg.raise_message
88023            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_160');
88024 END AcctLineType_160;
88025 --
88026 
88027 ---------------------------------------
88028 --
88029 -- PRIVATE FUNCTION
88030 --         AcctLineType_161
88031 --
88032 ---------------------------------------
88033 PROCEDURE AcctLineType_161 (
88034   p_application_id        IN NUMBER
88035  ,p_event_id              IN NUMBER
88036  ,p_calculate_acctd_flag  IN VARCHAR2
88037  ,p_calculate_g_l_flag    IN VARCHAR2
88038  ,p_actual_flag           IN OUT VARCHAR2
88039  ,p_balance_type_code     OUT VARCHAR2
88040  ,p_gain_or_loss_ref      OUT VARCHAR2
88041  
88042 --Cost Management Default Account
88043  , p_source_4            IN NUMBER
88044 --Receiving Accounting Line Type
88045  , p_source_5            IN VARCHAR2
88046 --DISTRIBUTION_IDENTIFIER
88047  , p_source_11            IN NUMBER
88048 --Distribution Type
88049  , p_source_12            IN VARCHAR2
88050  , p_source_12_meaning    IN VARCHAR2
88051 --Entered Amount
88052  , p_source_18            IN NUMBER
88053 --Accounted Amount
88054  , p_source_22            IN NUMBER
88055 --Entered Currency Code
88056  , p_source_32            IN VARCHAR2
88057 --Currency Conversion Date
88058  , p_source_33            IN DATE
88059 --Currency Conversion Rate
88060  , p_source_34            IN NUMBER
88061 --Currency Conversion Type
88062  , p_source_36            IN VARCHAR2
88063 )
88064 IS
88065 
88066 l_component_type              VARCHAR2(80);
88067 l_component_code              VARCHAR2(30);
88068 l_component_type_code         VARCHAR2(1);
88069 l_component_appl_id           INTEGER;
88070 l_amb_context_code            VARCHAR2(30);
88071 l_entity_code                 VARCHAR2(30);
88072 l_event_class_code            VARCHAR2(30);
88073 l_ae_header_id                NUMBER;
88074 l_event_type_code             VARCHAR2(30);
88075 l_line_definition_code        VARCHAR2(30);
88076 l_line_definition_owner_code  VARCHAR2(1);
88077 --
88078 -- adr variables
88079 l_segment                     VARCHAR2(30);
88080 l_ccid                        NUMBER;
88081 l_adr_transaction_coa_id      NUMBER;
88082 l_adr_accounting_coa_id       NUMBER;
88083 l_adr_flexfield_segment_code  VARCHAR2(30);
88084 l_adr_flex_value_set_id       NUMBER;
88085 l_adr_value_type_code         VARCHAR2(30);
88086 l_adr_value_combination_id    NUMBER;
88087 l_adr_value_segment_code      VARCHAR2(30);
88088 
88089 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
88090 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
88091 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
88092 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
88093 
88094 -- 4262811 Variables ------------------------------------------------------------------------------------------
88095 l_entered_amt_idx             NUMBER;
88096 l_accted_amt_idx              NUMBER;
88097 l_acc_rev_flag                VARCHAR2(1);
88098 l_accrual_line_num            NUMBER;
88099 l_tmp_amt                     NUMBER;
88100 l_acc_rev_natural_side_code   VARCHAR2(1);
88101 
88102 l_num_entries                 NUMBER;
88103 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
88104 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
88105 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
88106 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
88107 l_recog_line_1                NUMBER;
88108 l_recog_line_2                NUMBER;
88109 
88110 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
88111 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
88112 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
88113 
88114 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
88115 
88116 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
88117 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
88118 
88119 ---------------------------------------------------------------------------------------------------------------
88120 
88121 
88122 --
88123 -- bulk performance
88124 --
88125 l_balance_type_code           VARCHAR2(1);
88126 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
88127 l_log_module                  VARCHAR2(240);
88128 
88129 --
88130 -- Upgrade strategy
88131 --
88132 l_actual_upg_option           VARCHAR2(1);
88133 l_enc_upg_option           VARCHAR2(1);
88134 
88135 --
88136 BEGIN
88137 --
88138 IF g_log_enabled THEN
88139       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_161';
88140 END IF;
88141 --
88142 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88143 
88144       trace
88145          (p_msg      => 'BEGIN of AcctLineType_161'
88146          ,p_level    => C_LEVEL_PROCEDURE
88147          ,p_module   => l_log_module);
88148 
88149 END IF;
88150 --
88151 l_component_type             := 'AMB_JLT';
88152 l_component_code             := 'LANDED_COST_ABSORPTION';
88153 l_component_type_code        := 'S';
88154 l_component_appl_id          :=  707;
88155 l_amb_context_code           := 'DEFAULT';
88156 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
88157 l_event_class_code           := 'LDD_COST_ADJ_RCV';
88158 l_event_type_code            := 'LDD_COST_ADJ_RCV_ALL';
88159 l_line_definition_owner_code := 'S';
88160 l_line_definition_code       := 'LDD_COST_ADJ_RCV';
88161 --
88162 l_balance_type_code          := 'A';
88163 l_segment                     := NULL;
88164 l_ccid                        := NULL;
88165 l_adr_transaction_coa_id      := NULL;
88166 l_adr_accounting_coa_id       := NULL;
88167 l_adr_flexfield_segment_code  := NULL;
88168 l_adr_flex_value_set_id       := NULL;
88169 l_adr_value_type_code         := NULL;
88170 l_adr_value_combination_id    := NULL;
88171 l_adr_value_segment_code      := NULL;
88172 
88173 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
88174 l_bflow_class_code           := '';    -- 4219869 Business Flow
88175 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
88176 l_budgetary_control_flag     := 'N';
88177 
88178 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
88179 l_bflow_applied_to_amt       := NULL; -- 5132302
88180 l_entered_amt_idx            := NULL;          -- 4262811
88181 l_accted_amt_idx             := NULL;          -- 4262811
88182 l_acc_rev_flag               := NULL;          -- 4262811
88183 l_accrual_line_num           := NULL;          -- 4262811
88184 l_tmp_amt                    := NULL;          -- 4262811
88185 --
88186  
88187 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
88188     l_balance_type_code <> 'B' THEN
88189 IF NVL(p_source_5,'
88190 ') =  'Landed Cost Absorption'
88191  THEN 
88192 
88193    --
88194    XLA_AE_LINES_PKG.SetNewLine;
88195 
88196    p_balance_type_code          := l_balance_type_code;
88197    -- set the flag so later we will know whether the gain loss line needs to be created
88198    
88199    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
88200      p_actual_flag :='A';
88201    END IF;
88202 
88203    --
88204    -- bulk performance
88205    --
88206    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
88207                                       p_header_num   => 0); -- 4262811
88208    --
88209    -- set accounting line options
88210    --
88211    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
88212            p_natural_side_code          => 'D'
88213          , p_gain_or_loss_flag          => 'N'
88214          , p_gl_transfer_mode_code      => 'S'
88215          , p_acct_entry_type_code       => 'A'
88216          , p_switch_side_flag           => 'Y'
88217          , p_merge_duplicate_code       => 'N'
88218          );
88219    --
88220    l_acc_rev_natural_side_code := 'C';  -- 4262811
88221    -- 
88222    --
88223    -- set accounting line type info
88224    --
88225    xla_ae_lines_pkg.SetAcctLineType
88226       (p_component_type             => l_component_type
88227       ,p_event_type_code            => l_event_type_code
88228       ,p_line_definition_owner_code => l_line_definition_owner_code
88229       ,p_line_definition_code       => l_line_definition_code
88230       ,p_accounting_line_code       => l_component_code
88231       ,p_accounting_line_type_code  => l_component_type_code
88232       ,p_accounting_line_appl_id    => l_component_appl_id
88233       ,p_amb_context_code           => l_amb_context_code
88234       ,p_entity_code                => l_entity_code
88235       ,p_event_class_code           => l_event_class_code);
88236    --
88237    -- set accounting class
88238    --
88239    xla_ae_lines_pkg.SetAcctClass(
88240            p_accounting_class_code  => 'LANDED_COST_ABSORPTION'
88241          , p_ae_header_id           => l_ae_header_id
88242          );
88243 
88244    --
88245    -- set rounding class
88246    --
88247    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
88248                       'LANDED_COST_ABSORPTION';
88249 
88250    --
88251    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
88252    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
88253    --
88254    -- bulk performance
88255    --
88256    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
88257 
88258    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
88259       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
88260 
88261    -- 4955764
88262    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
88263       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
88264 
88265    -- 4458381 Public Sector Enh
88266    
88267    --
88268    -- set accounting attributes for the line type
88269    --
88270    l_entered_amt_idx := 3;
88271    l_accted_amt_idx  := 8;
88272    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
88273    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
88274    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
88275    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
88276    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
88277    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
88278    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
88279    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
88280    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
88281    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
88282    l_rec_acct_attrs.array_date_value(5)  := p_source_33;
88283    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
88284    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
88285    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
88286    l_rec_acct_attrs.array_char_value(7)  := p_source_36;
88287    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
88288    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
88289 
88290    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
88291    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
88292 
88293    ---------------------------------------------------------------------------------------------------------------
88294    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
88295    ---------------------------------------------------------------------------------------------------------------
88296    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
88297 
88298    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
88299    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
88300 
88301    IF xla_accounting_cache_pkg.GetValueChar
88302          (p_source_code         => 'LEDGER_CATEGORY_CODE'
88303          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
88304    AND l_bflow_method_code = 'PRIOR_ENTRY'
88305 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
88306    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
88307          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
88308        )
88309    THEN
88310          xla_ae_lines_pkg.BflowUpgEntry
88311            (p_business_method_code    => l_bflow_method_code
88312            ,p_business_class_code     => l_bflow_class_code
88313            ,p_balance_type            => l_balance_type_code);
88314    ELSE
88315       NULL;
88316 -- No business flow processing for business flow method of NONE.
88317    END IF;
88318 
88319    --
88320    -- call analytical criteria
88321    --
88322    
88323    --
88324    -- call description
88325    --
88326    -- No description or it is inherited.
88327    --
88328    -- call ADRs
88329    -- Bug 4922099
88330    --
88331    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
88332         (NVL(l_actual_upg_option, 'N') = 'O') OR
88333         (NVL(l_enc_upg_option, 'N') = 'O')
88334       )
88335    THEN
88336    NULL;
88337    --
88338    --
88339    
88340   l_ccid := AcctDerRule_4(
88341            p_application_id           => p_application_id
88342          , p_ae_header_id             => l_ae_header_id 
88343 , p_source_4 => p_source_4
88344          , x_transaction_coa_id       => l_adr_transaction_coa_id
88345          , x_accounting_coa_id        => l_adr_accounting_coa_id
88346          , x_value_type_code          => l_adr_value_type_code
88347          , p_side                     => 'NA'
88348    );
88349 
88350    xla_ae_lines_pkg.set_ccid(
88351     p_code_combination_id          => l_ccid
88352   , p_value_type_code              => l_adr_value_type_code
88353   , p_transaction_coa_id           => l_adr_transaction_coa_id
88354   , p_accounting_coa_id            => l_adr_accounting_coa_id
88355   , p_adr_code                     => 'CST_DEFAULT'
88356   , p_adr_type_code                => 'S'
88357   , p_component_type               => l_component_type
88358   , p_component_code               => l_component_code
88359   , p_component_type_code          => l_component_type_code
88360   , p_component_appl_id            => l_component_appl_id
88361   , p_amb_context_code             => l_amb_context_code
88362   , p_side                         => 'NA'
88363   );
88364 
88365 
88366    --
88367    --
88368    END IF;
88369    --
88370    -- Bug 4922099
88371    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
88372           (NVL(l_enc_upg_option, 'N') = 'O')
88373         ) AND
88374         (l_bflow_method_code = 'PRIOR_ENTRY')
88375       )
88376    THEN
88377       IF
88378       --
88379       1 = 2
88380       --
88381       THEN
88382       xla_accounting_err_pkg.build_message
88383                                     (p_appli_s_name            => 'XLA'
88384                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
88385                                     ,p_token_1                 => 'LINE_NUMBER'
88386                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
88387                                     ,p_token_2                 => 'LINE_TYPE_NAME'
88388                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
88389                                                                              l_component_type
88390                                                                             ,l_component_code
88391                                                                             ,l_component_type_code
88392                                                                             ,l_component_appl_id
88393                                                                             ,l_amb_context_code
88394                                                                             ,l_entity_code
88395                                                                             ,l_event_class_code
88396                                                                            )
88397                                     ,p_token_3                 => 'OWNER'
88398                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
88399                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
88400                                                                           ,p_lookup_code    => l_component_type_code
88401                                                                          )
88402                                     ,p_token_4                 => 'PRODUCT_NAME'
88403                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
88404                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
88405                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
88406                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
88407                                     ,p_ae_header_id            =>  NULL
88408                                        );
88409 
88410         IF (C_LEVEL_ERROR>= g_log_level) THEN
88411                  trace
88412                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
88413                       ,p_level    => C_LEVEL_ERROR
88414                       ,p_module   => l_log_module);
88415         END IF;
88416       END IF;
88417    END IF;
88418    --
88419    --
88420    ------------------------------------------------------------------------------------------------
88421    -- 4219869 Business Flow
88422    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
88423    -- Prior Entry.  Currently, the following code is always generated.
88424    ------------------------------------------------------------------------------------------------
88425    XLA_AE_LINES_PKG.ValidateCurrentLine;
88426 
88427    ------------------------------------------------------------------------------------
88428    -- 4219869 Business Flow
88429    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
88430    ------------------------------------------------------------------------------------
88431    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
88432 
88433    ----------------------------------------------------------------------------------
88434    -- 4219869 Business Flow
88435    -- Update journal entry status -- Need to generate this within IF <condition>
88436    ----------------------------------------------------------------------------------
88437    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
88438          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
88439          ,p_balance_type_code => l_balance_type_code
88440          );
88441 
88442    -------------------------------------------------------------------------------------------
88443    -- 4262811 - Generate the Accrual Reversal lines
88444    -------------------------------------------------------------------------------------------
88445    BEGIN
88446       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
88447                               (g_array_event(p_event_id).array_value_num('header_index'));
88448       IF l_acc_rev_flag IS NULL THEN
88449          l_acc_rev_flag := 'N';
88450       END IF;
88451    EXCEPTION
88452       WHEN OTHERS THEN
88453          l_acc_rev_flag := 'N';
88454    END;
88455    --
88456    IF (l_acc_rev_flag = 'Y') THEN
88457 
88458        -- 4645092  ------------------------------------------------------------------------------
88459        -- To allow MPA report to determine if it should generate report process
88460        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
88461        ------------------------------------------------------------------------------------------
88462 
88463        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
88464        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
88465    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
88466    -- call ADRs
88467    -- Bug 4922099
88468    --
88469    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
88470         (NVL(l_actual_upg_option, 'N') = 'O') OR
88471         (NVL(l_enc_upg_option, 'N') = 'O')
88472       )
88473    THEN
88474    NULL;
88475    --
88476    --
88477    
88478   l_ccid := AcctDerRule_4(
88479            p_application_id           => p_application_id
88480          , p_ae_header_id             => l_ae_header_id 
88481 , p_source_4 => p_source_4
88482          , x_transaction_coa_id       => l_adr_transaction_coa_id
88483          , x_accounting_coa_id        => l_adr_accounting_coa_id
88484          , x_value_type_code          => l_adr_value_type_code
88485          , p_side                     => 'NA'
88486    );
88487 
88488    xla_ae_lines_pkg.set_ccid(
88489     p_code_combination_id          => l_ccid
88490   , p_value_type_code              => l_adr_value_type_code
88491   , p_transaction_coa_id           => l_adr_transaction_coa_id
88492   , p_accounting_coa_id            => l_adr_accounting_coa_id
88493   , p_adr_code                     => 'CST_DEFAULT'
88494   , p_adr_type_code                => 'S'
88495   , p_component_type               => l_component_type
88496   , p_component_code               => l_component_code
88497   , p_component_type_code          => l_component_type_code
88498   , p_component_appl_id            => l_component_appl_id
88499   , p_amb_context_code             => l_amb_context_code
88500   , p_side                         => 'NA'
88501   );
88502 
88503 
88504    --
88505    --
88506    END IF;
88507 
88508        --
88509        -- Update the line information that should be overwritten
88510        --
88511        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
88512                                          p_header_num   => 1);
88513        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
88514 
88515        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
88516 
88517        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
88518           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
88519        END IF;
88520 
88521       --
88522       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
88523       --
88524       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
88525           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
88526       ELSE
88527           ---------------------------------------------------------------------------------------------------
88528           -- 4262811a Switch Sign
88529           ---------------------------------------------------------------------------------------------------
88530           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
88531           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
88532                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88533           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
88534                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88535           -- 5132302
88536           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
88537                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88538 
88539       END IF;
88540 
88541       -- 4955764
88542       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
88543       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
88544 
88545 
88546       XLA_AE_LINES_PKG.ValidateCurrentLine;
88547       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
88548 
88549       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
88550                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
88551                ,p_balance_type_code => l_balance_type_code);
88552 
88553    END IF;
88554 
88555    -----------------------------------------------------------------------------------------
88556    -- 4262811 Multiperiod Accounting
88557    -----------------------------------------------------------------------------------------
88558      -- No MPA option is assigned.
88559 
88560 
88561 END IF;
88562 END IF;
88563 --
88564 
88565 --
88566 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88567    trace
88568       (p_msg      => 'END of AcctLineType_161'
88569       ,p_level    => C_LEVEL_PROCEDURE
88570       ,p_module   => l_log_module);
88571 END IF;
88572 --
88573 EXCEPTION
88574   WHEN xla_exceptions_pkg.application_exception THEN
88575       RAISE;
88576   WHEN OTHERS THEN
88577        xla_exceptions_pkg.raise_message
88578            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_161');
88579 END AcctLineType_161;
88580 --
88581 
88582 ---------------------------------------
88583 --
88584 -- PRIVATE FUNCTION
88585 --         AcctLineType_162
88586 --
88587 ---------------------------------------
88588 PROCEDURE AcctLineType_162 (
88589   p_application_id        IN NUMBER
88590  ,p_event_id              IN NUMBER
88591  ,p_calculate_acctd_flag  IN VARCHAR2
88592  ,p_calculate_g_l_flag    IN VARCHAR2
88593  ,p_actual_flag           IN OUT VARCHAR2
88594  ,p_balance_type_code     OUT VARCHAR2
88595  ,p_gain_or_loss_ref      OUT VARCHAR2
88596  
88597 --Cost Management Default Account
88598  , p_source_4            IN NUMBER
88599 --Receiving Accounting Line Type
88600  , p_source_5            IN VARCHAR2
88601 --DISTRIBUTION_IDENTIFIER
88602  , p_source_11            IN NUMBER
88603 --Distribution Type
88604  , p_source_12            IN VARCHAR2
88605  , p_source_12_meaning    IN VARCHAR2
88606 --Entered Currency Code
88607  , p_source_15            IN VARCHAR2
88608 --Entered Amount
88609  , p_source_18            IN NUMBER
88610 --Currency Conversion Date
88611  , p_source_19            IN DATE
88612 --Currency Conversion Rate
88613  , p_source_20            IN NUMBER
88614 --Currency Conversion Type
88615  , p_source_21            IN VARCHAR2
88616 --Accounted Amount
88617  , p_source_22            IN NUMBER
88618 )
88619 IS
88620 
88621 l_component_type              VARCHAR2(80);
88622 l_component_code              VARCHAR2(30);
88623 l_component_type_code         VARCHAR2(1);
88624 l_component_appl_id           INTEGER;
88625 l_amb_context_code            VARCHAR2(30);
88626 l_entity_code                 VARCHAR2(30);
88627 l_event_class_code            VARCHAR2(30);
88628 l_ae_header_id                NUMBER;
88629 l_event_type_code             VARCHAR2(30);
88630 l_line_definition_code        VARCHAR2(30);
88631 l_line_definition_owner_code  VARCHAR2(1);
88632 --
88633 -- adr variables
88634 l_segment                     VARCHAR2(30);
88635 l_ccid                        NUMBER;
88636 l_adr_transaction_coa_id      NUMBER;
88637 l_adr_accounting_coa_id       NUMBER;
88638 l_adr_flexfield_segment_code  VARCHAR2(30);
88639 l_adr_flex_value_set_id       NUMBER;
88640 l_adr_value_type_code         VARCHAR2(30);
88641 l_adr_value_combination_id    NUMBER;
88642 l_adr_value_segment_code      VARCHAR2(30);
88643 
88644 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
88645 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
88646 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
88647 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
88648 
88649 -- 4262811 Variables ------------------------------------------------------------------------------------------
88650 l_entered_amt_idx             NUMBER;
88651 l_accted_amt_idx              NUMBER;
88652 l_acc_rev_flag                VARCHAR2(1);
88653 l_accrual_line_num            NUMBER;
88654 l_tmp_amt                     NUMBER;
88655 l_acc_rev_natural_side_code   VARCHAR2(1);
88656 
88657 l_num_entries                 NUMBER;
88658 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
88659 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
88660 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
88661 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
88662 l_recog_line_1                NUMBER;
88663 l_recog_line_2                NUMBER;
88664 
88665 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
88666 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
88667 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
88668 
88669 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
88670 
88671 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
88672 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
88673 
88674 ---------------------------------------------------------------------------------------------------------------
88675 
88676 
88677 --
88678 -- bulk performance
88679 --
88680 l_balance_type_code           VARCHAR2(1);
88681 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
88682 l_log_module                  VARCHAR2(240);
88683 
88684 --
88685 -- Upgrade strategy
88686 --
88687 l_actual_upg_option           VARCHAR2(1);
88688 l_enc_upg_option           VARCHAR2(1);
88689 
88690 --
88691 BEGIN
88692 --
88693 IF g_log_enabled THEN
88694       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_162';
88695 END IF;
88696 --
88697 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88698 
88699       trace
88700          (p_msg      => 'BEGIN of AcctLineType_162'
88701          ,p_level    => C_LEVEL_PROCEDURE
88702          ,p_module   => l_log_module);
88703 
88704 END IF;
88705 --
88706 l_component_type             := 'AMB_JLT';
88707 l_component_code             := 'LANDED_COST_ABSORPTION';
88708 l_component_type_code        := 'S';
88709 l_component_appl_id          :=  707;
88710 l_amb_context_code           := 'DEFAULT';
88711 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
88712 l_event_class_code           := 'RCPT_REC_INSP';
88713 l_event_type_code            := 'RCPT_REC_INSP_ALL';
88714 l_line_definition_owner_code := 'S';
88715 l_line_definition_code       := 'RCPT_REC_INSP';
88716 --
88717 l_balance_type_code          := 'A';
88718 l_segment                     := NULL;
88719 l_ccid                        := NULL;
88720 l_adr_transaction_coa_id      := NULL;
88721 l_adr_accounting_coa_id       := NULL;
88722 l_adr_flexfield_segment_code  := NULL;
88723 l_adr_flex_value_set_id       := NULL;
88724 l_adr_value_type_code         := NULL;
88725 l_adr_value_combination_id    := NULL;
88726 l_adr_value_segment_code      := NULL;
88727 
88728 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
88729 l_bflow_class_code           := '';    -- 4219869 Business Flow
88730 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
88731 l_budgetary_control_flag     := 'N';
88732 
88733 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
88734 l_bflow_applied_to_amt       := NULL; -- 5132302
88735 l_entered_amt_idx            := NULL;          -- 4262811
88736 l_accted_amt_idx             := NULL;          -- 4262811
88737 l_acc_rev_flag               := NULL;          -- 4262811
88738 l_accrual_line_num           := NULL;          -- 4262811
88739 l_tmp_amt                    := NULL;          -- 4262811
88740 --
88741  
88742 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
88743     l_balance_type_code <> 'B' THEN
88744 IF NVL(p_source_5,'
88745 ') =  'Landed Cost Absorption'
88746  THEN 
88747 
88748    --
88749    XLA_AE_LINES_PKG.SetNewLine;
88750 
88751    p_balance_type_code          := l_balance_type_code;
88752    -- set the flag so later we will know whether the gain loss line needs to be created
88753    
88754    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
88755      p_actual_flag :='A';
88756    END IF;
88757 
88758    --
88759    -- bulk performance
88760    --
88761    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
88762                                       p_header_num   => 0); -- 4262811
88763    --
88764    -- set accounting line options
88765    --
88766    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
88767            p_natural_side_code          => 'D'
88768          , p_gain_or_loss_flag          => 'N'
88769          , p_gl_transfer_mode_code      => 'S'
88770          , p_acct_entry_type_code       => 'A'
88771          , p_switch_side_flag           => 'Y'
88772          , p_merge_duplicate_code       => 'N'
88773          );
88774    --
88775    l_acc_rev_natural_side_code := 'C';  -- 4262811
88776    -- 
88777    --
88778    -- set accounting line type info
88779    --
88780    xla_ae_lines_pkg.SetAcctLineType
88781       (p_component_type             => l_component_type
88782       ,p_event_type_code            => l_event_type_code
88783       ,p_line_definition_owner_code => l_line_definition_owner_code
88784       ,p_line_definition_code       => l_line_definition_code
88785       ,p_accounting_line_code       => l_component_code
88786       ,p_accounting_line_type_code  => l_component_type_code
88787       ,p_accounting_line_appl_id    => l_component_appl_id
88788       ,p_amb_context_code           => l_amb_context_code
88789       ,p_entity_code                => l_entity_code
88790       ,p_event_class_code           => l_event_class_code);
88791    --
88792    -- set accounting class
88793    --
88794    xla_ae_lines_pkg.SetAcctClass(
88795            p_accounting_class_code  => 'LANDED_COST_ABSORPTION'
88796          , p_ae_header_id           => l_ae_header_id
88797          );
88798 
88799    --
88800    -- set rounding class
88801    --
88802    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
88803                       'LANDED_COST_ABSORPTION';
88804 
88805    --
88806    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
88807    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
88808    --
88809    -- bulk performance
88810    --
88811    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
88812 
88813    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
88814       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
88815 
88816    -- 4955764
88817    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
88818       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
88819 
88820    -- 4458381 Public Sector Enh
88821    
88822    --
88823    -- set accounting attributes for the line type
88824    --
88825    l_entered_amt_idx := 3;
88826    l_accted_amt_idx  := 8;
88827    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
88828    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
88829    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
88830    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
88831    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
88832    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
88833    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
88834    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
88835    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
88836    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
88837    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
88838    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
88839    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
88840    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
88841    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
88842    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
88843    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
88844 
88845    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
88846    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
88847 
88848    ---------------------------------------------------------------------------------------------------------------
88849    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
88850    ---------------------------------------------------------------------------------------------------------------
88851    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
88852 
88853    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
88854    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
88855 
88856    IF xla_accounting_cache_pkg.GetValueChar
88857          (p_source_code         => 'LEDGER_CATEGORY_CODE'
88858          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
88859    AND l_bflow_method_code = 'PRIOR_ENTRY'
88860 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
88861    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
88862          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
88863        )
88864    THEN
88865          xla_ae_lines_pkg.BflowUpgEntry
88866            (p_business_method_code    => l_bflow_method_code
88867            ,p_business_class_code     => l_bflow_class_code
88868            ,p_balance_type            => l_balance_type_code);
88869    ELSE
88870       NULL;
88871 -- No business flow processing for business flow method of NONE.
88872    END IF;
88873 
88874    --
88875    -- call analytical criteria
88876    --
88877    
88878    --
88879    -- call description
88880    --
88881    -- No description or it is inherited.
88882    --
88883    -- call ADRs
88884    -- Bug 4922099
88885    --
88886    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
88887         (NVL(l_actual_upg_option, 'N') = 'O') OR
88888         (NVL(l_enc_upg_option, 'N') = 'O')
88889       )
88890    THEN
88891    NULL;
88892    --
88893    --
88894    
88895   l_ccid := AcctDerRule_4(
88896            p_application_id           => p_application_id
88897          , p_ae_header_id             => l_ae_header_id 
88898 , p_source_4 => p_source_4
88899          , x_transaction_coa_id       => l_adr_transaction_coa_id
88900          , x_accounting_coa_id        => l_adr_accounting_coa_id
88901          , x_value_type_code          => l_adr_value_type_code
88902          , p_side                     => 'NA'
88903    );
88904 
88905    xla_ae_lines_pkg.set_ccid(
88906     p_code_combination_id          => l_ccid
88907   , p_value_type_code              => l_adr_value_type_code
88908   , p_transaction_coa_id           => l_adr_transaction_coa_id
88909   , p_accounting_coa_id            => l_adr_accounting_coa_id
88910   , p_adr_code                     => 'CST_DEFAULT'
88911   , p_adr_type_code                => 'S'
88912   , p_component_type               => l_component_type
88913   , p_component_code               => l_component_code
88914   , p_component_type_code          => l_component_type_code
88915   , p_component_appl_id            => l_component_appl_id
88916   , p_amb_context_code             => l_amb_context_code
88917   , p_side                         => 'NA'
88918   );
88919 
88920 
88921    --
88922    --
88923    END IF;
88924    --
88925    -- Bug 4922099
88926    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
88927           (NVL(l_enc_upg_option, 'N') = 'O')
88928         ) AND
88929         (l_bflow_method_code = 'PRIOR_ENTRY')
88930       )
88931    THEN
88932       IF
88933       --
88934       1 = 2
88935       --
88936       THEN
88937       xla_accounting_err_pkg.build_message
88938                                     (p_appli_s_name            => 'XLA'
88939                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
88940                                     ,p_token_1                 => 'LINE_NUMBER'
88941                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
88942                                     ,p_token_2                 => 'LINE_TYPE_NAME'
88943                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
88944                                                                              l_component_type
88945                                                                             ,l_component_code
88946                                                                             ,l_component_type_code
88947                                                                             ,l_component_appl_id
88948                                                                             ,l_amb_context_code
88949                                                                             ,l_entity_code
88950                                                                             ,l_event_class_code
88951                                                                            )
88952                                     ,p_token_3                 => 'OWNER'
88953                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
88954                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
88955                                                                           ,p_lookup_code    => l_component_type_code
88956                                                                          )
88957                                     ,p_token_4                 => 'PRODUCT_NAME'
88958                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
88959                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
88960                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
88961                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
88962                                     ,p_ae_header_id            =>  NULL
88963                                        );
88964 
88965         IF (C_LEVEL_ERROR>= g_log_level) THEN
88966                  trace
88967                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
88968                       ,p_level    => C_LEVEL_ERROR
88969                       ,p_module   => l_log_module);
88970         END IF;
88971       END IF;
88972    END IF;
88973    --
88974    --
88975    ------------------------------------------------------------------------------------------------
88976    -- 4219869 Business Flow
88977    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
88978    -- Prior Entry.  Currently, the following code is always generated.
88979    ------------------------------------------------------------------------------------------------
88980    XLA_AE_LINES_PKG.ValidateCurrentLine;
88981 
88982    ------------------------------------------------------------------------------------
88983    -- 4219869 Business Flow
88984    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
88985    ------------------------------------------------------------------------------------
88986    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
88987 
88988    ----------------------------------------------------------------------------------
88989    -- 4219869 Business Flow
88990    -- Update journal entry status -- Need to generate this within IF <condition>
88991    ----------------------------------------------------------------------------------
88992    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
88993          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
88994          ,p_balance_type_code => l_balance_type_code
88995          );
88996 
88997    -------------------------------------------------------------------------------------------
88998    -- 4262811 - Generate the Accrual Reversal lines
88999    -------------------------------------------------------------------------------------------
89000    BEGIN
89001       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
89002                               (g_array_event(p_event_id).array_value_num('header_index'));
89003       IF l_acc_rev_flag IS NULL THEN
89004          l_acc_rev_flag := 'N';
89005       END IF;
89006    EXCEPTION
89007       WHEN OTHERS THEN
89008          l_acc_rev_flag := 'N';
89009    END;
89010    --
89011    IF (l_acc_rev_flag = 'Y') THEN
89012 
89013        -- 4645092  ------------------------------------------------------------------------------
89014        -- To allow MPA report to determine if it should generate report process
89015        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
89016        ------------------------------------------------------------------------------------------
89017 
89018        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
89019        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
89020    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
89021    -- call ADRs
89022    -- Bug 4922099
89023    --
89024    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
89025         (NVL(l_actual_upg_option, 'N') = 'O') OR
89026         (NVL(l_enc_upg_option, 'N') = 'O')
89027       )
89028    THEN
89029    NULL;
89030    --
89031    --
89032    
89033   l_ccid := AcctDerRule_4(
89034            p_application_id           => p_application_id
89035          , p_ae_header_id             => l_ae_header_id 
89036 , p_source_4 => p_source_4
89037          , x_transaction_coa_id       => l_adr_transaction_coa_id
89038          , x_accounting_coa_id        => l_adr_accounting_coa_id
89039          , x_value_type_code          => l_adr_value_type_code
89040          , p_side                     => 'NA'
89041    );
89042 
89043    xla_ae_lines_pkg.set_ccid(
89044     p_code_combination_id          => l_ccid
89045   , p_value_type_code              => l_adr_value_type_code
89046   , p_transaction_coa_id           => l_adr_transaction_coa_id
89047   , p_accounting_coa_id            => l_adr_accounting_coa_id
89048   , p_adr_code                     => 'CST_DEFAULT'
89049   , p_adr_type_code                => 'S'
89050   , p_component_type               => l_component_type
89051   , p_component_code               => l_component_code
89052   , p_component_type_code          => l_component_type_code
89053   , p_component_appl_id            => l_component_appl_id
89054   , p_amb_context_code             => l_amb_context_code
89055   , p_side                         => 'NA'
89056   );
89057 
89058 
89059    --
89060    --
89061    END IF;
89062 
89063        --
89064        -- Update the line information that should be overwritten
89065        --
89066        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
89067                                          p_header_num   => 1);
89068        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
89069 
89070        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
89071 
89072        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
89073           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
89074        END IF;
89075 
89076       --
89077       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
89078       --
89079       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
89080           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
89081       ELSE
89082           ---------------------------------------------------------------------------------------------------
89083           -- 4262811a Switch Sign
89084           ---------------------------------------------------------------------------------------------------
89085           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
89086           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
89087                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89088           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
89089                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89090           -- 5132302
89091           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
89092                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89093 
89094       END IF;
89095 
89096       -- 4955764
89097       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
89098       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
89099 
89100 
89101       XLA_AE_LINES_PKG.ValidateCurrentLine;
89102       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
89103 
89104       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
89105                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
89106                ,p_balance_type_code => l_balance_type_code);
89107 
89108    END IF;
89109 
89110    -----------------------------------------------------------------------------------------
89111    -- 4262811 Multiperiod Accounting
89112    -----------------------------------------------------------------------------------------
89113      -- No MPA option is assigned.
89114 
89115 
89116 END IF;
89117 END IF;
89118 --
89119 
89120 --
89121 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89122    trace
89123       (p_msg      => 'END of AcctLineType_162'
89124       ,p_level    => C_LEVEL_PROCEDURE
89125       ,p_module   => l_log_module);
89126 END IF;
89127 --
89128 EXCEPTION
89129   WHEN xla_exceptions_pkg.application_exception THEN
89130       RAISE;
89131   WHEN OTHERS THEN
89132        xla_exceptions_pkg.raise_message
89133            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_162');
89134 END AcctLineType_162;
89135 --
89136 
89137 ---------------------------------------
89138 --
89139 -- PRIVATE FUNCTION
89140 --         AcctLineType_163
89141 --
89142 ---------------------------------------
89143 PROCEDURE AcctLineType_163 (
89144   p_application_id        IN NUMBER
89145  ,p_event_id              IN NUMBER
89146  ,p_calculate_acctd_flag  IN VARCHAR2
89147  ,p_calculate_g_l_flag    IN VARCHAR2
89148  ,p_actual_flag           IN OUT VARCHAR2
89149  ,p_balance_type_code     OUT VARCHAR2
89150  ,p_gain_or_loss_ref      OUT VARCHAR2
89151  
89152 --Cost Management Default Account
89153  , p_source_4            IN NUMBER
89154 --Receiving Accounting Line Type
89155  , p_source_5            IN VARCHAR2
89156 --DISTRIBUTION_IDENTIFIER
89157  , p_source_11            IN NUMBER
89158 --Distribution Type
89159  , p_source_12            IN VARCHAR2
89160  , p_source_12_meaning    IN VARCHAR2
89161 --Entered Amount
89162  , p_source_18            IN NUMBER
89163 --Accounted Amount
89164  , p_source_22            IN NUMBER
89165 --Entered Currency Code
89166  , p_source_32            IN VARCHAR2
89167 --Currency Conversion Date
89168  , p_source_33            IN DATE
89169 --Currency Conversion Rate
89170  , p_source_34            IN NUMBER
89171 )
89172 IS
89173 
89174 l_component_type              VARCHAR2(80);
89175 l_component_code              VARCHAR2(30);
89176 l_component_type_code         VARCHAR2(1);
89177 l_component_appl_id           INTEGER;
89178 l_amb_context_code            VARCHAR2(30);
89179 l_entity_code                 VARCHAR2(30);
89180 l_event_class_code            VARCHAR2(30);
89181 l_ae_header_id                NUMBER;
89182 l_event_type_code             VARCHAR2(30);
89183 l_line_definition_code        VARCHAR2(30);
89184 l_line_definition_owner_code  VARCHAR2(1);
89185 --
89186 -- adr variables
89187 l_segment                     VARCHAR2(30);
89188 l_ccid                        NUMBER;
89189 l_adr_transaction_coa_id      NUMBER;
89190 l_adr_accounting_coa_id       NUMBER;
89191 l_adr_flexfield_segment_code  VARCHAR2(30);
89192 l_adr_flex_value_set_id       NUMBER;
89193 l_adr_value_type_code         VARCHAR2(30);
89194 l_adr_value_combination_id    NUMBER;
89195 l_adr_value_segment_code      VARCHAR2(30);
89196 
89197 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
89198 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
89199 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
89200 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
89201 
89202 -- 4262811 Variables ------------------------------------------------------------------------------------------
89203 l_entered_amt_idx             NUMBER;
89204 l_accted_amt_idx              NUMBER;
89205 l_acc_rev_flag                VARCHAR2(1);
89206 l_accrual_line_num            NUMBER;
89207 l_tmp_amt                     NUMBER;
89208 l_acc_rev_natural_side_code   VARCHAR2(1);
89209 
89210 l_num_entries                 NUMBER;
89211 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
89212 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
89213 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
89214 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
89215 l_recog_line_1                NUMBER;
89216 l_recog_line_2                NUMBER;
89217 
89218 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
89219 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
89220 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
89221 
89222 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
89223 
89224 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
89225 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
89226 
89227 ---------------------------------------------------------------------------------------------------------------
89228 
89229 
89230 --
89231 -- bulk performance
89232 --
89233 l_balance_type_code           VARCHAR2(1);
89234 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
89235 l_log_module                  VARCHAR2(240);
89236 
89237 --
89238 -- Upgrade strategy
89239 --
89240 l_actual_upg_option           VARCHAR2(1);
89241 l_enc_upg_option           VARCHAR2(1);
89242 
89243 --
89244 BEGIN
89245 --
89246 IF g_log_enabled THEN
89247       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_163';
89248 END IF;
89249 --
89250 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89251 
89252       trace
89253          (p_msg      => 'BEGIN of AcctLineType_163'
89254          ,p_level    => C_LEVEL_PROCEDURE
89255          ,p_module   => l_log_module);
89256 
89257 END IF;
89258 --
89259 l_component_type             := 'AMB_JLT';
89260 l_component_code             := 'LANDED_COST_ABSORPTION';
89261 l_component_type_code        := 'S';
89262 l_component_appl_id          :=  707;
89263 l_amb_context_code           := 'DEFAULT';
89264 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
89265 l_event_class_code           := 'LDD_COST_ADJ_DEL';
89266 l_event_type_code            := 'LDD_COST_ADJ_DEL_ALL';
89267 l_line_definition_owner_code := 'S';
89268 l_line_definition_code       := 'LDD_COST_ADJ_DEL';
89269 --
89270 l_balance_type_code          := 'A';
89271 l_segment                     := NULL;
89272 l_ccid                        := NULL;
89273 l_adr_transaction_coa_id      := NULL;
89274 l_adr_accounting_coa_id       := NULL;
89275 l_adr_flexfield_segment_code  := NULL;
89276 l_adr_flex_value_set_id       := NULL;
89277 l_adr_value_type_code         := NULL;
89278 l_adr_value_combination_id    := NULL;
89279 l_adr_value_segment_code      := NULL;
89280 
89281 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
89282 l_bflow_class_code           := '';    -- 4219869 Business Flow
89283 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
89284 l_budgetary_control_flag     := 'N';
89285 
89286 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
89287 l_bflow_applied_to_amt       := NULL; -- 5132302
89288 l_entered_amt_idx            := NULL;          -- 4262811
89289 l_accted_amt_idx             := NULL;          -- 4262811
89290 l_acc_rev_flag               := NULL;          -- 4262811
89291 l_accrual_line_num           := NULL;          -- 4262811
89292 l_tmp_amt                    := NULL;          -- 4262811
89293 --
89294  
89295 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
89296     l_balance_type_code <> 'B' THEN
89297 IF NVL(p_source_5,'
89298 ') =  'Landed Cost Absorption'
89299  THEN 
89300 
89301    --
89302    XLA_AE_LINES_PKG.SetNewLine;
89303 
89304    p_balance_type_code          := l_balance_type_code;
89305    -- set the flag so later we will know whether the gain loss line needs to be created
89306    
89307    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
89308      p_actual_flag :='A';
89309    END IF;
89310 
89311    --
89312    -- bulk performance
89313    --
89314    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
89315                                       p_header_num   => 0); -- 4262811
89316    --
89317    -- set accounting line options
89318    --
89319    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
89320            p_natural_side_code          => 'D'
89321          , p_gain_or_loss_flag          => 'N'
89322          , p_gl_transfer_mode_code      => 'S'
89323          , p_acct_entry_type_code       => 'A'
89324          , p_switch_side_flag           => 'Y'
89325          , p_merge_duplicate_code       => 'N'
89326          );
89327    --
89328    l_acc_rev_natural_side_code := 'C';  -- 4262811
89329    -- 
89330    --
89331    -- set accounting line type info
89332    --
89333    xla_ae_lines_pkg.SetAcctLineType
89334       (p_component_type             => l_component_type
89335       ,p_event_type_code            => l_event_type_code
89336       ,p_line_definition_owner_code => l_line_definition_owner_code
89337       ,p_line_definition_code       => l_line_definition_code
89338       ,p_accounting_line_code       => l_component_code
89339       ,p_accounting_line_type_code  => l_component_type_code
89340       ,p_accounting_line_appl_id    => l_component_appl_id
89341       ,p_amb_context_code           => l_amb_context_code
89342       ,p_entity_code                => l_entity_code
89343       ,p_event_class_code           => l_event_class_code);
89344    --
89345    -- set accounting class
89346    --
89347    xla_ae_lines_pkg.SetAcctClass(
89348            p_accounting_class_code  => 'LANDED_COST_ABSORPTION'
89349          , p_ae_header_id           => l_ae_header_id
89350          );
89351 
89352    --
89353    -- set rounding class
89354    --
89355    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
89356                       'LANDED_COST_ABSORPTION';
89357 
89358    --
89359    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
89360    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
89361    --
89362    -- bulk performance
89363    --
89364    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
89365 
89366    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
89367       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
89368 
89369    -- 4955764
89370    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
89371       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
89372 
89373    -- 4458381 Public Sector Enh
89374    
89375    --
89376    -- set accounting attributes for the line type
89377    --
89378    l_entered_amt_idx := 3;
89379    l_accted_amt_idx  := 7;
89380    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
89381    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
89382    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
89383    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
89384    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
89385    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
89386    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
89387    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
89388    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
89389    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
89390    l_rec_acct_attrs.array_date_value(5)  := p_source_33;
89391    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
89392    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
89393    l_rec_acct_attrs.array_acct_attr_code(7) := 'LEDGER_AMOUNT';
89394    l_rec_acct_attrs.array_num_value(7)  := p_source_22;
89395 
89396    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
89397    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
89398 
89399    ---------------------------------------------------------------------------------------------------------------
89400    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
89401    ---------------------------------------------------------------------------------------------------------------
89402    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
89403 
89404    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
89405    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
89406 
89407    IF xla_accounting_cache_pkg.GetValueChar
89408          (p_source_code         => 'LEDGER_CATEGORY_CODE'
89409          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
89410    AND l_bflow_method_code = 'PRIOR_ENTRY'
89411 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
89412    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
89413          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
89414        )
89415    THEN
89416          xla_ae_lines_pkg.BflowUpgEntry
89417            (p_business_method_code    => l_bflow_method_code
89418            ,p_business_class_code     => l_bflow_class_code
89419            ,p_balance_type            => l_balance_type_code);
89420    ELSE
89421       NULL;
89422 -- No business flow processing for business flow method of NONE.
89423    END IF;
89424 
89425    --
89426    -- call analytical criteria
89427    --
89428    
89429    --
89430    -- call description
89431    --
89432    -- No description or it is inherited.
89433    --
89434    -- call ADRs
89435    -- Bug 4922099
89436    --
89437    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
89438         (NVL(l_actual_upg_option, 'N') = 'O') OR
89439         (NVL(l_enc_upg_option, 'N') = 'O')
89440       )
89441    THEN
89442    NULL;
89443    --
89444    --
89445    
89446   l_ccid := AcctDerRule_4(
89447            p_application_id           => p_application_id
89448          , p_ae_header_id             => l_ae_header_id 
89449 , p_source_4 => p_source_4
89450          , x_transaction_coa_id       => l_adr_transaction_coa_id
89451          , x_accounting_coa_id        => l_adr_accounting_coa_id
89452          , x_value_type_code          => l_adr_value_type_code
89453          , p_side                     => 'NA'
89454    );
89455 
89456    xla_ae_lines_pkg.set_ccid(
89457     p_code_combination_id          => l_ccid
89458   , p_value_type_code              => l_adr_value_type_code
89459   , p_transaction_coa_id           => l_adr_transaction_coa_id
89460   , p_accounting_coa_id            => l_adr_accounting_coa_id
89461   , p_adr_code                     => 'CST_DEFAULT'
89462   , p_adr_type_code                => 'S'
89463   , p_component_type               => l_component_type
89464   , p_component_code               => l_component_code
89465   , p_component_type_code          => l_component_type_code
89466   , p_component_appl_id            => l_component_appl_id
89467   , p_amb_context_code             => l_amb_context_code
89468   , p_side                         => 'NA'
89469   );
89470 
89471 
89472    --
89473    --
89474    END IF;
89475    --
89476    -- Bug 4922099
89477    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
89478           (NVL(l_enc_upg_option, 'N') = 'O')
89479         ) AND
89480         (l_bflow_method_code = 'PRIOR_ENTRY')
89481       )
89482    THEN
89483       IF
89484       --
89485       1 = 2
89486       --
89487       THEN
89488       xla_accounting_err_pkg.build_message
89489                                     (p_appli_s_name            => 'XLA'
89490                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
89491                                     ,p_token_1                 => 'LINE_NUMBER'
89492                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
89493                                     ,p_token_2                 => 'LINE_TYPE_NAME'
89494                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
89495                                                                              l_component_type
89496                                                                             ,l_component_code
89497                                                                             ,l_component_type_code
89498                                                                             ,l_component_appl_id
89499                                                                             ,l_amb_context_code
89500                                                                             ,l_entity_code
89501                                                                             ,l_event_class_code
89502                                                                            )
89503                                     ,p_token_3                 => 'OWNER'
89504                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
89505                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
89506                                                                           ,p_lookup_code    => l_component_type_code
89507                                                                          )
89508                                     ,p_token_4                 => 'PRODUCT_NAME'
89509                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
89510                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
89511                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
89512                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
89513                                     ,p_ae_header_id            =>  NULL
89514                                        );
89515 
89516         IF (C_LEVEL_ERROR>= g_log_level) THEN
89517                  trace
89518                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
89519                       ,p_level    => C_LEVEL_ERROR
89520                       ,p_module   => l_log_module);
89521         END IF;
89522       END IF;
89523    END IF;
89524    --
89525    --
89526    ------------------------------------------------------------------------------------------------
89527    -- 4219869 Business Flow
89528    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
89529    -- Prior Entry.  Currently, the following code is always generated.
89530    ------------------------------------------------------------------------------------------------
89531    XLA_AE_LINES_PKG.ValidateCurrentLine;
89532 
89533    ------------------------------------------------------------------------------------
89534    -- 4219869 Business Flow
89535    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
89536    ------------------------------------------------------------------------------------
89537    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
89538 
89539    ----------------------------------------------------------------------------------
89540    -- 4219869 Business Flow
89541    -- Update journal entry status -- Need to generate this within IF <condition>
89542    ----------------------------------------------------------------------------------
89543    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
89544          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
89545          ,p_balance_type_code => l_balance_type_code
89546          );
89547 
89548    -------------------------------------------------------------------------------------------
89549    -- 4262811 - Generate the Accrual Reversal lines
89550    -------------------------------------------------------------------------------------------
89551    BEGIN
89552       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
89553                               (g_array_event(p_event_id).array_value_num('header_index'));
89554       IF l_acc_rev_flag IS NULL THEN
89555          l_acc_rev_flag := 'N';
89556       END IF;
89557    EXCEPTION
89558       WHEN OTHERS THEN
89559          l_acc_rev_flag := 'N';
89560    END;
89561    --
89562    IF (l_acc_rev_flag = 'Y') THEN
89563 
89564        -- 4645092  ------------------------------------------------------------------------------
89565        -- To allow MPA report to determine if it should generate report process
89566        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
89567        ------------------------------------------------------------------------------------------
89568 
89569        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
89570        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
89571    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
89572    -- call ADRs
89573    -- Bug 4922099
89574    --
89575    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
89576         (NVL(l_actual_upg_option, 'N') = 'O') OR
89577         (NVL(l_enc_upg_option, 'N') = 'O')
89578       )
89579    THEN
89580    NULL;
89581    --
89582    --
89583    
89584   l_ccid := AcctDerRule_4(
89585            p_application_id           => p_application_id
89586          , p_ae_header_id             => l_ae_header_id 
89587 , p_source_4 => p_source_4
89588          , x_transaction_coa_id       => l_adr_transaction_coa_id
89589          , x_accounting_coa_id        => l_adr_accounting_coa_id
89590          , x_value_type_code          => l_adr_value_type_code
89591          , p_side                     => 'NA'
89592    );
89593 
89594    xla_ae_lines_pkg.set_ccid(
89595     p_code_combination_id          => l_ccid
89596   , p_value_type_code              => l_adr_value_type_code
89597   , p_transaction_coa_id           => l_adr_transaction_coa_id
89598   , p_accounting_coa_id            => l_adr_accounting_coa_id
89599   , p_adr_code                     => 'CST_DEFAULT'
89600   , p_adr_type_code                => 'S'
89601   , p_component_type               => l_component_type
89602   , p_component_code               => l_component_code
89603   , p_component_type_code          => l_component_type_code
89604   , p_component_appl_id            => l_component_appl_id
89605   , p_amb_context_code             => l_amb_context_code
89606   , p_side                         => 'NA'
89607   );
89608 
89609 
89610    --
89611    --
89612    END IF;
89613 
89614        --
89615        -- Update the line information that should be overwritten
89616        --
89617        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
89618                                          p_header_num   => 1);
89619        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
89620 
89621        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
89622 
89623        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
89624           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
89625        END IF;
89626 
89627       --
89628       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
89629       --
89630       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
89631           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
89632       ELSE
89633           ---------------------------------------------------------------------------------------------------
89634           -- 4262811a Switch Sign
89635           ---------------------------------------------------------------------------------------------------
89636           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
89637           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
89638                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89639           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
89640                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89641           -- 5132302
89642           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
89643                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89644 
89645       END IF;
89646 
89647       -- 4955764
89648       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
89649       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
89650 
89651 
89652       XLA_AE_LINES_PKG.ValidateCurrentLine;
89653       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
89654 
89655       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
89656                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
89657                ,p_balance_type_code => l_balance_type_code);
89658 
89659    END IF;
89660 
89661    -----------------------------------------------------------------------------------------
89662    -- 4262811 Multiperiod Accounting
89663    -----------------------------------------------------------------------------------------
89664      -- No MPA option is assigned.
89665 
89666 
89667 END IF;
89668 END IF;
89669 --
89670 
89671 --
89672 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89673    trace
89674       (p_msg      => 'END of AcctLineType_163'
89675       ,p_level    => C_LEVEL_PROCEDURE
89676       ,p_module   => l_log_module);
89677 END IF;
89678 --
89679 EXCEPTION
89680   WHEN xla_exceptions_pkg.application_exception THEN
89681       RAISE;
89682   WHEN OTHERS THEN
89683        xla_exceptions_pkg.raise_message
89684            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_163');
89685 END AcctLineType_163;
89686 --
89687 
89688 ---------------------------------------
89689 --
89690 -- PRIVATE FUNCTION
89691 --         AcctLineType_164
89692 --
89693 ---------------------------------------
89694 PROCEDURE AcctLineType_164 (
89695   p_application_id        IN NUMBER
89696  ,p_event_id              IN NUMBER
89697  ,p_calculate_acctd_flag  IN VARCHAR2
89698  ,p_calculate_g_l_flag    IN VARCHAR2
89699  ,p_actual_flag           IN OUT VARCHAR2
89700  ,p_balance_type_code     OUT VARCHAR2
89701  ,p_gain_or_loss_ref      OUT VARCHAR2
89702  
89703 --Cost Management Default Account
89704  , p_source_4            IN NUMBER
89705 --DISTRIBUTION_IDENTIFIER
89706  , p_source_11            IN NUMBER
89707 --Distribution Type
89708  , p_source_12            IN VARCHAR2
89709  , p_source_12_meaning    IN VARCHAR2
89710 --Entered Currency Code
89711  , p_source_15            IN VARCHAR2
89712 --Entered Amount
89713  , p_source_18            IN NUMBER
89714 --Currency Conversion Date
89715  , p_source_19            IN DATE
89716 --Currency Conversion Rate
89717  , p_source_20            IN NUMBER
89718 --Currency Conversion Type
89719  , p_source_21            IN VARCHAR2
89720 --Accounted Amount
89721  , p_source_22            IN NUMBER
89722 --Accounting Line Type
89723  , p_source_24            IN NUMBER
89724 )
89725 IS
89726 
89727 l_component_type              VARCHAR2(80);
89728 l_component_code              VARCHAR2(30);
89729 l_component_type_code         VARCHAR2(1);
89730 l_component_appl_id           INTEGER;
89731 l_amb_context_code            VARCHAR2(30);
89732 l_entity_code                 VARCHAR2(30);
89733 l_event_class_code            VARCHAR2(30);
89734 l_ae_header_id                NUMBER;
89735 l_event_type_code             VARCHAR2(30);
89736 l_line_definition_code        VARCHAR2(30);
89737 l_line_definition_owner_code  VARCHAR2(1);
89738 --
89739 -- adr variables
89740 l_segment                     VARCHAR2(30);
89741 l_ccid                        NUMBER;
89742 l_adr_transaction_coa_id      NUMBER;
89743 l_adr_accounting_coa_id       NUMBER;
89744 l_adr_flexfield_segment_code  VARCHAR2(30);
89745 l_adr_flex_value_set_id       NUMBER;
89746 l_adr_value_type_code         VARCHAR2(30);
89747 l_adr_value_combination_id    NUMBER;
89748 l_adr_value_segment_code      VARCHAR2(30);
89749 
89750 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
89751 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
89752 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
89753 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
89754 
89755 -- 4262811 Variables ------------------------------------------------------------------------------------------
89756 l_entered_amt_idx             NUMBER;
89757 l_accted_amt_idx              NUMBER;
89758 l_acc_rev_flag                VARCHAR2(1);
89759 l_accrual_line_num            NUMBER;
89760 l_tmp_amt                     NUMBER;
89761 l_acc_rev_natural_side_code   VARCHAR2(1);
89762 
89763 l_num_entries                 NUMBER;
89764 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
89765 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
89766 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
89767 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
89768 l_recog_line_1                NUMBER;
89769 l_recog_line_2                NUMBER;
89770 
89771 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
89772 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
89773 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
89774 
89775 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
89776 
89777 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
89778 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
89779 
89780 ---------------------------------------------------------------------------------------------------------------
89781 
89782 
89783 --
89784 -- bulk performance
89785 --
89786 l_balance_type_code           VARCHAR2(1);
89787 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
89788 l_log_module                  VARCHAR2(240);
89789 
89790 --
89791 -- Upgrade strategy
89792 --
89793 l_actual_upg_option           VARCHAR2(1);
89794 l_enc_upg_option           VARCHAR2(1);
89795 
89796 --
89797 BEGIN
89798 --
89799 IF g_log_enabled THEN
89800       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_164';
89801 END IF;
89802 --
89803 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89804 
89805       trace
89806          (p_msg      => 'BEGIN of AcctLineType_164'
89807          ,p_level    => C_LEVEL_PROCEDURE
89808          ,p_module   => l_log_module);
89809 
89810 END IF;
89811 --
89812 l_component_type             := 'AMB_JLT';
89813 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
89814 l_component_type_code        := 'S';
89815 l_component_appl_id          :=  707;
89816 l_amb_context_code           := 'DEFAULT';
89817 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
89818 l_event_class_code           := 'CON_INV_OWNR_TXFR';
89819 l_event_type_code            := 'CON_INV_OWNR_TXFR_ALL';
89820 l_line_definition_owner_code := 'S';
89821 l_line_definition_code       := 'CON_INV_OWNR_TXFR';
89822 --
89823 l_balance_type_code          := 'A';
89824 l_segment                     := NULL;
89825 l_ccid                        := NULL;
89826 l_adr_transaction_coa_id      := NULL;
89827 l_adr_accounting_coa_id       := NULL;
89828 l_adr_flexfield_segment_code  := NULL;
89829 l_adr_flex_value_set_id       := NULL;
89830 l_adr_value_type_code         := NULL;
89831 l_adr_value_combination_id    := NULL;
89832 l_adr_value_segment_code      := NULL;
89833 
89834 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
89835 l_bflow_class_code           := '';    -- 4219869 Business Flow
89836 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
89837 l_budgetary_control_flag     := 'N';
89838 
89839 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
89840 l_bflow_applied_to_amt       := NULL; -- 5132302
89841 l_entered_amt_idx            := NULL;          -- 4262811
89842 l_accted_amt_idx             := NULL;          -- 4262811
89843 l_acc_rev_flag               := NULL;          -- 4262811
89844 l_accrual_line_num           := NULL;          -- 4262811
89845 l_tmp_amt                    := NULL;          -- 4262811
89846 --
89847  
89848 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
89849     l_balance_type_code <> 'B' THEN
89850 IF NVL(p_source_24,9E125) =  3
89851  THEN 
89852 
89853    --
89854    XLA_AE_LINES_PKG.SetNewLine;
89855 
89856    p_balance_type_code          := l_balance_type_code;
89857    -- set the flag so later we will know whether the gain loss line needs to be created
89858    
89859    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
89860      p_actual_flag :='A';
89861    END IF;
89862 
89863    --
89864    -- bulk performance
89865    --
89866    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
89867                                       p_header_num   => 0); -- 4262811
89868    --
89869    -- set accounting line options
89870    --
89871    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
89872            p_natural_side_code          => 'D'
89873          , p_gain_or_loss_flag          => 'N'
89874          , p_gl_transfer_mode_code      => 'S'
89875          , p_acct_entry_type_code       => 'A'
89876          , p_switch_side_flag           => 'Y'
89877          , p_merge_duplicate_code       => 'N'
89878          );
89879    --
89880    l_acc_rev_natural_side_code := 'C';  -- 4262811
89881    -- 
89882    --
89883    -- set accounting line type info
89884    --
89885    xla_ae_lines_pkg.SetAcctLineType
89886       (p_component_type             => l_component_type
89887       ,p_event_type_code            => l_event_type_code
89888       ,p_line_definition_owner_code => l_line_definition_owner_code
89889       ,p_line_definition_code       => l_line_definition_code
89890       ,p_accounting_line_code       => l_component_code
89891       ,p_accounting_line_type_code  => l_component_type_code
89892       ,p_accounting_line_appl_id    => l_component_appl_id
89893       ,p_amb_context_code           => l_amb_context_code
89894       ,p_entity_code                => l_entity_code
89895       ,p_event_class_code           => l_event_class_code);
89896    --
89897    -- set accounting class
89898    --
89899    xla_ae_lines_pkg.SetAcctClass(
89900            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
89901          , p_ae_header_id           => l_ae_header_id
89902          );
89903 
89904    --
89905    -- set rounding class
89906    --
89907    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
89908                       'MATERIAL_OVERHEAD_ABSORPTION';
89909 
89910    --
89911    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
89912    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
89913    --
89914    -- bulk performance
89915    --
89916    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
89917 
89918    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
89919       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
89920 
89921    -- 4955764
89922    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
89923       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
89924 
89925    -- 4458381 Public Sector Enh
89926    
89927    --
89928    -- set accounting attributes for the line type
89929    --
89930    l_entered_amt_idx := 3;
89931    l_accted_amt_idx  := 8;
89932    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
89933    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
89934    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
89935    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
89936    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
89937    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
89938    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
89939    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
89940    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
89941    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
89942    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
89943    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
89944    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
89945    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
89946    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
89947    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
89948    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
89949 
89950    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
89951    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
89952 
89953    ---------------------------------------------------------------------------------------------------------------
89954    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
89955    ---------------------------------------------------------------------------------------------------------------
89956    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
89957 
89958    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
89959    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
89960 
89961    IF xla_accounting_cache_pkg.GetValueChar
89962          (p_source_code         => 'LEDGER_CATEGORY_CODE'
89963          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
89964    AND l_bflow_method_code = 'PRIOR_ENTRY'
89965 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
89966    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
89967          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
89968        )
89969    THEN
89970          xla_ae_lines_pkg.BflowUpgEntry
89971            (p_business_method_code    => l_bflow_method_code
89972            ,p_business_class_code     => l_bflow_class_code
89973            ,p_balance_type            => l_balance_type_code);
89974    ELSE
89975       NULL;
89976 -- No business flow processing for business flow method of NONE.
89977    END IF;
89978 
89979    --
89980    -- call analytical criteria
89981    --
89982    
89983    --
89984    -- call description
89985    --
89986    -- No description or it is inherited.
89987    --
89988    -- call ADRs
89989    -- Bug 4922099
89990    --
89991    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
89992         (NVL(l_actual_upg_option, 'N') = 'O') OR
89993         (NVL(l_enc_upg_option, 'N') = 'O')
89994       )
89995    THEN
89996    NULL;
89997    --
89998    --
89999    
90000   l_ccid := AcctDerRule_4(
90001            p_application_id           => p_application_id
90002          , p_ae_header_id             => l_ae_header_id 
90003 , p_source_4 => p_source_4
90004          , x_transaction_coa_id       => l_adr_transaction_coa_id
90005          , x_accounting_coa_id        => l_adr_accounting_coa_id
90006          , x_value_type_code          => l_adr_value_type_code
90007          , p_side                     => 'NA'
90008    );
90009 
90010    xla_ae_lines_pkg.set_ccid(
90011     p_code_combination_id          => l_ccid
90012   , p_value_type_code              => l_adr_value_type_code
90013   , p_transaction_coa_id           => l_adr_transaction_coa_id
90014   , p_accounting_coa_id            => l_adr_accounting_coa_id
90015   , p_adr_code                     => 'CST_DEFAULT'
90016   , p_adr_type_code                => 'S'
90017   , p_component_type               => l_component_type
90018   , p_component_code               => l_component_code
90019   , p_component_type_code          => l_component_type_code
90020   , p_component_appl_id            => l_component_appl_id
90021   , p_amb_context_code             => l_amb_context_code
90022   , p_side                         => 'NA'
90023   );
90024 
90025 
90026    --
90027    --
90028    END IF;
90029    --
90030    -- Bug 4922099
90031    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
90032           (NVL(l_enc_upg_option, 'N') = 'O')
90033         ) AND
90034         (l_bflow_method_code = 'PRIOR_ENTRY')
90035       )
90036    THEN
90037       IF
90038       --
90039       1 = 2
90040       --
90041       THEN
90042       xla_accounting_err_pkg.build_message
90043                                     (p_appli_s_name            => 'XLA'
90044                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
90045                                     ,p_token_1                 => 'LINE_NUMBER'
90046                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
90047                                     ,p_token_2                 => 'LINE_TYPE_NAME'
90048                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
90049                                                                              l_component_type
90050                                                                             ,l_component_code
90051                                                                             ,l_component_type_code
90052                                                                             ,l_component_appl_id
90053                                                                             ,l_amb_context_code
90054                                                                             ,l_entity_code
90055                                                                             ,l_event_class_code
90056                                                                            )
90057                                     ,p_token_3                 => 'OWNER'
90058                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
90059                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
90060                                                                           ,p_lookup_code    => l_component_type_code
90061                                                                          )
90062                                     ,p_token_4                 => 'PRODUCT_NAME'
90063                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
90064                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
90065                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
90066                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
90067                                     ,p_ae_header_id            =>  NULL
90068                                        );
90069 
90070         IF (C_LEVEL_ERROR>= g_log_level) THEN
90071                  trace
90072                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
90073                       ,p_level    => C_LEVEL_ERROR
90074                       ,p_module   => l_log_module);
90075         END IF;
90076       END IF;
90077    END IF;
90078    --
90079    --
90080    ------------------------------------------------------------------------------------------------
90081    -- 4219869 Business Flow
90082    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
90083    -- Prior Entry.  Currently, the following code is always generated.
90084    ------------------------------------------------------------------------------------------------
90085    XLA_AE_LINES_PKG.ValidateCurrentLine;
90086 
90087    ------------------------------------------------------------------------------------
90088    -- 4219869 Business Flow
90089    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
90090    ------------------------------------------------------------------------------------
90091    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
90092 
90093    ----------------------------------------------------------------------------------
90094    -- 4219869 Business Flow
90095    -- Update journal entry status -- Need to generate this within IF <condition>
90096    ----------------------------------------------------------------------------------
90097    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
90098          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
90099          ,p_balance_type_code => l_balance_type_code
90100          );
90101 
90102    -------------------------------------------------------------------------------------------
90103    -- 4262811 - Generate the Accrual Reversal lines
90104    -------------------------------------------------------------------------------------------
90105    BEGIN
90106       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
90107                               (g_array_event(p_event_id).array_value_num('header_index'));
90108       IF l_acc_rev_flag IS NULL THEN
90109          l_acc_rev_flag := 'N';
90110       END IF;
90111    EXCEPTION
90112       WHEN OTHERS THEN
90113          l_acc_rev_flag := 'N';
90114    END;
90115    --
90116    IF (l_acc_rev_flag = 'Y') THEN
90117 
90118        -- 4645092  ------------------------------------------------------------------------------
90119        -- To allow MPA report to determine if it should generate report process
90120        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
90121        ------------------------------------------------------------------------------------------
90122 
90123        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
90124        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
90125    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
90126    -- call ADRs
90127    -- Bug 4922099
90128    --
90129    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
90130         (NVL(l_actual_upg_option, 'N') = 'O') OR
90131         (NVL(l_enc_upg_option, 'N') = 'O')
90132       )
90133    THEN
90134    NULL;
90135    --
90136    --
90137    
90138   l_ccid := AcctDerRule_4(
90139            p_application_id           => p_application_id
90140          , p_ae_header_id             => l_ae_header_id 
90141 , p_source_4 => p_source_4
90142          , x_transaction_coa_id       => l_adr_transaction_coa_id
90143          , x_accounting_coa_id        => l_adr_accounting_coa_id
90144          , x_value_type_code          => l_adr_value_type_code
90145          , p_side                     => 'NA'
90146    );
90147 
90148    xla_ae_lines_pkg.set_ccid(
90149     p_code_combination_id          => l_ccid
90150   , p_value_type_code              => l_adr_value_type_code
90151   , p_transaction_coa_id           => l_adr_transaction_coa_id
90152   , p_accounting_coa_id            => l_adr_accounting_coa_id
90153   , p_adr_code                     => 'CST_DEFAULT'
90154   , p_adr_type_code                => 'S'
90155   , p_component_type               => l_component_type
90156   , p_component_code               => l_component_code
90157   , p_component_type_code          => l_component_type_code
90158   , p_component_appl_id            => l_component_appl_id
90159   , p_amb_context_code             => l_amb_context_code
90160   , p_side                         => 'NA'
90161   );
90162 
90163 
90164    --
90165    --
90166    END IF;
90167 
90168        --
90169        -- Update the line information that should be overwritten
90170        --
90171        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
90172                                          p_header_num   => 1);
90173        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
90174 
90175        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
90176 
90177        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
90178           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
90179        END IF;
90180 
90181       --
90182       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
90183       --
90184       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
90185           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
90186       ELSE
90187           ---------------------------------------------------------------------------------------------------
90188           -- 4262811a Switch Sign
90189           ---------------------------------------------------------------------------------------------------
90190           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
90191           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
90192                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90193           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
90194                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90195           -- 5132302
90196           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
90197                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90198 
90199       END IF;
90200 
90201       -- 4955764
90202       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
90203       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
90204 
90205 
90206       XLA_AE_LINES_PKG.ValidateCurrentLine;
90207       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
90208 
90209       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
90210                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
90211                ,p_balance_type_code => l_balance_type_code);
90212 
90213    END IF;
90214 
90215    -----------------------------------------------------------------------------------------
90216    -- 4262811 Multiperiod Accounting
90217    -----------------------------------------------------------------------------------------
90218      -- No MPA option is assigned.
90219 
90220 
90221 END IF;
90222 END IF;
90223 --
90224 
90225 --
90226 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
90227    trace
90228       (p_msg      => 'END of AcctLineType_164'
90229       ,p_level    => C_LEVEL_PROCEDURE
90230       ,p_module   => l_log_module);
90231 END IF;
90232 --
90233 EXCEPTION
90234   WHEN xla_exceptions_pkg.application_exception THEN
90235       RAISE;
90236   WHEN OTHERS THEN
90237        xla_exceptions_pkg.raise_message
90238            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_164');
90239 END AcctLineType_164;
90240 --
90241 
90242 ---------------------------------------
90243 --
90244 -- PRIVATE FUNCTION
90245 --         AcctLineType_165
90246 --
90247 ---------------------------------------
90248 PROCEDURE AcctLineType_165 (
90249   p_application_id        IN NUMBER
90250  ,p_event_id              IN NUMBER
90251  ,p_calculate_acctd_flag  IN VARCHAR2
90252  ,p_calculate_g_l_flag    IN VARCHAR2
90253  ,p_actual_flag           IN OUT VARCHAR2
90254  ,p_balance_type_code     OUT VARCHAR2
90255  ,p_gain_or_loss_ref      OUT VARCHAR2
90256  
90257 --Cost Management Default Account
90258  , p_source_4            IN NUMBER
90259 --DISTRIBUTION_IDENTIFIER
90260  , p_source_11            IN NUMBER
90261 --Distribution Type
90262  , p_source_12            IN VARCHAR2
90263  , p_source_12_meaning    IN VARCHAR2
90264 --Entered Currency Code
90265  , p_source_15            IN VARCHAR2
90266 --Entered Amount
90267  , p_source_18            IN NUMBER
90268 --Currency Conversion Date
90269  , p_source_19            IN DATE
90270 --Currency Conversion Rate
90271  , p_source_20            IN NUMBER
90272 --Currency Conversion Type
90273  , p_source_21            IN VARCHAR2
90274 --Accounted Amount
90275  , p_source_22            IN NUMBER
90276 --Accounting Line Type
90277  , p_source_24            IN NUMBER
90278 )
90279 IS
90280 
90281 l_component_type              VARCHAR2(80);
90282 l_component_code              VARCHAR2(30);
90283 l_component_type_code         VARCHAR2(1);
90284 l_component_appl_id           INTEGER;
90285 l_amb_context_code            VARCHAR2(30);
90286 l_entity_code                 VARCHAR2(30);
90287 l_event_class_code            VARCHAR2(30);
90288 l_ae_header_id                NUMBER;
90289 l_event_type_code             VARCHAR2(30);
90290 l_line_definition_code        VARCHAR2(30);
90291 l_line_definition_owner_code  VARCHAR2(1);
90292 --
90293 -- adr variables
90294 l_segment                     VARCHAR2(30);
90295 l_ccid                        NUMBER;
90296 l_adr_transaction_coa_id      NUMBER;
90297 l_adr_accounting_coa_id       NUMBER;
90298 l_adr_flexfield_segment_code  VARCHAR2(30);
90299 l_adr_flex_value_set_id       NUMBER;
90300 l_adr_value_type_code         VARCHAR2(30);
90301 l_adr_value_combination_id    NUMBER;
90302 l_adr_value_segment_code      VARCHAR2(30);
90303 
90304 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
90305 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
90306 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
90307 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
90308 
90309 -- 4262811 Variables ------------------------------------------------------------------------------------------
90310 l_entered_amt_idx             NUMBER;
90311 l_accted_amt_idx              NUMBER;
90312 l_acc_rev_flag                VARCHAR2(1);
90313 l_accrual_line_num            NUMBER;
90314 l_tmp_amt                     NUMBER;
90315 l_acc_rev_natural_side_code   VARCHAR2(1);
90316 
90317 l_num_entries                 NUMBER;
90318 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
90319 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
90320 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
90321 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
90322 l_recog_line_1                NUMBER;
90323 l_recog_line_2                NUMBER;
90324 
90325 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
90326 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
90327 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
90328 
90329 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
90330 
90331 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
90332 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
90333 
90334 ---------------------------------------------------------------------------------------------------------------
90335 
90336 
90337 --
90338 -- bulk performance
90339 --
90340 l_balance_type_code           VARCHAR2(1);
90341 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
90342 l_log_module                  VARCHAR2(240);
90343 
90344 --
90345 -- Upgrade strategy
90346 --
90347 l_actual_upg_option           VARCHAR2(1);
90348 l_enc_upg_option           VARCHAR2(1);
90349 
90350 --
90351 BEGIN
90352 --
90353 IF g_log_enabled THEN
90354       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_165';
90355 END IF;
90356 --
90357 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
90358 
90359       trace
90360          (p_msg      => 'BEGIN of AcctLineType_165'
90361          ,p_level    => C_LEVEL_PROCEDURE
90362          ,p_module   => l_log_module);
90363 
90364 END IF;
90365 --
90366 l_component_type             := 'AMB_JLT';
90367 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
90368 l_component_type_code        := 'S';
90369 l_component_appl_id          :=  707;
90370 l_amb_context_code           := 'DEFAULT';
90371 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
90372 l_event_class_code           := 'USER_DEFINE';
90373 l_event_type_code            := 'UDIR_INTERORG_SHIP_TP';
90374 l_line_definition_owner_code := 'S';
90375 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_TP';
90376 --
90377 l_balance_type_code          := 'A';
90378 l_segment                     := NULL;
90379 l_ccid                        := NULL;
90380 l_adr_transaction_coa_id      := NULL;
90381 l_adr_accounting_coa_id       := NULL;
90382 l_adr_flexfield_segment_code  := NULL;
90383 l_adr_flex_value_set_id       := NULL;
90384 l_adr_value_type_code         := NULL;
90385 l_adr_value_combination_id    := NULL;
90386 l_adr_value_segment_code      := NULL;
90387 
90388 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
90389 l_bflow_class_code           := '';    -- 4219869 Business Flow
90390 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
90391 l_budgetary_control_flag     := 'N';
90392 
90393 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
90394 l_bflow_applied_to_amt       := NULL; -- 5132302
90395 l_entered_amt_idx            := NULL;          -- 4262811
90396 l_accted_amt_idx             := NULL;          -- 4262811
90397 l_acc_rev_flag               := NULL;          -- 4262811
90398 l_accrual_line_num           := NULL;          -- 4262811
90399 l_tmp_amt                    := NULL;          -- 4262811
90400 --
90401  
90402 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
90403     l_balance_type_code <> 'B' THEN
90404 IF NVL(p_source_24,9E125) =  3
90405  THEN 
90406 
90407    --
90408    XLA_AE_LINES_PKG.SetNewLine;
90409 
90410    p_balance_type_code          := l_balance_type_code;
90411    -- set the flag so later we will know whether the gain loss line needs to be created
90412    
90413    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
90414      p_actual_flag :='A';
90415    END IF;
90416 
90417    --
90418    -- bulk performance
90419    --
90420    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
90421                                       p_header_num   => 0); -- 4262811
90422    --
90423    -- set accounting line options
90424    --
90425    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
90426            p_natural_side_code          => 'D'
90427          , p_gain_or_loss_flag          => 'N'
90428          , p_gl_transfer_mode_code      => 'S'
90429          , p_acct_entry_type_code       => 'A'
90430          , p_switch_side_flag           => 'Y'
90431          , p_merge_duplicate_code       => 'N'
90432          );
90433    --
90434    l_acc_rev_natural_side_code := 'C';  -- 4262811
90435    -- 
90436    --
90437    -- set accounting line type info
90438    --
90439    xla_ae_lines_pkg.SetAcctLineType
90440       (p_component_type             => l_component_type
90441       ,p_event_type_code            => l_event_type_code
90442       ,p_line_definition_owner_code => l_line_definition_owner_code
90443       ,p_line_definition_code       => l_line_definition_code
90444       ,p_accounting_line_code       => l_component_code
90445       ,p_accounting_line_type_code  => l_component_type_code
90446       ,p_accounting_line_appl_id    => l_component_appl_id
90447       ,p_amb_context_code           => l_amb_context_code
90448       ,p_entity_code                => l_entity_code
90449       ,p_event_class_code           => l_event_class_code);
90450    --
90451    -- set accounting class
90452    --
90453    xla_ae_lines_pkg.SetAcctClass(
90454            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
90455          , p_ae_header_id           => l_ae_header_id
90456          );
90457 
90458    --
90459    -- set rounding class
90460    --
90461    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
90462                       'MATERIAL_OVERHEAD_ABSORPTION';
90463 
90464    --
90465    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
90466    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
90467    --
90468    -- bulk performance
90469    --
90470    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
90471 
90472    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
90473       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
90474 
90475    -- 4955764
90476    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
90477       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
90478 
90479    -- 4458381 Public Sector Enh
90480    
90481    --
90482    -- set accounting attributes for the line type
90483    --
90484    l_entered_amt_idx := 3;
90485    l_accted_amt_idx  := 8;
90486    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
90487    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
90488    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
90489    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
90490    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
90491    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
90492    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
90493    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
90494    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
90495    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
90496    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
90497    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
90498    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
90499    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
90500    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
90501    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
90502    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
90503 
90504    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
90505    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
90506 
90507    ---------------------------------------------------------------------------------------------------------------
90508    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
90509    ---------------------------------------------------------------------------------------------------------------
90510    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
90511 
90512    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
90513    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
90514 
90515    IF xla_accounting_cache_pkg.GetValueChar
90516          (p_source_code         => 'LEDGER_CATEGORY_CODE'
90517          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
90518    AND l_bflow_method_code = 'PRIOR_ENTRY'
90519 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
90520    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
90521          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
90522        )
90523    THEN
90524          xla_ae_lines_pkg.BflowUpgEntry
90525            (p_business_method_code    => l_bflow_method_code
90526            ,p_business_class_code     => l_bflow_class_code
90527            ,p_balance_type            => l_balance_type_code);
90528    ELSE
90529       NULL;
90530 -- No business flow processing for business flow method of NONE.
90531    END IF;
90532 
90533    --
90534    -- call analytical criteria
90535    --
90536    
90537    --
90538    -- call description
90539    --
90540    -- No description or it is inherited.
90541    --
90542    -- call ADRs
90543    -- Bug 4922099
90544    --
90545    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
90546         (NVL(l_actual_upg_option, 'N') = 'O') OR
90547         (NVL(l_enc_upg_option, 'N') = 'O')
90548       )
90549    THEN
90550    NULL;
90551    --
90552    --
90553    
90554   l_ccid := AcctDerRule_4(
90555            p_application_id           => p_application_id
90556          , p_ae_header_id             => l_ae_header_id 
90557 , p_source_4 => p_source_4
90558          , x_transaction_coa_id       => l_adr_transaction_coa_id
90559          , x_accounting_coa_id        => l_adr_accounting_coa_id
90560          , x_value_type_code          => l_adr_value_type_code
90561          , p_side                     => 'NA'
90562    );
90563 
90564    xla_ae_lines_pkg.set_ccid(
90565     p_code_combination_id          => l_ccid
90566   , p_value_type_code              => l_adr_value_type_code
90567   , p_transaction_coa_id           => l_adr_transaction_coa_id
90568   , p_accounting_coa_id            => l_adr_accounting_coa_id
90569   , p_adr_code                     => 'CST_DEFAULT'
90570   , p_adr_type_code                => 'S'
90571   , p_component_type               => l_component_type
90572   , p_component_code               => l_component_code
90573   , p_component_type_code          => l_component_type_code
90574   , p_component_appl_id            => l_component_appl_id
90575   , p_amb_context_code             => l_amb_context_code
90576   , p_side                         => 'NA'
90577   );
90578 
90579 
90580    --
90581    --
90582    END IF;
90583    --
90584    -- Bug 4922099
90585    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
90586           (NVL(l_enc_upg_option, 'N') = 'O')
90587         ) AND
90588         (l_bflow_method_code = 'PRIOR_ENTRY')
90589       )
90590    THEN
90591       IF
90592       --
90593       1 = 2
90594       --
90595       THEN
90596       xla_accounting_err_pkg.build_message
90597                                     (p_appli_s_name            => 'XLA'
90598                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
90599                                     ,p_token_1                 => 'LINE_NUMBER'
90600                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
90601                                     ,p_token_2                 => 'LINE_TYPE_NAME'
90602                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
90603                                                                              l_component_type
90604                                                                             ,l_component_code
90605                                                                             ,l_component_type_code
90606                                                                             ,l_component_appl_id
90607                                                                             ,l_amb_context_code
90608                                                                             ,l_entity_code
90609                                                                             ,l_event_class_code
90610                                                                            )
90611                                     ,p_token_3                 => 'OWNER'
90612                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
90613                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
90614                                                                           ,p_lookup_code    => l_component_type_code
90615                                                                          )
90616                                     ,p_token_4                 => 'PRODUCT_NAME'
90617                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
90618                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
90619                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
90620                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
90621                                     ,p_ae_header_id            =>  NULL
90622                                        );
90623 
90624         IF (C_LEVEL_ERROR>= g_log_level) THEN
90625                  trace
90626                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
90627                       ,p_level    => C_LEVEL_ERROR
90628                       ,p_module   => l_log_module);
90629         END IF;
90630       END IF;
90631    END IF;
90632    --
90633    --
90634    ------------------------------------------------------------------------------------------------
90635    -- 4219869 Business Flow
90636    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
90637    -- Prior Entry.  Currently, the following code is always generated.
90638    ------------------------------------------------------------------------------------------------
90639    XLA_AE_LINES_PKG.ValidateCurrentLine;
90640 
90641    ------------------------------------------------------------------------------------
90642    -- 4219869 Business Flow
90643    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
90644    ------------------------------------------------------------------------------------
90645    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
90646 
90647    ----------------------------------------------------------------------------------
90648    -- 4219869 Business Flow
90649    -- Update journal entry status -- Need to generate this within IF <condition>
90650    ----------------------------------------------------------------------------------
90651    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
90652          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
90653          ,p_balance_type_code => l_balance_type_code
90654          );
90655 
90656    -------------------------------------------------------------------------------------------
90657    -- 4262811 - Generate the Accrual Reversal lines
90658    -------------------------------------------------------------------------------------------
90659    BEGIN
90660       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
90661                               (g_array_event(p_event_id).array_value_num('header_index'));
90662       IF l_acc_rev_flag IS NULL THEN
90663          l_acc_rev_flag := 'N';
90664       END IF;
90665    EXCEPTION
90666       WHEN OTHERS THEN
90667          l_acc_rev_flag := 'N';
90668    END;
90669    --
90670    IF (l_acc_rev_flag = 'Y') THEN
90671 
90672        -- 4645092  ------------------------------------------------------------------------------
90673        -- To allow MPA report to determine if it should generate report process
90674        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
90675        ------------------------------------------------------------------------------------------
90676 
90677        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
90678        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
90679    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
90680    -- call ADRs
90681    -- Bug 4922099
90682    --
90683    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
90684         (NVL(l_actual_upg_option, 'N') = 'O') OR
90685         (NVL(l_enc_upg_option, 'N') = 'O')
90686       )
90687    THEN
90688    NULL;
90689    --
90690    --
90691    
90692   l_ccid := AcctDerRule_4(
90693            p_application_id           => p_application_id
90694          , p_ae_header_id             => l_ae_header_id 
90695 , p_source_4 => p_source_4
90696          , x_transaction_coa_id       => l_adr_transaction_coa_id
90697          , x_accounting_coa_id        => l_adr_accounting_coa_id
90698          , x_value_type_code          => l_adr_value_type_code
90699          , p_side                     => 'NA'
90700    );
90701 
90702    xla_ae_lines_pkg.set_ccid(
90703     p_code_combination_id          => l_ccid
90704   , p_value_type_code              => l_adr_value_type_code
90705   , p_transaction_coa_id           => l_adr_transaction_coa_id
90706   , p_accounting_coa_id            => l_adr_accounting_coa_id
90707   , p_adr_code                     => 'CST_DEFAULT'
90708   , p_adr_type_code                => 'S'
90709   , p_component_type               => l_component_type
90710   , p_component_code               => l_component_code
90711   , p_component_type_code          => l_component_type_code
90712   , p_component_appl_id            => l_component_appl_id
90713   , p_amb_context_code             => l_amb_context_code
90714   , p_side                         => 'NA'
90715   );
90716 
90717 
90718    --
90719    --
90720    END IF;
90721 
90722        --
90723        -- Update the line information that should be overwritten
90724        --
90725        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
90726                                          p_header_num   => 1);
90727        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
90728 
90729        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
90730 
90731        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
90732           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
90733        END IF;
90734 
90735       --
90736       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
90737       --
90738       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
90739           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
90740       ELSE
90741           ---------------------------------------------------------------------------------------------------
90742           -- 4262811a Switch Sign
90743           ---------------------------------------------------------------------------------------------------
90744           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
90745           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
90746                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90747           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
90748                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90749           -- 5132302
90750           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
90751                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90752 
90753       END IF;
90754 
90755       -- 4955764
90756       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
90757       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
90758 
90759 
90760       XLA_AE_LINES_PKG.ValidateCurrentLine;
90761       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
90762 
90763       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
90764                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
90765                ,p_balance_type_code => l_balance_type_code);
90766 
90767    END IF;
90768 
90769    -----------------------------------------------------------------------------------------
90770    -- 4262811 Multiperiod Accounting
90771    -----------------------------------------------------------------------------------------
90772      -- No MPA option is assigned.
90773 
90774 
90775 END IF;
90776 END IF;
90777 --
90778 
90779 --
90780 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
90781    trace
90782       (p_msg      => 'END of AcctLineType_165'
90783       ,p_level    => C_LEVEL_PROCEDURE
90784       ,p_module   => l_log_module);
90785 END IF;
90786 --
90787 EXCEPTION
90788   WHEN xla_exceptions_pkg.application_exception THEN
90789       RAISE;
90790   WHEN OTHERS THEN
90791        xla_exceptions_pkg.raise_message
90792            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_165');
90793 END AcctLineType_165;
90794 --
90795 
90796 ---------------------------------------
90797 --
90798 -- PRIVATE FUNCTION
90799 --         AcctLineType_166
90800 --
90801 ---------------------------------------
90802 PROCEDURE AcctLineType_166 (
90803   p_application_id        IN NUMBER
90804  ,p_event_id              IN NUMBER
90805  ,p_calculate_acctd_flag  IN VARCHAR2
90806  ,p_calculate_g_l_flag    IN VARCHAR2
90807  ,p_actual_flag           IN OUT VARCHAR2
90808  ,p_balance_type_code     OUT VARCHAR2
90809  ,p_gain_or_loss_ref      OUT VARCHAR2
90810  
90811 --Cost Management Default Account
90812  , p_source_4            IN NUMBER
90813 --Applied to Application ID
90814  , p_source_6            IN NUMBER
90815 --Applied to Distribution Link Type
90816  , p_source_7            IN VARCHAR2
90817 --Applied to Entity Code
90818  , p_source_8            IN VARCHAR2
90819 --DISTRIBUTION_IDENTIFIER
90820  , p_source_11            IN NUMBER
90821 --Distribution Type
90822  , p_source_12            IN VARCHAR2
90823  , p_source_12_meaning    IN VARCHAR2
90824 --Encumbrance Reversal Amount Entered
90825  , p_source_14            IN NUMBER
90826 --Entered Currency Code
90827  , p_source_15            IN VARCHAR2
90828 --Transaction Encumbrance Reversal Amount
90829  , p_source_16            IN NUMBER
90830 --Entered Amount
90831  , p_source_18            IN NUMBER
90832 --Currency Conversion Date
90833  , p_source_19            IN DATE
90834 --Currency Conversion Rate
90835  , p_source_20            IN NUMBER
90836 --Currency Conversion Type
90837  , p_source_21            IN VARCHAR2
90838 --Accounted Amount
90839  , p_source_22            IN NUMBER
90840 --Accounting Line Type
90841  , p_source_24            IN NUMBER
90842 --Costing Encumbrance Upgrade Option
90843  , p_source_27            IN VARCHAR2
90844 --TXN_PO_DISTRIBUTION_ID
90845  , p_source_28            IN NUMBER
90846 --TXN_PO_HEADER_ID
90847  , p_source_29            IN NUMBER
90848 --Requisition Budget Account
90849  , p_source_30            IN NUMBER
90850 --Requisition Encumbrance Type Identifier
90851  , p_source_31            IN NUMBER
90852 )
90853 IS
90854 
90855 l_component_type              VARCHAR2(80);
90856 l_component_code              VARCHAR2(30);
90857 l_component_type_code         VARCHAR2(1);
90858 l_component_appl_id           INTEGER;
90859 l_amb_context_code            VARCHAR2(30);
90860 l_entity_code                 VARCHAR2(30);
90861 l_event_class_code            VARCHAR2(30);
90862 l_ae_header_id                NUMBER;
90863 l_event_type_code             VARCHAR2(30);
90864 l_line_definition_code        VARCHAR2(30);
90865 l_line_definition_owner_code  VARCHAR2(1);
90866 --
90867 -- adr variables
90868 l_segment                     VARCHAR2(30);
90869 l_ccid                        NUMBER;
90870 l_adr_transaction_coa_id      NUMBER;
90871 l_adr_accounting_coa_id       NUMBER;
90872 l_adr_flexfield_segment_code  VARCHAR2(30);
90873 l_adr_flex_value_set_id       NUMBER;
90874 l_adr_value_type_code         VARCHAR2(30);
90875 l_adr_value_combination_id    NUMBER;
90876 l_adr_value_segment_code      VARCHAR2(30);
90877 
90878 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
90879 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
90880 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
90881 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
90882 
90883 -- 4262811 Variables ------------------------------------------------------------------------------------------
90884 l_entered_amt_idx             NUMBER;
90885 l_accted_amt_idx              NUMBER;
90886 l_acc_rev_flag                VARCHAR2(1);
90887 l_accrual_line_num            NUMBER;
90888 l_tmp_amt                     NUMBER;
90889 l_acc_rev_natural_side_code   VARCHAR2(1);
90890 
90891 l_num_entries                 NUMBER;
90892 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
90893 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
90894 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
90895 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
90896 l_recog_line_1                NUMBER;
90897 l_recog_line_2                NUMBER;
90898 
90899 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
90900 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
90901 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
90902 
90903 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
90904 
90905 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
90906 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
90907 
90908 ---------------------------------------------------------------------------------------------------------------
90909 
90910 
90911 --
90912 -- bulk performance
90913 --
90914 l_balance_type_code           VARCHAR2(1);
90915 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
90916 l_log_module                  VARCHAR2(240);
90917 
90918 --
90919 -- Upgrade strategy
90920 --
90921 l_actual_upg_option           VARCHAR2(1);
90922 l_enc_upg_option           VARCHAR2(1);
90923 
90924 --
90925 BEGIN
90926 --
90927 IF g_log_enabled THEN
90928       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_166';
90929 END IF;
90930 --
90931 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
90932 
90933       trace
90934          (p_msg      => 'BEGIN of AcctLineType_166'
90935          ,p_level    => C_LEVEL_PROCEDURE
90936          ,p_module   => l_log_module);
90937 
90938 END IF;
90939 --
90940 l_component_type             := 'AMB_JLT';
90941 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
90942 l_component_type_code        := 'S';
90943 l_component_appl_id          :=  707;
90944 l_amb_context_code           := 'DEFAULT';
90945 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
90946 l_event_class_code           := 'DIR_INTERORG_RCPT';
90947 l_event_type_code            := 'DIR_INTERORG_RCPT_ALL';
90948 l_line_definition_owner_code := 'S';
90949 l_line_definition_code       := 'DIRECT_INTERORG_RCPT';
90950 --
90951 l_balance_type_code          := 'A';
90952 l_segment                     := NULL;
90953 l_ccid                        := NULL;
90954 l_adr_transaction_coa_id      := NULL;
90955 l_adr_accounting_coa_id       := NULL;
90956 l_adr_flexfield_segment_code  := NULL;
90957 l_adr_flex_value_set_id       := NULL;
90958 l_adr_value_type_code         := NULL;
90959 l_adr_value_combination_id    := NULL;
90960 l_adr_value_segment_code      := NULL;
90961 
90962 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
90963 l_bflow_class_code           := '';    -- 4219869 Business Flow
90964 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
90965 l_budgetary_control_flag     := 'N';
90966 
90967 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
90968 l_bflow_applied_to_amt       := NULL; -- 5132302
90969 l_entered_amt_idx            := NULL;          -- 4262811
90970 l_accted_amt_idx             := NULL;          -- 4262811
90971 l_acc_rev_flag               := NULL;          -- 4262811
90972 l_accrual_line_num           := NULL;          -- 4262811
90973 l_tmp_amt                    := NULL;          -- 4262811
90974 --
90975  
90976 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
90977     l_balance_type_code <> 'B' THEN
90978 IF NVL(p_source_24,9E125) =  3
90979  THEN 
90980 
90981    --
90982    XLA_AE_LINES_PKG.SetNewLine;
90983 
90984    p_balance_type_code          := l_balance_type_code;
90985    -- set the flag so later we will know whether the gain loss line needs to be created
90986    
90987    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
90988      p_actual_flag :='A';
90989    END IF;
90990 
90991    --
90992    -- bulk performance
90993    --
90994    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
90995                                       p_header_num   => 0); -- 4262811
90996    --
90997    -- set accounting line options
90998    --
90999    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
91000            p_natural_side_code          => 'D'
91001          , p_gain_or_loss_flag          => 'N'
91002          , p_gl_transfer_mode_code      => 'S'
91003          , p_acct_entry_type_code       => 'A'
91004          , p_switch_side_flag           => 'Y'
91005          , p_merge_duplicate_code       => 'N'
91006          );
91007    --
91008    l_acc_rev_natural_side_code := 'C';  -- 4262811
91009    -- 
91010    --
91011    -- set accounting line type info
91012    --
91013    xla_ae_lines_pkg.SetAcctLineType
91014       (p_component_type             => l_component_type
91015       ,p_event_type_code            => l_event_type_code
91016       ,p_line_definition_owner_code => l_line_definition_owner_code
91017       ,p_line_definition_code       => l_line_definition_code
91018       ,p_accounting_line_code       => l_component_code
91019       ,p_accounting_line_type_code  => l_component_type_code
91020       ,p_accounting_line_appl_id    => l_component_appl_id
91021       ,p_amb_context_code           => l_amb_context_code
91022       ,p_entity_code                => l_entity_code
91023       ,p_event_class_code           => l_event_class_code);
91024    --
91025    -- set accounting class
91026    --
91027    xla_ae_lines_pkg.SetAcctClass(
91028            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
91029          , p_ae_header_id           => l_ae_header_id
91030          );
91031 
91032    --
91033    -- set rounding class
91034    --
91035    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
91036                       'MATERIAL_OVERHEAD_ABSORPTION';
91037 
91038    --
91039    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
91040    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
91041    --
91042    -- bulk performance
91043    --
91044    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
91045 
91046    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
91047       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
91048 
91049    -- 4955764
91050    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
91051       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
91052 
91053    -- 4458381 Public Sector Enh
91054    
91055    --
91056    -- set accounting attributes for the line type
91057    --
91058    l_entered_amt_idx := 17;
91059    l_accted_amt_idx  := 22;
91060    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
91061    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
91062    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
91063    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
91064    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
91065    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
91066    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
91067    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
91068    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
91069    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
91070    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
91071    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
91072    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
91073    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
91074    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
91075    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
91076    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
91077    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
91078    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
91079    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
91080    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
91081    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
91082    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
91083    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
91084    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
91085    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
91086    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
91087    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
91088    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
91089    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
91090    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
91091    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
91092    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
91093    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
91094    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
91095    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
91096    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
91097    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
91098    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
91099    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
91100    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
91101    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
91102    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
91103    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
91104    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
91105    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
91106    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
91107    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
91108    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
91109 
91110    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
91111    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
91112 
91113    ---------------------------------------------------------------------------------------------------------------
91114    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
91115    ---------------------------------------------------------------------------------------------------------------
91116    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
91117 
91118    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
91119    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
91120 
91121    IF xla_accounting_cache_pkg.GetValueChar
91122          (p_source_code         => 'LEDGER_CATEGORY_CODE'
91123          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
91124    AND l_bflow_method_code = 'PRIOR_ENTRY'
91125 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
91126    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
91127          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
91128        )
91129    THEN
91130          xla_ae_lines_pkg.BflowUpgEntry
91131            (p_business_method_code    => l_bflow_method_code
91132            ,p_business_class_code     => l_bflow_class_code
91133            ,p_balance_type            => l_balance_type_code);
91134    ELSE
91135       NULL;
91136 -- No business flow processing for business flow method of NONE.
91137    END IF;
91138 
91139    --
91140    -- call analytical criteria
91141    --
91142    
91143    --
91144    -- call description
91145    --
91146    -- No description or it is inherited.
91147    --
91148    -- call ADRs
91149    -- Bug 4922099
91150    --
91151    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
91152         (NVL(l_actual_upg_option, 'N') = 'O') OR
91153         (NVL(l_enc_upg_option, 'N') = 'O')
91154       )
91155    THEN
91156    NULL;
91157    --
91158    --
91159    
91160   l_ccid := AcctDerRule_4(
91161            p_application_id           => p_application_id
91162          , p_ae_header_id             => l_ae_header_id 
91163 , p_source_4 => p_source_4
91164          , x_transaction_coa_id       => l_adr_transaction_coa_id
91165          , x_accounting_coa_id        => l_adr_accounting_coa_id
91166          , x_value_type_code          => l_adr_value_type_code
91167          , p_side                     => 'NA'
91168    );
91169 
91170    xla_ae_lines_pkg.set_ccid(
91171     p_code_combination_id          => l_ccid
91172   , p_value_type_code              => l_adr_value_type_code
91173   , p_transaction_coa_id           => l_adr_transaction_coa_id
91174   , p_accounting_coa_id            => l_adr_accounting_coa_id
91175   , p_adr_code                     => 'CST_DEFAULT'
91176   , p_adr_type_code                => 'S'
91177   , p_component_type               => l_component_type
91178   , p_component_code               => l_component_code
91179   , p_component_type_code          => l_component_type_code
91180   , p_component_appl_id            => l_component_appl_id
91181   , p_amb_context_code             => l_amb_context_code
91182   , p_side                         => 'NA'
91183   );
91184 
91185 
91186    --
91187    --
91188    END IF;
91189    --
91190    -- Bug 4922099
91191    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
91192           (NVL(l_enc_upg_option, 'N') = 'O')
91193         ) AND
91194         (l_bflow_method_code = 'PRIOR_ENTRY')
91195       )
91196    THEN
91197       IF
91198       --
91199       1 = 2
91200       --
91201       THEN
91202       xla_accounting_err_pkg.build_message
91203                                     (p_appli_s_name            => 'XLA'
91204                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
91205                                     ,p_token_1                 => 'LINE_NUMBER'
91206                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
91207                                     ,p_token_2                 => 'LINE_TYPE_NAME'
91208                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
91209                                                                              l_component_type
91210                                                                             ,l_component_code
91211                                                                             ,l_component_type_code
91212                                                                             ,l_component_appl_id
91213                                                                             ,l_amb_context_code
91214                                                                             ,l_entity_code
91215                                                                             ,l_event_class_code
91216                                                                            )
91217                                     ,p_token_3                 => 'OWNER'
91218                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
91219                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
91220                                                                           ,p_lookup_code    => l_component_type_code
91221                                                                          )
91222                                     ,p_token_4                 => 'PRODUCT_NAME'
91223                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
91224                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
91225                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
91226                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
91227                                     ,p_ae_header_id            =>  NULL
91228                                        );
91229 
91230         IF (C_LEVEL_ERROR>= g_log_level) THEN
91231                  trace
91232                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
91233                       ,p_level    => C_LEVEL_ERROR
91234                       ,p_module   => l_log_module);
91235         END IF;
91236       END IF;
91237    END IF;
91238    --
91239    --
91240    ------------------------------------------------------------------------------------------------
91241    -- 4219869 Business Flow
91242    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
91243    -- Prior Entry.  Currently, the following code is always generated.
91244    ------------------------------------------------------------------------------------------------
91245    XLA_AE_LINES_PKG.ValidateCurrentLine;
91246 
91247    ------------------------------------------------------------------------------------
91248    -- 4219869 Business Flow
91249    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
91250    ------------------------------------------------------------------------------------
91251    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
91252 
91253    ----------------------------------------------------------------------------------
91254    -- 4219869 Business Flow
91255    -- Update journal entry status -- Need to generate this within IF <condition>
91256    ----------------------------------------------------------------------------------
91257    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
91258          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
91259          ,p_balance_type_code => l_balance_type_code
91260          );
91261 
91262    -------------------------------------------------------------------------------------------
91263    -- 4262811 - Generate the Accrual Reversal lines
91264    -------------------------------------------------------------------------------------------
91265    BEGIN
91266       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
91267                               (g_array_event(p_event_id).array_value_num('header_index'));
91268       IF l_acc_rev_flag IS NULL THEN
91269          l_acc_rev_flag := 'N';
91270       END IF;
91271    EXCEPTION
91272       WHEN OTHERS THEN
91273          l_acc_rev_flag := 'N';
91274    END;
91275    --
91276    IF (l_acc_rev_flag = 'Y') THEN
91277 
91278        -- 4645092  ------------------------------------------------------------------------------
91279        -- To allow MPA report to determine if it should generate report process
91280        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
91281        ------------------------------------------------------------------------------------------
91282 
91283        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
91284        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
91285    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
91286    -- call ADRs
91287    -- Bug 4922099
91288    --
91289    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
91290         (NVL(l_actual_upg_option, 'N') = 'O') OR
91291         (NVL(l_enc_upg_option, 'N') = 'O')
91292       )
91293    THEN
91294    NULL;
91295    --
91296    --
91297    
91298   l_ccid := AcctDerRule_4(
91299            p_application_id           => p_application_id
91300          , p_ae_header_id             => l_ae_header_id 
91301 , p_source_4 => p_source_4
91302          , x_transaction_coa_id       => l_adr_transaction_coa_id
91303          , x_accounting_coa_id        => l_adr_accounting_coa_id
91304          , x_value_type_code          => l_adr_value_type_code
91305          , p_side                     => 'NA'
91306    );
91307 
91308    xla_ae_lines_pkg.set_ccid(
91309     p_code_combination_id          => l_ccid
91310   , p_value_type_code              => l_adr_value_type_code
91311   , p_transaction_coa_id           => l_adr_transaction_coa_id
91312   , p_accounting_coa_id            => l_adr_accounting_coa_id
91313   , p_adr_code                     => 'CST_DEFAULT'
91314   , p_adr_type_code                => 'S'
91315   , p_component_type               => l_component_type
91316   , p_component_code               => l_component_code
91317   , p_component_type_code          => l_component_type_code
91318   , p_component_appl_id            => l_component_appl_id
91319   , p_amb_context_code             => l_amb_context_code
91320   , p_side                         => 'NA'
91321   );
91322 
91323 
91324    --
91325    --
91326    END IF;
91327 
91328        --
91329        -- Update the line information that should be overwritten
91330        --
91331        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
91332                                          p_header_num   => 1);
91333        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
91334 
91335        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
91336 
91337        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
91338           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
91339        END IF;
91340 
91341       --
91342       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
91343       --
91344       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
91345           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
91346       ELSE
91347           ---------------------------------------------------------------------------------------------------
91348           -- 4262811a Switch Sign
91349           ---------------------------------------------------------------------------------------------------
91350           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
91351           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
91352                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91353           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
91354                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91355           -- 5132302
91356           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
91357                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91358 
91359       END IF;
91360 
91361       -- 4955764
91362       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
91363       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
91364 
91365 
91366       XLA_AE_LINES_PKG.ValidateCurrentLine;
91367       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
91368 
91369       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
91370                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
91371                ,p_balance_type_code => l_balance_type_code);
91372 
91373    END IF;
91374 
91375    -----------------------------------------------------------------------------------------
91376    -- 4262811 Multiperiod Accounting
91377    -----------------------------------------------------------------------------------------
91378      -- No MPA option is assigned.
91379 
91380 
91381 END IF;
91382 END IF;
91383 --
91384 
91385 --
91386 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
91387    trace
91388       (p_msg      => 'END of AcctLineType_166'
91389       ,p_level    => C_LEVEL_PROCEDURE
91390       ,p_module   => l_log_module);
91391 END IF;
91392 --
91393 EXCEPTION
91394   WHEN xla_exceptions_pkg.application_exception THEN
91395       RAISE;
91396   WHEN OTHERS THEN
91397        xla_exceptions_pkg.raise_message
91398            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_166');
91399 END AcctLineType_166;
91400 --
91401 
91402 ---------------------------------------
91403 --
91404 -- PRIVATE FUNCTION
91405 --         AcctLineType_167
91406 --
91407 ---------------------------------------
91408 PROCEDURE AcctLineType_167 (
91409   p_application_id        IN NUMBER
91410  ,p_event_id              IN NUMBER
91411  ,p_calculate_acctd_flag  IN VARCHAR2
91412  ,p_calculate_g_l_flag    IN VARCHAR2
91413  ,p_actual_flag           IN OUT VARCHAR2
91414  ,p_balance_type_code     OUT VARCHAR2
91415  ,p_gain_or_loss_ref      OUT VARCHAR2
91416  
91417 --Cost Management Default Account
91418  , p_source_4            IN NUMBER
91419 --DISTRIBUTION_IDENTIFIER
91420  , p_source_11            IN NUMBER
91421 --Distribution Type
91422  , p_source_12            IN VARCHAR2
91423  , p_source_12_meaning    IN VARCHAR2
91424 --Entered Currency Code
91425  , p_source_15            IN VARCHAR2
91426 --Entered Amount
91427  , p_source_18            IN NUMBER
91428 --Currency Conversion Date
91429  , p_source_19            IN DATE
91430 --Currency Conversion Rate
91431  , p_source_20            IN NUMBER
91432 --Currency Conversion Type
91433  , p_source_21            IN VARCHAR2
91434 --Accounted Amount
91435  , p_source_22            IN NUMBER
91436 --Accounting Line Type
91437  , p_source_24            IN NUMBER
91438 )
91439 IS
91440 
91441 l_component_type              VARCHAR2(80);
91442 l_component_code              VARCHAR2(30);
91443 l_component_type_code         VARCHAR2(1);
91444 l_component_appl_id           INTEGER;
91445 l_amb_context_code            VARCHAR2(30);
91446 l_entity_code                 VARCHAR2(30);
91447 l_event_class_code            VARCHAR2(30);
91448 l_ae_header_id                NUMBER;
91449 l_event_type_code             VARCHAR2(30);
91450 l_line_definition_code        VARCHAR2(30);
91451 l_line_definition_owner_code  VARCHAR2(1);
91452 --
91453 -- adr variables
91454 l_segment                     VARCHAR2(30);
91455 l_ccid                        NUMBER;
91456 l_adr_transaction_coa_id      NUMBER;
91457 l_adr_accounting_coa_id       NUMBER;
91458 l_adr_flexfield_segment_code  VARCHAR2(30);
91459 l_adr_flex_value_set_id       NUMBER;
91460 l_adr_value_type_code         VARCHAR2(30);
91461 l_adr_value_combination_id    NUMBER;
91462 l_adr_value_segment_code      VARCHAR2(30);
91463 
91464 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
91465 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
91466 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
91467 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
91468 
91469 -- 4262811 Variables ------------------------------------------------------------------------------------------
91470 l_entered_amt_idx             NUMBER;
91471 l_accted_amt_idx              NUMBER;
91472 l_acc_rev_flag                VARCHAR2(1);
91473 l_accrual_line_num            NUMBER;
91474 l_tmp_amt                     NUMBER;
91475 l_acc_rev_natural_side_code   VARCHAR2(1);
91476 
91477 l_num_entries                 NUMBER;
91478 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
91479 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
91480 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
91481 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
91482 l_recog_line_1                NUMBER;
91483 l_recog_line_2                NUMBER;
91484 
91485 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
91486 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
91487 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
91488 
91489 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
91490 
91491 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
91492 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
91493 
91494 ---------------------------------------------------------------------------------------------------------------
91495 
91496 
91497 --
91498 -- bulk performance
91499 --
91500 l_balance_type_code           VARCHAR2(1);
91501 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
91502 l_log_module                  VARCHAR2(240);
91503 
91504 --
91505 -- Upgrade strategy
91506 --
91507 l_actual_upg_option           VARCHAR2(1);
91508 l_enc_upg_option           VARCHAR2(1);
91509 
91510 --
91511 BEGIN
91512 --
91513 IF g_log_enabled THEN
91514       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_167';
91515 END IF;
91516 --
91517 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
91518 
91519       trace
91520          (p_msg      => 'BEGIN of AcctLineType_167'
91521          ,p_level    => C_LEVEL_PROCEDURE
91522          ,p_module   => l_log_module);
91523 
91524 END IF;
91525 --
91526 l_component_type             := 'AMB_JLT';
91527 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
91528 l_component_type_code        := 'S';
91529 l_component_appl_id          :=  707;
91530 l_amb_context_code           := 'DEFAULT';
91531 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
91532 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
91533 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
91534 l_line_definition_owner_code := 'S';
91535 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_SHIP';
91536 --
91537 l_balance_type_code          := 'A';
91538 l_segment                     := NULL;
91539 l_ccid                        := NULL;
91540 l_adr_transaction_coa_id      := NULL;
91541 l_adr_accounting_coa_id       := NULL;
91542 l_adr_flexfield_segment_code  := NULL;
91543 l_adr_flex_value_set_id       := NULL;
91544 l_adr_value_type_code         := NULL;
91545 l_adr_value_combination_id    := NULL;
91546 l_adr_value_segment_code      := NULL;
91547 
91548 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
91549 l_bflow_class_code           := '';    -- 4219869 Business Flow
91550 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
91551 l_budgetary_control_flag     := 'N';
91552 
91553 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
91554 l_bflow_applied_to_amt       := NULL; -- 5132302
91555 l_entered_amt_idx            := NULL;          -- 4262811
91556 l_accted_amt_idx             := NULL;          -- 4262811
91557 l_acc_rev_flag               := NULL;          -- 4262811
91558 l_accrual_line_num           := NULL;          -- 4262811
91559 l_tmp_amt                    := NULL;          -- 4262811
91560 --
91561  
91562 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
91563     l_balance_type_code <> 'B' THEN
91564 IF NVL(p_source_24,9E125) =  3
91565  THEN 
91566 
91567    --
91568    XLA_AE_LINES_PKG.SetNewLine;
91569 
91570    p_balance_type_code          := l_balance_type_code;
91571    -- set the flag so later we will know whether the gain loss line needs to be created
91572    
91573    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
91574      p_actual_flag :='A';
91575    END IF;
91576 
91577    --
91578    -- bulk performance
91579    --
91580    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
91581                                       p_header_num   => 0); -- 4262811
91582    --
91583    -- set accounting line options
91584    --
91585    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
91586            p_natural_side_code          => 'D'
91587          , p_gain_or_loss_flag          => 'N'
91588          , p_gl_transfer_mode_code      => 'S'
91589          , p_acct_entry_type_code       => 'A'
91590          , p_switch_side_flag           => 'Y'
91591          , p_merge_duplicate_code       => 'N'
91592          );
91593    --
91594    l_acc_rev_natural_side_code := 'C';  -- 4262811
91595    -- 
91596    --
91597    -- set accounting line type info
91598    --
91599    xla_ae_lines_pkg.SetAcctLineType
91600       (p_component_type             => l_component_type
91601       ,p_event_type_code            => l_event_type_code
91602       ,p_line_definition_owner_code => l_line_definition_owner_code
91603       ,p_line_definition_code       => l_line_definition_code
91604       ,p_accounting_line_code       => l_component_code
91605       ,p_accounting_line_type_code  => l_component_type_code
91606       ,p_accounting_line_appl_id    => l_component_appl_id
91607       ,p_amb_context_code           => l_amb_context_code
91608       ,p_entity_code                => l_entity_code
91609       ,p_event_class_code           => l_event_class_code);
91610    --
91611    -- set accounting class
91612    --
91613    xla_ae_lines_pkg.SetAcctClass(
91614            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
91615          , p_ae_header_id           => l_ae_header_id
91616          );
91617 
91618    --
91619    -- set rounding class
91620    --
91621    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
91622                       'MATERIAL_OVERHEAD_ABSORPTION';
91623 
91624    --
91625    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
91626    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
91627    --
91628    -- bulk performance
91629    --
91630    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
91631 
91632    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
91633       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
91634 
91635    -- 4955764
91636    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
91637       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
91638 
91639    -- 4458381 Public Sector Enh
91640    
91641    --
91642    -- set accounting attributes for the line type
91643    --
91644    l_entered_amt_idx := 3;
91645    l_accted_amt_idx  := 8;
91646    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
91647    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
91648    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
91649    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
91650    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
91651    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
91652    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
91653    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
91654    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
91655    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
91656    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
91657    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
91658    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
91659    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
91660    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
91661    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
91662    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
91663 
91664    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
91665    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
91666 
91667    ---------------------------------------------------------------------------------------------------------------
91668    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
91669    ---------------------------------------------------------------------------------------------------------------
91670    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
91671 
91672    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
91673    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
91674 
91675    IF xla_accounting_cache_pkg.GetValueChar
91676          (p_source_code         => 'LEDGER_CATEGORY_CODE'
91677          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
91678    AND l_bflow_method_code = 'PRIOR_ENTRY'
91679 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
91680    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
91681          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
91682        )
91683    THEN
91684          xla_ae_lines_pkg.BflowUpgEntry
91685            (p_business_method_code    => l_bflow_method_code
91686            ,p_business_class_code     => l_bflow_class_code
91687            ,p_balance_type            => l_balance_type_code);
91688    ELSE
91689       NULL;
91690 -- No business flow processing for business flow method of NONE.
91691    END IF;
91692 
91693    --
91694    -- call analytical criteria
91695    --
91696    
91697    --
91698    -- call description
91699    --
91700    -- No description or it is inherited.
91701    --
91702    -- call ADRs
91703    -- Bug 4922099
91704    --
91705    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
91706         (NVL(l_actual_upg_option, 'N') = 'O') OR
91707         (NVL(l_enc_upg_option, 'N') = 'O')
91708       )
91709    THEN
91710    NULL;
91711    --
91712    --
91713    
91714   l_ccid := AcctDerRule_4(
91715            p_application_id           => p_application_id
91716          , p_ae_header_id             => l_ae_header_id 
91717 , p_source_4 => p_source_4
91718          , x_transaction_coa_id       => l_adr_transaction_coa_id
91719          , x_accounting_coa_id        => l_adr_accounting_coa_id
91720          , x_value_type_code          => l_adr_value_type_code
91721          , p_side                     => 'NA'
91722    );
91723 
91724    xla_ae_lines_pkg.set_ccid(
91725     p_code_combination_id          => l_ccid
91726   , p_value_type_code              => l_adr_value_type_code
91727   , p_transaction_coa_id           => l_adr_transaction_coa_id
91728   , p_accounting_coa_id            => l_adr_accounting_coa_id
91729   , p_adr_code                     => 'CST_DEFAULT'
91730   , p_adr_type_code                => 'S'
91731   , p_component_type               => l_component_type
91732   , p_component_code               => l_component_code
91733   , p_component_type_code          => l_component_type_code
91734   , p_component_appl_id            => l_component_appl_id
91735   , p_amb_context_code             => l_amb_context_code
91736   , p_side                         => 'NA'
91737   );
91738 
91739 
91740    --
91741    --
91742    END IF;
91743    --
91744    -- Bug 4922099
91745    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
91746           (NVL(l_enc_upg_option, 'N') = 'O')
91747         ) AND
91748         (l_bflow_method_code = 'PRIOR_ENTRY')
91749       )
91750    THEN
91751       IF
91752       --
91753       1 = 2
91754       --
91755       THEN
91756       xla_accounting_err_pkg.build_message
91757                                     (p_appli_s_name            => 'XLA'
91758                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
91759                                     ,p_token_1                 => 'LINE_NUMBER'
91760                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
91761                                     ,p_token_2                 => 'LINE_TYPE_NAME'
91762                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
91763                                                                              l_component_type
91764                                                                             ,l_component_code
91765                                                                             ,l_component_type_code
91766                                                                             ,l_component_appl_id
91767                                                                             ,l_amb_context_code
91768                                                                             ,l_entity_code
91769                                                                             ,l_event_class_code
91770                                                                            )
91771                                     ,p_token_3                 => 'OWNER'
91772                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
91773                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
91774                                                                           ,p_lookup_code    => l_component_type_code
91775                                                                          )
91776                                     ,p_token_4                 => 'PRODUCT_NAME'
91777                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
91778                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
91779                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
91780                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
91781                                     ,p_ae_header_id            =>  NULL
91782                                        );
91783 
91784         IF (C_LEVEL_ERROR>= g_log_level) THEN
91785                  trace
91786                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
91787                       ,p_level    => C_LEVEL_ERROR
91788                       ,p_module   => l_log_module);
91789         END IF;
91790       END IF;
91791    END IF;
91792    --
91793    --
91794    ------------------------------------------------------------------------------------------------
91795    -- 4219869 Business Flow
91796    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
91797    -- Prior Entry.  Currently, the following code is always generated.
91798    ------------------------------------------------------------------------------------------------
91799    XLA_AE_LINES_PKG.ValidateCurrentLine;
91800 
91801    ------------------------------------------------------------------------------------
91802    -- 4219869 Business Flow
91803    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
91804    ------------------------------------------------------------------------------------
91805    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
91806 
91807    ----------------------------------------------------------------------------------
91808    -- 4219869 Business Flow
91809    -- Update journal entry status -- Need to generate this within IF <condition>
91810    ----------------------------------------------------------------------------------
91811    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
91812          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
91813          ,p_balance_type_code => l_balance_type_code
91814          );
91815 
91816    -------------------------------------------------------------------------------------------
91817    -- 4262811 - Generate the Accrual Reversal lines
91818    -------------------------------------------------------------------------------------------
91819    BEGIN
91820       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
91821                               (g_array_event(p_event_id).array_value_num('header_index'));
91822       IF l_acc_rev_flag IS NULL THEN
91823          l_acc_rev_flag := 'N';
91824       END IF;
91825    EXCEPTION
91826       WHEN OTHERS THEN
91827          l_acc_rev_flag := 'N';
91828    END;
91829    --
91830    IF (l_acc_rev_flag = 'Y') THEN
91831 
91832        -- 4645092  ------------------------------------------------------------------------------
91833        -- To allow MPA report to determine if it should generate report process
91834        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
91835        ------------------------------------------------------------------------------------------
91836 
91837        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
91838        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
91839    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
91840    -- call ADRs
91841    -- Bug 4922099
91842    --
91843    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
91844         (NVL(l_actual_upg_option, 'N') = 'O') OR
91845         (NVL(l_enc_upg_option, 'N') = 'O')
91846       )
91847    THEN
91848    NULL;
91849    --
91850    --
91851    
91852   l_ccid := AcctDerRule_4(
91853            p_application_id           => p_application_id
91854          , p_ae_header_id             => l_ae_header_id 
91855 , p_source_4 => p_source_4
91856          , x_transaction_coa_id       => l_adr_transaction_coa_id
91857          , x_accounting_coa_id        => l_adr_accounting_coa_id
91858          , x_value_type_code          => l_adr_value_type_code
91859          , p_side                     => 'NA'
91860    );
91861 
91862    xla_ae_lines_pkg.set_ccid(
91863     p_code_combination_id          => l_ccid
91864   , p_value_type_code              => l_adr_value_type_code
91865   , p_transaction_coa_id           => l_adr_transaction_coa_id
91866   , p_accounting_coa_id            => l_adr_accounting_coa_id
91867   , p_adr_code                     => 'CST_DEFAULT'
91868   , p_adr_type_code                => 'S'
91869   , p_component_type               => l_component_type
91870   , p_component_code               => l_component_code
91871   , p_component_type_code          => l_component_type_code
91872   , p_component_appl_id            => l_component_appl_id
91873   , p_amb_context_code             => l_amb_context_code
91874   , p_side                         => 'NA'
91875   );
91876 
91877 
91878    --
91879    --
91880    END IF;
91881 
91882        --
91883        -- Update the line information that should be overwritten
91884        --
91885        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
91886                                          p_header_num   => 1);
91887        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
91888 
91889        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
91890 
91891        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
91892           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
91893        END IF;
91894 
91895       --
91896       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
91897       --
91898       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
91899           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
91900       ELSE
91901           ---------------------------------------------------------------------------------------------------
91902           -- 4262811a Switch Sign
91903           ---------------------------------------------------------------------------------------------------
91904           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
91905           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
91906                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91907           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
91908                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91909           -- 5132302
91910           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
91911                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91912 
91913       END IF;
91914 
91915       -- 4955764
91916       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
91917       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
91918 
91919 
91920       XLA_AE_LINES_PKG.ValidateCurrentLine;
91921       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
91922 
91923       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
91924                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
91925                ,p_balance_type_code => l_balance_type_code);
91926 
91927    END IF;
91928 
91929    -----------------------------------------------------------------------------------------
91930    -- 4262811 Multiperiod Accounting
91931    -----------------------------------------------------------------------------------------
91932      -- No MPA option is assigned.
91933 
91934 
91935 END IF;
91936 END IF;
91937 --
91938 
91939 --
91940 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
91941    trace
91942       (p_msg      => 'END of AcctLineType_167'
91943       ,p_level    => C_LEVEL_PROCEDURE
91944       ,p_module   => l_log_module);
91945 END IF;
91946 --
91947 EXCEPTION
91948   WHEN xla_exceptions_pkg.application_exception THEN
91949       RAISE;
91950   WHEN OTHERS THEN
91951        xla_exceptions_pkg.raise_message
91952            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_167');
91953 END AcctLineType_167;
91954 --
91955 
91956 ---------------------------------------
91957 --
91958 -- PRIVATE FUNCTION
91959 --         AcctLineType_168
91960 --
91961 ---------------------------------------
91962 PROCEDURE AcctLineType_168 (
91963   p_application_id        IN NUMBER
91964  ,p_event_id              IN NUMBER
91965  ,p_calculate_acctd_flag  IN VARCHAR2
91966  ,p_calculate_g_l_flag    IN VARCHAR2
91967  ,p_actual_flag           IN OUT VARCHAR2
91968  ,p_balance_type_code     OUT VARCHAR2
91969  ,p_gain_or_loss_ref      OUT VARCHAR2
91970  
91971 --Cost Management Default Account
91972  , p_source_4            IN NUMBER
91973 --DISTRIBUTION_IDENTIFIER
91974  , p_source_11            IN NUMBER
91975 --Distribution Type
91976  , p_source_12            IN VARCHAR2
91977  , p_source_12_meaning    IN VARCHAR2
91978 --Entered Currency Code
91979  , p_source_15            IN VARCHAR2
91980 --Entered Amount
91981  , p_source_18            IN NUMBER
91982 --Currency Conversion Date
91983  , p_source_19            IN DATE
91984 --Currency Conversion Rate
91985  , p_source_20            IN NUMBER
91986 --Currency Conversion Type
91987  , p_source_21            IN VARCHAR2
91988 --Accounted Amount
91989  , p_source_22            IN NUMBER
91990 --Accounting Line Type
91991  , p_source_24            IN NUMBER
91992 )
91993 IS
91994 
91995 l_component_type              VARCHAR2(80);
91996 l_component_code              VARCHAR2(30);
91997 l_component_type_code         VARCHAR2(1);
91998 l_component_appl_id           INTEGER;
91999 l_amb_context_code            VARCHAR2(30);
92000 l_entity_code                 VARCHAR2(30);
92001 l_event_class_code            VARCHAR2(30);
92002 l_ae_header_id                NUMBER;
92003 l_event_type_code             VARCHAR2(30);
92004 l_line_definition_code        VARCHAR2(30);
92005 l_line_definition_owner_code  VARCHAR2(1);
92006 --
92007 -- adr variables
92008 l_segment                     VARCHAR2(30);
92009 l_ccid                        NUMBER;
92010 l_adr_transaction_coa_id      NUMBER;
92011 l_adr_accounting_coa_id       NUMBER;
92012 l_adr_flexfield_segment_code  VARCHAR2(30);
92013 l_adr_flex_value_set_id       NUMBER;
92014 l_adr_value_type_code         VARCHAR2(30);
92015 l_adr_value_combination_id    NUMBER;
92016 l_adr_value_segment_code      VARCHAR2(30);
92017 
92018 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
92019 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
92020 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
92021 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
92022 
92023 -- 4262811 Variables ------------------------------------------------------------------------------------------
92024 l_entered_amt_idx             NUMBER;
92025 l_accted_amt_idx              NUMBER;
92026 l_acc_rev_flag                VARCHAR2(1);
92027 l_accrual_line_num            NUMBER;
92028 l_tmp_amt                     NUMBER;
92029 l_acc_rev_natural_side_code   VARCHAR2(1);
92030 
92031 l_num_entries                 NUMBER;
92032 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
92033 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
92034 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
92035 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
92036 l_recog_line_1                NUMBER;
92037 l_recog_line_2                NUMBER;
92038 
92039 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
92040 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
92041 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
92042 
92043 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
92044 
92045 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
92046 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
92047 
92048 ---------------------------------------------------------------------------------------------------------------
92049 
92050 
92051 --
92052 -- bulk performance
92053 --
92054 l_balance_type_code           VARCHAR2(1);
92055 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
92056 l_log_module                  VARCHAR2(240);
92057 
92058 --
92059 -- Upgrade strategy
92060 --
92061 l_actual_upg_option           VARCHAR2(1);
92062 l_enc_upg_option           VARCHAR2(1);
92063 
92064 --
92065 BEGIN
92066 --
92067 IF g_log_enabled THEN
92068       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_168';
92069 END IF;
92070 --
92071 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
92072 
92073       trace
92074          (p_msg      => 'BEGIN of AcctLineType_168'
92075          ,p_level    => C_LEVEL_PROCEDURE
92076          ,p_module   => l_log_module);
92077 
92078 END IF;
92079 --
92080 l_component_type             := 'AMB_JLT';
92081 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
92082 l_component_type_code        := 'S';
92083 l_component_appl_id          :=  707;
92084 l_amb_context_code           := 'DEFAULT';
92085 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
92086 l_event_class_code           := 'USER_DEFINE';
92087 l_event_type_code            := 'UDIR_INTERORG_RCPT';
92088 l_line_definition_owner_code := 'S';
92089 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT';
92090 --
92091 l_balance_type_code          := 'A';
92092 l_segment                     := NULL;
92093 l_ccid                        := NULL;
92094 l_adr_transaction_coa_id      := NULL;
92095 l_adr_accounting_coa_id       := NULL;
92096 l_adr_flexfield_segment_code  := NULL;
92097 l_adr_flex_value_set_id       := NULL;
92098 l_adr_value_type_code         := NULL;
92099 l_adr_value_combination_id    := NULL;
92100 l_adr_value_segment_code      := NULL;
92101 
92102 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
92103 l_bflow_class_code           := '';    -- 4219869 Business Flow
92104 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
92105 l_budgetary_control_flag     := 'N';
92106 
92107 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
92108 l_bflow_applied_to_amt       := NULL; -- 5132302
92109 l_entered_amt_idx            := NULL;          -- 4262811
92110 l_accted_amt_idx             := NULL;          -- 4262811
92111 l_acc_rev_flag               := NULL;          -- 4262811
92112 l_accrual_line_num           := NULL;          -- 4262811
92113 l_tmp_amt                    := NULL;          -- 4262811
92114 --
92115  
92116 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
92117     l_balance_type_code <> 'B' THEN
92118 IF NVL(p_source_24,9E125) =  3
92119  THEN 
92120 
92121    --
92122    XLA_AE_LINES_PKG.SetNewLine;
92123 
92124    p_balance_type_code          := l_balance_type_code;
92125    -- set the flag so later we will know whether the gain loss line needs to be created
92126    
92127    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
92128      p_actual_flag :='A';
92129    END IF;
92130 
92131    --
92132    -- bulk performance
92133    --
92134    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
92135                                       p_header_num   => 0); -- 4262811
92136    --
92137    -- set accounting line options
92138    --
92139    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
92140            p_natural_side_code          => 'D'
92141          , p_gain_or_loss_flag          => 'N'
92142          , p_gl_transfer_mode_code      => 'S'
92143          , p_acct_entry_type_code       => 'A'
92144          , p_switch_side_flag           => 'Y'
92145          , p_merge_duplicate_code       => 'N'
92146          );
92147    --
92148    l_acc_rev_natural_side_code := 'C';  -- 4262811
92149    -- 
92150    --
92151    -- set accounting line type info
92152    --
92153    xla_ae_lines_pkg.SetAcctLineType
92154       (p_component_type             => l_component_type
92155       ,p_event_type_code            => l_event_type_code
92156       ,p_line_definition_owner_code => l_line_definition_owner_code
92157       ,p_line_definition_code       => l_line_definition_code
92158       ,p_accounting_line_code       => l_component_code
92159       ,p_accounting_line_type_code  => l_component_type_code
92160       ,p_accounting_line_appl_id    => l_component_appl_id
92161       ,p_amb_context_code           => l_amb_context_code
92162       ,p_entity_code                => l_entity_code
92163       ,p_event_class_code           => l_event_class_code);
92164    --
92165    -- set accounting class
92166    --
92167    xla_ae_lines_pkg.SetAcctClass(
92168            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
92169          , p_ae_header_id           => l_ae_header_id
92170          );
92171 
92172    --
92173    -- set rounding class
92174    --
92175    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
92176                       'MATERIAL_OVERHEAD_ABSORPTION';
92177 
92178    --
92179    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
92180    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
92181    --
92182    -- bulk performance
92183    --
92184    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
92185 
92186    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
92187       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
92188 
92189    -- 4955764
92190    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
92191       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
92192 
92193    -- 4458381 Public Sector Enh
92194    
92195    --
92196    -- set accounting attributes for the line type
92197    --
92198    l_entered_amt_idx := 3;
92199    l_accted_amt_idx  := 8;
92200    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
92201    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
92202    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
92203    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
92204    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
92205    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
92206    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
92207    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
92208    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
92209    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
92210    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
92211    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
92212    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
92213    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
92214    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
92215    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
92216    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
92217 
92218    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
92219    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
92220 
92221    ---------------------------------------------------------------------------------------------------------------
92222    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
92223    ---------------------------------------------------------------------------------------------------------------
92224    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
92225 
92226    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
92227    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
92228 
92229    IF xla_accounting_cache_pkg.GetValueChar
92230          (p_source_code         => 'LEDGER_CATEGORY_CODE'
92231          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
92232    AND l_bflow_method_code = 'PRIOR_ENTRY'
92233 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
92234    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
92235          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
92236        )
92237    THEN
92238          xla_ae_lines_pkg.BflowUpgEntry
92239            (p_business_method_code    => l_bflow_method_code
92240            ,p_business_class_code     => l_bflow_class_code
92241            ,p_balance_type            => l_balance_type_code);
92242    ELSE
92243       NULL;
92244 -- No business flow processing for business flow method of NONE.
92245    END IF;
92246 
92247    --
92248    -- call analytical criteria
92249    --
92250    
92251    --
92252    -- call description
92253    --
92254    -- No description or it is inherited.
92255    --
92256    -- call ADRs
92257    -- Bug 4922099
92258    --
92259    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
92260         (NVL(l_actual_upg_option, 'N') = 'O') OR
92261         (NVL(l_enc_upg_option, 'N') = 'O')
92262       )
92263    THEN
92264    NULL;
92265    --
92266    --
92267    
92268   l_ccid := AcctDerRule_4(
92269            p_application_id           => p_application_id
92270          , p_ae_header_id             => l_ae_header_id 
92271 , p_source_4 => p_source_4
92272          , x_transaction_coa_id       => l_adr_transaction_coa_id
92273          , x_accounting_coa_id        => l_adr_accounting_coa_id
92274          , x_value_type_code          => l_adr_value_type_code
92275          , p_side                     => 'NA'
92276    );
92277 
92278    xla_ae_lines_pkg.set_ccid(
92279     p_code_combination_id          => l_ccid
92280   , p_value_type_code              => l_adr_value_type_code
92281   , p_transaction_coa_id           => l_adr_transaction_coa_id
92282   , p_accounting_coa_id            => l_adr_accounting_coa_id
92283   , p_adr_code                     => 'CST_DEFAULT'
92284   , p_adr_type_code                => 'S'
92285   , p_component_type               => l_component_type
92286   , p_component_code               => l_component_code
92287   , p_component_type_code          => l_component_type_code
92288   , p_component_appl_id            => l_component_appl_id
92289   , p_amb_context_code             => l_amb_context_code
92290   , p_side                         => 'NA'
92291   );
92292 
92293 
92294    --
92295    --
92296    END IF;
92297    --
92298    -- Bug 4922099
92299    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
92300           (NVL(l_enc_upg_option, 'N') = 'O')
92301         ) AND
92302         (l_bflow_method_code = 'PRIOR_ENTRY')
92303       )
92304    THEN
92305       IF
92306       --
92307       1 = 2
92308       --
92309       THEN
92310       xla_accounting_err_pkg.build_message
92311                                     (p_appli_s_name            => 'XLA'
92312                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
92313                                     ,p_token_1                 => 'LINE_NUMBER'
92314                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
92315                                     ,p_token_2                 => 'LINE_TYPE_NAME'
92316                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
92317                                                                              l_component_type
92318                                                                             ,l_component_code
92319                                                                             ,l_component_type_code
92320                                                                             ,l_component_appl_id
92321                                                                             ,l_amb_context_code
92322                                                                             ,l_entity_code
92323                                                                             ,l_event_class_code
92324                                                                            )
92325                                     ,p_token_3                 => 'OWNER'
92326                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
92327                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
92328                                                                           ,p_lookup_code    => l_component_type_code
92329                                                                          )
92330                                     ,p_token_4                 => 'PRODUCT_NAME'
92331                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
92332                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
92333                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
92334                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
92335                                     ,p_ae_header_id            =>  NULL
92336                                        );
92337 
92338         IF (C_LEVEL_ERROR>= g_log_level) THEN
92339                  trace
92340                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
92341                       ,p_level    => C_LEVEL_ERROR
92342                       ,p_module   => l_log_module);
92343         END IF;
92344       END IF;
92345    END IF;
92346    --
92347    --
92348    ------------------------------------------------------------------------------------------------
92349    -- 4219869 Business Flow
92350    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
92351    -- Prior Entry.  Currently, the following code is always generated.
92352    ------------------------------------------------------------------------------------------------
92353    XLA_AE_LINES_PKG.ValidateCurrentLine;
92354 
92355    ------------------------------------------------------------------------------------
92356    -- 4219869 Business Flow
92357    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
92358    ------------------------------------------------------------------------------------
92359    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
92360 
92361    ----------------------------------------------------------------------------------
92362    -- 4219869 Business Flow
92363    -- Update journal entry status -- Need to generate this within IF <condition>
92364    ----------------------------------------------------------------------------------
92365    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
92366          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
92367          ,p_balance_type_code => l_balance_type_code
92368          );
92369 
92370    -------------------------------------------------------------------------------------------
92371    -- 4262811 - Generate the Accrual Reversal lines
92372    -------------------------------------------------------------------------------------------
92373    BEGIN
92374       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
92375                               (g_array_event(p_event_id).array_value_num('header_index'));
92376       IF l_acc_rev_flag IS NULL THEN
92377          l_acc_rev_flag := 'N';
92378       END IF;
92379    EXCEPTION
92380       WHEN OTHERS THEN
92381          l_acc_rev_flag := 'N';
92382    END;
92383    --
92384    IF (l_acc_rev_flag = 'Y') THEN
92385 
92386        -- 4645092  ------------------------------------------------------------------------------
92387        -- To allow MPA report to determine if it should generate report process
92388        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
92389        ------------------------------------------------------------------------------------------
92390 
92391        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
92392        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
92393    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
92394    -- call ADRs
92395    -- Bug 4922099
92396    --
92397    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
92398         (NVL(l_actual_upg_option, 'N') = 'O') OR
92399         (NVL(l_enc_upg_option, 'N') = 'O')
92400       )
92401    THEN
92402    NULL;
92403    --
92404    --
92405    
92406   l_ccid := AcctDerRule_4(
92407            p_application_id           => p_application_id
92408          , p_ae_header_id             => l_ae_header_id 
92409 , p_source_4 => p_source_4
92410          , x_transaction_coa_id       => l_adr_transaction_coa_id
92411          , x_accounting_coa_id        => l_adr_accounting_coa_id
92412          , x_value_type_code          => l_adr_value_type_code
92413          , p_side                     => 'NA'
92414    );
92415 
92416    xla_ae_lines_pkg.set_ccid(
92417     p_code_combination_id          => l_ccid
92418   , p_value_type_code              => l_adr_value_type_code
92419   , p_transaction_coa_id           => l_adr_transaction_coa_id
92420   , p_accounting_coa_id            => l_adr_accounting_coa_id
92421   , p_adr_code                     => 'CST_DEFAULT'
92422   , p_adr_type_code                => 'S'
92423   , p_component_type               => l_component_type
92424   , p_component_code               => l_component_code
92425   , p_component_type_code          => l_component_type_code
92426   , p_component_appl_id            => l_component_appl_id
92427   , p_amb_context_code             => l_amb_context_code
92428   , p_side                         => 'NA'
92429   );
92430 
92431 
92432    --
92433    --
92434    END IF;
92435 
92436        --
92437        -- Update the line information that should be overwritten
92438        --
92439        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
92440                                          p_header_num   => 1);
92441        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
92442 
92443        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
92444 
92445        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
92446           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
92447        END IF;
92448 
92449       --
92450       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
92451       --
92452       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
92453           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
92454       ELSE
92455           ---------------------------------------------------------------------------------------------------
92456           -- 4262811a Switch Sign
92457           ---------------------------------------------------------------------------------------------------
92458           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
92459           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
92460                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
92461           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
92462                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
92463           -- 5132302
92464           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
92465                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
92466 
92467       END IF;
92468 
92469       -- 4955764
92470       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
92471       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
92472 
92473 
92474       XLA_AE_LINES_PKG.ValidateCurrentLine;
92475       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
92476 
92477       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
92478                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
92479                ,p_balance_type_code => l_balance_type_code);
92480 
92481    END IF;
92482 
92483    -----------------------------------------------------------------------------------------
92484    -- 4262811 Multiperiod Accounting
92485    -----------------------------------------------------------------------------------------
92486      -- No MPA option is assigned.
92487 
92488 
92489 END IF;
92490 END IF;
92491 --
92492 
92493 --
92494 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
92495    trace
92496       (p_msg      => 'END of AcctLineType_168'
92497       ,p_level    => C_LEVEL_PROCEDURE
92498       ,p_module   => l_log_module);
92499 END IF;
92500 --
92501 EXCEPTION
92502   WHEN xla_exceptions_pkg.application_exception THEN
92503       RAISE;
92504   WHEN OTHERS THEN
92505        xla_exceptions_pkg.raise_message
92506            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_168');
92507 END AcctLineType_168;
92508 --
92509 
92510 ---------------------------------------
92511 --
92512 -- PRIVATE FUNCTION
92513 --         AcctLineType_169
92514 --
92515 ---------------------------------------
92516 PROCEDURE AcctLineType_169 (
92517   p_application_id        IN NUMBER
92518  ,p_event_id              IN NUMBER
92519  ,p_calculate_acctd_flag  IN VARCHAR2
92520  ,p_calculate_g_l_flag    IN VARCHAR2
92521  ,p_actual_flag           IN OUT VARCHAR2
92522  ,p_balance_type_code     OUT VARCHAR2
92523  ,p_gain_or_loss_ref      OUT VARCHAR2
92524  
92525 --Cost Management Default Account
92526  , p_source_4            IN NUMBER
92527 --DISTRIBUTION_IDENTIFIER
92528  , p_source_11            IN NUMBER
92529 --Distribution Type
92530  , p_source_12            IN VARCHAR2
92531  , p_source_12_meaning    IN VARCHAR2
92532 --Entered Currency Code
92533  , p_source_15            IN VARCHAR2
92534 --Entered Amount
92535  , p_source_18            IN NUMBER
92536 --Currency Conversion Date
92537  , p_source_19            IN DATE
92538 --Currency Conversion Rate
92539  , p_source_20            IN NUMBER
92540 --Currency Conversion Type
92541  , p_source_21            IN VARCHAR2
92542 --Accounted Amount
92543  , p_source_22            IN NUMBER
92544 --Accounting Line Type
92545  , p_source_24            IN NUMBER
92546 )
92547 IS
92548 
92549 l_component_type              VARCHAR2(80);
92550 l_component_code              VARCHAR2(30);
92551 l_component_type_code         VARCHAR2(1);
92552 l_component_appl_id           INTEGER;
92553 l_amb_context_code            VARCHAR2(30);
92554 l_entity_code                 VARCHAR2(30);
92555 l_event_class_code            VARCHAR2(30);
92556 l_ae_header_id                NUMBER;
92557 l_event_type_code             VARCHAR2(30);
92558 l_line_definition_code        VARCHAR2(30);
92559 l_line_definition_owner_code  VARCHAR2(1);
92560 --
92561 -- adr variables
92562 l_segment                     VARCHAR2(30);
92563 l_ccid                        NUMBER;
92564 l_adr_transaction_coa_id      NUMBER;
92565 l_adr_accounting_coa_id       NUMBER;
92566 l_adr_flexfield_segment_code  VARCHAR2(30);
92567 l_adr_flex_value_set_id       NUMBER;
92568 l_adr_value_type_code         VARCHAR2(30);
92569 l_adr_value_combination_id    NUMBER;
92570 l_adr_value_segment_code      VARCHAR2(30);
92571 
92572 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
92573 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
92574 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
92575 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
92576 
92577 -- 4262811 Variables ------------------------------------------------------------------------------------------
92578 l_entered_amt_idx             NUMBER;
92579 l_accted_amt_idx              NUMBER;
92580 l_acc_rev_flag                VARCHAR2(1);
92581 l_accrual_line_num            NUMBER;
92582 l_tmp_amt                     NUMBER;
92583 l_acc_rev_natural_side_code   VARCHAR2(1);
92584 
92585 l_num_entries                 NUMBER;
92586 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
92587 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
92588 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
92589 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
92590 l_recog_line_1                NUMBER;
92591 l_recog_line_2                NUMBER;
92592 
92593 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
92594 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
92595 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
92596 
92597 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
92598 
92599 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
92600 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
92601 
92602 ---------------------------------------------------------------------------------------------------------------
92603 
92604 
92605 --
92606 -- bulk performance
92607 --
92608 l_balance_type_code           VARCHAR2(1);
92609 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
92610 l_log_module                  VARCHAR2(240);
92611 
92612 --
92613 -- Upgrade strategy
92614 --
92615 l_actual_upg_option           VARCHAR2(1);
92616 l_enc_upg_option           VARCHAR2(1);
92617 
92618 --
92619 BEGIN
92620 --
92621 IF g_log_enabled THEN
92622       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_169';
92623 END IF;
92624 --
92625 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
92626 
92627       trace
92628          (p_msg      => 'BEGIN of AcctLineType_169'
92629          ,p_level    => C_LEVEL_PROCEDURE
92630          ,p_module   => l_log_module);
92631 
92632 END IF;
92633 --
92634 l_component_type             := 'AMB_JLT';
92635 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
92636 l_component_type_code        := 'S';
92637 l_component_appl_id          :=  707;
92638 l_amb_context_code           := 'DEFAULT';
92639 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
92640 l_event_class_code           := 'WIP_MTL';
92641 l_event_type_code            := 'WIP_MTL_ALL';
92642 l_line_definition_owner_code := 'S';
92643 l_line_definition_code       := 'WIP_MTL';
92644 --
92645 l_balance_type_code          := 'A';
92646 l_segment                     := NULL;
92647 l_ccid                        := NULL;
92648 l_adr_transaction_coa_id      := NULL;
92649 l_adr_accounting_coa_id       := NULL;
92650 l_adr_flexfield_segment_code  := NULL;
92651 l_adr_flex_value_set_id       := NULL;
92652 l_adr_value_type_code         := NULL;
92653 l_adr_value_combination_id    := NULL;
92654 l_adr_value_segment_code      := NULL;
92655 
92656 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
92657 l_bflow_class_code           := '';    -- 4219869 Business Flow
92658 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
92659 l_budgetary_control_flag     := 'N';
92660 
92661 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
92662 l_bflow_applied_to_amt       := NULL; -- 5132302
92663 l_entered_amt_idx            := NULL;          -- 4262811
92664 l_accted_amt_idx             := NULL;          -- 4262811
92665 l_acc_rev_flag               := NULL;          -- 4262811
92666 l_accrual_line_num           := NULL;          -- 4262811
92667 l_tmp_amt                    := NULL;          -- 4262811
92668 --
92669  
92670 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
92671     l_balance_type_code <> 'B' THEN
92672 IF NVL(p_source_24,9E125) =  3
92673  THEN 
92674 
92675    --
92676    XLA_AE_LINES_PKG.SetNewLine;
92677 
92678    p_balance_type_code          := l_balance_type_code;
92679    -- set the flag so later we will know whether the gain loss line needs to be created
92680    
92681    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
92682      p_actual_flag :='A';
92683    END IF;
92684 
92685    --
92686    -- bulk performance
92687    --
92688    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
92689                                       p_header_num   => 0); -- 4262811
92690    --
92691    -- set accounting line options
92692    --
92693    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
92694            p_natural_side_code          => 'D'
92695          , p_gain_or_loss_flag          => 'N'
92696          , p_gl_transfer_mode_code      => 'S'
92697          , p_acct_entry_type_code       => 'A'
92698          , p_switch_side_flag           => 'Y'
92699          , p_merge_duplicate_code       => 'N'
92700          );
92701    --
92702    l_acc_rev_natural_side_code := 'C';  -- 4262811
92703    -- 
92704    --
92705    -- set accounting line type info
92706    --
92707    xla_ae_lines_pkg.SetAcctLineType
92708       (p_component_type             => l_component_type
92709       ,p_event_type_code            => l_event_type_code
92710       ,p_line_definition_owner_code => l_line_definition_owner_code
92711       ,p_line_definition_code       => l_line_definition_code
92712       ,p_accounting_line_code       => l_component_code
92713       ,p_accounting_line_type_code  => l_component_type_code
92714       ,p_accounting_line_appl_id    => l_component_appl_id
92715       ,p_amb_context_code           => l_amb_context_code
92716       ,p_entity_code                => l_entity_code
92717       ,p_event_class_code           => l_event_class_code);
92718    --
92719    -- set accounting class
92720    --
92721    xla_ae_lines_pkg.SetAcctClass(
92722            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
92723          , p_ae_header_id           => l_ae_header_id
92724          );
92725 
92726    --
92727    -- set rounding class
92728    --
92729    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
92730                       'MATERIAL_OVERHEAD_ABSORPTION';
92731 
92732    --
92733    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
92734    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
92735    --
92736    -- bulk performance
92737    --
92738    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
92739 
92740    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
92741       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
92742 
92743    -- 4955764
92744    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
92745       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
92746 
92747    -- 4458381 Public Sector Enh
92748    
92749    --
92750    -- set accounting attributes for the line type
92751    --
92752    l_entered_amt_idx := 3;
92753    l_accted_amt_idx  := 8;
92754    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
92755    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
92756    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
92757    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
92758    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
92759    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
92760    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
92761    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
92762    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
92763    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
92764    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
92765    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
92766    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
92767    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
92768    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
92769    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
92770    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
92771 
92772    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
92773    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
92774 
92775    ---------------------------------------------------------------------------------------------------------------
92776    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
92777    ---------------------------------------------------------------------------------------------------------------
92778    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
92779 
92780    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
92781    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
92782 
92783    IF xla_accounting_cache_pkg.GetValueChar
92784          (p_source_code         => 'LEDGER_CATEGORY_CODE'
92785          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
92786    AND l_bflow_method_code = 'PRIOR_ENTRY'
92787 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
92788    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
92789          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
92790        )
92791    THEN
92792          xla_ae_lines_pkg.BflowUpgEntry
92793            (p_business_method_code    => l_bflow_method_code
92794            ,p_business_class_code     => l_bflow_class_code
92795            ,p_balance_type            => l_balance_type_code);
92796    ELSE
92797       NULL;
92798 -- No business flow processing for business flow method of NONE.
92799    END IF;
92800 
92801    --
92802    -- call analytical criteria
92803    --
92804    
92805    --
92806    -- call description
92807    --
92808    -- No description or it is inherited.
92809    --
92810    -- call ADRs
92811    -- Bug 4922099
92812    --
92813    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
92814         (NVL(l_actual_upg_option, 'N') = 'O') OR
92815         (NVL(l_enc_upg_option, 'N') = 'O')
92816       )
92817    THEN
92818    NULL;
92819    --
92820    --
92821    
92822   l_ccid := AcctDerRule_4(
92823            p_application_id           => p_application_id
92824          , p_ae_header_id             => l_ae_header_id 
92825 , p_source_4 => p_source_4
92826          , x_transaction_coa_id       => l_adr_transaction_coa_id
92827          , x_accounting_coa_id        => l_adr_accounting_coa_id
92828          , x_value_type_code          => l_adr_value_type_code
92829          , p_side                     => 'NA'
92830    );
92831 
92832    xla_ae_lines_pkg.set_ccid(
92833     p_code_combination_id          => l_ccid
92834   , p_value_type_code              => l_adr_value_type_code
92835   , p_transaction_coa_id           => l_adr_transaction_coa_id
92836   , p_accounting_coa_id            => l_adr_accounting_coa_id
92837   , p_adr_code                     => 'CST_DEFAULT'
92838   , p_adr_type_code                => 'S'
92839   , p_component_type               => l_component_type
92840   , p_component_code               => l_component_code
92841   , p_component_type_code          => l_component_type_code
92842   , p_component_appl_id            => l_component_appl_id
92843   , p_amb_context_code             => l_amb_context_code
92844   , p_side                         => 'NA'
92845   );
92846 
92847 
92848    --
92849    --
92850    END IF;
92851    --
92852    -- Bug 4922099
92853    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
92854           (NVL(l_enc_upg_option, 'N') = 'O')
92855         ) AND
92856         (l_bflow_method_code = 'PRIOR_ENTRY')
92857       )
92858    THEN
92859       IF
92860       --
92861       1 = 2
92862       --
92863       THEN
92864       xla_accounting_err_pkg.build_message
92865                                     (p_appli_s_name            => 'XLA'
92866                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
92867                                     ,p_token_1                 => 'LINE_NUMBER'
92868                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
92869                                     ,p_token_2                 => 'LINE_TYPE_NAME'
92870                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
92871                                                                              l_component_type
92872                                                                             ,l_component_code
92873                                                                             ,l_component_type_code
92874                                                                             ,l_component_appl_id
92875                                                                             ,l_amb_context_code
92876                                                                             ,l_entity_code
92877                                                                             ,l_event_class_code
92878                                                                            )
92879                                     ,p_token_3                 => 'OWNER'
92880                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
92881                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
92882                                                                           ,p_lookup_code    => l_component_type_code
92883                                                                          )
92884                                     ,p_token_4                 => 'PRODUCT_NAME'
92885                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
92886                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
92887                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
92888                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
92889                                     ,p_ae_header_id            =>  NULL
92890                                        );
92891 
92892         IF (C_LEVEL_ERROR>= g_log_level) THEN
92893                  trace
92894                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
92895                       ,p_level    => C_LEVEL_ERROR
92896                       ,p_module   => l_log_module);
92897         END IF;
92898       END IF;
92899    END IF;
92900    --
92901    --
92902    ------------------------------------------------------------------------------------------------
92903    -- 4219869 Business Flow
92904    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
92905    -- Prior Entry.  Currently, the following code is always generated.
92906    ------------------------------------------------------------------------------------------------
92907    XLA_AE_LINES_PKG.ValidateCurrentLine;
92908 
92909    ------------------------------------------------------------------------------------
92910    -- 4219869 Business Flow
92911    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
92912    ------------------------------------------------------------------------------------
92913    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
92914 
92915    ----------------------------------------------------------------------------------
92916    -- 4219869 Business Flow
92917    -- Update journal entry status -- Need to generate this within IF <condition>
92918    ----------------------------------------------------------------------------------
92919    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
92920          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
92921          ,p_balance_type_code => l_balance_type_code
92922          );
92923 
92924    -------------------------------------------------------------------------------------------
92925    -- 4262811 - Generate the Accrual Reversal lines
92926    -------------------------------------------------------------------------------------------
92927    BEGIN
92928       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
92929                               (g_array_event(p_event_id).array_value_num('header_index'));
92930       IF l_acc_rev_flag IS NULL THEN
92931          l_acc_rev_flag := 'N';
92932       END IF;
92933    EXCEPTION
92934       WHEN OTHERS THEN
92935          l_acc_rev_flag := 'N';
92936    END;
92937    --
92938    IF (l_acc_rev_flag = 'Y') THEN
92939 
92940        -- 4645092  ------------------------------------------------------------------------------
92941        -- To allow MPA report to determine if it should generate report process
92942        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
92943        ------------------------------------------------------------------------------------------
92944 
92945        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
92946        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
92947    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
92948    -- call ADRs
92949    -- Bug 4922099
92950    --
92951    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
92952         (NVL(l_actual_upg_option, 'N') = 'O') OR
92953         (NVL(l_enc_upg_option, 'N') = 'O')
92954       )
92955    THEN
92956    NULL;
92957    --
92958    --
92959    
92960   l_ccid := AcctDerRule_4(
92961            p_application_id           => p_application_id
92962          , p_ae_header_id             => l_ae_header_id 
92963 , p_source_4 => p_source_4
92964          , x_transaction_coa_id       => l_adr_transaction_coa_id
92965          , x_accounting_coa_id        => l_adr_accounting_coa_id
92966          , x_value_type_code          => l_adr_value_type_code
92967          , p_side                     => 'NA'
92968    );
92969 
92970    xla_ae_lines_pkg.set_ccid(
92971     p_code_combination_id          => l_ccid
92972   , p_value_type_code              => l_adr_value_type_code
92973   , p_transaction_coa_id           => l_adr_transaction_coa_id
92974   , p_accounting_coa_id            => l_adr_accounting_coa_id
92975   , p_adr_code                     => 'CST_DEFAULT'
92976   , p_adr_type_code                => 'S'
92977   , p_component_type               => l_component_type
92978   , p_component_code               => l_component_code
92979   , p_component_type_code          => l_component_type_code
92980   , p_component_appl_id            => l_component_appl_id
92981   , p_amb_context_code             => l_amb_context_code
92982   , p_side                         => 'NA'
92983   );
92984 
92985 
92986    --
92987    --
92988    END IF;
92989 
92990        --
92991        -- Update the line information that should be overwritten
92992        --
92993        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
92994                                          p_header_num   => 1);
92995        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
92996 
92997        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
92998 
92999        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
93000           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
93001        END IF;
93002 
93003       --
93004       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
93005       --
93006       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
93007           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
93008       ELSE
93009           ---------------------------------------------------------------------------------------------------
93010           -- 4262811a Switch Sign
93011           ---------------------------------------------------------------------------------------------------
93012           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
93013           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
93014                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93015           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
93016                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93017           -- 5132302
93018           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
93019                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93020 
93021       END IF;
93022 
93023       -- 4955764
93024       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
93025       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
93026 
93027 
93028       XLA_AE_LINES_PKG.ValidateCurrentLine;
93029       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
93030 
93031       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
93032                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
93033                ,p_balance_type_code => l_balance_type_code);
93034 
93035    END IF;
93036 
93037    -----------------------------------------------------------------------------------------
93038    -- 4262811 Multiperiod Accounting
93039    -----------------------------------------------------------------------------------------
93040      -- No MPA option is assigned.
93041 
93042 
93043 END IF;
93044 END IF;
93045 --
93046 
93047 --
93048 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
93049    trace
93050       (p_msg      => 'END of AcctLineType_169'
93051       ,p_level    => C_LEVEL_PROCEDURE
93052       ,p_module   => l_log_module);
93053 END IF;
93054 --
93055 EXCEPTION
93056   WHEN xla_exceptions_pkg.application_exception THEN
93057       RAISE;
93058   WHEN OTHERS THEN
93059        xla_exceptions_pkg.raise_message
93060            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_169');
93061 END AcctLineType_169;
93062 --
93063 
93064 ---------------------------------------
93065 --
93066 -- PRIVATE FUNCTION
93067 --         AcctLineType_170
93068 --
93069 ---------------------------------------
93070 PROCEDURE AcctLineType_170 (
93071   p_application_id        IN NUMBER
93072  ,p_event_id              IN NUMBER
93073  ,p_calculate_acctd_flag  IN VARCHAR2
93074  ,p_calculate_g_l_flag    IN VARCHAR2
93075  ,p_actual_flag           IN OUT VARCHAR2
93076  ,p_balance_type_code     OUT VARCHAR2
93077  ,p_gain_or_loss_ref      OUT VARCHAR2
93078  
93079 --Cost Management Default Account
93080  , p_source_4            IN NUMBER
93081 --DISTRIBUTION_IDENTIFIER
93082  , p_source_11            IN NUMBER
93083 --Distribution Type
93084  , p_source_12            IN VARCHAR2
93085  , p_source_12_meaning    IN VARCHAR2
93086 --Entered Currency Code
93087  , p_source_15            IN VARCHAR2
93088 --Entered Amount
93089  , p_source_18            IN NUMBER
93090 --Currency Conversion Date
93091  , p_source_19            IN DATE
93092 --Currency Conversion Rate
93093  , p_source_20            IN NUMBER
93094 --Currency Conversion Type
93095  , p_source_21            IN VARCHAR2
93096 --Accounted Amount
93097  , p_source_22            IN NUMBER
93098 --Accounting Line Type
93099  , p_source_24            IN NUMBER
93100 )
93101 IS
93102 
93103 l_component_type              VARCHAR2(80);
93104 l_component_code              VARCHAR2(30);
93105 l_component_type_code         VARCHAR2(1);
93106 l_component_appl_id           INTEGER;
93107 l_amb_context_code            VARCHAR2(30);
93108 l_entity_code                 VARCHAR2(30);
93109 l_event_class_code            VARCHAR2(30);
93110 l_ae_header_id                NUMBER;
93111 l_event_type_code             VARCHAR2(30);
93112 l_line_definition_code        VARCHAR2(30);
93113 l_line_definition_owner_code  VARCHAR2(1);
93114 --
93115 -- adr variables
93116 l_segment                     VARCHAR2(30);
93117 l_ccid                        NUMBER;
93118 l_adr_transaction_coa_id      NUMBER;
93119 l_adr_accounting_coa_id       NUMBER;
93120 l_adr_flexfield_segment_code  VARCHAR2(30);
93121 l_adr_flex_value_set_id       NUMBER;
93122 l_adr_value_type_code         VARCHAR2(30);
93123 l_adr_value_combination_id    NUMBER;
93124 l_adr_value_segment_code      VARCHAR2(30);
93125 
93126 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
93127 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
93128 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
93129 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
93130 
93131 -- 4262811 Variables ------------------------------------------------------------------------------------------
93132 l_entered_amt_idx             NUMBER;
93133 l_accted_amt_idx              NUMBER;
93134 l_acc_rev_flag                VARCHAR2(1);
93135 l_accrual_line_num            NUMBER;
93136 l_tmp_amt                     NUMBER;
93137 l_acc_rev_natural_side_code   VARCHAR2(1);
93138 
93139 l_num_entries                 NUMBER;
93140 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
93141 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
93142 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
93143 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
93144 l_recog_line_1                NUMBER;
93145 l_recog_line_2                NUMBER;
93146 
93147 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
93148 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
93149 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
93150 
93151 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
93152 
93153 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
93154 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
93155 
93156 ---------------------------------------------------------------------------------------------------------------
93157 
93158 
93159 --
93160 -- bulk performance
93161 --
93162 l_balance_type_code           VARCHAR2(1);
93163 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
93164 l_log_module                  VARCHAR2(240);
93165 
93166 --
93167 -- Upgrade strategy
93168 --
93169 l_actual_upg_option           VARCHAR2(1);
93170 l_enc_upg_option           VARCHAR2(1);
93171 
93172 --
93173 BEGIN
93174 --
93175 IF g_log_enabled THEN
93176       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_170';
93177 END IF;
93178 --
93179 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
93180 
93181       trace
93182          (p_msg      => 'BEGIN of AcctLineType_170'
93183          ,p_level    => C_LEVEL_PROCEDURE
93184          ,p_module   => l_log_module);
93185 
93186 END IF;
93187 --
93188 l_component_type             := 'AMB_JLT';
93189 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
93190 l_component_type_code        := 'S';
93191 l_component_appl_id          :=  707;
93192 l_amb_context_code           := 'DEFAULT';
93193 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
93194 l_event_class_code           := 'DIR_INTERORG_SHIP';
93195 l_event_type_code            := 'DIR_INTERORG_SHIP_ALL';
93196 l_line_definition_owner_code := 'S';
93197 l_line_definition_code       := 'DIRECT_INTERORG_SHIP';
93198 --
93199 l_balance_type_code          := 'A';
93200 l_segment                     := NULL;
93201 l_ccid                        := NULL;
93202 l_adr_transaction_coa_id      := NULL;
93203 l_adr_accounting_coa_id       := NULL;
93204 l_adr_flexfield_segment_code  := NULL;
93205 l_adr_flex_value_set_id       := NULL;
93206 l_adr_value_type_code         := NULL;
93207 l_adr_value_combination_id    := NULL;
93208 l_adr_value_segment_code      := NULL;
93209 
93210 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
93211 l_bflow_class_code           := '';    -- 4219869 Business Flow
93212 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
93213 l_budgetary_control_flag     := 'N';
93214 
93215 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
93216 l_bflow_applied_to_amt       := NULL; -- 5132302
93217 l_entered_amt_idx            := NULL;          -- 4262811
93218 l_accted_amt_idx             := NULL;          -- 4262811
93219 l_acc_rev_flag               := NULL;          -- 4262811
93220 l_accrual_line_num           := NULL;          -- 4262811
93221 l_tmp_amt                    := NULL;          -- 4262811
93222 --
93223  
93224 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
93225     l_balance_type_code <> 'B' THEN
93226 IF NVL(p_source_24,9E125) =  3
93227  THEN 
93228 
93229    --
93230    XLA_AE_LINES_PKG.SetNewLine;
93231 
93232    p_balance_type_code          := l_balance_type_code;
93233    -- set the flag so later we will know whether the gain loss line needs to be created
93234    
93235    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
93236      p_actual_flag :='A';
93237    END IF;
93238 
93239    --
93240    -- bulk performance
93241    --
93242    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
93243                                       p_header_num   => 0); -- 4262811
93244    --
93245    -- set accounting line options
93246    --
93247    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
93248            p_natural_side_code          => 'D'
93249          , p_gain_or_loss_flag          => 'N'
93250          , p_gl_transfer_mode_code      => 'S'
93251          , p_acct_entry_type_code       => 'A'
93252          , p_switch_side_flag           => 'Y'
93253          , p_merge_duplicate_code       => 'N'
93254          );
93255    --
93256    l_acc_rev_natural_side_code := 'C';  -- 4262811
93257    -- 
93258    --
93259    -- set accounting line type info
93260    --
93261    xla_ae_lines_pkg.SetAcctLineType
93262       (p_component_type             => l_component_type
93263       ,p_event_type_code            => l_event_type_code
93264       ,p_line_definition_owner_code => l_line_definition_owner_code
93265       ,p_line_definition_code       => l_line_definition_code
93266       ,p_accounting_line_code       => l_component_code
93267       ,p_accounting_line_type_code  => l_component_type_code
93268       ,p_accounting_line_appl_id    => l_component_appl_id
93269       ,p_amb_context_code           => l_amb_context_code
93270       ,p_entity_code                => l_entity_code
93271       ,p_event_class_code           => l_event_class_code);
93272    --
93273    -- set accounting class
93274    --
93275    xla_ae_lines_pkg.SetAcctClass(
93276            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
93277          , p_ae_header_id           => l_ae_header_id
93278          );
93279 
93280    --
93281    -- set rounding class
93282    --
93283    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
93284                       'MATERIAL_OVERHEAD_ABSORPTION';
93285 
93286    --
93287    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
93288    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
93289    --
93290    -- bulk performance
93291    --
93292    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
93293 
93294    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
93295       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
93296 
93297    -- 4955764
93298    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
93299       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
93300 
93301    -- 4458381 Public Sector Enh
93302    
93303    --
93304    -- set accounting attributes for the line type
93305    --
93306    l_entered_amt_idx := 3;
93307    l_accted_amt_idx  := 8;
93308    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
93309    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
93310    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
93311    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
93312    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
93313    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
93314    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
93315    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
93316    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
93317    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
93318    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
93319    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
93320    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
93321    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
93322    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
93323    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
93324    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
93325 
93326    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
93327    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
93328 
93329    ---------------------------------------------------------------------------------------------------------------
93330    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
93331    ---------------------------------------------------------------------------------------------------------------
93332    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
93333 
93334    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
93335    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
93336 
93337    IF xla_accounting_cache_pkg.GetValueChar
93338          (p_source_code         => 'LEDGER_CATEGORY_CODE'
93339          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
93340    AND l_bflow_method_code = 'PRIOR_ENTRY'
93341 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
93342    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
93343          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
93344        )
93345    THEN
93346          xla_ae_lines_pkg.BflowUpgEntry
93347            (p_business_method_code    => l_bflow_method_code
93348            ,p_business_class_code     => l_bflow_class_code
93349            ,p_balance_type            => l_balance_type_code);
93350    ELSE
93351       NULL;
93352 -- No business flow processing for business flow method of NONE.
93353    END IF;
93354 
93355    --
93356    -- call analytical criteria
93357    --
93358    
93359    --
93360    -- call description
93361    --
93362    -- No description or it is inherited.
93363    --
93364    -- call ADRs
93365    -- Bug 4922099
93366    --
93367    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
93368         (NVL(l_actual_upg_option, 'N') = 'O') OR
93369         (NVL(l_enc_upg_option, 'N') = 'O')
93370       )
93371    THEN
93372    NULL;
93373    --
93374    --
93375    
93376   l_ccid := AcctDerRule_4(
93377            p_application_id           => p_application_id
93378          , p_ae_header_id             => l_ae_header_id 
93379 , p_source_4 => p_source_4
93380          , x_transaction_coa_id       => l_adr_transaction_coa_id
93381          , x_accounting_coa_id        => l_adr_accounting_coa_id
93382          , x_value_type_code          => l_adr_value_type_code
93383          , p_side                     => 'NA'
93384    );
93385 
93386    xla_ae_lines_pkg.set_ccid(
93387     p_code_combination_id          => l_ccid
93388   , p_value_type_code              => l_adr_value_type_code
93389   , p_transaction_coa_id           => l_adr_transaction_coa_id
93390   , p_accounting_coa_id            => l_adr_accounting_coa_id
93391   , p_adr_code                     => 'CST_DEFAULT'
93392   , p_adr_type_code                => 'S'
93393   , p_component_type               => l_component_type
93394   , p_component_code               => l_component_code
93395   , p_component_type_code          => l_component_type_code
93396   , p_component_appl_id            => l_component_appl_id
93397   , p_amb_context_code             => l_amb_context_code
93398   , p_side                         => 'NA'
93399   );
93400 
93401 
93402    --
93403    --
93404    END IF;
93405    --
93406    -- Bug 4922099
93407    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
93408           (NVL(l_enc_upg_option, 'N') = 'O')
93409         ) AND
93410         (l_bflow_method_code = 'PRIOR_ENTRY')
93411       )
93412    THEN
93413       IF
93414       --
93415       1 = 2
93416       --
93417       THEN
93418       xla_accounting_err_pkg.build_message
93419                                     (p_appli_s_name            => 'XLA'
93420                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
93421                                     ,p_token_1                 => 'LINE_NUMBER'
93422                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
93423                                     ,p_token_2                 => 'LINE_TYPE_NAME'
93424                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
93425                                                                              l_component_type
93426                                                                             ,l_component_code
93427                                                                             ,l_component_type_code
93428                                                                             ,l_component_appl_id
93429                                                                             ,l_amb_context_code
93430                                                                             ,l_entity_code
93431                                                                             ,l_event_class_code
93432                                                                            )
93433                                     ,p_token_3                 => 'OWNER'
93434                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
93435                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
93436                                                                           ,p_lookup_code    => l_component_type_code
93437                                                                          )
93438                                     ,p_token_4                 => 'PRODUCT_NAME'
93439                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
93440                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
93441                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
93442                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
93443                                     ,p_ae_header_id            =>  NULL
93444                                        );
93445 
93446         IF (C_LEVEL_ERROR>= g_log_level) THEN
93447                  trace
93448                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
93449                       ,p_level    => C_LEVEL_ERROR
93450                       ,p_module   => l_log_module);
93451         END IF;
93452       END IF;
93453    END IF;
93454    --
93455    --
93456    ------------------------------------------------------------------------------------------------
93457    -- 4219869 Business Flow
93458    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
93459    -- Prior Entry.  Currently, the following code is always generated.
93460    ------------------------------------------------------------------------------------------------
93461    XLA_AE_LINES_PKG.ValidateCurrentLine;
93462 
93463    ------------------------------------------------------------------------------------
93464    -- 4219869 Business Flow
93465    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
93466    ------------------------------------------------------------------------------------
93467    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
93468 
93469    ----------------------------------------------------------------------------------
93470    -- 4219869 Business Flow
93471    -- Update journal entry status -- Need to generate this within IF <condition>
93472    ----------------------------------------------------------------------------------
93473    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
93474          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
93475          ,p_balance_type_code => l_balance_type_code
93476          );
93477 
93478    -------------------------------------------------------------------------------------------
93479    -- 4262811 - Generate the Accrual Reversal lines
93480    -------------------------------------------------------------------------------------------
93481    BEGIN
93482       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
93483                               (g_array_event(p_event_id).array_value_num('header_index'));
93484       IF l_acc_rev_flag IS NULL THEN
93485          l_acc_rev_flag := 'N';
93486       END IF;
93487    EXCEPTION
93488       WHEN OTHERS THEN
93489          l_acc_rev_flag := 'N';
93490    END;
93491    --
93492    IF (l_acc_rev_flag = 'Y') THEN
93493 
93494        -- 4645092  ------------------------------------------------------------------------------
93495        -- To allow MPA report to determine if it should generate report process
93496        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
93497        ------------------------------------------------------------------------------------------
93498 
93499        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
93500        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
93501    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
93502    -- call ADRs
93503    -- Bug 4922099
93504    --
93505    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
93506         (NVL(l_actual_upg_option, 'N') = 'O') OR
93507         (NVL(l_enc_upg_option, 'N') = 'O')
93508       )
93509    THEN
93510    NULL;
93511    --
93512    --
93513    
93514   l_ccid := AcctDerRule_4(
93515            p_application_id           => p_application_id
93516          , p_ae_header_id             => l_ae_header_id 
93517 , p_source_4 => p_source_4
93518          , x_transaction_coa_id       => l_adr_transaction_coa_id
93519          , x_accounting_coa_id        => l_adr_accounting_coa_id
93520          , x_value_type_code          => l_adr_value_type_code
93521          , p_side                     => 'NA'
93522    );
93523 
93524    xla_ae_lines_pkg.set_ccid(
93525     p_code_combination_id          => l_ccid
93526   , p_value_type_code              => l_adr_value_type_code
93527   , p_transaction_coa_id           => l_adr_transaction_coa_id
93528   , p_accounting_coa_id            => l_adr_accounting_coa_id
93529   , p_adr_code                     => 'CST_DEFAULT'
93530   , p_adr_type_code                => 'S'
93531   , p_component_type               => l_component_type
93532   , p_component_code               => l_component_code
93533   , p_component_type_code          => l_component_type_code
93534   , p_component_appl_id            => l_component_appl_id
93535   , p_amb_context_code             => l_amb_context_code
93536   , p_side                         => 'NA'
93537   );
93538 
93539 
93540    --
93541    --
93542    END IF;
93543 
93544        --
93545        -- Update the line information that should be overwritten
93546        --
93547        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
93548                                          p_header_num   => 1);
93549        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
93550 
93551        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
93552 
93553        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
93554           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
93555        END IF;
93556 
93557       --
93558       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
93559       --
93560       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
93561           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
93562       ELSE
93563           ---------------------------------------------------------------------------------------------------
93564           -- 4262811a Switch Sign
93565           ---------------------------------------------------------------------------------------------------
93566           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
93567           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
93568                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93569           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
93570                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93571           -- 5132302
93572           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
93573                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93574 
93575       END IF;
93576 
93577       -- 4955764
93578       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
93579       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
93580 
93581 
93582       XLA_AE_LINES_PKG.ValidateCurrentLine;
93583       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
93584 
93585       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
93586                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
93587                ,p_balance_type_code => l_balance_type_code);
93588 
93589    END IF;
93590 
93591    -----------------------------------------------------------------------------------------
93592    -- 4262811 Multiperiod Accounting
93593    -----------------------------------------------------------------------------------------
93594      -- No MPA option is assigned.
93595 
93596 
93597 END IF;
93598 END IF;
93599 --
93600 
93601 --
93602 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
93603    trace
93604       (p_msg      => 'END of AcctLineType_170'
93605       ,p_level    => C_LEVEL_PROCEDURE
93606       ,p_module   => l_log_module);
93607 END IF;
93608 --
93609 EXCEPTION
93610   WHEN xla_exceptions_pkg.application_exception THEN
93611       RAISE;
93612   WHEN OTHERS THEN
93613        xla_exceptions_pkg.raise_message
93614            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_170');
93615 END AcctLineType_170;
93616 --
93617 
93618 ---------------------------------------
93619 --
93620 -- PRIVATE FUNCTION
93621 --         AcctLineType_171
93622 --
93623 ---------------------------------------
93624 PROCEDURE AcctLineType_171 (
93625   p_application_id        IN NUMBER
93626  ,p_event_id              IN NUMBER
93627  ,p_calculate_acctd_flag  IN VARCHAR2
93628  ,p_calculate_g_l_flag    IN VARCHAR2
93629  ,p_actual_flag           IN OUT VARCHAR2
93630  ,p_balance_type_code     OUT VARCHAR2
93631  ,p_gain_or_loss_ref      OUT VARCHAR2
93632  
93633 --Cost Management Default Account
93634  , p_source_4            IN NUMBER
93635 --DISTRIBUTION_IDENTIFIER
93636  , p_source_11            IN NUMBER
93637 --Distribution Type
93638  , p_source_12            IN VARCHAR2
93639  , p_source_12_meaning    IN VARCHAR2
93640 --Entered Currency Code
93641  , p_source_15            IN VARCHAR2
93642 --Entered Amount
93643  , p_source_18            IN NUMBER
93644 --Currency Conversion Date
93645  , p_source_19            IN DATE
93646 --Currency Conversion Rate
93647  , p_source_20            IN NUMBER
93648 --Currency Conversion Type
93649  , p_source_21            IN VARCHAR2
93650 --Accounted Amount
93651  , p_source_22            IN NUMBER
93652 --Accounting Line Type
93653  , p_source_24            IN NUMBER
93654 )
93655 IS
93656 
93657 l_component_type              VARCHAR2(80);
93658 l_component_code              VARCHAR2(30);
93659 l_component_type_code         VARCHAR2(1);
93660 l_component_appl_id           INTEGER;
93661 l_amb_context_code            VARCHAR2(30);
93662 l_entity_code                 VARCHAR2(30);
93663 l_event_class_code            VARCHAR2(30);
93664 l_ae_header_id                NUMBER;
93665 l_event_type_code             VARCHAR2(30);
93666 l_line_definition_code        VARCHAR2(30);
93667 l_line_definition_owner_code  VARCHAR2(1);
93668 --
93669 -- adr variables
93670 l_segment                     VARCHAR2(30);
93671 l_ccid                        NUMBER;
93672 l_adr_transaction_coa_id      NUMBER;
93673 l_adr_accounting_coa_id       NUMBER;
93674 l_adr_flexfield_segment_code  VARCHAR2(30);
93675 l_adr_flex_value_set_id       NUMBER;
93676 l_adr_value_type_code         VARCHAR2(30);
93677 l_adr_value_combination_id    NUMBER;
93678 l_adr_value_segment_code      VARCHAR2(30);
93679 
93680 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
93681 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
93682 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
93683 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
93684 
93685 -- 4262811 Variables ------------------------------------------------------------------------------------------
93686 l_entered_amt_idx             NUMBER;
93687 l_accted_amt_idx              NUMBER;
93688 l_acc_rev_flag                VARCHAR2(1);
93689 l_accrual_line_num            NUMBER;
93690 l_tmp_amt                     NUMBER;
93691 l_acc_rev_natural_side_code   VARCHAR2(1);
93692 
93693 l_num_entries                 NUMBER;
93694 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
93695 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
93696 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
93697 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
93698 l_recog_line_1                NUMBER;
93699 l_recog_line_2                NUMBER;
93700 
93701 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
93702 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
93703 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
93704 
93705 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
93706 
93707 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
93708 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
93709 
93710 ---------------------------------------------------------------------------------------------------------------
93711 
93712 
93713 --
93714 -- bulk performance
93715 --
93716 l_balance_type_code           VARCHAR2(1);
93717 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
93718 l_log_module                  VARCHAR2(240);
93719 
93720 --
93721 -- Upgrade strategy
93722 --
93723 l_actual_upg_option           VARCHAR2(1);
93724 l_enc_upg_option           VARCHAR2(1);
93725 
93726 --
93727 BEGIN
93728 --
93729 IF g_log_enabled THEN
93730       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_171';
93731 END IF;
93732 --
93733 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
93734 
93735       trace
93736          (p_msg      => 'BEGIN of AcctLineType_171'
93737          ,p_level    => C_LEVEL_PROCEDURE
93738          ,p_module   => l_log_module);
93739 
93740 END IF;
93741 --
93742 l_component_type             := 'AMB_JLT';
93743 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
93744 l_component_type_code        := 'S';
93745 l_component_appl_id          :=  707;
93746 l_amb_context_code           := 'DEFAULT';
93747 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
93748 l_event_class_code           := 'USER_DEFINE';
93749 l_event_type_code            := 'UDIR_INTERORG_SHIP_NO_TP';
93750 l_line_definition_owner_code := 'S';
93751 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_NO_TP';
93752 --
93753 l_balance_type_code          := 'A';
93754 l_segment                     := NULL;
93755 l_ccid                        := NULL;
93756 l_adr_transaction_coa_id      := NULL;
93757 l_adr_accounting_coa_id       := NULL;
93758 l_adr_flexfield_segment_code  := NULL;
93759 l_adr_flex_value_set_id       := NULL;
93760 l_adr_value_type_code         := NULL;
93761 l_adr_value_combination_id    := NULL;
93762 l_adr_value_segment_code      := NULL;
93763 
93764 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
93765 l_bflow_class_code           := '';    -- 4219869 Business Flow
93766 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
93767 l_budgetary_control_flag     := 'N';
93768 
93769 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
93770 l_bflow_applied_to_amt       := NULL; -- 5132302
93771 l_entered_amt_idx            := NULL;          -- 4262811
93772 l_accted_amt_idx             := NULL;          -- 4262811
93773 l_acc_rev_flag               := NULL;          -- 4262811
93774 l_accrual_line_num           := NULL;          -- 4262811
93775 l_tmp_amt                    := NULL;          -- 4262811
93776 --
93777  
93778 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
93779     l_balance_type_code <> 'B' THEN
93780 IF NVL(p_source_24,9E125) =  3
93781  THEN 
93782 
93783    --
93784    XLA_AE_LINES_PKG.SetNewLine;
93785 
93786    p_balance_type_code          := l_balance_type_code;
93787    -- set the flag so later we will know whether the gain loss line needs to be created
93788    
93789    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
93790      p_actual_flag :='A';
93791    END IF;
93792 
93793    --
93794    -- bulk performance
93795    --
93796    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
93797                                       p_header_num   => 0); -- 4262811
93798    --
93799    -- set accounting line options
93800    --
93801    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
93802            p_natural_side_code          => 'D'
93803          , p_gain_or_loss_flag          => 'N'
93804          , p_gl_transfer_mode_code      => 'S'
93805          , p_acct_entry_type_code       => 'A'
93806          , p_switch_side_flag           => 'Y'
93807          , p_merge_duplicate_code       => 'N'
93808          );
93809    --
93810    l_acc_rev_natural_side_code := 'C';  -- 4262811
93811    -- 
93812    --
93813    -- set accounting line type info
93814    --
93815    xla_ae_lines_pkg.SetAcctLineType
93816       (p_component_type             => l_component_type
93817       ,p_event_type_code            => l_event_type_code
93818       ,p_line_definition_owner_code => l_line_definition_owner_code
93819       ,p_line_definition_code       => l_line_definition_code
93820       ,p_accounting_line_code       => l_component_code
93821       ,p_accounting_line_type_code  => l_component_type_code
93822       ,p_accounting_line_appl_id    => l_component_appl_id
93823       ,p_amb_context_code           => l_amb_context_code
93824       ,p_entity_code                => l_entity_code
93825       ,p_event_class_code           => l_event_class_code);
93826    --
93827    -- set accounting class
93828    --
93829    xla_ae_lines_pkg.SetAcctClass(
93830            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
93831          , p_ae_header_id           => l_ae_header_id
93832          );
93833 
93834    --
93835    -- set rounding class
93836    --
93837    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
93838                       'MATERIAL_OVERHEAD_ABSORPTION';
93839 
93840    --
93841    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
93842    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
93843    --
93844    -- bulk performance
93845    --
93846    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
93847 
93848    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
93849       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
93850 
93851    -- 4955764
93852    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
93853       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
93854 
93855    -- 4458381 Public Sector Enh
93856    
93857    --
93858    -- set accounting attributes for the line type
93859    --
93860    l_entered_amt_idx := 3;
93861    l_accted_amt_idx  := 8;
93862    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
93863    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
93864    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
93865    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
93866    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
93867    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
93868    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
93869    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
93870    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
93871    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
93872    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
93873    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
93874    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
93875    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
93876    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
93877    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
93878    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
93879 
93880    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
93881    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
93882 
93883    ---------------------------------------------------------------------------------------------------------------
93884    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
93885    ---------------------------------------------------------------------------------------------------------------
93886    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
93887 
93888    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
93889    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
93890 
93891    IF xla_accounting_cache_pkg.GetValueChar
93892          (p_source_code         => 'LEDGER_CATEGORY_CODE'
93893          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
93894    AND l_bflow_method_code = 'PRIOR_ENTRY'
93895 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
93896    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
93897          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
93898        )
93899    THEN
93900          xla_ae_lines_pkg.BflowUpgEntry
93901            (p_business_method_code    => l_bflow_method_code
93902            ,p_business_class_code     => l_bflow_class_code
93903            ,p_balance_type            => l_balance_type_code);
93904    ELSE
93905       NULL;
93906 -- No business flow processing for business flow method of NONE.
93907    END IF;
93908 
93909    --
93910    -- call analytical criteria
93911    --
93912    
93913    --
93914    -- call description
93915    --
93916    -- No description or it is inherited.
93917    --
93918    -- call ADRs
93919    -- Bug 4922099
93920    --
93921    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
93922         (NVL(l_actual_upg_option, 'N') = 'O') OR
93923         (NVL(l_enc_upg_option, 'N') = 'O')
93924       )
93925    THEN
93926    NULL;
93927    --
93928    --
93929    
93930   l_ccid := AcctDerRule_4(
93931            p_application_id           => p_application_id
93932          , p_ae_header_id             => l_ae_header_id 
93933 , p_source_4 => p_source_4
93934          , x_transaction_coa_id       => l_adr_transaction_coa_id
93935          , x_accounting_coa_id        => l_adr_accounting_coa_id
93936          , x_value_type_code          => l_adr_value_type_code
93937          , p_side                     => 'NA'
93938    );
93939 
93940    xla_ae_lines_pkg.set_ccid(
93941     p_code_combination_id          => l_ccid
93942   , p_value_type_code              => l_adr_value_type_code
93943   , p_transaction_coa_id           => l_adr_transaction_coa_id
93944   , p_accounting_coa_id            => l_adr_accounting_coa_id
93945   , p_adr_code                     => 'CST_DEFAULT'
93946   , p_adr_type_code                => 'S'
93947   , p_component_type               => l_component_type
93948   , p_component_code               => l_component_code
93949   , p_component_type_code          => l_component_type_code
93950   , p_component_appl_id            => l_component_appl_id
93951   , p_amb_context_code             => l_amb_context_code
93952   , p_side                         => 'NA'
93953   );
93954 
93955 
93956    --
93957    --
93958    END IF;
93959    --
93960    -- Bug 4922099
93961    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
93962           (NVL(l_enc_upg_option, 'N') = 'O')
93963         ) AND
93964         (l_bflow_method_code = 'PRIOR_ENTRY')
93965       )
93966    THEN
93967       IF
93968       --
93969       1 = 2
93970       --
93971       THEN
93972       xla_accounting_err_pkg.build_message
93973                                     (p_appli_s_name            => 'XLA'
93974                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
93975                                     ,p_token_1                 => 'LINE_NUMBER'
93976                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
93977                                     ,p_token_2                 => 'LINE_TYPE_NAME'
93978                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
93979                                                                              l_component_type
93980                                                                             ,l_component_code
93981                                                                             ,l_component_type_code
93982                                                                             ,l_component_appl_id
93983                                                                             ,l_amb_context_code
93984                                                                             ,l_entity_code
93985                                                                             ,l_event_class_code
93986                                                                            )
93987                                     ,p_token_3                 => 'OWNER'
93988                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
93989                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
93990                                                                           ,p_lookup_code    => l_component_type_code
93991                                                                          )
93992                                     ,p_token_4                 => 'PRODUCT_NAME'
93993                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
93994                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
93995                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
93996                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
93997                                     ,p_ae_header_id            =>  NULL
93998                                        );
93999 
94000         IF (C_LEVEL_ERROR>= g_log_level) THEN
94001                  trace
94002                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
94003                       ,p_level    => C_LEVEL_ERROR
94004                       ,p_module   => l_log_module);
94005         END IF;
94006       END IF;
94007    END IF;
94008    --
94009    --
94010    ------------------------------------------------------------------------------------------------
94011    -- 4219869 Business Flow
94012    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
94013    -- Prior Entry.  Currently, the following code is always generated.
94014    ------------------------------------------------------------------------------------------------
94015    XLA_AE_LINES_PKG.ValidateCurrentLine;
94016 
94017    ------------------------------------------------------------------------------------
94018    -- 4219869 Business Flow
94019    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
94020    ------------------------------------------------------------------------------------
94021    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
94022 
94023    ----------------------------------------------------------------------------------
94024    -- 4219869 Business Flow
94025    -- Update journal entry status -- Need to generate this within IF <condition>
94026    ----------------------------------------------------------------------------------
94027    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
94028          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
94029          ,p_balance_type_code => l_balance_type_code
94030          );
94031 
94032    -------------------------------------------------------------------------------------------
94033    -- 4262811 - Generate the Accrual Reversal lines
94034    -------------------------------------------------------------------------------------------
94035    BEGIN
94036       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
94037                               (g_array_event(p_event_id).array_value_num('header_index'));
94038       IF l_acc_rev_flag IS NULL THEN
94039          l_acc_rev_flag := 'N';
94040       END IF;
94041    EXCEPTION
94042       WHEN OTHERS THEN
94043          l_acc_rev_flag := 'N';
94044    END;
94045    --
94046    IF (l_acc_rev_flag = 'Y') THEN
94047 
94048        -- 4645092  ------------------------------------------------------------------------------
94049        -- To allow MPA report to determine if it should generate report process
94050        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
94051        ------------------------------------------------------------------------------------------
94052 
94053        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
94054        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
94055    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
94056    -- call ADRs
94057    -- Bug 4922099
94058    --
94059    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
94060         (NVL(l_actual_upg_option, 'N') = 'O') OR
94061         (NVL(l_enc_upg_option, 'N') = 'O')
94062       )
94063    THEN
94064    NULL;
94065    --
94066    --
94067    
94068   l_ccid := AcctDerRule_4(
94069            p_application_id           => p_application_id
94070          , p_ae_header_id             => l_ae_header_id 
94071 , p_source_4 => p_source_4
94072          , x_transaction_coa_id       => l_adr_transaction_coa_id
94073          , x_accounting_coa_id        => l_adr_accounting_coa_id
94074          , x_value_type_code          => l_adr_value_type_code
94075          , p_side                     => 'NA'
94076    );
94077 
94078    xla_ae_lines_pkg.set_ccid(
94079     p_code_combination_id          => l_ccid
94080   , p_value_type_code              => l_adr_value_type_code
94081   , p_transaction_coa_id           => l_adr_transaction_coa_id
94082   , p_accounting_coa_id            => l_adr_accounting_coa_id
94083   , p_adr_code                     => 'CST_DEFAULT'
94084   , p_adr_type_code                => 'S'
94085   , p_component_type               => l_component_type
94086   , p_component_code               => l_component_code
94087   , p_component_type_code          => l_component_type_code
94088   , p_component_appl_id            => l_component_appl_id
94089   , p_amb_context_code             => l_amb_context_code
94090   , p_side                         => 'NA'
94091   );
94092 
94093 
94094    --
94095    --
94096    END IF;
94097 
94098        --
94099        -- Update the line information that should be overwritten
94100        --
94101        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
94102                                          p_header_num   => 1);
94103        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
94104 
94105        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
94106 
94107        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
94108           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
94109        END IF;
94110 
94111       --
94112       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
94113       --
94114       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
94115           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
94116       ELSE
94117           ---------------------------------------------------------------------------------------------------
94118           -- 4262811a Switch Sign
94119           ---------------------------------------------------------------------------------------------------
94120           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
94121           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
94122                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94123           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
94124                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94125           -- 5132302
94126           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
94127                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94128 
94129       END IF;
94130 
94131       -- 4955764
94132       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
94133       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
94134 
94135 
94136       XLA_AE_LINES_PKG.ValidateCurrentLine;
94137       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
94138 
94139       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
94140                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
94141                ,p_balance_type_code => l_balance_type_code);
94142 
94143    END IF;
94144 
94145    -----------------------------------------------------------------------------------------
94146    -- 4262811 Multiperiod Accounting
94147    -----------------------------------------------------------------------------------------
94148      -- No MPA option is assigned.
94149 
94150 
94151 END IF;
94152 END IF;
94153 --
94154 
94155 --
94156 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
94157    trace
94158       (p_msg      => 'END of AcctLineType_171'
94159       ,p_level    => C_LEVEL_PROCEDURE
94160       ,p_module   => l_log_module);
94161 END IF;
94162 --
94163 EXCEPTION
94164   WHEN xla_exceptions_pkg.application_exception THEN
94165       RAISE;
94166   WHEN OTHERS THEN
94167        xla_exceptions_pkg.raise_message
94168            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_171');
94169 END AcctLineType_171;
94170 --
94171 
94172 ---------------------------------------
94173 --
94174 -- PRIVATE FUNCTION
94175 --         AcctLineType_172
94176 --
94177 ---------------------------------------
94178 PROCEDURE AcctLineType_172 (
94179   p_application_id        IN NUMBER
94180  ,p_event_id              IN NUMBER
94181  ,p_calculate_acctd_flag  IN VARCHAR2
94182  ,p_calculate_g_l_flag    IN VARCHAR2
94183  ,p_actual_flag           IN OUT VARCHAR2
94184  ,p_balance_type_code     OUT VARCHAR2
94185  ,p_gain_or_loss_ref      OUT VARCHAR2
94186  
94187 --Cost Management Default Account
94188  , p_source_4            IN NUMBER
94189 --Applied to Application ID
94190  , p_source_6            IN NUMBER
94191 --Applied to Distribution Link Type
94192  , p_source_7            IN VARCHAR2
94193 --Applied to Entity Code
94194  , p_source_8            IN VARCHAR2
94195 --Applied To Purchase Document Identifier
94196  , p_source_10            IN NUMBER
94197 --DISTRIBUTION_IDENTIFIER
94198  , p_source_11            IN NUMBER
94199 --Distribution Type
94200  , p_source_12            IN VARCHAR2
94201  , p_source_12_meaning    IN VARCHAR2
94202 --PO Budget Account
94203  , p_source_13            IN NUMBER
94204 --Encumbrance Reversal Amount Entered
94205  , p_source_14            IN NUMBER
94206 --Entered Currency Code
94207  , p_source_15            IN VARCHAR2
94208 --Transaction Encumbrance Reversal Amount
94209  , p_source_16            IN NUMBER
94210 --Entered Amount
94211  , p_source_18            IN NUMBER
94212 --Currency Conversion Date
94213  , p_source_19            IN DATE
94214 --Currency Conversion Rate
94215  , p_source_20            IN NUMBER
94216 --Currency Conversion Type
94217  , p_source_21            IN VARCHAR2
94218 --Accounted Amount
94219  , p_source_22            IN NUMBER
94220 --Purchasing Encumbrance Type Identifier
94221  , p_source_23            IN NUMBER
94222 --Accounting Line Type
94223  , p_source_24            IN NUMBER
94224 --Costing Encumbrance Upgrade Option
94225  , p_source_27            IN VARCHAR2
94226 --TXN_PO_DISTRIBUTION_ID
94227  , p_source_28            IN NUMBER
94228 )
94229 IS
94230 
94231 l_component_type              VARCHAR2(80);
94232 l_component_code              VARCHAR2(30);
94233 l_component_type_code         VARCHAR2(1);
94234 l_component_appl_id           INTEGER;
94235 l_amb_context_code            VARCHAR2(30);
94236 l_entity_code                 VARCHAR2(30);
94237 l_event_class_code            VARCHAR2(30);
94238 l_ae_header_id                NUMBER;
94239 l_event_type_code             VARCHAR2(30);
94240 l_line_definition_code        VARCHAR2(30);
94241 l_line_definition_owner_code  VARCHAR2(1);
94242 --
94243 -- adr variables
94244 l_segment                     VARCHAR2(30);
94245 l_ccid                        NUMBER;
94246 l_adr_transaction_coa_id      NUMBER;
94247 l_adr_accounting_coa_id       NUMBER;
94248 l_adr_flexfield_segment_code  VARCHAR2(30);
94249 l_adr_flex_value_set_id       NUMBER;
94250 l_adr_value_type_code         VARCHAR2(30);
94251 l_adr_value_combination_id    NUMBER;
94252 l_adr_value_segment_code      VARCHAR2(30);
94253 
94254 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
94255 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
94256 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
94257 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
94258 
94259 -- 4262811 Variables ------------------------------------------------------------------------------------------
94260 l_entered_amt_idx             NUMBER;
94261 l_accted_amt_idx              NUMBER;
94262 l_acc_rev_flag                VARCHAR2(1);
94263 l_accrual_line_num            NUMBER;
94264 l_tmp_amt                     NUMBER;
94265 l_acc_rev_natural_side_code   VARCHAR2(1);
94266 
94267 l_num_entries                 NUMBER;
94268 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
94269 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
94270 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
94271 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
94272 l_recog_line_1                NUMBER;
94273 l_recog_line_2                NUMBER;
94274 
94275 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
94276 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
94277 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
94278 
94279 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
94280 
94281 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
94282 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
94283 
94284 ---------------------------------------------------------------------------------------------------------------
94285 
94286 
94287 --
94288 -- bulk performance
94289 --
94290 l_balance_type_code           VARCHAR2(1);
94291 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
94292 l_log_module                  VARCHAR2(240);
94293 
94294 --
94295 -- Upgrade strategy
94296 --
94297 l_actual_upg_option           VARCHAR2(1);
94298 l_enc_upg_option           VARCHAR2(1);
94299 
94300 --
94301 BEGIN
94302 --
94303 IF g_log_enabled THEN
94304       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_172';
94305 END IF;
94306 --
94307 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
94308 
94309       trace
94310          (p_msg      => 'BEGIN of AcctLineType_172'
94311          ,p_level    => C_LEVEL_PROCEDURE
94312          ,p_module   => l_log_module);
94313 
94314 END IF;
94315 --
94316 l_component_type             := 'AMB_JLT';
94317 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
94318 l_component_type_code        := 'S';
94319 l_component_appl_id          :=  707;
94320 l_amb_context_code           := 'DEFAULT';
94321 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
94322 l_event_class_code           := 'PURCHASE_ORDER';
94323 l_event_type_code            := 'PURCHASE_ORDER_ALL';
94324 l_line_definition_owner_code := 'S';
94325 l_line_definition_code       := 'PURCHASE_ORDER';
94326 --
94327 l_balance_type_code          := 'A';
94328 l_segment                     := NULL;
94329 l_ccid                        := NULL;
94330 l_adr_transaction_coa_id      := NULL;
94331 l_adr_accounting_coa_id       := NULL;
94332 l_adr_flexfield_segment_code  := NULL;
94333 l_adr_flex_value_set_id       := NULL;
94334 l_adr_value_type_code         := NULL;
94335 l_adr_value_combination_id    := NULL;
94336 l_adr_value_segment_code      := NULL;
94337 
94338 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
94339 l_bflow_class_code           := '';    -- 4219869 Business Flow
94340 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
94341 l_budgetary_control_flag     := 'N';
94342 
94343 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
94344 l_bflow_applied_to_amt       := NULL; -- 5132302
94345 l_entered_amt_idx            := NULL;          -- 4262811
94346 l_accted_amt_idx             := NULL;          -- 4262811
94347 l_acc_rev_flag               := NULL;          -- 4262811
94348 l_accrual_line_num           := NULL;          -- 4262811
94349 l_tmp_amt                    := NULL;          -- 4262811
94350 --
94351  
94352 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
94353     l_balance_type_code <> 'B' THEN
94354 IF NVL(p_source_24,9E125) =  3
94355  THEN 
94356 
94357    --
94358    XLA_AE_LINES_PKG.SetNewLine;
94359 
94360    p_balance_type_code          := l_balance_type_code;
94361    -- set the flag so later we will know whether the gain loss line needs to be created
94362    
94363    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
94364      p_actual_flag :='A';
94365    END IF;
94366 
94367    --
94368    -- bulk performance
94369    --
94370    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
94371                                       p_header_num   => 0); -- 4262811
94372    --
94373    -- set accounting line options
94374    --
94375    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
94376            p_natural_side_code          => 'D'
94377          , p_gain_or_loss_flag          => 'N'
94378          , p_gl_transfer_mode_code      => 'S'
94379          , p_acct_entry_type_code       => 'A'
94380          , p_switch_side_flag           => 'Y'
94381          , p_merge_duplicate_code       => 'N'
94382          );
94383    --
94384    l_acc_rev_natural_side_code := 'C';  -- 4262811
94385    -- 
94386    --
94387    -- set accounting line type info
94388    --
94389    xla_ae_lines_pkg.SetAcctLineType
94390       (p_component_type             => l_component_type
94391       ,p_event_type_code            => l_event_type_code
94392       ,p_line_definition_owner_code => l_line_definition_owner_code
94393       ,p_line_definition_code       => l_line_definition_code
94394       ,p_accounting_line_code       => l_component_code
94395       ,p_accounting_line_type_code  => l_component_type_code
94396       ,p_accounting_line_appl_id    => l_component_appl_id
94397       ,p_amb_context_code           => l_amb_context_code
94398       ,p_entity_code                => l_entity_code
94399       ,p_event_class_code           => l_event_class_code);
94400    --
94401    -- set accounting class
94402    --
94403    xla_ae_lines_pkg.SetAcctClass(
94404            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
94405          , p_ae_header_id           => l_ae_header_id
94406          );
94407 
94408    --
94409    -- set rounding class
94410    --
94411    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
94412                       'MATERIAL_OVERHEAD_ABSORPTION';
94413 
94414    --
94415    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
94416    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
94417    --
94418    -- bulk performance
94419    --
94420    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
94421 
94422    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
94423       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
94424 
94425    -- 4955764
94426    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
94427       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
94428 
94429    -- 4458381 Public Sector Enh
94430    
94431    --
94432    -- set accounting attributes for the line type
94433    --
94434    l_entered_amt_idx := 17;
94435    l_accted_amt_idx  := 22;
94436    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
94437    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
94438    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
94439    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
94440    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
94441    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
94442    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
94443    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
94444    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
94445    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
94446    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_10);
94447    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
94448    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
94449    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
94450    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
94451    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
94452    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_13);
94453    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
94454    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
94455    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
94456    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
94457    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
94458    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
94459    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
94460    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_13);
94461    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
94462    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
94463    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
94464    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
94465    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
94466    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
94467    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
94468    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
94469    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
94470    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
94471    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
94472    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
94473    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
94474    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
94475    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
94476    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
94477    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
94478    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
94479    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
94480    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
94481    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
94482    l_rec_acct_attrs.array_num_value(23)  := p_source_23;
94483    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
94484    l_rec_acct_attrs.array_num_value(24)  := p_source_23;
94485 
94486    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
94487    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
94488 
94489    ---------------------------------------------------------------------------------------------------------------
94490    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
94491    ---------------------------------------------------------------------------------------------------------------
94492    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
94493 
94494    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
94495    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
94496 
94497    IF xla_accounting_cache_pkg.GetValueChar
94498          (p_source_code         => 'LEDGER_CATEGORY_CODE'
94499          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
94500    AND l_bflow_method_code = 'PRIOR_ENTRY'
94501 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
94502    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
94503          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
94504        )
94505    THEN
94506          xla_ae_lines_pkg.BflowUpgEntry
94507            (p_business_method_code    => l_bflow_method_code
94508            ,p_business_class_code     => l_bflow_class_code
94509            ,p_balance_type            => l_balance_type_code);
94510    ELSE
94511       NULL;
94512 -- No business flow processing for business flow method of NONE.
94513    END IF;
94514 
94515    --
94516    -- call analytical criteria
94517    --
94518    
94519    --
94520    -- call description
94521    --
94522    -- No description or it is inherited.
94523    --
94524    -- call ADRs
94525    -- Bug 4922099
94526    --
94527    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
94528         (NVL(l_actual_upg_option, 'N') = 'O') OR
94529         (NVL(l_enc_upg_option, 'N') = 'O')
94530       )
94531    THEN
94532    NULL;
94533    --
94534    --
94535    
94536   l_ccid := AcctDerRule_4(
94537            p_application_id           => p_application_id
94538          , p_ae_header_id             => l_ae_header_id 
94539 , p_source_4 => p_source_4
94540          , x_transaction_coa_id       => l_adr_transaction_coa_id
94541          , x_accounting_coa_id        => l_adr_accounting_coa_id
94542          , x_value_type_code          => l_adr_value_type_code
94543          , p_side                     => 'NA'
94544    );
94545 
94546    xla_ae_lines_pkg.set_ccid(
94547     p_code_combination_id          => l_ccid
94548   , p_value_type_code              => l_adr_value_type_code
94549   , p_transaction_coa_id           => l_adr_transaction_coa_id
94550   , p_accounting_coa_id            => l_adr_accounting_coa_id
94551   , p_adr_code                     => 'CST_DEFAULT'
94552   , p_adr_type_code                => 'S'
94553   , p_component_type               => l_component_type
94554   , p_component_code               => l_component_code
94555   , p_component_type_code          => l_component_type_code
94556   , p_component_appl_id            => l_component_appl_id
94557   , p_amb_context_code             => l_amb_context_code
94558   , p_side                         => 'NA'
94559   );
94560 
94561 
94562    --
94563    --
94564    END IF;
94565    --
94566    -- Bug 4922099
94567    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
94568           (NVL(l_enc_upg_option, 'N') = 'O')
94569         ) AND
94570         (l_bflow_method_code = 'PRIOR_ENTRY')
94571       )
94572    THEN
94573       IF
94574       --
94575       1 = 2
94576       --
94577       THEN
94578       xla_accounting_err_pkg.build_message
94579                                     (p_appli_s_name            => 'XLA'
94580                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
94581                                     ,p_token_1                 => 'LINE_NUMBER'
94582                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
94583                                     ,p_token_2                 => 'LINE_TYPE_NAME'
94584                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
94585                                                                              l_component_type
94586                                                                             ,l_component_code
94587                                                                             ,l_component_type_code
94588                                                                             ,l_component_appl_id
94589                                                                             ,l_amb_context_code
94590                                                                             ,l_entity_code
94591                                                                             ,l_event_class_code
94592                                                                            )
94593                                     ,p_token_3                 => 'OWNER'
94594                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
94595                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
94596                                                                           ,p_lookup_code    => l_component_type_code
94597                                                                          )
94598                                     ,p_token_4                 => 'PRODUCT_NAME'
94599                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
94600                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
94601                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
94602                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
94603                                     ,p_ae_header_id            =>  NULL
94604                                        );
94605 
94606         IF (C_LEVEL_ERROR>= g_log_level) THEN
94607                  trace
94608                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
94609                       ,p_level    => C_LEVEL_ERROR
94610                       ,p_module   => l_log_module);
94611         END IF;
94612       END IF;
94613    END IF;
94614    --
94615    --
94616    ------------------------------------------------------------------------------------------------
94617    -- 4219869 Business Flow
94618    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
94619    -- Prior Entry.  Currently, the following code is always generated.
94620    ------------------------------------------------------------------------------------------------
94621    XLA_AE_LINES_PKG.ValidateCurrentLine;
94622 
94623    ------------------------------------------------------------------------------------
94624    -- 4219869 Business Flow
94625    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
94626    ------------------------------------------------------------------------------------
94627    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
94628 
94629    ----------------------------------------------------------------------------------
94630    -- 4219869 Business Flow
94631    -- Update journal entry status -- Need to generate this within IF <condition>
94632    ----------------------------------------------------------------------------------
94633    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
94634          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
94635          ,p_balance_type_code => l_balance_type_code
94636          );
94637 
94638    -------------------------------------------------------------------------------------------
94639    -- 4262811 - Generate the Accrual Reversal lines
94640    -------------------------------------------------------------------------------------------
94641    BEGIN
94642       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
94643                               (g_array_event(p_event_id).array_value_num('header_index'));
94644       IF l_acc_rev_flag IS NULL THEN
94645          l_acc_rev_flag := 'N';
94646       END IF;
94647    EXCEPTION
94648       WHEN OTHERS THEN
94649          l_acc_rev_flag := 'N';
94650    END;
94651    --
94652    IF (l_acc_rev_flag = 'Y') THEN
94653 
94654        -- 4645092  ------------------------------------------------------------------------------
94655        -- To allow MPA report to determine if it should generate report process
94656        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
94657        ------------------------------------------------------------------------------------------
94658 
94659        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
94660        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
94661    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
94662    -- call ADRs
94663    -- Bug 4922099
94664    --
94665    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
94666         (NVL(l_actual_upg_option, 'N') = 'O') OR
94667         (NVL(l_enc_upg_option, 'N') = 'O')
94668       )
94669    THEN
94670    NULL;
94671    --
94672    --
94673    
94674   l_ccid := AcctDerRule_4(
94675            p_application_id           => p_application_id
94676          , p_ae_header_id             => l_ae_header_id 
94677 , p_source_4 => p_source_4
94678          , x_transaction_coa_id       => l_adr_transaction_coa_id
94679          , x_accounting_coa_id        => l_adr_accounting_coa_id
94680          , x_value_type_code          => l_adr_value_type_code
94681          , p_side                     => 'NA'
94682    );
94683 
94684    xla_ae_lines_pkg.set_ccid(
94685     p_code_combination_id          => l_ccid
94686   , p_value_type_code              => l_adr_value_type_code
94687   , p_transaction_coa_id           => l_adr_transaction_coa_id
94688   , p_accounting_coa_id            => l_adr_accounting_coa_id
94689   , p_adr_code                     => 'CST_DEFAULT'
94690   , p_adr_type_code                => 'S'
94691   , p_component_type               => l_component_type
94692   , p_component_code               => l_component_code
94693   , p_component_type_code          => l_component_type_code
94694   , p_component_appl_id            => l_component_appl_id
94695   , p_amb_context_code             => l_amb_context_code
94696   , p_side                         => 'NA'
94697   );
94698 
94699 
94700    --
94701    --
94702    END IF;
94703 
94704        --
94705        -- Update the line information that should be overwritten
94706        --
94707        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
94708                                          p_header_num   => 1);
94709        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
94710 
94711        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
94712 
94713        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
94714           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
94715        END IF;
94716 
94717       --
94718       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
94719       --
94720       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
94721           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
94722       ELSE
94723           ---------------------------------------------------------------------------------------------------
94724           -- 4262811a Switch Sign
94725           ---------------------------------------------------------------------------------------------------
94726           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
94727           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
94728                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94729           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
94730                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94731           -- 5132302
94732           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
94733                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94734 
94735       END IF;
94736 
94737       -- 4955764
94738       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
94739       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
94740 
94741 
94742       XLA_AE_LINES_PKG.ValidateCurrentLine;
94743       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
94744 
94745       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
94746                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
94747                ,p_balance_type_code => l_balance_type_code);
94748 
94749    END IF;
94750 
94751    -----------------------------------------------------------------------------------------
94752    -- 4262811 Multiperiod Accounting
94753    -----------------------------------------------------------------------------------------
94754      -- No MPA option is assigned.
94755 
94756 
94757 END IF;
94758 END IF;
94759 --
94760 
94761 --
94762 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
94763    trace
94764       (p_msg      => 'END of AcctLineType_172'
94765       ,p_level    => C_LEVEL_PROCEDURE
94766       ,p_module   => l_log_module);
94767 END IF;
94768 --
94769 EXCEPTION
94770   WHEN xla_exceptions_pkg.application_exception THEN
94771       RAISE;
94772   WHEN OTHERS THEN
94773        xla_exceptions_pkg.raise_message
94774            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_172');
94775 END AcctLineType_172;
94776 --
94777 
94778 ---------------------------------------
94779 --
94780 -- PRIVATE FUNCTION
94781 --         AcctLineType_173
94782 --
94783 ---------------------------------------
94784 PROCEDURE AcctLineType_173 (
94785   p_application_id        IN NUMBER
94786  ,p_event_id              IN NUMBER
94787  ,p_calculate_acctd_flag  IN VARCHAR2
94788  ,p_calculate_g_l_flag    IN VARCHAR2
94789  ,p_actual_flag           IN OUT VARCHAR2
94790  ,p_balance_type_code     OUT VARCHAR2
94791  ,p_gain_or_loss_ref      OUT VARCHAR2
94792  
94793 --Cost Management Default Account
94794  , p_source_4            IN NUMBER
94795 --DISTRIBUTION_IDENTIFIER
94796  , p_source_11            IN NUMBER
94797 --Distribution Type
94798  , p_source_12            IN VARCHAR2
94799  , p_source_12_meaning    IN VARCHAR2
94800 --Entered Currency Code
94801  , p_source_15            IN VARCHAR2
94802 --Entered Amount
94803  , p_source_18            IN NUMBER
94804 --Currency Conversion Date
94805  , p_source_19            IN DATE
94806 --Currency Conversion Rate
94807  , p_source_20            IN NUMBER
94808 --Currency Conversion Type
94809  , p_source_21            IN VARCHAR2
94810 --Accounted Amount
94811  , p_source_22            IN NUMBER
94812 --Accounting Line Type
94813  , p_source_24            IN NUMBER
94814 )
94815 IS
94816 
94817 l_component_type              VARCHAR2(80);
94818 l_component_code              VARCHAR2(30);
94819 l_component_type_code         VARCHAR2(1);
94820 l_component_appl_id           INTEGER;
94821 l_amb_context_code            VARCHAR2(30);
94822 l_entity_code                 VARCHAR2(30);
94823 l_event_class_code            VARCHAR2(30);
94824 l_ae_header_id                NUMBER;
94825 l_event_type_code             VARCHAR2(30);
94826 l_line_definition_code        VARCHAR2(30);
94827 l_line_definition_owner_code  VARCHAR2(1);
94828 --
94829 -- adr variables
94830 l_segment                     VARCHAR2(30);
94831 l_ccid                        NUMBER;
94832 l_adr_transaction_coa_id      NUMBER;
94833 l_adr_accounting_coa_id       NUMBER;
94834 l_adr_flexfield_segment_code  VARCHAR2(30);
94835 l_adr_flex_value_set_id       NUMBER;
94836 l_adr_value_type_code         VARCHAR2(30);
94837 l_adr_value_combination_id    NUMBER;
94838 l_adr_value_segment_code      VARCHAR2(30);
94839 
94840 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
94841 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
94842 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
94843 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
94844 
94845 -- 4262811 Variables ------------------------------------------------------------------------------------------
94846 l_entered_amt_idx             NUMBER;
94847 l_accted_amt_idx              NUMBER;
94848 l_acc_rev_flag                VARCHAR2(1);
94849 l_accrual_line_num            NUMBER;
94850 l_tmp_amt                     NUMBER;
94851 l_acc_rev_natural_side_code   VARCHAR2(1);
94852 
94853 l_num_entries                 NUMBER;
94854 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
94855 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
94856 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
94857 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
94858 l_recog_line_1                NUMBER;
94859 l_recog_line_2                NUMBER;
94860 
94861 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
94862 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
94863 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
94864 
94865 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
94866 
94867 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
94868 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
94869 
94870 ---------------------------------------------------------------------------------------------------------------
94871 
94872 
94873 --
94874 -- bulk performance
94875 --
94876 l_balance_type_code           VARCHAR2(1);
94877 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
94878 l_log_module                  VARCHAR2(240);
94879 
94880 --
94881 -- Upgrade strategy
94882 --
94883 l_actual_upg_option           VARCHAR2(1);
94884 l_enc_upg_option           VARCHAR2(1);
94885 
94886 --
94887 BEGIN
94888 --
94889 IF g_log_enabled THEN
94890       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_173';
94891 END IF;
94892 --
94893 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
94894 
94895       trace
94896          (p_msg      => 'BEGIN of AcctLineType_173'
94897          ,p_level    => C_LEVEL_PROCEDURE
94898          ,p_module   => l_log_module);
94899 
94900 END IF;
94901 --
94902 l_component_type             := 'AMB_JLT';
94903 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
94904 l_component_type_code        := 'S';
94905 l_component_appl_id          :=  707;
94906 l_amb_context_code           := 'DEFAULT';
94907 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
94908 l_event_class_code           := 'USER_DEFINE';
94909 l_event_type_code            := 'UDIR_INTERORG_RCPT_NO_TP';
94910 l_line_definition_owner_code := 'S';
94911 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_NO_TP';
94912 --
94913 l_balance_type_code          := 'A';
94914 l_segment                     := NULL;
94915 l_ccid                        := NULL;
94916 l_adr_transaction_coa_id      := NULL;
94917 l_adr_accounting_coa_id       := NULL;
94918 l_adr_flexfield_segment_code  := NULL;
94919 l_adr_flex_value_set_id       := NULL;
94920 l_adr_value_type_code         := NULL;
94921 l_adr_value_combination_id    := NULL;
94922 l_adr_value_segment_code      := NULL;
94923 
94924 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
94925 l_bflow_class_code           := '';    -- 4219869 Business Flow
94926 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
94927 l_budgetary_control_flag     := 'N';
94928 
94929 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
94930 l_bflow_applied_to_amt       := NULL; -- 5132302
94931 l_entered_amt_idx            := NULL;          -- 4262811
94932 l_accted_amt_idx             := NULL;          -- 4262811
94933 l_acc_rev_flag               := NULL;          -- 4262811
94934 l_accrual_line_num           := NULL;          -- 4262811
94935 l_tmp_amt                    := NULL;          -- 4262811
94936 --
94937  
94938 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
94939     l_balance_type_code <> 'B' THEN
94940 IF NVL(p_source_24,9E125) =  3
94941  THEN 
94942 
94943    --
94944    XLA_AE_LINES_PKG.SetNewLine;
94945 
94946    p_balance_type_code          := l_balance_type_code;
94947    -- set the flag so later we will know whether the gain loss line needs to be created
94948    
94949    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
94950      p_actual_flag :='A';
94951    END IF;
94952 
94953    --
94954    -- bulk performance
94955    --
94956    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
94957                                       p_header_num   => 0); -- 4262811
94958    --
94959    -- set accounting line options
94960    --
94961    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
94962            p_natural_side_code          => 'D'
94963          , p_gain_or_loss_flag          => 'N'
94964          , p_gl_transfer_mode_code      => 'S'
94965          , p_acct_entry_type_code       => 'A'
94966          , p_switch_side_flag           => 'Y'
94967          , p_merge_duplicate_code       => 'N'
94968          );
94969    --
94970    l_acc_rev_natural_side_code := 'C';  -- 4262811
94971    -- 
94972    --
94973    -- set accounting line type info
94974    --
94975    xla_ae_lines_pkg.SetAcctLineType
94976       (p_component_type             => l_component_type
94977       ,p_event_type_code            => l_event_type_code
94978       ,p_line_definition_owner_code => l_line_definition_owner_code
94979       ,p_line_definition_code       => l_line_definition_code
94980       ,p_accounting_line_code       => l_component_code
94981       ,p_accounting_line_type_code  => l_component_type_code
94982       ,p_accounting_line_appl_id    => l_component_appl_id
94983       ,p_amb_context_code           => l_amb_context_code
94984       ,p_entity_code                => l_entity_code
94985       ,p_event_class_code           => l_event_class_code);
94986    --
94987    -- set accounting class
94988    --
94989    xla_ae_lines_pkg.SetAcctClass(
94990            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
94991          , p_ae_header_id           => l_ae_header_id
94992          );
94993 
94994    --
94995    -- set rounding class
94996    --
94997    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
94998                       'MATERIAL_OVERHEAD_ABSORPTION';
94999 
95000    --
95001    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
95002    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
95003    --
95004    -- bulk performance
95005    --
95006    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
95007 
95008    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
95009       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
95010 
95011    -- 4955764
95012    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
95013       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
95014 
95015    -- 4458381 Public Sector Enh
95016    
95017    --
95018    -- set accounting attributes for the line type
95019    --
95020    l_entered_amt_idx := 3;
95021    l_accted_amt_idx  := 8;
95022    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
95023    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
95024    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
95025    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
95026    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
95027    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
95028    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
95029    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
95030    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
95031    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
95032    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
95033    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
95034    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
95035    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
95036    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
95037    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
95038    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
95039 
95040    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
95041    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
95042 
95043    ---------------------------------------------------------------------------------------------------------------
95044    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
95045    ---------------------------------------------------------------------------------------------------------------
95046    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
95047 
95048    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
95049    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
95050 
95051    IF xla_accounting_cache_pkg.GetValueChar
95052          (p_source_code         => 'LEDGER_CATEGORY_CODE'
95053          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
95054    AND l_bflow_method_code = 'PRIOR_ENTRY'
95055 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
95056    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
95057          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
95058        )
95059    THEN
95060          xla_ae_lines_pkg.BflowUpgEntry
95061            (p_business_method_code    => l_bflow_method_code
95062            ,p_business_class_code     => l_bflow_class_code
95063            ,p_balance_type            => l_balance_type_code);
95064    ELSE
95065       NULL;
95066 -- No business flow processing for business flow method of NONE.
95067    END IF;
95068 
95069    --
95070    -- call analytical criteria
95071    --
95072    
95073    --
95074    -- call description
95075    --
95076    -- No description or it is inherited.
95077    --
95078    -- call ADRs
95079    -- Bug 4922099
95080    --
95081    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
95082         (NVL(l_actual_upg_option, 'N') = 'O') OR
95083         (NVL(l_enc_upg_option, 'N') = 'O')
95084       )
95085    THEN
95086    NULL;
95087    --
95088    --
95089    
95090   l_ccid := AcctDerRule_4(
95091            p_application_id           => p_application_id
95092          , p_ae_header_id             => l_ae_header_id 
95093 , p_source_4 => p_source_4
95094          , x_transaction_coa_id       => l_adr_transaction_coa_id
95095          , x_accounting_coa_id        => l_adr_accounting_coa_id
95096          , x_value_type_code          => l_adr_value_type_code
95097          , p_side                     => 'NA'
95098    );
95099 
95100    xla_ae_lines_pkg.set_ccid(
95101     p_code_combination_id          => l_ccid
95102   , p_value_type_code              => l_adr_value_type_code
95103   , p_transaction_coa_id           => l_adr_transaction_coa_id
95104   , p_accounting_coa_id            => l_adr_accounting_coa_id
95105   , p_adr_code                     => 'CST_DEFAULT'
95106   , p_adr_type_code                => 'S'
95107   , p_component_type               => l_component_type
95108   , p_component_code               => l_component_code
95109   , p_component_type_code          => l_component_type_code
95110   , p_component_appl_id            => l_component_appl_id
95111   , p_amb_context_code             => l_amb_context_code
95112   , p_side                         => 'NA'
95113   );
95114 
95115 
95116    --
95117    --
95118    END IF;
95119    --
95120    -- Bug 4922099
95121    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
95122           (NVL(l_enc_upg_option, 'N') = 'O')
95123         ) AND
95124         (l_bflow_method_code = 'PRIOR_ENTRY')
95125       )
95126    THEN
95127       IF
95128       --
95129       1 = 2
95130       --
95131       THEN
95132       xla_accounting_err_pkg.build_message
95133                                     (p_appli_s_name            => 'XLA'
95134                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
95135                                     ,p_token_1                 => 'LINE_NUMBER'
95136                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
95137                                     ,p_token_2                 => 'LINE_TYPE_NAME'
95138                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
95139                                                                              l_component_type
95140                                                                             ,l_component_code
95141                                                                             ,l_component_type_code
95142                                                                             ,l_component_appl_id
95143                                                                             ,l_amb_context_code
95144                                                                             ,l_entity_code
95145                                                                             ,l_event_class_code
95146                                                                            )
95147                                     ,p_token_3                 => 'OWNER'
95148                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
95149                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
95150                                                                           ,p_lookup_code    => l_component_type_code
95151                                                                          )
95152                                     ,p_token_4                 => 'PRODUCT_NAME'
95153                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
95154                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
95155                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
95156                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
95157                                     ,p_ae_header_id            =>  NULL
95158                                        );
95159 
95160         IF (C_LEVEL_ERROR>= g_log_level) THEN
95161                  trace
95162                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
95163                       ,p_level    => C_LEVEL_ERROR
95164                       ,p_module   => l_log_module);
95165         END IF;
95166       END IF;
95167    END IF;
95168    --
95169    --
95170    ------------------------------------------------------------------------------------------------
95171    -- 4219869 Business Flow
95172    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
95173    -- Prior Entry.  Currently, the following code is always generated.
95174    ------------------------------------------------------------------------------------------------
95175    XLA_AE_LINES_PKG.ValidateCurrentLine;
95176 
95177    ------------------------------------------------------------------------------------
95178    -- 4219869 Business Flow
95179    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
95180    ------------------------------------------------------------------------------------
95181    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
95182 
95183    ----------------------------------------------------------------------------------
95184    -- 4219869 Business Flow
95185    -- Update journal entry status -- Need to generate this within IF <condition>
95186    ----------------------------------------------------------------------------------
95187    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
95188          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
95189          ,p_balance_type_code => l_balance_type_code
95190          );
95191 
95192    -------------------------------------------------------------------------------------------
95193    -- 4262811 - Generate the Accrual Reversal lines
95194    -------------------------------------------------------------------------------------------
95195    BEGIN
95196       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
95197                               (g_array_event(p_event_id).array_value_num('header_index'));
95198       IF l_acc_rev_flag IS NULL THEN
95199          l_acc_rev_flag := 'N';
95200       END IF;
95201    EXCEPTION
95202       WHEN OTHERS THEN
95203          l_acc_rev_flag := 'N';
95204    END;
95205    --
95206    IF (l_acc_rev_flag = 'Y') THEN
95207 
95208        -- 4645092  ------------------------------------------------------------------------------
95209        -- To allow MPA report to determine if it should generate report process
95210        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
95211        ------------------------------------------------------------------------------------------
95212 
95213        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
95214        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
95215    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
95216    -- call ADRs
95217    -- Bug 4922099
95218    --
95219    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
95220         (NVL(l_actual_upg_option, 'N') = 'O') OR
95221         (NVL(l_enc_upg_option, 'N') = 'O')
95222       )
95223    THEN
95224    NULL;
95225    --
95226    --
95227    
95228   l_ccid := AcctDerRule_4(
95229            p_application_id           => p_application_id
95230          , p_ae_header_id             => l_ae_header_id 
95231 , p_source_4 => p_source_4
95232          , x_transaction_coa_id       => l_adr_transaction_coa_id
95233          , x_accounting_coa_id        => l_adr_accounting_coa_id
95234          , x_value_type_code          => l_adr_value_type_code
95235          , p_side                     => 'NA'
95236    );
95237 
95238    xla_ae_lines_pkg.set_ccid(
95239     p_code_combination_id          => l_ccid
95240   , p_value_type_code              => l_adr_value_type_code
95241   , p_transaction_coa_id           => l_adr_transaction_coa_id
95242   , p_accounting_coa_id            => l_adr_accounting_coa_id
95243   , p_adr_code                     => 'CST_DEFAULT'
95244   , p_adr_type_code                => 'S'
95245   , p_component_type               => l_component_type
95246   , p_component_code               => l_component_code
95247   , p_component_type_code          => l_component_type_code
95248   , p_component_appl_id            => l_component_appl_id
95249   , p_amb_context_code             => l_amb_context_code
95250   , p_side                         => 'NA'
95251   );
95252 
95253 
95254    --
95255    --
95256    END IF;
95257 
95258        --
95259        -- Update the line information that should be overwritten
95260        --
95261        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
95262                                          p_header_num   => 1);
95263        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
95264 
95265        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
95266 
95267        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
95268           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
95269        END IF;
95270 
95271       --
95272       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
95273       --
95274       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
95275           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
95276       ELSE
95277           ---------------------------------------------------------------------------------------------------
95278           -- 4262811a Switch Sign
95279           ---------------------------------------------------------------------------------------------------
95280           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
95281           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
95282                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95283           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
95284                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95285           -- 5132302
95286           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
95287                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95288 
95289       END IF;
95290 
95291       -- 4955764
95292       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
95293       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
95294 
95295 
95296       XLA_AE_LINES_PKG.ValidateCurrentLine;
95297       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
95298 
95299       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
95300                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
95301                ,p_balance_type_code => l_balance_type_code);
95302 
95303    END IF;
95304 
95305    -----------------------------------------------------------------------------------------
95306    -- 4262811 Multiperiod Accounting
95307    -----------------------------------------------------------------------------------------
95308      -- No MPA option is assigned.
95309 
95310 
95311 END IF;
95312 END IF;
95313 --
95314 
95315 --
95316 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
95317    trace
95318       (p_msg      => 'END of AcctLineType_173'
95319       ,p_level    => C_LEVEL_PROCEDURE
95320       ,p_module   => l_log_module);
95321 END IF;
95322 --
95323 EXCEPTION
95324   WHEN xla_exceptions_pkg.application_exception THEN
95325       RAISE;
95326   WHEN OTHERS THEN
95327        xla_exceptions_pkg.raise_message
95328            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_173');
95329 END AcctLineType_173;
95330 --
95331 
95332 ---------------------------------------
95333 --
95334 -- PRIVATE FUNCTION
95335 --         AcctLineType_174
95336 --
95337 ---------------------------------------
95338 PROCEDURE AcctLineType_174 (
95339   p_application_id        IN NUMBER
95340  ,p_event_id              IN NUMBER
95341  ,p_calculate_acctd_flag  IN VARCHAR2
95342  ,p_calculate_g_l_flag    IN VARCHAR2
95343  ,p_actual_flag           IN OUT VARCHAR2
95344  ,p_balance_type_code     OUT VARCHAR2
95345  ,p_gain_or_loss_ref      OUT VARCHAR2
95346  
95347 --Cost Management Default Account
95348  , p_source_4            IN NUMBER
95349 --DISTRIBUTION_IDENTIFIER
95350  , p_source_11            IN NUMBER
95351 --Distribution Type
95352  , p_source_12            IN VARCHAR2
95353  , p_source_12_meaning    IN VARCHAR2
95354 --Entered Currency Code
95355  , p_source_15            IN VARCHAR2
95356 --Entered Amount
95357  , p_source_18            IN NUMBER
95358 --Currency Conversion Date
95359  , p_source_19            IN DATE
95360 --Currency Conversion Rate
95361  , p_source_20            IN NUMBER
95362 --Currency Conversion Type
95363  , p_source_21            IN VARCHAR2
95364 --Accounted Amount
95365  , p_source_22            IN NUMBER
95366 --Accounting Line Type
95367  , p_source_24            IN NUMBER
95368 )
95369 IS
95370 
95371 l_component_type              VARCHAR2(80);
95372 l_component_code              VARCHAR2(30);
95373 l_component_type_code         VARCHAR2(1);
95374 l_component_appl_id           INTEGER;
95375 l_amb_context_code            VARCHAR2(30);
95376 l_entity_code                 VARCHAR2(30);
95377 l_event_class_code            VARCHAR2(30);
95378 l_ae_header_id                NUMBER;
95379 l_event_type_code             VARCHAR2(30);
95380 l_line_definition_code        VARCHAR2(30);
95381 l_line_definition_owner_code  VARCHAR2(1);
95382 --
95383 -- adr variables
95384 l_segment                     VARCHAR2(30);
95385 l_ccid                        NUMBER;
95386 l_adr_transaction_coa_id      NUMBER;
95387 l_adr_accounting_coa_id       NUMBER;
95388 l_adr_flexfield_segment_code  VARCHAR2(30);
95389 l_adr_flex_value_set_id       NUMBER;
95390 l_adr_value_type_code         VARCHAR2(30);
95391 l_adr_value_combination_id    NUMBER;
95392 l_adr_value_segment_code      VARCHAR2(30);
95393 
95394 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
95395 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
95396 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
95397 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
95398 
95399 -- 4262811 Variables ------------------------------------------------------------------------------------------
95400 l_entered_amt_idx             NUMBER;
95401 l_accted_amt_idx              NUMBER;
95402 l_acc_rev_flag                VARCHAR2(1);
95403 l_accrual_line_num            NUMBER;
95404 l_tmp_amt                     NUMBER;
95405 l_acc_rev_natural_side_code   VARCHAR2(1);
95406 
95407 l_num_entries                 NUMBER;
95408 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
95409 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
95410 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
95411 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
95412 l_recog_line_1                NUMBER;
95413 l_recog_line_2                NUMBER;
95414 
95415 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
95416 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
95417 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
95418 
95419 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
95420 
95421 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
95422 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
95423 
95424 ---------------------------------------------------------------------------------------------------------------
95425 
95426 
95427 --
95428 -- bulk performance
95429 --
95430 l_balance_type_code           VARCHAR2(1);
95431 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
95432 l_log_module                  VARCHAR2(240);
95433 
95434 --
95435 -- Upgrade strategy
95436 --
95437 l_actual_upg_option           VARCHAR2(1);
95438 l_enc_upg_option           VARCHAR2(1);
95439 
95440 --
95441 BEGIN
95442 --
95443 IF g_log_enabled THEN
95444       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_174';
95445 END IF;
95446 --
95447 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
95448 
95449       trace
95450          (p_msg      => 'BEGIN of AcctLineType_174'
95451          ,p_level    => C_LEVEL_PROCEDURE
95452          ,p_module   => l_log_module);
95453 
95454 END IF;
95455 --
95456 l_component_type             := 'AMB_JLT';
95457 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
95458 l_component_type_code        := 'S';
95459 l_component_appl_id          :=  707;
95460 l_amb_context_code           := 'DEFAULT';
95461 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
95462 l_event_class_code           := 'USER_DEFINE';
95463 l_event_type_code            := 'UDIR_INTERORG_RCPT_TP';
95464 l_line_definition_owner_code := 'S';
95465 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_TP';
95466 --
95467 l_balance_type_code          := 'A';
95468 l_segment                     := NULL;
95469 l_ccid                        := NULL;
95470 l_adr_transaction_coa_id      := NULL;
95471 l_adr_accounting_coa_id       := NULL;
95472 l_adr_flexfield_segment_code  := NULL;
95473 l_adr_flex_value_set_id       := NULL;
95474 l_adr_value_type_code         := NULL;
95475 l_adr_value_combination_id    := NULL;
95476 l_adr_value_segment_code      := NULL;
95477 
95478 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
95479 l_bflow_class_code           := '';    -- 4219869 Business Flow
95480 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
95481 l_budgetary_control_flag     := 'N';
95482 
95483 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
95484 l_bflow_applied_to_amt       := NULL; -- 5132302
95485 l_entered_amt_idx            := NULL;          -- 4262811
95486 l_accted_amt_idx             := NULL;          -- 4262811
95487 l_acc_rev_flag               := NULL;          -- 4262811
95488 l_accrual_line_num           := NULL;          -- 4262811
95489 l_tmp_amt                    := NULL;          -- 4262811
95490 --
95491  
95492 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
95493     l_balance_type_code <> 'B' THEN
95494 IF NVL(p_source_24,9E125) =  3
95495  THEN 
95496 
95497    --
95498    XLA_AE_LINES_PKG.SetNewLine;
95499 
95500    p_balance_type_code          := l_balance_type_code;
95501    -- set the flag so later we will know whether the gain loss line needs to be created
95502    
95503    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
95504      p_actual_flag :='A';
95505    END IF;
95506 
95507    --
95508    -- bulk performance
95509    --
95510    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
95511                                       p_header_num   => 0); -- 4262811
95512    --
95513    -- set accounting line options
95514    --
95515    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
95516            p_natural_side_code          => 'D'
95517          , p_gain_or_loss_flag          => 'N'
95518          , p_gl_transfer_mode_code      => 'S'
95519          , p_acct_entry_type_code       => 'A'
95520          , p_switch_side_flag           => 'Y'
95521          , p_merge_duplicate_code       => 'N'
95522          );
95523    --
95524    l_acc_rev_natural_side_code := 'C';  -- 4262811
95525    -- 
95526    --
95527    -- set accounting line type info
95528    --
95529    xla_ae_lines_pkg.SetAcctLineType
95530       (p_component_type             => l_component_type
95531       ,p_event_type_code            => l_event_type_code
95532       ,p_line_definition_owner_code => l_line_definition_owner_code
95533       ,p_line_definition_code       => l_line_definition_code
95534       ,p_accounting_line_code       => l_component_code
95535       ,p_accounting_line_type_code  => l_component_type_code
95536       ,p_accounting_line_appl_id    => l_component_appl_id
95537       ,p_amb_context_code           => l_amb_context_code
95538       ,p_entity_code                => l_entity_code
95539       ,p_event_class_code           => l_event_class_code);
95540    --
95541    -- set accounting class
95542    --
95543    xla_ae_lines_pkg.SetAcctClass(
95544            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
95545          , p_ae_header_id           => l_ae_header_id
95546          );
95547 
95548    --
95549    -- set rounding class
95550    --
95551    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
95552                       'MATERIAL_OVERHEAD_ABSORPTION';
95553 
95554    --
95555    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
95556    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
95557    --
95558    -- bulk performance
95559    --
95560    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
95561 
95562    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
95563       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
95564 
95565    -- 4955764
95566    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
95567       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
95568 
95569    -- 4458381 Public Sector Enh
95570    
95571    --
95572    -- set accounting attributes for the line type
95573    --
95574    l_entered_amt_idx := 3;
95575    l_accted_amt_idx  := 8;
95576    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
95577    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
95578    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
95579    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
95580    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
95581    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
95582    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
95583    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
95584    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
95585    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
95586    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
95587    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
95588    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
95589    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
95590    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
95591    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
95592    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
95593 
95594    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
95595    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
95596 
95597    ---------------------------------------------------------------------------------------------------------------
95598    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
95599    ---------------------------------------------------------------------------------------------------------------
95600    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
95601 
95602    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
95603    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
95604 
95605    IF xla_accounting_cache_pkg.GetValueChar
95606          (p_source_code         => 'LEDGER_CATEGORY_CODE'
95607          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
95608    AND l_bflow_method_code = 'PRIOR_ENTRY'
95609 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
95610    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
95611          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
95612        )
95613    THEN
95614          xla_ae_lines_pkg.BflowUpgEntry
95615            (p_business_method_code    => l_bflow_method_code
95616            ,p_business_class_code     => l_bflow_class_code
95617            ,p_balance_type            => l_balance_type_code);
95618    ELSE
95619       NULL;
95620 -- No business flow processing for business flow method of NONE.
95621    END IF;
95622 
95623    --
95624    -- call analytical criteria
95625    --
95626    
95627    --
95628    -- call description
95629    --
95630    -- No description or it is inherited.
95631    --
95632    -- call ADRs
95633    -- Bug 4922099
95634    --
95635    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
95636         (NVL(l_actual_upg_option, 'N') = 'O') OR
95637         (NVL(l_enc_upg_option, 'N') = 'O')
95638       )
95639    THEN
95640    NULL;
95641    --
95642    --
95643    
95644   l_ccid := AcctDerRule_4(
95645            p_application_id           => p_application_id
95646          , p_ae_header_id             => l_ae_header_id 
95647 , p_source_4 => p_source_4
95648          , x_transaction_coa_id       => l_adr_transaction_coa_id
95649          , x_accounting_coa_id        => l_adr_accounting_coa_id
95650          , x_value_type_code          => l_adr_value_type_code
95651          , p_side                     => 'NA'
95652    );
95653 
95654    xla_ae_lines_pkg.set_ccid(
95655     p_code_combination_id          => l_ccid
95656   , p_value_type_code              => l_adr_value_type_code
95657   , p_transaction_coa_id           => l_adr_transaction_coa_id
95658   , p_accounting_coa_id            => l_adr_accounting_coa_id
95659   , p_adr_code                     => 'CST_DEFAULT'
95660   , p_adr_type_code                => 'S'
95661   , p_component_type               => l_component_type
95662   , p_component_code               => l_component_code
95663   , p_component_type_code          => l_component_type_code
95664   , p_component_appl_id            => l_component_appl_id
95665   , p_amb_context_code             => l_amb_context_code
95666   , p_side                         => 'NA'
95667   );
95668 
95669 
95670    --
95671    --
95672    END IF;
95673    --
95674    -- Bug 4922099
95675    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
95676           (NVL(l_enc_upg_option, 'N') = 'O')
95677         ) AND
95678         (l_bflow_method_code = 'PRIOR_ENTRY')
95679       )
95680    THEN
95681       IF
95682       --
95683       1 = 2
95684       --
95685       THEN
95686       xla_accounting_err_pkg.build_message
95687                                     (p_appli_s_name            => 'XLA'
95688                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
95689                                     ,p_token_1                 => 'LINE_NUMBER'
95690                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
95691                                     ,p_token_2                 => 'LINE_TYPE_NAME'
95692                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
95693                                                                              l_component_type
95694                                                                             ,l_component_code
95695                                                                             ,l_component_type_code
95696                                                                             ,l_component_appl_id
95697                                                                             ,l_amb_context_code
95698                                                                             ,l_entity_code
95699                                                                             ,l_event_class_code
95700                                                                            )
95701                                     ,p_token_3                 => 'OWNER'
95702                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
95703                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
95704                                                                           ,p_lookup_code    => l_component_type_code
95705                                                                          )
95706                                     ,p_token_4                 => 'PRODUCT_NAME'
95707                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
95708                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
95709                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
95710                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
95711                                     ,p_ae_header_id            =>  NULL
95712                                        );
95713 
95714         IF (C_LEVEL_ERROR>= g_log_level) THEN
95715                  trace
95716                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
95717                       ,p_level    => C_LEVEL_ERROR
95718                       ,p_module   => l_log_module);
95719         END IF;
95720       END IF;
95721    END IF;
95722    --
95723    --
95724    ------------------------------------------------------------------------------------------------
95725    -- 4219869 Business Flow
95726    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
95727    -- Prior Entry.  Currently, the following code is always generated.
95728    ------------------------------------------------------------------------------------------------
95729    XLA_AE_LINES_PKG.ValidateCurrentLine;
95730 
95731    ------------------------------------------------------------------------------------
95732    -- 4219869 Business Flow
95733    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
95734    ------------------------------------------------------------------------------------
95735    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
95736 
95737    ----------------------------------------------------------------------------------
95738    -- 4219869 Business Flow
95739    -- Update journal entry status -- Need to generate this within IF <condition>
95740    ----------------------------------------------------------------------------------
95741    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
95742          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
95743          ,p_balance_type_code => l_balance_type_code
95744          );
95745 
95746    -------------------------------------------------------------------------------------------
95747    -- 4262811 - Generate the Accrual Reversal lines
95748    -------------------------------------------------------------------------------------------
95749    BEGIN
95750       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
95751                               (g_array_event(p_event_id).array_value_num('header_index'));
95752       IF l_acc_rev_flag IS NULL THEN
95753          l_acc_rev_flag := 'N';
95754       END IF;
95755    EXCEPTION
95756       WHEN OTHERS THEN
95757          l_acc_rev_flag := 'N';
95758    END;
95759    --
95760    IF (l_acc_rev_flag = 'Y') THEN
95761 
95762        -- 4645092  ------------------------------------------------------------------------------
95763        -- To allow MPA report to determine if it should generate report process
95764        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
95765        ------------------------------------------------------------------------------------------
95766 
95767        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
95768        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
95769    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
95770    -- call ADRs
95771    -- Bug 4922099
95772    --
95773    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
95774         (NVL(l_actual_upg_option, 'N') = 'O') OR
95775         (NVL(l_enc_upg_option, 'N') = 'O')
95776       )
95777    THEN
95778    NULL;
95779    --
95780    --
95781    
95782   l_ccid := AcctDerRule_4(
95783            p_application_id           => p_application_id
95784          , p_ae_header_id             => l_ae_header_id 
95785 , p_source_4 => p_source_4
95786          , x_transaction_coa_id       => l_adr_transaction_coa_id
95787          , x_accounting_coa_id        => l_adr_accounting_coa_id
95788          , x_value_type_code          => l_adr_value_type_code
95789          , p_side                     => 'NA'
95790    );
95791 
95792    xla_ae_lines_pkg.set_ccid(
95793     p_code_combination_id          => l_ccid
95794   , p_value_type_code              => l_adr_value_type_code
95795   , p_transaction_coa_id           => l_adr_transaction_coa_id
95796   , p_accounting_coa_id            => l_adr_accounting_coa_id
95797   , p_adr_code                     => 'CST_DEFAULT'
95798   , p_adr_type_code                => 'S'
95799   , p_component_type               => l_component_type
95800   , p_component_code               => l_component_code
95801   , p_component_type_code          => l_component_type_code
95802   , p_component_appl_id            => l_component_appl_id
95803   , p_amb_context_code             => l_amb_context_code
95804   , p_side                         => 'NA'
95805   );
95806 
95807 
95808    --
95809    --
95810    END IF;
95811 
95812        --
95813        -- Update the line information that should be overwritten
95814        --
95815        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
95816                                          p_header_num   => 1);
95817        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
95818 
95819        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
95820 
95821        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
95822           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
95823        END IF;
95824 
95825       --
95826       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
95827       --
95828       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
95829           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
95830       ELSE
95831           ---------------------------------------------------------------------------------------------------
95832           -- 4262811a Switch Sign
95833           ---------------------------------------------------------------------------------------------------
95834           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
95835           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
95836                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95837           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
95838                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95839           -- 5132302
95840           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
95841                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95842 
95843       END IF;
95844 
95845       -- 4955764
95846       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
95847       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
95848 
95849 
95850       XLA_AE_LINES_PKG.ValidateCurrentLine;
95851       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
95852 
95853       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
95854                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
95855                ,p_balance_type_code => l_balance_type_code);
95856 
95857    END IF;
95858 
95859    -----------------------------------------------------------------------------------------
95860    -- 4262811 Multiperiod Accounting
95861    -----------------------------------------------------------------------------------------
95862      -- No MPA option is assigned.
95863 
95864 
95865 END IF;
95866 END IF;
95867 --
95868 
95869 --
95870 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
95871    trace
95872       (p_msg      => 'END of AcctLineType_174'
95873       ,p_level    => C_LEVEL_PROCEDURE
95874       ,p_module   => l_log_module);
95875 END IF;
95876 --
95877 EXCEPTION
95878   WHEN xla_exceptions_pkg.application_exception THEN
95879       RAISE;
95880   WHEN OTHERS THEN
95881        xla_exceptions_pkg.raise_message
95882            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_174');
95883 END AcctLineType_174;
95884 --
95885 
95886 ---------------------------------------
95887 --
95888 -- PRIVATE FUNCTION
95889 --         AcctLineType_175
95890 --
95891 ---------------------------------------
95892 PROCEDURE AcctLineType_175 (
95893   p_application_id        IN NUMBER
95894  ,p_event_id              IN NUMBER
95895  ,p_calculate_acctd_flag  IN VARCHAR2
95896  ,p_calculate_g_l_flag    IN VARCHAR2
95897  ,p_actual_flag           IN OUT VARCHAR2
95898  ,p_balance_type_code     OUT VARCHAR2
95899  ,p_gain_or_loss_ref      OUT VARCHAR2
95900  
95901 --Cost Management Default Account
95902  , p_source_4            IN NUMBER
95903 --DISTRIBUTION_IDENTIFIER
95904  , p_source_11            IN NUMBER
95905 --Distribution Type
95906  , p_source_12            IN VARCHAR2
95907  , p_source_12_meaning    IN VARCHAR2
95908 --Entered Currency Code
95909  , p_source_15            IN VARCHAR2
95910 --Entered Amount
95911  , p_source_18            IN NUMBER
95912 --Currency Conversion Date
95913  , p_source_19            IN DATE
95914 --Currency Conversion Rate
95915  , p_source_20            IN NUMBER
95916 --Currency Conversion Type
95917  , p_source_21            IN VARCHAR2
95918 --Accounted Amount
95919  , p_source_22            IN NUMBER
95920 --Accounting Line Type
95921  , p_source_24            IN NUMBER
95922 )
95923 IS
95924 
95925 l_component_type              VARCHAR2(80);
95926 l_component_code              VARCHAR2(30);
95927 l_component_type_code         VARCHAR2(1);
95928 l_component_appl_id           INTEGER;
95929 l_amb_context_code            VARCHAR2(30);
95930 l_entity_code                 VARCHAR2(30);
95931 l_event_class_code            VARCHAR2(30);
95932 l_ae_header_id                NUMBER;
95933 l_event_type_code             VARCHAR2(30);
95934 l_line_definition_code        VARCHAR2(30);
95935 l_line_definition_owner_code  VARCHAR2(1);
95936 --
95937 -- adr variables
95938 l_segment                     VARCHAR2(30);
95939 l_ccid                        NUMBER;
95940 l_adr_transaction_coa_id      NUMBER;
95941 l_adr_accounting_coa_id       NUMBER;
95942 l_adr_flexfield_segment_code  VARCHAR2(30);
95943 l_adr_flex_value_set_id       NUMBER;
95944 l_adr_value_type_code         VARCHAR2(30);
95945 l_adr_value_combination_id    NUMBER;
95946 l_adr_value_segment_code      VARCHAR2(30);
95947 
95948 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
95949 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
95950 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
95951 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
95952 
95953 -- 4262811 Variables ------------------------------------------------------------------------------------------
95954 l_entered_amt_idx             NUMBER;
95955 l_accted_amt_idx              NUMBER;
95956 l_acc_rev_flag                VARCHAR2(1);
95957 l_accrual_line_num            NUMBER;
95958 l_tmp_amt                     NUMBER;
95959 l_acc_rev_natural_side_code   VARCHAR2(1);
95960 
95961 l_num_entries                 NUMBER;
95962 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
95963 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
95964 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
95965 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
95966 l_recog_line_1                NUMBER;
95967 l_recog_line_2                NUMBER;
95968 
95969 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
95970 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
95971 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
95972 
95973 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
95974 
95975 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
95976 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
95977 
95978 ---------------------------------------------------------------------------------------------------------------
95979 
95980 
95981 --
95982 -- bulk performance
95983 --
95984 l_balance_type_code           VARCHAR2(1);
95985 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
95986 l_log_module                  VARCHAR2(240);
95987 
95988 --
95989 -- Upgrade strategy
95990 --
95991 l_actual_upg_option           VARCHAR2(1);
95992 l_enc_upg_option           VARCHAR2(1);
95993 
95994 --
95995 BEGIN
95996 --
95997 IF g_log_enabled THEN
95998       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_175';
95999 END IF;
96000 --
96001 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
96002 
96003       trace
96004          (p_msg      => 'BEGIN of AcctLineType_175'
96005          ,p_level    => C_LEVEL_PROCEDURE
96006          ,p_module   => l_log_module);
96007 
96008 END IF;
96009 --
96010 l_component_type             := 'AMB_JLT';
96011 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
96012 l_component_type_code        := 'S';
96013 l_component_appl_id          :=  707;
96014 l_amb_context_code           := 'DEFAULT';
96015 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
96016 l_event_class_code           := 'USER_DEFINE';
96017 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
96018 l_line_definition_owner_code := 'S';
96019 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
96020 --
96021 l_balance_type_code          := 'A';
96022 l_segment                     := NULL;
96023 l_ccid                        := NULL;
96024 l_adr_transaction_coa_id      := NULL;
96025 l_adr_accounting_coa_id       := NULL;
96026 l_adr_flexfield_segment_code  := NULL;
96027 l_adr_flex_value_set_id       := NULL;
96028 l_adr_value_type_code         := NULL;
96029 l_adr_value_combination_id    := NULL;
96030 l_adr_value_segment_code      := NULL;
96031 
96032 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
96033 l_bflow_class_code           := '';    -- 4219869 Business Flow
96034 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
96035 l_budgetary_control_flag     := 'N';
96036 
96037 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
96038 l_bflow_applied_to_amt       := NULL; -- 5132302
96039 l_entered_amt_idx            := NULL;          -- 4262811
96040 l_accted_amt_idx             := NULL;          -- 4262811
96041 l_acc_rev_flag               := NULL;          -- 4262811
96042 l_accrual_line_num           := NULL;          -- 4262811
96043 l_tmp_amt                    := NULL;          -- 4262811
96044 --
96045  
96046 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
96047     l_balance_type_code <> 'B' THEN
96048 IF NVL(p_source_24,9E125) =  3
96049  THEN 
96050 
96051    --
96052    XLA_AE_LINES_PKG.SetNewLine;
96053 
96054    p_balance_type_code          := l_balance_type_code;
96055    -- set the flag so later we will know whether the gain loss line needs to be created
96056    
96057    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
96058      p_actual_flag :='A';
96059    END IF;
96060 
96061    --
96062    -- bulk performance
96063    --
96064    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
96065                                       p_header_num   => 0); -- 4262811
96066    --
96067    -- set accounting line options
96068    --
96069    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
96070            p_natural_side_code          => 'D'
96071          , p_gain_or_loss_flag          => 'N'
96072          , p_gl_transfer_mode_code      => 'S'
96073          , p_acct_entry_type_code       => 'A'
96074          , p_switch_side_flag           => 'Y'
96075          , p_merge_duplicate_code       => 'N'
96076          );
96077    --
96078    l_acc_rev_natural_side_code := 'C';  -- 4262811
96079    -- 
96080    --
96081    -- set accounting line type info
96082    --
96083    xla_ae_lines_pkg.SetAcctLineType
96084       (p_component_type             => l_component_type
96085       ,p_event_type_code            => l_event_type_code
96086       ,p_line_definition_owner_code => l_line_definition_owner_code
96087       ,p_line_definition_code       => l_line_definition_code
96088       ,p_accounting_line_code       => l_component_code
96089       ,p_accounting_line_type_code  => l_component_type_code
96090       ,p_accounting_line_appl_id    => l_component_appl_id
96091       ,p_amb_context_code           => l_amb_context_code
96092       ,p_entity_code                => l_entity_code
96093       ,p_event_class_code           => l_event_class_code);
96094    --
96095    -- set accounting class
96096    --
96097    xla_ae_lines_pkg.SetAcctClass(
96098            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
96099          , p_ae_header_id           => l_ae_header_id
96100          );
96101 
96102    --
96103    -- set rounding class
96104    --
96105    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
96106                       'MATERIAL_OVERHEAD_ABSORPTION';
96107 
96108    --
96109    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
96110    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
96111    --
96112    -- bulk performance
96113    --
96114    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
96115 
96116    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
96117       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
96118 
96119    -- 4955764
96120    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
96121       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
96122 
96123    -- 4458381 Public Sector Enh
96124    
96125    --
96126    -- set accounting attributes for the line type
96127    --
96128    l_entered_amt_idx := 3;
96129    l_accted_amt_idx  := 8;
96130    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
96131    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
96132    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
96133    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
96134    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
96135    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
96136    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
96137    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
96138    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
96139    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
96140    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
96141    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
96142    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
96143    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
96144    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
96145    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
96146    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
96147 
96148    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
96149    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
96150 
96151    ---------------------------------------------------------------------------------------------------------------
96152    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
96153    ---------------------------------------------------------------------------------------------------------------
96154    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
96155 
96156    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
96157    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
96158 
96159    IF xla_accounting_cache_pkg.GetValueChar
96160          (p_source_code         => 'LEDGER_CATEGORY_CODE'
96161          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
96162    AND l_bflow_method_code = 'PRIOR_ENTRY'
96163 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
96164    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
96165          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
96166        )
96167    THEN
96168          xla_ae_lines_pkg.BflowUpgEntry
96169            (p_business_method_code    => l_bflow_method_code
96170            ,p_business_class_code     => l_bflow_class_code
96171            ,p_balance_type            => l_balance_type_code);
96172    ELSE
96173       NULL;
96174 -- No business flow processing for business flow method of NONE.
96175    END IF;
96176 
96177    --
96178    -- call analytical criteria
96179    --
96180    
96181    --
96182    -- call description
96183    --
96184    -- No description or it is inherited.
96185    --
96186    -- call ADRs
96187    -- Bug 4922099
96188    --
96189    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
96190         (NVL(l_actual_upg_option, 'N') = 'O') OR
96191         (NVL(l_enc_upg_option, 'N') = 'O')
96192       )
96193    THEN
96194    NULL;
96195    --
96196    --
96197    
96198   l_ccid := AcctDerRule_4(
96199            p_application_id           => p_application_id
96200          , p_ae_header_id             => l_ae_header_id 
96201 , p_source_4 => p_source_4
96202          , x_transaction_coa_id       => l_adr_transaction_coa_id
96203          , x_accounting_coa_id        => l_adr_accounting_coa_id
96204          , x_value_type_code          => l_adr_value_type_code
96205          , p_side                     => 'NA'
96206    );
96207 
96208    xla_ae_lines_pkg.set_ccid(
96209     p_code_combination_id          => l_ccid
96210   , p_value_type_code              => l_adr_value_type_code
96211   , p_transaction_coa_id           => l_adr_transaction_coa_id
96212   , p_accounting_coa_id            => l_adr_accounting_coa_id
96213   , p_adr_code                     => 'CST_DEFAULT'
96214   , p_adr_type_code                => 'S'
96215   , p_component_type               => l_component_type
96216   , p_component_code               => l_component_code
96217   , p_component_type_code          => l_component_type_code
96218   , p_component_appl_id            => l_component_appl_id
96219   , p_amb_context_code             => l_amb_context_code
96220   , p_side                         => 'NA'
96221   );
96222 
96223 
96224    --
96225    --
96226    END IF;
96227    --
96228    -- Bug 4922099
96229    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
96230           (NVL(l_enc_upg_option, 'N') = 'O')
96231         ) AND
96232         (l_bflow_method_code = 'PRIOR_ENTRY')
96233       )
96234    THEN
96235       IF
96236       --
96237       1 = 2
96238       --
96239       THEN
96240       xla_accounting_err_pkg.build_message
96241                                     (p_appli_s_name            => 'XLA'
96242                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
96243                                     ,p_token_1                 => 'LINE_NUMBER'
96244                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
96245                                     ,p_token_2                 => 'LINE_TYPE_NAME'
96246                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
96247                                                                              l_component_type
96248                                                                             ,l_component_code
96249                                                                             ,l_component_type_code
96250                                                                             ,l_component_appl_id
96251                                                                             ,l_amb_context_code
96252                                                                             ,l_entity_code
96253                                                                             ,l_event_class_code
96254                                                                            )
96255                                     ,p_token_3                 => 'OWNER'
96256                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
96257                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
96258                                                                           ,p_lookup_code    => l_component_type_code
96259                                                                          )
96260                                     ,p_token_4                 => 'PRODUCT_NAME'
96261                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
96262                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
96263                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
96264                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
96265                                     ,p_ae_header_id            =>  NULL
96266                                        );
96267 
96268         IF (C_LEVEL_ERROR>= g_log_level) THEN
96269                  trace
96270                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
96271                       ,p_level    => C_LEVEL_ERROR
96272                       ,p_module   => l_log_module);
96273         END IF;
96274       END IF;
96275    END IF;
96276    --
96277    --
96278    ------------------------------------------------------------------------------------------------
96279    -- 4219869 Business Flow
96280    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
96281    -- Prior Entry.  Currently, the following code is always generated.
96282    ------------------------------------------------------------------------------------------------
96283    XLA_AE_LINES_PKG.ValidateCurrentLine;
96284 
96285    ------------------------------------------------------------------------------------
96286    -- 4219869 Business Flow
96287    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
96288    ------------------------------------------------------------------------------------
96289    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
96290 
96291    ----------------------------------------------------------------------------------
96292    -- 4219869 Business Flow
96293    -- Update journal entry status -- Need to generate this within IF <condition>
96294    ----------------------------------------------------------------------------------
96295    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
96296          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
96297          ,p_balance_type_code => l_balance_type_code
96298          );
96299 
96300    -------------------------------------------------------------------------------------------
96301    -- 4262811 - Generate the Accrual Reversal lines
96302    -------------------------------------------------------------------------------------------
96303    BEGIN
96304       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
96305                               (g_array_event(p_event_id).array_value_num('header_index'));
96306       IF l_acc_rev_flag IS NULL THEN
96307          l_acc_rev_flag := 'N';
96308       END IF;
96309    EXCEPTION
96310       WHEN OTHERS THEN
96311          l_acc_rev_flag := 'N';
96312    END;
96313    --
96314    IF (l_acc_rev_flag = 'Y') THEN
96315 
96316        -- 4645092  ------------------------------------------------------------------------------
96317        -- To allow MPA report to determine if it should generate report process
96318        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
96319        ------------------------------------------------------------------------------------------
96320 
96321        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
96322        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
96323    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
96324    -- call ADRs
96325    -- Bug 4922099
96326    --
96327    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
96328         (NVL(l_actual_upg_option, 'N') = 'O') OR
96329         (NVL(l_enc_upg_option, 'N') = 'O')
96330       )
96331    THEN
96332    NULL;
96333    --
96334    --
96335    
96336   l_ccid := AcctDerRule_4(
96337            p_application_id           => p_application_id
96338          , p_ae_header_id             => l_ae_header_id 
96339 , p_source_4 => p_source_4
96340          , x_transaction_coa_id       => l_adr_transaction_coa_id
96341          , x_accounting_coa_id        => l_adr_accounting_coa_id
96342          , x_value_type_code          => l_adr_value_type_code
96343          , p_side                     => 'NA'
96344    );
96345 
96346    xla_ae_lines_pkg.set_ccid(
96347     p_code_combination_id          => l_ccid
96348   , p_value_type_code              => l_adr_value_type_code
96349   , p_transaction_coa_id           => l_adr_transaction_coa_id
96350   , p_accounting_coa_id            => l_adr_accounting_coa_id
96351   , p_adr_code                     => 'CST_DEFAULT'
96352   , p_adr_type_code                => 'S'
96353   , p_component_type               => l_component_type
96354   , p_component_code               => l_component_code
96355   , p_component_type_code          => l_component_type_code
96356   , p_component_appl_id            => l_component_appl_id
96357   , p_amb_context_code             => l_amb_context_code
96358   , p_side                         => 'NA'
96359   );
96360 
96361 
96362    --
96363    --
96364    END IF;
96365 
96366        --
96367        -- Update the line information that should be overwritten
96368        --
96369        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
96370                                          p_header_num   => 1);
96371        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
96372 
96373        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
96374 
96375        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
96376           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
96377        END IF;
96378 
96379       --
96380       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
96381       --
96382       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
96383           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
96384       ELSE
96385           ---------------------------------------------------------------------------------------------------
96386           -- 4262811a Switch Sign
96387           ---------------------------------------------------------------------------------------------------
96388           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
96389           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
96390                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96391           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
96392                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96393           -- 5132302
96394           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
96395                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96396 
96397       END IF;
96398 
96399       -- 4955764
96400       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
96401       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
96402 
96403 
96404       XLA_AE_LINES_PKG.ValidateCurrentLine;
96405       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
96406 
96407       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
96408                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
96409                ,p_balance_type_code => l_balance_type_code);
96410 
96411    END IF;
96412 
96413    -----------------------------------------------------------------------------------------
96414    -- 4262811 Multiperiod Accounting
96415    -----------------------------------------------------------------------------------------
96416      -- No MPA option is assigned.
96417 
96418 
96419 END IF;
96420 END IF;
96421 --
96422 
96423 --
96424 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
96425    trace
96426       (p_msg      => 'END of AcctLineType_175'
96427       ,p_level    => C_LEVEL_PROCEDURE
96428       ,p_module   => l_log_module);
96429 END IF;
96430 --
96431 EXCEPTION
96432   WHEN xla_exceptions_pkg.application_exception THEN
96433       RAISE;
96434   WHEN OTHERS THEN
96435        xla_exceptions_pkg.raise_message
96436            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_175');
96437 END AcctLineType_175;
96438 --
96439 
96440 ---------------------------------------
96441 --
96442 -- PRIVATE FUNCTION
96443 --         AcctLineType_176
96444 --
96445 ---------------------------------------
96446 PROCEDURE AcctLineType_176 (
96447   p_application_id        IN NUMBER
96448  ,p_event_id              IN NUMBER
96449  ,p_calculate_acctd_flag  IN VARCHAR2
96450  ,p_calculate_g_l_flag    IN VARCHAR2
96451  ,p_actual_flag           IN OUT VARCHAR2
96452  ,p_balance_type_code     OUT VARCHAR2
96453  ,p_gain_or_loss_ref      OUT VARCHAR2
96454  
96455 --Cost Management Default Account
96456  , p_source_4            IN NUMBER
96457 --DISTRIBUTION_IDENTIFIER
96458  , p_source_11            IN NUMBER
96459 --Distribution Type
96460  , p_source_12            IN VARCHAR2
96461  , p_source_12_meaning    IN VARCHAR2
96462 --Entered Currency Code
96463  , p_source_15            IN VARCHAR2
96464 --Entered Amount
96465  , p_source_18            IN NUMBER
96466 --Currency Conversion Date
96467  , p_source_19            IN DATE
96468 --Currency Conversion Rate
96469  , p_source_20            IN NUMBER
96470 --Currency Conversion Type
96471  , p_source_21            IN VARCHAR2
96472 --Accounted Amount
96473  , p_source_22            IN NUMBER
96474 --Accounting Line Type
96475  , p_source_24            IN NUMBER
96476 )
96477 IS
96478 
96479 l_component_type              VARCHAR2(80);
96480 l_component_code              VARCHAR2(30);
96481 l_component_type_code         VARCHAR2(1);
96482 l_component_appl_id           INTEGER;
96483 l_amb_context_code            VARCHAR2(30);
96484 l_entity_code                 VARCHAR2(30);
96485 l_event_class_code            VARCHAR2(30);
96486 l_ae_header_id                NUMBER;
96487 l_event_type_code             VARCHAR2(30);
96488 l_line_definition_code        VARCHAR2(30);
96489 l_line_definition_owner_code  VARCHAR2(1);
96490 --
96491 -- adr variables
96492 l_segment                     VARCHAR2(30);
96493 l_ccid                        NUMBER;
96494 l_adr_transaction_coa_id      NUMBER;
96495 l_adr_accounting_coa_id       NUMBER;
96496 l_adr_flexfield_segment_code  VARCHAR2(30);
96497 l_adr_flex_value_set_id       NUMBER;
96498 l_adr_value_type_code         VARCHAR2(30);
96499 l_adr_value_combination_id    NUMBER;
96500 l_adr_value_segment_code      VARCHAR2(30);
96501 
96502 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
96503 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
96504 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
96505 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
96506 
96507 -- 4262811 Variables ------------------------------------------------------------------------------------------
96508 l_entered_amt_idx             NUMBER;
96509 l_accted_amt_idx              NUMBER;
96510 l_acc_rev_flag                VARCHAR2(1);
96511 l_accrual_line_num            NUMBER;
96512 l_tmp_amt                     NUMBER;
96513 l_acc_rev_natural_side_code   VARCHAR2(1);
96514 
96515 l_num_entries                 NUMBER;
96516 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
96517 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
96518 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
96519 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
96520 l_recog_line_1                NUMBER;
96521 l_recog_line_2                NUMBER;
96522 
96523 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
96524 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
96525 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
96526 
96527 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
96528 
96529 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
96530 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
96531 
96532 ---------------------------------------------------------------------------------------------------------------
96533 
96534 
96535 --
96536 -- bulk performance
96537 --
96538 l_balance_type_code           VARCHAR2(1);
96539 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
96540 l_log_module                  VARCHAR2(240);
96541 
96542 --
96543 -- Upgrade strategy
96544 --
96545 l_actual_upg_option           VARCHAR2(1);
96546 l_enc_upg_option           VARCHAR2(1);
96547 
96548 --
96549 BEGIN
96550 --
96551 IF g_log_enabled THEN
96552       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_176';
96553 END IF;
96554 --
96555 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
96556 
96557       trace
96558          (p_msg      => 'BEGIN of AcctLineType_176'
96559          ,p_level    => C_LEVEL_PROCEDURE
96560          ,p_module   => l_log_module);
96561 
96562 END IF;
96563 --
96564 l_component_type             := 'AMB_JLT';
96565 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
96566 l_component_type_code        := 'S';
96567 l_component_appl_id          :=  707;
96568 l_amb_context_code           := 'DEFAULT';
96569 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
96570 l_event_class_code           := 'USER_DEFINE';
96571 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
96572 l_line_definition_owner_code := 'S';
96573 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_TP';
96574 --
96575 l_balance_type_code          := 'A';
96576 l_segment                     := NULL;
96577 l_ccid                        := NULL;
96578 l_adr_transaction_coa_id      := NULL;
96579 l_adr_accounting_coa_id       := NULL;
96580 l_adr_flexfield_segment_code  := NULL;
96581 l_adr_flex_value_set_id       := NULL;
96582 l_adr_value_type_code         := NULL;
96583 l_adr_value_combination_id    := NULL;
96584 l_adr_value_segment_code      := NULL;
96585 
96586 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
96587 l_bflow_class_code           := '';    -- 4219869 Business Flow
96588 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
96589 l_budgetary_control_flag     := 'N';
96590 
96591 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
96592 l_bflow_applied_to_amt       := NULL; -- 5132302
96593 l_entered_amt_idx            := NULL;          -- 4262811
96594 l_accted_amt_idx             := NULL;          -- 4262811
96595 l_acc_rev_flag               := NULL;          -- 4262811
96596 l_accrual_line_num           := NULL;          -- 4262811
96597 l_tmp_amt                    := NULL;          -- 4262811
96598 --
96599  
96600 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
96601     l_balance_type_code <> 'B' THEN
96602 IF NVL(p_source_24,9E125) =  3
96603  THEN 
96604 
96605    --
96606    XLA_AE_LINES_PKG.SetNewLine;
96607 
96608    p_balance_type_code          := l_balance_type_code;
96609    -- set the flag so later we will know whether the gain loss line needs to be created
96610    
96611    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
96612      p_actual_flag :='A';
96613    END IF;
96614 
96615    --
96616    -- bulk performance
96617    --
96618    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
96619                                       p_header_num   => 0); -- 4262811
96620    --
96621    -- set accounting line options
96622    --
96623    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
96624            p_natural_side_code          => 'D'
96625          , p_gain_or_loss_flag          => 'N'
96626          , p_gl_transfer_mode_code      => 'S'
96627          , p_acct_entry_type_code       => 'A'
96628          , p_switch_side_flag           => 'Y'
96629          , p_merge_duplicate_code       => 'N'
96630          );
96631    --
96632    l_acc_rev_natural_side_code := 'C';  -- 4262811
96633    -- 
96634    --
96635    -- set accounting line type info
96636    --
96637    xla_ae_lines_pkg.SetAcctLineType
96638       (p_component_type             => l_component_type
96639       ,p_event_type_code            => l_event_type_code
96640       ,p_line_definition_owner_code => l_line_definition_owner_code
96641       ,p_line_definition_code       => l_line_definition_code
96642       ,p_accounting_line_code       => l_component_code
96643       ,p_accounting_line_type_code  => l_component_type_code
96644       ,p_accounting_line_appl_id    => l_component_appl_id
96645       ,p_amb_context_code           => l_amb_context_code
96646       ,p_entity_code                => l_entity_code
96647       ,p_event_class_code           => l_event_class_code);
96648    --
96649    -- set accounting class
96650    --
96651    xla_ae_lines_pkg.SetAcctClass(
96652            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
96653          , p_ae_header_id           => l_ae_header_id
96654          );
96655 
96656    --
96657    -- set rounding class
96658    --
96659    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
96660                       'MATERIAL_OVERHEAD_ABSORPTION';
96661 
96662    --
96663    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
96664    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
96665    --
96666    -- bulk performance
96667    --
96668    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
96669 
96670    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
96671       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
96672 
96673    -- 4955764
96674    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
96675       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
96676 
96677    -- 4458381 Public Sector Enh
96678    
96679    --
96680    -- set accounting attributes for the line type
96681    --
96682    l_entered_amt_idx := 3;
96683    l_accted_amt_idx  := 8;
96684    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
96685    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
96686    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
96687    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
96688    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
96689    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
96690    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
96691    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
96692    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
96693    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
96694    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
96695    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
96696    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
96697    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
96698    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
96699    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
96700    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
96701 
96702    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
96703    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
96704 
96705    ---------------------------------------------------------------------------------------------------------------
96706    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
96707    ---------------------------------------------------------------------------------------------------------------
96708    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
96709 
96710    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
96711    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
96712 
96713    IF xla_accounting_cache_pkg.GetValueChar
96714          (p_source_code         => 'LEDGER_CATEGORY_CODE'
96715          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
96716    AND l_bflow_method_code = 'PRIOR_ENTRY'
96717 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
96718    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
96719          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
96720        )
96721    THEN
96722          xla_ae_lines_pkg.BflowUpgEntry
96723            (p_business_method_code    => l_bflow_method_code
96724            ,p_business_class_code     => l_bflow_class_code
96725            ,p_balance_type            => l_balance_type_code);
96726    ELSE
96727       NULL;
96728 -- No business flow processing for business flow method of NONE.
96729    END IF;
96730 
96731    --
96732    -- call analytical criteria
96733    --
96734    
96735    --
96736    -- call description
96737    --
96738    -- No description or it is inherited.
96739    --
96740    -- call ADRs
96741    -- Bug 4922099
96742    --
96743    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
96744         (NVL(l_actual_upg_option, 'N') = 'O') OR
96745         (NVL(l_enc_upg_option, 'N') = 'O')
96746       )
96747    THEN
96748    NULL;
96749    --
96750    --
96751    
96752   l_ccid := AcctDerRule_4(
96753            p_application_id           => p_application_id
96754          , p_ae_header_id             => l_ae_header_id 
96755 , p_source_4 => p_source_4
96756          , x_transaction_coa_id       => l_adr_transaction_coa_id
96757          , x_accounting_coa_id        => l_adr_accounting_coa_id
96758          , x_value_type_code          => l_adr_value_type_code
96759          , p_side                     => 'NA'
96760    );
96761 
96762    xla_ae_lines_pkg.set_ccid(
96763     p_code_combination_id          => l_ccid
96764   , p_value_type_code              => l_adr_value_type_code
96765   , p_transaction_coa_id           => l_adr_transaction_coa_id
96766   , p_accounting_coa_id            => l_adr_accounting_coa_id
96767   , p_adr_code                     => 'CST_DEFAULT'
96768   , p_adr_type_code                => 'S'
96769   , p_component_type               => l_component_type
96770   , p_component_code               => l_component_code
96771   , p_component_type_code          => l_component_type_code
96772   , p_component_appl_id            => l_component_appl_id
96773   , p_amb_context_code             => l_amb_context_code
96774   , p_side                         => 'NA'
96775   );
96776 
96777 
96778    --
96779    --
96780    END IF;
96781    --
96782    -- Bug 4922099
96783    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
96784           (NVL(l_enc_upg_option, 'N') = 'O')
96785         ) AND
96786         (l_bflow_method_code = 'PRIOR_ENTRY')
96787       )
96788    THEN
96789       IF
96790       --
96791       1 = 2
96792       --
96793       THEN
96794       xla_accounting_err_pkg.build_message
96795                                     (p_appli_s_name            => 'XLA'
96796                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
96797                                     ,p_token_1                 => 'LINE_NUMBER'
96798                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
96799                                     ,p_token_2                 => 'LINE_TYPE_NAME'
96800                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
96801                                                                              l_component_type
96802                                                                             ,l_component_code
96803                                                                             ,l_component_type_code
96804                                                                             ,l_component_appl_id
96805                                                                             ,l_amb_context_code
96806                                                                             ,l_entity_code
96807                                                                             ,l_event_class_code
96808                                                                            )
96809                                     ,p_token_3                 => 'OWNER'
96810                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
96811                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
96812                                                                           ,p_lookup_code    => l_component_type_code
96813                                                                          )
96814                                     ,p_token_4                 => 'PRODUCT_NAME'
96815                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
96816                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
96817                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
96818                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
96819                                     ,p_ae_header_id            =>  NULL
96820                                        );
96821 
96822         IF (C_LEVEL_ERROR>= g_log_level) THEN
96823                  trace
96824                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
96825                       ,p_level    => C_LEVEL_ERROR
96826                       ,p_module   => l_log_module);
96827         END IF;
96828       END IF;
96829    END IF;
96830    --
96831    --
96832    ------------------------------------------------------------------------------------------------
96833    -- 4219869 Business Flow
96834    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
96835    -- Prior Entry.  Currently, the following code is always generated.
96836    ------------------------------------------------------------------------------------------------
96837    XLA_AE_LINES_PKG.ValidateCurrentLine;
96838 
96839    ------------------------------------------------------------------------------------
96840    -- 4219869 Business Flow
96841    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
96842    ------------------------------------------------------------------------------------
96843    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
96844 
96845    ----------------------------------------------------------------------------------
96846    -- 4219869 Business Flow
96847    -- Update journal entry status -- Need to generate this within IF <condition>
96848    ----------------------------------------------------------------------------------
96849    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
96850          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
96851          ,p_balance_type_code => l_balance_type_code
96852          );
96853 
96854    -------------------------------------------------------------------------------------------
96855    -- 4262811 - Generate the Accrual Reversal lines
96856    -------------------------------------------------------------------------------------------
96857    BEGIN
96858       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
96859                               (g_array_event(p_event_id).array_value_num('header_index'));
96860       IF l_acc_rev_flag IS NULL THEN
96861          l_acc_rev_flag := 'N';
96862       END IF;
96863    EXCEPTION
96864       WHEN OTHERS THEN
96865          l_acc_rev_flag := 'N';
96866    END;
96867    --
96868    IF (l_acc_rev_flag = 'Y') THEN
96869 
96870        -- 4645092  ------------------------------------------------------------------------------
96871        -- To allow MPA report to determine if it should generate report process
96872        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
96873        ------------------------------------------------------------------------------------------
96874 
96875        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
96876        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
96877    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
96878    -- call ADRs
96879    -- Bug 4922099
96880    --
96881    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
96882         (NVL(l_actual_upg_option, 'N') = 'O') OR
96883         (NVL(l_enc_upg_option, 'N') = 'O')
96884       )
96885    THEN
96886    NULL;
96887    --
96888    --
96889    
96890   l_ccid := AcctDerRule_4(
96891            p_application_id           => p_application_id
96892          , p_ae_header_id             => l_ae_header_id 
96893 , p_source_4 => p_source_4
96894          , x_transaction_coa_id       => l_adr_transaction_coa_id
96895          , x_accounting_coa_id        => l_adr_accounting_coa_id
96896          , x_value_type_code          => l_adr_value_type_code
96897          , p_side                     => 'NA'
96898    );
96899 
96900    xla_ae_lines_pkg.set_ccid(
96901     p_code_combination_id          => l_ccid
96902   , p_value_type_code              => l_adr_value_type_code
96903   , p_transaction_coa_id           => l_adr_transaction_coa_id
96904   , p_accounting_coa_id            => l_adr_accounting_coa_id
96905   , p_adr_code                     => 'CST_DEFAULT'
96906   , p_adr_type_code                => 'S'
96907   , p_component_type               => l_component_type
96908   , p_component_code               => l_component_code
96909   , p_component_type_code          => l_component_type_code
96910   , p_component_appl_id            => l_component_appl_id
96911   , p_amb_context_code             => l_amb_context_code
96912   , p_side                         => 'NA'
96913   );
96914 
96915 
96916    --
96917    --
96918    END IF;
96919 
96920        --
96921        -- Update the line information that should be overwritten
96922        --
96923        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
96924                                          p_header_num   => 1);
96925        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
96926 
96927        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
96928 
96929        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
96930           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
96931        END IF;
96932 
96933       --
96934       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
96935       --
96936       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
96937           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
96938       ELSE
96939           ---------------------------------------------------------------------------------------------------
96940           -- 4262811a Switch Sign
96941           ---------------------------------------------------------------------------------------------------
96942           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
96943           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
96944                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96945           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
96946                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96947           -- 5132302
96948           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
96949                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96950 
96951       END IF;
96952 
96953       -- 4955764
96954       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
96955       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
96956 
96957 
96958       XLA_AE_LINES_PKG.ValidateCurrentLine;
96959       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
96960 
96961       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
96962                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
96963                ,p_balance_type_code => l_balance_type_code);
96964 
96965    END IF;
96966 
96967    -----------------------------------------------------------------------------------------
96968    -- 4262811 Multiperiod Accounting
96969    -----------------------------------------------------------------------------------------
96970      -- No MPA option is assigned.
96971 
96972 
96973 END IF;
96974 END IF;
96975 --
96976 
96977 --
96978 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
96979    trace
96980       (p_msg      => 'END of AcctLineType_176'
96981       ,p_level    => C_LEVEL_PROCEDURE
96982       ,p_module   => l_log_module);
96983 END IF;
96984 --
96985 EXCEPTION
96986   WHEN xla_exceptions_pkg.application_exception THEN
96987       RAISE;
96988   WHEN OTHERS THEN
96989        xla_exceptions_pkg.raise_message
96990            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_176');
96991 END AcctLineType_176;
96992 --
96993 
96994 ---------------------------------------
96995 --
96996 -- PRIVATE FUNCTION
96997 --         AcctLineType_177
96998 --
96999 ---------------------------------------
97000 PROCEDURE AcctLineType_177 (
97001   p_application_id        IN NUMBER
97002  ,p_event_id              IN NUMBER
97003  ,p_calculate_acctd_flag  IN VARCHAR2
97004  ,p_calculate_g_l_flag    IN VARCHAR2
97005  ,p_actual_flag           IN OUT VARCHAR2
97006  ,p_balance_type_code     OUT VARCHAR2
97007  ,p_gain_or_loss_ref      OUT VARCHAR2
97008  
97009 --Cost Management Default Account
97010  , p_source_4            IN NUMBER
97011 --Applied to Application ID
97012  , p_source_6            IN NUMBER
97013 --Applied to Distribution Link Type
97014  , p_source_7            IN VARCHAR2
97015 --Applied to Entity Code
97016  , p_source_8            IN VARCHAR2
97017 --DISTRIBUTION_IDENTIFIER
97018  , p_source_11            IN NUMBER
97019 --Distribution Type
97020  , p_source_12            IN VARCHAR2
97021  , p_source_12_meaning    IN VARCHAR2
97022 --Encumbrance Reversal Amount Entered
97023  , p_source_14            IN NUMBER
97024 --Entered Currency Code
97025  , p_source_15            IN VARCHAR2
97026 --Transaction Encumbrance Reversal Amount
97027  , p_source_16            IN NUMBER
97028 --Entered Amount
97029  , p_source_18            IN NUMBER
97030 --Currency Conversion Date
97031  , p_source_19            IN DATE
97032 --Currency Conversion Rate
97033  , p_source_20            IN NUMBER
97034 --Currency Conversion Type
97035  , p_source_21            IN VARCHAR2
97036 --Accounted Amount
97037  , p_source_22            IN NUMBER
97038 --Accounting Line Type
97039  , p_source_24            IN NUMBER
97040 --Costing Encumbrance Upgrade Option
97041  , p_source_27            IN VARCHAR2
97042 --TXN_PO_DISTRIBUTION_ID
97043  , p_source_28            IN NUMBER
97044 --TXN_PO_HEADER_ID
97045  , p_source_29            IN NUMBER
97046 --Requisition Budget Account
97047  , p_source_30            IN NUMBER
97048 --Requisition Encumbrance Type Identifier
97049  , p_source_31            IN NUMBER
97050 )
97051 IS
97052 
97053 l_component_type              VARCHAR2(80);
97054 l_component_code              VARCHAR2(30);
97055 l_component_type_code         VARCHAR2(1);
97056 l_component_appl_id           INTEGER;
97057 l_amb_context_code            VARCHAR2(30);
97058 l_entity_code                 VARCHAR2(30);
97059 l_event_class_code            VARCHAR2(30);
97060 l_ae_header_id                NUMBER;
97061 l_event_type_code             VARCHAR2(30);
97062 l_line_definition_code        VARCHAR2(30);
97063 l_line_definition_owner_code  VARCHAR2(1);
97064 --
97065 -- adr variables
97066 l_segment                     VARCHAR2(30);
97067 l_ccid                        NUMBER;
97068 l_adr_transaction_coa_id      NUMBER;
97069 l_adr_accounting_coa_id       NUMBER;
97070 l_adr_flexfield_segment_code  VARCHAR2(30);
97071 l_adr_flex_value_set_id       NUMBER;
97072 l_adr_value_type_code         VARCHAR2(30);
97073 l_adr_value_combination_id    NUMBER;
97074 l_adr_value_segment_code      VARCHAR2(30);
97075 
97076 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
97077 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
97078 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
97079 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
97080 
97081 -- 4262811 Variables ------------------------------------------------------------------------------------------
97082 l_entered_amt_idx             NUMBER;
97083 l_accted_amt_idx              NUMBER;
97084 l_acc_rev_flag                VARCHAR2(1);
97085 l_accrual_line_num            NUMBER;
97086 l_tmp_amt                     NUMBER;
97087 l_acc_rev_natural_side_code   VARCHAR2(1);
97088 
97089 l_num_entries                 NUMBER;
97090 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
97091 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
97092 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
97093 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
97094 l_recog_line_1                NUMBER;
97095 l_recog_line_2                NUMBER;
97096 
97097 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
97098 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
97099 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
97100 
97101 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
97102 
97103 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
97104 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
97105 
97106 ---------------------------------------------------------------------------------------------------------------
97107 
97108 
97109 --
97110 -- bulk performance
97111 --
97112 l_balance_type_code           VARCHAR2(1);
97113 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
97114 l_log_module                  VARCHAR2(240);
97115 
97116 --
97117 -- Upgrade strategy
97118 --
97119 l_actual_upg_option           VARCHAR2(1);
97120 l_enc_upg_option           VARCHAR2(1);
97121 
97122 --
97123 BEGIN
97124 --
97125 IF g_log_enabled THEN
97126       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_177';
97127 END IF;
97128 --
97129 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97130 
97131       trace
97132          (p_msg      => 'BEGIN of AcctLineType_177'
97133          ,p_level    => C_LEVEL_PROCEDURE
97134          ,p_module   => l_log_module);
97135 
97136 END IF;
97137 --
97138 l_component_type             := 'AMB_JLT';
97139 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
97140 l_component_type_code        := 'S';
97141 l_component_appl_id          :=  707;
97142 l_amb_context_code           := 'DEFAULT';
97143 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
97144 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
97145 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
97146 l_line_definition_owner_code := 'S';
97147 l_line_definition_code       := 'FOB_RCPT_RECIPIENT_RCPT';
97148 --
97149 l_balance_type_code          := 'A';
97150 l_segment                     := NULL;
97151 l_ccid                        := NULL;
97152 l_adr_transaction_coa_id      := NULL;
97153 l_adr_accounting_coa_id       := NULL;
97154 l_adr_flexfield_segment_code  := NULL;
97155 l_adr_flex_value_set_id       := NULL;
97156 l_adr_value_type_code         := NULL;
97157 l_adr_value_combination_id    := NULL;
97158 l_adr_value_segment_code      := NULL;
97159 
97160 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
97161 l_bflow_class_code           := '';    -- 4219869 Business Flow
97162 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
97163 l_budgetary_control_flag     := 'N';
97164 
97165 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
97166 l_bflow_applied_to_amt       := NULL; -- 5132302
97167 l_entered_amt_idx            := NULL;          -- 4262811
97168 l_accted_amt_idx             := NULL;          -- 4262811
97169 l_acc_rev_flag               := NULL;          -- 4262811
97170 l_accrual_line_num           := NULL;          -- 4262811
97171 l_tmp_amt                    := NULL;          -- 4262811
97172 --
97173  
97174 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
97175     l_balance_type_code <> 'B' THEN
97176 IF NVL(p_source_24,9E125) =  3
97177  THEN 
97178 
97179    --
97180    XLA_AE_LINES_PKG.SetNewLine;
97181 
97182    p_balance_type_code          := l_balance_type_code;
97183    -- set the flag so later we will know whether the gain loss line needs to be created
97184    
97185    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
97186      p_actual_flag :='A';
97187    END IF;
97188 
97189    --
97190    -- bulk performance
97191    --
97192    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
97193                                       p_header_num   => 0); -- 4262811
97194    --
97195    -- set accounting line options
97196    --
97197    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
97198            p_natural_side_code          => 'D'
97199          , p_gain_or_loss_flag          => 'N'
97200          , p_gl_transfer_mode_code      => 'S'
97201          , p_acct_entry_type_code       => 'A'
97202          , p_switch_side_flag           => 'Y'
97203          , p_merge_duplicate_code       => 'N'
97204          );
97205    --
97206    l_acc_rev_natural_side_code := 'C';  -- 4262811
97207    -- 
97208    --
97209    -- set accounting line type info
97210    --
97211    xla_ae_lines_pkg.SetAcctLineType
97212       (p_component_type             => l_component_type
97213       ,p_event_type_code            => l_event_type_code
97214       ,p_line_definition_owner_code => l_line_definition_owner_code
97215       ,p_line_definition_code       => l_line_definition_code
97216       ,p_accounting_line_code       => l_component_code
97217       ,p_accounting_line_type_code  => l_component_type_code
97218       ,p_accounting_line_appl_id    => l_component_appl_id
97219       ,p_amb_context_code           => l_amb_context_code
97220       ,p_entity_code                => l_entity_code
97221       ,p_event_class_code           => l_event_class_code);
97222    --
97223    -- set accounting class
97224    --
97225    xla_ae_lines_pkg.SetAcctClass(
97226            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
97227          , p_ae_header_id           => l_ae_header_id
97228          );
97229 
97230    --
97231    -- set rounding class
97232    --
97233    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
97234                       'MATERIAL_OVERHEAD_ABSORPTION';
97235 
97236    --
97237    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
97238    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
97239    --
97240    -- bulk performance
97241    --
97242    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
97243 
97244    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
97245       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
97246 
97247    -- 4955764
97248    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
97249       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
97250 
97251    -- 4458381 Public Sector Enh
97252    
97253    --
97254    -- set accounting attributes for the line type
97255    --
97256    l_entered_amt_idx := 17;
97257    l_accted_amt_idx  := 22;
97258    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
97259    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
97260    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
97261    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
97262    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
97263    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
97264    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
97265    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
97266    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
97267    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
97268    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
97269    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
97270    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
97271    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
97272    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
97273    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
97274    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
97275    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
97276    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
97277    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
97278    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
97279    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
97280    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
97281    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
97282    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
97283    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
97284    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
97285    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
97286    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
97287    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
97288    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
97289    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
97290    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
97291    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
97292    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
97293    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
97294    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
97295    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
97296    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
97297    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
97298    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
97299    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
97300    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
97301    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
97302    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
97303    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
97304    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
97305    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
97306    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
97307 
97308    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
97309    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
97310 
97311    ---------------------------------------------------------------------------------------------------------------
97312    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
97313    ---------------------------------------------------------------------------------------------------------------
97314    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
97315 
97316    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
97317    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
97318 
97319    IF xla_accounting_cache_pkg.GetValueChar
97320          (p_source_code         => 'LEDGER_CATEGORY_CODE'
97321          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
97322    AND l_bflow_method_code = 'PRIOR_ENTRY'
97323 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
97324    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
97325          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
97326        )
97327    THEN
97328          xla_ae_lines_pkg.BflowUpgEntry
97329            (p_business_method_code    => l_bflow_method_code
97330            ,p_business_class_code     => l_bflow_class_code
97331            ,p_balance_type            => l_balance_type_code);
97332    ELSE
97333       NULL;
97334 -- No business flow processing for business flow method of NONE.
97335    END IF;
97336 
97337    --
97338    -- call analytical criteria
97339    --
97340    
97341    --
97342    -- call description
97343    --
97344    -- No description or it is inherited.
97345    --
97346    -- call ADRs
97347    -- Bug 4922099
97348    --
97349    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
97350         (NVL(l_actual_upg_option, 'N') = 'O') OR
97351         (NVL(l_enc_upg_option, 'N') = 'O')
97352       )
97353    THEN
97354    NULL;
97355    --
97356    --
97357    
97358   l_ccid := AcctDerRule_4(
97359            p_application_id           => p_application_id
97360          , p_ae_header_id             => l_ae_header_id 
97361 , p_source_4 => p_source_4
97362          , x_transaction_coa_id       => l_adr_transaction_coa_id
97363          , x_accounting_coa_id        => l_adr_accounting_coa_id
97364          , x_value_type_code          => l_adr_value_type_code
97365          , p_side                     => 'NA'
97366    );
97367 
97368    xla_ae_lines_pkg.set_ccid(
97369     p_code_combination_id          => l_ccid
97370   , p_value_type_code              => l_adr_value_type_code
97371   , p_transaction_coa_id           => l_adr_transaction_coa_id
97372   , p_accounting_coa_id            => l_adr_accounting_coa_id
97373   , p_adr_code                     => 'CST_DEFAULT'
97374   , p_adr_type_code                => 'S'
97375   , p_component_type               => l_component_type
97376   , p_component_code               => l_component_code
97377   , p_component_type_code          => l_component_type_code
97378   , p_component_appl_id            => l_component_appl_id
97379   , p_amb_context_code             => l_amb_context_code
97380   , p_side                         => 'NA'
97381   );
97382 
97383 
97384    --
97385    --
97386    END IF;
97387    --
97388    -- Bug 4922099
97389    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
97390           (NVL(l_enc_upg_option, 'N') = 'O')
97391         ) AND
97392         (l_bflow_method_code = 'PRIOR_ENTRY')
97393       )
97394    THEN
97395       IF
97396       --
97397       1 = 2
97398       --
97399       THEN
97400       xla_accounting_err_pkg.build_message
97401                                     (p_appli_s_name            => 'XLA'
97402                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
97403                                     ,p_token_1                 => 'LINE_NUMBER'
97404                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
97405                                     ,p_token_2                 => 'LINE_TYPE_NAME'
97406                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
97407                                                                              l_component_type
97408                                                                             ,l_component_code
97409                                                                             ,l_component_type_code
97410                                                                             ,l_component_appl_id
97411                                                                             ,l_amb_context_code
97412                                                                             ,l_entity_code
97413                                                                             ,l_event_class_code
97414                                                                            )
97415                                     ,p_token_3                 => 'OWNER'
97416                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
97417                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
97418                                                                           ,p_lookup_code    => l_component_type_code
97419                                                                          )
97420                                     ,p_token_4                 => 'PRODUCT_NAME'
97421                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
97422                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
97423                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
97424                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
97425                                     ,p_ae_header_id            =>  NULL
97426                                        );
97427 
97428         IF (C_LEVEL_ERROR>= g_log_level) THEN
97429                  trace
97430                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
97431                       ,p_level    => C_LEVEL_ERROR
97432                       ,p_module   => l_log_module);
97433         END IF;
97434       END IF;
97435    END IF;
97436    --
97437    --
97438    ------------------------------------------------------------------------------------------------
97439    -- 4219869 Business Flow
97440    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
97441    -- Prior Entry.  Currently, the following code is always generated.
97442    ------------------------------------------------------------------------------------------------
97443    XLA_AE_LINES_PKG.ValidateCurrentLine;
97444 
97445    ------------------------------------------------------------------------------------
97446    -- 4219869 Business Flow
97447    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
97448    ------------------------------------------------------------------------------------
97449    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
97450 
97451    ----------------------------------------------------------------------------------
97452    -- 4219869 Business Flow
97453    -- Update journal entry status -- Need to generate this within IF <condition>
97454    ----------------------------------------------------------------------------------
97455    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
97456          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
97457          ,p_balance_type_code => l_balance_type_code
97458          );
97459 
97460    -------------------------------------------------------------------------------------------
97461    -- 4262811 - Generate the Accrual Reversal lines
97462    -------------------------------------------------------------------------------------------
97463    BEGIN
97464       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
97465                               (g_array_event(p_event_id).array_value_num('header_index'));
97466       IF l_acc_rev_flag IS NULL THEN
97467          l_acc_rev_flag := 'N';
97468       END IF;
97469    EXCEPTION
97470       WHEN OTHERS THEN
97471          l_acc_rev_flag := 'N';
97472    END;
97473    --
97474    IF (l_acc_rev_flag = 'Y') THEN
97475 
97476        -- 4645092  ------------------------------------------------------------------------------
97477        -- To allow MPA report to determine if it should generate report process
97478        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
97479        ------------------------------------------------------------------------------------------
97480 
97481        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
97482        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
97483    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
97484    -- call ADRs
97485    -- Bug 4922099
97486    --
97487    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
97488         (NVL(l_actual_upg_option, 'N') = 'O') OR
97489         (NVL(l_enc_upg_option, 'N') = 'O')
97490       )
97491    THEN
97492    NULL;
97493    --
97494    --
97495    
97496   l_ccid := AcctDerRule_4(
97497            p_application_id           => p_application_id
97498          , p_ae_header_id             => l_ae_header_id 
97499 , p_source_4 => p_source_4
97500          , x_transaction_coa_id       => l_adr_transaction_coa_id
97501          , x_accounting_coa_id        => l_adr_accounting_coa_id
97502          , x_value_type_code          => l_adr_value_type_code
97503          , p_side                     => 'NA'
97504    );
97505 
97506    xla_ae_lines_pkg.set_ccid(
97507     p_code_combination_id          => l_ccid
97508   , p_value_type_code              => l_adr_value_type_code
97509   , p_transaction_coa_id           => l_adr_transaction_coa_id
97510   , p_accounting_coa_id            => l_adr_accounting_coa_id
97511   , p_adr_code                     => 'CST_DEFAULT'
97512   , p_adr_type_code                => 'S'
97513   , p_component_type               => l_component_type
97514   , p_component_code               => l_component_code
97515   , p_component_type_code          => l_component_type_code
97516   , p_component_appl_id            => l_component_appl_id
97517   , p_amb_context_code             => l_amb_context_code
97518   , p_side                         => 'NA'
97519   );
97520 
97521 
97522    --
97523    --
97524    END IF;
97525 
97526        --
97527        -- Update the line information that should be overwritten
97528        --
97529        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
97530                                          p_header_num   => 1);
97531        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
97532 
97533        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
97534 
97535        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
97536           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
97537        END IF;
97538 
97539       --
97540       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
97541       --
97542       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
97543           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
97544       ELSE
97545           ---------------------------------------------------------------------------------------------------
97546           -- 4262811a Switch Sign
97547           ---------------------------------------------------------------------------------------------------
97548           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
97549           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
97550                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97551           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
97552                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97553           -- 5132302
97554           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
97555                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97556 
97557       END IF;
97558 
97559       -- 4955764
97560       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
97561       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
97562 
97563 
97564       XLA_AE_LINES_PKG.ValidateCurrentLine;
97565       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
97566 
97567       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
97568                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
97569                ,p_balance_type_code => l_balance_type_code);
97570 
97571    END IF;
97572 
97573    -----------------------------------------------------------------------------------------
97574    -- 4262811 Multiperiod Accounting
97575    -----------------------------------------------------------------------------------------
97576      -- No MPA option is assigned.
97577 
97578 
97579 END IF;
97580 END IF;
97581 --
97582 
97583 --
97584 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97585    trace
97586       (p_msg      => 'END of AcctLineType_177'
97587       ,p_level    => C_LEVEL_PROCEDURE
97588       ,p_module   => l_log_module);
97589 END IF;
97590 --
97591 EXCEPTION
97592   WHEN xla_exceptions_pkg.application_exception THEN
97593       RAISE;
97594   WHEN OTHERS THEN
97595        xla_exceptions_pkg.raise_message
97596            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_177');
97597 END AcctLineType_177;
97598 --
97599 
97600 ---------------------------------------
97601 --
97602 -- PRIVATE FUNCTION
97603 --         AcctLineType_178
97604 --
97605 ---------------------------------------
97606 PROCEDURE AcctLineType_178 (
97607   p_application_id        IN NUMBER
97608  ,p_event_id              IN NUMBER
97609  ,p_calculate_acctd_flag  IN VARCHAR2
97610  ,p_calculate_g_l_flag    IN VARCHAR2
97611  ,p_actual_flag           IN OUT VARCHAR2
97612  ,p_balance_type_code     OUT VARCHAR2
97613  ,p_gain_or_loss_ref      OUT VARCHAR2
97614  
97615 --Cost Management Default Account
97616  , p_source_4            IN NUMBER
97617 --DISTRIBUTION_IDENTIFIER
97618  , p_source_11            IN NUMBER
97619 --Distribution Type
97620  , p_source_12            IN VARCHAR2
97621  , p_source_12_meaning    IN VARCHAR2
97622 --Entered Currency Code
97623  , p_source_15            IN VARCHAR2
97624 --Entered Amount
97625  , p_source_18            IN NUMBER
97626 --Currency Conversion Date
97627  , p_source_19            IN DATE
97628 --Currency Conversion Rate
97629  , p_source_20            IN NUMBER
97630 --Currency Conversion Type
97631  , p_source_21            IN VARCHAR2
97632 --Accounted Amount
97633  , p_source_22            IN NUMBER
97634 --Accounting Line Type
97635  , p_source_24            IN NUMBER
97636 )
97637 IS
97638 
97639 l_component_type              VARCHAR2(80);
97640 l_component_code              VARCHAR2(30);
97641 l_component_type_code         VARCHAR2(1);
97642 l_component_appl_id           INTEGER;
97643 l_amb_context_code            VARCHAR2(30);
97644 l_entity_code                 VARCHAR2(30);
97645 l_event_class_code            VARCHAR2(30);
97646 l_ae_header_id                NUMBER;
97647 l_event_type_code             VARCHAR2(30);
97648 l_line_definition_code        VARCHAR2(30);
97649 l_line_definition_owner_code  VARCHAR2(1);
97650 --
97651 -- adr variables
97652 l_segment                     VARCHAR2(30);
97653 l_ccid                        NUMBER;
97654 l_adr_transaction_coa_id      NUMBER;
97655 l_adr_accounting_coa_id       NUMBER;
97656 l_adr_flexfield_segment_code  VARCHAR2(30);
97657 l_adr_flex_value_set_id       NUMBER;
97658 l_adr_value_type_code         VARCHAR2(30);
97659 l_adr_value_combination_id    NUMBER;
97660 l_adr_value_segment_code      VARCHAR2(30);
97661 
97662 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
97663 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
97664 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
97665 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
97666 
97667 -- 4262811 Variables ------------------------------------------------------------------------------------------
97668 l_entered_amt_idx             NUMBER;
97669 l_accted_amt_idx              NUMBER;
97670 l_acc_rev_flag                VARCHAR2(1);
97671 l_accrual_line_num            NUMBER;
97672 l_tmp_amt                     NUMBER;
97673 l_acc_rev_natural_side_code   VARCHAR2(1);
97674 
97675 l_num_entries                 NUMBER;
97676 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
97677 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
97678 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
97679 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
97680 l_recog_line_1                NUMBER;
97681 l_recog_line_2                NUMBER;
97682 
97683 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
97684 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
97685 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
97686 
97687 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
97688 
97689 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
97690 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
97691 
97692 ---------------------------------------------------------------------------------------------------------------
97693 
97694 
97695 --
97696 -- bulk performance
97697 --
97698 l_balance_type_code           VARCHAR2(1);
97699 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
97700 l_log_module                  VARCHAR2(240);
97701 
97702 --
97703 -- Upgrade strategy
97704 --
97705 l_actual_upg_option           VARCHAR2(1);
97706 l_enc_upg_option           VARCHAR2(1);
97707 
97708 --
97709 BEGIN
97710 --
97711 IF g_log_enabled THEN
97712       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_178';
97713 END IF;
97714 --
97715 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97716 
97717       trace
97718          (p_msg      => 'BEGIN of AcctLineType_178'
97719          ,p_level    => C_LEVEL_PROCEDURE
97720          ,p_module   => l_log_module);
97721 
97722 END IF;
97723 --
97724 l_component_type             := 'AMB_JLT';
97725 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
97726 l_component_type_code        := 'S';
97727 l_component_appl_id          :=  707;
97728 l_amb_context_code           := 'DEFAULT';
97729 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
97730 l_event_class_code           := 'USER_DEFINE';
97731 l_event_type_code            := 'UDIR_INTERORG_SHIP';
97732 l_line_definition_owner_code := 'S';
97733 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP';
97734 --
97735 l_balance_type_code          := 'A';
97736 l_segment                     := NULL;
97737 l_ccid                        := NULL;
97738 l_adr_transaction_coa_id      := NULL;
97739 l_adr_accounting_coa_id       := NULL;
97740 l_adr_flexfield_segment_code  := NULL;
97741 l_adr_flex_value_set_id       := NULL;
97742 l_adr_value_type_code         := NULL;
97743 l_adr_value_combination_id    := NULL;
97744 l_adr_value_segment_code      := NULL;
97745 
97746 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
97747 l_bflow_class_code           := '';    -- 4219869 Business Flow
97748 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
97749 l_budgetary_control_flag     := 'N';
97750 
97751 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
97752 l_bflow_applied_to_amt       := NULL; -- 5132302
97753 l_entered_amt_idx            := NULL;          -- 4262811
97754 l_accted_amt_idx             := NULL;          -- 4262811
97755 l_acc_rev_flag               := NULL;          -- 4262811
97756 l_accrual_line_num           := NULL;          -- 4262811
97757 l_tmp_amt                    := NULL;          -- 4262811
97758 --
97759  
97760 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
97761     l_balance_type_code <> 'B' THEN
97762 IF NVL(p_source_24,9E125) =  3
97763  THEN 
97764 
97765    --
97766    XLA_AE_LINES_PKG.SetNewLine;
97767 
97768    p_balance_type_code          := l_balance_type_code;
97769    -- set the flag so later we will know whether the gain loss line needs to be created
97770    
97771    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
97772      p_actual_flag :='A';
97773    END IF;
97774 
97775    --
97776    -- bulk performance
97777    --
97778    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
97779                                       p_header_num   => 0); -- 4262811
97780    --
97781    -- set accounting line options
97782    --
97783    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
97784            p_natural_side_code          => 'D'
97785          , p_gain_or_loss_flag          => 'N'
97786          , p_gl_transfer_mode_code      => 'S'
97787          , p_acct_entry_type_code       => 'A'
97788          , p_switch_side_flag           => 'Y'
97789          , p_merge_duplicate_code       => 'N'
97790          );
97791    --
97792    l_acc_rev_natural_side_code := 'C';  -- 4262811
97793    -- 
97794    --
97795    -- set accounting line type info
97796    --
97797    xla_ae_lines_pkg.SetAcctLineType
97798       (p_component_type             => l_component_type
97799       ,p_event_type_code            => l_event_type_code
97800       ,p_line_definition_owner_code => l_line_definition_owner_code
97801       ,p_line_definition_code       => l_line_definition_code
97802       ,p_accounting_line_code       => l_component_code
97803       ,p_accounting_line_type_code  => l_component_type_code
97804       ,p_accounting_line_appl_id    => l_component_appl_id
97805       ,p_amb_context_code           => l_amb_context_code
97806       ,p_entity_code                => l_entity_code
97807       ,p_event_class_code           => l_event_class_code);
97808    --
97809    -- set accounting class
97810    --
97811    xla_ae_lines_pkg.SetAcctClass(
97812            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
97813          , p_ae_header_id           => l_ae_header_id
97814          );
97815 
97816    --
97817    -- set rounding class
97818    --
97819    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
97820                       'MATERIAL_OVERHEAD_ABSORPTION';
97821 
97822    --
97823    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
97824    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
97825    --
97826    -- bulk performance
97827    --
97828    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
97829 
97830    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
97831       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
97832 
97833    -- 4955764
97834    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
97835       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
97836 
97837    -- 4458381 Public Sector Enh
97838    
97839    --
97840    -- set accounting attributes for the line type
97841    --
97842    l_entered_amt_idx := 3;
97843    l_accted_amt_idx  := 8;
97844    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
97845    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
97846    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
97847    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
97848    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
97849    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
97850    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
97851    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
97852    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
97853    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
97854    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
97855    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
97856    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
97857    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
97858    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
97859    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
97860    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
97861 
97862    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
97863    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
97864 
97865    ---------------------------------------------------------------------------------------------------------------
97866    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
97867    ---------------------------------------------------------------------------------------------------------------
97868    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
97869 
97870    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
97871    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
97872 
97873    IF xla_accounting_cache_pkg.GetValueChar
97874          (p_source_code         => 'LEDGER_CATEGORY_CODE'
97875          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
97876    AND l_bflow_method_code = 'PRIOR_ENTRY'
97877 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
97878    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
97879          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
97880        )
97881    THEN
97882          xla_ae_lines_pkg.BflowUpgEntry
97883            (p_business_method_code    => l_bflow_method_code
97884            ,p_business_class_code     => l_bflow_class_code
97885            ,p_balance_type            => l_balance_type_code);
97886    ELSE
97887       NULL;
97888 -- No business flow processing for business flow method of NONE.
97889    END IF;
97890 
97891    --
97892    -- call analytical criteria
97893    --
97894    
97895    --
97896    -- call description
97897    --
97898    -- No description or it is inherited.
97899    --
97900    -- call ADRs
97901    -- Bug 4922099
97902    --
97903    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
97904         (NVL(l_actual_upg_option, 'N') = 'O') OR
97905         (NVL(l_enc_upg_option, 'N') = 'O')
97906       )
97907    THEN
97908    NULL;
97909    --
97910    --
97911    
97912   l_ccid := AcctDerRule_4(
97913            p_application_id           => p_application_id
97914          , p_ae_header_id             => l_ae_header_id 
97915 , p_source_4 => p_source_4
97916          , x_transaction_coa_id       => l_adr_transaction_coa_id
97917          , x_accounting_coa_id        => l_adr_accounting_coa_id
97918          , x_value_type_code          => l_adr_value_type_code
97919          , p_side                     => 'NA'
97920    );
97921 
97922    xla_ae_lines_pkg.set_ccid(
97923     p_code_combination_id          => l_ccid
97924   , p_value_type_code              => l_adr_value_type_code
97925   , p_transaction_coa_id           => l_adr_transaction_coa_id
97926   , p_accounting_coa_id            => l_adr_accounting_coa_id
97927   , p_adr_code                     => 'CST_DEFAULT'
97928   , p_adr_type_code                => 'S'
97929   , p_component_type               => l_component_type
97930   , p_component_code               => l_component_code
97931   , p_component_type_code          => l_component_type_code
97932   , p_component_appl_id            => l_component_appl_id
97933   , p_amb_context_code             => l_amb_context_code
97934   , p_side                         => 'NA'
97935   );
97936 
97937 
97938    --
97939    --
97940    END IF;
97941    --
97942    -- Bug 4922099
97943    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
97944           (NVL(l_enc_upg_option, 'N') = 'O')
97945         ) AND
97946         (l_bflow_method_code = 'PRIOR_ENTRY')
97947       )
97948    THEN
97949       IF
97950       --
97951       1 = 2
97952       --
97953       THEN
97954       xla_accounting_err_pkg.build_message
97955                                     (p_appli_s_name            => 'XLA'
97956                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
97957                                     ,p_token_1                 => 'LINE_NUMBER'
97958                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
97959                                     ,p_token_2                 => 'LINE_TYPE_NAME'
97960                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
97961                                                                              l_component_type
97962                                                                             ,l_component_code
97963                                                                             ,l_component_type_code
97964                                                                             ,l_component_appl_id
97965                                                                             ,l_amb_context_code
97966                                                                             ,l_entity_code
97967                                                                             ,l_event_class_code
97968                                                                            )
97969                                     ,p_token_3                 => 'OWNER'
97970                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
97971                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
97972                                                                           ,p_lookup_code    => l_component_type_code
97973                                                                          )
97974                                     ,p_token_4                 => 'PRODUCT_NAME'
97975                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
97976                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
97977                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
97978                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
97979                                     ,p_ae_header_id            =>  NULL
97980                                        );
97981 
97982         IF (C_LEVEL_ERROR>= g_log_level) THEN
97983                  trace
97984                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
97985                       ,p_level    => C_LEVEL_ERROR
97986                       ,p_module   => l_log_module);
97987         END IF;
97988       END IF;
97989    END IF;
97990    --
97991    --
97992    ------------------------------------------------------------------------------------------------
97993    -- 4219869 Business Flow
97994    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
97995    -- Prior Entry.  Currently, the following code is always generated.
97996    ------------------------------------------------------------------------------------------------
97997    XLA_AE_LINES_PKG.ValidateCurrentLine;
97998 
97999    ------------------------------------------------------------------------------------
98000    -- 4219869 Business Flow
98001    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
98002    ------------------------------------------------------------------------------------
98003    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
98004 
98005    ----------------------------------------------------------------------------------
98006    -- 4219869 Business Flow
98007    -- Update journal entry status -- Need to generate this within IF <condition>
98008    ----------------------------------------------------------------------------------
98009    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
98010          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
98011          ,p_balance_type_code => l_balance_type_code
98012          );
98013 
98014    -------------------------------------------------------------------------------------------
98015    -- 4262811 - Generate the Accrual Reversal lines
98016    -------------------------------------------------------------------------------------------
98017    BEGIN
98018       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
98019                               (g_array_event(p_event_id).array_value_num('header_index'));
98020       IF l_acc_rev_flag IS NULL THEN
98021          l_acc_rev_flag := 'N';
98022       END IF;
98023    EXCEPTION
98024       WHEN OTHERS THEN
98025          l_acc_rev_flag := 'N';
98026    END;
98027    --
98028    IF (l_acc_rev_flag = 'Y') THEN
98029 
98030        -- 4645092  ------------------------------------------------------------------------------
98031        -- To allow MPA report to determine if it should generate report process
98032        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
98033        ------------------------------------------------------------------------------------------
98034 
98035        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
98036        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
98037    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
98038    -- call ADRs
98039    -- Bug 4922099
98040    --
98041    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
98042         (NVL(l_actual_upg_option, 'N') = 'O') OR
98043         (NVL(l_enc_upg_option, 'N') = 'O')
98044       )
98045    THEN
98046    NULL;
98047    --
98048    --
98049    
98050   l_ccid := AcctDerRule_4(
98051            p_application_id           => p_application_id
98052          , p_ae_header_id             => l_ae_header_id 
98053 , p_source_4 => p_source_4
98054          , x_transaction_coa_id       => l_adr_transaction_coa_id
98055          , x_accounting_coa_id        => l_adr_accounting_coa_id
98056          , x_value_type_code          => l_adr_value_type_code
98057          , p_side                     => 'NA'
98058    );
98059 
98060    xla_ae_lines_pkg.set_ccid(
98061     p_code_combination_id          => l_ccid
98062   , p_value_type_code              => l_adr_value_type_code
98063   , p_transaction_coa_id           => l_adr_transaction_coa_id
98064   , p_accounting_coa_id            => l_adr_accounting_coa_id
98065   , p_adr_code                     => 'CST_DEFAULT'
98066   , p_adr_type_code                => 'S'
98067   , p_component_type               => l_component_type
98068   , p_component_code               => l_component_code
98069   , p_component_type_code          => l_component_type_code
98070   , p_component_appl_id            => l_component_appl_id
98071   , p_amb_context_code             => l_amb_context_code
98072   , p_side                         => 'NA'
98073   );
98074 
98075 
98076    --
98077    --
98078    END IF;
98079 
98080        --
98081        -- Update the line information that should be overwritten
98082        --
98083        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
98084                                          p_header_num   => 1);
98085        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
98086 
98087        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
98088 
98089        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
98090           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
98091        END IF;
98092 
98093       --
98094       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
98095       --
98096       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
98097           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
98098       ELSE
98099           ---------------------------------------------------------------------------------------------------
98100           -- 4262811a Switch Sign
98101           ---------------------------------------------------------------------------------------------------
98102           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
98103           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
98104                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98105           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
98106                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98107           -- 5132302
98108           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
98109                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98110 
98111       END IF;
98112 
98113       -- 4955764
98114       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
98115       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
98116 
98117 
98118       XLA_AE_LINES_PKG.ValidateCurrentLine;
98119       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
98120 
98121       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
98122                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
98123                ,p_balance_type_code => l_balance_type_code);
98124 
98125    END IF;
98126 
98127    -----------------------------------------------------------------------------------------
98128    -- 4262811 Multiperiod Accounting
98129    -----------------------------------------------------------------------------------------
98130      -- No MPA option is assigned.
98131 
98132 
98133 END IF;
98134 END IF;
98135 --
98136 
98137 --
98138 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
98139    trace
98140       (p_msg      => 'END of AcctLineType_178'
98141       ,p_level    => C_LEVEL_PROCEDURE
98142       ,p_module   => l_log_module);
98143 END IF;
98144 --
98145 EXCEPTION
98146   WHEN xla_exceptions_pkg.application_exception THEN
98147       RAISE;
98148   WHEN OTHERS THEN
98149        xla_exceptions_pkg.raise_message
98150            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_178');
98151 END AcctLineType_178;
98152 --
98153 
98154 ---------------------------------------
98155 --
98156 -- PRIVATE FUNCTION
98157 --         AcctLineType_179
98158 --
98159 ---------------------------------------
98160 PROCEDURE AcctLineType_179 (
98161   p_application_id        IN NUMBER
98162  ,p_event_id              IN NUMBER
98163  ,p_calculate_acctd_flag  IN VARCHAR2
98164  ,p_calculate_g_l_flag    IN VARCHAR2
98165  ,p_actual_flag           IN OUT VARCHAR2
98166  ,p_balance_type_code     OUT VARCHAR2
98167  ,p_gain_or_loss_ref      OUT VARCHAR2
98168  
98169 --Cost Management Default Account
98170  , p_source_4            IN NUMBER
98171 --DISTRIBUTION_IDENTIFIER
98172  , p_source_11            IN NUMBER
98173 --Distribution Type
98174  , p_source_12            IN VARCHAR2
98175  , p_source_12_meaning    IN VARCHAR2
98176 --Entered Currency Code
98177  , p_source_15            IN VARCHAR2
98178 --Entered Amount
98179  , p_source_18            IN NUMBER
98180 --Currency Conversion Date
98181  , p_source_19            IN DATE
98182 --Currency Conversion Rate
98183  , p_source_20            IN NUMBER
98184 --Currency Conversion Type
98185  , p_source_21            IN VARCHAR2
98186 --Accounted Amount
98187  , p_source_22            IN NUMBER
98188 --Accounting Line Type
98189  , p_source_24            IN NUMBER
98190 )
98191 IS
98192 
98193 l_component_type              VARCHAR2(80);
98194 l_component_code              VARCHAR2(30);
98195 l_component_type_code         VARCHAR2(1);
98196 l_component_appl_id           INTEGER;
98197 l_amb_context_code            VARCHAR2(30);
98198 l_entity_code                 VARCHAR2(30);
98199 l_event_class_code            VARCHAR2(30);
98200 l_ae_header_id                NUMBER;
98201 l_event_type_code             VARCHAR2(30);
98202 l_line_definition_code        VARCHAR2(30);
98203 l_line_definition_owner_code  VARCHAR2(1);
98204 --
98205 -- adr variables
98206 l_segment                     VARCHAR2(30);
98207 l_ccid                        NUMBER;
98208 l_adr_transaction_coa_id      NUMBER;
98209 l_adr_accounting_coa_id       NUMBER;
98210 l_adr_flexfield_segment_code  VARCHAR2(30);
98211 l_adr_flex_value_set_id       NUMBER;
98212 l_adr_value_type_code         VARCHAR2(30);
98213 l_adr_value_combination_id    NUMBER;
98214 l_adr_value_segment_code      VARCHAR2(30);
98215 
98216 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
98217 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
98218 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
98219 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
98220 
98221 -- 4262811 Variables ------------------------------------------------------------------------------------------
98222 l_entered_amt_idx             NUMBER;
98223 l_accted_amt_idx              NUMBER;
98224 l_acc_rev_flag                VARCHAR2(1);
98225 l_accrual_line_num            NUMBER;
98226 l_tmp_amt                     NUMBER;
98227 l_acc_rev_natural_side_code   VARCHAR2(1);
98228 
98229 l_num_entries                 NUMBER;
98230 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
98231 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
98232 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
98233 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
98234 l_recog_line_1                NUMBER;
98235 l_recog_line_2                NUMBER;
98236 
98237 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
98238 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
98239 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
98240 
98241 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
98242 
98243 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
98244 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
98245 
98246 ---------------------------------------------------------------------------------------------------------------
98247 
98248 
98249 --
98250 -- bulk performance
98251 --
98252 l_balance_type_code           VARCHAR2(1);
98253 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
98254 l_log_module                  VARCHAR2(240);
98255 
98256 --
98257 -- Upgrade strategy
98258 --
98259 l_actual_upg_option           VARCHAR2(1);
98260 l_enc_upg_option           VARCHAR2(1);
98261 
98262 --
98263 BEGIN
98264 --
98265 IF g_log_enabled THEN
98266       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_179';
98267 END IF;
98268 --
98269 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
98270 
98271       trace
98272          (p_msg      => 'BEGIN of AcctLineType_179'
98273          ,p_level    => C_LEVEL_PROCEDURE
98274          ,p_module   => l_log_module);
98275 
98276 END IF;
98277 --
98278 l_component_type             := 'AMB_JLT';
98279 l_component_code             := 'OFFSET';
98280 l_component_type_code        := 'S';
98281 l_component_appl_id          :=  707;
98282 l_amb_context_code           := 'DEFAULT';
98283 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
98284 l_event_class_code           := 'USER_DEFINE';
98285 l_event_type_code            := 'UCG_TXFR';
98286 l_line_definition_owner_code := 'S';
98287 l_line_definition_code       := 'USER_CG_TXFR';
98288 --
98289 l_balance_type_code          := 'A';
98290 l_segment                     := NULL;
98291 l_ccid                        := NULL;
98292 l_adr_transaction_coa_id      := NULL;
98293 l_adr_accounting_coa_id       := NULL;
98294 l_adr_flexfield_segment_code  := NULL;
98295 l_adr_flex_value_set_id       := NULL;
98296 l_adr_value_type_code         := NULL;
98297 l_adr_value_combination_id    := NULL;
98298 l_adr_value_segment_code      := NULL;
98299 
98300 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
98301 l_bflow_class_code           := '';    -- 4219869 Business Flow
98302 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
98303 l_budgetary_control_flag     := 'N';
98304 
98305 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
98306 l_bflow_applied_to_amt       := NULL; -- 5132302
98307 l_entered_amt_idx            := NULL;          -- 4262811
98308 l_accted_amt_idx             := NULL;          -- 4262811
98309 l_acc_rev_flag               := NULL;          -- 4262811
98310 l_accrual_line_num           := NULL;          -- 4262811
98311 l_tmp_amt                    := NULL;          -- 4262811
98312 --
98313  
98314 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
98315     l_balance_type_code <> 'B' THEN
98316 IF NVL(p_source_24,9E125) =  2
98317  THEN 
98318 
98319    --
98320    XLA_AE_LINES_PKG.SetNewLine;
98321 
98322    p_balance_type_code          := l_balance_type_code;
98323    -- set the flag so later we will know whether the gain loss line needs to be created
98324    
98325    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
98326      p_actual_flag :='A';
98327    END IF;
98328 
98329    --
98330    -- bulk performance
98331    --
98332    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
98333                                       p_header_num   => 0); -- 4262811
98334    --
98335    -- set accounting line options
98336    --
98337    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
98338            p_natural_side_code          => 'D'
98339          , p_gain_or_loss_flag          => 'N'
98340          , p_gl_transfer_mode_code      => 'S'
98341          , p_acct_entry_type_code       => 'A'
98342          , p_switch_side_flag           => 'Y'
98343          , p_merge_duplicate_code       => 'N'
98344          );
98345    --
98346    l_acc_rev_natural_side_code := 'C';  -- 4262811
98347    -- 
98348    --
98349    -- set accounting line type info
98350    --
98351    xla_ae_lines_pkg.SetAcctLineType
98352       (p_component_type             => l_component_type
98353       ,p_event_type_code            => l_event_type_code
98354       ,p_line_definition_owner_code => l_line_definition_owner_code
98355       ,p_line_definition_code       => l_line_definition_code
98356       ,p_accounting_line_code       => l_component_code
98357       ,p_accounting_line_type_code  => l_component_type_code
98358       ,p_accounting_line_appl_id    => l_component_appl_id
98359       ,p_amb_context_code           => l_amb_context_code
98360       ,p_entity_code                => l_entity_code
98361       ,p_event_class_code           => l_event_class_code);
98362    --
98363    -- set accounting class
98364    --
98365    xla_ae_lines_pkg.SetAcctClass(
98366            p_accounting_class_code  => 'OFFSET'
98367          , p_ae_header_id           => l_ae_header_id
98368          );
98369 
98370    --
98371    -- set rounding class
98372    --
98373    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
98374                       'OFFSET';
98375 
98376    --
98377    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
98378    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
98379    --
98380    -- bulk performance
98381    --
98382    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
98383 
98384    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
98385       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
98386 
98387    -- 4955764
98388    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
98389       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
98390 
98391    -- 4458381 Public Sector Enh
98392    
98393    --
98394    -- set accounting attributes for the line type
98395    --
98396    l_entered_amt_idx := 3;
98397    l_accted_amt_idx  := 8;
98398    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
98399    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
98400    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
98401    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
98402    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
98403    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
98404    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
98405    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
98406    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
98407    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
98408    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
98409    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
98410    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
98411    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
98412    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
98413    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
98414    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
98415 
98416    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
98417    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
98418 
98419    ---------------------------------------------------------------------------------------------------------------
98420    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
98421    ---------------------------------------------------------------------------------------------------------------
98422    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
98423 
98424    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
98425    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
98426 
98427    IF xla_accounting_cache_pkg.GetValueChar
98428          (p_source_code         => 'LEDGER_CATEGORY_CODE'
98429          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
98430    AND l_bflow_method_code = 'PRIOR_ENTRY'
98431 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
98432    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
98433          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
98434        )
98435    THEN
98436          xla_ae_lines_pkg.BflowUpgEntry
98437            (p_business_method_code    => l_bflow_method_code
98438            ,p_business_class_code     => l_bflow_class_code
98439            ,p_balance_type            => l_balance_type_code);
98440    ELSE
98441       NULL;
98442 -- No business flow processing for business flow method of NONE.
98443    END IF;
98444 
98445    --
98446    -- call analytical criteria
98447    --
98448    
98449    --
98450    -- call description
98451    --
98452    -- No description or it is inherited.
98453    --
98454    -- call ADRs
98455    -- Bug 4922099
98456    --
98457    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
98458         (NVL(l_actual_upg_option, 'N') = 'O') OR
98459         (NVL(l_enc_upg_option, 'N') = 'O')
98460       )
98461    THEN
98462    NULL;
98463    --
98464    --
98465    
98466   l_ccid := AcctDerRule_4(
98467            p_application_id           => p_application_id
98468          , p_ae_header_id             => l_ae_header_id 
98469 , p_source_4 => p_source_4
98470          , x_transaction_coa_id       => l_adr_transaction_coa_id
98471          , x_accounting_coa_id        => l_adr_accounting_coa_id
98472          , x_value_type_code          => l_adr_value_type_code
98473          , p_side                     => 'NA'
98474    );
98475 
98476    xla_ae_lines_pkg.set_ccid(
98477     p_code_combination_id          => l_ccid
98478   , p_value_type_code              => l_adr_value_type_code
98479   , p_transaction_coa_id           => l_adr_transaction_coa_id
98480   , p_accounting_coa_id            => l_adr_accounting_coa_id
98481   , p_adr_code                     => 'CST_DEFAULT'
98482   , p_adr_type_code                => 'S'
98483   , p_component_type               => l_component_type
98484   , p_component_code               => l_component_code
98485   , p_component_type_code          => l_component_type_code
98486   , p_component_appl_id            => l_component_appl_id
98487   , p_amb_context_code             => l_amb_context_code
98488   , p_side                         => 'NA'
98489   );
98490 
98491 
98492    --
98493    --
98494    END IF;
98495    --
98496    -- Bug 4922099
98497    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
98498           (NVL(l_enc_upg_option, 'N') = 'O')
98499         ) AND
98500         (l_bflow_method_code = 'PRIOR_ENTRY')
98501       )
98502    THEN
98503       IF
98504       --
98505       1 = 2
98506       --
98507       THEN
98508       xla_accounting_err_pkg.build_message
98509                                     (p_appli_s_name            => 'XLA'
98510                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
98511                                     ,p_token_1                 => 'LINE_NUMBER'
98512                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
98513                                     ,p_token_2                 => 'LINE_TYPE_NAME'
98514                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
98515                                                                              l_component_type
98516                                                                             ,l_component_code
98517                                                                             ,l_component_type_code
98518                                                                             ,l_component_appl_id
98519                                                                             ,l_amb_context_code
98520                                                                             ,l_entity_code
98521                                                                             ,l_event_class_code
98522                                                                            )
98523                                     ,p_token_3                 => 'OWNER'
98524                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
98525                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
98526                                                                           ,p_lookup_code    => l_component_type_code
98527                                                                          )
98528                                     ,p_token_4                 => 'PRODUCT_NAME'
98529                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
98530                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
98531                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
98532                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
98533                                     ,p_ae_header_id            =>  NULL
98534                                        );
98535 
98536         IF (C_LEVEL_ERROR>= g_log_level) THEN
98537                  trace
98538                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
98539                       ,p_level    => C_LEVEL_ERROR
98540                       ,p_module   => l_log_module);
98541         END IF;
98542       END IF;
98543    END IF;
98544    --
98545    --
98546    ------------------------------------------------------------------------------------------------
98547    -- 4219869 Business Flow
98548    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
98549    -- Prior Entry.  Currently, the following code is always generated.
98550    ------------------------------------------------------------------------------------------------
98551    XLA_AE_LINES_PKG.ValidateCurrentLine;
98552 
98553    ------------------------------------------------------------------------------------
98554    -- 4219869 Business Flow
98555    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
98556    ------------------------------------------------------------------------------------
98557    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
98558 
98559    ----------------------------------------------------------------------------------
98560    -- 4219869 Business Flow
98561    -- Update journal entry status -- Need to generate this within IF <condition>
98562    ----------------------------------------------------------------------------------
98563    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
98564          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
98565          ,p_balance_type_code => l_balance_type_code
98566          );
98567 
98568    -------------------------------------------------------------------------------------------
98569    -- 4262811 - Generate the Accrual Reversal lines
98570    -------------------------------------------------------------------------------------------
98571    BEGIN
98572       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
98573                               (g_array_event(p_event_id).array_value_num('header_index'));
98574       IF l_acc_rev_flag IS NULL THEN
98575          l_acc_rev_flag := 'N';
98576       END IF;
98577    EXCEPTION
98578       WHEN OTHERS THEN
98579          l_acc_rev_flag := 'N';
98580    END;
98581    --
98582    IF (l_acc_rev_flag = 'Y') THEN
98583 
98584        -- 4645092  ------------------------------------------------------------------------------
98585        -- To allow MPA report to determine if it should generate report process
98586        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
98587        ------------------------------------------------------------------------------------------
98588 
98589        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
98590        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
98591    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
98592    -- call ADRs
98593    -- Bug 4922099
98594    --
98595    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
98596         (NVL(l_actual_upg_option, 'N') = 'O') OR
98597         (NVL(l_enc_upg_option, 'N') = 'O')
98598       )
98599    THEN
98600    NULL;
98601    --
98602    --
98603    
98604   l_ccid := AcctDerRule_4(
98605            p_application_id           => p_application_id
98606          , p_ae_header_id             => l_ae_header_id 
98607 , p_source_4 => p_source_4
98608          , x_transaction_coa_id       => l_adr_transaction_coa_id
98609          , x_accounting_coa_id        => l_adr_accounting_coa_id
98610          , x_value_type_code          => l_adr_value_type_code
98611          , p_side                     => 'NA'
98612    );
98613 
98614    xla_ae_lines_pkg.set_ccid(
98615     p_code_combination_id          => l_ccid
98616   , p_value_type_code              => l_adr_value_type_code
98617   , p_transaction_coa_id           => l_adr_transaction_coa_id
98618   , p_accounting_coa_id            => l_adr_accounting_coa_id
98619   , p_adr_code                     => 'CST_DEFAULT'
98620   , p_adr_type_code                => 'S'
98621   , p_component_type               => l_component_type
98622   , p_component_code               => l_component_code
98623   , p_component_type_code          => l_component_type_code
98624   , p_component_appl_id            => l_component_appl_id
98625   , p_amb_context_code             => l_amb_context_code
98626   , p_side                         => 'NA'
98627   );
98628 
98629 
98630    --
98631    --
98632    END IF;
98633 
98634        --
98635        -- Update the line information that should be overwritten
98636        --
98637        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
98638                                          p_header_num   => 1);
98639        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
98640 
98641        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
98642 
98643        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
98644           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
98645        END IF;
98646 
98647       --
98648       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
98649       --
98650       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
98651           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
98652       ELSE
98653           ---------------------------------------------------------------------------------------------------
98654           -- 4262811a Switch Sign
98655           ---------------------------------------------------------------------------------------------------
98656           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
98657           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
98658                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98659           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
98660                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98661           -- 5132302
98662           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
98663                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98664 
98665       END IF;
98666 
98667       -- 4955764
98668       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
98669       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
98670 
98671 
98672       XLA_AE_LINES_PKG.ValidateCurrentLine;
98673       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
98674 
98675       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
98676                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
98677                ,p_balance_type_code => l_balance_type_code);
98678 
98679    END IF;
98680 
98681    -----------------------------------------------------------------------------------------
98682    -- 4262811 Multiperiod Accounting
98683    -----------------------------------------------------------------------------------------
98684      -- No MPA option is assigned.
98685 
98686 
98687 END IF;
98688 END IF;
98689 --
98690 
98691 --
98692 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
98693    trace
98694       (p_msg      => 'END of AcctLineType_179'
98695       ,p_level    => C_LEVEL_PROCEDURE
98696       ,p_module   => l_log_module);
98697 END IF;
98698 --
98699 EXCEPTION
98700   WHEN xla_exceptions_pkg.application_exception THEN
98701       RAISE;
98702   WHEN OTHERS THEN
98703        xla_exceptions_pkg.raise_message
98704            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_179');
98705 END AcctLineType_179;
98706 --
98707 
98708 ---------------------------------------
98709 --
98710 -- PRIVATE FUNCTION
98711 --         AcctLineType_180
98712 --
98713 ---------------------------------------
98714 PROCEDURE AcctLineType_180 (
98715   p_application_id        IN NUMBER
98716  ,p_event_id              IN NUMBER
98717  ,p_calculate_acctd_flag  IN VARCHAR2
98718  ,p_calculate_g_l_flag    IN VARCHAR2
98719  ,p_actual_flag           IN OUT VARCHAR2
98720  ,p_balance_type_code     OUT VARCHAR2
98721  ,p_gain_or_loss_ref      OUT VARCHAR2
98722  
98723 --Cost Management Default Account
98724  , p_source_4            IN NUMBER
98725 --DISTRIBUTION_IDENTIFIER
98726  , p_source_11            IN NUMBER
98727 --Distribution Type
98728  , p_source_12            IN VARCHAR2
98729  , p_source_12_meaning    IN VARCHAR2
98730 --Entered Currency Code
98731  , p_source_15            IN VARCHAR2
98732 --Entered Amount
98733  , p_source_18            IN NUMBER
98734 --Currency Conversion Date
98735  , p_source_19            IN DATE
98736 --Currency Conversion Rate
98737  , p_source_20            IN NUMBER
98738 --Currency Conversion Type
98739  , p_source_21            IN VARCHAR2
98740 --Accounted Amount
98741  , p_source_22            IN NUMBER
98742 --Accounting Line Type
98743  , p_source_24            IN NUMBER
98744 )
98745 IS
98746 
98747 l_component_type              VARCHAR2(80);
98748 l_component_code              VARCHAR2(30);
98749 l_component_type_code         VARCHAR2(1);
98750 l_component_appl_id           INTEGER;
98751 l_amb_context_code            VARCHAR2(30);
98752 l_entity_code                 VARCHAR2(30);
98753 l_event_class_code            VARCHAR2(30);
98754 l_ae_header_id                NUMBER;
98755 l_event_type_code             VARCHAR2(30);
98756 l_line_definition_code        VARCHAR2(30);
98757 l_line_definition_owner_code  VARCHAR2(1);
98758 --
98759 -- adr variables
98760 l_segment                     VARCHAR2(30);
98761 l_ccid                        NUMBER;
98762 l_adr_transaction_coa_id      NUMBER;
98763 l_adr_accounting_coa_id       NUMBER;
98764 l_adr_flexfield_segment_code  VARCHAR2(30);
98765 l_adr_flex_value_set_id       NUMBER;
98766 l_adr_value_type_code         VARCHAR2(30);
98767 l_adr_value_combination_id    NUMBER;
98768 l_adr_value_segment_code      VARCHAR2(30);
98769 
98770 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
98771 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
98772 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
98773 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
98774 
98775 -- 4262811 Variables ------------------------------------------------------------------------------------------
98776 l_entered_amt_idx             NUMBER;
98777 l_accted_amt_idx              NUMBER;
98778 l_acc_rev_flag                VARCHAR2(1);
98779 l_accrual_line_num            NUMBER;
98780 l_tmp_amt                     NUMBER;
98781 l_acc_rev_natural_side_code   VARCHAR2(1);
98782 
98783 l_num_entries                 NUMBER;
98784 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
98785 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
98786 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
98787 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
98788 l_recog_line_1                NUMBER;
98789 l_recog_line_2                NUMBER;
98790 
98791 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
98792 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
98793 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
98794 
98795 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
98796 
98797 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
98798 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
98799 
98800 ---------------------------------------------------------------------------------------------------------------
98801 
98802 
98803 --
98804 -- bulk performance
98805 --
98806 l_balance_type_code           VARCHAR2(1);
98807 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
98808 l_log_module                  VARCHAR2(240);
98809 
98810 --
98811 -- Upgrade strategy
98812 --
98813 l_actual_upg_option           VARCHAR2(1);
98814 l_enc_upg_option           VARCHAR2(1);
98815 
98816 --
98817 BEGIN
98818 --
98819 IF g_log_enabled THEN
98820       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_180';
98821 END IF;
98822 --
98823 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
98824 
98825       trace
98826          (p_msg      => 'BEGIN of AcctLineType_180'
98827          ,p_level    => C_LEVEL_PROCEDURE
98828          ,p_module   => l_log_module);
98829 
98830 END IF;
98831 --
98832 l_component_type             := 'AMB_JLT';
98833 l_component_code             := 'OFFSET';
98834 l_component_type_code        := 'S';
98835 l_component_appl_id          :=  707;
98836 l_amb_context_code           := 'DEFAULT';
98837 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
98838 l_event_class_code           := 'USER_DEFINE';
98839 l_event_type_code            := 'UMISC_ISSUE';
98840 l_line_definition_owner_code := 'S';
98841 l_line_definition_code       := 'USER_ISSUE';
98842 --
98843 l_balance_type_code          := 'A';
98844 l_segment                     := NULL;
98845 l_ccid                        := NULL;
98846 l_adr_transaction_coa_id      := NULL;
98847 l_adr_accounting_coa_id       := NULL;
98848 l_adr_flexfield_segment_code  := NULL;
98849 l_adr_flex_value_set_id       := NULL;
98850 l_adr_value_type_code         := NULL;
98851 l_adr_value_combination_id    := NULL;
98852 l_adr_value_segment_code      := NULL;
98853 
98854 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
98855 l_bflow_class_code           := '';    -- 4219869 Business Flow
98856 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
98857 l_budgetary_control_flag     := 'N';
98858 
98859 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
98860 l_bflow_applied_to_amt       := NULL; -- 5132302
98861 l_entered_amt_idx            := NULL;          -- 4262811
98862 l_accted_amt_idx             := NULL;          -- 4262811
98863 l_acc_rev_flag               := NULL;          -- 4262811
98864 l_accrual_line_num           := NULL;          -- 4262811
98865 l_tmp_amt                    := NULL;          -- 4262811
98866 --
98867  
98868 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
98869     l_balance_type_code <> 'B' THEN
98870 IF NVL(p_source_24,9E125) =  2
98871  THEN 
98872 
98873    --
98874    XLA_AE_LINES_PKG.SetNewLine;
98875 
98876    p_balance_type_code          := l_balance_type_code;
98877    -- set the flag so later we will know whether the gain loss line needs to be created
98878    
98879    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
98880      p_actual_flag :='A';
98881    END IF;
98882 
98883    --
98884    -- bulk performance
98885    --
98886    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
98887                                       p_header_num   => 0); -- 4262811
98888    --
98889    -- set accounting line options
98890    --
98891    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
98892            p_natural_side_code          => 'D'
98893          , p_gain_or_loss_flag          => 'N'
98894          , p_gl_transfer_mode_code      => 'S'
98895          , p_acct_entry_type_code       => 'A'
98896          , p_switch_side_flag           => 'Y'
98897          , p_merge_duplicate_code       => 'N'
98898          );
98899    --
98900    l_acc_rev_natural_side_code := 'C';  -- 4262811
98901    -- 
98902    --
98903    -- set accounting line type info
98904    --
98905    xla_ae_lines_pkg.SetAcctLineType
98906       (p_component_type             => l_component_type
98907       ,p_event_type_code            => l_event_type_code
98908       ,p_line_definition_owner_code => l_line_definition_owner_code
98909       ,p_line_definition_code       => l_line_definition_code
98910       ,p_accounting_line_code       => l_component_code
98911       ,p_accounting_line_type_code  => l_component_type_code
98912       ,p_accounting_line_appl_id    => l_component_appl_id
98913       ,p_amb_context_code           => l_amb_context_code
98914       ,p_entity_code                => l_entity_code
98915       ,p_event_class_code           => l_event_class_code);
98916    --
98917    -- set accounting class
98918    --
98919    xla_ae_lines_pkg.SetAcctClass(
98920            p_accounting_class_code  => 'OFFSET'
98921          , p_ae_header_id           => l_ae_header_id
98922          );
98923 
98924    --
98925    -- set rounding class
98926    --
98927    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
98928                       'OFFSET';
98929 
98930    --
98931    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
98932    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
98933    --
98934    -- bulk performance
98935    --
98936    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
98937 
98938    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
98939       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
98940 
98941    -- 4955764
98942    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
98943       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
98944 
98945    -- 4458381 Public Sector Enh
98946    
98947    --
98948    -- set accounting attributes for the line type
98949    --
98950    l_entered_amt_idx := 3;
98951    l_accted_amt_idx  := 8;
98952    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
98953    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
98954    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
98955    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
98956    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
98957    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
98958    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
98959    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
98960    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
98961    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
98962    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
98963    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
98964    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
98965    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
98966    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
98967    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
98968    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
98969 
98970    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
98971    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
98972 
98973    ---------------------------------------------------------------------------------------------------------------
98974    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
98975    ---------------------------------------------------------------------------------------------------------------
98976    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
98977 
98978    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
98979    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
98980 
98981    IF xla_accounting_cache_pkg.GetValueChar
98982          (p_source_code         => 'LEDGER_CATEGORY_CODE'
98983          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
98984    AND l_bflow_method_code = 'PRIOR_ENTRY'
98985 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
98986    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
98987          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
98988        )
98989    THEN
98990          xla_ae_lines_pkg.BflowUpgEntry
98991            (p_business_method_code    => l_bflow_method_code
98992            ,p_business_class_code     => l_bflow_class_code
98993            ,p_balance_type            => l_balance_type_code);
98994    ELSE
98995       NULL;
98996 -- No business flow processing for business flow method of NONE.
98997    END IF;
98998 
98999    --
99000    -- call analytical criteria
99001    --
99002    
99003    --
99004    -- call description
99005    --
99006    -- No description or it is inherited.
99007    --
99008    -- call ADRs
99009    -- Bug 4922099
99010    --
99011    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
99012         (NVL(l_actual_upg_option, 'N') = 'O') OR
99013         (NVL(l_enc_upg_option, 'N') = 'O')
99014       )
99015    THEN
99016    NULL;
99017    --
99018    --
99019    
99020   l_ccid := AcctDerRule_4(
99021            p_application_id           => p_application_id
99022          , p_ae_header_id             => l_ae_header_id 
99023 , p_source_4 => p_source_4
99024          , x_transaction_coa_id       => l_adr_transaction_coa_id
99025          , x_accounting_coa_id        => l_adr_accounting_coa_id
99026          , x_value_type_code          => l_adr_value_type_code
99027          , p_side                     => 'NA'
99028    );
99029 
99030    xla_ae_lines_pkg.set_ccid(
99031     p_code_combination_id          => l_ccid
99032   , p_value_type_code              => l_adr_value_type_code
99033   , p_transaction_coa_id           => l_adr_transaction_coa_id
99034   , p_accounting_coa_id            => l_adr_accounting_coa_id
99035   , p_adr_code                     => 'CST_DEFAULT'
99036   , p_adr_type_code                => 'S'
99037   , p_component_type               => l_component_type
99038   , p_component_code               => l_component_code
99039   , p_component_type_code          => l_component_type_code
99040   , p_component_appl_id            => l_component_appl_id
99041   , p_amb_context_code             => l_amb_context_code
99042   , p_side                         => 'NA'
99043   );
99044 
99045 
99046    --
99047    --
99048    END IF;
99049    --
99050    -- Bug 4922099
99051    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
99052           (NVL(l_enc_upg_option, 'N') = 'O')
99053         ) AND
99054         (l_bflow_method_code = 'PRIOR_ENTRY')
99055       )
99056    THEN
99057       IF
99058       --
99059       1 = 2
99060       --
99061       THEN
99062       xla_accounting_err_pkg.build_message
99063                                     (p_appli_s_name            => 'XLA'
99064                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
99065                                     ,p_token_1                 => 'LINE_NUMBER'
99066                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
99067                                     ,p_token_2                 => 'LINE_TYPE_NAME'
99068                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
99069                                                                              l_component_type
99070                                                                             ,l_component_code
99071                                                                             ,l_component_type_code
99072                                                                             ,l_component_appl_id
99073                                                                             ,l_amb_context_code
99074                                                                             ,l_entity_code
99075                                                                             ,l_event_class_code
99076                                                                            )
99077                                     ,p_token_3                 => 'OWNER'
99078                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
99079                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
99080                                                                           ,p_lookup_code    => l_component_type_code
99081                                                                          )
99082                                     ,p_token_4                 => 'PRODUCT_NAME'
99083                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
99084                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
99085                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
99086                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
99087                                     ,p_ae_header_id            =>  NULL
99088                                        );
99089 
99090         IF (C_LEVEL_ERROR>= g_log_level) THEN
99091                  trace
99092                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
99093                       ,p_level    => C_LEVEL_ERROR
99094                       ,p_module   => l_log_module);
99095         END IF;
99096       END IF;
99097    END IF;
99098    --
99099    --
99100    ------------------------------------------------------------------------------------------------
99101    -- 4219869 Business Flow
99102    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
99103    -- Prior Entry.  Currently, the following code is always generated.
99104    ------------------------------------------------------------------------------------------------
99105    XLA_AE_LINES_PKG.ValidateCurrentLine;
99106 
99107    ------------------------------------------------------------------------------------
99108    -- 4219869 Business Flow
99109    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
99110    ------------------------------------------------------------------------------------
99111    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
99112 
99113    ----------------------------------------------------------------------------------
99114    -- 4219869 Business Flow
99115    -- Update journal entry status -- Need to generate this within IF <condition>
99116    ----------------------------------------------------------------------------------
99117    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
99118          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
99119          ,p_balance_type_code => l_balance_type_code
99120          );
99121 
99122    -------------------------------------------------------------------------------------------
99123    -- 4262811 - Generate the Accrual Reversal lines
99124    -------------------------------------------------------------------------------------------
99125    BEGIN
99126       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
99127                               (g_array_event(p_event_id).array_value_num('header_index'));
99128       IF l_acc_rev_flag IS NULL THEN
99129          l_acc_rev_flag := 'N';
99130       END IF;
99131    EXCEPTION
99132       WHEN OTHERS THEN
99133          l_acc_rev_flag := 'N';
99134    END;
99135    --
99136    IF (l_acc_rev_flag = 'Y') THEN
99137 
99138        -- 4645092  ------------------------------------------------------------------------------
99139        -- To allow MPA report to determine if it should generate report process
99140        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
99141        ------------------------------------------------------------------------------------------
99142 
99143        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
99144        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
99145    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
99146    -- call ADRs
99147    -- Bug 4922099
99148    --
99149    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
99150         (NVL(l_actual_upg_option, 'N') = 'O') OR
99151         (NVL(l_enc_upg_option, 'N') = 'O')
99152       )
99153    THEN
99154    NULL;
99155    --
99156    --
99157    
99158   l_ccid := AcctDerRule_4(
99159            p_application_id           => p_application_id
99160          , p_ae_header_id             => l_ae_header_id 
99161 , p_source_4 => p_source_4
99162          , x_transaction_coa_id       => l_adr_transaction_coa_id
99163          , x_accounting_coa_id        => l_adr_accounting_coa_id
99164          , x_value_type_code          => l_adr_value_type_code
99165          , p_side                     => 'NA'
99166    );
99167 
99168    xla_ae_lines_pkg.set_ccid(
99169     p_code_combination_id          => l_ccid
99170   , p_value_type_code              => l_adr_value_type_code
99171   , p_transaction_coa_id           => l_adr_transaction_coa_id
99172   , p_accounting_coa_id            => l_adr_accounting_coa_id
99173   , p_adr_code                     => 'CST_DEFAULT'
99174   , p_adr_type_code                => 'S'
99175   , p_component_type               => l_component_type
99176   , p_component_code               => l_component_code
99177   , p_component_type_code          => l_component_type_code
99178   , p_component_appl_id            => l_component_appl_id
99179   , p_amb_context_code             => l_amb_context_code
99180   , p_side                         => 'NA'
99181   );
99182 
99183 
99184    --
99185    --
99186    END IF;
99187 
99188        --
99189        -- Update the line information that should be overwritten
99190        --
99191        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
99192                                          p_header_num   => 1);
99193        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
99194 
99195        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
99196 
99197        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
99198           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
99199        END IF;
99200 
99201       --
99202       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
99203       --
99204       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
99205           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
99206       ELSE
99207           ---------------------------------------------------------------------------------------------------
99208           -- 4262811a Switch Sign
99209           ---------------------------------------------------------------------------------------------------
99210           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
99211           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
99212                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99213           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
99214                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99215           -- 5132302
99216           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
99217                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99218 
99219       END IF;
99220 
99221       -- 4955764
99222       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
99223       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
99224 
99225 
99226       XLA_AE_LINES_PKG.ValidateCurrentLine;
99227       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
99228 
99229       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
99230                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
99231                ,p_balance_type_code => l_balance_type_code);
99232 
99233    END IF;
99234 
99235    -----------------------------------------------------------------------------------------
99236    -- 4262811 Multiperiod Accounting
99237    -----------------------------------------------------------------------------------------
99238      -- No MPA option is assigned.
99239 
99240 
99241 END IF;
99242 END IF;
99243 --
99244 
99245 --
99246 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
99247    trace
99248       (p_msg      => 'END of AcctLineType_180'
99249       ,p_level    => C_LEVEL_PROCEDURE
99250       ,p_module   => l_log_module);
99251 END IF;
99252 --
99253 EXCEPTION
99254   WHEN xla_exceptions_pkg.application_exception THEN
99255       RAISE;
99256   WHEN OTHERS THEN
99257        xla_exceptions_pkg.raise_message
99258            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_180');
99259 END AcctLineType_180;
99260 --
99261 
99262 ---------------------------------------
99263 --
99264 -- PRIVATE FUNCTION
99265 --         AcctLineType_181
99266 --
99267 ---------------------------------------
99268 PROCEDURE AcctLineType_181 (
99269   p_application_id        IN NUMBER
99270  ,p_event_id              IN NUMBER
99271  ,p_calculate_acctd_flag  IN VARCHAR2
99272  ,p_calculate_g_l_flag    IN VARCHAR2
99273  ,p_actual_flag           IN OUT VARCHAR2
99274  ,p_balance_type_code     OUT VARCHAR2
99275  ,p_gain_or_loss_ref      OUT VARCHAR2
99276  
99277 --Cost Management Default Account
99278  , p_source_4            IN NUMBER
99279 --DISTRIBUTION_IDENTIFIER
99280  , p_source_11            IN NUMBER
99281 --Distribution Type
99282  , p_source_12            IN VARCHAR2
99283  , p_source_12_meaning    IN VARCHAR2
99284 --Entered Currency Code
99285  , p_source_15            IN VARCHAR2
99286 --Entered Amount
99287  , p_source_18            IN NUMBER
99288 --Currency Conversion Date
99289  , p_source_19            IN DATE
99290 --Currency Conversion Rate
99291  , p_source_20            IN NUMBER
99292 --Currency Conversion Type
99293  , p_source_21            IN VARCHAR2
99294 --Accounted Amount
99295  , p_source_22            IN NUMBER
99296 --Accounting Line Type
99297  , p_source_24            IN NUMBER
99298 )
99299 IS
99300 
99301 l_component_type              VARCHAR2(80);
99302 l_component_code              VARCHAR2(30);
99303 l_component_type_code         VARCHAR2(1);
99304 l_component_appl_id           INTEGER;
99305 l_amb_context_code            VARCHAR2(30);
99306 l_entity_code                 VARCHAR2(30);
99307 l_event_class_code            VARCHAR2(30);
99308 l_ae_header_id                NUMBER;
99309 l_event_type_code             VARCHAR2(30);
99310 l_line_definition_code        VARCHAR2(30);
99311 l_line_definition_owner_code  VARCHAR2(1);
99312 --
99313 -- adr variables
99314 l_segment                     VARCHAR2(30);
99315 l_ccid                        NUMBER;
99316 l_adr_transaction_coa_id      NUMBER;
99317 l_adr_accounting_coa_id       NUMBER;
99318 l_adr_flexfield_segment_code  VARCHAR2(30);
99319 l_adr_flex_value_set_id       NUMBER;
99320 l_adr_value_type_code         VARCHAR2(30);
99321 l_adr_value_combination_id    NUMBER;
99322 l_adr_value_segment_code      VARCHAR2(30);
99323 
99324 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
99325 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
99326 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
99327 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
99328 
99329 -- 4262811 Variables ------------------------------------------------------------------------------------------
99330 l_entered_amt_idx             NUMBER;
99331 l_accted_amt_idx              NUMBER;
99332 l_acc_rev_flag                VARCHAR2(1);
99333 l_accrual_line_num            NUMBER;
99334 l_tmp_amt                     NUMBER;
99335 l_acc_rev_natural_side_code   VARCHAR2(1);
99336 
99337 l_num_entries                 NUMBER;
99338 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
99339 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
99340 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
99341 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
99342 l_recog_line_1                NUMBER;
99343 l_recog_line_2                NUMBER;
99344 
99345 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
99346 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
99347 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
99348 
99349 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
99350 
99351 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
99352 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
99353 
99354 ---------------------------------------------------------------------------------------------------------------
99355 
99356 
99357 --
99358 -- bulk performance
99359 --
99360 l_balance_type_code           VARCHAR2(1);
99361 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
99362 l_log_module                  VARCHAR2(240);
99363 
99364 --
99365 -- Upgrade strategy
99366 --
99367 l_actual_upg_option           VARCHAR2(1);
99368 l_enc_upg_option           VARCHAR2(1);
99369 
99370 --
99371 BEGIN
99372 --
99373 IF g_log_enabled THEN
99374       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_181';
99375 END IF;
99376 --
99377 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
99378 
99379       trace
99380          (p_msg      => 'BEGIN of AcctLineType_181'
99381          ,p_level    => C_LEVEL_PROCEDURE
99382          ,p_module   => l_log_module);
99383 
99384 END IF;
99385 --
99386 l_component_type             := 'AMB_JLT';
99387 l_component_code             := 'OFFSET';
99388 l_component_type_code        := 'S';
99389 l_component_appl_id          :=  707;
99390 l_amb_context_code           := 'DEFAULT';
99391 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
99392 l_event_class_code           := 'USER_DEFINE';
99393 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
99394 l_line_definition_owner_code := 'S';
99395 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_TP';
99396 --
99397 l_balance_type_code          := 'A';
99398 l_segment                     := NULL;
99399 l_ccid                        := NULL;
99400 l_adr_transaction_coa_id      := NULL;
99401 l_adr_accounting_coa_id       := NULL;
99402 l_adr_flexfield_segment_code  := NULL;
99403 l_adr_flex_value_set_id       := NULL;
99404 l_adr_value_type_code         := NULL;
99405 l_adr_value_combination_id    := NULL;
99406 l_adr_value_segment_code      := NULL;
99407 
99408 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
99409 l_bflow_class_code           := '';    -- 4219869 Business Flow
99410 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
99411 l_budgetary_control_flag     := 'N';
99412 
99413 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
99414 l_bflow_applied_to_amt       := NULL; -- 5132302
99415 l_entered_amt_idx            := NULL;          -- 4262811
99416 l_accted_amt_idx             := NULL;          -- 4262811
99417 l_acc_rev_flag               := NULL;          -- 4262811
99418 l_accrual_line_num           := NULL;          -- 4262811
99419 l_tmp_amt                    := NULL;          -- 4262811
99420 --
99421  
99422 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
99423     l_balance_type_code <> 'B' THEN
99424 IF NVL(p_source_24,9E125) =  2
99425  THEN 
99426 
99427    --
99428    XLA_AE_LINES_PKG.SetNewLine;
99429 
99430    p_balance_type_code          := l_balance_type_code;
99431    -- set the flag so later we will know whether the gain loss line needs to be created
99432    
99433    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
99434      p_actual_flag :='A';
99435    END IF;
99436 
99437    --
99438    -- bulk performance
99439    --
99440    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
99441                                       p_header_num   => 0); -- 4262811
99442    --
99443    -- set accounting line options
99444    --
99445    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
99446            p_natural_side_code          => 'D'
99447          , p_gain_or_loss_flag          => 'N'
99448          , p_gl_transfer_mode_code      => 'S'
99449          , p_acct_entry_type_code       => 'A'
99450          , p_switch_side_flag           => 'Y'
99451          , p_merge_duplicate_code       => 'N'
99452          );
99453    --
99454    l_acc_rev_natural_side_code := 'C';  -- 4262811
99455    -- 
99456    --
99457    -- set accounting line type info
99458    --
99459    xla_ae_lines_pkg.SetAcctLineType
99460       (p_component_type             => l_component_type
99461       ,p_event_type_code            => l_event_type_code
99462       ,p_line_definition_owner_code => l_line_definition_owner_code
99463       ,p_line_definition_code       => l_line_definition_code
99464       ,p_accounting_line_code       => l_component_code
99465       ,p_accounting_line_type_code  => l_component_type_code
99466       ,p_accounting_line_appl_id    => l_component_appl_id
99467       ,p_amb_context_code           => l_amb_context_code
99468       ,p_entity_code                => l_entity_code
99469       ,p_event_class_code           => l_event_class_code);
99470    --
99471    -- set accounting class
99472    --
99473    xla_ae_lines_pkg.SetAcctClass(
99474            p_accounting_class_code  => 'OFFSET'
99475          , p_ae_header_id           => l_ae_header_id
99476          );
99477 
99478    --
99479    -- set rounding class
99480    --
99481    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
99482                       'OFFSET';
99483 
99484    --
99485    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
99486    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
99487    --
99488    -- bulk performance
99489    --
99490    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
99491 
99492    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
99493       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
99494 
99495    -- 4955764
99496    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
99497       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
99498 
99499    -- 4458381 Public Sector Enh
99500    
99501    --
99502    -- set accounting attributes for the line type
99503    --
99504    l_entered_amt_idx := 3;
99505    l_accted_amt_idx  := 8;
99506    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
99507    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
99508    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
99509    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
99510    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
99511    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
99512    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
99513    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
99514    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
99515    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
99516    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
99517    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
99518    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
99519    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
99520    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
99521    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
99522    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
99523 
99524    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
99525    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
99526 
99527    ---------------------------------------------------------------------------------------------------------------
99528    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
99529    ---------------------------------------------------------------------------------------------------------------
99530    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
99531 
99532    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
99533    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
99534 
99535    IF xla_accounting_cache_pkg.GetValueChar
99536          (p_source_code         => 'LEDGER_CATEGORY_CODE'
99537          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
99538    AND l_bflow_method_code = 'PRIOR_ENTRY'
99539 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
99540    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
99541          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
99542        )
99543    THEN
99544          xla_ae_lines_pkg.BflowUpgEntry
99545            (p_business_method_code    => l_bflow_method_code
99546            ,p_business_class_code     => l_bflow_class_code
99547            ,p_balance_type            => l_balance_type_code);
99548    ELSE
99549       NULL;
99550 -- No business flow processing for business flow method of NONE.
99551    END IF;
99552 
99553    --
99554    -- call analytical criteria
99555    --
99556    
99557    --
99558    -- call description
99559    --
99560    -- No description or it is inherited.
99561    --
99562    -- call ADRs
99563    -- Bug 4922099
99564    --
99565    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
99566         (NVL(l_actual_upg_option, 'N') = 'O') OR
99567         (NVL(l_enc_upg_option, 'N') = 'O')
99568       )
99569    THEN
99570    NULL;
99571    --
99572    --
99573    
99574   l_ccid := AcctDerRule_4(
99575            p_application_id           => p_application_id
99576          , p_ae_header_id             => l_ae_header_id 
99577 , p_source_4 => p_source_4
99578          , x_transaction_coa_id       => l_adr_transaction_coa_id
99579          , x_accounting_coa_id        => l_adr_accounting_coa_id
99580          , x_value_type_code          => l_adr_value_type_code
99581          , p_side                     => 'NA'
99582    );
99583 
99584    xla_ae_lines_pkg.set_ccid(
99585     p_code_combination_id          => l_ccid
99586   , p_value_type_code              => l_adr_value_type_code
99587   , p_transaction_coa_id           => l_adr_transaction_coa_id
99588   , p_accounting_coa_id            => l_adr_accounting_coa_id
99589   , p_adr_code                     => 'CST_DEFAULT'
99590   , p_adr_type_code                => 'S'
99591   , p_component_type               => l_component_type
99592   , p_component_code               => l_component_code
99593   , p_component_type_code          => l_component_type_code
99594   , p_component_appl_id            => l_component_appl_id
99595   , p_amb_context_code             => l_amb_context_code
99596   , p_side                         => 'NA'
99597   );
99598 
99599 
99600    --
99601    --
99602    END IF;
99603    --
99604    -- Bug 4922099
99605    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
99606           (NVL(l_enc_upg_option, 'N') = 'O')
99607         ) AND
99608         (l_bflow_method_code = 'PRIOR_ENTRY')
99609       )
99610    THEN
99611       IF
99612       --
99613       1 = 2
99614       --
99615       THEN
99616       xla_accounting_err_pkg.build_message
99617                                     (p_appli_s_name            => 'XLA'
99618                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
99619                                     ,p_token_1                 => 'LINE_NUMBER'
99620                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
99621                                     ,p_token_2                 => 'LINE_TYPE_NAME'
99622                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
99623                                                                              l_component_type
99624                                                                             ,l_component_code
99625                                                                             ,l_component_type_code
99626                                                                             ,l_component_appl_id
99627                                                                             ,l_amb_context_code
99628                                                                             ,l_entity_code
99629                                                                             ,l_event_class_code
99630                                                                            )
99631                                     ,p_token_3                 => 'OWNER'
99632                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
99633                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
99634                                                                           ,p_lookup_code    => l_component_type_code
99635                                                                          )
99636                                     ,p_token_4                 => 'PRODUCT_NAME'
99637                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
99638                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
99639                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
99640                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
99641                                     ,p_ae_header_id            =>  NULL
99642                                        );
99643 
99644         IF (C_LEVEL_ERROR>= g_log_level) THEN
99645                  trace
99646                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
99647                       ,p_level    => C_LEVEL_ERROR
99648                       ,p_module   => l_log_module);
99649         END IF;
99650       END IF;
99651    END IF;
99652    --
99653    --
99654    ------------------------------------------------------------------------------------------------
99655    -- 4219869 Business Flow
99656    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
99657    -- Prior Entry.  Currently, the following code is always generated.
99658    ------------------------------------------------------------------------------------------------
99659    XLA_AE_LINES_PKG.ValidateCurrentLine;
99660 
99661    ------------------------------------------------------------------------------------
99662    -- 4219869 Business Flow
99663    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
99664    ------------------------------------------------------------------------------------
99665    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
99666 
99667    ----------------------------------------------------------------------------------
99668    -- 4219869 Business Flow
99669    -- Update journal entry status -- Need to generate this within IF <condition>
99670    ----------------------------------------------------------------------------------
99671    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
99672          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
99673          ,p_balance_type_code => l_balance_type_code
99674          );
99675 
99676    -------------------------------------------------------------------------------------------
99677    -- 4262811 - Generate the Accrual Reversal lines
99678    -------------------------------------------------------------------------------------------
99679    BEGIN
99680       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
99681                               (g_array_event(p_event_id).array_value_num('header_index'));
99682       IF l_acc_rev_flag IS NULL THEN
99683          l_acc_rev_flag := 'N';
99684       END IF;
99685    EXCEPTION
99686       WHEN OTHERS THEN
99687          l_acc_rev_flag := 'N';
99688    END;
99689    --
99690    IF (l_acc_rev_flag = 'Y') THEN
99691 
99692        -- 4645092  ------------------------------------------------------------------------------
99693        -- To allow MPA report to determine if it should generate report process
99694        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
99695        ------------------------------------------------------------------------------------------
99696 
99697        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
99698        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
99699    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
99700    -- call ADRs
99701    -- Bug 4922099
99702    --
99703    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
99704         (NVL(l_actual_upg_option, 'N') = 'O') OR
99705         (NVL(l_enc_upg_option, 'N') = 'O')
99706       )
99707    THEN
99708    NULL;
99709    --
99710    --
99711    
99712   l_ccid := AcctDerRule_4(
99713            p_application_id           => p_application_id
99714          , p_ae_header_id             => l_ae_header_id 
99715 , p_source_4 => p_source_4
99716          , x_transaction_coa_id       => l_adr_transaction_coa_id
99717          , x_accounting_coa_id        => l_adr_accounting_coa_id
99718          , x_value_type_code          => l_adr_value_type_code
99719          , p_side                     => 'NA'
99720    );
99721 
99722    xla_ae_lines_pkg.set_ccid(
99723     p_code_combination_id          => l_ccid
99724   , p_value_type_code              => l_adr_value_type_code
99725   , p_transaction_coa_id           => l_adr_transaction_coa_id
99726   , p_accounting_coa_id            => l_adr_accounting_coa_id
99727   , p_adr_code                     => 'CST_DEFAULT'
99728   , p_adr_type_code                => 'S'
99729   , p_component_type               => l_component_type
99730   , p_component_code               => l_component_code
99731   , p_component_type_code          => l_component_type_code
99732   , p_component_appl_id            => l_component_appl_id
99733   , p_amb_context_code             => l_amb_context_code
99734   , p_side                         => 'NA'
99735   );
99736 
99737 
99738    --
99739    --
99740    END IF;
99741 
99742        --
99743        -- Update the line information that should be overwritten
99744        --
99745        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
99746                                          p_header_num   => 1);
99747        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
99748 
99749        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
99750 
99751        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
99752           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
99753        END IF;
99754 
99755       --
99756       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
99757       --
99758       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
99759           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
99760       ELSE
99761           ---------------------------------------------------------------------------------------------------
99762           -- 4262811a Switch Sign
99763           ---------------------------------------------------------------------------------------------------
99764           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
99765           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
99766                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99767           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
99768                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99769           -- 5132302
99770           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
99771                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99772 
99773       END IF;
99774 
99775       -- 4955764
99776       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
99777       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
99778 
99779 
99780       XLA_AE_LINES_PKG.ValidateCurrentLine;
99781       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
99782 
99783       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
99784                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
99785                ,p_balance_type_code => l_balance_type_code);
99786 
99787    END IF;
99788 
99789    -----------------------------------------------------------------------------------------
99790    -- 4262811 Multiperiod Accounting
99791    -----------------------------------------------------------------------------------------
99792      -- No MPA option is assigned.
99793 
99794 
99795 END IF;
99796 END IF;
99797 --
99798 
99799 --
99800 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
99801    trace
99802       (p_msg      => 'END of AcctLineType_181'
99803       ,p_level    => C_LEVEL_PROCEDURE
99804       ,p_module   => l_log_module);
99805 END IF;
99806 --
99807 EXCEPTION
99808   WHEN xla_exceptions_pkg.application_exception THEN
99809       RAISE;
99810   WHEN OTHERS THEN
99811        xla_exceptions_pkg.raise_message
99812            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_181');
99813 END AcctLineType_181;
99814 --
99815 
99816 ---------------------------------------
99817 --
99818 -- PRIVATE FUNCTION
99819 --         AcctLineType_182
99820 --
99821 ---------------------------------------
99822 PROCEDURE AcctLineType_182 (
99823   p_application_id        IN NUMBER
99824  ,p_event_id              IN NUMBER
99825  ,p_calculate_acctd_flag  IN VARCHAR2
99826  ,p_calculate_g_l_flag    IN VARCHAR2
99827  ,p_actual_flag           IN OUT VARCHAR2
99828  ,p_balance_type_code     OUT VARCHAR2
99829  ,p_gain_or_loss_ref      OUT VARCHAR2
99830  
99831 --Cost Management Default Account
99832  , p_source_4            IN NUMBER
99833 --DISTRIBUTION_IDENTIFIER
99834  , p_source_11            IN NUMBER
99835 --Distribution Type
99836  , p_source_12            IN VARCHAR2
99837  , p_source_12_meaning    IN VARCHAR2
99838 --Entered Currency Code
99839  , p_source_15            IN VARCHAR2
99840 --Entered Amount
99841  , p_source_18            IN NUMBER
99842 --Currency Conversion Date
99843  , p_source_19            IN DATE
99844 --Currency Conversion Rate
99845  , p_source_20            IN NUMBER
99846 --Currency Conversion Type
99847  , p_source_21            IN VARCHAR2
99848 --Accounted Amount
99849  , p_source_22            IN NUMBER
99850 --Accounting Line Type
99851  , p_source_24            IN NUMBER
99852 )
99853 IS
99854 
99855 l_component_type              VARCHAR2(80);
99856 l_component_code              VARCHAR2(30);
99857 l_component_type_code         VARCHAR2(1);
99858 l_component_appl_id           INTEGER;
99859 l_amb_context_code            VARCHAR2(30);
99860 l_entity_code                 VARCHAR2(30);
99861 l_event_class_code            VARCHAR2(30);
99862 l_ae_header_id                NUMBER;
99863 l_event_type_code             VARCHAR2(30);
99864 l_line_definition_code        VARCHAR2(30);
99865 l_line_definition_owner_code  VARCHAR2(1);
99866 --
99867 -- adr variables
99868 l_segment                     VARCHAR2(30);
99869 l_ccid                        NUMBER;
99870 l_adr_transaction_coa_id      NUMBER;
99871 l_adr_accounting_coa_id       NUMBER;
99872 l_adr_flexfield_segment_code  VARCHAR2(30);
99873 l_adr_flex_value_set_id       NUMBER;
99874 l_adr_value_type_code         VARCHAR2(30);
99875 l_adr_value_combination_id    NUMBER;
99876 l_adr_value_segment_code      VARCHAR2(30);
99877 
99878 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
99879 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
99880 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
99881 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
99882 
99883 -- 4262811 Variables ------------------------------------------------------------------------------------------
99884 l_entered_amt_idx             NUMBER;
99885 l_accted_amt_idx              NUMBER;
99886 l_acc_rev_flag                VARCHAR2(1);
99887 l_accrual_line_num            NUMBER;
99888 l_tmp_amt                     NUMBER;
99889 l_acc_rev_natural_side_code   VARCHAR2(1);
99890 
99891 l_num_entries                 NUMBER;
99892 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
99893 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
99894 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
99895 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
99896 l_recog_line_1                NUMBER;
99897 l_recog_line_2                NUMBER;
99898 
99899 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
99900 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
99901 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
99902 
99903 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
99904 
99905 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
99906 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
99907 
99908 ---------------------------------------------------------------------------------------------------------------
99909 
99910 
99911 --
99912 -- bulk performance
99913 --
99914 l_balance_type_code           VARCHAR2(1);
99915 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
99916 l_log_module                  VARCHAR2(240);
99917 
99918 --
99919 -- Upgrade strategy
99920 --
99921 l_actual_upg_option           VARCHAR2(1);
99922 l_enc_upg_option           VARCHAR2(1);
99923 
99924 --
99925 BEGIN
99926 --
99927 IF g_log_enabled THEN
99928       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_182';
99929 END IF;
99930 --
99931 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
99932 
99933       trace
99934          (p_msg      => 'BEGIN of AcctLineType_182'
99935          ,p_level    => C_LEVEL_PROCEDURE
99936          ,p_module   => l_log_module);
99937 
99938 END IF;
99939 --
99940 l_component_type             := 'AMB_JLT';
99941 l_component_code             := 'OFFSET';
99942 l_component_type_code        := 'S';
99943 l_component_appl_id          :=  707;
99944 l_amb_context_code           := 'DEFAULT';
99945 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
99946 l_event_class_code           := 'USER_DEFINE';
99947 l_event_type_code            := 'USUB_TXFR';
99948 l_line_definition_owner_code := 'S';
99949 l_line_definition_code       := 'USER_SUB_TXFR';
99950 --
99951 l_balance_type_code          := 'A';
99952 l_segment                     := NULL;
99953 l_ccid                        := NULL;
99954 l_adr_transaction_coa_id      := NULL;
99955 l_adr_accounting_coa_id       := NULL;
99956 l_adr_flexfield_segment_code  := NULL;
99957 l_adr_flex_value_set_id       := NULL;
99958 l_adr_value_type_code         := NULL;
99959 l_adr_value_combination_id    := NULL;
99960 l_adr_value_segment_code      := NULL;
99961 
99962 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
99963 l_bflow_class_code           := '';    -- 4219869 Business Flow
99964 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
99965 l_budgetary_control_flag     := 'N';
99966 
99967 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
99968 l_bflow_applied_to_amt       := NULL; -- 5132302
99969 l_entered_amt_idx            := NULL;          -- 4262811
99970 l_accted_amt_idx             := NULL;          -- 4262811
99971 l_acc_rev_flag               := NULL;          -- 4262811
99972 l_accrual_line_num           := NULL;          -- 4262811
99973 l_tmp_amt                    := NULL;          -- 4262811
99974 --
99975  
99976 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
99977     l_balance_type_code <> 'B' THEN
99978 IF NVL(p_source_24,9E125) =  2
99979  THEN 
99980 
99981    --
99982    XLA_AE_LINES_PKG.SetNewLine;
99983 
99984    p_balance_type_code          := l_balance_type_code;
99985    -- set the flag so later we will know whether the gain loss line needs to be created
99986    
99987    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
99988      p_actual_flag :='A';
99989    END IF;
99990 
99991    --
99992    -- bulk performance
99993    --
99994    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
99995                                       p_header_num   => 0); -- 4262811
99996    --
99997    -- set accounting line options
99998    --
99999    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
100000            p_natural_side_code          => 'D'
100001          , p_gain_or_loss_flag          => 'N'
100002          , p_gl_transfer_mode_code      => 'S'
100003          , p_acct_entry_type_code       => 'A'
100004          , p_switch_side_flag           => 'Y'
100005          , p_merge_duplicate_code       => 'N'
100006          );
100007    --
100008    l_acc_rev_natural_side_code := 'C';  -- 4262811
100009    -- 
100010    --
100011    -- set accounting line type info
100012    --
100013    xla_ae_lines_pkg.SetAcctLineType
100014       (p_component_type             => l_component_type
100015       ,p_event_type_code            => l_event_type_code
100016       ,p_line_definition_owner_code => l_line_definition_owner_code
100017       ,p_line_definition_code       => l_line_definition_code
100018       ,p_accounting_line_code       => l_component_code
100019       ,p_accounting_line_type_code  => l_component_type_code
100020       ,p_accounting_line_appl_id    => l_component_appl_id
100021       ,p_amb_context_code           => l_amb_context_code
100022       ,p_entity_code                => l_entity_code
100023       ,p_event_class_code           => l_event_class_code);
100024    --
100025    -- set accounting class
100026    --
100027    xla_ae_lines_pkg.SetAcctClass(
100028            p_accounting_class_code  => 'OFFSET'
100029          , p_ae_header_id           => l_ae_header_id
100030          );
100031 
100032    --
100033    -- set rounding class
100034    --
100035    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
100036                       'OFFSET';
100037 
100038    --
100039    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
100040    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
100041    --
100042    -- bulk performance
100043    --
100044    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
100045 
100046    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
100047       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
100048 
100049    -- 4955764
100050    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
100051       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
100052 
100053    -- 4458381 Public Sector Enh
100054    
100055    --
100056    -- set accounting attributes for the line type
100057    --
100058    l_entered_amt_idx := 3;
100059    l_accted_amt_idx  := 8;
100060    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
100061    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
100062    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
100063    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
100064    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
100065    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
100066    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
100067    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
100068    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
100069    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
100070    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
100071    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
100072    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
100073    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
100074    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
100075    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
100076    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
100077 
100078    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
100079    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
100080 
100081    ---------------------------------------------------------------------------------------------------------------
100082    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
100083    ---------------------------------------------------------------------------------------------------------------
100084    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
100085 
100086    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
100087    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
100088 
100089    IF xla_accounting_cache_pkg.GetValueChar
100090          (p_source_code         => 'LEDGER_CATEGORY_CODE'
100091          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
100092    AND l_bflow_method_code = 'PRIOR_ENTRY'
100093 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
100094    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
100095          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
100096        )
100097    THEN
100098          xla_ae_lines_pkg.BflowUpgEntry
100099            (p_business_method_code    => l_bflow_method_code
100100            ,p_business_class_code     => l_bflow_class_code
100101            ,p_balance_type            => l_balance_type_code);
100102    ELSE
100103       NULL;
100104 -- No business flow processing for business flow method of NONE.
100105    END IF;
100106 
100107    --
100108    -- call analytical criteria
100109    --
100110    
100111    --
100112    -- call description
100113    --
100114    -- No description or it is inherited.
100115    --
100116    -- call ADRs
100117    -- Bug 4922099
100118    --
100119    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
100120         (NVL(l_actual_upg_option, 'N') = 'O') OR
100121         (NVL(l_enc_upg_option, 'N') = 'O')
100122       )
100123    THEN
100124    NULL;
100125    --
100126    --
100127    
100128   l_ccid := AcctDerRule_4(
100129            p_application_id           => p_application_id
100130          , p_ae_header_id             => l_ae_header_id 
100131 , p_source_4 => p_source_4
100132          , x_transaction_coa_id       => l_adr_transaction_coa_id
100133          , x_accounting_coa_id        => l_adr_accounting_coa_id
100134          , x_value_type_code          => l_adr_value_type_code
100135          , p_side                     => 'NA'
100136    );
100137 
100138    xla_ae_lines_pkg.set_ccid(
100139     p_code_combination_id          => l_ccid
100140   , p_value_type_code              => l_adr_value_type_code
100141   , p_transaction_coa_id           => l_adr_transaction_coa_id
100142   , p_accounting_coa_id            => l_adr_accounting_coa_id
100143   , p_adr_code                     => 'CST_DEFAULT'
100144   , p_adr_type_code                => 'S'
100145   , p_component_type               => l_component_type
100146   , p_component_code               => l_component_code
100147   , p_component_type_code          => l_component_type_code
100148   , p_component_appl_id            => l_component_appl_id
100149   , p_amb_context_code             => l_amb_context_code
100150   , p_side                         => 'NA'
100151   );
100152 
100153 
100154    --
100155    --
100156    END IF;
100157    --
100158    -- Bug 4922099
100159    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
100160           (NVL(l_enc_upg_option, 'N') = 'O')
100161         ) AND
100162         (l_bflow_method_code = 'PRIOR_ENTRY')
100163       )
100164    THEN
100165       IF
100166       --
100167       1 = 2
100168       --
100169       THEN
100170       xla_accounting_err_pkg.build_message
100171                                     (p_appli_s_name            => 'XLA'
100172                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
100173                                     ,p_token_1                 => 'LINE_NUMBER'
100174                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
100175                                     ,p_token_2                 => 'LINE_TYPE_NAME'
100176                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
100177                                                                              l_component_type
100178                                                                             ,l_component_code
100179                                                                             ,l_component_type_code
100180                                                                             ,l_component_appl_id
100181                                                                             ,l_amb_context_code
100182                                                                             ,l_entity_code
100183                                                                             ,l_event_class_code
100184                                                                            )
100185                                     ,p_token_3                 => 'OWNER'
100186                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
100187                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
100188                                                                           ,p_lookup_code    => l_component_type_code
100189                                                                          )
100190                                     ,p_token_4                 => 'PRODUCT_NAME'
100191                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
100192                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
100193                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
100194                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
100195                                     ,p_ae_header_id            =>  NULL
100196                                        );
100197 
100198         IF (C_LEVEL_ERROR>= g_log_level) THEN
100199                  trace
100200                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
100201                       ,p_level    => C_LEVEL_ERROR
100202                       ,p_module   => l_log_module);
100203         END IF;
100204       END IF;
100205    END IF;
100206    --
100207    --
100208    ------------------------------------------------------------------------------------------------
100209    -- 4219869 Business Flow
100210    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
100211    -- Prior Entry.  Currently, the following code is always generated.
100212    ------------------------------------------------------------------------------------------------
100213    XLA_AE_LINES_PKG.ValidateCurrentLine;
100214 
100215    ------------------------------------------------------------------------------------
100216    -- 4219869 Business Flow
100217    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
100218    ------------------------------------------------------------------------------------
100219    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
100220 
100221    ----------------------------------------------------------------------------------
100222    -- 4219869 Business Flow
100223    -- Update journal entry status -- Need to generate this within IF <condition>
100224    ----------------------------------------------------------------------------------
100225    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
100226          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
100227          ,p_balance_type_code => l_balance_type_code
100228          );
100229 
100230    -------------------------------------------------------------------------------------------
100231    -- 4262811 - Generate the Accrual Reversal lines
100232    -------------------------------------------------------------------------------------------
100233    BEGIN
100234       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
100235                               (g_array_event(p_event_id).array_value_num('header_index'));
100236       IF l_acc_rev_flag IS NULL THEN
100237          l_acc_rev_flag := 'N';
100238       END IF;
100239    EXCEPTION
100240       WHEN OTHERS THEN
100241          l_acc_rev_flag := 'N';
100242    END;
100243    --
100244    IF (l_acc_rev_flag = 'Y') THEN
100245 
100246        -- 4645092  ------------------------------------------------------------------------------
100247        -- To allow MPA report to determine if it should generate report process
100248        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
100249        ------------------------------------------------------------------------------------------
100250 
100251        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
100252        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
100253    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
100254    -- call ADRs
100255    -- Bug 4922099
100256    --
100257    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
100258         (NVL(l_actual_upg_option, 'N') = 'O') OR
100259         (NVL(l_enc_upg_option, 'N') = 'O')
100260       )
100261    THEN
100262    NULL;
100263    --
100264    --
100265    
100266   l_ccid := AcctDerRule_4(
100267            p_application_id           => p_application_id
100268          , p_ae_header_id             => l_ae_header_id 
100269 , p_source_4 => p_source_4
100270          , x_transaction_coa_id       => l_adr_transaction_coa_id
100271          , x_accounting_coa_id        => l_adr_accounting_coa_id
100272          , x_value_type_code          => l_adr_value_type_code
100273          , p_side                     => 'NA'
100274    );
100275 
100276    xla_ae_lines_pkg.set_ccid(
100277     p_code_combination_id          => l_ccid
100278   , p_value_type_code              => l_adr_value_type_code
100279   , p_transaction_coa_id           => l_adr_transaction_coa_id
100280   , p_accounting_coa_id            => l_adr_accounting_coa_id
100281   , p_adr_code                     => 'CST_DEFAULT'
100282   , p_adr_type_code                => 'S'
100283   , p_component_type               => l_component_type
100284   , p_component_code               => l_component_code
100285   , p_component_type_code          => l_component_type_code
100286   , p_component_appl_id            => l_component_appl_id
100287   , p_amb_context_code             => l_amb_context_code
100288   , p_side                         => 'NA'
100289   );
100290 
100291 
100292    --
100293    --
100294    END IF;
100295 
100296        --
100297        -- Update the line information that should be overwritten
100298        --
100299        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
100300                                          p_header_num   => 1);
100301        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
100302 
100303        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
100304 
100305        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
100306           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
100307        END IF;
100308 
100309       --
100310       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
100311       --
100312       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
100313           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
100314       ELSE
100315           ---------------------------------------------------------------------------------------------------
100316           -- 4262811a Switch Sign
100317           ---------------------------------------------------------------------------------------------------
100318           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
100319           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
100320                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100321           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
100322                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100323           -- 5132302
100324           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
100325                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100326 
100327       END IF;
100328 
100329       -- 4955764
100330       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
100331       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
100332 
100333 
100334       XLA_AE_LINES_PKG.ValidateCurrentLine;
100335       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
100336 
100337       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
100338                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
100339                ,p_balance_type_code => l_balance_type_code);
100340 
100341    END IF;
100342 
100343    -----------------------------------------------------------------------------------------
100344    -- 4262811 Multiperiod Accounting
100345    -----------------------------------------------------------------------------------------
100346      -- No MPA option is assigned.
100347 
100348 
100349 END IF;
100350 END IF;
100351 --
100352 
100353 --
100354 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
100355    trace
100356       (p_msg      => 'END of AcctLineType_182'
100357       ,p_level    => C_LEVEL_PROCEDURE
100358       ,p_module   => l_log_module);
100359 END IF;
100360 --
100361 EXCEPTION
100362   WHEN xla_exceptions_pkg.application_exception THEN
100363       RAISE;
100364   WHEN OTHERS THEN
100365        xla_exceptions_pkg.raise_message
100366            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_182');
100367 END AcctLineType_182;
100368 --
100369 
100370 ---------------------------------------
100371 --
100372 -- PRIVATE FUNCTION
100373 --         AcctLineType_183
100374 --
100375 ---------------------------------------
100376 PROCEDURE AcctLineType_183 (
100377   p_application_id        IN NUMBER
100378  ,p_event_id              IN NUMBER
100379  ,p_calculate_acctd_flag  IN VARCHAR2
100380  ,p_calculate_g_l_flag    IN VARCHAR2
100381  ,p_actual_flag           IN OUT VARCHAR2
100382  ,p_balance_type_code     OUT VARCHAR2
100383  ,p_gain_or_loss_ref      OUT VARCHAR2
100384  
100385 --Cost Management Default Account
100386  , p_source_4            IN NUMBER
100387 --DISTRIBUTION_IDENTIFIER
100388  , p_source_11            IN NUMBER
100389 --Distribution Type
100390  , p_source_12            IN VARCHAR2
100391  , p_source_12_meaning    IN VARCHAR2
100392 --Entered Currency Code
100393  , p_source_15            IN VARCHAR2
100394 --Entered Amount
100395  , p_source_18            IN NUMBER
100396 --Currency Conversion Date
100397  , p_source_19            IN DATE
100398 --Currency Conversion Rate
100399  , p_source_20            IN NUMBER
100400 --Currency Conversion Type
100401  , p_source_21            IN VARCHAR2
100402 --Accounted Amount
100403  , p_source_22            IN NUMBER
100404 --Accounting Line Type
100405  , p_source_24            IN NUMBER
100406 )
100407 IS
100408 
100409 l_component_type              VARCHAR2(80);
100410 l_component_code              VARCHAR2(30);
100411 l_component_type_code         VARCHAR2(1);
100412 l_component_appl_id           INTEGER;
100413 l_amb_context_code            VARCHAR2(30);
100414 l_entity_code                 VARCHAR2(30);
100415 l_event_class_code            VARCHAR2(30);
100416 l_ae_header_id                NUMBER;
100417 l_event_type_code             VARCHAR2(30);
100418 l_line_definition_code        VARCHAR2(30);
100419 l_line_definition_owner_code  VARCHAR2(1);
100420 --
100421 -- adr variables
100422 l_segment                     VARCHAR2(30);
100423 l_ccid                        NUMBER;
100424 l_adr_transaction_coa_id      NUMBER;
100425 l_adr_accounting_coa_id       NUMBER;
100426 l_adr_flexfield_segment_code  VARCHAR2(30);
100427 l_adr_flex_value_set_id       NUMBER;
100428 l_adr_value_type_code         VARCHAR2(30);
100429 l_adr_value_combination_id    NUMBER;
100430 l_adr_value_segment_code      VARCHAR2(30);
100431 
100432 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
100433 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
100434 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
100435 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
100436 
100437 -- 4262811 Variables ------------------------------------------------------------------------------------------
100438 l_entered_amt_idx             NUMBER;
100439 l_accted_amt_idx              NUMBER;
100440 l_acc_rev_flag                VARCHAR2(1);
100441 l_accrual_line_num            NUMBER;
100442 l_tmp_amt                     NUMBER;
100443 l_acc_rev_natural_side_code   VARCHAR2(1);
100444 
100445 l_num_entries                 NUMBER;
100446 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
100447 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
100448 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
100449 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
100450 l_recog_line_1                NUMBER;
100451 l_recog_line_2                NUMBER;
100452 
100453 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
100454 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
100455 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
100456 
100457 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
100458 
100459 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
100460 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
100461 
100462 ---------------------------------------------------------------------------------------------------------------
100463 
100464 
100465 --
100466 -- bulk performance
100467 --
100468 l_balance_type_code           VARCHAR2(1);
100469 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
100470 l_log_module                  VARCHAR2(240);
100471 
100472 --
100473 -- Upgrade strategy
100474 --
100475 l_actual_upg_option           VARCHAR2(1);
100476 l_enc_upg_option           VARCHAR2(1);
100477 
100478 --
100479 BEGIN
100480 --
100481 IF g_log_enabled THEN
100482       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_183';
100483 END IF;
100484 --
100485 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
100486 
100487       trace
100488          (p_msg      => 'BEGIN of AcctLineType_183'
100489          ,p_level    => C_LEVEL_PROCEDURE
100490          ,p_module   => l_log_module);
100491 
100492 END IF;
100493 --
100494 l_component_type             := 'AMB_JLT';
100495 l_component_code             := 'OFFSET';
100496 l_component_type_code        := 'S';
100497 l_component_appl_id          :=  707;
100498 l_amb_context_code           := 'DEFAULT';
100499 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
100500 l_event_class_code           := 'WIP_LOT';
100501 l_event_type_code            := 'WIP_LOT_ALL';
100502 l_line_definition_owner_code := 'S';
100503 l_line_definition_code       := 'WIP_LOT';
100504 --
100505 l_balance_type_code          := 'A';
100506 l_segment                     := NULL;
100507 l_ccid                        := NULL;
100508 l_adr_transaction_coa_id      := NULL;
100509 l_adr_accounting_coa_id       := NULL;
100510 l_adr_flexfield_segment_code  := NULL;
100511 l_adr_flex_value_set_id       := NULL;
100512 l_adr_value_type_code         := NULL;
100513 l_adr_value_combination_id    := NULL;
100514 l_adr_value_segment_code      := NULL;
100515 
100516 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
100517 l_bflow_class_code           := '';    -- 4219869 Business Flow
100518 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
100519 l_budgetary_control_flag     := 'N';
100520 
100521 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
100522 l_bflow_applied_to_amt       := NULL; -- 5132302
100523 l_entered_amt_idx            := NULL;          -- 4262811
100524 l_accted_amt_idx             := NULL;          -- 4262811
100525 l_acc_rev_flag               := NULL;          -- 4262811
100526 l_accrual_line_num           := NULL;          -- 4262811
100527 l_tmp_amt                    := NULL;          -- 4262811
100528 --
100529  
100530 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
100531     l_balance_type_code <> 'B' THEN
100532 IF NVL(p_source_24,9E125) =  25 OR 
100533 NVL(p_source_24,9E125) =  27
100534  THEN 
100535 
100536    --
100537    XLA_AE_LINES_PKG.SetNewLine;
100538 
100539    p_balance_type_code          := l_balance_type_code;
100540    -- set the flag so later we will know whether the gain loss line needs to be created
100541    
100542    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
100543      p_actual_flag :='A';
100544    END IF;
100545 
100546    --
100547    -- bulk performance
100548    --
100549    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
100550                                       p_header_num   => 0); -- 4262811
100551    --
100552    -- set accounting line options
100553    --
100554    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
100555            p_natural_side_code          => 'D'
100556          , p_gain_or_loss_flag          => 'N'
100557          , p_gl_transfer_mode_code      => 'S'
100558          , p_acct_entry_type_code       => 'A'
100559          , p_switch_side_flag           => 'Y'
100560          , p_merge_duplicate_code       => 'N'
100561          );
100562    --
100563    l_acc_rev_natural_side_code := 'C';  -- 4262811
100564    -- 
100565    --
100566    -- set accounting line type info
100567    --
100568    xla_ae_lines_pkg.SetAcctLineType
100569       (p_component_type             => l_component_type
100570       ,p_event_type_code            => l_event_type_code
100571       ,p_line_definition_owner_code => l_line_definition_owner_code
100572       ,p_line_definition_code       => l_line_definition_code
100573       ,p_accounting_line_code       => l_component_code
100574       ,p_accounting_line_type_code  => l_component_type_code
100575       ,p_accounting_line_appl_id    => l_component_appl_id
100576       ,p_amb_context_code           => l_amb_context_code
100577       ,p_entity_code                => l_entity_code
100578       ,p_event_class_code           => l_event_class_code);
100579    --
100580    -- set accounting class
100581    --
100582    xla_ae_lines_pkg.SetAcctClass(
100583            p_accounting_class_code  => 'OFFSET'
100584          , p_ae_header_id           => l_ae_header_id
100585          );
100586 
100587    --
100588    -- set rounding class
100589    --
100590    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
100591                       'OFFSET';
100592 
100593    --
100594    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
100595    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
100596    --
100597    -- bulk performance
100598    --
100599    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
100600 
100601    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
100602       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
100603 
100604    -- 4955764
100605    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
100606       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
100607 
100608    -- 4458381 Public Sector Enh
100609    
100610    --
100611    -- set accounting attributes for the line type
100612    --
100613    l_entered_amt_idx := 3;
100614    l_accted_amt_idx  := 8;
100615    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
100616    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
100617    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
100618    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
100619    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
100620    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
100621    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
100622    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
100623    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
100624    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
100625    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
100626    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
100627    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
100628    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
100629    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
100630    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
100631    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
100632 
100633    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
100634    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
100635 
100636    ---------------------------------------------------------------------------------------------------------------
100637    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
100638    ---------------------------------------------------------------------------------------------------------------
100639    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
100640 
100641    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
100642    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
100643 
100644    IF xla_accounting_cache_pkg.GetValueChar
100645          (p_source_code         => 'LEDGER_CATEGORY_CODE'
100646          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
100647    AND l_bflow_method_code = 'PRIOR_ENTRY'
100648 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
100649    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
100650          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
100651        )
100652    THEN
100653          xla_ae_lines_pkg.BflowUpgEntry
100654            (p_business_method_code    => l_bflow_method_code
100655            ,p_business_class_code     => l_bflow_class_code
100656            ,p_balance_type            => l_balance_type_code);
100657    ELSE
100658       NULL;
100659 -- No business flow processing for business flow method of NONE.
100660    END IF;
100661 
100662    --
100663    -- call analytical criteria
100664    --
100665    
100666    --
100667    -- call description
100668    --
100669    -- No description or it is inherited.
100670    --
100671    -- call ADRs
100672    -- Bug 4922099
100673    --
100674    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
100675         (NVL(l_actual_upg_option, 'N') = 'O') OR
100676         (NVL(l_enc_upg_option, 'N') = 'O')
100677       )
100678    THEN
100679    NULL;
100680    --
100681    --
100682    
100683   l_ccid := AcctDerRule_4(
100684            p_application_id           => p_application_id
100685          , p_ae_header_id             => l_ae_header_id 
100686 , p_source_4 => p_source_4
100687          , x_transaction_coa_id       => l_adr_transaction_coa_id
100688          , x_accounting_coa_id        => l_adr_accounting_coa_id
100689          , x_value_type_code          => l_adr_value_type_code
100690          , p_side                     => 'NA'
100691    );
100692 
100693    xla_ae_lines_pkg.set_ccid(
100694     p_code_combination_id          => l_ccid
100695   , p_value_type_code              => l_adr_value_type_code
100696   , p_transaction_coa_id           => l_adr_transaction_coa_id
100697   , p_accounting_coa_id            => l_adr_accounting_coa_id
100698   , p_adr_code                     => 'CST_DEFAULT'
100699   , p_adr_type_code                => 'S'
100700   , p_component_type               => l_component_type
100701   , p_component_code               => l_component_code
100702   , p_component_type_code          => l_component_type_code
100703   , p_component_appl_id            => l_component_appl_id
100704   , p_amb_context_code             => l_amb_context_code
100705   , p_side                         => 'NA'
100706   );
100707 
100708 
100709    --
100710    --
100711    END IF;
100712    --
100713    -- Bug 4922099
100714    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
100715           (NVL(l_enc_upg_option, 'N') = 'O')
100716         ) AND
100717         (l_bflow_method_code = 'PRIOR_ENTRY')
100718       )
100719    THEN
100720       IF
100721       --
100722       1 = 2
100723       --
100724       THEN
100725       xla_accounting_err_pkg.build_message
100726                                     (p_appli_s_name            => 'XLA'
100727                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
100728                                     ,p_token_1                 => 'LINE_NUMBER'
100729                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
100730                                     ,p_token_2                 => 'LINE_TYPE_NAME'
100731                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
100732                                                                              l_component_type
100733                                                                             ,l_component_code
100734                                                                             ,l_component_type_code
100735                                                                             ,l_component_appl_id
100736                                                                             ,l_amb_context_code
100737                                                                             ,l_entity_code
100738                                                                             ,l_event_class_code
100739                                                                            )
100740                                     ,p_token_3                 => 'OWNER'
100741                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
100742                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
100743                                                                           ,p_lookup_code    => l_component_type_code
100744                                                                          )
100745                                     ,p_token_4                 => 'PRODUCT_NAME'
100746                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
100747                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
100748                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
100749                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
100750                                     ,p_ae_header_id            =>  NULL
100751                                        );
100752 
100753         IF (C_LEVEL_ERROR>= g_log_level) THEN
100754                  trace
100755                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
100756                       ,p_level    => C_LEVEL_ERROR
100757                       ,p_module   => l_log_module);
100758         END IF;
100759       END IF;
100760    END IF;
100761    --
100762    --
100763    ------------------------------------------------------------------------------------------------
100764    -- 4219869 Business Flow
100765    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
100766    -- Prior Entry.  Currently, the following code is always generated.
100767    ------------------------------------------------------------------------------------------------
100768    XLA_AE_LINES_PKG.ValidateCurrentLine;
100769 
100770    ------------------------------------------------------------------------------------
100771    -- 4219869 Business Flow
100772    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
100773    ------------------------------------------------------------------------------------
100774    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
100775 
100776    ----------------------------------------------------------------------------------
100777    -- 4219869 Business Flow
100778    -- Update journal entry status -- Need to generate this within IF <condition>
100779    ----------------------------------------------------------------------------------
100780    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
100781          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
100782          ,p_balance_type_code => l_balance_type_code
100783          );
100784 
100785    -------------------------------------------------------------------------------------------
100786    -- 4262811 - Generate the Accrual Reversal lines
100787    -------------------------------------------------------------------------------------------
100788    BEGIN
100789       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
100790                               (g_array_event(p_event_id).array_value_num('header_index'));
100791       IF l_acc_rev_flag IS NULL THEN
100792          l_acc_rev_flag := 'N';
100793       END IF;
100794    EXCEPTION
100795       WHEN OTHERS THEN
100796          l_acc_rev_flag := 'N';
100797    END;
100798    --
100799    IF (l_acc_rev_flag = 'Y') THEN
100800 
100801        -- 4645092  ------------------------------------------------------------------------------
100802        -- To allow MPA report to determine if it should generate report process
100803        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
100804        ------------------------------------------------------------------------------------------
100805 
100806        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
100807        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
100808    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
100809    -- call ADRs
100810    -- Bug 4922099
100811    --
100812    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
100813         (NVL(l_actual_upg_option, 'N') = 'O') OR
100814         (NVL(l_enc_upg_option, 'N') = 'O')
100815       )
100816    THEN
100817    NULL;
100818    --
100819    --
100820    
100821   l_ccid := AcctDerRule_4(
100822            p_application_id           => p_application_id
100823          , p_ae_header_id             => l_ae_header_id 
100824 , p_source_4 => p_source_4
100825          , x_transaction_coa_id       => l_adr_transaction_coa_id
100826          , x_accounting_coa_id        => l_adr_accounting_coa_id
100827          , x_value_type_code          => l_adr_value_type_code
100828          , p_side                     => 'NA'
100829    );
100830 
100831    xla_ae_lines_pkg.set_ccid(
100832     p_code_combination_id          => l_ccid
100833   , p_value_type_code              => l_adr_value_type_code
100834   , p_transaction_coa_id           => l_adr_transaction_coa_id
100835   , p_accounting_coa_id            => l_adr_accounting_coa_id
100836   , p_adr_code                     => 'CST_DEFAULT'
100837   , p_adr_type_code                => 'S'
100838   , p_component_type               => l_component_type
100839   , p_component_code               => l_component_code
100840   , p_component_type_code          => l_component_type_code
100841   , p_component_appl_id            => l_component_appl_id
100842   , p_amb_context_code             => l_amb_context_code
100843   , p_side                         => 'NA'
100844   );
100845 
100846 
100847    --
100848    --
100849    END IF;
100850 
100851        --
100852        -- Update the line information that should be overwritten
100853        --
100854        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
100855                                          p_header_num   => 1);
100856        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
100857 
100858        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
100859 
100860        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
100861           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
100862        END IF;
100863 
100864       --
100865       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
100866       --
100867       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
100868           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
100869       ELSE
100870           ---------------------------------------------------------------------------------------------------
100871           -- 4262811a Switch Sign
100872           ---------------------------------------------------------------------------------------------------
100873           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
100874           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
100875                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100876           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
100877                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100878           -- 5132302
100879           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
100880                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100881 
100882       END IF;
100883 
100884       -- 4955764
100885       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
100886       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
100887 
100888 
100889       XLA_AE_LINES_PKG.ValidateCurrentLine;
100890       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
100891 
100892       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
100893                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
100894                ,p_balance_type_code => l_balance_type_code);
100895 
100896    END IF;
100897 
100898    -----------------------------------------------------------------------------------------
100899    -- 4262811 Multiperiod Accounting
100900    -----------------------------------------------------------------------------------------
100901      -- No MPA option is assigned.
100902 
100903 
100904 END IF;
100905 END IF;
100906 --
100907 
100908 --
100909 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
100910    trace
100911       (p_msg      => 'END of AcctLineType_183'
100912       ,p_level    => C_LEVEL_PROCEDURE
100913       ,p_module   => l_log_module);
100914 END IF;
100915 --
100916 EXCEPTION
100917   WHEN xla_exceptions_pkg.application_exception THEN
100918       RAISE;
100919   WHEN OTHERS THEN
100920        xla_exceptions_pkg.raise_message
100921            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_183');
100922 END AcctLineType_183;
100923 --
100924 
100925 ---------------------------------------
100926 --
100927 -- PRIVATE FUNCTION
100928 --         AcctLineType_184
100929 --
100930 ---------------------------------------
100931 PROCEDURE AcctLineType_184 (
100932   p_application_id        IN NUMBER
100933  ,p_event_id              IN NUMBER
100934  ,p_calculate_acctd_flag  IN VARCHAR2
100935  ,p_calculate_g_l_flag    IN VARCHAR2
100936  ,p_actual_flag           IN OUT VARCHAR2
100937  ,p_balance_type_code     OUT VARCHAR2
100938  ,p_gain_or_loss_ref      OUT VARCHAR2
100939  
100940 --Cost Management Default Account
100941  , p_source_4            IN NUMBER
100942 --DISTRIBUTION_IDENTIFIER
100943  , p_source_11            IN NUMBER
100944 --Distribution Type
100945  , p_source_12            IN VARCHAR2
100946  , p_source_12_meaning    IN VARCHAR2
100947 --Entered Currency Code
100948  , p_source_15            IN VARCHAR2
100949 --Entered Amount
100950  , p_source_18            IN NUMBER
100951 --Currency Conversion Date
100952  , p_source_19            IN DATE
100953 --Currency Conversion Rate
100954  , p_source_20            IN NUMBER
100955 --Currency Conversion Type
100956  , p_source_21            IN VARCHAR2
100957 --Accounted Amount
100958  , p_source_22            IN NUMBER
100959 --Accounting Line Type
100960  , p_source_24            IN NUMBER
100961 )
100962 IS
100963 
100964 l_component_type              VARCHAR2(80);
100965 l_component_code              VARCHAR2(30);
100966 l_component_type_code         VARCHAR2(1);
100967 l_component_appl_id           INTEGER;
100968 l_amb_context_code            VARCHAR2(30);
100969 l_entity_code                 VARCHAR2(30);
100970 l_event_class_code            VARCHAR2(30);
100971 l_ae_header_id                NUMBER;
100972 l_event_type_code             VARCHAR2(30);
100973 l_line_definition_code        VARCHAR2(30);
100974 l_line_definition_owner_code  VARCHAR2(1);
100975 --
100976 -- adr variables
100977 l_segment                     VARCHAR2(30);
100978 l_ccid                        NUMBER;
100979 l_adr_transaction_coa_id      NUMBER;
100980 l_adr_accounting_coa_id       NUMBER;
100981 l_adr_flexfield_segment_code  VARCHAR2(30);
100982 l_adr_flex_value_set_id       NUMBER;
100983 l_adr_value_type_code         VARCHAR2(30);
100984 l_adr_value_combination_id    NUMBER;
100985 l_adr_value_segment_code      VARCHAR2(30);
100986 
100987 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
100988 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
100989 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
100990 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
100991 
100992 -- 4262811 Variables ------------------------------------------------------------------------------------------
100993 l_entered_amt_idx             NUMBER;
100994 l_accted_amt_idx              NUMBER;
100995 l_acc_rev_flag                VARCHAR2(1);
100996 l_accrual_line_num            NUMBER;
100997 l_tmp_amt                     NUMBER;
100998 l_acc_rev_natural_side_code   VARCHAR2(1);
100999 
101000 l_num_entries                 NUMBER;
101001 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
101002 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
101003 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
101004 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
101005 l_recog_line_1                NUMBER;
101006 l_recog_line_2                NUMBER;
101007 
101008 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
101009 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
101010 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
101011 
101012 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
101013 
101014 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
101015 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
101016 
101017 ---------------------------------------------------------------------------------------------------------------
101018 
101019 
101020 --
101021 -- bulk performance
101022 --
101023 l_balance_type_code           VARCHAR2(1);
101024 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
101025 l_log_module                  VARCHAR2(240);
101026 
101027 --
101028 -- Upgrade strategy
101029 --
101030 l_actual_upg_option           VARCHAR2(1);
101031 l_enc_upg_option           VARCHAR2(1);
101032 
101033 --
101034 BEGIN
101035 --
101036 IF g_log_enabled THEN
101037       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_184';
101038 END IF;
101039 --
101040 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
101041 
101042       trace
101043          (p_msg      => 'BEGIN of AcctLineType_184'
101044          ,p_level    => C_LEVEL_PROCEDURE
101045          ,p_module   => l_log_module);
101046 
101047 END IF;
101048 --
101049 l_component_type             := 'AMB_JLT';
101050 l_component_code             := 'OFFSET';
101051 l_component_type_code        := 'S';
101052 l_component_appl_id          :=  707;
101053 l_amb_context_code           := 'DEFAULT';
101054 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
101055 l_event_class_code           := 'DIR_INTERORG_SHIP';
101056 l_event_type_code            := 'DIR_INTERORG_SHIP_ALL';
101057 l_line_definition_owner_code := 'S';
101058 l_line_definition_code       := 'DIRECT_INTERORG_SHIP';
101059 --
101060 l_balance_type_code          := 'A';
101061 l_segment                     := NULL;
101062 l_ccid                        := NULL;
101063 l_adr_transaction_coa_id      := NULL;
101064 l_adr_accounting_coa_id       := NULL;
101065 l_adr_flexfield_segment_code  := NULL;
101066 l_adr_flex_value_set_id       := NULL;
101067 l_adr_value_type_code         := NULL;
101068 l_adr_value_combination_id    := NULL;
101069 l_adr_value_segment_code      := NULL;
101070 
101071 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
101072 l_bflow_class_code           := '';    -- 4219869 Business Flow
101073 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
101074 l_budgetary_control_flag     := 'N';
101075 
101076 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
101077 l_bflow_applied_to_amt       := NULL; -- 5132302
101078 l_entered_amt_idx            := NULL;          -- 4262811
101079 l_accted_amt_idx             := NULL;          -- 4262811
101080 l_acc_rev_flag               := NULL;          -- 4262811
101081 l_accrual_line_num           := NULL;          -- 4262811
101082 l_tmp_amt                    := NULL;          -- 4262811
101083 --
101084  
101085 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
101086     l_balance_type_code <> 'B' THEN
101087 IF NVL(p_source_24,9E125) =  2
101088  THEN 
101089 
101090    --
101091    XLA_AE_LINES_PKG.SetNewLine;
101092 
101093    p_balance_type_code          := l_balance_type_code;
101094    -- set the flag so later we will know whether the gain loss line needs to be created
101095    
101096    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
101097      p_actual_flag :='A';
101098    END IF;
101099 
101100    --
101101    -- bulk performance
101102    --
101103    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
101104                                       p_header_num   => 0); -- 4262811
101105    --
101106    -- set accounting line options
101107    --
101108    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
101109            p_natural_side_code          => 'D'
101110          , p_gain_or_loss_flag          => 'N'
101111          , p_gl_transfer_mode_code      => 'S'
101112          , p_acct_entry_type_code       => 'A'
101113          , p_switch_side_flag           => 'Y'
101114          , p_merge_duplicate_code       => 'N'
101115          );
101116    --
101117    l_acc_rev_natural_side_code := 'C';  -- 4262811
101118    -- 
101119    --
101120    -- set accounting line type info
101121    --
101122    xla_ae_lines_pkg.SetAcctLineType
101123       (p_component_type             => l_component_type
101124       ,p_event_type_code            => l_event_type_code
101125       ,p_line_definition_owner_code => l_line_definition_owner_code
101126       ,p_line_definition_code       => l_line_definition_code
101127       ,p_accounting_line_code       => l_component_code
101128       ,p_accounting_line_type_code  => l_component_type_code
101129       ,p_accounting_line_appl_id    => l_component_appl_id
101130       ,p_amb_context_code           => l_amb_context_code
101131       ,p_entity_code                => l_entity_code
101132       ,p_event_class_code           => l_event_class_code);
101133    --
101134    -- set accounting class
101135    --
101136    xla_ae_lines_pkg.SetAcctClass(
101137            p_accounting_class_code  => 'OFFSET'
101138          , p_ae_header_id           => l_ae_header_id
101139          );
101140 
101141    --
101142    -- set rounding class
101143    --
101144    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
101145                       'OFFSET';
101146 
101147    --
101148    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
101149    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
101150    --
101151    -- bulk performance
101152    --
101153    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
101154 
101155    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
101156       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
101157 
101158    -- 4955764
101159    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
101160       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
101161 
101162    -- 4458381 Public Sector Enh
101163    
101164    --
101165    -- set accounting attributes for the line type
101166    --
101167    l_entered_amt_idx := 3;
101168    l_accted_amt_idx  := 8;
101169    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
101170    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
101171    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
101172    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
101173    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
101174    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
101175    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
101176    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
101177    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
101178    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
101179    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
101180    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
101181    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
101182    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
101183    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
101184    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
101185    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
101186 
101187    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
101188    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
101189 
101190    ---------------------------------------------------------------------------------------------------------------
101191    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
101192    ---------------------------------------------------------------------------------------------------------------
101193    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
101194 
101195    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
101196    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
101197 
101198    IF xla_accounting_cache_pkg.GetValueChar
101199          (p_source_code         => 'LEDGER_CATEGORY_CODE'
101200          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
101201    AND l_bflow_method_code = 'PRIOR_ENTRY'
101202 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
101203    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
101204          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
101205        )
101206    THEN
101207          xla_ae_lines_pkg.BflowUpgEntry
101208            (p_business_method_code    => l_bflow_method_code
101209            ,p_business_class_code     => l_bflow_class_code
101210            ,p_balance_type            => l_balance_type_code);
101211    ELSE
101212       NULL;
101213 -- No business flow processing for business flow method of NONE.
101214    END IF;
101215 
101216    --
101217    -- call analytical criteria
101218    --
101219    
101220    --
101221    -- call description
101222    --
101223    -- No description or it is inherited.
101224    --
101225    -- call ADRs
101226    -- Bug 4922099
101227    --
101228    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
101229         (NVL(l_actual_upg_option, 'N') = 'O') OR
101230         (NVL(l_enc_upg_option, 'N') = 'O')
101231       )
101232    THEN
101233    NULL;
101234    --
101235    --
101236    
101237   l_ccid := AcctDerRule_4(
101238            p_application_id           => p_application_id
101239          , p_ae_header_id             => l_ae_header_id 
101240 , p_source_4 => p_source_4
101241          , x_transaction_coa_id       => l_adr_transaction_coa_id
101242          , x_accounting_coa_id        => l_adr_accounting_coa_id
101243          , x_value_type_code          => l_adr_value_type_code
101244          , p_side                     => 'NA'
101245    );
101246 
101247    xla_ae_lines_pkg.set_ccid(
101248     p_code_combination_id          => l_ccid
101249   , p_value_type_code              => l_adr_value_type_code
101250   , p_transaction_coa_id           => l_adr_transaction_coa_id
101251   , p_accounting_coa_id            => l_adr_accounting_coa_id
101252   , p_adr_code                     => 'CST_DEFAULT'
101253   , p_adr_type_code                => 'S'
101254   , p_component_type               => l_component_type
101255   , p_component_code               => l_component_code
101256   , p_component_type_code          => l_component_type_code
101257   , p_component_appl_id            => l_component_appl_id
101258   , p_amb_context_code             => l_amb_context_code
101259   , p_side                         => 'NA'
101260   );
101261 
101262 
101263    --
101264    --
101265    END IF;
101266    --
101267    -- Bug 4922099
101268    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
101269           (NVL(l_enc_upg_option, 'N') = 'O')
101270         ) AND
101271         (l_bflow_method_code = 'PRIOR_ENTRY')
101272       )
101273    THEN
101274       IF
101275       --
101276       1 = 2
101277       --
101278       THEN
101279       xla_accounting_err_pkg.build_message
101280                                     (p_appli_s_name            => 'XLA'
101281                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
101282                                     ,p_token_1                 => 'LINE_NUMBER'
101283                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
101284                                     ,p_token_2                 => 'LINE_TYPE_NAME'
101285                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
101286                                                                              l_component_type
101287                                                                             ,l_component_code
101288                                                                             ,l_component_type_code
101289                                                                             ,l_component_appl_id
101290                                                                             ,l_amb_context_code
101291                                                                             ,l_entity_code
101292                                                                             ,l_event_class_code
101293                                                                            )
101294                                     ,p_token_3                 => 'OWNER'
101295                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
101296                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
101297                                                                           ,p_lookup_code    => l_component_type_code
101298                                                                          )
101299                                     ,p_token_4                 => 'PRODUCT_NAME'
101300                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
101301                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
101302                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
101303                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
101304                                     ,p_ae_header_id            =>  NULL
101305                                        );
101306 
101307         IF (C_LEVEL_ERROR>= g_log_level) THEN
101308                  trace
101309                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
101310                       ,p_level    => C_LEVEL_ERROR
101311                       ,p_module   => l_log_module);
101312         END IF;
101313       END IF;
101314    END IF;
101315    --
101316    --
101317    ------------------------------------------------------------------------------------------------
101318    -- 4219869 Business Flow
101319    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
101320    -- Prior Entry.  Currently, the following code is always generated.
101321    ------------------------------------------------------------------------------------------------
101322    XLA_AE_LINES_PKG.ValidateCurrentLine;
101323 
101324    ------------------------------------------------------------------------------------
101325    -- 4219869 Business Flow
101326    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
101327    ------------------------------------------------------------------------------------
101328    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
101329 
101330    ----------------------------------------------------------------------------------
101331    -- 4219869 Business Flow
101332    -- Update journal entry status -- Need to generate this within IF <condition>
101333    ----------------------------------------------------------------------------------
101334    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
101335          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
101336          ,p_balance_type_code => l_balance_type_code
101337          );
101338 
101339    -------------------------------------------------------------------------------------------
101340    -- 4262811 - Generate the Accrual Reversal lines
101341    -------------------------------------------------------------------------------------------
101342    BEGIN
101343       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
101344                               (g_array_event(p_event_id).array_value_num('header_index'));
101345       IF l_acc_rev_flag IS NULL THEN
101346          l_acc_rev_flag := 'N';
101347       END IF;
101348    EXCEPTION
101349       WHEN OTHERS THEN
101350          l_acc_rev_flag := 'N';
101351    END;
101352    --
101353    IF (l_acc_rev_flag = 'Y') THEN
101354 
101355        -- 4645092  ------------------------------------------------------------------------------
101356        -- To allow MPA report to determine if it should generate report process
101357        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
101358        ------------------------------------------------------------------------------------------
101359 
101360        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
101361        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
101362    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
101363    -- call ADRs
101364    -- Bug 4922099
101365    --
101366    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
101367         (NVL(l_actual_upg_option, 'N') = 'O') OR
101368         (NVL(l_enc_upg_option, 'N') = 'O')
101369       )
101370    THEN
101371    NULL;
101372    --
101373    --
101374    
101375   l_ccid := AcctDerRule_4(
101376            p_application_id           => p_application_id
101377          , p_ae_header_id             => l_ae_header_id 
101378 , p_source_4 => p_source_4
101379          , x_transaction_coa_id       => l_adr_transaction_coa_id
101380          , x_accounting_coa_id        => l_adr_accounting_coa_id
101381          , x_value_type_code          => l_adr_value_type_code
101382          , p_side                     => 'NA'
101383    );
101384 
101385    xla_ae_lines_pkg.set_ccid(
101386     p_code_combination_id          => l_ccid
101387   , p_value_type_code              => l_adr_value_type_code
101388   , p_transaction_coa_id           => l_adr_transaction_coa_id
101389   , p_accounting_coa_id            => l_adr_accounting_coa_id
101390   , p_adr_code                     => 'CST_DEFAULT'
101391   , p_adr_type_code                => 'S'
101392   , p_component_type               => l_component_type
101393   , p_component_code               => l_component_code
101394   , p_component_type_code          => l_component_type_code
101395   , p_component_appl_id            => l_component_appl_id
101396   , p_amb_context_code             => l_amb_context_code
101397   , p_side                         => 'NA'
101398   );
101399 
101400 
101401    --
101402    --
101403    END IF;
101404 
101405        --
101406        -- Update the line information that should be overwritten
101407        --
101408        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
101409                                          p_header_num   => 1);
101410        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
101411 
101412        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
101413 
101414        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
101415           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
101416        END IF;
101417 
101418       --
101419       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
101420       --
101421       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
101422           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
101423       ELSE
101424           ---------------------------------------------------------------------------------------------------
101425           -- 4262811a Switch Sign
101426           ---------------------------------------------------------------------------------------------------
101427           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
101428           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
101429                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101430           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
101431                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101432           -- 5132302
101433           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
101434                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101435 
101436       END IF;
101437 
101438       -- 4955764
101439       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
101440       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
101441 
101442 
101443       XLA_AE_LINES_PKG.ValidateCurrentLine;
101444       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
101445 
101446       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
101447                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
101448                ,p_balance_type_code => l_balance_type_code);
101449 
101450    END IF;
101451 
101452    -----------------------------------------------------------------------------------------
101453    -- 4262811 Multiperiod Accounting
101454    -----------------------------------------------------------------------------------------
101455      -- No MPA option is assigned.
101456 
101457 
101458 END IF;
101459 END IF;
101460 --
101461 
101462 --
101463 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
101464    trace
101465       (p_msg      => 'END of AcctLineType_184'
101466       ,p_level    => C_LEVEL_PROCEDURE
101467       ,p_module   => l_log_module);
101468 END IF;
101469 --
101470 EXCEPTION
101471   WHEN xla_exceptions_pkg.application_exception THEN
101472       RAISE;
101473   WHEN OTHERS THEN
101474        xla_exceptions_pkg.raise_message
101475            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_184');
101476 END AcctLineType_184;
101477 --
101478 
101479 ---------------------------------------
101480 --
101481 -- PRIVATE FUNCTION
101482 --         AcctLineType_185
101483 --
101484 ---------------------------------------
101485 PROCEDURE AcctLineType_185 (
101486   p_application_id        IN NUMBER
101487  ,p_event_id              IN NUMBER
101488  ,p_calculate_acctd_flag  IN VARCHAR2
101489  ,p_calculate_g_l_flag    IN VARCHAR2
101490  ,p_actual_flag           IN OUT VARCHAR2
101491  ,p_balance_type_code     OUT VARCHAR2
101492  ,p_gain_or_loss_ref      OUT VARCHAR2
101493  
101494 --Cost Management Default Account
101495  , p_source_4            IN NUMBER
101496 --DISTRIBUTION_IDENTIFIER
101497  , p_source_11            IN NUMBER
101498 --Distribution Type
101499  , p_source_12            IN VARCHAR2
101500  , p_source_12_meaning    IN VARCHAR2
101501 --Entered Currency Code
101502  , p_source_15            IN VARCHAR2
101503 --Entered Amount
101504  , p_source_18            IN NUMBER
101505 --Currency Conversion Date
101506  , p_source_19            IN DATE
101507 --Currency Conversion Rate
101508  , p_source_20            IN NUMBER
101509 --Currency Conversion Type
101510  , p_source_21            IN VARCHAR2
101511 --Accounted Amount
101512  , p_source_22            IN NUMBER
101513 --Accounting Line Type
101514  , p_source_24            IN NUMBER
101515 )
101516 IS
101517 
101518 l_component_type              VARCHAR2(80);
101519 l_component_code              VARCHAR2(30);
101520 l_component_type_code         VARCHAR2(1);
101521 l_component_appl_id           INTEGER;
101522 l_amb_context_code            VARCHAR2(30);
101523 l_entity_code                 VARCHAR2(30);
101524 l_event_class_code            VARCHAR2(30);
101525 l_ae_header_id                NUMBER;
101526 l_event_type_code             VARCHAR2(30);
101527 l_line_definition_code        VARCHAR2(30);
101528 l_line_definition_owner_code  VARCHAR2(1);
101529 --
101530 -- adr variables
101531 l_segment                     VARCHAR2(30);
101532 l_ccid                        NUMBER;
101533 l_adr_transaction_coa_id      NUMBER;
101534 l_adr_accounting_coa_id       NUMBER;
101535 l_adr_flexfield_segment_code  VARCHAR2(30);
101536 l_adr_flex_value_set_id       NUMBER;
101537 l_adr_value_type_code         VARCHAR2(30);
101538 l_adr_value_combination_id    NUMBER;
101539 l_adr_value_segment_code      VARCHAR2(30);
101540 
101541 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
101542 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
101543 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
101544 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
101545 
101546 -- 4262811 Variables ------------------------------------------------------------------------------------------
101547 l_entered_amt_idx             NUMBER;
101548 l_accted_amt_idx              NUMBER;
101549 l_acc_rev_flag                VARCHAR2(1);
101550 l_accrual_line_num            NUMBER;
101551 l_tmp_amt                     NUMBER;
101552 l_acc_rev_natural_side_code   VARCHAR2(1);
101553 
101554 l_num_entries                 NUMBER;
101555 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
101556 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
101557 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
101558 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
101559 l_recog_line_1                NUMBER;
101560 l_recog_line_2                NUMBER;
101561 
101562 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
101563 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
101564 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
101565 
101566 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
101567 
101568 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
101569 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
101570 
101571 ---------------------------------------------------------------------------------------------------------------
101572 
101573 
101574 --
101575 -- bulk performance
101576 --
101577 l_balance_type_code           VARCHAR2(1);
101578 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
101579 l_log_module                  VARCHAR2(240);
101580 
101581 --
101582 -- Upgrade strategy
101583 --
101584 l_actual_upg_option           VARCHAR2(1);
101585 l_enc_upg_option           VARCHAR2(1);
101586 
101587 --
101588 BEGIN
101589 --
101590 IF g_log_enabled THEN
101591       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_185';
101592 END IF;
101593 --
101594 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
101595 
101596       trace
101597          (p_msg      => 'BEGIN of AcctLineType_185'
101598          ,p_level    => C_LEVEL_PROCEDURE
101599          ,p_module   => l_log_module);
101600 
101601 END IF;
101602 --
101603 l_component_type             := 'AMB_JLT';
101604 l_component_code             := 'OFFSET';
101605 l_component_type_code        := 'S';
101606 l_component_appl_id          :=  707;
101607 l_amb_context_code           := 'DEFAULT';
101608 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
101609 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
101610 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_ALL';
101611 l_line_definition_owner_code := 'S';
101612 l_line_definition_code       := 'FOB_SHIP_SENDER_SHIP';
101613 --
101614 l_balance_type_code          := 'A';
101615 l_segment                     := NULL;
101616 l_ccid                        := NULL;
101617 l_adr_transaction_coa_id      := NULL;
101618 l_adr_accounting_coa_id       := NULL;
101619 l_adr_flexfield_segment_code  := NULL;
101620 l_adr_flex_value_set_id       := NULL;
101621 l_adr_value_type_code         := NULL;
101622 l_adr_value_combination_id    := NULL;
101623 l_adr_value_segment_code      := NULL;
101624 
101625 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
101626 l_bflow_class_code           := '';    -- 4219869 Business Flow
101627 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
101628 l_budgetary_control_flag     := 'N';
101629 
101630 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
101631 l_bflow_applied_to_amt       := NULL; -- 5132302
101632 l_entered_amt_idx            := NULL;          -- 4262811
101633 l_accted_amt_idx             := NULL;          -- 4262811
101634 l_acc_rev_flag               := NULL;          -- 4262811
101635 l_accrual_line_num           := NULL;          -- 4262811
101636 l_tmp_amt                    := NULL;          -- 4262811
101637 --
101638  
101639 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
101640     l_balance_type_code <> 'B' THEN
101641 IF NVL(p_source_24,9E125) =  2 AND 
101642 p_source_22 <=  0
101643  THEN 
101644 
101645    --
101646    XLA_AE_LINES_PKG.SetNewLine;
101647 
101648    p_balance_type_code          := l_balance_type_code;
101649    -- set the flag so later we will know whether the gain loss line needs to be created
101650    
101651    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
101652      p_actual_flag :='A';
101653    END IF;
101654 
101655    --
101656    -- bulk performance
101657    --
101658    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
101659                                       p_header_num   => 0); -- 4262811
101660    --
101661    -- set accounting line options
101662    --
101663    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
101664            p_natural_side_code          => 'D'
101665          , p_gain_or_loss_flag          => 'N'
101666          , p_gl_transfer_mode_code      => 'S'
101667          , p_acct_entry_type_code       => 'A'
101668          , p_switch_side_flag           => 'Y'
101669          , p_merge_duplicate_code       => 'N'
101670          );
101671    --
101672    l_acc_rev_natural_side_code := 'C';  -- 4262811
101673    -- 
101674    --
101675    -- set accounting line type info
101676    --
101677    xla_ae_lines_pkg.SetAcctLineType
101678       (p_component_type             => l_component_type
101679       ,p_event_type_code            => l_event_type_code
101680       ,p_line_definition_owner_code => l_line_definition_owner_code
101681       ,p_line_definition_code       => l_line_definition_code
101682       ,p_accounting_line_code       => l_component_code
101683       ,p_accounting_line_type_code  => l_component_type_code
101684       ,p_accounting_line_appl_id    => l_component_appl_id
101685       ,p_amb_context_code           => l_amb_context_code
101686       ,p_entity_code                => l_entity_code
101687       ,p_event_class_code           => l_event_class_code);
101688    --
101689    -- set accounting class
101690    --
101691    xla_ae_lines_pkg.SetAcctClass(
101692            p_accounting_class_code  => 'OFFSET'
101693          , p_ae_header_id           => l_ae_header_id
101694          );
101695 
101696    --
101697    -- set rounding class
101698    --
101699    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
101700                       'OFFSET';
101701 
101702    --
101703    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
101704    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
101705    --
101706    -- bulk performance
101707    --
101708    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
101709 
101710    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
101711       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
101712 
101713    -- 4955764
101714    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
101715       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
101716 
101717    -- 4458381 Public Sector Enh
101718    
101719    --
101720    -- set accounting attributes for the line type
101721    --
101722    l_entered_amt_idx := 3;
101723    l_accted_amt_idx  := 8;
101724    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
101725    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
101726    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
101727    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
101728    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
101729    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
101730    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
101731    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
101732    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
101733    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
101734    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
101735    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
101736    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
101737    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
101738    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
101739    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
101740    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
101741 
101742    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
101743    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
101744 
101745    ---------------------------------------------------------------------------------------------------------------
101746    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
101747    ---------------------------------------------------------------------------------------------------------------
101748    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
101749 
101750    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
101751    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
101752 
101753    IF xla_accounting_cache_pkg.GetValueChar
101754          (p_source_code         => 'LEDGER_CATEGORY_CODE'
101755          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
101756    AND l_bflow_method_code = 'PRIOR_ENTRY'
101757 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
101758    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
101759          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
101760        )
101761    THEN
101762          xla_ae_lines_pkg.BflowUpgEntry
101763            (p_business_method_code    => l_bflow_method_code
101764            ,p_business_class_code     => l_bflow_class_code
101765            ,p_balance_type            => l_balance_type_code);
101766    ELSE
101767       NULL;
101768 -- No business flow processing for business flow method of NONE.
101769    END IF;
101770 
101771    --
101772    -- call analytical criteria
101773    --
101774    
101775    --
101776    -- call description
101777    --
101778    -- No description or it is inherited.
101779    --
101780    -- call ADRs
101781    -- Bug 4922099
101782    --
101783    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
101784         (NVL(l_actual_upg_option, 'N') = 'O') OR
101785         (NVL(l_enc_upg_option, 'N') = 'O')
101786       )
101787    THEN
101788    NULL;
101789    --
101790    --
101791    
101792   l_ccid := AcctDerRule_4(
101793            p_application_id           => p_application_id
101794          , p_ae_header_id             => l_ae_header_id 
101795 , p_source_4 => p_source_4
101796          , x_transaction_coa_id       => l_adr_transaction_coa_id
101797          , x_accounting_coa_id        => l_adr_accounting_coa_id
101798          , x_value_type_code          => l_adr_value_type_code
101799          , p_side                     => 'NA'
101800    );
101801 
101802    xla_ae_lines_pkg.set_ccid(
101803     p_code_combination_id          => l_ccid
101804   , p_value_type_code              => l_adr_value_type_code
101805   , p_transaction_coa_id           => l_adr_transaction_coa_id
101806   , p_accounting_coa_id            => l_adr_accounting_coa_id
101807   , p_adr_code                     => 'CST_DEFAULT'
101808   , p_adr_type_code                => 'S'
101809   , p_component_type               => l_component_type
101810   , p_component_code               => l_component_code
101811   , p_component_type_code          => l_component_type_code
101812   , p_component_appl_id            => l_component_appl_id
101813   , p_amb_context_code             => l_amb_context_code
101814   , p_side                         => 'NA'
101815   );
101816 
101817 
101818    --
101819    --
101820    END IF;
101821    --
101822    -- Bug 4922099
101823    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
101824           (NVL(l_enc_upg_option, 'N') = 'O')
101825         ) AND
101826         (l_bflow_method_code = 'PRIOR_ENTRY')
101827       )
101828    THEN
101829       IF
101830       --
101831       1 = 2
101832       --
101833       THEN
101834       xla_accounting_err_pkg.build_message
101835                                     (p_appli_s_name            => 'XLA'
101836                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
101837                                     ,p_token_1                 => 'LINE_NUMBER'
101838                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
101839                                     ,p_token_2                 => 'LINE_TYPE_NAME'
101840                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
101841                                                                              l_component_type
101842                                                                             ,l_component_code
101843                                                                             ,l_component_type_code
101844                                                                             ,l_component_appl_id
101845                                                                             ,l_amb_context_code
101846                                                                             ,l_entity_code
101847                                                                             ,l_event_class_code
101848                                                                            )
101849                                     ,p_token_3                 => 'OWNER'
101850                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
101851                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
101852                                                                           ,p_lookup_code    => l_component_type_code
101853                                                                          )
101854                                     ,p_token_4                 => 'PRODUCT_NAME'
101855                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
101856                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
101857                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
101858                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
101859                                     ,p_ae_header_id            =>  NULL
101860                                        );
101861 
101862         IF (C_LEVEL_ERROR>= g_log_level) THEN
101863                  trace
101864                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
101865                       ,p_level    => C_LEVEL_ERROR
101866                       ,p_module   => l_log_module);
101867         END IF;
101868       END IF;
101869    END IF;
101870    --
101871    --
101872    ------------------------------------------------------------------------------------------------
101873    -- 4219869 Business Flow
101874    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
101875    -- Prior Entry.  Currently, the following code is always generated.
101876    ------------------------------------------------------------------------------------------------
101877    XLA_AE_LINES_PKG.ValidateCurrentLine;
101878 
101879    ------------------------------------------------------------------------------------
101880    -- 4219869 Business Flow
101881    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
101882    ------------------------------------------------------------------------------------
101883    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
101884 
101885    ----------------------------------------------------------------------------------
101886    -- 4219869 Business Flow
101887    -- Update journal entry status -- Need to generate this within IF <condition>
101888    ----------------------------------------------------------------------------------
101889    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
101890          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
101891          ,p_balance_type_code => l_balance_type_code
101892          );
101893 
101894    -------------------------------------------------------------------------------------------
101895    -- 4262811 - Generate the Accrual Reversal lines
101896    -------------------------------------------------------------------------------------------
101897    BEGIN
101898       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
101899                               (g_array_event(p_event_id).array_value_num('header_index'));
101900       IF l_acc_rev_flag IS NULL THEN
101901          l_acc_rev_flag := 'N';
101902       END IF;
101903    EXCEPTION
101904       WHEN OTHERS THEN
101905          l_acc_rev_flag := 'N';
101906    END;
101907    --
101908    IF (l_acc_rev_flag = 'Y') THEN
101909 
101910        -- 4645092  ------------------------------------------------------------------------------
101911        -- To allow MPA report to determine if it should generate report process
101912        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
101913        ------------------------------------------------------------------------------------------
101914 
101915        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
101916        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
101917    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
101918    -- call ADRs
101919    -- Bug 4922099
101920    --
101921    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
101922         (NVL(l_actual_upg_option, 'N') = 'O') OR
101923         (NVL(l_enc_upg_option, 'N') = 'O')
101924       )
101925    THEN
101926    NULL;
101927    --
101928    --
101929    
101930   l_ccid := AcctDerRule_4(
101931            p_application_id           => p_application_id
101932          , p_ae_header_id             => l_ae_header_id 
101933 , p_source_4 => p_source_4
101934          , x_transaction_coa_id       => l_adr_transaction_coa_id
101935          , x_accounting_coa_id        => l_adr_accounting_coa_id
101936          , x_value_type_code          => l_adr_value_type_code
101937          , p_side                     => 'NA'
101938    );
101939 
101940    xla_ae_lines_pkg.set_ccid(
101941     p_code_combination_id          => l_ccid
101942   , p_value_type_code              => l_adr_value_type_code
101943   , p_transaction_coa_id           => l_adr_transaction_coa_id
101944   , p_accounting_coa_id            => l_adr_accounting_coa_id
101945   , p_adr_code                     => 'CST_DEFAULT'
101946   , p_adr_type_code                => 'S'
101947   , p_component_type               => l_component_type
101948   , p_component_code               => l_component_code
101949   , p_component_type_code          => l_component_type_code
101950   , p_component_appl_id            => l_component_appl_id
101951   , p_amb_context_code             => l_amb_context_code
101952   , p_side                         => 'NA'
101953   );
101954 
101955 
101956    --
101957    --
101958    END IF;
101959 
101960        --
101961        -- Update the line information that should be overwritten
101962        --
101963        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
101964                                          p_header_num   => 1);
101965        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
101966 
101967        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
101968 
101969        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
101970           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
101971        END IF;
101972 
101973       --
101974       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
101975       --
101976       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
101977           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
101978       ELSE
101979           ---------------------------------------------------------------------------------------------------
101980           -- 4262811a Switch Sign
101981           ---------------------------------------------------------------------------------------------------
101982           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
101983           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
101984                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101985           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
101986                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101987           -- 5132302
101988           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
101989                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101990 
101991       END IF;
101992 
101993       -- 4955764
101994       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
101995       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
101996 
101997 
101998       XLA_AE_LINES_PKG.ValidateCurrentLine;
101999       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
102000 
102001       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
102002                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
102003                ,p_balance_type_code => l_balance_type_code);
102004 
102005    END IF;
102006 
102007    -----------------------------------------------------------------------------------------
102008    -- 4262811 Multiperiod Accounting
102009    -----------------------------------------------------------------------------------------
102010      -- No MPA option is assigned.
102011 
102012 
102013 END IF;
102014 END IF;
102015 --
102016 
102017 --
102018 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
102019    trace
102020       (p_msg      => 'END of AcctLineType_185'
102021       ,p_level    => C_LEVEL_PROCEDURE
102022       ,p_module   => l_log_module);
102023 END IF;
102024 --
102025 EXCEPTION
102026   WHEN xla_exceptions_pkg.application_exception THEN
102027       RAISE;
102028   WHEN OTHERS THEN
102029        xla_exceptions_pkg.raise_message
102030            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_185');
102031 END AcctLineType_185;
102032 --
102033 
102034 ---------------------------------------
102035 --
102036 -- PRIVATE FUNCTION
102037 --         AcctLineType_186
102038 --
102039 ---------------------------------------
102040 PROCEDURE AcctLineType_186 (
102041   p_application_id        IN NUMBER
102042  ,p_event_id              IN NUMBER
102043  ,p_calculate_acctd_flag  IN VARCHAR2
102044  ,p_calculate_g_l_flag    IN VARCHAR2
102045  ,p_actual_flag           IN OUT VARCHAR2
102046  ,p_balance_type_code     OUT VARCHAR2
102047  ,p_gain_or_loss_ref      OUT VARCHAR2
102048  
102049 --Cost Management Default Account
102050  , p_source_4            IN NUMBER
102051 --DISTRIBUTION_IDENTIFIER
102052  , p_source_11            IN NUMBER
102053 --Distribution Type
102054  , p_source_12            IN VARCHAR2
102055  , p_source_12_meaning    IN VARCHAR2
102056 --Entered Currency Code
102057  , p_source_15            IN VARCHAR2
102058 --Entered Amount
102059  , p_source_18            IN NUMBER
102060 --Currency Conversion Date
102061  , p_source_19            IN DATE
102062 --Currency Conversion Rate
102063  , p_source_20            IN NUMBER
102064 --Currency Conversion Type
102065  , p_source_21            IN VARCHAR2
102066 --Accounted Amount
102067  , p_source_22            IN NUMBER
102068 --Accounting Line Type
102069  , p_source_24            IN NUMBER
102070 --Transaction Action Name
102071  , p_source_35            IN NUMBER
102072  , p_source_35_meaning    IN VARCHAR2
102073 )
102074 IS
102075 
102076 l_component_type              VARCHAR2(80);
102077 l_component_code              VARCHAR2(30);
102078 l_component_type_code         VARCHAR2(1);
102079 l_component_appl_id           INTEGER;
102080 l_amb_context_code            VARCHAR2(30);
102081 l_entity_code                 VARCHAR2(30);
102082 l_event_class_code            VARCHAR2(30);
102083 l_ae_header_id                NUMBER;
102084 l_event_type_code             VARCHAR2(30);
102085 l_line_definition_code        VARCHAR2(30);
102086 l_line_definition_owner_code  VARCHAR2(1);
102087 --
102088 -- adr variables
102089 l_segment                     VARCHAR2(30);
102090 l_ccid                        NUMBER;
102091 l_adr_transaction_coa_id      NUMBER;
102092 l_adr_accounting_coa_id       NUMBER;
102093 l_adr_flexfield_segment_code  VARCHAR2(30);
102094 l_adr_flex_value_set_id       NUMBER;
102095 l_adr_value_type_code         VARCHAR2(30);
102096 l_adr_value_combination_id    NUMBER;
102097 l_adr_value_segment_code      VARCHAR2(30);
102098 
102099 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
102100 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
102101 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
102102 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
102103 
102104 -- 4262811 Variables ------------------------------------------------------------------------------------------
102105 l_entered_amt_idx             NUMBER;
102106 l_accted_amt_idx              NUMBER;
102107 l_acc_rev_flag                VARCHAR2(1);
102108 l_accrual_line_num            NUMBER;
102109 l_tmp_amt                     NUMBER;
102110 l_acc_rev_natural_side_code   VARCHAR2(1);
102111 
102112 l_num_entries                 NUMBER;
102113 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
102114 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
102115 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
102116 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
102117 l_recog_line_1                NUMBER;
102118 l_recog_line_2                NUMBER;
102119 
102120 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
102121 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
102122 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
102123 
102124 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
102125 
102126 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
102127 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
102128 
102129 ---------------------------------------------------------------------------------------------------------------
102130 
102131 
102132 --
102133 -- bulk performance
102134 --
102135 l_balance_type_code           VARCHAR2(1);
102136 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
102137 l_log_module                  VARCHAR2(240);
102138 
102139 --
102140 -- Upgrade strategy
102141 --
102142 l_actual_upg_option           VARCHAR2(1);
102143 l_enc_upg_option           VARCHAR2(1);
102144 
102145 --
102146 BEGIN
102147 --
102148 IF g_log_enabled THEN
102149       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_186';
102150 END IF;
102151 --
102152 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
102153 
102154       trace
102155          (p_msg      => 'BEGIN of AcctLineType_186'
102156          ,p_level    => C_LEVEL_PROCEDURE
102157          ,p_module   => l_log_module);
102158 
102159 END IF;
102160 --
102161 l_component_type             := 'AMB_JLT';
102162 l_component_code             := 'OFFSET';
102163 l_component_type_code        := 'S';
102164 l_component_appl_id          :=  707;
102165 l_amb_context_code           := 'DEFAULT';
102166 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
102167 l_event_class_code           := 'LOG_INTERCOMPANY';
102168 l_event_type_code            := 'LOG_INTERCOMPANY_ALL';
102169 l_line_definition_owner_code := 'S';
102170 l_line_definition_code       := 'LOG_INTERCOMPANY';
102171 --
102172 l_balance_type_code          := 'A';
102173 l_segment                     := NULL;
102174 l_ccid                        := NULL;
102175 l_adr_transaction_coa_id      := NULL;
102176 l_adr_accounting_coa_id       := NULL;
102177 l_adr_flexfield_segment_code  := NULL;
102178 l_adr_flex_value_set_id       := NULL;
102179 l_adr_value_type_code         := NULL;
102180 l_adr_value_combination_id    := NULL;
102181 l_adr_value_segment_code      := NULL;
102182 
102183 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
102184 l_bflow_class_code           := '';    -- 4219869 Business Flow
102185 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
102186 l_budgetary_control_flag     := 'N';
102187 
102188 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
102189 l_bflow_applied_to_amt       := NULL; -- 5132302
102190 l_entered_amt_idx            := NULL;          -- 4262811
102191 l_accted_amt_idx             := NULL;          -- 4262811
102192 l_acc_rev_flag               := NULL;          -- 4262811
102193 l_accrual_line_num           := NULL;          -- 4262811
102194 l_tmp_amt                    := NULL;          -- 4262811
102195 --
102196  
102197 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
102198     l_balance_type_code <> 'B' THEN
102199 IF NVL(p_source_24,9E125) =  2 AND 
102200 ((p_source_22 <=  0 AND 
102201 NVL(p_source_35,9E125) =  13) OR 
102202 (p_source_22 <=  0 AND 
102203 NVL(p_source_35,9E125) =  9) OR 
102204 (p_source_22 >=  0 AND 
102205 NVL(p_source_35,9E125) =  10) OR 
102206 NVL(p_source_35,9E125) =  10 OR 
102207 NVL(p_source_35,9E125) =  13)
102208  THEN 
102209 
102210    --
102211    XLA_AE_LINES_PKG.SetNewLine;
102212 
102213    p_balance_type_code          := l_balance_type_code;
102214    -- set the flag so later we will know whether the gain loss line needs to be created
102215    
102216    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
102217      p_actual_flag :='A';
102218    END IF;
102219 
102220    --
102221    -- bulk performance
102222    --
102223    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
102224                                       p_header_num   => 0); -- 4262811
102225    --
102226    -- set accounting line options
102227    --
102228    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
102229            p_natural_side_code          => 'D'
102230          , p_gain_or_loss_flag          => 'N'
102231          , p_gl_transfer_mode_code      => 'S'
102232          , p_acct_entry_type_code       => 'A'
102233          , p_switch_side_flag           => 'Y'
102234          , p_merge_duplicate_code       => 'N'
102235          );
102236    --
102237    l_acc_rev_natural_side_code := 'C';  -- 4262811
102238    -- 
102239    --
102240    -- set accounting line type info
102241    --
102242    xla_ae_lines_pkg.SetAcctLineType
102243       (p_component_type             => l_component_type
102244       ,p_event_type_code            => l_event_type_code
102245       ,p_line_definition_owner_code => l_line_definition_owner_code
102246       ,p_line_definition_code       => l_line_definition_code
102247       ,p_accounting_line_code       => l_component_code
102248       ,p_accounting_line_type_code  => l_component_type_code
102249       ,p_accounting_line_appl_id    => l_component_appl_id
102250       ,p_amb_context_code           => l_amb_context_code
102251       ,p_entity_code                => l_entity_code
102252       ,p_event_class_code           => l_event_class_code);
102253    --
102254    -- set accounting class
102255    --
102256    xla_ae_lines_pkg.SetAcctClass(
102257            p_accounting_class_code  => 'OFFSET'
102258          , p_ae_header_id           => l_ae_header_id
102259          );
102260 
102261    --
102262    -- set rounding class
102263    --
102264    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
102265                       'OFFSET';
102266 
102267    --
102268    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
102269    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
102270    --
102271    -- bulk performance
102272    --
102273    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
102274 
102275    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
102276       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
102277 
102278    -- 4955764
102279    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
102280       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
102281 
102282    -- 4458381 Public Sector Enh
102283    
102284    --
102285    -- set accounting attributes for the line type
102286    --
102287    l_entered_amt_idx := 3;
102288    l_accted_amt_idx  := 8;
102289    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
102290    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
102291    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
102292    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
102293    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
102294    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
102295    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
102296    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
102297    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
102298    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
102299    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
102300    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
102301    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
102302    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
102303    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
102304    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
102305    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
102306 
102307    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
102308    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
102309 
102310    ---------------------------------------------------------------------------------------------------------------
102311    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
102312    ---------------------------------------------------------------------------------------------------------------
102313    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
102314 
102315    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
102316    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
102317 
102318    IF xla_accounting_cache_pkg.GetValueChar
102319          (p_source_code         => 'LEDGER_CATEGORY_CODE'
102320          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
102321    AND l_bflow_method_code = 'PRIOR_ENTRY'
102322 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
102323    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
102324          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
102325        )
102326    THEN
102327          xla_ae_lines_pkg.BflowUpgEntry
102328            (p_business_method_code    => l_bflow_method_code
102329            ,p_business_class_code     => l_bflow_class_code
102330            ,p_balance_type            => l_balance_type_code);
102331    ELSE
102332       NULL;
102333 -- No business flow processing for business flow method of NONE.
102334    END IF;
102335 
102336    --
102337    -- call analytical criteria
102338    --
102339    
102340    --
102341    -- call description
102342    --
102343    -- No description or it is inherited.
102344    --
102345    -- call ADRs
102346    -- Bug 4922099
102347    --
102348    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
102349         (NVL(l_actual_upg_option, 'N') = 'O') OR
102350         (NVL(l_enc_upg_option, 'N') = 'O')
102351       )
102352    THEN
102353    NULL;
102354    --
102355    --
102356    
102357   l_ccid := AcctDerRule_4(
102358            p_application_id           => p_application_id
102359          , p_ae_header_id             => l_ae_header_id 
102360 , p_source_4 => p_source_4
102361          , x_transaction_coa_id       => l_adr_transaction_coa_id
102362          , x_accounting_coa_id        => l_adr_accounting_coa_id
102363          , x_value_type_code          => l_adr_value_type_code
102364          , p_side                     => 'NA'
102365    );
102366 
102367    xla_ae_lines_pkg.set_ccid(
102368     p_code_combination_id          => l_ccid
102369   , p_value_type_code              => l_adr_value_type_code
102370   , p_transaction_coa_id           => l_adr_transaction_coa_id
102371   , p_accounting_coa_id            => l_adr_accounting_coa_id
102372   , p_adr_code                     => 'CST_DEFAULT'
102373   , p_adr_type_code                => 'S'
102374   , p_component_type               => l_component_type
102375   , p_component_code               => l_component_code
102376   , p_component_type_code          => l_component_type_code
102377   , p_component_appl_id            => l_component_appl_id
102378   , p_amb_context_code             => l_amb_context_code
102379   , p_side                         => 'NA'
102380   );
102381 
102382 
102383    --
102384    --
102385    END IF;
102386    --
102387    -- Bug 4922099
102388    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
102389           (NVL(l_enc_upg_option, 'N') = 'O')
102390         ) AND
102391         (l_bflow_method_code = 'PRIOR_ENTRY')
102392       )
102393    THEN
102394       IF
102395       --
102396       1 = 2
102397       --
102398       THEN
102399       xla_accounting_err_pkg.build_message
102400                                     (p_appli_s_name            => 'XLA'
102401                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
102402                                     ,p_token_1                 => 'LINE_NUMBER'
102403                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
102404                                     ,p_token_2                 => 'LINE_TYPE_NAME'
102405                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
102406                                                                              l_component_type
102407                                                                             ,l_component_code
102408                                                                             ,l_component_type_code
102409                                                                             ,l_component_appl_id
102410                                                                             ,l_amb_context_code
102411                                                                             ,l_entity_code
102412                                                                             ,l_event_class_code
102413                                                                            )
102414                                     ,p_token_3                 => 'OWNER'
102415                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
102416                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
102417                                                                           ,p_lookup_code    => l_component_type_code
102418                                                                          )
102419                                     ,p_token_4                 => 'PRODUCT_NAME'
102420                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
102421                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
102422                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
102423                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
102424                                     ,p_ae_header_id            =>  NULL
102425                                        );
102426 
102427         IF (C_LEVEL_ERROR>= g_log_level) THEN
102428                  trace
102429                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
102430                       ,p_level    => C_LEVEL_ERROR
102431                       ,p_module   => l_log_module);
102432         END IF;
102433       END IF;
102434    END IF;
102435    --
102436    --
102437    ------------------------------------------------------------------------------------------------
102438    -- 4219869 Business Flow
102439    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
102440    -- Prior Entry.  Currently, the following code is always generated.
102441    ------------------------------------------------------------------------------------------------
102442    XLA_AE_LINES_PKG.ValidateCurrentLine;
102443 
102444    ------------------------------------------------------------------------------------
102445    -- 4219869 Business Flow
102446    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
102447    ------------------------------------------------------------------------------------
102448    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
102449 
102450    ----------------------------------------------------------------------------------
102451    -- 4219869 Business Flow
102452    -- Update journal entry status -- Need to generate this within IF <condition>
102453    ----------------------------------------------------------------------------------
102454    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
102455          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
102456          ,p_balance_type_code => l_balance_type_code
102457          );
102458 
102459    -------------------------------------------------------------------------------------------
102460    -- 4262811 - Generate the Accrual Reversal lines
102461    -------------------------------------------------------------------------------------------
102462    BEGIN
102463       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
102464                               (g_array_event(p_event_id).array_value_num('header_index'));
102465       IF l_acc_rev_flag IS NULL THEN
102466          l_acc_rev_flag := 'N';
102467       END IF;
102468    EXCEPTION
102469       WHEN OTHERS THEN
102470          l_acc_rev_flag := 'N';
102471    END;
102472    --
102473    IF (l_acc_rev_flag = 'Y') THEN
102474 
102475        -- 4645092  ------------------------------------------------------------------------------
102476        -- To allow MPA report to determine if it should generate report process
102477        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
102478        ------------------------------------------------------------------------------------------
102479 
102480        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
102481        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
102482    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
102483    -- call ADRs
102484    -- Bug 4922099
102485    --
102486    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
102487         (NVL(l_actual_upg_option, 'N') = 'O') OR
102488         (NVL(l_enc_upg_option, 'N') = 'O')
102489       )
102490    THEN
102491    NULL;
102492    --
102493    --
102494    
102495   l_ccid := AcctDerRule_4(
102496            p_application_id           => p_application_id
102497          , p_ae_header_id             => l_ae_header_id 
102498 , p_source_4 => p_source_4
102499          , x_transaction_coa_id       => l_adr_transaction_coa_id
102500          , x_accounting_coa_id        => l_adr_accounting_coa_id
102501          , x_value_type_code          => l_adr_value_type_code
102502          , p_side                     => 'NA'
102503    );
102504 
102505    xla_ae_lines_pkg.set_ccid(
102506     p_code_combination_id          => l_ccid
102507   , p_value_type_code              => l_adr_value_type_code
102508   , p_transaction_coa_id           => l_adr_transaction_coa_id
102509   , p_accounting_coa_id            => l_adr_accounting_coa_id
102510   , p_adr_code                     => 'CST_DEFAULT'
102511   , p_adr_type_code                => 'S'
102512   , p_component_type               => l_component_type
102513   , p_component_code               => l_component_code
102514   , p_component_type_code          => l_component_type_code
102515   , p_component_appl_id            => l_component_appl_id
102516   , p_amb_context_code             => l_amb_context_code
102517   , p_side                         => 'NA'
102518   );
102519 
102520 
102521    --
102522    --
102523    END IF;
102524 
102525        --
102526        -- Update the line information that should be overwritten
102527        --
102528        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
102529                                          p_header_num   => 1);
102530        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
102531 
102532        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
102533 
102534        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
102535           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
102536        END IF;
102537 
102538       --
102539       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
102540       --
102541       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
102542           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
102543       ELSE
102544           ---------------------------------------------------------------------------------------------------
102545           -- 4262811a Switch Sign
102546           ---------------------------------------------------------------------------------------------------
102547           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
102548           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
102549                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102550           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
102551                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102552           -- 5132302
102553           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
102554                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102555 
102556       END IF;
102557 
102558       -- 4955764
102559       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
102560       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
102561 
102562 
102563       XLA_AE_LINES_PKG.ValidateCurrentLine;
102564       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
102565 
102566       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
102567                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
102568                ,p_balance_type_code => l_balance_type_code);
102569 
102570    END IF;
102571 
102572    -----------------------------------------------------------------------------------------
102573    -- 4262811 Multiperiod Accounting
102574    -----------------------------------------------------------------------------------------
102575      -- No MPA option is assigned.
102576 
102577 
102578 END IF;
102579 END IF;
102580 --
102581 
102582 --
102583 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
102584    trace
102585       (p_msg      => 'END of AcctLineType_186'
102586       ,p_level    => C_LEVEL_PROCEDURE
102587       ,p_module   => l_log_module);
102588 END IF;
102589 --
102590 EXCEPTION
102591   WHEN xla_exceptions_pkg.application_exception THEN
102592       RAISE;
102593   WHEN OTHERS THEN
102594        xla_exceptions_pkg.raise_message
102595            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_186');
102596 END AcctLineType_186;
102597 --
102598 
102599 ---------------------------------------
102600 --
102601 -- PRIVATE FUNCTION
102602 --         AcctLineType_187
102603 --
102604 ---------------------------------------
102605 PROCEDURE AcctLineType_187 (
102606   p_application_id        IN NUMBER
102607  ,p_event_id              IN NUMBER
102608  ,p_calculate_acctd_flag  IN VARCHAR2
102609  ,p_calculate_g_l_flag    IN VARCHAR2
102610  ,p_actual_flag           IN OUT VARCHAR2
102611  ,p_balance_type_code     OUT VARCHAR2
102612  ,p_gain_or_loss_ref      OUT VARCHAR2
102613  
102614 --Cost Management Default Account
102615  , p_source_4            IN NUMBER
102616 --DISTRIBUTION_IDENTIFIER
102617  , p_source_11            IN NUMBER
102618 --Distribution Type
102619  , p_source_12            IN VARCHAR2
102620  , p_source_12_meaning    IN VARCHAR2
102621 --Entered Currency Code
102622  , p_source_15            IN VARCHAR2
102623 --Entered Amount
102624  , p_source_18            IN NUMBER
102625 --Currency Conversion Date
102626  , p_source_19            IN DATE
102627 --Currency Conversion Rate
102628  , p_source_20            IN NUMBER
102629 --Currency Conversion Type
102630  , p_source_21            IN VARCHAR2
102631 --Accounted Amount
102632  , p_source_22            IN NUMBER
102633 --Accounting Line Type
102634  , p_source_24            IN NUMBER
102635 )
102636 IS
102637 
102638 l_component_type              VARCHAR2(80);
102639 l_component_code              VARCHAR2(30);
102640 l_component_type_code         VARCHAR2(1);
102641 l_component_appl_id           INTEGER;
102642 l_amb_context_code            VARCHAR2(30);
102643 l_entity_code                 VARCHAR2(30);
102644 l_event_class_code            VARCHAR2(30);
102645 l_ae_header_id                NUMBER;
102646 l_event_type_code             VARCHAR2(30);
102647 l_line_definition_code        VARCHAR2(30);
102648 l_line_definition_owner_code  VARCHAR2(1);
102649 --
102650 -- adr variables
102651 l_segment                     VARCHAR2(30);
102652 l_ccid                        NUMBER;
102653 l_adr_transaction_coa_id      NUMBER;
102654 l_adr_accounting_coa_id       NUMBER;
102655 l_adr_flexfield_segment_code  VARCHAR2(30);
102656 l_adr_flex_value_set_id       NUMBER;
102657 l_adr_value_type_code         VARCHAR2(30);
102658 l_adr_value_combination_id    NUMBER;
102659 l_adr_value_segment_code      VARCHAR2(30);
102660 
102661 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
102662 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
102663 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
102664 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
102665 
102666 -- 4262811 Variables ------------------------------------------------------------------------------------------
102667 l_entered_amt_idx             NUMBER;
102668 l_accted_amt_idx              NUMBER;
102669 l_acc_rev_flag                VARCHAR2(1);
102670 l_accrual_line_num            NUMBER;
102671 l_tmp_amt                     NUMBER;
102672 l_acc_rev_natural_side_code   VARCHAR2(1);
102673 
102674 l_num_entries                 NUMBER;
102675 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
102676 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
102677 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
102678 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
102679 l_recog_line_1                NUMBER;
102680 l_recog_line_2                NUMBER;
102681 
102682 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
102683 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
102684 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
102685 
102686 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
102687 
102688 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
102689 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
102690 
102691 ---------------------------------------------------------------------------------------------------------------
102692 
102693 
102694 --
102695 -- bulk performance
102696 --
102697 l_balance_type_code           VARCHAR2(1);
102698 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
102699 l_log_module                  VARCHAR2(240);
102700 
102701 --
102702 -- Upgrade strategy
102703 --
102704 l_actual_upg_option           VARCHAR2(1);
102705 l_enc_upg_option           VARCHAR2(1);
102706 
102707 --
102708 BEGIN
102709 --
102710 IF g_log_enabled THEN
102711       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_187';
102712 END IF;
102713 --
102714 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
102715 
102716       trace
102717          (p_msg      => 'BEGIN of AcctLineType_187'
102718          ,p_level    => C_LEVEL_PROCEDURE
102719          ,p_module   => l_log_module);
102720 
102721 END IF;
102722 --
102723 l_component_type             := 'AMB_JLT';
102724 l_component_code             := 'OFFSET';
102725 l_component_type_code        := 'S';
102726 l_component_appl_id          :=  707;
102727 l_amb_context_code           := 'DEFAULT';
102728 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
102729 l_event_class_code           := 'USER_DEFINE';
102730 l_event_type_code            := 'UDIR_INTERORG_SHIP_TP';
102731 l_line_definition_owner_code := 'S';
102732 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_TP';
102733 --
102734 l_balance_type_code          := 'A';
102735 l_segment                     := NULL;
102736 l_ccid                        := NULL;
102737 l_adr_transaction_coa_id      := NULL;
102738 l_adr_accounting_coa_id       := NULL;
102739 l_adr_flexfield_segment_code  := NULL;
102740 l_adr_flex_value_set_id       := NULL;
102741 l_adr_value_type_code         := NULL;
102742 l_adr_value_combination_id    := NULL;
102743 l_adr_value_segment_code      := NULL;
102744 
102745 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
102746 l_bflow_class_code           := '';    -- 4219869 Business Flow
102747 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
102748 l_budgetary_control_flag     := 'N';
102749 
102750 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
102751 l_bflow_applied_to_amt       := NULL; -- 5132302
102752 l_entered_amt_idx            := NULL;          -- 4262811
102753 l_accted_amt_idx             := NULL;          -- 4262811
102754 l_acc_rev_flag               := NULL;          -- 4262811
102755 l_accrual_line_num           := NULL;          -- 4262811
102756 l_tmp_amt                    := NULL;          -- 4262811
102757 --
102758  
102759 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
102760     l_balance_type_code <> 'B' THEN
102761 IF NVL(p_source_24,9E125) =  2
102762  THEN 
102763 
102764    --
102765    XLA_AE_LINES_PKG.SetNewLine;
102766 
102767    p_balance_type_code          := l_balance_type_code;
102768    -- set the flag so later we will know whether the gain loss line needs to be created
102769    
102770    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
102771      p_actual_flag :='A';
102772    END IF;
102773 
102774    --
102775    -- bulk performance
102776    --
102777    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
102778                                       p_header_num   => 0); -- 4262811
102779    --
102780    -- set accounting line options
102781    --
102782    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
102783            p_natural_side_code          => 'D'
102784          , p_gain_or_loss_flag          => 'N'
102785          , p_gl_transfer_mode_code      => 'S'
102786          , p_acct_entry_type_code       => 'A'
102787          , p_switch_side_flag           => 'Y'
102788          , p_merge_duplicate_code       => 'N'
102789          );
102790    --
102791    l_acc_rev_natural_side_code := 'C';  -- 4262811
102792    -- 
102793    --
102794    -- set accounting line type info
102795    --
102796    xla_ae_lines_pkg.SetAcctLineType
102797       (p_component_type             => l_component_type
102798       ,p_event_type_code            => l_event_type_code
102799       ,p_line_definition_owner_code => l_line_definition_owner_code
102800       ,p_line_definition_code       => l_line_definition_code
102801       ,p_accounting_line_code       => l_component_code
102802       ,p_accounting_line_type_code  => l_component_type_code
102803       ,p_accounting_line_appl_id    => l_component_appl_id
102804       ,p_amb_context_code           => l_amb_context_code
102805       ,p_entity_code                => l_entity_code
102806       ,p_event_class_code           => l_event_class_code);
102807    --
102808    -- set accounting class
102809    --
102810    xla_ae_lines_pkg.SetAcctClass(
102811            p_accounting_class_code  => 'OFFSET'
102812          , p_ae_header_id           => l_ae_header_id
102813          );
102814 
102815    --
102816    -- set rounding class
102817    --
102818    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
102819                       'OFFSET';
102820 
102821    --
102822    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
102823    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
102824    --
102825    -- bulk performance
102826    --
102827    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
102828 
102829    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
102830       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
102831 
102832    -- 4955764
102833    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
102834       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
102835 
102836    -- 4458381 Public Sector Enh
102837    
102838    --
102839    -- set accounting attributes for the line type
102840    --
102841    l_entered_amt_idx := 3;
102842    l_accted_amt_idx  := 8;
102843    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
102844    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
102845    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
102846    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
102847    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
102848    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
102849    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
102850    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
102851    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
102852    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
102853    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
102854    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
102855    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
102856    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
102857    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
102858    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
102859    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
102860 
102861    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
102862    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
102863 
102864    ---------------------------------------------------------------------------------------------------------------
102865    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
102866    ---------------------------------------------------------------------------------------------------------------
102867    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
102868 
102869    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
102870    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
102871 
102872    IF xla_accounting_cache_pkg.GetValueChar
102873          (p_source_code         => 'LEDGER_CATEGORY_CODE'
102874          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
102875    AND l_bflow_method_code = 'PRIOR_ENTRY'
102876 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
102877    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
102878          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
102879        )
102880    THEN
102881          xla_ae_lines_pkg.BflowUpgEntry
102882            (p_business_method_code    => l_bflow_method_code
102883            ,p_business_class_code     => l_bflow_class_code
102884            ,p_balance_type            => l_balance_type_code);
102885    ELSE
102886       NULL;
102887 -- No business flow processing for business flow method of NONE.
102888    END IF;
102889 
102890    --
102891    -- call analytical criteria
102892    --
102893    
102894    --
102895    -- call description
102896    --
102897    -- No description or it is inherited.
102898    --
102899    -- call ADRs
102900    -- Bug 4922099
102901    --
102902    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
102903         (NVL(l_actual_upg_option, 'N') = 'O') OR
102904         (NVL(l_enc_upg_option, 'N') = 'O')
102905       )
102906    THEN
102907    NULL;
102908    --
102909    --
102910    
102911   l_ccid := AcctDerRule_4(
102912            p_application_id           => p_application_id
102913          , p_ae_header_id             => l_ae_header_id 
102914 , p_source_4 => p_source_4
102915          , x_transaction_coa_id       => l_adr_transaction_coa_id
102916          , x_accounting_coa_id        => l_adr_accounting_coa_id
102917          , x_value_type_code          => l_adr_value_type_code
102918          , p_side                     => 'NA'
102919    );
102920 
102921    xla_ae_lines_pkg.set_ccid(
102922     p_code_combination_id          => l_ccid
102923   , p_value_type_code              => l_adr_value_type_code
102924   , p_transaction_coa_id           => l_adr_transaction_coa_id
102925   , p_accounting_coa_id            => l_adr_accounting_coa_id
102926   , p_adr_code                     => 'CST_DEFAULT'
102927   , p_adr_type_code                => 'S'
102928   , p_component_type               => l_component_type
102929   , p_component_code               => l_component_code
102930   , p_component_type_code          => l_component_type_code
102931   , p_component_appl_id            => l_component_appl_id
102932   , p_amb_context_code             => l_amb_context_code
102933   , p_side                         => 'NA'
102934   );
102935 
102936 
102937    --
102938    --
102939    END IF;
102940    --
102941    -- Bug 4922099
102942    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
102943           (NVL(l_enc_upg_option, 'N') = 'O')
102944         ) AND
102945         (l_bflow_method_code = 'PRIOR_ENTRY')
102946       )
102947    THEN
102948       IF
102949       --
102950       1 = 2
102951       --
102952       THEN
102953       xla_accounting_err_pkg.build_message
102954                                     (p_appli_s_name            => 'XLA'
102955                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
102956                                     ,p_token_1                 => 'LINE_NUMBER'
102957                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
102958                                     ,p_token_2                 => 'LINE_TYPE_NAME'
102959                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
102960                                                                              l_component_type
102961                                                                             ,l_component_code
102962                                                                             ,l_component_type_code
102963                                                                             ,l_component_appl_id
102964                                                                             ,l_amb_context_code
102965                                                                             ,l_entity_code
102966                                                                             ,l_event_class_code
102967                                                                            )
102968                                     ,p_token_3                 => 'OWNER'
102969                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
102970                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
102971                                                                           ,p_lookup_code    => l_component_type_code
102972                                                                          )
102973                                     ,p_token_4                 => 'PRODUCT_NAME'
102974                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
102975                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
102976                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
102977                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
102978                                     ,p_ae_header_id            =>  NULL
102979                                        );
102980 
102981         IF (C_LEVEL_ERROR>= g_log_level) THEN
102982                  trace
102983                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
102984                       ,p_level    => C_LEVEL_ERROR
102985                       ,p_module   => l_log_module);
102986         END IF;
102987       END IF;
102988    END IF;
102989    --
102990    --
102991    ------------------------------------------------------------------------------------------------
102992    -- 4219869 Business Flow
102993    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
102994    -- Prior Entry.  Currently, the following code is always generated.
102995    ------------------------------------------------------------------------------------------------
102996    XLA_AE_LINES_PKG.ValidateCurrentLine;
102997 
102998    ------------------------------------------------------------------------------------
102999    -- 4219869 Business Flow
103000    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
103001    ------------------------------------------------------------------------------------
103002    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
103003 
103004    ----------------------------------------------------------------------------------
103005    -- 4219869 Business Flow
103006    -- Update journal entry status -- Need to generate this within IF <condition>
103007    ----------------------------------------------------------------------------------
103008    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
103009          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
103010          ,p_balance_type_code => l_balance_type_code
103011          );
103012 
103013    -------------------------------------------------------------------------------------------
103014    -- 4262811 - Generate the Accrual Reversal lines
103015    -------------------------------------------------------------------------------------------
103016    BEGIN
103017       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
103018                               (g_array_event(p_event_id).array_value_num('header_index'));
103019       IF l_acc_rev_flag IS NULL THEN
103020          l_acc_rev_flag := 'N';
103021       END IF;
103022    EXCEPTION
103023       WHEN OTHERS THEN
103024          l_acc_rev_flag := 'N';
103025    END;
103026    --
103027    IF (l_acc_rev_flag = 'Y') THEN
103028 
103029        -- 4645092  ------------------------------------------------------------------------------
103030        -- To allow MPA report to determine if it should generate report process
103031        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
103032        ------------------------------------------------------------------------------------------
103033 
103034        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
103035        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
103036    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
103037    -- call ADRs
103038    -- Bug 4922099
103039    --
103040    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
103041         (NVL(l_actual_upg_option, 'N') = 'O') OR
103042         (NVL(l_enc_upg_option, 'N') = 'O')
103043       )
103044    THEN
103045    NULL;
103046    --
103047    --
103048    
103049   l_ccid := AcctDerRule_4(
103050            p_application_id           => p_application_id
103051          , p_ae_header_id             => l_ae_header_id 
103052 , p_source_4 => p_source_4
103053          , x_transaction_coa_id       => l_adr_transaction_coa_id
103054          , x_accounting_coa_id        => l_adr_accounting_coa_id
103055          , x_value_type_code          => l_adr_value_type_code
103056          , p_side                     => 'NA'
103057    );
103058 
103059    xla_ae_lines_pkg.set_ccid(
103060     p_code_combination_id          => l_ccid
103061   , p_value_type_code              => l_adr_value_type_code
103062   , p_transaction_coa_id           => l_adr_transaction_coa_id
103063   , p_accounting_coa_id            => l_adr_accounting_coa_id
103064   , p_adr_code                     => 'CST_DEFAULT'
103065   , p_adr_type_code                => 'S'
103066   , p_component_type               => l_component_type
103067   , p_component_code               => l_component_code
103068   , p_component_type_code          => l_component_type_code
103069   , p_component_appl_id            => l_component_appl_id
103070   , p_amb_context_code             => l_amb_context_code
103071   , p_side                         => 'NA'
103072   );
103073 
103074 
103075    --
103076    --
103077    END IF;
103078 
103079        --
103080        -- Update the line information that should be overwritten
103081        --
103082        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
103083                                          p_header_num   => 1);
103084        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
103085 
103086        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
103087 
103088        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
103089           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
103090        END IF;
103091 
103092       --
103093       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
103094       --
103095       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
103096           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
103097       ELSE
103098           ---------------------------------------------------------------------------------------------------
103099           -- 4262811a Switch Sign
103100           ---------------------------------------------------------------------------------------------------
103101           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
103102           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
103103                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103104           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
103105                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103106           -- 5132302
103107           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
103108                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103109 
103110       END IF;
103111 
103112       -- 4955764
103113       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
103114       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
103115 
103116 
103117       XLA_AE_LINES_PKG.ValidateCurrentLine;
103118       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
103119 
103120       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
103121                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
103122                ,p_balance_type_code => l_balance_type_code);
103123 
103124    END IF;
103125 
103126    -----------------------------------------------------------------------------------------
103127    -- 4262811 Multiperiod Accounting
103128    -----------------------------------------------------------------------------------------
103129      -- No MPA option is assigned.
103130 
103131 
103132 END IF;
103133 END IF;
103134 --
103135 
103136 --
103137 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
103138    trace
103139       (p_msg      => 'END of AcctLineType_187'
103140       ,p_level    => C_LEVEL_PROCEDURE
103141       ,p_module   => l_log_module);
103142 END IF;
103143 --
103144 EXCEPTION
103145   WHEN xla_exceptions_pkg.application_exception THEN
103146       RAISE;
103147   WHEN OTHERS THEN
103148        xla_exceptions_pkg.raise_message
103149            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_187');
103150 END AcctLineType_187;
103151 --
103152 
103153 ---------------------------------------
103154 --
103155 -- PRIVATE FUNCTION
103156 --         AcctLineType_188
103157 --
103158 ---------------------------------------
103159 PROCEDURE AcctLineType_188 (
103160   p_application_id        IN NUMBER
103161  ,p_event_id              IN NUMBER
103162  ,p_calculate_acctd_flag  IN VARCHAR2
103163  ,p_calculate_g_l_flag    IN VARCHAR2
103164  ,p_actual_flag           IN OUT VARCHAR2
103165  ,p_balance_type_code     OUT VARCHAR2
103166  ,p_gain_or_loss_ref      OUT VARCHAR2
103167  
103168 --Cost Management Default Account
103169  , p_source_4            IN NUMBER
103170 --DISTRIBUTION_IDENTIFIER
103171  , p_source_11            IN NUMBER
103172 --Distribution Type
103173  , p_source_12            IN VARCHAR2
103174  , p_source_12_meaning    IN VARCHAR2
103175 --Entered Currency Code
103176  , p_source_15            IN VARCHAR2
103177 --Entered Amount
103178  , p_source_18            IN NUMBER
103179 --Currency Conversion Date
103180  , p_source_19            IN DATE
103181 --Currency Conversion Rate
103182  , p_source_20            IN NUMBER
103183 --Currency Conversion Type
103184  , p_source_21            IN VARCHAR2
103185 --Accounted Amount
103186  , p_source_22            IN NUMBER
103187 --Accounting Line Type
103188  , p_source_24            IN NUMBER
103189 )
103190 IS
103191 
103192 l_component_type              VARCHAR2(80);
103193 l_component_code              VARCHAR2(30);
103194 l_component_type_code         VARCHAR2(1);
103195 l_component_appl_id           INTEGER;
103196 l_amb_context_code            VARCHAR2(30);
103197 l_entity_code                 VARCHAR2(30);
103198 l_event_class_code            VARCHAR2(30);
103199 l_ae_header_id                NUMBER;
103200 l_event_type_code             VARCHAR2(30);
103201 l_line_definition_code        VARCHAR2(30);
103202 l_line_definition_owner_code  VARCHAR2(1);
103203 --
103204 -- adr variables
103205 l_segment                     VARCHAR2(30);
103206 l_ccid                        NUMBER;
103207 l_adr_transaction_coa_id      NUMBER;
103208 l_adr_accounting_coa_id       NUMBER;
103209 l_adr_flexfield_segment_code  VARCHAR2(30);
103210 l_adr_flex_value_set_id       NUMBER;
103211 l_adr_value_type_code         VARCHAR2(30);
103212 l_adr_value_combination_id    NUMBER;
103213 l_adr_value_segment_code      VARCHAR2(30);
103214 
103215 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
103216 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
103217 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
103218 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
103219 
103220 -- 4262811 Variables ------------------------------------------------------------------------------------------
103221 l_entered_amt_idx             NUMBER;
103222 l_accted_amt_idx              NUMBER;
103223 l_acc_rev_flag                VARCHAR2(1);
103224 l_accrual_line_num            NUMBER;
103225 l_tmp_amt                     NUMBER;
103226 l_acc_rev_natural_side_code   VARCHAR2(1);
103227 
103228 l_num_entries                 NUMBER;
103229 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
103230 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
103231 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
103232 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
103233 l_recog_line_1                NUMBER;
103234 l_recog_line_2                NUMBER;
103235 
103236 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
103237 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
103238 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
103239 
103240 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
103241 
103242 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
103243 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
103244 
103245 ---------------------------------------------------------------------------------------------------------------
103246 
103247 
103248 --
103249 -- bulk performance
103250 --
103251 l_balance_type_code           VARCHAR2(1);
103252 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
103253 l_log_module                  VARCHAR2(240);
103254 
103255 --
103256 -- Upgrade strategy
103257 --
103258 l_actual_upg_option           VARCHAR2(1);
103259 l_enc_upg_option           VARCHAR2(1);
103260 
103261 --
103262 BEGIN
103263 --
103264 IF g_log_enabled THEN
103265       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_188';
103266 END IF;
103267 --
103268 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
103269 
103270       trace
103271          (p_msg      => 'BEGIN of AcctLineType_188'
103272          ,p_level    => C_LEVEL_PROCEDURE
103273          ,p_module   => l_log_module);
103274 
103275 END IF;
103276 --
103277 l_component_type             := 'AMB_JLT';
103278 l_component_code             := 'OFFSET';
103279 l_component_type_code        := 'S';
103280 l_component_appl_id          :=  707;
103281 l_amb_context_code           := 'DEFAULT';
103282 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
103283 l_event_class_code           := 'USER_DEFINE';
103284 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
103285 l_line_definition_owner_code := 'S';
103286 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
103287 --
103288 l_balance_type_code          := 'A';
103289 l_segment                     := NULL;
103290 l_ccid                        := NULL;
103291 l_adr_transaction_coa_id      := NULL;
103292 l_adr_accounting_coa_id       := NULL;
103293 l_adr_flexfield_segment_code  := NULL;
103294 l_adr_flex_value_set_id       := NULL;
103295 l_adr_value_type_code         := NULL;
103296 l_adr_value_combination_id    := NULL;
103297 l_adr_value_segment_code      := NULL;
103298 
103299 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
103300 l_bflow_class_code           := '';    -- 4219869 Business Flow
103301 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
103302 l_budgetary_control_flag     := 'N';
103303 
103304 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
103305 l_bflow_applied_to_amt       := NULL; -- 5132302
103306 l_entered_amt_idx            := NULL;          -- 4262811
103307 l_accted_amt_idx             := NULL;          -- 4262811
103308 l_acc_rev_flag               := NULL;          -- 4262811
103309 l_accrual_line_num           := NULL;          -- 4262811
103310 l_tmp_amt                    := NULL;          -- 4262811
103311 --
103312  
103313 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
103314     l_balance_type_code <> 'B' THEN
103315 IF NVL(p_source_24,9E125) =  2
103316  THEN 
103317 
103318    --
103319    XLA_AE_LINES_PKG.SetNewLine;
103320 
103321    p_balance_type_code          := l_balance_type_code;
103322    -- set the flag so later we will know whether the gain loss line needs to be created
103323    
103324    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
103325      p_actual_flag :='A';
103326    END IF;
103327 
103328    --
103329    -- bulk performance
103330    --
103331    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
103332                                       p_header_num   => 0); -- 4262811
103333    --
103334    -- set accounting line options
103335    --
103336    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
103337            p_natural_side_code          => 'D'
103338          , p_gain_or_loss_flag          => 'N'
103339          , p_gl_transfer_mode_code      => 'S'
103340          , p_acct_entry_type_code       => 'A'
103341          , p_switch_side_flag           => 'Y'
103342          , p_merge_duplicate_code       => 'N'
103343          );
103344    --
103345    l_acc_rev_natural_side_code := 'C';  -- 4262811
103346    -- 
103347    --
103348    -- set accounting line type info
103349    --
103350    xla_ae_lines_pkg.SetAcctLineType
103351       (p_component_type             => l_component_type
103352       ,p_event_type_code            => l_event_type_code
103353       ,p_line_definition_owner_code => l_line_definition_owner_code
103354       ,p_line_definition_code       => l_line_definition_code
103355       ,p_accounting_line_code       => l_component_code
103356       ,p_accounting_line_type_code  => l_component_type_code
103357       ,p_accounting_line_appl_id    => l_component_appl_id
103358       ,p_amb_context_code           => l_amb_context_code
103359       ,p_entity_code                => l_entity_code
103360       ,p_event_class_code           => l_event_class_code);
103361    --
103362    -- set accounting class
103363    --
103364    xla_ae_lines_pkg.SetAcctClass(
103365            p_accounting_class_code  => 'OFFSET'
103366          , p_ae_header_id           => l_ae_header_id
103367          );
103368 
103369    --
103370    -- set rounding class
103371    --
103372    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
103373                       'OFFSET';
103374 
103375    --
103376    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
103377    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
103378    --
103379    -- bulk performance
103380    --
103381    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
103382 
103383    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
103384       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
103385 
103386    -- 4955764
103387    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
103388       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
103389 
103390    -- 4458381 Public Sector Enh
103391    
103392    --
103393    -- set accounting attributes for the line type
103394    --
103395    l_entered_amt_idx := 3;
103396    l_accted_amt_idx  := 8;
103397    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
103398    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
103399    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
103400    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
103401    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
103402    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
103403    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
103404    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
103405    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
103406    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
103407    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
103408    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
103409    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
103410    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
103411    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
103412    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
103413    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
103414 
103415    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
103416    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
103417 
103418    ---------------------------------------------------------------------------------------------------------------
103419    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
103420    ---------------------------------------------------------------------------------------------------------------
103421    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
103422 
103423    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
103424    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
103425 
103426    IF xla_accounting_cache_pkg.GetValueChar
103427          (p_source_code         => 'LEDGER_CATEGORY_CODE'
103428          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
103429    AND l_bflow_method_code = 'PRIOR_ENTRY'
103430 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
103431    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
103432          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
103433        )
103434    THEN
103435          xla_ae_lines_pkg.BflowUpgEntry
103436            (p_business_method_code    => l_bflow_method_code
103437            ,p_business_class_code     => l_bflow_class_code
103438            ,p_balance_type            => l_balance_type_code);
103439    ELSE
103440       NULL;
103441 -- No business flow processing for business flow method of NONE.
103442    END IF;
103443 
103444    --
103445    -- call analytical criteria
103446    --
103447    
103448    --
103449    -- call description
103450    --
103451    -- No description or it is inherited.
103452    --
103453    -- call ADRs
103454    -- Bug 4922099
103455    --
103456    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
103457         (NVL(l_actual_upg_option, 'N') = 'O') OR
103458         (NVL(l_enc_upg_option, 'N') = 'O')
103459       )
103460    THEN
103461    NULL;
103462    --
103463    --
103464    
103465   l_ccid := AcctDerRule_4(
103466            p_application_id           => p_application_id
103467          , p_ae_header_id             => l_ae_header_id 
103468 , p_source_4 => p_source_4
103469          , x_transaction_coa_id       => l_adr_transaction_coa_id
103470          , x_accounting_coa_id        => l_adr_accounting_coa_id
103471          , x_value_type_code          => l_adr_value_type_code
103472          , p_side                     => 'NA'
103473    );
103474 
103475    xla_ae_lines_pkg.set_ccid(
103476     p_code_combination_id          => l_ccid
103477   , p_value_type_code              => l_adr_value_type_code
103478   , p_transaction_coa_id           => l_adr_transaction_coa_id
103479   , p_accounting_coa_id            => l_adr_accounting_coa_id
103480   , p_adr_code                     => 'CST_DEFAULT'
103481   , p_adr_type_code                => 'S'
103482   , p_component_type               => l_component_type
103483   , p_component_code               => l_component_code
103484   , p_component_type_code          => l_component_type_code
103485   , p_component_appl_id            => l_component_appl_id
103486   , p_amb_context_code             => l_amb_context_code
103487   , p_side                         => 'NA'
103488   );
103489 
103490 
103491    --
103492    --
103493    END IF;
103494    --
103495    -- Bug 4922099
103496    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
103497           (NVL(l_enc_upg_option, 'N') = 'O')
103498         ) AND
103499         (l_bflow_method_code = 'PRIOR_ENTRY')
103500       )
103501    THEN
103502       IF
103503       --
103504       1 = 2
103505       --
103506       THEN
103507       xla_accounting_err_pkg.build_message
103508                                     (p_appli_s_name            => 'XLA'
103509                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
103510                                     ,p_token_1                 => 'LINE_NUMBER'
103511                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
103512                                     ,p_token_2                 => 'LINE_TYPE_NAME'
103513                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
103514                                                                              l_component_type
103515                                                                             ,l_component_code
103516                                                                             ,l_component_type_code
103517                                                                             ,l_component_appl_id
103518                                                                             ,l_amb_context_code
103519                                                                             ,l_entity_code
103520                                                                             ,l_event_class_code
103521                                                                            )
103522                                     ,p_token_3                 => 'OWNER'
103523                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
103524                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
103525                                                                           ,p_lookup_code    => l_component_type_code
103526                                                                          )
103527                                     ,p_token_4                 => 'PRODUCT_NAME'
103528                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
103529                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
103530                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
103531                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
103532                                     ,p_ae_header_id            =>  NULL
103533                                        );
103534 
103535         IF (C_LEVEL_ERROR>= g_log_level) THEN
103536                  trace
103537                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
103538                       ,p_level    => C_LEVEL_ERROR
103539                       ,p_module   => l_log_module);
103540         END IF;
103541       END IF;
103542    END IF;
103543    --
103544    --
103545    ------------------------------------------------------------------------------------------------
103546    -- 4219869 Business Flow
103547    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
103548    -- Prior Entry.  Currently, the following code is always generated.
103549    ------------------------------------------------------------------------------------------------
103550    XLA_AE_LINES_PKG.ValidateCurrentLine;
103551 
103552    ------------------------------------------------------------------------------------
103553    -- 4219869 Business Flow
103554    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
103555    ------------------------------------------------------------------------------------
103556    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
103557 
103558    ----------------------------------------------------------------------------------
103559    -- 4219869 Business Flow
103560    -- Update journal entry status -- Need to generate this within IF <condition>
103561    ----------------------------------------------------------------------------------
103562    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
103563          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
103564          ,p_balance_type_code => l_balance_type_code
103565          );
103566 
103567    -------------------------------------------------------------------------------------------
103568    -- 4262811 - Generate the Accrual Reversal lines
103569    -------------------------------------------------------------------------------------------
103570    BEGIN
103571       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
103572                               (g_array_event(p_event_id).array_value_num('header_index'));
103573       IF l_acc_rev_flag IS NULL THEN
103574          l_acc_rev_flag := 'N';
103575       END IF;
103576    EXCEPTION
103577       WHEN OTHERS THEN
103578          l_acc_rev_flag := 'N';
103579    END;
103580    --
103581    IF (l_acc_rev_flag = 'Y') THEN
103582 
103583        -- 4645092  ------------------------------------------------------------------------------
103584        -- To allow MPA report to determine if it should generate report process
103585        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
103586        ------------------------------------------------------------------------------------------
103587 
103588        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
103589        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
103590    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
103591    -- call ADRs
103592    -- Bug 4922099
103593    --
103594    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
103595         (NVL(l_actual_upg_option, 'N') = 'O') OR
103596         (NVL(l_enc_upg_option, 'N') = 'O')
103597       )
103598    THEN
103599    NULL;
103600    --
103601    --
103602    
103603   l_ccid := AcctDerRule_4(
103604            p_application_id           => p_application_id
103605          , p_ae_header_id             => l_ae_header_id 
103606 , p_source_4 => p_source_4
103607          , x_transaction_coa_id       => l_adr_transaction_coa_id
103608          , x_accounting_coa_id        => l_adr_accounting_coa_id
103609          , x_value_type_code          => l_adr_value_type_code
103610          , p_side                     => 'NA'
103611    );
103612 
103613    xla_ae_lines_pkg.set_ccid(
103614     p_code_combination_id          => l_ccid
103615   , p_value_type_code              => l_adr_value_type_code
103616   , p_transaction_coa_id           => l_adr_transaction_coa_id
103617   , p_accounting_coa_id            => l_adr_accounting_coa_id
103618   , p_adr_code                     => 'CST_DEFAULT'
103619   , p_adr_type_code                => 'S'
103620   , p_component_type               => l_component_type
103621   , p_component_code               => l_component_code
103622   , p_component_type_code          => l_component_type_code
103623   , p_component_appl_id            => l_component_appl_id
103624   , p_amb_context_code             => l_amb_context_code
103625   , p_side                         => 'NA'
103626   );
103627 
103628 
103629    --
103630    --
103631    END IF;
103632 
103633        --
103634        -- Update the line information that should be overwritten
103635        --
103636        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
103637                                          p_header_num   => 1);
103638        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
103639 
103640        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
103641 
103642        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
103643           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
103644        END IF;
103645 
103646       --
103647       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
103648       --
103649       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
103650           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
103651       ELSE
103652           ---------------------------------------------------------------------------------------------------
103653           -- 4262811a Switch Sign
103654           ---------------------------------------------------------------------------------------------------
103655           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
103656           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
103657                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103658           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
103659                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103660           -- 5132302
103661           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
103662                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103663 
103664       END IF;
103665 
103666       -- 4955764
103667       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
103668       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
103669 
103670 
103671       XLA_AE_LINES_PKG.ValidateCurrentLine;
103672       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
103673 
103674       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
103675                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
103676                ,p_balance_type_code => l_balance_type_code);
103677 
103678    END IF;
103679 
103680    -----------------------------------------------------------------------------------------
103681    -- 4262811 Multiperiod Accounting
103682    -----------------------------------------------------------------------------------------
103683      -- No MPA option is assigned.
103684 
103685 
103686 END IF;
103687 END IF;
103688 --
103689 
103690 --
103691 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
103692    trace
103693       (p_msg      => 'END of AcctLineType_188'
103694       ,p_level    => C_LEVEL_PROCEDURE
103695       ,p_module   => l_log_module);
103696 END IF;
103697 --
103698 EXCEPTION
103699   WHEN xla_exceptions_pkg.application_exception THEN
103700       RAISE;
103701   WHEN OTHERS THEN
103702        xla_exceptions_pkg.raise_message
103703            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_188');
103704 END AcctLineType_188;
103705 --
103706 
103707 ---------------------------------------
103708 --
103709 -- PRIVATE FUNCTION
103710 --         AcctLineType_189
103711 --
103712 ---------------------------------------
103713 PROCEDURE AcctLineType_189 (
103714   p_application_id        IN NUMBER
103715  ,p_event_id              IN NUMBER
103716  ,p_calculate_acctd_flag  IN VARCHAR2
103717  ,p_calculate_g_l_flag    IN VARCHAR2
103718  ,p_actual_flag           IN OUT VARCHAR2
103719  ,p_balance_type_code     OUT VARCHAR2
103720  ,p_gain_or_loss_ref      OUT VARCHAR2
103721  
103722 --Cost Management Default Account
103723  , p_source_4            IN NUMBER
103724 --DISTRIBUTION_IDENTIFIER
103725  , p_source_11            IN NUMBER
103726 --Distribution Type
103727  , p_source_12            IN VARCHAR2
103728  , p_source_12_meaning    IN VARCHAR2
103729 --Entered Currency Code
103730  , p_source_15            IN VARCHAR2
103731 --Entered Amount
103732  , p_source_18            IN NUMBER
103733 --Currency Conversion Date
103734  , p_source_19            IN DATE
103735 --Currency Conversion Rate
103736  , p_source_20            IN NUMBER
103737 --Currency Conversion Type
103738  , p_source_21            IN VARCHAR2
103739 --Accounted Amount
103740  , p_source_22            IN NUMBER
103741 --Accounting Line Type
103742  , p_source_24            IN NUMBER
103743 )
103744 IS
103745 
103746 l_component_type              VARCHAR2(80);
103747 l_component_code              VARCHAR2(30);
103748 l_component_type_code         VARCHAR2(1);
103749 l_component_appl_id           INTEGER;
103750 l_amb_context_code            VARCHAR2(30);
103751 l_entity_code                 VARCHAR2(30);
103752 l_event_class_code            VARCHAR2(30);
103753 l_ae_header_id                NUMBER;
103754 l_event_type_code             VARCHAR2(30);
103755 l_line_definition_code        VARCHAR2(30);
103756 l_line_definition_owner_code  VARCHAR2(1);
103757 --
103758 -- adr variables
103759 l_segment                     VARCHAR2(30);
103760 l_ccid                        NUMBER;
103761 l_adr_transaction_coa_id      NUMBER;
103762 l_adr_accounting_coa_id       NUMBER;
103763 l_adr_flexfield_segment_code  VARCHAR2(30);
103764 l_adr_flex_value_set_id       NUMBER;
103765 l_adr_value_type_code         VARCHAR2(30);
103766 l_adr_value_combination_id    NUMBER;
103767 l_adr_value_segment_code      VARCHAR2(30);
103768 
103769 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
103770 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
103771 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
103772 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
103773 
103774 -- 4262811 Variables ------------------------------------------------------------------------------------------
103775 l_entered_amt_idx             NUMBER;
103776 l_accted_amt_idx              NUMBER;
103777 l_acc_rev_flag                VARCHAR2(1);
103778 l_accrual_line_num            NUMBER;
103779 l_tmp_amt                     NUMBER;
103780 l_acc_rev_natural_side_code   VARCHAR2(1);
103781 
103782 l_num_entries                 NUMBER;
103783 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
103784 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
103785 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
103786 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
103787 l_recog_line_1                NUMBER;
103788 l_recog_line_2                NUMBER;
103789 
103790 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
103791 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
103792 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
103793 
103794 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
103795 
103796 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
103797 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
103798 
103799 ---------------------------------------------------------------------------------------------------------------
103800 
103801 
103802 --
103803 -- bulk performance
103804 --
103805 l_balance_type_code           VARCHAR2(1);
103806 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
103807 l_log_module                  VARCHAR2(240);
103808 
103809 --
103810 -- Upgrade strategy
103811 --
103812 l_actual_upg_option           VARCHAR2(1);
103813 l_enc_upg_option           VARCHAR2(1);
103814 
103815 --
103816 BEGIN
103817 --
103818 IF g_log_enabled THEN
103819       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_189';
103820 END IF;
103821 --
103822 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
103823 
103824       trace
103825          (p_msg      => 'BEGIN of AcctLineType_189'
103826          ,p_level    => C_LEVEL_PROCEDURE
103827          ,p_module   => l_log_module);
103828 
103829 END IF;
103830 --
103831 l_component_type             := 'AMB_JLT';
103832 l_component_code             := 'OFFSET';
103833 l_component_type_code        := 'S';
103834 l_component_appl_id          :=  707;
103835 l_amb_context_code           := 'DEFAULT';
103836 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
103837 l_event_class_code           := 'USER_DEFINE';
103838 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
103839 l_line_definition_owner_code := 'S';
103840 l_line_definition_code       := 'USER_FOB_SHIP_SENDER_SHIP_NOTP';
103841 --
103842 l_balance_type_code          := 'A';
103843 l_segment                     := NULL;
103844 l_ccid                        := NULL;
103845 l_adr_transaction_coa_id      := NULL;
103846 l_adr_accounting_coa_id       := NULL;
103847 l_adr_flexfield_segment_code  := NULL;
103848 l_adr_flex_value_set_id       := NULL;
103849 l_adr_value_type_code         := NULL;
103850 l_adr_value_combination_id    := NULL;
103851 l_adr_value_segment_code      := NULL;
103852 
103853 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
103854 l_bflow_class_code           := '';    -- 4219869 Business Flow
103855 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
103856 l_budgetary_control_flag     := 'N';
103857 
103858 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
103859 l_bflow_applied_to_amt       := NULL; -- 5132302
103860 l_entered_amt_idx            := NULL;          -- 4262811
103861 l_accted_amt_idx             := NULL;          -- 4262811
103862 l_acc_rev_flag               := NULL;          -- 4262811
103863 l_accrual_line_num           := NULL;          -- 4262811
103864 l_tmp_amt                    := NULL;          -- 4262811
103865 --
103866  
103867 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
103868     l_balance_type_code <> 'B' THEN
103869 IF NVL(p_source_24,9E125) =  2
103870  THEN 
103871 
103872    --
103873    XLA_AE_LINES_PKG.SetNewLine;
103874 
103875    p_balance_type_code          := l_balance_type_code;
103876    -- set the flag so later we will know whether the gain loss line needs to be created
103877    
103878    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
103879      p_actual_flag :='A';
103880    END IF;
103881 
103882    --
103883    -- bulk performance
103884    --
103885    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
103886                                       p_header_num   => 0); -- 4262811
103887    --
103888    -- set accounting line options
103889    --
103890    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
103891            p_natural_side_code          => 'D'
103892          , p_gain_or_loss_flag          => 'N'
103893          , p_gl_transfer_mode_code      => 'S'
103894          , p_acct_entry_type_code       => 'A'
103895          , p_switch_side_flag           => 'Y'
103896          , p_merge_duplicate_code       => 'N'
103897          );
103898    --
103899    l_acc_rev_natural_side_code := 'C';  -- 4262811
103900    -- 
103901    --
103902    -- set accounting line type info
103903    --
103904    xla_ae_lines_pkg.SetAcctLineType
103905       (p_component_type             => l_component_type
103906       ,p_event_type_code            => l_event_type_code
103907       ,p_line_definition_owner_code => l_line_definition_owner_code
103908       ,p_line_definition_code       => l_line_definition_code
103909       ,p_accounting_line_code       => l_component_code
103910       ,p_accounting_line_type_code  => l_component_type_code
103911       ,p_accounting_line_appl_id    => l_component_appl_id
103912       ,p_amb_context_code           => l_amb_context_code
103913       ,p_entity_code                => l_entity_code
103914       ,p_event_class_code           => l_event_class_code);
103915    --
103916    -- set accounting class
103917    --
103918    xla_ae_lines_pkg.SetAcctClass(
103919            p_accounting_class_code  => 'OFFSET'
103920          , p_ae_header_id           => l_ae_header_id
103921          );
103922 
103923    --
103924    -- set rounding class
103925    --
103926    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
103927                       'OFFSET';
103928 
103929    --
103930    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
103931    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
103932    --
103933    -- bulk performance
103934    --
103935    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
103936 
103937    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
103938       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
103939 
103940    -- 4955764
103941    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
103942       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
103943 
103944    -- 4458381 Public Sector Enh
103945    
103946    --
103947    -- set accounting attributes for the line type
103948    --
103949    l_entered_amt_idx := 3;
103950    l_accted_amt_idx  := 8;
103951    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
103952    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
103953    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
103954    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
103955    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
103956    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
103957    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
103958    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
103959    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
103960    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
103961    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
103962    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
103963    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
103964    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
103965    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
103966    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
103967    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
103968 
103969    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
103970    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
103971 
103972    ---------------------------------------------------------------------------------------------------------------
103973    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
103974    ---------------------------------------------------------------------------------------------------------------
103975    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
103976 
103977    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
103978    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
103979 
103980    IF xla_accounting_cache_pkg.GetValueChar
103981          (p_source_code         => 'LEDGER_CATEGORY_CODE'
103982          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
103983    AND l_bflow_method_code = 'PRIOR_ENTRY'
103984 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
103985    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
103986          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
103987        )
103988    THEN
103989          xla_ae_lines_pkg.BflowUpgEntry
103990            (p_business_method_code    => l_bflow_method_code
103991            ,p_business_class_code     => l_bflow_class_code
103992            ,p_balance_type            => l_balance_type_code);
103993    ELSE
103994       NULL;
103995 -- No business flow processing for business flow method of NONE.
103996    END IF;
103997 
103998    --
103999    -- call analytical criteria
104000    --
104001    
104002    --
104003    -- call description
104004    --
104005    -- No description or it is inherited.
104006    --
104007    -- call ADRs
104008    -- Bug 4922099
104009    --
104010    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
104011         (NVL(l_actual_upg_option, 'N') = 'O') OR
104012         (NVL(l_enc_upg_option, 'N') = 'O')
104013       )
104014    THEN
104015    NULL;
104016    --
104017    --
104018    
104019   l_ccid := AcctDerRule_4(
104020            p_application_id           => p_application_id
104021          , p_ae_header_id             => l_ae_header_id 
104022 , p_source_4 => p_source_4
104023          , x_transaction_coa_id       => l_adr_transaction_coa_id
104024          , x_accounting_coa_id        => l_adr_accounting_coa_id
104025          , x_value_type_code          => l_adr_value_type_code
104026          , p_side                     => 'NA'
104027    );
104028 
104029    xla_ae_lines_pkg.set_ccid(
104030     p_code_combination_id          => l_ccid
104031   , p_value_type_code              => l_adr_value_type_code
104032   , p_transaction_coa_id           => l_adr_transaction_coa_id
104033   , p_accounting_coa_id            => l_adr_accounting_coa_id
104034   , p_adr_code                     => 'CST_DEFAULT'
104035   , p_adr_type_code                => 'S'
104036   , p_component_type               => l_component_type
104037   , p_component_code               => l_component_code
104038   , p_component_type_code          => l_component_type_code
104039   , p_component_appl_id            => l_component_appl_id
104040   , p_amb_context_code             => l_amb_context_code
104041   , p_side                         => 'NA'
104042   );
104043 
104044 
104045    --
104046    --
104047    END IF;
104048    --
104049    -- Bug 4922099
104050    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
104051           (NVL(l_enc_upg_option, 'N') = 'O')
104052         ) AND
104053         (l_bflow_method_code = 'PRIOR_ENTRY')
104054       )
104055    THEN
104056       IF
104057       --
104058       1 = 2
104059       --
104060       THEN
104061       xla_accounting_err_pkg.build_message
104062                                     (p_appli_s_name            => 'XLA'
104063                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
104064                                     ,p_token_1                 => 'LINE_NUMBER'
104065                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
104066                                     ,p_token_2                 => 'LINE_TYPE_NAME'
104067                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
104068                                                                              l_component_type
104069                                                                             ,l_component_code
104070                                                                             ,l_component_type_code
104071                                                                             ,l_component_appl_id
104072                                                                             ,l_amb_context_code
104073                                                                             ,l_entity_code
104074                                                                             ,l_event_class_code
104075                                                                            )
104076                                     ,p_token_3                 => 'OWNER'
104077                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
104078                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
104079                                                                           ,p_lookup_code    => l_component_type_code
104080                                                                          )
104081                                     ,p_token_4                 => 'PRODUCT_NAME'
104082                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
104083                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
104084                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
104085                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
104086                                     ,p_ae_header_id            =>  NULL
104087                                        );
104088 
104089         IF (C_LEVEL_ERROR>= g_log_level) THEN
104090                  trace
104091                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
104092                       ,p_level    => C_LEVEL_ERROR
104093                       ,p_module   => l_log_module);
104094         END IF;
104095       END IF;
104096    END IF;
104097    --
104098    --
104099    ------------------------------------------------------------------------------------------------
104100    -- 4219869 Business Flow
104101    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
104102    -- Prior Entry.  Currently, the following code is always generated.
104103    ------------------------------------------------------------------------------------------------
104104    XLA_AE_LINES_PKG.ValidateCurrentLine;
104105 
104106    ------------------------------------------------------------------------------------
104107    -- 4219869 Business Flow
104108    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
104109    ------------------------------------------------------------------------------------
104110    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
104111 
104112    ----------------------------------------------------------------------------------
104113    -- 4219869 Business Flow
104114    -- Update journal entry status -- Need to generate this within IF <condition>
104115    ----------------------------------------------------------------------------------
104116    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
104117          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
104118          ,p_balance_type_code => l_balance_type_code
104119          );
104120 
104121    -------------------------------------------------------------------------------------------
104122    -- 4262811 - Generate the Accrual Reversal lines
104123    -------------------------------------------------------------------------------------------
104124    BEGIN
104125       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
104126                               (g_array_event(p_event_id).array_value_num('header_index'));
104127       IF l_acc_rev_flag IS NULL THEN
104128          l_acc_rev_flag := 'N';
104129       END IF;
104130    EXCEPTION
104131       WHEN OTHERS THEN
104132          l_acc_rev_flag := 'N';
104133    END;
104134    --
104135    IF (l_acc_rev_flag = 'Y') THEN
104136 
104137        -- 4645092  ------------------------------------------------------------------------------
104138        -- To allow MPA report to determine if it should generate report process
104139        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
104140        ------------------------------------------------------------------------------------------
104141 
104142        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
104143        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
104144    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
104145    -- call ADRs
104146    -- Bug 4922099
104147    --
104148    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
104149         (NVL(l_actual_upg_option, 'N') = 'O') OR
104150         (NVL(l_enc_upg_option, 'N') = 'O')
104151       )
104152    THEN
104153    NULL;
104154    --
104155    --
104156    
104157   l_ccid := AcctDerRule_4(
104158            p_application_id           => p_application_id
104159          , p_ae_header_id             => l_ae_header_id 
104160 , p_source_4 => p_source_4
104161          , x_transaction_coa_id       => l_adr_transaction_coa_id
104162          , x_accounting_coa_id        => l_adr_accounting_coa_id
104163          , x_value_type_code          => l_adr_value_type_code
104164          , p_side                     => 'NA'
104165    );
104166 
104167    xla_ae_lines_pkg.set_ccid(
104168     p_code_combination_id          => l_ccid
104169   , p_value_type_code              => l_adr_value_type_code
104170   , p_transaction_coa_id           => l_adr_transaction_coa_id
104171   , p_accounting_coa_id            => l_adr_accounting_coa_id
104172   , p_adr_code                     => 'CST_DEFAULT'
104173   , p_adr_type_code                => 'S'
104174   , p_component_type               => l_component_type
104175   , p_component_code               => l_component_code
104176   , p_component_type_code          => l_component_type_code
104177   , p_component_appl_id            => l_component_appl_id
104178   , p_amb_context_code             => l_amb_context_code
104179   , p_side                         => 'NA'
104180   );
104181 
104182 
104183    --
104184    --
104185    END IF;
104186 
104187        --
104188        -- Update the line information that should be overwritten
104189        --
104190        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
104191                                          p_header_num   => 1);
104192        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
104193 
104194        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
104195 
104196        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
104197           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
104198        END IF;
104199 
104200       --
104201       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
104202       --
104203       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
104204           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
104205       ELSE
104206           ---------------------------------------------------------------------------------------------------
104207           -- 4262811a Switch Sign
104208           ---------------------------------------------------------------------------------------------------
104209           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
104210           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
104211                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104212           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
104213                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104214           -- 5132302
104215           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
104216                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104217 
104218       END IF;
104219 
104220       -- 4955764
104221       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
104222       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
104223 
104224 
104225       XLA_AE_LINES_PKG.ValidateCurrentLine;
104226       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
104227 
104228       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
104229                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
104230                ,p_balance_type_code => l_balance_type_code);
104231 
104232    END IF;
104233 
104234    -----------------------------------------------------------------------------------------
104235    -- 4262811 Multiperiod Accounting
104236    -----------------------------------------------------------------------------------------
104237      -- No MPA option is assigned.
104238 
104239 
104240 END IF;
104241 END IF;
104242 --
104243 
104244 --
104245 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
104246    trace
104247       (p_msg      => 'END of AcctLineType_189'
104248       ,p_level    => C_LEVEL_PROCEDURE
104249       ,p_module   => l_log_module);
104250 END IF;
104251 --
104252 EXCEPTION
104253   WHEN xla_exceptions_pkg.application_exception THEN
104254       RAISE;
104255   WHEN OTHERS THEN
104256        xla_exceptions_pkg.raise_message
104257            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_189');
104258 END AcctLineType_189;
104259 --
104260 
104261 ---------------------------------------
104262 --
104263 -- PRIVATE FUNCTION
104264 --         AcctLineType_190
104265 --
104266 ---------------------------------------
104267 PROCEDURE AcctLineType_190 (
104268   p_application_id        IN NUMBER
104269  ,p_event_id              IN NUMBER
104270  ,p_calculate_acctd_flag  IN VARCHAR2
104271  ,p_calculate_g_l_flag    IN VARCHAR2
104272  ,p_actual_flag           IN OUT VARCHAR2
104273  ,p_balance_type_code     OUT VARCHAR2
104274  ,p_gain_or_loss_ref      OUT VARCHAR2
104275  
104276 --Cost Management Default Account
104277  , p_source_4            IN NUMBER
104278 --Applied to Application ID
104279  , p_source_6            IN NUMBER
104280 --Applied to Distribution Link Type
104281  , p_source_7            IN VARCHAR2
104282 --Applied to Entity Code
104283  , p_source_8            IN VARCHAR2
104284 --DISTRIBUTION_IDENTIFIER
104285  , p_source_11            IN NUMBER
104286 --Distribution Type
104287  , p_source_12            IN VARCHAR2
104288  , p_source_12_meaning    IN VARCHAR2
104289 --Encumbrance Reversal Amount Entered
104290  , p_source_14            IN NUMBER
104291 --Entered Currency Code
104292  , p_source_15            IN VARCHAR2
104293 --Transaction Encumbrance Reversal Amount
104294  , p_source_16            IN NUMBER
104295 --Entered Amount
104296  , p_source_18            IN NUMBER
104297 --Currency Conversion Date
104298  , p_source_19            IN DATE
104299 --Currency Conversion Rate
104300  , p_source_20            IN NUMBER
104301 --Currency Conversion Type
104302  , p_source_21            IN VARCHAR2
104303 --Accounted Amount
104304  , p_source_22            IN NUMBER
104305 --Accounting Line Type
104306  , p_source_24            IN NUMBER
104307 --Costing Encumbrance Upgrade Option
104308  , p_source_27            IN VARCHAR2
104309 --TXN_PO_DISTRIBUTION_ID
104310  , p_source_28            IN NUMBER
104311 --TXN_PO_HEADER_ID
104312  , p_source_29            IN NUMBER
104313 --Requisition Budget Account
104314  , p_source_30            IN NUMBER
104315 --Requisition Encumbrance Type Identifier
104316  , p_source_31            IN NUMBER
104317 )
104318 IS
104319 
104320 l_component_type              VARCHAR2(80);
104321 l_component_code              VARCHAR2(30);
104322 l_component_type_code         VARCHAR2(1);
104323 l_component_appl_id           INTEGER;
104324 l_amb_context_code            VARCHAR2(30);
104325 l_entity_code                 VARCHAR2(30);
104326 l_event_class_code            VARCHAR2(30);
104327 l_ae_header_id                NUMBER;
104328 l_event_type_code             VARCHAR2(30);
104329 l_line_definition_code        VARCHAR2(30);
104330 l_line_definition_owner_code  VARCHAR2(1);
104331 --
104332 -- adr variables
104333 l_segment                     VARCHAR2(30);
104334 l_ccid                        NUMBER;
104335 l_adr_transaction_coa_id      NUMBER;
104336 l_adr_accounting_coa_id       NUMBER;
104337 l_adr_flexfield_segment_code  VARCHAR2(30);
104338 l_adr_flex_value_set_id       NUMBER;
104339 l_adr_value_type_code         VARCHAR2(30);
104340 l_adr_value_combination_id    NUMBER;
104341 l_adr_value_segment_code      VARCHAR2(30);
104342 
104343 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
104344 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
104345 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
104346 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
104347 
104348 -- 4262811 Variables ------------------------------------------------------------------------------------------
104349 l_entered_amt_idx             NUMBER;
104350 l_accted_amt_idx              NUMBER;
104351 l_acc_rev_flag                VARCHAR2(1);
104352 l_accrual_line_num            NUMBER;
104353 l_tmp_amt                     NUMBER;
104354 l_acc_rev_natural_side_code   VARCHAR2(1);
104355 
104356 l_num_entries                 NUMBER;
104357 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
104358 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
104359 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
104360 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
104361 l_recog_line_1                NUMBER;
104362 l_recog_line_2                NUMBER;
104363 
104364 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
104365 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
104366 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
104367 
104368 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
104369 
104370 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
104371 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
104372 
104373 ---------------------------------------------------------------------------------------------------------------
104374 
104375 
104376 --
104377 -- bulk performance
104378 --
104379 l_balance_type_code           VARCHAR2(1);
104380 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
104381 l_log_module                  VARCHAR2(240);
104382 
104383 --
104384 -- Upgrade strategy
104385 --
104386 l_actual_upg_option           VARCHAR2(1);
104387 l_enc_upg_option           VARCHAR2(1);
104388 
104389 --
104390 BEGIN
104391 --
104392 IF g_log_enabled THEN
104393       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_190';
104394 END IF;
104395 --
104396 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
104397 
104398       trace
104399          (p_msg      => 'BEGIN of AcctLineType_190'
104400          ,p_level    => C_LEVEL_PROCEDURE
104401          ,p_module   => l_log_module);
104402 
104403 END IF;
104404 --
104405 l_component_type             := 'AMB_JLT';
104406 l_component_code             := 'OFFSET';
104407 l_component_type_code        := 'S';
104408 l_component_appl_id          :=  707;
104409 l_amb_context_code           := 'DEFAULT';
104410 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
104411 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
104412 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
104413 l_line_definition_owner_code := 'S';
104414 l_line_definition_code       := 'FOB_RCPT_RECIPIENT_RCPT';
104415 --
104416 l_balance_type_code          := 'A';
104417 l_segment                     := NULL;
104418 l_ccid                        := NULL;
104419 l_adr_transaction_coa_id      := NULL;
104420 l_adr_accounting_coa_id       := NULL;
104421 l_adr_flexfield_segment_code  := NULL;
104422 l_adr_flex_value_set_id       := NULL;
104423 l_adr_value_type_code         := NULL;
104424 l_adr_value_combination_id    := NULL;
104425 l_adr_value_segment_code      := NULL;
104426 
104427 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
104428 l_bflow_class_code           := '';    -- 4219869 Business Flow
104429 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
104430 l_budgetary_control_flag     := 'N';
104431 
104432 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
104433 l_bflow_applied_to_amt       := NULL; -- 5132302
104434 l_entered_amt_idx            := NULL;          -- 4262811
104435 l_accted_amt_idx             := NULL;          -- 4262811
104436 l_acc_rev_flag               := NULL;          -- 4262811
104437 l_accrual_line_num           := NULL;          -- 4262811
104438 l_tmp_amt                    := NULL;          -- 4262811
104439 --
104440  
104441 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
104442     l_balance_type_code <> 'B' THEN
104443 IF NVL(p_source_24,9E125) =  2 AND 
104444 p_source_22 >=  0
104445  THEN 
104446 
104447    --
104448    XLA_AE_LINES_PKG.SetNewLine;
104449 
104450    p_balance_type_code          := l_balance_type_code;
104451    -- set the flag so later we will know whether the gain loss line needs to be created
104452    
104453    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
104454      p_actual_flag :='A';
104455    END IF;
104456 
104457    --
104458    -- bulk performance
104459    --
104460    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
104461                                       p_header_num   => 0); -- 4262811
104462    --
104463    -- set accounting line options
104464    --
104465    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
104466            p_natural_side_code          => 'D'
104467          , p_gain_or_loss_flag          => 'N'
104468          , p_gl_transfer_mode_code      => 'S'
104469          , p_acct_entry_type_code       => 'A'
104470          , p_switch_side_flag           => 'Y'
104471          , p_merge_duplicate_code       => 'N'
104472          );
104473    --
104474    l_acc_rev_natural_side_code := 'C';  -- 4262811
104475    -- 
104476    --
104477    -- set accounting line type info
104478    --
104479    xla_ae_lines_pkg.SetAcctLineType
104480       (p_component_type             => l_component_type
104481       ,p_event_type_code            => l_event_type_code
104482       ,p_line_definition_owner_code => l_line_definition_owner_code
104483       ,p_line_definition_code       => l_line_definition_code
104484       ,p_accounting_line_code       => l_component_code
104485       ,p_accounting_line_type_code  => l_component_type_code
104486       ,p_accounting_line_appl_id    => l_component_appl_id
104487       ,p_amb_context_code           => l_amb_context_code
104488       ,p_entity_code                => l_entity_code
104489       ,p_event_class_code           => l_event_class_code);
104490    --
104491    -- set accounting class
104492    --
104493    xla_ae_lines_pkg.SetAcctClass(
104494            p_accounting_class_code  => 'OFFSET'
104495          , p_ae_header_id           => l_ae_header_id
104496          );
104497 
104498    --
104499    -- set rounding class
104500    --
104501    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
104502                       'OFFSET';
104503 
104504    --
104505    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
104506    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
104507    --
104508    -- bulk performance
104509    --
104510    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
104511 
104512    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
104513       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
104514 
104515    -- 4955764
104516    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
104517       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
104518 
104519    -- 4458381 Public Sector Enh
104520    
104521    --
104522    -- set accounting attributes for the line type
104523    --
104524    l_entered_amt_idx := 17;
104525    l_accted_amt_idx  := 22;
104526    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
104527    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
104528    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
104529    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
104530    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
104531    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
104532    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
104533    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
104534    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
104535    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
104536    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
104537    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
104538    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
104539    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
104540    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
104541    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
104542    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
104543    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
104544    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
104545    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
104546    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
104547    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
104548    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
104549    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
104550    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
104551    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
104552    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
104553    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
104554    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
104555    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
104556    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
104557    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
104558    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
104559    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
104560    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
104561    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
104562    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
104563    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
104564    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
104565    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
104566    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
104567    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
104568    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
104569    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
104570    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
104571    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
104572    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
104573    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
104574    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
104575 
104576    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
104577    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
104578 
104579    ---------------------------------------------------------------------------------------------------------------
104580    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
104581    ---------------------------------------------------------------------------------------------------------------
104582    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
104583 
104584    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
104585    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
104586 
104587    IF xla_accounting_cache_pkg.GetValueChar
104588          (p_source_code         => 'LEDGER_CATEGORY_CODE'
104589          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
104590    AND l_bflow_method_code = 'PRIOR_ENTRY'
104591 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
104592    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
104593          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
104594        )
104595    THEN
104596          xla_ae_lines_pkg.BflowUpgEntry
104597            (p_business_method_code    => l_bflow_method_code
104598            ,p_business_class_code     => l_bflow_class_code
104599            ,p_balance_type            => l_balance_type_code);
104600    ELSE
104601       NULL;
104602 -- No business flow processing for business flow method of NONE.
104603    END IF;
104604 
104605    --
104606    -- call analytical criteria
104607    --
104608    
104609    --
104610    -- call description
104611    --
104612    -- No description or it is inherited.
104613    --
104614    -- call ADRs
104615    -- Bug 4922099
104616    --
104617    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
104618         (NVL(l_actual_upg_option, 'N') = 'O') OR
104619         (NVL(l_enc_upg_option, 'N') = 'O')
104620       )
104621    THEN
104622    NULL;
104623    --
104624    --
104625    
104626   l_ccid := AcctDerRule_4(
104627            p_application_id           => p_application_id
104628          , p_ae_header_id             => l_ae_header_id 
104629 , p_source_4 => p_source_4
104630          , x_transaction_coa_id       => l_adr_transaction_coa_id
104631          , x_accounting_coa_id        => l_adr_accounting_coa_id
104632          , x_value_type_code          => l_adr_value_type_code
104633          , p_side                     => 'NA'
104634    );
104635 
104636    xla_ae_lines_pkg.set_ccid(
104637     p_code_combination_id          => l_ccid
104638   , p_value_type_code              => l_adr_value_type_code
104639   , p_transaction_coa_id           => l_adr_transaction_coa_id
104640   , p_accounting_coa_id            => l_adr_accounting_coa_id
104641   , p_adr_code                     => 'CST_DEFAULT'
104642   , p_adr_type_code                => 'S'
104643   , p_component_type               => l_component_type
104644   , p_component_code               => l_component_code
104645   , p_component_type_code          => l_component_type_code
104646   , p_component_appl_id            => l_component_appl_id
104647   , p_amb_context_code             => l_amb_context_code
104648   , p_side                         => 'NA'
104649   );
104650 
104651 
104652    --
104653    --
104654    END IF;
104655    --
104656    -- Bug 4922099
104657    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
104658           (NVL(l_enc_upg_option, 'N') = 'O')
104659         ) AND
104660         (l_bflow_method_code = 'PRIOR_ENTRY')
104661       )
104662    THEN
104663       IF
104664       --
104665       1 = 2
104666       --
104667       THEN
104668       xla_accounting_err_pkg.build_message
104669                                     (p_appli_s_name            => 'XLA'
104670                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
104671                                     ,p_token_1                 => 'LINE_NUMBER'
104672                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
104673                                     ,p_token_2                 => 'LINE_TYPE_NAME'
104674                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
104675                                                                              l_component_type
104676                                                                             ,l_component_code
104677                                                                             ,l_component_type_code
104678                                                                             ,l_component_appl_id
104679                                                                             ,l_amb_context_code
104680                                                                             ,l_entity_code
104681                                                                             ,l_event_class_code
104682                                                                            )
104683                                     ,p_token_3                 => 'OWNER'
104684                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
104685                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
104686                                                                           ,p_lookup_code    => l_component_type_code
104687                                                                          )
104688                                     ,p_token_4                 => 'PRODUCT_NAME'
104689                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
104690                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
104691                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
104692                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
104693                                     ,p_ae_header_id            =>  NULL
104694                                        );
104695 
104696         IF (C_LEVEL_ERROR>= g_log_level) THEN
104697                  trace
104698                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
104699                       ,p_level    => C_LEVEL_ERROR
104700                       ,p_module   => l_log_module);
104701         END IF;
104702       END IF;
104703    END IF;
104704    --
104705    --
104706    ------------------------------------------------------------------------------------------------
104707    -- 4219869 Business Flow
104708    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
104709    -- Prior Entry.  Currently, the following code is always generated.
104710    ------------------------------------------------------------------------------------------------
104711    XLA_AE_LINES_PKG.ValidateCurrentLine;
104712 
104713    ------------------------------------------------------------------------------------
104714    -- 4219869 Business Flow
104715    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
104716    ------------------------------------------------------------------------------------
104717    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
104718 
104719    ----------------------------------------------------------------------------------
104720    -- 4219869 Business Flow
104721    -- Update journal entry status -- Need to generate this within IF <condition>
104722    ----------------------------------------------------------------------------------
104723    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
104724          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
104725          ,p_balance_type_code => l_balance_type_code
104726          );
104727 
104728    -------------------------------------------------------------------------------------------
104729    -- 4262811 - Generate the Accrual Reversal lines
104730    -------------------------------------------------------------------------------------------
104731    BEGIN
104732       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
104733                               (g_array_event(p_event_id).array_value_num('header_index'));
104734       IF l_acc_rev_flag IS NULL THEN
104735          l_acc_rev_flag := 'N';
104736       END IF;
104737    EXCEPTION
104738       WHEN OTHERS THEN
104739          l_acc_rev_flag := 'N';
104740    END;
104741    --
104742    IF (l_acc_rev_flag = 'Y') THEN
104743 
104744        -- 4645092  ------------------------------------------------------------------------------
104745        -- To allow MPA report to determine if it should generate report process
104746        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
104747        ------------------------------------------------------------------------------------------
104748 
104749        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
104750        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
104751    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
104752    -- call ADRs
104753    -- Bug 4922099
104754    --
104755    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
104756         (NVL(l_actual_upg_option, 'N') = 'O') OR
104757         (NVL(l_enc_upg_option, 'N') = 'O')
104758       )
104759    THEN
104760    NULL;
104761    --
104762    --
104763    
104764   l_ccid := AcctDerRule_4(
104765            p_application_id           => p_application_id
104766          , p_ae_header_id             => l_ae_header_id 
104767 , p_source_4 => p_source_4
104768          , x_transaction_coa_id       => l_adr_transaction_coa_id
104769          , x_accounting_coa_id        => l_adr_accounting_coa_id
104770          , x_value_type_code          => l_adr_value_type_code
104771          , p_side                     => 'NA'
104772    );
104773 
104774    xla_ae_lines_pkg.set_ccid(
104775     p_code_combination_id          => l_ccid
104776   , p_value_type_code              => l_adr_value_type_code
104777   , p_transaction_coa_id           => l_adr_transaction_coa_id
104778   , p_accounting_coa_id            => l_adr_accounting_coa_id
104779   , p_adr_code                     => 'CST_DEFAULT'
104780   , p_adr_type_code                => 'S'
104781   , p_component_type               => l_component_type
104782   , p_component_code               => l_component_code
104783   , p_component_type_code          => l_component_type_code
104784   , p_component_appl_id            => l_component_appl_id
104785   , p_amb_context_code             => l_amb_context_code
104786   , p_side                         => 'NA'
104787   );
104788 
104789 
104790    --
104791    --
104792    END IF;
104793 
104794        --
104795        -- Update the line information that should be overwritten
104796        --
104797        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
104798                                          p_header_num   => 1);
104799        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
104800 
104801        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
104802 
104803        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
104804           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
104805        END IF;
104806 
104807       --
104808       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
104809       --
104810       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
104811           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
104812       ELSE
104813           ---------------------------------------------------------------------------------------------------
104814           -- 4262811a Switch Sign
104815           ---------------------------------------------------------------------------------------------------
104816           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
104817           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
104818                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104819           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
104820                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104821           -- 5132302
104822           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
104823                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104824 
104825       END IF;
104826 
104827       -- 4955764
104828       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
104829       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
104830 
104831 
104832       XLA_AE_LINES_PKG.ValidateCurrentLine;
104833       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
104834 
104835       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
104836                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
104837                ,p_balance_type_code => l_balance_type_code);
104838 
104839    END IF;
104840 
104841    -----------------------------------------------------------------------------------------
104842    -- 4262811 Multiperiod Accounting
104843    -----------------------------------------------------------------------------------------
104844      -- No MPA option is assigned.
104845 
104846 
104847 END IF;
104848 END IF;
104849 --
104850 
104851 --
104852 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
104853    trace
104854       (p_msg      => 'END of AcctLineType_190'
104855       ,p_level    => C_LEVEL_PROCEDURE
104856       ,p_module   => l_log_module);
104857 END IF;
104858 --
104859 EXCEPTION
104860   WHEN xla_exceptions_pkg.application_exception THEN
104861       RAISE;
104862   WHEN OTHERS THEN
104863        xla_exceptions_pkg.raise_message
104864            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_190');
104865 END AcctLineType_190;
104866 --
104867 
104868 ---------------------------------------
104869 --
104870 -- PRIVATE FUNCTION
104871 --         AcctLineType_191
104872 --
104873 ---------------------------------------
104874 PROCEDURE AcctLineType_191 (
104875   p_application_id        IN NUMBER
104876  ,p_event_id              IN NUMBER
104877  ,p_calculate_acctd_flag  IN VARCHAR2
104878  ,p_calculate_g_l_flag    IN VARCHAR2
104879  ,p_actual_flag           IN OUT VARCHAR2
104880  ,p_balance_type_code     OUT VARCHAR2
104881  ,p_gain_or_loss_ref      OUT VARCHAR2
104882  
104883 --Cost Management Default Account
104884  , p_source_4            IN NUMBER
104885 --DISTRIBUTION_IDENTIFIER
104886  , p_source_11            IN NUMBER
104887 --Distribution Type
104888  , p_source_12            IN VARCHAR2
104889  , p_source_12_meaning    IN VARCHAR2
104890 --Entered Currency Code
104891  , p_source_15            IN VARCHAR2
104892 --Entered Amount
104893  , p_source_18            IN NUMBER
104894 --Currency Conversion Date
104895  , p_source_19            IN DATE
104896 --Currency Conversion Rate
104897  , p_source_20            IN NUMBER
104898 --Currency Conversion Type
104899  , p_source_21            IN VARCHAR2
104900 --Accounted Amount
104901  , p_source_22            IN NUMBER
104902 --Accounting Line Type
104903  , p_source_24            IN NUMBER
104904 )
104905 IS
104906 
104907 l_component_type              VARCHAR2(80);
104908 l_component_code              VARCHAR2(30);
104909 l_component_type_code         VARCHAR2(1);
104910 l_component_appl_id           INTEGER;
104911 l_amb_context_code            VARCHAR2(30);
104912 l_entity_code                 VARCHAR2(30);
104913 l_event_class_code            VARCHAR2(30);
104914 l_ae_header_id                NUMBER;
104915 l_event_type_code             VARCHAR2(30);
104916 l_line_definition_code        VARCHAR2(30);
104917 l_line_definition_owner_code  VARCHAR2(1);
104918 --
104919 -- adr variables
104920 l_segment                     VARCHAR2(30);
104921 l_ccid                        NUMBER;
104922 l_adr_transaction_coa_id      NUMBER;
104923 l_adr_accounting_coa_id       NUMBER;
104924 l_adr_flexfield_segment_code  VARCHAR2(30);
104925 l_adr_flex_value_set_id       NUMBER;
104926 l_adr_value_type_code         VARCHAR2(30);
104927 l_adr_value_combination_id    NUMBER;
104928 l_adr_value_segment_code      VARCHAR2(30);
104929 
104930 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
104931 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
104932 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
104933 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
104934 
104935 -- 4262811 Variables ------------------------------------------------------------------------------------------
104936 l_entered_amt_idx             NUMBER;
104937 l_accted_amt_idx              NUMBER;
104938 l_acc_rev_flag                VARCHAR2(1);
104939 l_accrual_line_num            NUMBER;
104940 l_tmp_amt                     NUMBER;
104941 l_acc_rev_natural_side_code   VARCHAR2(1);
104942 
104943 l_num_entries                 NUMBER;
104944 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
104945 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
104946 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
104947 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
104948 l_recog_line_1                NUMBER;
104949 l_recog_line_2                NUMBER;
104950 
104951 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
104952 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
104953 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
104954 
104955 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
104956 
104957 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
104958 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
104959 
104960 ---------------------------------------------------------------------------------------------------------------
104961 
104962 
104963 --
104964 -- bulk performance
104965 --
104966 l_balance_type_code           VARCHAR2(1);
104967 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
104968 l_log_module                  VARCHAR2(240);
104969 
104970 --
104971 -- Upgrade strategy
104972 --
104973 l_actual_upg_option           VARCHAR2(1);
104974 l_enc_upg_option           VARCHAR2(1);
104975 
104976 --
104977 BEGIN
104978 --
104979 IF g_log_enabled THEN
104980       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_191';
104981 END IF;
104982 --
104983 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
104984 
104985       trace
104986          (p_msg      => 'BEGIN of AcctLineType_191'
104987          ,p_level    => C_LEVEL_PROCEDURE
104988          ,p_module   => l_log_module);
104989 
104990 END IF;
104991 --
104992 l_component_type             := 'AMB_JLT';
104993 l_component_code             := 'OFFSET';
104994 l_component_type_code        := 'S';
104995 l_component_appl_id          :=  707;
104996 l_amb_context_code           := 'DEFAULT';
104997 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
104998 l_event_class_code           := 'LOT';
104999 l_event_type_code            := 'LOT_ALL';
105000 l_line_definition_owner_code := 'S';
105001 l_line_definition_code       := 'WIP_MATERIAL_LOT';
105002 --
105003 l_balance_type_code          := 'A';
105004 l_segment                     := NULL;
105005 l_ccid                        := NULL;
105006 l_adr_transaction_coa_id      := NULL;
105007 l_adr_accounting_coa_id       := NULL;
105008 l_adr_flexfield_segment_code  := NULL;
105009 l_adr_flex_value_set_id       := NULL;
105010 l_adr_value_type_code         := NULL;
105011 l_adr_value_combination_id    := NULL;
105012 l_adr_value_segment_code      := NULL;
105013 
105014 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
105015 l_bflow_class_code           := '';    -- 4219869 Business Flow
105016 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
105017 l_budgetary_control_flag     := 'N';
105018 
105019 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
105020 l_bflow_applied_to_amt       := NULL; -- 5132302
105021 l_entered_amt_idx            := NULL;          -- 4262811
105022 l_accted_amt_idx             := NULL;          -- 4262811
105023 l_acc_rev_flag               := NULL;          -- 4262811
105024 l_accrual_line_num           := NULL;          -- 4262811
105025 l_tmp_amt                    := NULL;          -- 4262811
105026 --
105027  
105028 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
105029     l_balance_type_code <> 'B' THEN
105030 IF NVL(p_source_24,9E125) =  25 OR 
105031 NVL(p_source_24,9E125) =  27
105032  THEN 
105033 
105034    --
105035    XLA_AE_LINES_PKG.SetNewLine;
105036 
105037    p_balance_type_code          := l_balance_type_code;
105038    -- set the flag so later we will know whether the gain loss line needs to be created
105039    
105040    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
105041      p_actual_flag :='A';
105042    END IF;
105043 
105044    --
105045    -- bulk performance
105046    --
105047    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
105048                                       p_header_num   => 0); -- 4262811
105049    --
105050    -- set accounting line options
105051    --
105052    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
105053            p_natural_side_code          => 'D'
105054          , p_gain_or_loss_flag          => 'N'
105055          , p_gl_transfer_mode_code      => 'S'
105056          , p_acct_entry_type_code       => 'A'
105057          , p_switch_side_flag           => 'Y'
105058          , p_merge_duplicate_code       => 'N'
105059          );
105060    --
105061    l_acc_rev_natural_side_code := 'C';  -- 4262811
105062    -- 
105063    --
105064    -- set accounting line type info
105065    --
105066    xla_ae_lines_pkg.SetAcctLineType
105067       (p_component_type             => l_component_type
105068       ,p_event_type_code            => l_event_type_code
105069       ,p_line_definition_owner_code => l_line_definition_owner_code
105070       ,p_line_definition_code       => l_line_definition_code
105071       ,p_accounting_line_code       => l_component_code
105072       ,p_accounting_line_type_code  => l_component_type_code
105073       ,p_accounting_line_appl_id    => l_component_appl_id
105074       ,p_amb_context_code           => l_amb_context_code
105075       ,p_entity_code                => l_entity_code
105076       ,p_event_class_code           => l_event_class_code);
105077    --
105078    -- set accounting class
105079    --
105080    xla_ae_lines_pkg.SetAcctClass(
105081            p_accounting_class_code  => 'OFFSET'
105082          , p_ae_header_id           => l_ae_header_id
105083          );
105084 
105085    --
105086    -- set rounding class
105087    --
105088    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
105089                       'OFFSET';
105090 
105091    --
105092    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
105093    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
105094    --
105095    -- bulk performance
105096    --
105097    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
105098 
105099    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
105100       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
105101 
105102    -- 4955764
105103    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
105104       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
105105 
105106    -- 4458381 Public Sector Enh
105107    
105108    --
105109    -- set accounting attributes for the line type
105110    --
105111    l_entered_amt_idx := 3;
105112    l_accted_amt_idx  := 8;
105113    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
105114    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
105115    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
105116    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
105117    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
105118    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
105119    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
105120    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
105121    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
105122    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
105123    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
105124    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
105125    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
105126    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
105127    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
105128    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
105129    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
105130 
105131    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
105132    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
105133 
105134    ---------------------------------------------------------------------------------------------------------------
105135    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
105136    ---------------------------------------------------------------------------------------------------------------
105137    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
105138 
105139    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
105140    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
105141 
105142    IF xla_accounting_cache_pkg.GetValueChar
105143          (p_source_code         => 'LEDGER_CATEGORY_CODE'
105144          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
105145    AND l_bflow_method_code = 'PRIOR_ENTRY'
105146 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
105147    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
105148          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
105149        )
105150    THEN
105151          xla_ae_lines_pkg.BflowUpgEntry
105152            (p_business_method_code    => l_bflow_method_code
105153            ,p_business_class_code     => l_bflow_class_code
105154            ,p_balance_type            => l_balance_type_code);
105155    ELSE
105156       NULL;
105157 -- No business flow processing for business flow method of NONE.
105158    END IF;
105159 
105160    --
105161    -- call analytical criteria
105162    --
105163    
105164    --
105165    -- call description
105166    --
105167    -- No description or it is inherited.
105168    --
105169    -- call ADRs
105170    -- Bug 4922099
105171    --
105172    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
105173         (NVL(l_actual_upg_option, 'N') = 'O') OR
105174         (NVL(l_enc_upg_option, 'N') = 'O')
105175       )
105176    THEN
105177    NULL;
105178    --
105179    --
105180    
105181   l_ccid := AcctDerRule_4(
105182            p_application_id           => p_application_id
105183          , p_ae_header_id             => l_ae_header_id 
105184 , p_source_4 => p_source_4
105185          , x_transaction_coa_id       => l_adr_transaction_coa_id
105186          , x_accounting_coa_id        => l_adr_accounting_coa_id
105187          , x_value_type_code          => l_adr_value_type_code
105188          , p_side                     => 'NA'
105189    );
105190 
105191    xla_ae_lines_pkg.set_ccid(
105192     p_code_combination_id          => l_ccid
105193   , p_value_type_code              => l_adr_value_type_code
105194   , p_transaction_coa_id           => l_adr_transaction_coa_id
105195   , p_accounting_coa_id            => l_adr_accounting_coa_id
105196   , p_adr_code                     => 'CST_DEFAULT'
105197   , p_adr_type_code                => 'S'
105198   , p_component_type               => l_component_type
105199   , p_component_code               => l_component_code
105200   , p_component_type_code          => l_component_type_code
105201   , p_component_appl_id            => l_component_appl_id
105202   , p_amb_context_code             => l_amb_context_code
105203   , p_side                         => 'NA'
105204   );
105205 
105206 
105207    --
105208    --
105209    END IF;
105210    --
105211    -- Bug 4922099
105212    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
105213           (NVL(l_enc_upg_option, 'N') = 'O')
105214         ) AND
105215         (l_bflow_method_code = 'PRIOR_ENTRY')
105216       )
105217    THEN
105218       IF
105219       --
105220       1 = 2
105221       --
105222       THEN
105223       xla_accounting_err_pkg.build_message
105224                                     (p_appli_s_name            => 'XLA'
105225                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
105226                                     ,p_token_1                 => 'LINE_NUMBER'
105227                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
105228                                     ,p_token_2                 => 'LINE_TYPE_NAME'
105229                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
105230                                                                              l_component_type
105231                                                                             ,l_component_code
105232                                                                             ,l_component_type_code
105233                                                                             ,l_component_appl_id
105234                                                                             ,l_amb_context_code
105235                                                                             ,l_entity_code
105236                                                                             ,l_event_class_code
105237                                                                            )
105238                                     ,p_token_3                 => 'OWNER'
105239                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
105240                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
105241                                                                           ,p_lookup_code    => l_component_type_code
105242                                                                          )
105243                                     ,p_token_4                 => 'PRODUCT_NAME'
105244                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
105245                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
105246                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
105247                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
105248                                     ,p_ae_header_id            =>  NULL
105249                                        );
105250 
105251         IF (C_LEVEL_ERROR>= g_log_level) THEN
105252                  trace
105253                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
105254                       ,p_level    => C_LEVEL_ERROR
105255                       ,p_module   => l_log_module);
105256         END IF;
105257       END IF;
105258    END IF;
105259    --
105260    --
105261    ------------------------------------------------------------------------------------------------
105262    -- 4219869 Business Flow
105263    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
105264    -- Prior Entry.  Currently, the following code is always generated.
105265    ------------------------------------------------------------------------------------------------
105266    XLA_AE_LINES_PKG.ValidateCurrentLine;
105267 
105268    ------------------------------------------------------------------------------------
105269    -- 4219869 Business Flow
105270    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
105271    ------------------------------------------------------------------------------------
105272    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
105273 
105274    ----------------------------------------------------------------------------------
105275    -- 4219869 Business Flow
105276    -- Update journal entry status -- Need to generate this within IF <condition>
105277    ----------------------------------------------------------------------------------
105278    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
105279          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
105280          ,p_balance_type_code => l_balance_type_code
105281          );
105282 
105283    -------------------------------------------------------------------------------------------
105284    -- 4262811 - Generate the Accrual Reversal lines
105285    -------------------------------------------------------------------------------------------
105286    BEGIN
105287       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
105288                               (g_array_event(p_event_id).array_value_num('header_index'));
105289       IF l_acc_rev_flag IS NULL THEN
105290          l_acc_rev_flag := 'N';
105291       END IF;
105292    EXCEPTION
105293       WHEN OTHERS THEN
105294          l_acc_rev_flag := 'N';
105295    END;
105296    --
105297    IF (l_acc_rev_flag = 'Y') THEN
105298 
105299        -- 4645092  ------------------------------------------------------------------------------
105300        -- To allow MPA report to determine if it should generate report process
105301        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
105302        ------------------------------------------------------------------------------------------
105303 
105304        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
105305        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
105306    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
105307    -- call ADRs
105308    -- Bug 4922099
105309    --
105310    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
105311         (NVL(l_actual_upg_option, 'N') = 'O') OR
105312         (NVL(l_enc_upg_option, 'N') = 'O')
105313       )
105314    THEN
105315    NULL;
105316    --
105317    --
105318    
105319   l_ccid := AcctDerRule_4(
105320            p_application_id           => p_application_id
105321          , p_ae_header_id             => l_ae_header_id 
105322 , p_source_4 => p_source_4
105323          , x_transaction_coa_id       => l_adr_transaction_coa_id
105324          , x_accounting_coa_id        => l_adr_accounting_coa_id
105325          , x_value_type_code          => l_adr_value_type_code
105326          , p_side                     => 'NA'
105327    );
105328 
105329    xla_ae_lines_pkg.set_ccid(
105330     p_code_combination_id          => l_ccid
105331   , p_value_type_code              => l_adr_value_type_code
105332   , p_transaction_coa_id           => l_adr_transaction_coa_id
105333   , p_accounting_coa_id            => l_adr_accounting_coa_id
105334   , p_adr_code                     => 'CST_DEFAULT'
105335   , p_adr_type_code                => 'S'
105336   , p_component_type               => l_component_type
105337   , p_component_code               => l_component_code
105338   , p_component_type_code          => l_component_type_code
105339   , p_component_appl_id            => l_component_appl_id
105340   , p_amb_context_code             => l_amb_context_code
105341   , p_side                         => 'NA'
105342   );
105343 
105344 
105345    --
105346    --
105347    END IF;
105348 
105349        --
105350        -- Update the line information that should be overwritten
105351        --
105352        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
105353                                          p_header_num   => 1);
105354        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
105355 
105356        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
105357 
105358        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
105359           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
105360        END IF;
105361 
105362       --
105363       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
105364       --
105365       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
105366           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
105367       ELSE
105368           ---------------------------------------------------------------------------------------------------
105369           -- 4262811a Switch Sign
105370           ---------------------------------------------------------------------------------------------------
105371           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
105372           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
105373                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105374           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
105375                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105376           -- 5132302
105377           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
105378                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105379 
105380       END IF;
105381 
105382       -- 4955764
105383       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
105384       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
105385 
105386 
105387       XLA_AE_LINES_PKG.ValidateCurrentLine;
105388       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
105389 
105390       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
105391                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
105392                ,p_balance_type_code => l_balance_type_code);
105393 
105394    END IF;
105395 
105396    -----------------------------------------------------------------------------------------
105397    -- 4262811 Multiperiod Accounting
105398    -----------------------------------------------------------------------------------------
105399      -- No MPA option is assigned.
105400 
105401 
105402 END IF;
105403 END IF;
105404 --
105405 
105406 --
105407 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
105408    trace
105409       (p_msg      => 'END of AcctLineType_191'
105410       ,p_level    => C_LEVEL_PROCEDURE
105411       ,p_module   => l_log_module);
105412 END IF;
105413 --
105414 EXCEPTION
105415   WHEN xla_exceptions_pkg.application_exception THEN
105416       RAISE;
105417   WHEN OTHERS THEN
105418        xla_exceptions_pkg.raise_message
105419            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_191');
105420 END AcctLineType_191;
105421 --
105422 
105423 ---------------------------------------
105424 --
105425 -- PRIVATE FUNCTION
105426 --         AcctLineType_192
105427 --
105428 ---------------------------------------
105429 PROCEDURE AcctLineType_192 (
105430   p_application_id        IN NUMBER
105431  ,p_event_id              IN NUMBER
105432  ,p_calculate_acctd_flag  IN VARCHAR2
105433  ,p_calculate_g_l_flag    IN VARCHAR2
105434  ,p_actual_flag           IN OUT VARCHAR2
105435  ,p_balance_type_code     OUT VARCHAR2
105436  ,p_gain_or_loss_ref      OUT VARCHAR2
105437  
105438 --Cost Management Default Account
105439  , p_source_4            IN NUMBER
105440 --Applied to Application ID
105441  , p_source_6            IN NUMBER
105442 --Applied to Distribution Link Type
105443  , p_source_7            IN VARCHAR2
105444 --Applied to Entity Code
105445  , p_source_8            IN VARCHAR2
105446 --Applied To Purchase Document Identifier
105447  , p_source_10            IN NUMBER
105448 --DISTRIBUTION_IDENTIFIER
105449  , p_source_11            IN NUMBER
105450 --Distribution Type
105451  , p_source_12            IN VARCHAR2
105452  , p_source_12_meaning    IN VARCHAR2
105453 --PO Budget Account
105454  , p_source_13            IN NUMBER
105455 --Encumbrance Reversal Amount Entered
105456  , p_source_14            IN NUMBER
105457 --Entered Currency Code
105458  , p_source_15            IN VARCHAR2
105459 --Transaction Encumbrance Reversal Amount
105460  , p_source_16            IN NUMBER
105461 --Entered Amount
105462  , p_source_18            IN NUMBER
105463 --Currency Conversion Date
105464  , p_source_19            IN DATE
105465 --Currency Conversion Rate
105466  , p_source_20            IN NUMBER
105467 --Currency Conversion Type
105468  , p_source_21            IN VARCHAR2
105469 --Accounted Amount
105470  , p_source_22            IN NUMBER
105471 --Purchasing Encumbrance Type Identifier
105472  , p_source_23            IN NUMBER
105473 --Accounting Line Type
105474  , p_source_24            IN NUMBER
105475 --Costing Encumbrance Upgrade Option
105476  , p_source_27            IN VARCHAR2
105477 --TXN_PO_DISTRIBUTION_ID
105478  , p_source_28            IN NUMBER
105479 )
105480 IS
105481 
105482 l_component_type              VARCHAR2(80);
105483 l_component_code              VARCHAR2(30);
105484 l_component_type_code         VARCHAR2(1);
105485 l_component_appl_id           INTEGER;
105486 l_amb_context_code            VARCHAR2(30);
105487 l_entity_code                 VARCHAR2(30);
105488 l_event_class_code            VARCHAR2(30);
105489 l_ae_header_id                NUMBER;
105490 l_event_type_code             VARCHAR2(30);
105491 l_line_definition_code        VARCHAR2(30);
105492 l_line_definition_owner_code  VARCHAR2(1);
105493 --
105494 -- adr variables
105495 l_segment                     VARCHAR2(30);
105496 l_ccid                        NUMBER;
105497 l_adr_transaction_coa_id      NUMBER;
105498 l_adr_accounting_coa_id       NUMBER;
105499 l_adr_flexfield_segment_code  VARCHAR2(30);
105500 l_adr_flex_value_set_id       NUMBER;
105501 l_adr_value_type_code         VARCHAR2(30);
105502 l_adr_value_combination_id    NUMBER;
105503 l_adr_value_segment_code      VARCHAR2(30);
105504 
105505 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
105506 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
105507 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
105508 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
105509 
105510 -- 4262811 Variables ------------------------------------------------------------------------------------------
105511 l_entered_amt_idx             NUMBER;
105512 l_accted_amt_idx              NUMBER;
105513 l_acc_rev_flag                VARCHAR2(1);
105514 l_accrual_line_num            NUMBER;
105515 l_tmp_amt                     NUMBER;
105516 l_acc_rev_natural_side_code   VARCHAR2(1);
105517 
105518 l_num_entries                 NUMBER;
105519 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
105520 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
105521 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
105522 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
105523 l_recog_line_1                NUMBER;
105524 l_recog_line_2                NUMBER;
105525 
105526 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
105527 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
105528 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
105529 
105530 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
105531 
105532 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
105533 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
105534 
105535 ---------------------------------------------------------------------------------------------------------------
105536 
105537 
105538 --
105539 -- bulk performance
105540 --
105541 l_balance_type_code           VARCHAR2(1);
105542 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
105543 l_log_module                  VARCHAR2(240);
105544 
105545 --
105546 -- Upgrade strategy
105547 --
105548 l_actual_upg_option           VARCHAR2(1);
105549 l_enc_upg_option           VARCHAR2(1);
105550 
105551 --
105552 BEGIN
105553 --
105554 IF g_log_enabled THEN
105555       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_192';
105556 END IF;
105557 --
105558 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
105559 
105560       trace
105561          (p_msg      => 'BEGIN of AcctLineType_192'
105562          ,p_level    => C_LEVEL_PROCEDURE
105563          ,p_module   => l_log_module);
105564 
105565 END IF;
105566 --
105567 l_component_type             := 'AMB_JLT';
105568 l_component_code             := 'OFFSET';
105569 l_component_type_code        := 'S';
105570 l_component_appl_id          :=  707;
105571 l_amb_context_code           := 'DEFAULT';
105572 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
105573 l_event_class_code           := 'PURCHASE_ORDER';
105574 l_event_type_code            := 'PURCHASE_ORDER_ALL';
105575 l_line_definition_owner_code := 'S';
105576 l_line_definition_code       := 'PURCHASE_ORDER';
105577 --
105578 l_balance_type_code          := 'A';
105579 l_segment                     := NULL;
105580 l_ccid                        := NULL;
105581 l_adr_transaction_coa_id      := NULL;
105582 l_adr_accounting_coa_id       := NULL;
105583 l_adr_flexfield_segment_code  := NULL;
105584 l_adr_flex_value_set_id       := NULL;
105585 l_adr_value_type_code         := NULL;
105586 l_adr_value_combination_id    := NULL;
105587 l_adr_value_segment_code      := NULL;
105588 
105589 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
105590 l_bflow_class_code           := '';    -- 4219869 Business Flow
105591 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
105592 l_budgetary_control_flag     := 'N';
105593 
105594 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
105595 l_bflow_applied_to_amt       := NULL; -- 5132302
105596 l_entered_amt_idx            := NULL;          -- 4262811
105597 l_accted_amt_idx             := NULL;          -- 4262811
105598 l_acc_rev_flag               := NULL;          -- 4262811
105599 l_accrual_line_num           := NULL;          -- 4262811
105600 l_tmp_amt                    := NULL;          -- 4262811
105601 --
105602  
105603 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
105604     l_balance_type_code <> 'B' THEN
105605 IF NVL(p_source_24,9E125) =  2
105606  THEN 
105607 
105608    --
105609    XLA_AE_LINES_PKG.SetNewLine;
105610 
105611    p_balance_type_code          := l_balance_type_code;
105612    -- set the flag so later we will know whether the gain loss line needs to be created
105613    
105614    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
105615      p_actual_flag :='A';
105616    END IF;
105617 
105618    --
105619    -- bulk performance
105620    --
105621    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
105622                                       p_header_num   => 0); -- 4262811
105623    --
105624    -- set accounting line options
105625    --
105626    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
105627            p_natural_side_code          => 'D'
105628          , p_gain_or_loss_flag          => 'N'
105629          , p_gl_transfer_mode_code      => 'S'
105630          , p_acct_entry_type_code       => 'A'
105631          , p_switch_side_flag           => 'Y'
105632          , p_merge_duplicate_code       => 'N'
105633          );
105634    --
105635    l_acc_rev_natural_side_code := 'C';  -- 4262811
105636    -- 
105637    --
105638    -- set accounting line type info
105639    --
105640    xla_ae_lines_pkg.SetAcctLineType
105641       (p_component_type             => l_component_type
105642       ,p_event_type_code            => l_event_type_code
105643       ,p_line_definition_owner_code => l_line_definition_owner_code
105644       ,p_line_definition_code       => l_line_definition_code
105645       ,p_accounting_line_code       => l_component_code
105646       ,p_accounting_line_type_code  => l_component_type_code
105647       ,p_accounting_line_appl_id    => l_component_appl_id
105648       ,p_amb_context_code           => l_amb_context_code
105649       ,p_entity_code                => l_entity_code
105650       ,p_event_class_code           => l_event_class_code);
105651    --
105652    -- set accounting class
105653    --
105654    xla_ae_lines_pkg.SetAcctClass(
105655            p_accounting_class_code  => 'OFFSET'
105656          , p_ae_header_id           => l_ae_header_id
105657          );
105658 
105659    --
105660    -- set rounding class
105661    --
105662    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
105663                       'OFFSET';
105664 
105665    --
105666    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
105667    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
105668    --
105669    -- bulk performance
105670    --
105671    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
105672 
105673    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
105674       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
105675 
105676    -- 4955764
105677    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
105678       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
105679 
105680    -- 4458381 Public Sector Enh
105681    
105682    --
105683    -- set accounting attributes for the line type
105684    --
105685    l_entered_amt_idx := 17;
105686    l_accted_amt_idx  := 22;
105687    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
105688    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
105689    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
105690    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
105691    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
105692    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
105693    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
105694    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
105695    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
105696    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
105697    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_10);
105698    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
105699    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
105700    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
105701    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
105702    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
105703    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_13);
105704    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
105705    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
105706    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
105707    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
105708    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
105709    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
105710    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
105711    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_13);
105712    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
105713    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
105714    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
105715    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
105716    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
105717    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
105718    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
105719    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
105720    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
105721    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
105722    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
105723    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
105724    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
105725    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
105726    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
105727    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
105728    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
105729    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
105730    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
105731    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
105732    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
105733    l_rec_acct_attrs.array_num_value(23)  := p_source_23;
105734    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
105735    l_rec_acct_attrs.array_num_value(24)  := p_source_23;
105736 
105737    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
105738    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
105739 
105740    ---------------------------------------------------------------------------------------------------------------
105741    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
105742    ---------------------------------------------------------------------------------------------------------------
105743    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
105744 
105745    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
105746    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
105747 
105748    IF xla_accounting_cache_pkg.GetValueChar
105749          (p_source_code         => 'LEDGER_CATEGORY_CODE'
105750          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
105751    AND l_bflow_method_code = 'PRIOR_ENTRY'
105752 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
105753    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
105754          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
105755        )
105756    THEN
105757          xla_ae_lines_pkg.BflowUpgEntry
105758            (p_business_method_code    => l_bflow_method_code
105759            ,p_business_class_code     => l_bflow_class_code
105760            ,p_balance_type            => l_balance_type_code);
105761    ELSE
105762       NULL;
105763 -- No business flow processing for business flow method of NONE.
105764    END IF;
105765 
105766    --
105767    -- call analytical criteria
105768    --
105769    
105770    --
105771    -- call description
105772    --
105773    -- No description or it is inherited.
105774    --
105775    -- call ADRs
105776    -- Bug 4922099
105777    --
105778    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
105779         (NVL(l_actual_upg_option, 'N') = 'O') OR
105780         (NVL(l_enc_upg_option, 'N') = 'O')
105781       )
105782    THEN
105783    NULL;
105784    --
105785    --
105786    
105787   l_ccid := AcctDerRule_4(
105788            p_application_id           => p_application_id
105789          , p_ae_header_id             => l_ae_header_id 
105790 , p_source_4 => p_source_4
105791          , x_transaction_coa_id       => l_adr_transaction_coa_id
105792          , x_accounting_coa_id        => l_adr_accounting_coa_id
105793          , x_value_type_code          => l_adr_value_type_code
105794          , p_side                     => 'NA'
105795    );
105796 
105797    xla_ae_lines_pkg.set_ccid(
105798     p_code_combination_id          => l_ccid
105799   , p_value_type_code              => l_adr_value_type_code
105800   , p_transaction_coa_id           => l_adr_transaction_coa_id
105801   , p_accounting_coa_id            => l_adr_accounting_coa_id
105802   , p_adr_code                     => 'CST_DEFAULT'
105803   , p_adr_type_code                => 'S'
105804   , p_component_type               => l_component_type
105805   , p_component_code               => l_component_code
105806   , p_component_type_code          => l_component_type_code
105807   , p_component_appl_id            => l_component_appl_id
105808   , p_amb_context_code             => l_amb_context_code
105809   , p_side                         => 'NA'
105810   );
105811 
105812 
105813    --
105814    --
105815    END IF;
105816    --
105817    -- Bug 4922099
105818    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
105819           (NVL(l_enc_upg_option, 'N') = 'O')
105820         ) AND
105821         (l_bflow_method_code = 'PRIOR_ENTRY')
105822       )
105823    THEN
105824       IF
105825       --
105826       1 = 2
105827       --
105828       THEN
105829       xla_accounting_err_pkg.build_message
105830                                     (p_appli_s_name            => 'XLA'
105831                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
105832                                     ,p_token_1                 => 'LINE_NUMBER'
105833                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
105834                                     ,p_token_2                 => 'LINE_TYPE_NAME'
105835                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
105836                                                                              l_component_type
105837                                                                             ,l_component_code
105838                                                                             ,l_component_type_code
105839                                                                             ,l_component_appl_id
105840                                                                             ,l_amb_context_code
105841                                                                             ,l_entity_code
105842                                                                             ,l_event_class_code
105843                                                                            )
105844                                     ,p_token_3                 => 'OWNER'
105845                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
105846                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
105847                                                                           ,p_lookup_code    => l_component_type_code
105848                                                                          )
105849                                     ,p_token_4                 => 'PRODUCT_NAME'
105850                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
105851                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
105852                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
105853                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
105854                                     ,p_ae_header_id            =>  NULL
105855                                        );
105856 
105857         IF (C_LEVEL_ERROR>= g_log_level) THEN
105858                  trace
105859                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
105860                       ,p_level    => C_LEVEL_ERROR
105861                       ,p_module   => l_log_module);
105862         END IF;
105863       END IF;
105864    END IF;
105865    --
105866    --
105867    ------------------------------------------------------------------------------------------------
105868    -- 4219869 Business Flow
105869    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
105870    -- Prior Entry.  Currently, the following code is always generated.
105871    ------------------------------------------------------------------------------------------------
105872    XLA_AE_LINES_PKG.ValidateCurrentLine;
105873 
105874    ------------------------------------------------------------------------------------
105875    -- 4219869 Business Flow
105876    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
105877    ------------------------------------------------------------------------------------
105878    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
105879 
105880    ----------------------------------------------------------------------------------
105881    -- 4219869 Business Flow
105882    -- Update journal entry status -- Need to generate this within IF <condition>
105883    ----------------------------------------------------------------------------------
105884    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
105885          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
105886          ,p_balance_type_code => l_balance_type_code
105887          );
105888 
105889    -------------------------------------------------------------------------------------------
105890    -- 4262811 - Generate the Accrual Reversal lines
105891    -------------------------------------------------------------------------------------------
105892    BEGIN
105893       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
105894                               (g_array_event(p_event_id).array_value_num('header_index'));
105895       IF l_acc_rev_flag IS NULL THEN
105896          l_acc_rev_flag := 'N';
105897       END IF;
105898    EXCEPTION
105899       WHEN OTHERS THEN
105900          l_acc_rev_flag := 'N';
105901    END;
105902    --
105903    IF (l_acc_rev_flag = 'Y') THEN
105904 
105905        -- 4645092  ------------------------------------------------------------------------------
105906        -- To allow MPA report to determine if it should generate report process
105907        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
105908        ------------------------------------------------------------------------------------------
105909 
105910        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
105911        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
105912    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
105913    -- call ADRs
105914    -- Bug 4922099
105915    --
105916    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
105917         (NVL(l_actual_upg_option, 'N') = 'O') OR
105918         (NVL(l_enc_upg_option, 'N') = 'O')
105919       )
105920    THEN
105921    NULL;
105922    --
105923    --
105924    
105925   l_ccid := AcctDerRule_4(
105926            p_application_id           => p_application_id
105927          , p_ae_header_id             => l_ae_header_id 
105928 , p_source_4 => p_source_4
105929          , x_transaction_coa_id       => l_adr_transaction_coa_id
105930          , x_accounting_coa_id        => l_adr_accounting_coa_id
105931          , x_value_type_code          => l_adr_value_type_code
105932          , p_side                     => 'NA'
105933    );
105934 
105935    xla_ae_lines_pkg.set_ccid(
105936     p_code_combination_id          => l_ccid
105937   , p_value_type_code              => l_adr_value_type_code
105938   , p_transaction_coa_id           => l_adr_transaction_coa_id
105939   , p_accounting_coa_id            => l_adr_accounting_coa_id
105940   , p_adr_code                     => 'CST_DEFAULT'
105941   , p_adr_type_code                => 'S'
105942   , p_component_type               => l_component_type
105943   , p_component_code               => l_component_code
105944   , p_component_type_code          => l_component_type_code
105945   , p_component_appl_id            => l_component_appl_id
105946   , p_amb_context_code             => l_amb_context_code
105947   , p_side                         => 'NA'
105948   );
105949 
105950 
105951    --
105952    --
105953    END IF;
105954 
105955        --
105956        -- Update the line information that should be overwritten
105957        --
105958        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
105959                                          p_header_num   => 1);
105960        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
105961 
105962        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
105963 
105964        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
105965           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
105966        END IF;
105967 
105968       --
105969       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
105970       --
105971       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
105972           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
105973       ELSE
105974           ---------------------------------------------------------------------------------------------------
105975           -- 4262811a Switch Sign
105976           ---------------------------------------------------------------------------------------------------
105977           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
105978           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
105979                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105980           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
105981                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105982           -- 5132302
105983           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
105984                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105985 
105986       END IF;
105987 
105988       -- 4955764
105989       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
105990       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
105991 
105992 
105993       XLA_AE_LINES_PKG.ValidateCurrentLine;
105994       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
105995 
105996       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
105997                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
105998                ,p_balance_type_code => l_balance_type_code);
105999 
106000    END IF;
106001 
106002    -----------------------------------------------------------------------------------------
106003    -- 4262811 Multiperiod Accounting
106004    -----------------------------------------------------------------------------------------
106005      -- No MPA option is assigned.
106006 
106007 
106008 END IF;
106009 END IF;
106010 --
106011 
106012 --
106013 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
106014    trace
106015       (p_msg      => 'END of AcctLineType_192'
106016       ,p_level    => C_LEVEL_PROCEDURE
106017       ,p_module   => l_log_module);
106018 END IF;
106019 --
106020 EXCEPTION
106021   WHEN xla_exceptions_pkg.application_exception THEN
106022       RAISE;
106023   WHEN OTHERS THEN
106024        xla_exceptions_pkg.raise_message
106025            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_192');
106026 END AcctLineType_192;
106027 --
106028 
106029 ---------------------------------------
106030 --
106031 -- PRIVATE FUNCTION
106032 --         AcctLineType_193
106033 --
106034 ---------------------------------------
106035 PROCEDURE AcctLineType_193 (
106036   p_application_id        IN NUMBER
106037  ,p_event_id              IN NUMBER
106038  ,p_calculate_acctd_flag  IN VARCHAR2
106039  ,p_calculate_g_l_flag    IN VARCHAR2
106040  ,p_actual_flag           IN OUT VARCHAR2
106041  ,p_balance_type_code     OUT VARCHAR2
106042  ,p_gain_or_loss_ref      OUT VARCHAR2
106043  
106044 --Cost Management Default Account
106045  , p_source_4            IN NUMBER
106046 --DISTRIBUTION_IDENTIFIER
106047  , p_source_11            IN NUMBER
106048 --Distribution Type
106049  , p_source_12            IN VARCHAR2
106050  , p_source_12_meaning    IN VARCHAR2
106051 --Entered Currency Code
106052  , p_source_15            IN VARCHAR2
106053 --Entered Amount
106054  , p_source_18            IN NUMBER
106055 --Currency Conversion Date
106056  , p_source_19            IN DATE
106057 --Currency Conversion Rate
106058  , p_source_20            IN NUMBER
106059 --Currency Conversion Type
106060  , p_source_21            IN VARCHAR2
106061 --Accounted Amount
106062  , p_source_22            IN NUMBER
106063 --Accounting Line Type
106064  , p_source_24            IN NUMBER
106065 )
106066 IS
106067 
106068 l_component_type              VARCHAR2(80);
106069 l_component_code              VARCHAR2(30);
106070 l_component_type_code         VARCHAR2(1);
106071 l_component_appl_id           INTEGER;
106072 l_amb_context_code            VARCHAR2(30);
106073 l_entity_code                 VARCHAR2(30);
106074 l_event_class_code            VARCHAR2(30);
106075 l_ae_header_id                NUMBER;
106076 l_event_type_code             VARCHAR2(30);
106077 l_line_definition_code        VARCHAR2(30);
106078 l_line_definition_owner_code  VARCHAR2(1);
106079 --
106080 -- adr variables
106081 l_segment                     VARCHAR2(30);
106082 l_ccid                        NUMBER;
106083 l_adr_transaction_coa_id      NUMBER;
106084 l_adr_accounting_coa_id       NUMBER;
106085 l_adr_flexfield_segment_code  VARCHAR2(30);
106086 l_adr_flex_value_set_id       NUMBER;
106087 l_adr_value_type_code         VARCHAR2(30);
106088 l_adr_value_combination_id    NUMBER;
106089 l_adr_value_segment_code      VARCHAR2(30);
106090 
106091 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
106092 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
106093 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
106094 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
106095 
106096 -- 4262811 Variables ------------------------------------------------------------------------------------------
106097 l_entered_amt_idx             NUMBER;
106098 l_accted_amt_idx              NUMBER;
106099 l_acc_rev_flag                VARCHAR2(1);
106100 l_accrual_line_num            NUMBER;
106101 l_tmp_amt                     NUMBER;
106102 l_acc_rev_natural_side_code   VARCHAR2(1);
106103 
106104 l_num_entries                 NUMBER;
106105 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
106106 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
106107 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
106108 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
106109 l_recog_line_1                NUMBER;
106110 l_recog_line_2                NUMBER;
106111 
106112 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
106113 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
106114 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
106115 
106116 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
106117 
106118 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
106119 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
106120 
106121 ---------------------------------------------------------------------------------------------------------------
106122 
106123 
106124 --
106125 -- bulk performance
106126 --
106127 l_balance_type_code           VARCHAR2(1);
106128 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
106129 l_log_module                  VARCHAR2(240);
106130 
106131 --
106132 -- Upgrade strategy
106133 --
106134 l_actual_upg_option           VARCHAR2(1);
106135 l_enc_upg_option           VARCHAR2(1);
106136 
106137 --
106138 BEGIN
106139 --
106140 IF g_log_enabled THEN
106141       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_193';
106142 END IF;
106143 --
106144 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
106145 
106146       trace
106147          (p_msg      => 'BEGIN of AcctLineType_193'
106148          ,p_level    => C_LEVEL_PROCEDURE
106149          ,p_module   => l_log_module);
106150 
106151 END IF;
106152 --
106153 l_component_type             := 'AMB_JLT';
106154 l_component_code             := 'OFFSET';
106155 l_component_type_code        := 'S';
106156 l_component_appl_id          :=  707;
106157 l_amb_context_code           := 'DEFAULT';
106158 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
106159 l_event_class_code           := 'USER_DEFINE';
106160 l_event_type_code            := 'UDIR_INTERORG_RCPT';
106161 l_line_definition_owner_code := 'S';
106162 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT';
106163 --
106164 l_balance_type_code          := 'A';
106165 l_segment                     := NULL;
106166 l_ccid                        := NULL;
106167 l_adr_transaction_coa_id      := NULL;
106168 l_adr_accounting_coa_id       := NULL;
106169 l_adr_flexfield_segment_code  := NULL;
106170 l_adr_flex_value_set_id       := NULL;
106171 l_adr_value_type_code         := NULL;
106172 l_adr_value_combination_id    := NULL;
106173 l_adr_value_segment_code      := NULL;
106174 
106175 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
106176 l_bflow_class_code           := '';    -- 4219869 Business Flow
106177 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
106178 l_budgetary_control_flag     := 'N';
106179 
106180 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
106181 l_bflow_applied_to_amt       := NULL; -- 5132302
106182 l_entered_amt_idx            := NULL;          -- 4262811
106183 l_accted_amt_idx             := NULL;          -- 4262811
106184 l_acc_rev_flag               := NULL;          -- 4262811
106185 l_accrual_line_num           := NULL;          -- 4262811
106186 l_tmp_amt                    := NULL;          -- 4262811
106187 --
106188  
106189 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
106190     l_balance_type_code <> 'B' THEN
106191 IF NVL(p_source_24,9E125) =  2
106192  THEN 
106193 
106194    --
106195    XLA_AE_LINES_PKG.SetNewLine;
106196 
106197    p_balance_type_code          := l_balance_type_code;
106198    -- set the flag so later we will know whether the gain loss line needs to be created
106199    
106200    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
106201      p_actual_flag :='A';
106202    END IF;
106203 
106204    --
106205    -- bulk performance
106206    --
106207    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
106208                                       p_header_num   => 0); -- 4262811
106209    --
106210    -- set accounting line options
106211    --
106212    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
106213            p_natural_side_code          => 'D'
106214          , p_gain_or_loss_flag          => 'N'
106215          , p_gl_transfer_mode_code      => 'S'
106216          , p_acct_entry_type_code       => 'A'
106217          , p_switch_side_flag           => 'Y'
106218          , p_merge_duplicate_code       => 'N'
106219          );
106220    --
106221    l_acc_rev_natural_side_code := 'C';  -- 4262811
106222    -- 
106223    --
106224    -- set accounting line type info
106225    --
106226    xla_ae_lines_pkg.SetAcctLineType
106227       (p_component_type             => l_component_type
106228       ,p_event_type_code            => l_event_type_code
106229       ,p_line_definition_owner_code => l_line_definition_owner_code
106230       ,p_line_definition_code       => l_line_definition_code
106231       ,p_accounting_line_code       => l_component_code
106232       ,p_accounting_line_type_code  => l_component_type_code
106233       ,p_accounting_line_appl_id    => l_component_appl_id
106234       ,p_amb_context_code           => l_amb_context_code
106235       ,p_entity_code                => l_entity_code
106236       ,p_event_class_code           => l_event_class_code);
106237    --
106238    -- set accounting class
106239    --
106240    xla_ae_lines_pkg.SetAcctClass(
106241            p_accounting_class_code  => 'OFFSET'
106242          , p_ae_header_id           => l_ae_header_id
106243          );
106244 
106245    --
106246    -- set rounding class
106247    --
106248    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
106249                       'OFFSET';
106250 
106251    --
106252    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
106253    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
106254    --
106255    -- bulk performance
106256    --
106257    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
106258 
106259    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
106260       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
106261 
106262    -- 4955764
106263    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
106264       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
106265 
106266    -- 4458381 Public Sector Enh
106267    
106268    --
106269    -- set accounting attributes for the line type
106270    --
106271    l_entered_amt_idx := 3;
106272    l_accted_amt_idx  := 8;
106273    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
106274    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
106275    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
106276    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
106277    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
106278    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
106279    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
106280    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
106281    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
106282    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
106283    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
106284    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
106285    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
106286    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
106287    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
106288    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
106289    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
106290 
106291    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
106292    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
106293 
106294    ---------------------------------------------------------------------------------------------------------------
106295    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
106296    ---------------------------------------------------------------------------------------------------------------
106297    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
106298 
106299    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
106300    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
106301 
106302    IF xla_accounting_cache_pkg.GetValueChar
106303          (p_source_code         => 'LEDGER_CATEGORY_CODE'
106304          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
106305    AND l_bflow_method_code = 'PRIOR_ENTRY'
106306 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
106307    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
106308          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
106309        )
106310    THEN
106311          xla_ae_lines_pkg.BflowUpgEntry
106312            (p_business_method_code    => l_bflow_method_code
106313            ,p_business_class_code     => l_bflow_class_code
106314            ,p_balance_type            => l_balance_type_code);
106315    ELSE
106316       NULL;
106317 -- No business flow processing for business flow method of NONE.
106318    END IF;
106319 
106320    --
106321    -- call analytical criteria
106322    --
106323    
106324    --
106325    -- call description
106326    --
106327    -- No description or it is inherited.
106328    --
106329    -- call ADRs
106330    -- Bug 4922099
106331    --
106332    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
106333         (NVL(l_actual_upg_option, 'N') = 'O') OR
106334         (NVL(l_enc_upg_option, 'N') = 'O')
106335       )
106336    THEN
106337    NULL;
106338    --
106339    --
106340    
106341   l_ccid := AcctDerRule_4(
106342            p_application_id           => p_application_id
106343          , p_ae_header_id             => l_ae_header_id 
106344 , p_source_4 => p_source_4
106345          , x_transaction_coa_id       => l_adr_transaction_coa_id
106346          , x_accounting_coa_id        => l_adr_accounting_coa_id
106347          , x_value_type_code          => l_adr_value_type_code
106348          , p_side                     => 'NA'
106349    );
106350 
106351    xla_ae_lines_pkg.set_ccid(
106352     p_code_combination_id          => l_ccid
106353   , p_value_type_code              => l_adr_value_type_code
106354   , p_transaction_coa_id           => l_adr_transaction_coa_id
106355   , p_accounting_coa_id            => l_adr_accounting_coa_id
106356   , p_adr_code                     => 'CST_DEFAULT'
106357   , p_adr_type_code                => 'S'
106358   , p_component_type               => l_component_type
106359   , p_component_code               => l_component_code
106360   , p_component_type_code          => l_component_type_code
106361   , p_component_appl_id            => l_component_appl_id
106362   , p_amb_context_code             => l_amb_context_code
106363   , p_side                         => 'NA'
106364   );
106365 
106366 
106367    --
106368    --
106369    END IF;
106370    --
106371    -- Bug 4922099
106372    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
106373           (NVL(l_enc_upg_option, 'N') = 'O')
106374         ) AND
106375         (l_bflow_method_code = 'PRIOR_ENTRY')
106376       )
106377    THEN
106378       IF
106379       --
106380       1 = 2
106381       --
106382       THEN
106383       xla_accounting_err_pkg.build_message
106384                                     (p_appli_s_name            => 'XLA'
106385                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
106386                                     ,p_token_1                 => 'LINE_NUMBER'
106387                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
106388                                     ,p_token_2                 => 'LINE_TYPE_NAME'
106389                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
106390                                                                              l_component_type
106391                                                                             ,l_component_code
106392                                                                             ,l_component_type_code
106393                                                                             ,l_component_appl_id
106394                                                                             ,l_amb_context_code
106395                                                                             ,l_entity_code
106396                                                                             ,l_event_class_code
106397                                                                            )
106398                                     ,p_token_3                 => 'OWNER'
106399                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
106400                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
106401                                                                           ,p_lookup_code    => l_component_type_code
106402                                                                          )
106403                                     ,p_token_4                 => 'PRODUCT_NAME'
106404                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
106405                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
106406                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
106407                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
106408                                     ,p_ae_header_id            =>  NULL
106409                                        );
106410 
106411         IF (C_LEVEL_ERROR>= g_log_level) THEN
106412                  trace
106413                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
106414                       ,p_level    => C_LEVEL_ERROR
106415                       ,p_module   => l_log_module);
106416         END IF;
106417       END IF;
106418    END IF;
106419    --
106420    --
106421    ------------------------------------------------------------------------------------------------
106422    -- 4219869 Business Flow
106423    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
106424    -- Prior Entry.  Currently, the following code is always generated.
106425    ------------------------------------------------------------------------------------------------
106426    XLA_AE_LINES_PKG.ValidateCurrentLine;
106427 
106428    ------------------------------------------------------------------------------------
106429    -- 4219869 Business Flow
106430    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
106431    ------------------------------------------------------------------------------------
106432    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
106433 
106434    ----------------------------------------------------------------------------------
106435    -- 4219869 Business Flow
106436    -- Update journal entry status -- Need to generate this within IF <condition>
106437    ----------------------------------------------------------------------------------
106438    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
106439          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
106440          ,p_balance_type_code => l_balance_type_code
106441          );
106442 
106443    -------------------------------------------------------------------------------------------
106444    -- 4262811 - Generate the Accrual Reversal lines
106445    -------------------------------------------------------------------------------------------
106446    BEGIN
106447       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
106448                               (g_array_event(p_event_id).array_value_num('header_index'));
106449       IF l_acc_rev_flag IS NULL THEN
106450          l_acc_rev_flag := 'N';
106451       END IF;
106452    EXCEPTION
106453       WHEN OTHERS THEN
106454          l_acc_rev_flag := 'N';
106455    END;
106456    --
106457    IF (l_acc_rev_flag = 'Y') THEN
106458 
106459        -- 4645092  ------------------------------------------------------------------------------
106460        -- To allow MPA report to determine if it should generate report process
106461        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
106462        ------------------------------------------------------------------------------------------
106463 
106464        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
106465        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
106466    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
106467    -- call ADRs
106468    -- Bug 4922099
106469    --
106470    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
106471         (NVL(l_actual_upg_option, 'N') = 'O') OR
106472         (NVL(l_enc_upg_option, 'N') = 'O')
106473       )
106474    THEN
106475    NULL;
106476    --
106477    --
106478    
106479   l_ccid := AcctDerRule_4(
106480            p_application_id           => p_application_id
106481          , p_ae_header_id             => l_ae_header_id 
106482 , p_source_4 => p_source_4
106483          , x_transaction_coa_id       => l_adr_transaction_coa_id
106484          , x_accounting_coa_id        => l_adr_accounting_coa_id
106485          , x_value_type_code          => l_adr_value_type_code
106486          , p_side                     => 'NA'
106487    );
106488 
106489    xla_ae_lines_pkg.set_ccid(
106490     p_code_combination_id          => l_ccid
106491   , p_value_type_code              => l_adr_value_type_code
106492   , p_transaction_coa_id           => l_adr_transaction_coa_id
106493   , p_accounting_coa_id            => l_adr_accounting_coa_id
106494   , p_adr_code                     => 'CST_DEFAULT'
106495   , p_adr_type_code                => 'S'
106496   , p_component_type               => l_component_type
106497   , p_component_code               => l_component_code
106498   , p_component_type_code          => l_component_type_code
106499   , p_component_appl_id            => l_component_appl_id
106500   , p_amb_context_code             => l_amb_context_code
106501   , p_side                         => 'NA'
106502   );
106503 
106504 
106505    --
106506    --
106507    END IF;
106508 
106509        --
106510        -- Update the line information that should be overwritten
106511        --
106512        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
106513                                          p_header_num   => 1);
106514        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
106515 
106516        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
106517 
106518        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
106519           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
106520        END IF;
106521 
106522       --
106523       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
106524       --
106525       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
106526           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
106527       ELSE
106528           ---------------------------------------------------------------------------------------------------
106529           -- 4262811a Switch Sign
106530           ---------------------------------------------------------------------------------------------------
106531           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
106532           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
106533                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
106534           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
106535                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
106536           -- 5132302
106537           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
106538                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
106539 
106540       END IF;
106541 
106542       -- 4955764
106543       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
106544       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
106545 
106546 
106547       XLA_AE_LINES_PKG.ValidateCurrentLine;
106548       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
106549 
106550       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
106551                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
106552                ,p_balance_type_code => l_balance_type_code);
106553 
106554    END IF;
106555 
106556    -----------------------------------------------------------------------------------------
106557    -- 4262811 Multiperiod Accounting
106558    -----------------------------------------------------------------------------------------
106559      -- No MPA option is assigned.
106560 
106561 
106562 END IF;
106563 END IF;
106564 --
106565 
106566 --
106567 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
106568    trace
106569       (p_msg      => 'END of AcctLineType_193'
106570       ,p_level    => C_LEVEL_PROCEDURE
106571       ,p_module   => l_log_module);
106572 END IF;
106573 --
106574 EXCEPTION
106575   WHEN xla_exceptions_pkg.application_exception THEN
106576       RAISE;
106577   WHEN OTHERS THEN
106578        xla_exceptions_pkg.raise_message
106579            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_193');
106580 END AcctLineType_193;
106581 --
106582 
106583 ---------------------------------------
106584 --
106585 -- PRIVATE FUNCTION
106586 --         AcctLineType_194
106587 --
106588 ---------------------------------------
106589 PROCEDURE AcctLineType_194 (
106590   p_application_id        IN NUMBER
106591  ,p_event_id              IN NUMBER
106592  ,p_calculate_acctd_flag  IN VARCHAR2
106593  ,p_calculate_g_l_flag    IN VARCHAR2
106594  ,p_actual_flag           IN OUT VARCHAR2
106595  ,p_balance_type_code     OUT VARCHAR2
106596  ,p_gain_or_loss_ref      OUT VARCHAR2
106597  
106598 --Cost Management Default Account
106599  , p_source_4            IN NUMBER
106600 --DISTRIBUTION_IDENTIFIER
106601  , p_source_11            IN NUMBER
106602 --Distribution Type
106603  , p_source_12            IN VARCHAR2
106604  , p_source_12_meaning    IN VARCHAR2
106605 --Entered Currency Code
106606  , p_source_15            IN VARCHAR2
106607 --Entered Amount
106608  , p_source_18            IN NUMBER
106609 --Currency Conversion Date
106610  , p_source_19            IN DATE
106611 --Currency Conversion Rate
106612  , p_source_20            IN NUMBER
106613 --Currency Conversion Type
106614  , p_source_21            IN VARCHAR2
106615 --Accounted Amount
106616  , p_source_22            IN NUMBER
106617 --Accounting Line Type
106618  , p_source_24            IN NUMBER
106619 )
106620 IS
106621 
106622 l_component_type              VARCHAR2(80);
106623 l_component_code              VARCHAR2(30);
106624 l_component_type_code         VARCHAR2(1);
106625 l_component_appl_id           INTEGER;
106626 l_amb_context_code            VARCHAR2(30);
106627 l_entity_code                 VARCHAR2(30);
106628 l_event_class_code            VARCHAR2(30);
106629 l_ae_header_id                NUMBER;
106630 l_event_type_code             VARCHAR2(30);
106631 l_line_definition_code        VARCHAR2(30);
106632 l_line_definition_owner_code  VARCHAR2(1);
106633 --
106634 -- adr variables
106635 l_segment                     VARCHAR2(30);
106636 l_ccid                        NUMBER;
106637 l_adr_transaction_coa_id      NUMBER;
106638 l_adr_accounting_coa_id       NUMBER;
106639 l_adr_flexfield_segment_code  VARCHAR2(30);
106640 l_adr_flex_value_set_id       NUMBER;
106641 l_adr_value_type_code         VARCHAR2(30);
106642 l_adr_value_combination_id    NUMBER;
106643 l_adr_value_segment_code      VARCHAR2(30);
106644 
106645 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
106646 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
106647 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
106648 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
106649 
106650 -- 4262811 Variables ------------------------------------------------------------------------------------------
106651 l_entered_amt_idx             NUMBER;
106652 l_accted_amt_idx              NUMBER;
106653 l_acc_rev_flag                VARCHAR2(1);
106654 l_accrual_line_num            NUMBER;
106655 l_tmp_amt                     NUMBER;
106656 l_acc_rev_natural_side_code   VARCHAR2(1);
106657 
106658 l_num_entries                 NUMBER;
106659 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
106660 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
106661 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
106662 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
106663 l_recog_line_1                NUMBER;
106664 l_recog_line_2                NUMBER;
106665 
106666 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
106667 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
106668 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
106669 
106670 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
106671 
106672 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
106673 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
106674 
106675 ---------------------------------------------------------------------------------------------------------------
106676 
106677 
106678 --
106679 -- bulk performance
106680 --
106681 l_balance_type_code           VARCHAR2(1);
106682 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
106683 l_log_module                  VARCHAR2(240);
106684 
106685 --
106686 -- Upgrade strategy
106687 --
106688 l_actual_upg_option           VARCHAR2(1);
106689 l_enc_upg_option           VARCHAR2(1);
106690 
106691 --
106692 BEGIN
106693 --
106694 IF g_log_enabled THEN
106695       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_194';
106696 END IF;
106697 --
106698 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
106699 
106700       trace
106701          (p_msg      => 'BEGIN of AcctLineType_194'
106702          ,p_level    => C_LEVEL_PROCEDURE
106703          ,p_module   => l_log_module);
106704 
106705 END IF;
106706 --
106707 l_component_type             := 'AMB_JLT';
106708 l_component_code             := 'OFFSET';
106709 l_component_type_code        := 'S';
106710 l_component_appl_id          :=  707;
106711 l_amb_context_code           := 'DEFAULT';
106712 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
106713 l_event_class_code           := 'USER_DEFINE';
106714 l_event_type_code            := 'UDIR_INTERORG_SHIP';
106715 l_line_definition_owner_code := 'S';
106716 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP';
106717 --
106718 l_balance_type_code          := 'A';
106719 l_segment                     := NULL;
106720 l_ccid                        := NULL;
106721 l_adr_transaction_coa_id      := NULL;
106722 l_adr_accounting_coa_id       := NULL;
106723 l_adr_flexfield_segment_code  := NULL;
106724 l_adr_flex_value_set_id       := NULL;
106725 l_adr_value_type_code         := NULL;
106726 l_adr_value_combination_id    := NULL;
106727 l_adr_value_segment_code      := NULL;
106728 
106729 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
106730 l_bflow_class_code           := '';    -- 4219869 Business Flow
106731 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
106732 l_budgetary_control_flag     := 'N';
106733 
106734 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
106735 l_bflow_applied_to_amt       := NULL; -- 5132302
106736 l_entered_amt_idx            := NULL;          -- 4262811
106737 l_accted_amt_idx             := NULL;          -- 4262811
106738 l_acc_rev_flag               := NULL;          -- 4262811
106739 l_accrual_line_num           := NULL;          -- 4262811
106740 l_tmp_amt                    := NULL;          -- 4262811
106741 --
106742  
106743 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
106744     l_balance_type_code <> 'B' THEN
106745 IF NVL(p_source_24,9E125) =  2
106746  THEN 
106747 
106748    --
106749    XLA_AE_LINES_PKG.SetNewLine;
106750 
106751    p_balance_type_code          := l_balance_type_code;
106752    -- set the flag so later we will know whether the gain loss line needs to be created
106753    
106754    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
106755      p_actual_flag :='A';
106756    END IF;
106757 
106758    --
106759    -- bulk performance
106760    --
106761    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
106762                                       p_header_num   => 0); -- 4262811
106763    --
106764    -- set accounting line options
106765    --
106766    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
106767            p_natural_side_code          => 'D'
106768          , p_gain_or_loss_flag          => 'N'
106769          , p_gl_transfer_mode_code      => 'S'
106770          , p_acct_entry_type_code       => 'A'
106771          , p_switch_side_flag           => 'Y'
106772          , p_merge_duplicate_code       => 'N'
106773          );
106774    --
106775    l_acc_rev_natural_side_code := 'C';  -- 4262811
106776    -- 
106777    --
106778    -- set accounting line type info
106779    --
106780    xla_ae_lines_pkg.SetAcctLineType
106781       (p_component_type             => l_component_type
106782       ,p_event_type_code            => l_event_type_code
106783       ,p_line_definition_owner_code => l_line_definition_owner_code
106784       ,p_line_definition_code       => l_line_definition_code
106785       ,p_accounting_line_code       => l_component_code
106786       ,p_accounting_line_type_code  => l_component_type_code
106787       ,p_accounting_line_appl_id    => l_component_appl_id
106788       ,p_amb_context_code           => l_amb_context_code
106789       ,p_entity_code                => l_entity_code
106790       ,p_event_class_code           => l_event_class_code);
106791    --
106792    -- set accounting class
106793    --
106794    xla_ae_lines_pkg.SetAcctClass(
106795            p_accounting_class_code  => 'OFFSET'
106796          , p_ae_header_id           => l_ae_header_id
106797          );
106798 
106799    --
106800    -- set rounding class
106801    --
106802    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
106803                       'OFFSET';
106804 
106805    --
106806    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
106807    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
106808    --
106809    -- bulk performance
106810    --
106811    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
106812 
106813    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
106814       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
106815 
106816    -- 4955764
106817    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
106818       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
106819 
106820    -- 4458381 Public Sector Enh
106821    
106822    --
106823    -- set accounting attributes for the line type
106824    --
106825    l_entered_amt_idx := 3;
106826    l_accted_amt_idx  := 8;
106827    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
106828    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
106829    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
106830    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
106831    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
106832    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
106833    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
106834    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
106835    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
106836    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
106837    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
106838    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
106839    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
106840    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
106841    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
106842    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
106843    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
106844 
106845    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
106846    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
106847 
106848    ---------------------------------------------------------------------------------------------------------------
106849    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
106850    ---------------------------------------------------------------------------------------------------------------
106851    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
106852 
106853    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
106854    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
106855 
106856    IF xla_accounting_cache_pkg.GetValueChar
106857          (p_source_code         => 'LEDGER_CATEGORY_CODE'
106858          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
106859    AND l_bflow_method_code = 'PRIOR_ENTRY'
106860 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
106861    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
106862          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
106863        )
106864    THEN
106865          xla_ae_lines_pkg.BflowUpgEntry
106866            (p_business_method_code    => l_bflow_method_code
106867            ,p_business_class_code     => l_bflow_class_code
106868            ,p_balance_type            => l_balance_type_code);
106869    ELSE
106870       NULL;
106871 -- No business flow processing for business flow method of NONE.
106872    END IF;
106873 
106874    --
106875    -- call analytical criteria
106876    --
106877    
106878    --
106879    -- call description
106880    --
106881    -- No description or it is inherited.
106882    --
106883    -- call ADRs
106884    -- Bug 4922099
106885    --
106886    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
106887         (NVL(l_actual_upg_option, 'N') = 'O') OR
106888         (NVL(l_enc_upg_option, 'N') = 'O')
106889       )
106890    THEN
106891    NULL;
106892    --
106893    --
106894    
106895   l_ccid := AcctDerRule_4(
106896            p_application_id           => p_application_id
106897          , p_ae_header_id             => l_ae_header_id 
106898 , p_source_4 => p_source_4
106899          , x_transaction_coa_id       => l_adr_transaction_coa_id
106900          , x_accounting_coa_id        => l_adr_accounting_coa_id
106901          , x_value_type_code          => l_adr_value_type_code
106902          , p_side                     => 'NA'
106903    );
106904 
106905    xla_ae_lines_pkg.set_ccid(
106906     p_code_combination_id          => l_ccid
106907   , p_value_type_code              => l_adr_value_type_code
106908   , p_transaction_coa_id           => l_adr_transaction_coa_id
106909   , p_accounting_coa_id            => l_adr_accounting_coa_id
106910   , p_adr_code                     => 'CST_DEFAULT'
106911   , p_adr_type_code                => 'S'
106912   , p_component_type               => l_component_type
106913   , p_component_code               => l_component_code
106914   , p_component_type_code          => l_component_type_code
106915   , p_component_appl_id            => l_component_appl_id
106916   , p_amb_context_code             => l_amb_context_code
106917   , p_side                         => 'NA'
106918   );
106919 
106920 
106921    --
106922    --
106923    END IF;
106924    --
106925    -- Bug 4922099
106926    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
106927           (NVL(l_enc_upg_option, 'N') = 'O')
106928         ) AND
106929         (l_bflow_method_code = 'PRIOR_ENTRY')
106930       )
106931    THEN
106932       IF
106933       --
106934       1 = 2
106935       --
106936       THEN
106937       xla_accounting_err_pkg.build_message
106938                                     (p_appli_s_name            => 'XLA'
106939                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
106940                                     ,p_token_1                 => 'LINE_NUMBER'
106941                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
106942                                     ,p_token_2                 => 'LINE_TYPE_NAME'
106943                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
106944                                                                              l_component_type
106945                                                                             ,l_component_code
106946                                                                             ,l_component_type_code
106947                                                                             ,l_component_appl_id
106948                                                                             ,l_amb_context_code
106949                                                                             ,l_entity_code
106950                                                                             ,l_event_class_code
106951                                                                            )
106952                                     ,p_token_3                 => 'OWNER'
106953                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
106954                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
106955                                                                           ,p_lookup_code    => l_component_type_code
106956                                                                          )
106957                                     ,p_token_4                 => 'PRODUCT_NAME'
106958                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
106959                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
106960                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
106961                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
106962                                     ,p_ae_header_id            =>  NULL
106963                                        );
106964 
106965         IF (C_LEVEL_ERROR>= g_log_level) THEN
106966                  trace
106967                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
106968                       ,p_level    => C_LEVEL_ERROR
106969                       ,p_module   => l_log_module);
106970         END IF;
106971       END IF;
106972    END IF;
106973    --
106974    --
106975    ------------------------------------------------------------------------------------------------
106976    -- 4219869 Business Flow
106977    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
106978    -- Prior Entry.  Currently, the following code is always generated.
106979    ------------------------------------------------------------------------------------------------
106980    XLA_AE_LINES_PKG.ValidateCurrentLine;
106981 
106982    ------------------------------------------------------------------------------------
106983    -- 4219869 Business Flow
106984    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
106985    ------------------------------------------------------------------------------------
106986    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
106987 
106988    ----------------------------------------------------------------------------------
106989    -- 4219869 Business Flow
106990    -- Update journal entry status -- Need to generate this within IF <condition>
106991    ----------------------------------------------------------------------------------
106992    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
106993          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
106994          ,p_balance_type_code => l_balance_type_code
106995          );
106996 
106997    -------------------------------------------------------------------------------------------
106998    -- 4262811 - Generate the Accrual Reversal lines
106999    -------------------------------------------------------------------------------------------
107000    BEGIN
107001       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
107002                               (g_array_event(p_event_id).array_value_num('header_index'));
107003       IF l_acc_rev_flag IS NULL THEN
107004          l_acc_rev_flag := 'N';
107005       END IF;
107006    EXCEPTION
107007       WHEN OTHERS THEN
107008          l_acc_rev_flag := 'N';
107009    END;
107010    --
107011    IF (l_acc_rev_flag = 'Y') THEN
107012 
107013        -- 4645092  ------------------------------------------------------------------------------
107014        -- To allow MPA report to determine if it should generate report process
107015        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
107016        ------------------------------------------------------------------------------------------
107017 
107018        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
107019        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
107020    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
107021    -- call ADRs
107022    -- Bug 4922099
107023    --
107024    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
107025         (NVL(l_actual_upg_option, 'N') = 'O') OR
107026         (NVL(l_enc_upg_option, 'N') = 'O')
107027       )
107028    THEN
107029    NULL;
107030    --
107031    --
107032    
107033   l_ccid := AcctDerRule_4(
107034            p_application_id           => p_application_id
107035          , p_ae_header_id             => l_ae_header_id 
107036 , p_source_4 => p_source_4
107037          , x_transaction_coa_id       => l_adr_transaction_coa_id
107038          , x_accounting_coa_id        => l_adr_accounting_coa_id
107039          , x_value_type_code          => l_adr_value_type_code
107040          , p_side                     => 'NA'
107041    );
107042 
107043    xla_ae_lines_pkg.set_ccid(
107044     p_code_combination_id          => l_ccid
107045   , p_value_type_code              => l_adr_value_type_code
107046   , p_transaction_coa_id           => l_adr_transaction_coa_id
107047   , p_accounting_coa_id            => l_adr_accounting_coa_id
107048   , p_adr_code                     => 'CST_DEFAULT'
107049   , p_adr_type_code                => 'S'
107050   , p_component_type               => l_component_type
107051   , p_component_code               => l_component_code
107052   , p_component_type_code          => l_component_type_code
107053   , p_component_appl_id            => l_component_appl_id
107054   , p_amb_context_code             => l_amb_context_code
107055   , p_side                         => 'NA'
107056   );
107057 
107058 
107059    --
107060    --
107061    END IF;
107062 
107063        --
107064        -- Update the line information that should be overwritten
107065        --
107066        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
107067                                          p_header_num   => 1);
107068        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
107069 
107070        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
107071 
107072        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
107073           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
107074        END IF;
107075 
107076       --
107077       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
107078       --
107079       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
107080           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
107081       ELSE
107082           ---------------------------------------------------------------------------------------------------
107083           -- 4262811a Switch Sign
107084           ---------------------------------------------------------------------------------------------------
107085           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
107086           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
107087                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107088           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
107089                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107090           -- 5132302
107091           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
107092                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107093 
107094       END IF;
107095 
107096       -- 4955764
107097       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
107098       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
107099 
107100 
107101       XLA_AE_LINES_PKG.ValidateCurrentLine;
107102       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
107103 
107104       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
107105                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
107106                ,p_balance_type_code => l_balance_type_code);
107107 
107108    END IF;
107109 
107110    -----------------------------------------------------------------------------------------
107111    -- 4262811 Multiperiod Accounting
107112    -----------------------------------------------------------------------------------------
107113      -- No MPA option is assigned.
107114 
107115 
107116 END IF;
107117 END IF;
107118 --
107119 
107120 --
107121 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
107122    trace
107123       (p_msg      => 'END of AcctLineType_194'
107124       ,p_level    => C_LEVEL_PROCEDURE
107125       ,p_module   => l_log_module);
107126 END IF;
107127 --
107128 EXCEPTION
107129   WHEN xla_exceptions_pkg.application_exception THEN
107130       RAISE;
107131   WHEN OTHERS THEN
107132        xla_exceptions_pkg.raise_message
107133            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_194');
107134 END AcctLineType_194;
107135 --
107136 
107137 ---------------------------------------
107138 --
107139 -- PRIVATE FUNCTION
107140 --         AcctLineType_195
107141 --
107142 ---------------------------------------
107143 PROCEDURE AcctLineType_195 (
107144   p_application_id        IN NUMBER
107145  ,p_event_id              IN NUMBER
107146  ,p_calculate_acctd_flag  IN VARCHAR2
107147  ,p_calculate_g_l_flag    IN VARCHAR2
107148  ,p_actual_flag           IN OUT VARCHAR2
107149  ,p_balance_type_code     OUT VARCHAR2
107150  ,p_gain_or_loss_ref      OUT VARCHAR2
107151  
107152 --Cost Management Default Account
107153  , p_source_4            IN NUMBER
107154 --DISTRIBUTION_IDENTIFIER
107155  , p_source_11            IN NUMBER
107156 --Distribution Type
107157  , p_source_12            IN VARCHAR2
107158  , p_source_12_meaning    IN VARCHAR2
107159 --Entered Currency Code
107160  , p_source_15            IN VARCHAR2
107161 --Entered Amount
107162  , p_source_18            IN NUMBER
107163 --Currency Conversion Date
107164  , p_source_19            IN DATE
107165 --Currency Conversion Rate
107166  , p_source_20            IN NUMBER
107167 --Accounted Amount
107168  , p_source_22            IN NUMBER
107169 --Accounting Line Type
107170  , p_source_24            IN NUMBER
107171 )
107172 IS
107173 
107174 l_component_type              VARCHAR2(80);
107175 l_component_code              VARCHAR2(30);
107176 l_component_type_code         VARCHAR2(1);
107177 l_component_appl_id           INTEGER;
107178 l_amb_context_code            VARCHAR2(30);
107179 l_entity_code                 VARCHAR2(30);
107180 l_event_class_code            VARCHAR2(30);
107181 l_ae_header_id                NUMBER;
107182 l_event_type_code             VARCHAR2(30);
107183 l_line_definition_code        VARCHAR2(30);
107184 l_line_definition_owner_code  VARCHAR2(1);
107185 --
107186 -- adr variables
107187 l_segment                     VARCHAR2(30);
107188 l_ccid                        NUMBER;
107189 l_adr_transaction_coa_id      NUMBER;
107190 l_adr_accounting_coa_id       NUMBER;
107191 l_adr_flexfield_segment_code  VARCHAR2(30);
107192 l_adr_flex_value_set_id       NUMBER;
107193 l_adr_value_type_code         VARCHAR2(30);
107194 l_adr_value_combination_id    NUMBER;
107195 l_adr_value_segment_code      VARCHAR2(30);
107196 
107197 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
107198 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
107199 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
107200 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
107201 
107202 -- 4262811 Variables ------------------------------------------------------------------------------------------
107203 l_entered_amt_idx             NUMBER;
107204 l_accted_amt_idx              NUMBER;
107205 l_acc_rev_flag                VARCHAR2(1);
107206 l_accrual_line_num            NUMBER;
107207 l_tmp_amt                     NUMBER;
107208 l_acc_rev_natural_side_code   VARCHAR2(1);
107209 
107210 l_num_entries                 NUMBER;
107211 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
107212 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
107213 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
107214 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
107215 l_recog_line_1                NUMBER;
107216 l_recog_line_2                NUMBER;
107217 
107218 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
107219 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
107220 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
107221 
107222 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
107223 
107224 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
107225 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
107226 
107227 ---------------------------------------------------------------------------------------------------------------
107228 
107229 
107230 --
107231 -- bulk performance
107232 --
107233 l_balance_type_code           VARCHAR2(1);
107234 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
107235 l_log_module                  VARCHAR2(240);
107236 
107237 --
107238 -- Upgrade strategy
107239 --
107240 l_actual_upg_option           VARCHAR2(1);
107241 l_enc_upg_option           VARCHAR2(1);
107242 
107243 --
107244 BEGIN
107245 --
107246 IF g_log_enabled THEN
107247       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_195';
107248 END IF;
107249 --
107250 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
107251 
107252       trace
107253          (p_msg      => 'BEGIN of AcctLineType_195'
107254          ,p_level    => C_LEVEL_PROCEDURE
107255          ,p_module   => l_log_module);
107256 
107257 END IF;
107258 --
107259 l_component_type             := 'AMB_JLT';
107260 l_component_code             := 'OFFSET';
107261 l_component_type_code        := 'S';
107262 l_component_appl_id          :=  707;
107263 l_amb_context_code           := 'DEFAULT';
107264 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
107265 l_event_class_code           := 'OSP';
107266 l_event_type_code            := 'OSP_ALL';
107267 l_line_definition_owner_code := 'S';
107268 l_line_definition_code       := 'OUTSIDE_PROCESSING';
107269 --
107270 l_balance_type_code          := 'A';
107271 l_segment                     := NULL;
107272 l_ccid                        := NULL;
107273 l_adr_transaction_coa_id      := NULL;
107274 l_adr_accounting_coa_id       := NULL;
107275 l_adr_flexfield_segment_code  := NULL;
107276 l_adr_flex_value_set_id       := NULL;
107277 l_adr_value_type_code         := NULL;
107278 l_adr_value_combination_id    := NULL;
107279 l_adr_value_segment_code      := NULL;
107280 
107281 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
107282 l_bflow_class_code           := '';    -- 4219869 Business Flow
107283 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
107284 l_budgetary_control_flag     := 'N';
107285 
107286 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
107287 l_bflow_applied_to_amt       := NULL; -- 5132302
107288 l_entered_amt_idx            := NULL;          -- 4262811
107289 l_accted_amt_idx             := NULL;          -- 4262811
107290 l_acc_rev_flag               := NULL;          -- 4262811
107291 l_accrual_line_num           := NULL;          -- 4262811
107292 l_tmp_amt                    := NULL;          -- 4262811
107293 --
107294  
107295 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
107296     l_balance_type_code <> 'B' THEN
107297 IF NVL(p_source_24,9E125) =  2
107298  THEN 
107299 
107300    --
107301    XLA_AE_LINES_PKG.SetNewLine;
107302 
107303    p_balance_type_code          := l_balance_type_code;
107304    -- set the flag so later we will know whether the gain loss line needs to be created
107305    
107306    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
107307      p_actual_flag :='A';
107308    END IF;
107309 
107310    --
107311    -- bulk performance
107312    --
107313    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
107314                                       p_header_num   => 0); -- 4262811
107315    --
107316    -- set accounting line options
107317    --
107318    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
107319            p_natural_side_code          => 'D'
107320          , p_gain_or_loss_flag          => 'N'
107321          , p_gl_transfer_mode_code      => 'S'
107322          , p_acct_entry_type_code       => 'A'
107323          , p_switch_side_flag           => 'Y'
107324          , p_merge_duplicate_code       => 'N'
107325          );
107326    --
107327    l_acc_rev_natural_side_code := 'C';  -- 4262811
107328    -- 
107329    --
107330    -- set accounting line type info
107331    --
107332    xla_ae_lines_pkg.SetAcctLineType
107333       (p_component_type             => l_component_type
107334       ,p_event_type_code            => l_event_type_code
107335       ,p_line_definition_owner_code => l_line_definition_owner_code
107336       ,p_line_definition_code       => l_line_definition_code
107337       ,p_accounting_line_code       => l_component_code
107338       ,p_accounting_line_type_code  => l_component_type_code
107339       ,p_accounting_line_appl_id    => l_component_appl_id
107340       ,p_amb_context_code           => l_amb_context_code
107341       ,p_entity_code                => l_entity_code
107342       ,p_event_class_code           => l_event_class_code);
107343    --
107344    -- set accounting class
107345    --
107346    xla_ae_lines_pkg.SetAcctClass(
107347            p_accounting_class_code  => 'OFFSET'
107348          , p_ae_header_id           => l_ae_header_id
107349          );
107350 
107351    --
107352    -- set rounding class
107353    --
107354    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
107355                       'OFFSET';
107356 
107357    --
107358    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
107359    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
107360    --
107361    -- bulk performance
107362    --
107363    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
107364 
107365    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
107366       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
107367 
107368    -- 4955764
107369    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
107370       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
107371 
107372    -- 4458381 Public Sector Enh
107373    
107374    --
107375    -- set accounting attributes for the line type
107376    --
107377    l_entered_amt_idx := 3;
107378    l_accted_amt_idx  := 8;
107379    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
107380    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
107381    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
107382    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
107383    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
107384    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
107385    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
107386    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
107387    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
107388    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
107389    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
107390    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
107391    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
107392    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
107393    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_20);
107394    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
107395    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
107396 
107397    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
107398    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
107399 
107400    ---------------------------------------------------------------------------------------------------------------
107401    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
107402    ---------------------------------------------------------------------------------------------------------------
107403    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
107404 
107405    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
107406    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
107407 
107408    IF xla_accounting_cache_pkg.GetValueChar
107409          (p_source_code         => 'LEDGER_CATEGORY_CODE'
107410          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
107411    AND l_bflow_method_code = 'PRIOR_ENTRY'
107412 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
107413    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
107414          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
107415        )
107416    THEN
107417          xla_ae_lines_pkg.BflowUpgEntry
107418            (p_business_method_code    => l_bflow_method_code
107419            ,p_business_class_code     => l_bflow_class_code
107420            ,p_balance_type            => l_balance_type_code);
107421    ELSE
107422       NULL;
107423 -- No business flow processing for business flow method of NONE.
107424    END IF;
107425 
107426    --
107427    -- call analytical criteria
107428    --
107429    
107430    --
107431    -- call description
107432    --
107433    -- No description or it is inherited.
107434    --
107435    -- call ADRs
107436    -- Bug 4922099
107437    --
107438    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
107439         (NVL(l_actual_upg_option, 'N') = 'O') OR
107440         (NVL(l_enc_upg_option, 'N') = 'O')
107441       )
107442    THEN
107443    NULL;
107444    --
107445    --
107446    
107447   l_ccid := AcctDerRule_4(
107448            p_application_id           => p_application_id
107449          , p_ae_header_id             => l_ae_header_id 
107450 , p_source_4 => p_source_4
107451          , x_transaction_coa_id       => l_adr_transaction_coa_id
107452          , x_accounting_coa_id        => l_adr_accounting_coa_id
107453          , x_value_type_code          => l_adr_value_type_code
107454          , p_side                     => 'NA'
107455    );
107456 
107457    xla_ae_lines_pkg.set_ccid(
107458     p_code_combination_id          => l_ccid
107459   , p_value_type_code              => l_adr_value_type_code
107460   , p_transaction_coa_id           => l_adr_transaction_coa_id
107461   , p_accounting_coa_id            => l_adr_accounting_coa_id
107462   , p_adr_code                     => 'CST_DEFAULT'
107463   , p_adr_type_code                => 'S'
107464   , p_component_type               => l_component_type
107465   , p_component_code               => l_component_code
107466   , p_component_type_code          => l_component_type_code
107467   , p_component_appl_id            => l_component_appl_id
107468   , p_amb_context_code             => l_amb_context_code
107469   , p_side                         => 'NA'
107470   );
107471 
107472 
107473    --
107474    --
107475    END IF;
107476    --
107477    -- Bug 4922099
107478    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
107479           (NVL(l_enc_upg_option, 'N') = 'O')
107480         ) AND
107481         (l_bflow_method_code = 'PRIOR_ENTRY')
107482       )
107483    THEN
107484       IF
107485       --
107486       1 = 2
107487       --
107488       THEN
107489       xla_accounting_err_pkg.build_message
107490                                     (p_appli_s_name            => 'XLA'
107491                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
107492                                     ,p_token_1                 => 'LINE_NUMBER'
107493                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
107494                                     ,p_token_2                 => 'LINE_TYPE_NAME'
107495                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
107496                                                                              l_component_type
107497                                                                             ,l_component_code
107498                                                                             ,l_component_type_code
107499                                                                             ,l_component_appl_id
107500                                                                             ,l_amb_context_code
107501                                                                             ,l_entity_code
107502                                                                             ,l_event_class_code
107503                                                                            )
107504                                     ,p_token_3                 => 'OWNER'
107505                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
107506                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
107507                                                                           ,p_lookup_code    => l_component_type_code
107508                                                                          )
107509                                     ,p_token_4                 => 'PRODUCT_NAME'
107510                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
107511                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
107512                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
107513                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
107514                                     ,p_ae_header_id            =>  NULL
107515                                        );
107516 
107517         IF (C_LEVEL_ERROR>= g_log_level) THEN
107518                  trace
107519                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
107520                       ,p_level    => C_LEVEL_ERROR
107521                       ,p_module   => l_log_module);
107522         END IF;
107523       END IF;
107524    END IF;
107525    --
107526    --
107527    ------------------------------------------------------------------------------------------------
107528    -- 4219869 Business Flow
107529    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
107530    -- Prior Entry.  Currently, the following code is always generated.
107531    ------------------------------------------------------------------------------------------------
107532    XLA_AE_LINES_PKG.ValidateCurrentLine;
107533 
107534    ------------------------------------------------------------------------------------
107535    -- 4219869 Business Flow
107536    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
107537    ------------------------------------------------------------------------------------
107538    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
107539 
107540    ----------------------------------------------------------------------------------
107541    -- 4219869 Business Flow
107542    -- Update journal entry status -- Need to generate this within IF <condition>
107543    ----------------------------------------------------------------------------------
107544    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
107545          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
107546          ,p_balance_type_code => l_balance_type_code
107547          );
107548 
107549    -------------------------------------------------------------------------------------------
107550    -- 4262811 - Generate the Accrual Reversal lines
107551    -------------------------------------------------------------------------------------------
107552    BEGIN
107553       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
107554                               (g_array_event(p_event_id).array_value_num('header_index'));
107555       IF l_acc_rev_flag IS NULL THEN
107556          l_acc_rev_flag := 'N';
107557       END IF;
107558    EXCEPTION
107559       WHEN OTHERS THEN
107560          l_acc_rev_flag := 'N';
107561    END;
107562    --
107563    IF (l_acc_rev_flag = 'Y') THEN
107564 
107565        -- 4645092  ------------------------------------------------------------------------------
107566        -- To allow MPA report to determine if it should generate report process
107567        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
107568        ------------------------------------------------------------------------------------------
107569 
107570        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
107571        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
107572    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
107573    -- call ADRs
107574    -- Bug 4922099
107575    --
107576    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
107577         (NVL(l_actual_upg_option, 'N') = 'O') OR
107578         (NVL(l_enc_upg_option, 'N') = 'O')
107579       )
107580    THEN
107581    NULL;
107582    --
107583    --
107584    
107585   l_ccid := AcctDerRule_4(
107586            p_application_id           => p_application_id
107587          , p_ae_header_id             => l_ae_header_id 
107588 , p_source_4 => p_source_4
107589          , x_transaction_coa_id       => l_adr_transaction_coa_id
107590          , x_accounting_coa_id        => l_adr_accounting_coa_id
107591          , x_value_type_code          => l_adr_value_type_code
107592          , p_side                     => 'NA'
107593    );
107594 
107595    xla_ae_lines_pkg.set_ccid(
107596     p_code_combination_id          => l_ccid
107597   , p_value_type_code              => l_adr_value_type_code
107598   , p_transaction_coa_id           => l_adr_transaction_coa_id
107599   , p_accounting_coa_id            => l_adr_accounting_coa_id
107600   , p_adr_code                     => 'CST_DEFAULT'
107601   , p_adr_type_code                => 'S'
107602   , p_component_type               => l_component_type
107603   , p_component_code               => l_component_code
107604   , p_component_type_code          => l_component_type_code
107605   , p_component_appl_id            => l_component_appl_id
107606   , p_amb_context_code             => l_amb_context_code
107607   , p_side                         => 'NA'
107608   );
107609 
107610 
107611    --
107612    --
107613    END IF;
107614 
107615        --
107616        -- Update the line information that should be overwritten
107617        --
107618        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
107619                                          p_header_num   => 1);
107620        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
107621 
107622        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
107623 
107624        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
107625           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
107626        END IF;
107627 
107628       --
107629       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
107630       --
107631       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
107632           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
107633       ELSE
107634           ---------------------------------------------------------------------------------------------------
107635           -- 4262811a Switch Sign
107636           ---------------------------------------------------------------------------------------------------
107637           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
107638           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
107639                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107640           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
107641                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107642           -- 5132302
107643           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
107644                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107645 
107646       END IF;
107647 
107648       -- 4955764
107649       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
107650       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
107651 
107652 
107653       XLA_AE_LINES_PKG.ValidateCurrentLine;
107654       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
107655 
107656       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
107657                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
107658                ,p_balance_type_code => l_balance_type_code);
107659 
107660    END IF;
107661 
107662    -----------------------------------------------------------------------------------------
107663    -- 4262811 Multiperiod Accounting
107664    -----------------------------------------------------------------------------------------
107665      -- No MPA option is assigned.
107666 
107667 
107668 END IF;
107669 END IF;
107670 --
107671 
107672 --
107673 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
107674    trace
107675       (p_msg      => 'END of AcctLineType_195'
107676       ,p_level    => C_LEVEL_PROCEDURE
107677       ,p_module   => l_log_module);
107678 END IF;
107679 --
107680 EXCEPTION
107681   WHEN xla_exceptions_pkg.application_exception THEN
107682       RAISE;
107683   WHEN OTHERS THEN
107684        xla_exceptions_pkg.raise_message
107685            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_195');
107686 END AcctLineType_195;
107687 --
107688 
107689 ---------------------------------------
107690 --
107691 -- PRIVATE FUNCTION
107692 --         AcctLineType_196
107693 --
107694 ---------------------------------------
107695 PROCEDURE AcctLineType_196 (
107696   p_application_id        IN NUMBER
107697  ,p_event_id              IN NUMBER
107698  ,p_calculate_acctd_flag  IN VARCHAR2
107699  ,p_calculate_g_l_flag    IN VARCHAR2
107700  ,p_actual_flag           IN OUT VARCHAR2
107701  ,p_balance_type_code     OUT VARCHAR2
107702  ,p_gain_or_loss_ref      OUT VARCHAR2
107703  
107704 --Cost Management Default Account
107705  , p_source_4            IN NUMBER
107706 --DISTRIBUTION_IDENTIFIER
107707  , p_source_11            IN NUMBER
107708 --Distribution Type
107709  , p_source_12            IN VARCHAR2
107710  , p_source_12_meaning    IN VARCHAR2
107711 --Entered Currency Code
107712  , p_source_15            IN VARCHAR2
107713 --Entered Amount
107714  , p_source_18            IN NUMBER
107715 --Currency Conversion Date
107716  , p_source_19            IN DATE
107717 --Currency Conversion Rate
107718  , p_source_20            IN NUMBER
107719 --Currency Conversion Type
107720  , p_source_21            IN VARCHAR2
107721 --Accounted Amount
107722  , p_source_22            IN NUMBER
107723 --Accounting Line Type
107724  , p_source_24            IN NUMBER
107725 )
107726 IS
107727 
107728 l_component_type              VARCHAR2(80);
107729 l_component_code              VARCHAR2(30);
107730 l_component_type_code         VARCHAR2(1);
107731 l_component_appl_id           INTEGER;
107732 l_amb_context_code            VARCHAR2(30);
107733 l_entity_code                 VARCHAR2(30);
107734 l_event_class_code            VARCHAR2(30);
107735 l_ae_header_id                NUMBER;
107736 l_event_type_code             VARCHAR2(30);
107737 l_line_definition_code        VARCHAR2(30);
107738 l_line_definition_owner_code  VARCHAR2(1);
107739 --
107740 -- adr variables
107741 l_segment                     VARCHAR2(30);
107742 l_ccid                        NUMBER;
107743 l_adr_transaction_coa_id      NUMBER;
107744 l_adr_accounting_coa_id       NUMBER;
107745 l_adr_flexfield_segment_code  VARCHAR2(30);
107746 l_adr_flex_value_set_id       NUMBER;
107747 l_adr_value_type_code         VARCHAR2(30);
107748 l_adr_value_combination_id    NUMBER;
107749 l_adr_value_segment_code      VARCHAR2(30);
107750 
107751 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
107752 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
107753 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
107754 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
107755 
107756 -- 4262811 Variables ------------------------------------------------------------------------------------------
107757 l_entered_amt_idx             NUMBER;
107758 l_accted_amt_idx              NUMBER;
107759 l_acc_rev_flag                VARCHAR2(1);
107760 l_accrual_line_num            NUMBER;
107761 l_tmp_amt                     NUMBER;
107762 l_acc_rev_natural_side_code   VARCHAR2(1);
107763 
107764 l_num_entries                 NUMBER;
107765 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
107766 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
107767 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
107768 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
107769 l_recog_line_1                NUMBER;
107770 l_recog_line_2                NUMBER;
107771 
107772 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
107773 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
107774 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
107775 
107776 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
107777 
107778 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
107779 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
107780 
107781 ---------------------------------------------------------------------------------------------------------------
107782 
107783 
107784 --
107785 -- bulk performance
107786 --
107787 l_balance_type_code           VARCHAR2(1);
107788 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
107789 l_log_module                  VARCHAR2(240);
107790 
107791 --
107792 -- Upgrade strategy
107793 --
107794 l_actual_upg_option           VARCHAR2(1);
107795 l_enc_upg_option           VARCHAR2(1);
107796 
107797 --
107798 BEGIN
107799 --
107800 IF g_log_enabled THEN
107801       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_196';
107802 END IF;
107803 --
107804 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
107805 
107806       trace
107807          (p_msg      => 'BEGIN of AcctLineType_196'
107808          ,p_level    => C_LEVEL_PROCEDURE
107809          ,p_module   => l_log_module);
107810 
107811 END IF;
107812 --
107813 l_component_type             := 'AMB_JLT';
107814 l_component_code             := 'OFFSET';
107815 l_component_type_code        := 'S';
107816 l_component_appl_id          :=  707;
107817 l_amb_context_code           := 'DEFAULT';
107818 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
107819 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
107820 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_ALL';
107821 l_line_definition_owner_code := 'S';
107822 l_line_definition_code       := 'FOB_RCPT_SENDER_RCPT';
107823 --
107824 l_balance_type_code          := 'A';
107825 l_segment                     := NULL;
107826 l_ccid                        := NULL;
107827 l_adr_transaction_coa_id      := NULL;
107828 l_adr_accounting_coa_id       := NULL;
107829 l_adr_flexfield_segment_code  := NULL;
107830 l_adr_flex_value_set_id       := NULL;
107831 l_adr_value_type_code         := NULL;
107832 l_adr_value_combination_id    := NULL;
107833 l_adr_value_segment_code      := NULL;
107834 
107835 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
107836 l_bflow_class_code           := '';    -- 4219869 Business Flow
107837 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
107838 l_budgetary_control_flag     := 'N';
107839 
107840 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
107841 l_bflow_applied_to_amt       := NULL; -- 5132302
107842 l_entered_amt_idx            := NULL;          -- 4262811
107843 l_accted_amt_idx             := NULL;          -- 4262811
107844 l_acc_rev_flag               := NULL;          -- 4262811
107845 l_accrual_line_num           := NULL;          -- 4262811
107846 l_tmp_amt                    := NULL;          -- 4262811
107847 --
107848  
107849 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
107850     l_balance_type_code <> 'B' THEN
107851 IF NVL(p_source_24,9E125) =  2 AND 
107852 p_source_22 <=  0
107853  THEN 
107854 
107855    --
107856    XLA_AE_LINES_PKG.SetNewLine;
107857 
107858    p_balance_type_code          := l_balance_type_code;
107859    -- set the flag so later we will know whether the gain loss line needs to be created
107860    
107861    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
107862      p_actual_flag :='A';
107863    END IF;
107864 
107865    --
107866    -- bulk performance
107867    --
107868    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
107869                                       p_header_num   => 0); -- 4262811
107870    --
107871    -- set accounting line options
107872    --
107873    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
107874            p_natural_side_code          => 'D'
107875          , p_gain_or_loss_flag          => 'N'
107876          , p_gl_transfer_mode_code      => 'S'
107877          , p_acct_entry_type_code       => 'A'
107878          , p_switch_side_flag           => 'Y'
107879          , p_merge_duplicate_code       => 'N'
107880          );
107881    --
107882    l_acc_rev_natural_side_code := 'C';  -- 4262811
107883    -- 
107884    --
107885    -- set accounting line type info
107886    --
107887    xla_ae_lines_pkg.SetAcctLineType
107888       (p_component_type             => l_component_type
107889       ,p_event_type_code            => l_event_type_code
107890       ,p_line_definition_owner_code => l_line_definition_owner_code
107891       ,p_line_definition_code       => l_line_definition_code
107892       ,p_accounting_line_code       => l_component_code
107893       ,p_accounting_line_type_code  => l_component_type_code
107894       ,p_accounting_line_appl_id    => l_component_appl_id
107895       ,p_amb_context_code           => l_amb_context_code
107896       ,p_entity_code                => l_entity_code
107897       ,p_event_class_code           => l_event_class_code);
107898    --
107899    -- set accounting class
107900    --
107901    xla_ae_lines_pkg.SetAcctClass(
107902            p_accounting_class_code  => 'OFFSET'
107903          , p_ae_header_id           => l_ae_header_id
107904          );
107905 
107906    --
107907    -- set rounding class
107908    --
107909    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
107910                       'OFFSET';
107911 
107912    --
107913    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
107914    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
107915    --
107916    -- bulk performance
107917    --
107918    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
107919 
107920    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
107921       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
107922 
107923    -- 4955764
107924    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
107925       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
107926 
107927    -- 4458381 Public Sector Enh
107928    
107929    --
107930    -- set accounting attributes for the line type
107931    --
107932    l_entered_amt_idx := 3;
107933    l_accted_amt_idx  := 8;
107934    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
107935    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
107936    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
107937    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
107938    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
107939    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
107940    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
107941    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
107942    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
107943    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
107944    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
107945    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
107946    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
107947    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
107948    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
107949    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
107950    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
107951 
107952    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
107953    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
107954 
107955    ---------------------------------------------------------------------------------------------------------------
107956    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
107957    ---------------------------------------------------------------------------------------------------------------
107958    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
107959 
107960    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
107961    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
107962 
107963    IF xla_accounting_cache_pkg.GetValueChar
107964          (p_source_code         => 'LEDGER_CATEGORY_CODE'
107965          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
107966    AND l_bflow_method_code = 'PRIOR_ENTRY'
107967 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
107968    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
107969          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
107970        )
107971    THEN
107972          xla_ae_lines_pkg.BflowUpgEntry
107973            (p_business_method_code    => l_bflow_method_code
107974            ,p_business_class_code     => l_bflow_class_code
107975            ,p_balance_type            => l_balance_type_code);
107976    ELSE
107977       NULL;
107978 -- No business flow processing for business flow method of NONE.
107979    END IF;
107980 
107981    --
107982    -- call analytical criteria
107983    --
107984    
107985    --
107986    -- call description
107987    --
107988    -- No description or it is inherited.
107989    --
107990    -- call ADRs
107991    -- Bug 4922099
107992    --
107993    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
107994         (NVL(l_actual_upg_option, 'N') = 'O') OR
107995         (NVL(l_enc_upg_option, 'N') = 'O')
107996       )
107997    THEN
107998    NULL;
107999    --
108000    --
108001    
108002   l_ccid := AcctDerRule_4(
108003            p_application_id           => p_application_id
108004          , p_ae_header_id             => l_ae_header_id 
108005 , p_source_4 => p_source_4
108006          , x_transaction_coa_id       => l_adr_transaction_coa_id
108007          , x_accounting_coa_id        => l_adr_accounting_coa_id
108008          , x_value_type_code          => l_adr_value_type_code
108009          , p_side                     => 'NA'
108010    );
108011 
108012    xla_ae_lines_pkg.set_ccid(
108013     p_code_combination_id          => l_ccid
108014   , p_value_type_code              => l_adr_value_type_code
108015   , p_transaction_coa_id           => l_adr_transaction_coa_id
108016   , p_accounting_coa_id            => l_adr_accounting_coa_id
108017   , p_adr_code                     => 'CST_DEFAULT'
108018   , p_adr_type_code                => 'S'
108019   , p_component_type               => l_component_type
108020   , p_component_code               => l_component_code
108021   , p_component_type_code          => l_component_type_code
108022   , p_component_appl_id            => l_component_appl_id
108023   , p_amb_context_code             => l_amb_context_code
108024   , p_side                         => 'NA'
108025   );
108026 
108027 
108028    --
108029    --
108030    END IF;
108031    --
108032    -- Bug 4922099
108033    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
108034           (NVL(l_enc_upg_option, 'N') = 'O')
108035         ) AND
108036         (l_bflow_method_code = 'PRIOR_ENTRY')
108037       )
108038    THEN
108039       IF
108040       --
108041       1 = 2
108042       --
108043       THEN
108044       xla_accounting_err_pkg.build_message
108045                                     (p_appli_s_name            => 'XLA'
108046                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
108047                                     ,p_token_1                 => 'LINE_NUMBER'
108048                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
108049                                     ,p_token_2                 => 'LINE_TYPE_NAME'
108050                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
108051                                                                              l_component_type
108052                                                                             ,l_component_code
108053                                                                             ,l_component_type_code
108054                                                                             ,l_component_appl_id
108055                                                                             ,l_amb_context_code
108056                                                                             ,l_entity_code
108057                                                                             ,l_event_class_code
108058                                                                            )
108059                                     ,p_token_3                 => 'OWNER'
108060                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
108061                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
108062                                                                           ,p_lookup_code    => l_component_type_code
108063                                                                          )
108064                                     ,p_token_4                 => 'PRODUCT_NAME'
108065                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
108066                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
108067                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
108068                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
108069                                     ,p_ae_header_id            =>  NULL
108070                                        );
108071 
108072         IF (C_LEVEL_ERROR>= g_log_level) THEN
108073                  trace
108074                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
108075                       ,p_level    => C_LEVEL_ERROR
108076                       ,p_module   => l_log_module);
108077         END IF;
108078       END IF;
108079    END IF;
108080    --
108081    --
108082    ------------------------------------------------------------------------------------------------
108083    -- 4219869 Business Flow
108084    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
108085    -- Prior Entry.  Currently, the following code is always generated.
108086    ------------------------------------------------------------------------------------------------
108087    XLA_AE_LINES_PKG.ValidateCurrentLine;
108088 
108089    ------------------------------------------------------------------------------------
108090    -- 4219869 Business Flow
108091    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
108092    ------------------------------------------------------------------------------------
108093    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
108094 
108095    ----------------------------------------------------------------------------------
108096    -- 4219869 Business Flow
108097    -- Update journal entry status -- Need to generate this within IF <condition>
108098    ----------------------------------------------------------------------------------
108099    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
108100          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
108101          ,p_balance_type_code => l_balance_type_code
108102          );
108103 
108104    -------------------------------------------------------------------------------------------
108105    -- 4262811 - Generate the Accrual Reversal lines
108106    -------------------------------------------------------------------------------------------
108107    BEGIN
108108       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
108109                               (g_array_event(p_event_id).array_value_num('header_index'));
108110       IF l_acc_rev_flag IS NULL THEN
108111          l_acc_rev_flag := 'N';
108112       END IF;
108113    EXCEPTION
108114       WHEN OTHERS THEN
108115          l_acc_rev_flag := 'N';
108116    END;
108117    --
108118    IF (l_acc_rev_flag = 'Y') THEN
108119 
108120        -- 4645092  ------------------------------------------------------------------------------
108121        -- To allow MPA report to determine if it should generate report process
108122        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
108123        ------------------------------------------------------------------------------------------
108124 
108125        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
108126        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
108127    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
108128    -- call ADRs
108129    -- Bug 4922099
108130    --
108131    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
108132         (NVL(l_actual_upg_option, 'N') = 'O') OR
108133         (NVL(l_enc_upg_option, 'N') = 'O')
108134       )
108135    THEN
108136    NULL;
108137    --
108138    --
108139    
108140   l_ccid := AcctDerRule_4(
108141            p_application_id           => p_application_id
108142          , p_ae_header_id             => l_ae_header_id 
108143 , p_source_4 => p_source_4
108144          , x_transaction_coa_id       => l_adr_transaction_coa_id
108145          , x_accounting_coa_id        => l_adr_accounting_coa_id
108146          , x_value_type_code          => l_adr_value_type_code
108147          , p_side                     => 'NA'
108148    );
108149 
108150    xla_ae_lines_pkg.set_ccid(
108151     p_code_combination_id          => l_ccid
108152   , p_value_type_code              => l_adr_value_type_code
108153   , p_transaction_coa_id           => l_adr_transaction_coa_id
108154   , p_accounting_coa_id            => l_adr_accounting_coa_id
108155   , p_adr_code                     => 'CST_DEFAULT'
108156   , p_adr_type_code                => 'S'
108157   , p_component_type               => l_component_type
108158   , p_component_code               => l_component_code
108159   , p_component_type_code          => l_component_type_code
108160   , p_component_appl_id            => l_component_appl_id
108161   , p_amb_context_code             => l_amb_context_code
108162   , p_side                         => 'NA'
108163   );
108164 
108165 
108166    --
108167    --
108168    END IF;
108169 
108170        --
108171        -- Update the line information that should be overwritten
108172        --
108173        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
108174                                          p_header_num   => 1);
108175        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
108176 
108177        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
108178 
108179        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
108180           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
108181        END IF;
108182 
108183       --
108184       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
108185       --
108186       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
108187           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
108188       ELSE
108189           ---------------------------------------------------------------------------------------------------
108190           -- 4262811a Switch Sign
108191           ---------------------------------------------------------------------------------------------------
108192           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
108193           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
108194                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
108195           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
108196                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
108197           -- 5132302
108198           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
108199                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
108200 
108201       END IF;
108202 
108203       -- 4955764
108204       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
108205       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
108206 
108207 
108208       XLA_AE_LINES_PKG.ValidateCurrentLine;
108209       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
108210 
108211       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
108212                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
108213                ,p_balance_type_code => l_balance_type_code);
108214 
108215    END IF;
108216 
108217    -----------------------------------------------------------------------------------------
108218    -- 4262811 Multiperiod Accounting
108219    -----------------------------------------------------------------------------------------
108220      -- No MPA option is assigned.
108221 
108222 
108223 END IF;
108224 END IF;
108225 --
108226 
108227 --
108228 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
108229    trace
108230       (p_msg      => 'END of AcctLineType_196'
108231       ,p_level    => C_LEVEL_PROCEDURE
108232       ,p_module   => l_log_module);
108233 END IF;
108234 --
108235 EXCEPTION
108236   WHEN xla_exceptions_pkg.application_exception THEN
108237       RAISE;
108238   WHEN OTHERS THEN
108239        xla_exceptions_pkg.raise_message
108240            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_196');
108241 END AcctLineType_196;
108242 --
108243 
108244 ---------------------------------------
108245 --
108246 -- PRIVATE FUNCTION
108247 --         AcctLineType_197
108248 --
108249 ---------------------------------------
108250 PROCEDURE AcctLineType_197 (
108251   p_application_id        IN NUMBER
108252  ,p_event_id              IN NUMBER
108253  ,p_calculate_acctd_flag  IN VARCHAR2
108254  ,p_calculate_g_l_flag    IN VARCHAR2
108255  ,p_actual_flag           IN OUT VARCHAR2
108256  ,p_balance_type_code     OUT VARCHAR2
108257  ,p_gain_or_loss_ref      OUT VARCHAR2
108258  
108259 --Cost Management Default Account
108260  , p_source_4            IN NUMBER
108261 --DISTRIBUTION_IDENTIFIER
108262  , p_source_11            IN NUMBER
108263 --Distribution Type
108264  , p_source_12            IN VARCHAR2
108265  , p_source_12_meaning    IN VARCHAR2
108266 --Entered Currency Code
108267  , p_source_15            IN VARCHAR2
108268 --Entered Amount
108269  , p_source_18            IN NUMBER
108270 --Currency Conversion Date
108271  , p_source_19            IN DATE
108272 --Currency Conversion Rate
108273  , p_source_20            IN NUMBER
108274 --Currency Conversion Type
108275  , p_source_21            IN VARCHAR2
108276 --Accounted Amount
108277  , p_source_22            IN NUMBER
108278 --Accounting Line Type
108279  , p_source_24            IN NUMBER
108280 )
108281 IS
108282 
108283 l_component_type              VARCHAR2(80);
108284 l_component_code              VARCHAR2(30);
108285 l_component_type_code         VARCHAR2(1);
108286 l_component_appl_id           INTEGER;
108287 l_amb_context_code            VARCHAR2(30);
108288 l_entity_code                 VARCHAR2(30);
108289 l_event_class_code            VARCHAR2(30);
108290 l_ae_header_id                NUMBER;
108291 l_event_type_code             VARCHAR2(30);
108292 l_line_definition_code        VARCHAR2(30);
108293 l_line_definition_owner_code  VARCHAR2(1);
108294 --
108295 -- adr variables
108296 l_segment                     VARCHAR2(30);
108297 l_ccid                        NUMBER;
108298 l_adr_transaction_coa_id      NUMBER;
108299 l_adr_accounting_coa_id       NUMBER;
108300 l_adr_flexfield_segment_code  VARCHAR2(30);
108301 l_adr_flex_value_set_id       NUMBER;
108302 l_adr_value_type_code         VARCHAR2(30);
108303 l_adr_value_combination_id    NUMBER;
108304 l_adr_value_segment_code      VARCHAR2(30);
108305 
108306 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
108307 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
108308 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
108309 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
108310 
108311 -- 4262811 Variables ------------------------------------------------------------------------------------------
108312 l_entered_amt_idx             NUMBER;
108313 l_accted_amt_idx              NUMBER;
108314 l_acc_rev_flag                VARCHAR2(1);
108315 l_accrual_line_num            NUMBER;
108316 l_tmp_amt                     NUMBER;
108317 l_acc_rev_natural_side_code   VARCHAR2(1);
108318 
108319 l_num_entries                 NUMBER;
108320 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
108321 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
108322 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
108323 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
108324 l_recog_line_1                NUMBER;
108325 l_recog_line_2                NUMBER;
108326 
108327 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
108328 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
108329 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
108330 
108331 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
108332 
108333 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
108334 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
108335 
108336 ---------------------------------------------------------------------------------------------------------------
108337 
108338 
108339 --
108340 -- bulk performance
108341 --
108342 l_balance_type_code           VARCHAR2(1);
108343 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
108344 l_log_module                  VARCHAR2(240);
108345 
108346 --
108347 -- Upgrade strategy
108348 --
108349 l_actual_upg_option           VARCHAR2(1);
108350 l_enc_upg_option           VARCHAR2(1);
108351 
108352 --
108353 BEGIN
108354 --
108355 IF g_log_enabled THEN
108356       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_197';
108357 END IF;
108358 --
108359 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
108360 
108361       trace
108362          (p_msg      => 'BEGIN of AcctLineType_197'
108363          ,p_level    => C_LEVEL_PROCEDURE
108364          ,p_module   => l_log_module);
108365 
108366 END IF;
108367 --
108368 l_component_type             := 'AMB_JLT';
108369 l_component_code             := 'OFFSET';
108370 l_component_type_code        := 'S';
108371 l_component_appl_id          :=  707;
108372 l_amb_context_code           := 'DEFAULT';
108373 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
108374 l_event_class_code           := 'FOB_RCPT_SENDER_SHIP';
108375 l_event_type_code            := 'FOB_RCPT_SENDER_SHIP_ALL';
108376 l_line_definition_owner_code := 'S';
108377 l_line_definition_code       := 'FOB_RCPT_SEND_SHIP';
108378 --
108379 l_balance_type_code          := 'A';
108380 l_segment                     := NULL;
108381 l_ccid                        := NULL;
108382 l_adr_transaction_coa_id      := NULL;
108383 l_adr_accounting_coa_id       := NULL;
108384 l_adr_flexfield_segment_code  := NULL;
108385 l_adr_flex_value_set_id       := NULL;
108386 l_adr_value_type_code         := NULL;
108387 l_adr_value_combination_id    := NULL;
108388 l_adr_value_segment_code      := NULL;
108389 
108390 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
108391 l_bflow_class_code           := '';    -- 4219869 Business Flow
108392 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
108393 l_budgetary_control_flag     := 'N';
108394 
108395 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
108396 l_bflow_applied_to_amt       := NULL; -- 5132302
108397 l_entered_amt_idx            := NULL;          -- 4262811
108398 l_accted_amt_idx             := NULL;          -- 4262811
108399 l_acc_rev_flag               := NULL;          -- 4262811
108400 l_accrual_line_num           := NULL;          -- 4262811
108401 l_tmp_amt                    := NULL;          -- 4262811
108402 --
108403  
108404 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
108405     l_balance_type_code <> 'B' THEN
108406 IF NVL(p_source_24,9E125) =  2
108407  THEN 
108408 
108409    --
108410    XLA_AE_LINES_PKG.SetNewLine;
108411 
108412    p_balance_type_code          := l_balance_type_code;
108413    -- set the flag so later we will know whether the gain loss line needs to be created
108414    
108415    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
108416      p_actual_flag :='A';
108417    END IF;
108418 
108419    --
108420    -- bulk performance
108421    --
108422    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
108423                                       p_header_num   => 0); -- 4262811
108424    --
108425    -- set accounting line options
108426    --
108427    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
108428            p_natural_side_code          => 'D'
108429          , p_gain_or_loss_flag          => 'N'
108430          , p_gl_transfer_mode_code      => 'S'
108431          , p_acct_entry_type_code       => 'A'
108432          , p_switch_side_flag           => 'Y'
108433          , p_merge_duplicate_code       => 'N'
108434          );
108435    --
108436    l_acc_rev_natural_side_code := 'C';  -- 4262811
108437    -- 
108438    --
108439    -- set accounting line type info
108440    --
108441    xla_ae_lines_pkg.SetAcctLineType
108442       (p_component_type             => l_component_type
108443       ,p_event_type_code            => l_event_type_code
108444       ,p_line_definition_owner_code => l_line_definition_owner_code
108445       ,p_line_definition_code       => l_line_definition_code
108446       ,p_accounting_line_code       => l_component_code
108447       ,p_accounting_line_type_code  => l_component_type_code
108448       ,p_accounting_line_appl_id    => l_component_appl_id
108449       ,p_amb_context_code           => l_amb_context_code
108450       ,p_entity_code                => l_entity_code
108451       ,p_event_class_code           => l_event_class_code);
108452    --
108453    -- set accounting class
108454    --
108455    xla_ae_lines_pkg.SetAcctClass(
108456            p_accounting_class_code  => 'OFFSET'
108457          , p_ae_header_id           => l_ae_header_id
108458          );
108459 
108460    --
108461    -- set rounding class
108462    --
108463    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
108464                       'OFFSET';
108465 
108466    --
108467    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
108468    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
108469    --
108470    -- bulk performance
108471    --
108472    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
108473 
108474    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
108475       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
108476 
108477    -- 4955764
108478    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
108479       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
108480 
108481    -- 4458381 Public Sector Enh
108482    
108483    --
108484    -- set accounting attributes for the line type
108485    --
108486    l_entered_amt_idx := 3;
108487    l_accted_amt_idx  := 8;
108488    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
108489    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
108490    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
108491    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
108492    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
108493    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
108494    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
108495    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
108496    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
108497    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
108498    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
108499    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
108500    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
108501    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
108502    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
108503    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
108504    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
108505 
108506    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
108507    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
108508 
108509    ---------------------------------------------------------------------------------------------------------------
108510    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
108511    ---------------------------------------------------------------------------------------------------------------
108512    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
108513 
108514    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
108515    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
108516 
108517    IF xla_accounting_cache_pkg.GetValueChar
108518          (p_source_code         => 'LEDGER_CATEGORY_CODE'
108519          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
108520    AND l_bflow_method_code = 'PRIOR_ENTRY'
108521 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
108522    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
108523          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
108524        )
108525    THEN
108526          xla_ae_lines_pkg.BflowUpgEntry
108527            (p_business_method_code    => l_bflow_method_code
108528            ,p_business_class_code     => l_bflow_class_code
108529            ,p_balance_type            => l_balance_type_code);
108530    ELSE
108531       NULL;
108532 -- No business flow processing for business flow method of NONE.
108533    END IF;
108534 
108535    --
108536    -- call analytical criteria
108537    --
108538    
108539    --
108540    -- call description
108541    --
108542    -- No description or it is inherited.
108543    --
108544    -- call ADRs
108545    -- Bug 4922099
108546    --
108547    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
108548         (NVL(l_actual_upg_option, 'N') = 'O') OR
108549         (NVL(l_enc_upg_option, 'N') = 'O')
108550       )
108551    THEN
108552    NULL;
108553    --
108554    --
108555    
108556   l_ccid := AcctDerRule_4(
108557            p_application_id           => p_application_id
108558          , p_ae_header_id             => l_ae_header_id 
108559 , p_source_4 => p_source_4
108560          , x_transaction_coa_id       => l_adr_transaction_coa_id
108561          , x_accounting_coa_id        => l_adr_accounting_coa_id
108562          , x_value_type_code          => l_adr_value_type_code
108563          , p_side                     => 'NA'
108564    );
108565 
108566    xla_ae_lines_pkg.set_ccid(
108567     p_code_combination_id          => l_ccid
108568   , p_value_type_code              => l_adr_value_type_code
108569   , p_transaction_coa_id           => l_adr_transaction_coa_id
108570   , p_accounting_coa_id            => l_adr_accounting_coa_id
108571   , p_adr_code                     => 'CST_DEFAULT'
108572   , p_adr_type_code                => 'S'
108573   , p_component_type               => l_component_type
108574   , p_component_code               => l_component_code
108575   , p_component_type_code          => l_component_type_code
108576   , p_component_appl_id            => l_component_appl_id
108577   , p_amb_context_code             => l_amb_context_code
108578   , p_side                         => 'NA'
108579   );
108580 
108581 
108582    --
108583    --
108584    END IF;
108585    --
108586    -- Bug 4922099
108587    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
108588           (NVL(l_enc_upg_option, 'N') = 'O')
108589         ) AND
108590         (l_bflow_method_code = 'PRIOR_ENTRY')
108591       )
108592    THEN
108593       IF
108594       --
108595       1 = 2
108596       --
108597       THEN
108598       xla_accounting_err_pkg.build_message
108599                                     (p_appli_s_name            => 'XLA'
108600                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
108601                                     ,p_token_1                 => 'LINE_NUMBER'
108602                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
108603                                     ,p_token_2                 => 'LINE_TYPE_NAME'
108604                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
108605                                                                              l_component_type
108606                                                                             ,l_component_code
108607                                                                             ,l_component_type_code
108608                                                                             ,l_component_appl_id
108609                                                                             ,l_amb_context_code
108610                                                                             ,l_entity_code
108611                                                                             ,l_event_class_code
108612                                                                            )
108613                                     ,p_token_3                 => 'OWNER'
108614                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
108615                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
108616                                                                           ,p_lookup_code    => l_component_type_code
108617                                                                          )
108618                                     ,p_token_4                 => 'PRODUCT_NAME'
108619                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
108620                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
108621                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
108622                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
108623                                     ,p_ae_header_id            =>  NULL
108624                                        );
108625 
108626         IF (C_LEVEL_ERROR>= g_log_level) THEN
108627                  trace
108628                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
108629                       ,p_level    => C_LEVEL_ERROR
108630                       ,p_module   => l_log_module);
108631         END IF;
108632       END IF;
108633    END IF;
108634    --
108635    --
108636    ------------------------------------------------------------------------------------------------
108637    -- 4219869 Business Flow
108638    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
108639    -- Prior Entry.  Currently, the following code is always generated.
108640    ------------------------------------------------------------------------------------------------
108641    XLA_AE_LINES_PKG.ValidateCurrentLine;
108642 
108643    ------------------------------------------------------------------------------------
108644    -- 4219869 Business Flow
108645    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
108646    ------------------------------------------------------------------------------------
108647    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
108648 
108649    ----------------------------------------------------------------------------------
108650    -- 4219869 Business Flow
108651    -- Update journal entry status -- Need to generate this within IF <condition>
108652    ----------------------------------------------------------------------------------
108653    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
108654          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
108655          ,p_balance_type_code => l_balance_type_code
108656          );
108657 
108658    -------------------------------------------------------------------------------------------
108659    -- 4262811 - Generate the Accrual Reversal lines
108660    -------------------------------------------------------------------------------------------
108661    BEGIN
108662       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
108663                               (g_array_event(p_event_id).array_value_num('header_index'));
108664       IF l_acc_rev_flag IS NULL THEN
108665          l_acc_rev_flag := 'N';
108666       END IF;
108667    EXCEPTION
108668       WHEN OTHERS THEN
108669          l_acc_rev_flag := 'N';
108670    END;
108671    --
108672    IF (l_acc_rev_flag = 'Y') THEN
108673 
108674        -- 4645092  ------------------------------------------------------------------------------
108675        -- To allow MPA report to determine if it should generate report process
108676        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
108677        ------------------------------------------------------------------------------------------
108678 
108679        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
108680        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
108681    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
108682    -- call ADRs
108683    -- Bug 4922099
108684    --
108685    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
108686         (NVL(l_actual_upg_option, 'N') = 'O') OR
108687         (NVL(l_enc_upg_option, 'N') = 'O')
108688       )
108689    THEN
108690    NULL;
108691    --
108692    --
108693    
108694   l_ccid := AcctDerRule_4(
108695            p_application_id           => p_application_id
108696          , p_ae_header_id             => l_ae_header_id 
108697 , p_source_4 => p_source_4
108698          , x_transaction_coa_id       => l_adr_transaction_coa_id
108699          , x_accounting_coa_id        => l_adr_accounting_coa_id
108700          , x_value_type_code          => l_adr_value_type_code
108701          , p_side                     => 'NA'
108702    );
108703 
108704    xla_ae_lines_pkg.set_ccid(
108705     p_code_combination_id          => l_ccid
108706   , p_value_type_code              => l_adr_value_type_code
108707   , p_transaction_coa_id           => l_adr_transaction_coa_id
108708   , p_accounting_coa_id            => l_adr_accounting_coa_id
108709   , p_adr_code                     => 'CST_DEFAULT'
108710   , p_adr_type_code                => 'S'
108711   , p_component_type               => l_component_type
108712   , p_component_code               => l_component_code
108713   , p_component_type_code          => l_component_type_code
108714   , p_component_appl_id            => l_component_appl_id
108715   , p_amb_context_code             => l_amb_context_code
108716   , p_side                         => 'NA'
108717   );
108718 
108719 
108720    --
108721    --
108722    END IF;
108723 
108724        --
108725        -- Update the line information that should be overwritten
108726        --
108727        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
108728                                          p_header_num   => 1);
108729        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
108730 
108731        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
108732 
108733        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
108734           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
108735        END IF;
108736 
108737       --
108738       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
108739       --
108740       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
108741           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
108742       ELSE
108743           ---------------------------------------------------------------------------------------------------
108744           -- 4262811a Switch Sign
108745           ---------------------------------------------------------------------------------------------------
108746           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
108747           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
108748                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
108749           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
108750                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
108751           -- 5132302
108752           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
108753                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
108754 
108755       END IF;
108756 
108757       -- 4955764
108758       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
108759       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
108760 
108761 
108762       XLA_AE_LINES_PKG.ValidateCurrentLine;
108763       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
108764 
108765       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
108766                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
108767                ,p_balance_type_code => l_balance_type_code);
108768 
108769    END IF;
108770 
108771    -----------------------------------------------------------------------------------------
108772    -- 4262811 Multiperiod Accounting
108773    -----------------------------------------------------------------------------------------
108774      -- No MPA option is assigned.
108775 
108776 
108777 END IF;
108778 END IF;
108779 --
108780 
108781 --
108782 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
108783    trace
108784       (p_msg      => 'END of AcctLineType_197'
108785       ,p_level    => C_LEVEL_PROCEDURE
108786       ,p_module   => l_log_module);
108787 END IF;
108788 --
108789 EXCEPTION
108790   WHEN xla_exceptions_pkg.application_exception THEN
108791       RAISE;
108792   WHEN OTHERS THEN
108793        xla_exceptions_pkg.raise_message
108794            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_197');
108795 END AcctLineType_197;
108796 --
108797 
108798 ---------------------------------------
108799 --
108800 -- PRIVATE FUNCTION
108801 --         AcctLineType_198
108802 --
108803 ---------------------------------------
108804 PROCEDURE AcctLineType_198 (
108805   p_application_id        IN NUMBER
108806  ,p_event_id              IN NUMBER
108807  ,p_calculate_acctd_flag  IN VARCHAR2
108808  ,p_calculate_g_l_flag    IN VARCHAR2
108809  ,p_actual_flag           IN OUT VARCHAR2
108810  ,p_balance_type_code     OUT VARCHAR2
108811  ,p_gain_or_loss_ref      OUT VARCHAR2
108812  
108813 --Cost Management Default Account
108814  , p_source_4            IN NUMBER
108815 --DISTRIBUTION_IDENTIFIER
108816  , p_source_11            IN NUMBER
108817 --Distribution Type
108818  , p_source_12            IN VARCHAR2
108819  , p_source_12_meaning    IN VARCHAR2
108820 --Entered Currency Code
108821  , p_source_15            IN VARCHAR2
108822 --Entered Amount
108823  , p_source_18            IN NUMBER
108824 --Currency Conversion Date
108825  , p_source_19            IN DATE
108826 --Currency Conversion Rate
108827  , p_source_20            IN NUMBER
108828 --Currency Conversion Type
108829  , p_source_21            IN VARCHAR2
108830 --Accounted Amount
108831  , p_source_22            IN NUMBER
108832 --Accounting Line Type
108833  , p_source_24            IN NUMBER
108834 )
108835 IS
108836 
108837 l_component_type              VARCHAR2(80);
108838 l_component_code              VARCHAR2(30);
108839 l_component_type_code         VARCHAR2(1);
108840 l_component_appl_id           INTEGER;
108841 l_amb_context_code            VARCHAR2(30);
108842 l_entity_code                 VARCHAR2(30);
108843 l_event_class_code            VARCHAR2(30);
108844 l_ae_header_id                NUMBER;
108845 l_event_type_code             VARCHAR2(30);
108846 l_line_definition_code        VARCHAR2(30);
108847 l_line_definition_owner_code  VARCHAR2(1);
108848 --
108849 -- adr variables
108850 l_segment                     VARCHAR2(30);
108851 l_ccid                        NUMBER;
108852 l_adr_transaction_coa_id      NUMBER;
108853 l_adr_accounting_coa_id       NUMBER;
108854 l_adr_flexfield_segment_code  VARCHAR2(30);
108855 l_adr_flex_value_set_id       NUMBER;
108856 l_adr_value_type_code         VARCHAR2(30);
108857 l_adr_value_combination_id    NUMBER;
108858 l_adr_value_segment_code      VARCHAR2(30);
108859 
108860 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
108861 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
108862 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
108863 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
108864 
108865 -- 4262811 Variables ------------------------------------------------------------------------------------------
108866 l_entered_amt_idx             NUMBER;
108867 l_accted_amt_idx              NUMBER;
108868 l_acc_rev_flag                VARCHAR2(1);
108869 l_accrual_line_num            NUMBER;
108870 l_tmp_amt                     NUMBER;
108871 l_acc_rev_natural_side_code   VARCHAR2(1);
108872 
108873 l_num_entries                 NUMBER;
108874 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
108875 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
108876 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
108877 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
108878 l_recog_line_1                NUMBER;
108879 l_recog_line_2                NUMBER;
108880 
108881 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
108882 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
108883 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
108884 
108885 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
108886 
108887 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
108888 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
108889 
108890 ---------------------------------------------------------------------------------------------------------------
108891 
108892 
108893 --
108894 -- bulk performance
108895 --
108896 l_balance_type_code           VARCHAR2(1);
108897 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
108898 l_log_module                  VARCHAR2(240);
108899 
108900 --
108901 -- Upgrade strategy
108902 --
108903 l_actual_upg_option           VARCHAR2(1);
108904 l_enc_upg_option           VARCHAR2(1);
108905 
108906 --
108907 BEGIN
108908 --
108909 IF g_log_enabled THEN
108910       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_198';
108911 END IF;
108912 --
108913 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
108914 
108915       trace
108916          (p_msg      => 'BEGIN of AcctLineType_198'
108917          ,p_level    => C_LEVEL_PROCEDURE
108918          ,p_module   => l_log_module);
108919 
108920 END IF;
108921 --
108922 l_component_type             := 'AMB_JLT';
108923 l_component_code             := 'OFFSET';
108924 l_component_type_code        := 'S';
108925 l_component_appl_id          :=  707;
108926 l_amb_context_code           := 'DEFAULT';
108927 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
108928 l_event_class_code           := 'INTRAORG_TXFR';
108929 l_event_type_code            := 'INTRAORG_TXFR_ALL';
108930 l_line_definition_owner_code := 'S';
108931 l_line_definition_code       := 'INTRAORG_TXFR';
108932 --
108933 l_balance_type_code          := 'A';
108934 l_segment                     := NULL;
108935 l_ccid                        := NULL;
108936 l_adr_transaction_coa_id      := NULL;
108937 l_adr_accounting_coa_id       := NULL;
108938 l_adr_flexfield_segment_code  := NULL;
108939 l_adr_flex_value_set_id       := NULL;
108940 l_adr_value_type_code         := NULL;
108941 l_adr_value_combination_id    := NULL;
108942 l_adr_value_segment_code      := NULL;
108943 
108944 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
108945 l_bflow_class_code           := '';    -- 4219869 Business Flow
108946 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
108947 l_budgetary_control_flag     := 'N';
108948 
108949 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
108950 l_bflow_applied_to_amt       := NULL; -- 5132302
108951 l_entered_amt_idx            := NULL;          -- 4262811
108952 l_accted_amt_idx             := NULL;          -- 4262811
108953 l_acc_rev_flag               := NULL;          -- 4262811
108954 l_accrual_line_num           := NULL;          -- 4262811
108955 l_tmp_amt                    := NULL;          -- 4262811
108956 --
108957  
108958 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
108959     l_balance_type_code <> 'B' THEN
108960 IF NVL(p_source_24,9E125) =  2
108961  THEN 
108962 
108963    --
108964    XLA_AE_LINES_PKG.SetNewLine;
108965 
108966    p_balance_type_code          := l_balance_type_code;
108967    -- set the flag so later we will know whether the gain loss line needs to be created
108968    
108969    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
108970      p_actual_flag :='A';
108971    END IF;
108972 
108973    --
108974    -- bulk performance
108975    --
108976    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
108977                                       p_header_num   => 0); -- 4262811
108978    --
108979    -- set accounting line options
108980    --
108981    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
108982            p_natural_side_code          => 'D'
108983          , p_gain_or_loss_flag          => 'N'
108984          , p_gl_transfer_mode_code      => 'S'
108985          , p_acct_entry_type_code       => 'A'
108986          , p_switch_side_flag           => 'Y'
108987          , p_merge_duplicate_code       => 'N'
108988          );
108989    --
108990    l_acc_rev_natural_side_code := 'C';  -- 4262811
108991    -- 
108992    --
108993    -- set accounting line type info
108994    --
108995    xla_ae_lines_pkg.SetAcctLineType
108996       (p_component_type             => l_component_type
108997       ,p_event_type_code            => l_event_type_code
108998       ,p_line_definition_owner_code => l_line_definition_owner_code
108999       ,p_line_definition_code       => l_line_definition_code
109000       ,p_accounting_line_code       => l_component_code
109001       ,p_accounting_line_type_code  => l_component_type_code
109002       ,p_accounting_line_appl_id    => l_component_appl_id
109003       ,p_amb_context_code           => l_amb_context_code
109004       ,p_entity_code                => l_entity_code
109005       ,p_event_class_code           => l_event_class_code);
109006    --
109007    -- set accounting class
109008    --
109009    xla_ae_lines_pkg.SetAcctClass(
109010            p_accounting_class_code  => 'OFFSET'
109011          , p_ae_header_id           => l_ae_header_id
109012          );
109013 
109014    --
109015    -- set rounding class
109016    --
109017    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
109018                       'OFFSET';
109019 
109020    --
109021    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
109022    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
109023    --
109024    -- bulk performance
109025    --
109026    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
109027 
109028    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
109029       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
109030 
109031    -- 4955764
109032    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
109033       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
109034 
109035    -- 4458381 Public Sector Enh
109036    
109037    --
109038    -- set accounting attributes for the line type
109039    --
109040    l_entered_amt_idx := 3;
109041    l_accted_amt_idx  := 8;
109042    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
109043    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
109044    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
109045    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
109046    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
109047    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
109048    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
109049    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
109050    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
109051    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
109052    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
109053    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
109054    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
109055    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
109056    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
109057    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
109058    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
109059 
109060    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
109061    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
109062 
109063    ---------------------------------------------------------------------------------------------------------------
109064    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
109065    ---------------------------------------------------------------------------------------------------------------
109066    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
109067 
109068    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
109069    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
109070 
109071    IF xla_accounting_cache_pkg.GetValueChar
109072          (p_source_code         => 'LEDGER_CATEGORY_CODE'
109073          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
109074    AND l_bflow_method_code = 'PRIOR_ENTRY'
109075 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
109076    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
109077          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
109078        )
109079    THEN
109080          xla_ae_lines_pkg.BflowUpgEntry
109081            (p_business_method_code    => l_bflow_method_code
109082            ,p_business_class_code     => l_bflow_class_code
109083            ,p_balance_type            => l_balance_type_code);
109084    ELSE
109085       NULL;
109086 -- No business flow processing for business flow method of NONE.
109087    END IF;
109088 
109089    --
109090    -- call analytical criteria
109091    --
109092    
109093    --
109094    -- call description
109095    --
109096    -- No description or it is inherited.
109097    --
109098    -- call ADRs
109099    -- Bug 4922099
109100    --
109101    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
109102         (NVL(l_actual_upg_option, 'N') = 'O') OR
109103         (NVL(l_enc_upg_option, 'N') = 'O')
109104       )
109105    THEN
109106    NULL;
109107    --
109108    --
109109    
109110   l_ccid := AcctDerRule_4(
109111            p_application_id           => p_application_id
109112          , p_ae_header_id             => l_ae_header_id 
109113 , p_source_4 => p_source_4
109114          , x_transaction_coa_id       => l_adr_transaction_coa_id
109115          , x_accounting_coa_id        => l_adr_accounting_coa_id
109116          , x_value_type_code          => l_adr_value_type_code
109117          , p_side                     => 'NA'
109118    );
109119 
109120    xla_ae_lines_pkg.set_ccid(
109121     p_code_combination_id          => l_ccid
109122   , p_value_type_code              => l_adr_value_type_code
109123   , p_transaction_coa_id           => l_adr_transaction_coa_id
109124   , p_accounting_coa_id            => l_adr_accounting_coa_id
109125   , p_adr_code                     => 'CST_DEFAULT'
109126   , p_adr_type_code                => 'S'
109127   , p_component_type               => l_component_type
109128   , p_component_code               => l_component_code
109129   , p_component_type_code          => l_component_type_code
109130   , p_component_appl_id            => l_component_appl_id
109131   , p_amb_context_code             => l_amb_context_code
109132   , p_side                         => 'NA'
109133   );
109134 
109135 
109136    --
109137    --
109138    END IF;
109139    --
109140    -- Bug 4922099
109141    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
109142           (NVL(l_enc_upg_option, 'N') = 'O')
109143         ) AND
109144         (l_bflow_method_code = 'PRIOR_ENTRY')
109145       )
109146    THEN
109147       IF
109148       --
109149       1 = 2
109150       --
109151       THEN
109152       xla_accounting_err_pkg.build_message
109153                                     (p_appli_s_name            => 'XLA'
109154                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
109155                                     ,p_token_1                 => 'LINE_NUMBER'
109156                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
109157                                     ,p_token_2                 => 'LINE_TYPE_NAME'
109158                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
109159                                                                              l_component_type
109160                                                                             ,l_component_code
109161                                                                             ,l_component_type_code
109162                                                                             ,l_component_appl_id
109163                                                                             ,l_amb_context_code
109164                                                                             ,l_entity_code
109165                                                                             ,l_event_class_code
109166                                                                            )
109167                                     ,p_token_3                 => 'OWNER'
109168                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
109169                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
109170                                                                           ,p_lookup_code    => l_component_type_code
109171                                                                          )
109172                                     ,p_token_4                 => 'PRODUCT_NAME'
109173                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
109174                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
109175                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
109176                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
109177                                     ,p_ae_header_id            =>  NULL
109178                                        );
109179 
109180         IF (C_LEVEL_ERROR>= g_log_level) THEN
109181                  trace
109182                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
109183                       ,p_level    => C_LEVEL_ERROR
109184                       ,p_module   => l_log_module);
109185         END IF;
109186       END IF;
109187    END IF;
109188    --
109189    --
109190    ------------------------------------------------------------------------------------------------
109191    -- 4219869 Business Flow
109192    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
109193    -- Prior Entry.  Currently, the following code is always generated.
109194    ------------------------------------------------------------------------------------------------
109195    XLA_AE_LINES_PKG.ValidateCurrentLine;
109196 
109197    ------------------------------------------------------------------------------------
109198    -- 4219869 Business Flow
109199    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
109200    ------------------------------------------------------------------------------------
109201    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
109202 
109203    ----------------------------------------------------------------------------------
109204    -- 4219869 Business Flow
109205    -- Update journal entry status -- Need to generate this within IF <condition>
109206    ----------------------------------------------------------------------------------
109207    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
109208          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
109209          ,p_balance_type_code => l_balance_type_code
109210          );
109211 
109212    -------------------------------------------------------------------------------------------
109213    -- 4262811 - Generate the Accrual Reversal lines
109214    -------------------------------------------------------------------------------------------
109215    BEGIN
109216       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
109217                               (g_array_event(p_event_id).array_value_num('header_index'));
109218       IF l_acc_rev_flag IS NULL THEN
109219          l_acc_rev_flag := 'N';
109220       END IF;
109221    EXCEPTION
109222       WHEN OTHERS THEN
109223          l_acc_rev_flag := 'N';
109224    END;
109225    --
109226    IF (l_acc_rev_flag = 'Y') THEN
109227 
109228        -- 4645092  ------------------------------------------------------------------------------
109229        -- To allow MPA report to determine if it should generate report process
109230        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
109231        ------------------------------------------------------------------------------------------
109232 
109233        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
109234        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
109235    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
109236    -- call ADRs
109237    -- Bug 4922099
109238    --
109239    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
109240         (NVL(l_actual_upg_option, 'N') = 'O') OR
109241         (NVL(l_enc_upg_option, 'N') = 'O')
109242       )
109243    THEN
109244    NULL;
109245    --
109246    --
109247    
109248   l_ccid := AcctDerRule_4(
109249            p_application_id           => p_application_id
109250          , p_ae_header_id             => l_ae_header_id 
109251 , p_source_4 => p_source_4
109252          , x_transaction_coa_id       => l_adr_transaction_coa_id
109253          , x_accounting_coa_id        => l_adr_accounting_coa_id
109254          , x_value_type_code          => l_adr_value_type_code
109255          , p_side                     => 'NA'
109256    );
109257 
109258    xla_ae_lines_pkg.set_ccid(
109259     p_code_combination_id          => l_ccid
109260   , p_value_type_code              => l_adr_value_type_code
109261   , p_transaction_coa_id           => l_adr_transaction_coa_id
109262   , p_accounting_coa_id            => l_adr_accounting_coa_id
109263   , p_adr_code                     => 'CST_DEFAULT'
109264   , p_adr_type_code                => 'S'
109265   , p_component_type               => l_component_type
109266   , p_component_code               => l_component_code
109267   , p_component_type_code          => l_component_type_code
109268   , p_component_appl_id            => l_component_appl_id
109269   , p_amb_context_code             => l_amb_context_code
109270   , p_side                         => 'NA'
109271   );
109272 
109273 
109274    --
109275    --
109276    END IF;
109277 
109278        --
109279        -- Update the line information that should be overwritten
109280        --
109281        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
109282                                          p_header_num   => 1);
109283        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
109284 
109285        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
109286 
109287        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
109288           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
109289        END IF;
109290 
109291       --
109292       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
109293       --
109294       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
109295           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
109296       ELSE
109297           ---------------------------------------------------------------------------------------------------
109298           -- 4262811a Switch Sign
109299           ---------------------------------------------------------------------------------------------------
109300           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
109301           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
109302                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
109303           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
109304                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
109305           -- 5132302
109306           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
109307                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
109308 
109309       END IF;
109310 
109311       -- 4955764
109312       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
109313       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
109314 
109315 
109316       XLA_AE_LINES_PKG.ValidateCurrentLine;
109317       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
109318 
109319       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
109320                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
109321                ,p_balance_type_code => l_balance_type_code);
109322 
109323    END IF;
109324 
109325    -----------------------------------------------------------------------------------------
109326    -- 4262811 Multiperiod Accounting
109327    -----------------------------------------------------------------------------------------
109328      -- No MPA option is assigned.
109329 
109330 
109331 END IF;
109332 END IF;
109333 --
109334 
109335 --
109336 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
109337    trace
109338       (p_msg      => 'END of AcctLineType_198'
109339       ,p_level    => C_LEVEL_PROCEDURE
109340       ,p_module   => l_log_module);
109341 END IF;
109342 --
109343 EXCEPTION
109344   WHEN xla_exceptions_pkg.application_exception THEN
109345       RAISE;
109346   WHEN OTHERS THEN
109347        xla_exceptions_pkg.raise_message
109348            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_198');
109349 END AcctLineType_198;
109350 --
109351 
109352 ---------------------------------------
109353 --
109354 -- PRIVATE FUNCTION
109355 --         AcctLineType_199
109356 --
109357 ---------------------------------------
109358 PROCEDURE AcctLineType_199 (
109359   p_application_id        IN NUMBER
109360  ,p_event_id              IN NUMBER
109361  ,p_calculate_acctd_flag  IN VARCHAR2
109362  ,p_calculate_g_l_flag    IN VARCHAR2
109363  ,p_actual_flag           IN OUT VARCHAR2
109364  ,p_balance_type_code     OUT VARCHAR2
109365  ,p_gain_or_loss_ref      OUT VARCHAR2
109366  
109367 --Cost Management Default Account
109368  , p_source_4            IN NUMBER
109369 --DISTRIBUTION_IDENTIFIER
109370  , p_source_11            IN NUMBER
109371 --Distribution Type
109372  , p_source_12            IN VARCHAR2
109373  , p_source_12_meaning    IN VARCHAR2
109374 --Entered Currency Code
109375  , p_source_15            IN VARCHAR2
109376 --Entered Amount
109377  , p_source_18            IN NUMBER
109378 --Currency Conversion Date
109379  , p_source_19            IN DATE
109380 --Currency Conversion Rate
109381  , p_source_20            IN NUMBER
109382 --Currency Conversion Type
109383  , p_source_21            IN VARCHAR2
109384 --Accounted Amount
109385  , p_source_22            IN NUMBER
109386 --Accounting Line Type
109387  , p_source_24            IN NUMBER
109388 )
109389 IS
109390 
109391 l_component_type              VARCHAR2(80);
109392 l_component_code              VARCHAR2(30);
109393 l_component_type_code         VARCHAR2(1);
109394 l_component_appl_id           INTEGER;
109395 l_amb_context_code            VARCHAR2(30);
109396 l_entity_code                 VARCHAR2(30);
109397 l_event_class_code            VARCHAR2(30);
109398 l_ae_header_id                NUMBER;
109399 l_event_type_code             VARCHAR2(30);
109400 l_line_definition_code        VARCHAR2(30);
109401 l_line_definition_owner_code  VARCHAR2(1);
109402 --
109403 -- adr variables
109404 l_segment                     VARCHAR2(30);
109405 l_ccid                        NUMBER;
109406 l_adr_transaction_coa_id      NUMBER;
109407 l_adr_accounting_coa_id       NUMBER;
109408 l_adr_flexfield_segment_code  VARCHAR2(30);
109409 l_adr_flex_value_set_id       NUMBER;
109410 l_adr_value_type_code         VARCHAR2(30);
109411 l_adr_value_combination_id    NUMBER;
109412 l_adr_value_segment_code      VARCHAR2(30);
109413 
109414 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
109415 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
109416 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
109417 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
109418 
109419 -- 4262811 Variables ------------------------------------------------------------------------------------------
109420 l_entered_amt_idx             NUMBER;
109421 l_accted_amt_idx              NUMBER;
109422 l_acc_rev_flag                VARCHAR2(1);
109423 l_accrual_line_num            NUMBER;
109424 l_tmp_amt                     NUMBER;
109425 l_acc_rev_natural_side_code   VARCHAR2(1);
109426 
109427 l_num_entries                 NUMBER;
109428 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
109429 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
109430 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
109431 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
109432 l_recog_line_1                NUMBER;
109433 l_recog_line_2                NUMBER;
109434 
109435 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
109436 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
109437 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
109438 
109439 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
109440 
109441 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
109442 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
109443 
109444 ---------------------------------------------------------------------------------------------------------------
109445 
109446 
109447 --
109448 -- bulk performance
109449 --
109450 l_balance_type_code           VARCHAR2(1);
109451 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
109452 l_log_module                  VARCHAR2(240);
109453 
109454 --
109455 -- Upgrade strategy
109456 --
109457 l_actual_upg_option           VARCHAR2(1);
109458 l_enc_upg_option           VARCHAR2(1);
109459 
109460 --
109461 BEGIN
109462 --
109463 IF g_log_enabled THEN
109464       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_199';
109465 END IF;
109466 --
109467 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
109468 
109469       trace
109470          (p_msg      => 'BEGIN of AcctLineType_199'
109471          ,p_level    => C_LEVEL_PROCEDURE
109472          ,p_module   => l_log_module);
109473 
109474 END IF;
109475 --
109476 l_component_type             := 'AMB_JLT';
109477 l_component_code             := 'OFFSET';
109478 l_component_type_code        := 'S';
109479 l_component_appl_id          :=  707;
109480 l_amb_context_code           := 'DEFAULT';
109481 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
109482 l_event_class_code           := 'INT_ORDER_TO_EXP';
109483 l_event_type_code            := 'INT_ORDER_TO_EXP_ALL';
109484 l_line_definition_owner_code := 'S';
109485 l_line_definition_code       := 'INT_ORDER_TO_EXP';
109486 --
109487 l_balance_type_code          := 'A';
109488 l_segment                     := NULL;
109489 l_ccid                        := NULL;
109490 l_adr_transaction_coa_id      := NULL;
109491 l_adr_accounting_coa_id       := NULL;
109492 l_adr_flexfield_segment_code  := NULL;
109493 l_adr_flex_value_set_id       := NULL;
109494 l_adr_value_type_code         := NULL;
109495 l_adr_value_combination_id    := NULL;
109496 l_adr_value_segment_code      := NULL;
109497 
109498 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
109499 l_bflow_class_code           := '';    -- 4219869 Business Flow
109500 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
109501 l_budgetary_control_flag     := 'N';
109502 
109503 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
109504 l_bflow_applied_to_amt       := NULL; -- 5132302
109505 l_entered_amt_idx            := NULL;          -- 4262811
109506 l_accted_amt_idx             := NULL;          -- 4262811
109507 l_acc_rev_flag               := NULL;          -- 4262811
109508 l_accrual_line_num           := NULL;          -- 4262811
109509 l_tmp_amt                    := NULL;          -- 4262811
109510 --
109511  
109512 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
109513     l_balance_type_code <> 'B' THEN
109514 IF NVL(p_source_24,9E125) =  2
109515  THEN 
109516 
109517    --
109518    XLA_AE_LINES_PKG.SetNewLine;
109519 
109520    p_balance_type_code          := l_balance_type_code;
109521    -- set the flag so later we will know whether the gain loss line needs to be created
109522    
109523    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
109524      p_actual_flag :='A';
109525    END IF;
109526 
109527    --
109528    -- bulk performance
109529    --
109530    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
109531                                       p_header_num   => 0); -- 4262811
109532    --
109533    -- set accounting line options
109534    --
109535    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
109536            p_natural_side_code          => 'D'
109537          , p_gain_or_loss_flag          => 'N'
109538          , p_gl_transfer_mode_code      => 'S'
109539          , p_acct_entry_type_code       => 'A'
109540          , p_switch_side_flag           => 'Y'
109541          , p_merge_duplicate_code       => 'N'
109542          );
109543    --
109544    l_acc_rev_natural_side_code := 'C';  -- 4262811
109545    -- 
109546    --
109547    -- set accounting line type info
109548    --
109549    xla_ae_lines_pkg.SetAcctLineType
109550       (p_component_type             => l_component_type
109551       ,p_event_type_code            => l_event_type_code
109552       ,p_line_definition_owner_code => l_line_definition_owner_code
109553       ,p_line_definition_code       => l_line_definition_code
109554       ,p_accounting_line_code       => l_component_code
109555       ,p_accounting_line_type_code  => l_component_type_code
109556       ,p_accounting_line_appl_id    => l_component_appl_id
109557       ,p_amb_context_code           => l_amb_context_code
109558       ,p_entity_code                => l_entity_code
109559       ,p_event_class_code           => l_event_class_code);
109560    --
109561    -- set accounting class
109562    --
109563    xla_ae_lines_pkg.SetAcctClass(
109564            p_accounting_class_code  => 'OFFSET'
109565          , p_ae_header_id           => l_ae_header_id
109566          );
109567 
109568    --
109569    -- set rounding class
109570    --
109571    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
109572                       'OFFSET';
109573 
109574    --
109575    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
109576    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
109577    --
109578    -- bulk performance
109579    --
109580    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
109581 
109582    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
109583       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
109584 
109585    -- 4955764
109586    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
109587       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
109588 
109589    -- 4458381 Public Sector Enh
109590    
109591    --
109592    -- set accounting attributes for the line type
109593    --
109594    l_entered_amt_idx := 3;
109595    l_accted_amt_idx  := 8;
109596    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
109597    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
109598    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
109599    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
109600    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
109601    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
109602    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
109603    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
109604    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
109605    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
109606    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
109607    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
109608    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
109609    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
109610    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
109611    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
109612    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
109613 
109614    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
109615    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
109616 
109617    ---------------------------------------------------------------------------------------------------------------
109618    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
109619    ---------------------------------------------------------------------------------------------------------------
109620    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
109621 
109622    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
109623    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
109624 
109625    IF xla_accounting_cache_pkg.GetValueChar
109626          (p_source_code         => 'LEDGER_CATEGORY_CODE'
109627          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
109628    AND l_bflow_method_code = 'PRIOR_ENTRY'
109629 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
109630    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
109631          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
109632        )
109633    THEN
109634          xla_ae_lines_pkg.BflowUpgEntry
109635            (p_business_method_code    => l_bflow_method_code
109636            ,p_business_class_code     => l_bflow_class_code
109637            ,p_balance_type            => l_balance_type_code);
109638    ELSE
109639       NULL;
109640 -- No business flow processing for business flow method of NONE.
109641    END IF;
109642 
109643    --
109644    -- call analytical criteria
109645    --
109646    
109647    --
109648    -- call description
109649    --
109650    -- No description or it is inherited.
109651    --
109652    -- call ADRs
109653    -- Bug 4922099
109654    --
109655    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
109656         (NVL(l_actual_upg_option, 'N') = 'O') OR
109657         (NVL(l_enc_upg_option, 'N') = 'O')
109658       )
109659    THEN
109660    NULL;
109661    --
109662    --
109663    
109664   l_ccid := AcctDerRule_4(
109665            p_application_id           => p_application_id
109666          , p_ae_header_id             => l_ae_header_id 
109667 , p_source_4 => p_source_4
109668          , x_transaction_coa_id       => l_adr_transaction_coa_id
109669          , x_accounting_coa_id        => l_adr_accounting_coa_id
109670          , x_value_type_code          => l_adr_value_type_code
109671          , p_side                     => 'NA'
109672    );
109673 
109674    xla_ae_lines_pkg.set_ccid(
109675     p_code_combination_id          => l_ccid
109676   , p_value_type_code              => l_adr_value_type_code
109677   , p_transaction_coa_id           => l_adr_transaction_coa_id
109678   , p_accounting_coa_id            => l_adr_accounting_coa_id
109679   , p_adr_code                     => 'CST_DEFAULT'
109680   , p_adr_type_code                => 'S'
109681   , p_component_type               => l_component_type
109682   , p_component_code               => l_component_code
109683   , p_component_type_code          => l_component_type_code
109684   , p_component_appl_id            => l_component_appl_id
109685   , p_amb_context_code             => l_amb_context_code
109686   , p_side                         => 'NA'
109687   );
109688 
109689 
109690    --
109691    --
109692    END IF;
109693    --
109694    -- Bug 4922099
109695    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
109696           (NVL(l_enc_upg_option, 'N') = 'O')
109697         ) AND
109698         (l_bflow_method_code = 'PRIOR_ENTRY')
109699       )
109700    THEN
109701       IF
109702       --
109703       1 = 2
109704       --
109705       THEN
109706       xla_accounting_err_pkg.build_message
109707                                     (p_appli_s_name            => 'XLA'
109708                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
109709                                     ,p_token_1                 => 'LINE_NUMBER'
109710                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
109711                                     ,p_token_2                 => 'LINE_TYPE_NAME'
109712                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
109713                                                                              l_component_type
109714                                                                             ,l_component_code
109715                                                                             ,l_component_type_code
109716                                                                             ,l_component_appl_id
109717                                                                             ,l_amb_context_code
109718                                                                             ,l_entity_code
109719                                                                             ,l_event_class_code
109720                                                                            )
109721                                     ,p_token_3                 => 'OWNER'
109722                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
109723                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
109724                                                                           ,p_lookup_code    => l_component_type_code
109725                                                                          )
109726                                     ,p_token_4                 => 'PRODUCT_NAME'
109727                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
109728                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
109729                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
109730                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
109731                                     ,p_ae_header_id            =>  NULL
109732                                        );
109733 
109734         IF (C_LEVEL_ERROR>= g_log_level) THEN
109735                  trace
109736                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
109737                       ,p_level    => C_LEVEL_ERROR
109738                       ,p_module   => l_log_module);
109739         END IF;
109740       END IF;
109741    END IF;
109742    --
109743    --
109744    ------------------------------------------------------------------------------------------------
109745    -- 4219869 Business Flow
109746    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
109747    -- Prior Entry.  Currently, the following code is always generated.
109748    ------------------------------------------------------------------------------------------------
109749    XLA_AE_LINES_PKG.ValidateCurrentLine;
109750 
109751    ------------------------------------------------------------------------------------
109752    -- 4219869 Business Flow
109753    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
109754    ------------------------------------------------------------------------------------
109755    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
109756 
109757    ----------------------------------------------------------------------------------
109758    -- 4219869 Business Flow
109759    -- Update journal entry status -- Need to generate this within IF <condition>
109760    ----------------------------------------------------------------------------------
109761    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
109762          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
109763          ,p_balance_type_code => l_balance_type_code
109764          );
109765 
109766    -------------------------------------------------------------------------------------------
109767    -- 4262811 - Generate the Accrual Reversal lines
109768    -------------------------------------------------------------------------------------------
109769    BEGIN
109770       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
109771                               (g_array_event(p_event_id).array_value_num('header_index'));
109772       IF l_acc_rev_flag IS NULL THEN
109773          l_acc_rev_flag := 'N';
109774       END IF;
109775    EXCEPTION
109776       WHEN OTHERS THEN
109777          l_acc_rev_flag := 'N';
109778    END;
109779    --
109780    IF (l_acc_rev_flag = 'Y') THEN
109781 
109782        -- 4645092  ------------------------------------------------------------------------------
109783        -- To allow MPA report to determine if it should generate report process
109784        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
109785        ------------------------------------------------------------------------------------------
109786 
109787        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
109788        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
109789    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
109790    -- call ADRs
109791    -- Bug 4922099
109792    --
109793    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
109794         (NVL(l_actual_upg_option, 'N') = 'O') OR
109795         (NVL(l_enc_upg_option, 'N') = 'O')
109796       )
109797    THEN
109798    NULL;
109799    --
109800    --
109801    
109802   l_ccid := AcctDerRule_4(
109803            p_application_id           => p_application_id
109804          , p_ae_header_id             => l_ae_header_id 
109805 , p_source_4 => p_source_4
109806          , x_transaction_coa_id       => l_adr_transaction_coa_id
109807          , x_accounting_coa_id        => l_adr_accounting_coa_id
109808          , x_value_type_code          => l_adr_value_type_code
109809          , p_side                     => 'NA'
109810    );
109811 
109812    xla_ae_lines_pkg.set_ccid(
109813     p_code_combination_id          => l_ccid
109814   , p_value_type_code              => l_adr_value_type_code
109815   , p_transaction_coa_id           => l_adr_transaction_coa_id
109816   , p_accounting_coa_id            => l_adr_accounting_coa_id
109817   , p_adr_code                     => 'CST_DEFAULT'
109818   , p_adr_type_code                => 'S'
109819   , p_component_type               => l_component_type
109820   , p_component_code               => l_component_code
109821   , p_component_type_code          => l_component_type_code
109822   , p_component_appl_id            => l_component_appl_id
109823   , p_amb_context_code             => l_amb_context_code
109824   , p_side                         => 'NA'
109825   );
109826 
109827 
109828    --
109829    --
109830    END IF;
109831 
109832        --
109833        -- Update the line information that should be overwritten
109834        --
109835        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
109836                                          p_header_num   => 1);
109837        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
109838 
109839        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
109840 
109841        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
109842           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
109843        END IF;
109844 
109845       --
109846       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
109847       --
109848       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
109849           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
109850       ELSE
109851           ---------------------------------------------------------------------------------------------------
109852           -- 4262811a Switch Sign
109853           ---------------------------------------------------------------------------------------------------
109854           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
109855           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
109856                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
109857           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
109858                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
109859           -- 5132302
109860           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
109861                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
109862 
109863       END IF;
109864 
109865       -- 4955764
109866       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
109867       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
109868 
109869 
109870       XLA_AE_LINES_PKG.ValidateCurrentLine;
109871       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
109872 
109873       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
109874                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
109875                ,p_balance_type_code => l_balance_type_code);
109876 
109877    END IF;
109878 
109879    -----------------------------------------------------------------------------------------
109880    -- 4262811 Multiperiod Accounting
109881    -----------------------------------------------------------------------------------------
109882      -- No MPA option is assigned.
109883 
109884 
109885 END IF;
109886 END IF;
109887 --
109888 
109889 --
109890 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
109891    trace
109892       (p_msg      => 'END of AcctLineType_199'
109893       ,p_level    => C_LEVEL_PROCEDURE
109894       ,p_module   => l_log_module);
109895 END IF;
109896 --
109897 EXCEPTION
109898   WHEN xla_exceptions_pkg.application_exception THEN
109899       RAISE;
109900   WHEN OTHERS THEN
109901        xla_exceptions_pkg.raise_message
109902            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_199');
109903 END AcctLineType_199;
109904 --
109905 
109906 ---------------------------------------
109907 --
109908 -- PRIVATE FUNCTION
109909 --         AcctLineType_200
109910 --
109911 ---------------------------------------
109912 PROCEDURE AcctLineType_200 (
109913   p_application_id        IN NUMBER
109914  ,p_event_id              IN NUMBER
109915  ,p_calculate_acctd_flag  IN VARCHAR2
109916  ,p_calculate_g_l_flag    IN VARCHAR2
109917  ,p_actual_flag           IN OUT VARCHAR2
109918  ,p_balance_type_code     OUT VARCHAR2
109919  ,p_gain_or_loss_ref      OUT VARCHAR2
109920  
109921 --Cost Management Default Account
109922  , p_source_4            IN NUMBER
109923 --DISTRIBUTION_IDENTIFIER
109924  , p_source_11            IN NUMBER
109925 --Distribution Type
109926  , p_source_12            IN VARCHAR2
109927  , p_source_12_meaning    IN VARCHAR2
109928 --Entered Currency Code
109929  , p_source_15            IN VARCHAR2
109930 --Entered Amount
109931  , p_source_18            IN NUMBER
109932 --Currency Conversion Date
109933  , p_source_19            IN DATE
109934 --Currency Conversion Rate
109935  , p_source_20            IN NUMBER
109936 --Currency Conversion Type
109937  , p_source_21            IN VARCHAR2
109938 --Accounted Amount
109939  , p_source_22            IN NUMBER
109940 --Accounting Line Type
109941  , p_source_24            IN NUMBER
109942 )
109943 IS
109944 
109945 l_component_type              VARCHAR2(80);
109946 l_component_code              VARCHAR2(30);
109947 l_component_type_code         VARCHAR2(1);
109948 l_component_appl_id           INTEGER;
109949 l_amb_context_code            VARCHAR2(30);
109950 l_entity_code                 VARCHAR2(30);
109951 l_event_class_code            VARCHAR2(30);
109952 l_ae_header_id                NUMBER;
109953 l_event_type_code             VARCHAR2(30);
109954 l_line_definition_code        VARCHAR2(30);
109955 l_line_definition_owner_code  VARCHAR2(1);
109956 --
109957 -- adr variables
109958 l_segment                     VARCHAR2(30);
109959 l_ccid                        NUMBER;
109960 l_adr_transaction_coa_id      NUMBER;
109961 l_adr_accounting_coa_id       NUMBER;
109962 l_adr_flexfield_segment_code  VARCHAR2(30);
109963 l_adr_flex_value_set_id       NUMBER;
109964 l_adr_value_type_code         VARCHAR2(30);
109965 l_adr_value_combination_id    NUMBER;
109966 l_adr_value_segment_code      VARCHAR2(30);
109967 
109968 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
109969 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
109970 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
109971 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
109972 
109973 -- 4262811 Variables ------------------------------------------------------------------------------------------
109974 l_entered_amt_idx             NUMBER;
109975 l_accted_amt_idx              NUMBER;
109976 l_acc_rev_flag                VARCHAR2(1);
109977 l_accrual_line_num            NUMBER;
109978 l_tmp_amt                     NUMBER;
109979 l_acc_rev_natural_side_code   VARCHAR2(1);
109980 
109981 l_num_entries                 NUMBER;
109982 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
109983 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
109984 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
109985 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
109986 l_recog_line_1                NUMBER;
109987 l_recog_line_2                NUMBER;
109988 
109989 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
109990 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
109991 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
109992 
109993 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
109994 
109995 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
109996 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
109997 
109998 ---------------------------------------------------------------------------------------------------------------
109999 
110000 
110001 --
110002 -- bulk performance
110003 --
110004 l_balance_type_code           VARCHAR2(1);
110005 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
110006 l_log_module                  VARCHAR2(240);
110007 
110008 --
110009 -- Upgrade strategy
110010 --
110011 l_actual_upg_option           VARCHAR2(1);
110012 l_enc_upg_option           VARCHAR2(1);
110013 
110014 --
110015 BEGIN
110016 --
110017 IF g_log_enabled THEN
110018       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_200';
110019 END IF;
110020 --
110021 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
110022 
110023       trace
110024          (p_msg      => 'BEGIN of AcctLineType_200'
110025          ,p_level    => C_LEVEL_PROCEDURE
110026          ,p_module   => l_log_module);
110027 
110028 END IF;
110029 --
110030 l_component_type             := 'AMB_JLT';
110031 l_component_code             := 'OFFSET';
110032 l_component_type_code        := 'S';
110033 l_component_appl_id          :=  707;
110034 l_amb_context_code           := 'DEFAULT';
110035 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
110036 l_event_class_code           := 'MISC_ISSUE_RCPT';
110037 l_event_type_code            := 'MISC_ISSUE_RCPT_ALL';
110038 l_line_definition_owner_code := 'S';
110039 l_line_definition_code       := 'MISC_ISSUE_RCPT';
110040 --
110041 l_balance_type_code          := 'A';
110042 l_segment                     := NULL;
110043 l_ccid                        := NULL;
110044 l_adr_transaction_coa_id      := NULL;
110045 l_adr_accounting_coa_id       := NULL;
110046 l_adr_flexfield_segment_code  := NULL;
110047 l_adr_flex_value_set_id       := NULL;
110048 l_adr_value_type_code         := NULL;
110049 l_adr_value_combination_id    := NULL;
110050 l_adr_value_segment_code      := NULL;
110051 
110052 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
110053 l_bflow_class_code           := '';    -- 4219869 Business Flow
110054 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
110055 l_budgetary_control_flag     := 'N';
110056 
110057 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
110058 l_bflow_applied_to_amt       := NULL; -- 5132302
110059 l_entered_amt_idx            := NULL;          -- 4262811
110060 l_accted_amt_idx             := NULL;          -- 4262811
110061 l_acc_rev_flag               := NULL;          -- 4262811
110062 l_accrual_line_num           := NULL;          -- 4262811
110063 l_tmp_amt                    := NULL;          -- 4262811
110064 --
110065  
110066 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
110067     l_balance_type_code <> 'B' THEN
110068 IF NVL(p_source_24,9E125) =  2
110069  THEN 
110070 
110071    --
110072    XLA_AE_LINES_PKG.SetNewLine;
110073 
110074    p_balance_type_code          := l_balance_type_code;
110075    -- set the flag so later we will know whether the gain loss line needs to be created
110076    
110077    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
110078      p_actual_flag :='A';
110079    END IF;
110080 
110081    --
110082    -- bulk performance
110083    --
110084    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
110085                                       p_header_num   => 0); -- 4262811
110086    --
110087    -- set accounting line options
110088    --
110089    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
110090            p_natural_side_code          => 'D'
110091          , p_gain_or_loss_flag          => 'N'
110092          , p_gl_transfer_mode_code      => 'S'
110093          , p_acct_entry_type_code       => 'A'
110094          , p_switch_side_flag           => 'Y'
110095          , p_merge_duplicate_code       => 'N'
110096          );
110097    --
110098    l_acc_rev_natural_side_code := 'C';  -- 4262811
110099    -- 
110100    --
110101    -- set accounting line type info
110102    --
110103    xla_ae_lines_pkg.SetAcctLineType
110104       (p_component_type             => l_component_type
110105       ,p_event_type_code            => l_event_type_code
110106       ,p_line_definition_owner_code => l_line_definition_owner_code
110107       ,p_line_definition_code       => l_line_definition_code
110108       ,p_accounting_line_code       => l_component_code
110109       ,p_accounting_line_type_code  => l_component_type_code
110110       ,p_accounting_line_appl_id    => l_component_appl_id
110111       ,p_amb_context_code           => l_amb_context_code
110112       ,p_entity_code                => l_entity_code
110113       ,p_event_class_code           => l_event_class_code);
110114    --
110115    -- set accounting class
110116    --
110117    xla_ae_lines_pkg.SetAcctClass(
110118            p_accounting_class_code  => 'OFFSET'
110119          , p_ae_header_id           => l_ae_header_id
110120          );
110121 
110122    --
110123    -- set rounding class
110124    --
110125    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
110126                       'OFFSET';
110127 
110128    --
110129    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
110130    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
110131    --
110132    -- bulk performance
110133    --
110134    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
110135 
110136    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
110137       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
110138 
110139    -- 4955764
110140    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
110141       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
110142 
110143    -- 4458381 Public Sector Enh
110144    
110145    --
110146    -- set accounting attributes for the line type
110147    --
110148    l_entered_amt_idx := 3;
110149    l_accted_amt_idx  := 8;
110150    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
110151    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
110152    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
110153    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
110154    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
110155    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
110156    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
110157    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
110158    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
110159    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
110160    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
110161    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
110162    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
110163    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
110164    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
110165    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
110166    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
110167 
110168    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
110169    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
110170 
110171    ---------------------------------------------------------------------------------------------------------------
110172    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
110173    ---------------------------------------------------------------------------------------------------------------
110174    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
110175 
110176    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
110177    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
110178 
110179    IF xla_accounting_cache_pkg.GetValueChar
110180          (p_source_code         => 'LEDGER_CATEGORY_CODE'
110181          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
110182    AND l_bflow_method_code = 'PRIOR_ENTRY'
110183 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
110184    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
110185          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
110186        )
110187    THEN
110188          xla_ae_lines_pkg.BflowUpgEntry
110189            (p_business_method_code    => l_bflow_method_code
110190            ,p_business_class_code     => l_bflow_class_code
110191            ,p_balance_type            => l_balance_type_code);
110192    ELSE
110193       NULL;
110194 -- No business flow processing for business flow method of NONE.
110195    END IF;
110196 
110197    --
110198    -- call analytical criteria
110199    --
110200    
110201    --
110202    -- call description
110203    --
110204    -- No description or it is inherited.
110205    --
110206    -- call ADRs
110207    -- Bug 4922099
110208    --
110209    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
110210         (NVL(l_actual_upg_option, 'N') = 'O') OR
110211         (NVL(l_enc_upg_option, 'N') = 'O')
110212       )
110213    THEN
110214    NULL;
110215    --
110216    --
110217    
110218   l_ccid := AcctDerRule_4(
110219            p_application_id           => p_application_id
110220          , p_ae_header_id             => l_ae_header_id 
110221 , p_source_4 => p_source_4
110222          , x_transaction_coa_id       => l_adr_transaction_coa_id
110223          , x_accounting_coa_id        => l_adr_accounting_coa_id
110224          , x_value_type_code          => l_adr_value_type_code
110225          , p_side                     => 'NA'
110226    );
110227 
110228    xla_ae_lines_pkg.set_ccid(
110229     p_code_combination_id          => l_ccid
110230   , p_value_type_code              => l_adr_value_type_code
110231   , p_transaction_coa_id           => l_adr_transaction_coa_id
110232   , p_accounting_coa_id            => l_adr_accounting_coa_id
110233   , p_adr_code                     => 'CST_DEFAULT'
110234   , p_adr_type_code                => 'S'
110235   , p_component_type               => l_component_type
110236   , p_component_code               => l_component_code
110237   , p_component_type_code          => l_component_type_code
110238   , p_component_appl_id            => l_component_appl_id
110239   , p_amb_context_code             => l_amb_context_code
110240   , p_side                         => 'NA'
110241   );
110242 
110243 
110244    --
110245    --
110246    END IF;
110247    --
110248    -- Bug 4922099
110249    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
110250           (NVL(l_enc_upg_option, 'N') = 'O')
110251         ) AND
110252         (l_bflow_method_code = 'PRIOR_ENTRY')
110253       )
110254    THEN
110255       IF
110256       --
110257       1 = 2
110258       --
110259       THEN
110260       xla_accounting_err_pkg.build_message
110261                                     (p_appli_s_name            => 'XLA'
110262                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
110263                                     ,p_token_1                 => 'LINE_NUMBER'
110264                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
110265                                     ,p_token_2                 => 'LINE_TYPE_NAME'
110266                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
110267                                                                              l_component_type
110268                                                                             ,l_component_code
110269                                                                             ,l_component_type_code
110270                                                                             ,l_component_appl_id
110271                                                                             ,l_amb_context_code
110272                                                                             ,l_entity_code
110273                                                                             ,l_event_class_code
110274                                                                            )
110275                                     ,p_token_3                 => 'OWNER'
110276                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
110277                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
110278                                                                           ,p_lookup_code    => l_component_type_code
110279                                                                          )
110280                                     ,p_token_4                 => 'PRODUCT_NAME'
110281                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
110282                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
110283                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
110284                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
110285                                     ,p_ae_header_id            =>  NULL
110286                                        );
110287 
110288         IF (C_LEVEL_ERROR>= g_log_level) THEN
110289                  trace
110290                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
110291                       ,p_level    => C_LEVEL_ERROR
110292                       ,p_module   => l_log_module);
110293         END IF;
110294       END IF;
110295    END IF;
110296    --
110297    --
110298    ------------------------------------------------------------------------------------------------
110299    -- 4219869 Business Flow
110300    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
110301    -- Prior Entry.  Currently, the following code is always generated.
110302    ------------------------------------------------------------------------------------------------
110303    XLA_AE_LINES_PKG.ValidateCurrentLine;
110304 
110305    ------------------------------------------------------------------------------------
110306    -- 4219869 Business Flow
110307    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
110308    ------------------------------------------------------------------------------------
110309    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
110310 
110311    ----------------------------------------------------------------------------------
110312    -- 4219869 Business Flow
110313    -- Update journal entry status -- Need to generate this within IF <condition>
110314    ----------------------------------------------------------------------------------
110315    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
110316          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
110317          ,p_balance_type_code => l_balance_type_code
110318          );
110319 
110320    -------------------------------------------------------------------------------------------
110321    -- 4262811 - Generate the Accrual Reversal lines
110322    -------------------------------------------------------------------------------------------
110323    BEGIN
110324       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
110325                               (g_array_event(p_event_id).array_value_num('header_index'));
110326       IF l_acc_rev_flag IS NULL THEN
110327          l_acc_rev_flag := 'N';
110328       END IF;
110329    EXCEPTION
110330       WHEN OTHERS THEN
110331          l_acc_rev_flag := 'N';
110332    END;
110333    --
110334    IF (l_acc_rev_flag = 'Y') THEN
110335 
110336        -- 4645092  ------------------------------------------------------------------------------
110337        -- To allow MPA report to determine if it should generate report process
110338        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
110339        ------------------------------------------------------------------------------------------
110340 
110341        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
110342        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
110343    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
110344    -- call ADRs
110345    -- Bug 4922099
110346    --
110347    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
110348         (NVL(l_actual_upg_option, 'N') = 'O') OR
110349         (NVL(l_enc_upg_option, 'N') = 'O')
110350       )
110351    THEN
110352    NULL;
110353    --
110354    --
110355    
110356   l_ccid := AcctDerRule_4(
110357            p_application_id           => p_application_id
110358          , p_ae_header_id             => l_ae_header_id 
110359 , p_source_4 => p_source_4
110360          , x_transaction_coa_id       => l_adr_transaction_coa_id
110361          , x_accounting_coa_id        => l_adr_accounting_coa_id
110362          , x_value_type_code          => l_adr_value_type_code
110363          , p_side                     => 'NA'
110364    );
110365 
110366    xla_ae_lines_pkg.set_ccid(
110367     p_code_combination_id          => l_ccid
110368   , p_value_type_code              => l_adr_value_type_code
110369   , p_transaction_coa_id           => l_adr_transaction_coa_id
110370   , p_accounting_coa_id            => l_adr_accounting_coa_id
110371   , p_adr_code                     => 'CST_DEFAULT'
110372   , p_adr_type_code                => 'S'
110373   , p_component_type               => l_component_type
110374   , p_component_code               => l_component_code
110375   , p_component_type_code          => l_component_type_code
110376   , p_component_appl_id            => l_component_appl_id
110377   , p_amb_context_code             => l_amb_context_code
110378   , p_side                         => 'NA'
110379   );
110380 
110381 
110382    --
110383    --
110384    END IF;
110385 
110386        --
110387        -- Update the line information that should be overwritten
110388        --
110389        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
110390                                          p_header_num   => 1);
110391        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
110392 
110393        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
110394 
110395        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
110396           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
110397        END IF;
110398 
110399       --
110400       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
110401       --
110402       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
110403           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
110404       ELSE
110405           ---------------------------------------------------------------------------------------------------
110406           -- 4262811a Switch Sign
110407           ---------------------------------------------------------------------------------------------------
110408           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
110409           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
110410                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
110411           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
110412                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
110413           -- 5132302
110414           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
110415                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
110416 
110417       END IF;
110418 
110419       -- 4955764
110420       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
110421       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
110422 
110423 
110424       XLA_AE_LINES_PKG.ValidateCurrentLine;
110425       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
110426 
110427       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
110428                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
110429                ,p_balance_type_code => l_balance_type_code);
110430 
110431    END IF;
110432 
110433    -----------------------------------------------------------------------------------------
110434    -- 4262811 Multiperiod Accounting
110435    -----------------------------------------------------------------------------------------
110436      -- No MPA option is assigned.
110437 
110438 
110439 END IF;
110440 END IF;
110441 --
110442 
110443 --
110444 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
110445    trace
110446       (p_msg      => 'END of AcctLineType_200'
110447       ,p_level    => C_LEVEL_PROCEDURE
110448       ,p_module   => l_log_module);
110449 END IF;
110450 --
110451 EXCEPTION
110452   WHEN xla_exceptions_pkg.application_exception THEN
110453       RAISE;
110454   WHEN OTHERS THEN
110455        xla_exceptions_pkg.raise_message
110456            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_200');
110457 END AcctLineType_200;
110458 --
110459 
110460 ---------------------------------------
110461 --
110462 -- PRIVATE FUNCTION
110463 --         AcctLineType_201
110464 --
110465 ---------------------------------------
110466 PROCEDURE AcctLineType_201 (
110467   p_application_id        IN NUMBER
110468  ,p_event_id              IN NUMBER
110469  ,p_calculate_acctd_flag  IN VARCHAR2
110470  ,p_calculate_g_l_flag    IN VARCHAR2
110471  ,p_actual_flag           IN OUT VARCHAR2
110472  ,p_balance_type_code     OUT VARCHAR2
110473  ,p_gain_or_loss_ref      OUT VARCHAR2
110474  
110475 --Cost Management Default Account
110476  , p_source_4            IN NUMBER
110477 --DISTRIBUTION_IDENTIFIER
110478  , p_source_11            IN NUMBER
110479 --Distribution Type
110480  , p_source_12            IN VARCHAR2
110481  , p_source_12_meaning    IN VARCHAR2
110482 --Entered Currency Code
110483  , p_source_15            IN VARCHAR2
110484 --Entered Amount
110485  , p_source_18            IN NUMBER
110486 --Currency Conversion Date
110487  , p_source_19            IN DATE
110488 --Currency Conversion Rate
110489  , p_source_20            IN NUMBER
110490 --Currency Conversion Type
110491  , p_source_21            IN VARCHAR2
110492 --Accounted Amount
110493  , p_source_22            IN NUMBER
110494 --Accounting Line Type
110495  , p_source_24            IN NUMBER
110496 )
110497 IS
110498 
110499 l_component_type              VARCHAR2(80);
110500 l_component_code              VARCHAR2(30);
110501 l_component_type_code         VARCHAR2(1);
110502 l_component_appl_id           INTEGER;
110503 l_amb_context_code            VARCHAR2(30);
110504 l_entity_code                 VARCHAR2(30);
110505 l_event_class_code            VARCHAR2(30);
110506 l_ae_header_id                NUMBER;
110507 l_event_type_code             VARCHAR2(30);
110508 l_line_definition_code        VARCHAR2(30);
110509 l_line_definition_owner_code  VARCHAR2(1);
110510 --
110511 -- adr variables
110512 l_segment                     VARCHAR2(30);
110513 l_ccid                        NUMBER;
110514 l_adr_transaction_coa_id      NUMBER;
110515 l_adr_accounting_coa_id       NUMBER;
110516 l_adr_flexfield_segment_code  VARCHAR2(30);
110517 l_adr_flex_value_set_id       NUMBER;
110518 l_adr_value_type_code         VARCHAR2(30);
110519 l_adr_value_combination_id    NUMBER;
110520 l_adr_value_segment_code      VARCHAR2(30);
110521 
110522 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
110523 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
110524 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
110525 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
110526 
110527 -- 4262811 Variables ------------------------------------------------------------------------------------------
110528 l_entered_amt_idx             NUMBER;
110529 l_accted_amt_idx              NUMBER;
110530 l_acc_rev_flag                VARCHAR2(1);
110531 l_accrual_line_num            NUMBER;
110532 l_tmp_amt                     NUMBER;
110533 l_acc_rev_natural_side_code   VARCHAR2(1);
110534 
110535 l_num_entries                 NUMBER;
110536 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
110537 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
110538 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
110539 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
110540 l_recog_line_1                NUMBER;
110541 l_recog_line_2                NUMBER;
110542 
110543 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
110544 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
110545 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
110546 
110547 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
110548 
110549 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
110550 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
110551 
110552 ---------------------------------------------------------------------------------------------------------------
110553 
110554 
110555 --
110556 -- bulk performance
110557 --
110558 l_balance_type_code           VARCHAR2(1);
110559 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
110560 l_log_module                  VARCHAR2(240);
110561 
110562 --
110563 -- Upgrade strategy
110564 --
110565 l_actual_upg_option           VARCHAR2(1);
110566 l_enc_upg_option           VARCHAR2(1);
110567 
110568 --
110569 BEGIN
110570 --
110571 IF g_log_enabled THEN
110572       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_201';
110573 END IF;
110574 --
110575 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
110576 
110577       trace
110578          (p_msg      => 'BEGIN of AcctLineType_201'
110579          ,p_level    => C_LEVEL_PROCEDURE
110580          ,p_module   => l_log_module);
110581 
110582 END IF;
110583 --
110584 l_component_type             := 'AMB_JLT';
110585 l_component_code             := 'OFFSET';
110586 l_component_type_code        := 'S';
110587 l_component_appl_id          :=  707;
110588 l_amb_context_code           := 'DEFAULT';
110589 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
110590 l_event_class_code           := 'USER_DEFINE';
110591 l_event_type_code            := 'UDIR_INTERORG_RCPT_NO_TP';
110592 l_line_definition_owner_code := 'S';
110593 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_NO_TP';
110594 --
110595 l_balance_type_code          := 'A';
110596 l_segment                     := NULL;
110597 l_ccid                        := NULL;
110598 l_adr_transaction_coa_id      := NULL;
110599 l_adr_accounting_coa_id       := NULL;
110600 l_adr_flexfield_segment_code  := NULL;
110601 l_adr_flex_value_set_id       := NULL;
110602 l_adr_value_type_code         := NULL;
110603 l_adr_value_combination_id    := NULL;
110604 l_adr_value_segment_code      := NULL;
110605 
110606 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
110607 l_bflow_class_code           := '';    -- 4219869 Business Flow
110608 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
110609 l_budgetary_control_flag     := 'N';
110610 
110611 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
110612 l_bflow_applied_to_amt       := NULL; -- 5132302
110613 l_entered_amt_idx            := NULL;          -- 4262811
110614 l_accted_amt_idx             := NULL;          -- 4262811
110615 l_acc_rev_flag               := NULL;          -- 4262811
110616 l_accrual_line_num           := NULL;          -- 4262811
110617 l_tmp_amt                    := NULL;          -- 4262811
110618 --
110619  
110620 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
110621     l_balance_type_code <> 'B' THEN
110622 IF NVL(p_source_24,9E125) =  2
110623  THEN 
110624 
110625    --
110626    XLA_AE_LINES_PKG.SetNewLine;
110627 
110628    p_balance_type_code          := l_balance_type_code;
110629    -- set the flag so later we will know whether the gain loss line needs to be created
110630    
110631    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
110632      p_actual_flag :='A';
110633    END IF;
110634 
110635    --
110636    -- bulk performance
110637    --
110638    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
110639                                       p_header_num   => 0); -- 4262811
110640    --
110641    -- set accounting line options
110642    --
110643    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
110644            p_natural_side_code          => 'D'
110645          , p_gain_or_loss_flag          => 'N'
110646          , p_gl_transfer_mode_code      => 'S'
110647          , p_acct_entry_type_code       => 'A'
110648          , p_switch_side_flag           => 'Y'
110649          , p_merge_duplicate_code       => 'N'
110650          );
110651    --
110652    l_acc_rev_natural_side_code := 'C';  -- 4262811
110653    -- 
110654    --
110655    -- set accounting line type info
110656    --
110657    xla_ae_lines_pkg.SetAcctLineType
110658       (p_component_type             => l_component_type
110659       ,p_event_type_code            => l_event_type_code
110660       ,p_line_definition_owner_code => l_line_definition_owner_code
110661       ,p_line_definition_code       => l_line_definition_code
110662       ,p_accounting_line_code       => l_component_code
110663       ,p_accounting_line_type_code  => l_component_type_code
110664       ,p_accounting_line_appl_id    => l_component_appl_id
110665       ,p_amb_context_code           => l_amb_context_code
110666       ,p_entity_code                => l_entity_code
110667       ,p_event_class_code           => l_event_class_code);
110668    --
110669    -- set accounting class
110670    --
110671    xla_ae_lines_pkg.SetAcctClass(
110672            p_accounting_class_code  => 'OFFSET'
110673          , p_ae_header_id           => l_ae_header_id
110674          );
110675 
110676    --
110677    -- set rounding class
110678    --
110679    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
110680                       'OFFSET';
110681 
110682    --
110683    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
110684    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
110685    --
110686    -- bulk performance
110687    --
110688    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
110689 
110690    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
110691       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
110692 
110693    -- 4955764
110694    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
110695       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
110696 
110697    -- 4458381 Public Sector Enh
110698    
110699    --
110700    -- set accounting attributes for the line type
110701    --
110702    l_entered_amt_idx := 3;
110703    l_accted_amt_idx  := 8;
110704    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
110705    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
110706    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
110707    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
110708    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
110709    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
110710    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
110711    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
110712    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
110713    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
110714    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
110715    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
110716    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
110717    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
110718    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
110719    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
110720    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
110721 
110722    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
110723    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
110724 
110725    ---------------------------------------------------------------------------------------------------------------
110726    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
110727    ---------------------------------------------------------------------------------------------------------------
110728    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
110729 
110730    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
110731    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
110732 
110733    IF xla_accounting_cache_pkg.GetValueChar
110734          (p_source_code         => 'LEDGER_CATEGORY_CODE'
110735          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
110736    AND l_bflow_method_code = 'PRIOR_ENTRY'
110737 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
110738    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
110739          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
110740        )
110741    THEN
110742          xla_ae_lines_pkg.BflowUpgEntry
110743            (p_business_method_code    => l_bflow_method_code
110744            ,p_business_class_code     => l_bflow_class_code
110745            ,p_balance_type            => l_balance_type_code);
110746    ELSE
110747       NULL;
110748 -- No business flow processing for business flow method of NONE.
110749    END IF;
110750 
110751    --
110752    -- call analytical criteria
110753    --
110754    
110755    --
110756    -- call description
110757    --
110758    -- No description or it is inherited.
110759    --
110760    -- call ADRs
110761    -- Bug 4922099
110762    --
110763    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
110764         (NVL(l_actual_upg_option, 'N') = 'O') OR
110765         (NVL(l_enc_upg_option, 'N') = 'O')
110766       )
110767    THEN
110768    NULL;
110769    --
110770    --
110771    
110772   l_ccid := AcctDerRule_4(
110773            p_application_id           => p_application_id
110774          , p_ae_header_id             => l_ae_header_id 
110775 , p_source_4 => p_source_4
110776          , x_transaction_coa_id       => l_adr_transaction_coa_id
110777          , x_accounting_coa_id        => l_adr_accounting_coa_id
110778          , x_value_type_code          => l_adr_value_type_code
110779          , p_side                     => 'NA'
110780    );
110781 
110782    xla_ae_lines_pkg.set_ccid(
110783     p_code_combination_id          => l_ccid
110784   , p_value_type_code              => l_adr_value_type_code
110785   , p_transaction_coa_id           => l_adr_transaction_coa_id
110786   , p_accounting_coa_id            => l_adr_accounting_coa_id
110787   , p_adr_code                     => 'CST_DEFAULT'
110788   , p_adr_type_code                => 'S'
110789   , p_component_type               => l_component_type
110790   , p_component_code               => l_component_code
110791   , p_component_type_code          => l_component_type_code
110792   , p_component_appl_id            => l_component_appl_id
110793   , p_amb_context_code             => l_amb_context_code
110794   , p_side                         => 'NA'
110795   );
110796 
110797 
110798    --
110799    --
110800    END IF;
110801    --
110802    -- Bug 4922099
110803    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
110804           (NVL(l_enc_upg_option, 'N') = 'O')
110805         ) AND
110806         (l_bflow_method_code = 'PRIOR_ENTRY')
110807       )
110808    THEN
110809       IF
110810       --
110811       1 = 2
110812       --
110813       THEN
110814       xla_accounting_err_pkg.build_message
110815                                     (p_appli_s_name            => 'XLA'
110816                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
110817                                     ,p_token_1                 => 'LINE_NUMBER'
110818                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
110819                                     ,p_token_2                 => 'LINE_TYPE_NAME'
110820                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
110821                                                                              l_component_type
110822                                                                             ,l_component_code
110823                                                                             ,l_component_type_code
110824                                                                             ,l_component_appl_id
110825                                                                             ,l_amb_context_code
110826                                                                             ,l_entity_code
110827                                                                             ,l_event_class_code
110828                                                                            )
110829                                     ,p_token_3                 => 'OWNER'
110830                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
110831                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
110832                                                                           ,p_lookup_code    => l_component_type_code
110833                                                                          )
110834                                     ,p_token_4                 => 'PRODUCT_NAME'
110835                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
110836                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
110837                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
110838                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
110839                                     ,p_ae_header_id            =>  NULL
110840                                        );
110841 
110842         IF (C_LEVEL_ERROR>= g_log_level) THEN
110843                  trace
110844                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
110845                       ,p_level    => C_LEVEL_ERROR
110846                       ,p_module   => l_log_module);
110847         END IF;
110848       END IF;
110849    END IF;
110850    --
110851    --
110852    ------------------------------------------------------------------------------------------------
110853    -- 4219869 Business Flow
110854    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
110855    -- Prior Entry.  Currently, the following code is always generated.
110856    ------------------------------------------------------------------------------------------------
110857    XLA_AE_LINES_PKG.ValidateCurrentLine;
110858 
110859    ------------------------------------------------------------------------------------
110860    -- 4219869 Business Flow
110861    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
110862    ------------------------------------------------------------------------------------
110863    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
110864 
110865    ----------------------------------------------------------------------------------
110866    -- 4219869 Business Flow
110867    -- Update journal entry status -- Need to generate this within IF <condition>
110868    ----------------------------------------------------------------------------------
110869    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
110870          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
110871          ,p_balance_type_code => l_balance_type_code
110872          );
110873 
110874    -------------------------------------------------------------------------------------------
110875    -- 4262811 - Generate the Accrual Reversal lines
110876    -------------------------------------------------------------------------------------------
110877    BEGIN
110878       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
110879                               (g_array_event(p_event_id).array_value_num('header_index'));
110880       IF l_acc_rev_flag IS NULL THEN
110881          l_acc_rev_flag := 'N';
110882       END IF;
110883    EXCEPTION
110884       WHEN OTHERS THEN
110885          l_acc_rev_flag := 'N';
110886    END;
110887    --
110888    IF (l_acc_rev_flag = 'Y') THEN
110889 
110890        -- 4645092  ------------------------------------------------------------------------------
110891        -- To allow MPA report to determine if it should generate report process
110892        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
110893        ------------------------------------------------------------------------------------------
110894 
110895        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
110896        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
110897    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
110898    -- call ADRs
110899    -- Bug 4922099
110900    --
110901    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
110902         (NVL(l_actual_upg_option, 'N') = 'O') OR
110903         (NVL(l_enc_upg_option, 'N') = 'O')
110904       )
110905    THEN
110906    NULL;
110907    --
110908    --
110909    
110910   l_ccid := AcctDerRule_4(
110911            p_application_id           => p_application_id
110912          , p_ae_header_id             => l_ae_header_id 
110913 , p_source_4 => p_source_4
110914          , x_transaction_coa_id       => l_adr_transaction_coa_id
110915          , x_accounting_coa_id        => l_adr_accounting_coa_id
110916          , x_value_type_code          => l_adr_value_type_code
110917          , p_side                     => 'NA'
110918    );
110919 
110920    xla_ae_lines_pkg.set_ccid(
110921     p_code_combination_id          => l_ccid
110922   , p_value_type_code              => l_adr_value_type_code
110923   , p_transaction_coa_id           => l_adr_transaction_coa_id
110924   , p_accounting_coa_id            => l_adr_accounting_coa_id
110925   , p_adr_code                     => 'CST_DEFAULT'
110926   , p_adr_type_code                => 'S'
110927   , p_component_type               => l_component_type
110928   , p_component_code               => l_component_code
110929   , p_component_type_code          => l_component_type_code
110930   , p_component_appl_id            => l_component_appl_id
110931   , p_amb_context_code             => l_amb_context_code
110932   , p_side                         => 'NA'
110933   );
110934 
110935 
110936    --
110937    --
110938    END IF;
110939 
110940        --
110941        -- Update the line information that should be overwritten
110942        --
110943        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
110944                                          p_header_num   => 1);
110945        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
110946 
110947        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
110948 
110949        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
110950           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
110951        END IF;
110952 
110953       --
110954       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
110955       --
110956       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
110957           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
110958       ELSE
110959           ---------------------------------------------------------------------------------------------------
110960           -- 4262811a Switch Sign
110961           ---------------------------------------------------------------------------------------------------
110962           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
110963           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
110964                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
110965           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
110966                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
110967           -- 5132302
110968           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
110969                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
110970 
110971       END IF;
110972 
110973       -- 4955764
110974       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
110975       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
110976 
110977 
110978       XLA_AE_LINES_PKG.ValidateCurrentLine;
110979       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
110980 
110981       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
110982                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
110983                ,p_balance_type_code => l_balance_type_code);
110984 
110985    END IF;
110986 
110987    -----------------------------------------------------------------------------------------
110988    -- 4262811 Multiperiod Accounting
110989    -----------------------------------------------------------------------------------------
110990      -- No MPA option is assigned.
110991 
110992 
110993 END IF;
110994 END IF;
110995 --
110996 
110997 --
110998 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
110999    trace
111000       (p_msg      => 'END of AcctLineType_201'
111001       ,p_level    => C_LEVEL_PROCEDURE
111002       ,p_module   => l_log_module);
111003 END IF;
111004 --
111005 EXCEPTION
111006   WHEN xla_exceptions_pkg.application_exception THEN
111007       RAISE;
111008   WHEN OTHERS THEN
111009        xla_exceptions_pkg.raise_message
111010            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_201');
111011 END AcctLineType_201;
111012 --
111013 
111014 ---------------------------------------
111015 --
111016 -- PRIVATE FUNCTION
111017 --         AcctLineType_202
111018 --
111019 ---------------------------------------
111020 PROCEDURE AcctLineType_202 (
111021   p_application_id        IN NUMBER
111022  ,p_event_id              IN NUMBER
111023  ,p_calculate_acctd_flag  IN VARCHAR2
111024  ,p_calculate_g_l_flag    IN VARCHAR2
111025  ,p_actual_flag           IN OUT VARCHAR2
111026  ,p_balance_type_code     OUT VARCHAR2
111027  ,p_gain_or_loss_ref      OUT VARCHAR2
111028  
111029 --Cost Management Default Account
111030  , p_source_4            IN NUMBER
111031 --DISTRIBUTION_IDENTIFIER
111032  , p_source_11            IN NUMBER
111033 --Distribution Type
111034  , p_source_12            IN VARCHAR2
111035  , p_source_12_meaning    IN VARCHAR2
111036 --Entered Currency Code
111037  , p_source_15            IN VARCHAR2
111038 --Entered Amount
111039  , p_source_18            IN NUMBER
111040 --Currency Conversion Date
111041  , p_source_19            IN DATE
111042 --Currency Conversion Rate
111043  , p_source_20            IN NUMBER
111044 --Currency Conversion Type
111045  , p_source_21            IN VARCHAR2
111046 --Accounted Amount
111047  , p_source_22            IN NUMBER
111048 --Accounting Line Type
111049  , p_source_24            IN NUMBER
111050 )
111051 IS
111052 
111053 l_component_type              VARCHAR2(80);
111054 l_component_code              VARCHAR2(30);
111055 l_component_type_code         VARCHAR2(1);
111056 l_component_appl_id           INTEGER;
111057 l_amb_context_code            VARCHAR2(30);
111058 l_entity_code                 VARCHAR2(30);
111059 l_event_class_code            VARCHAR2(30);
111060 l_ae_header_id                NUMBER;
111061 l_event_type_code             VARCHAR2(30);
111062 l_line_definition_code        VARCHAR2(30);
111063 l_line_definition_owner_code  VARCHAR2(1);
111064 --
111065 -- adr variables
111066 l_segment                     VARCHAR2(30);
111067 l_ccid                        NUMBER;
111068 l_adr_transaction_coa_id      NUMBER;
111069 l_adr_accounting_coa_id       NUMBER;
111070 l_adr_flexfield_segment_code  VARCHAR2(30);
111071 l_adr_flex_value_set_id       NUMBER;
111072 l_adr_value_type_code         VARCHAR2(30);
111073 l_adr_value_combination_id    NUMBER;
111074 l_adr_value_segment_code      VARCHAR2(30);
111075 
111076 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
111077 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
111078 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
111079 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
111080 
111081 -- 4262811 Variables ------------------------------------------------------------------------------------------
111082 l_entered_amt_idx             NUMBER;
111083 l_accted_amt_idx              NUMBER;
111084 l_acc_rev_flag                VARCHAR2(1);
111085 l_accrual_line_num            NUMBER;
111086 l_tmp_amt                     NUMBER;
111087 l_acc_rev_natural_side_code   VARCHAR2(1);
111088 
111089 l_num_entries                 NUMBER;
111090 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
111091 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
111092 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
111093 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
111094 l_recog_line_1                NUMBER;
111095 l_recog_line_2                NUMBER;
111096 
111097 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
111098 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
111099 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
111100 
111101 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
111102 
111103 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
111104 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
111105 
111106 ---------------------------------------------------------------------------------------------------------------
111107 
111108 
111109 --
111110 -- bulk performance
111111 --
111112 l_balance_type_code           VARCHAR2(1);
111113 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
111114 l_log_module                  VARCHAR2(240);
111115 
111116 --
111117 -- Upgrade strategy
111118 --
111119 l_actual_upg_option           VARCHAR2(1);
111120 l_enc_upg_option           VARCHAR2(1);
111121 
111122 --
111123 BEGIN
111124 --
111125 IF g_log_enabled THEN
111126       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_202';
111127 END IF;
111128 --
111129 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
111130 
111131       trace
111132          (p_msg      => 'BEGIN of AcctLineType_202'
111133          ,p_level    => C_LEVEL_PROCEDURE
111134          ,p_module   => l_log_module);
111135 
111136 END IF;
111137 --
111138 l_component_type             := 'AMB_JLT';
111139 l_component_code             := 'OFFSET';
111140 l_component_type_code        := 'S';
111141 l_component_appl_id          :=  707;
111142 l_amb_context_code           := 'DEFAULT';
111143 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
111144 l_event_class_code           := 'USER_DEFINE';
111145 l_event_type_code            := 'UMISC_RCPT';
111146 l_line_definition_owner_code := 'S';
111147 l_line_definition_code       := 'USER_RCPT';
111148 --
111149 l_balance_type_code          := 'A';
111150 l_segment                     := NULL;
111151 l_ccid                        := NULL;
111152 l_adr_transaction_coa_id      := NULL;
111153 l_adr_accounting_coa_id       := NULL;
111154 l_adr_flexfield_segment_code  := NULL;
111155 l_adr_flex_value_set_id       := NULL;
111156 l_adr_value_type_code         := NULL;
111157 l_adr_value_combination_id    := NULL;
111158 l_adr_value_segment_code      := NULL;
111159 
111160 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
111161 l_bflow_class_code           := '';    -- 4219869 Business Flow
111162 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
111163 l_budgetary_control_flag     := 'N';
111164 
111165 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
111166 l_bflow_applied_to_amt       := NULL; -- 5132302
111167 l_entered_amt_idx            := NULL;          -- 4262811
111168 l_accted_amt_idx             := NULL;          -- 4262811
111169 l_acc_rev_flag               := NULL;          -- 4262811
111170 l_accrual_line_num           := NULL;          -- 4262811
111171 l_tmp_amt                    := NULL;          -- 4262811
111172 --
111173  
111174 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
111175     l_balance_type_code <> 'B' THEN
111176 IF NVL(p_source_24,9E125) =  2
111177  THEN 
111178 
111179    --
111180    XLA_AE_LINES_PKG.SetNewLine;
111181 
111182    p_balance_type_code          := l_balance_type_code;
111183    -- set the flag so later we will know whether the gain loss line needs to be created
111184    
111185    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
111186      p_actual_flag :='A';
111187    END IF;
111188 
111189    --
111190    -- bulk performance
111191    --
111192    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
111193                                       p_header_num   => 0); -- 4262811
111194    --
111195    -- set accounting line options
111196    --
111197    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
111198            p_natural_side_code          => 'D'
111199          , p_gain_or_loss_flag          => 'N'
111200          , p_gl_transfer_mode_code      => 'S'
111201          , p_acct_entry_type_code       => 'A'
111202          , p_switch_side_flag           => 'Y'
111203          , p_merge_duplicate_code       => 'N'
111204          );
111205    --
111206    l_acc_rev_natural_side_code := 'C';  -- 4262811
111207    -- 
111208    --
111209    -- set accounting line type info
111210    --
111211    xla_ae_lines_pkg.SetAcctLineType
111212       (p_component_type             => l_component_type
111213       ,p_event_type_code            => l_event_type_code
111214       ,p_line_definition_owner_code => l_line_definition_owner_code
111215       ,p_line_definition_code       => l_line_definition_code
111216       ,p_accounting_line_code       => l_component_code
111217       ,p_accounting_line_type_code  => l_component_type_code
111218       ,p_accounting_line_appl_id    => l_component_appl_id
111219       ,p_amb_context_code           => l_amb_context_code
111220       ,p_entity_code                => l_entity_code
111221       ,p_event_class_code           => l_event_class_code);
111222    --
111223    -- set accounting class
111224    --
111225    xla_ae_lines_pkg.SetAcctClass(
111226            p_accounting_class_code  => 'OFFSET'
111227          , p_ae_header_id           => l_ae_header_id
111228          );
111229 
111230    --
111231    -- set rounding class
111232    --
111233    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
111234                       'OFFSET';
111235 
111236    --
111237    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
111238    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
111239    --
111240    -- bulk performance
111241    --
111242    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
111243 
111244    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
111245       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
111246 
111247    -- 4955764
111248    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
111249       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
111250 
111251    -- 4458381 Public Sector Enh
111252    
111253    --
111254    -- set accounting attributes for the line type
111255    --
111256    l_entered_amt_idx := 3;
111257    l_accted_amt_idx  := 8;
111258    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
111259    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
111260    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
111261    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
111262    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
111263    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
111264    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
111265    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
111266    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
111267    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
111268    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
111269    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
111270    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
111271    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
111272    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
111273    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
111274    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
111275 
111276    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
111277    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
111278 
111279    ---------------------------------------------------------------------------------------------------------------
111280    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
111281    ---------------------------------------------------------------------------------------------------------------
111282    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
111283 
111284    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
111285    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
111286 
111287    IF xla_accounting_cache_pkg.GetValueChar
111288          (p_source_code         => 'LEDGER_CATEGORY_CODE'
111289          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
111290    AND l_bflow_method_code = 'PRIOR_ENTRY'
111291 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
111292    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
111293          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
111294        )
111295    THEN
111296          xla_ae_lines_pkg.BflowUpgEntry
111297            (p_business_method_code    => l_bflow_method_code
111298            ,p_business_class_code     => l_bflow_class_code
111299            ,p_balance_type            => l_balance_type_code);
111300    ELSE
111301       NULL;
111302 -- No business flow processing for business flow method of NONE.
111303    END IF;
111304 
111305    --
111306    -- call analytical criteria
111307    --
111308    
111309    --
111310    -- call description
111311    --
111312    -- No description or it is inherited.
111313    --
111314    -- call ADRs
111315    -- Bug 4922099
111316    --
111317    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
111318         (NVL(l_actual_upg_option, 'N') = 'O') OR
111319         (NVL(l_enc_upg_option, 'N') = 'O')
111320       )
111321    THEN
111322    NULL;
111323    --
111324    --
111325    
111326   l_ccid := AcctDerRule_4(
111327            p_application_id           => p_application_id
111328          , p_ae_header_id             => l_ae_header_id 
111329 , p_source_4 => p_source_4
111330          , x_transaction_coa_id       => l_adr_transaction_coa_id
111331          , x_accounting_coa_id        => l_adr_accounting_coa_id
111332          , x_value_type_code          => l_adr_value_type_code
111333          , p_side                     => 'NA'
111334    );
111335 
111336    xla_ae_lines_pkg.set_ccid(
111337     p_code_combination_id          => l_ccid
111338   , p_value_type_code              => l_adr_value_type_code
111339   , p_transaction_coa_id           => l_adr_transaction_coa_id
111340   , p_accounting_coa_id            => l_adr_accounting_coa_id
111341   , p_adr_code                     => 'CST_DEFAULT'
111342   , p_adr_type_code                => 'S'
111343   , p_component_type               => l_component_type
111344   , p_component_code               => l_component_code
111345   , p_component_type_code          => l_component_type_code
111346   , p_component_appl_id            => l_component_appl_id
111347   , p_amb_context_code             => l_amb_context_code
111348   , p_side                         => 'NA'
111349   );
111350 
111351 
111352    --
111353    --
111354    END IF;
111355    --
111356    -- Bug 4922099
111357    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
111358           (NVL(l_enc_upg_option, 'N') = 'O')
111359         ) AND
111360         (l_bflow_method_code = 'PRIOR_ENTRY')
111361       )
111362    THEN
111363       IF
111364       --
111365       1 = 2
111366       --
111367       THEN
111368       xla_accounting_err_pkg.build_message
111369                                     (p_appli_s_name            => 'XLA'
111370                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
111371                                     ,p_token_1                 => 'LINE_NUMBER'
111372                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
111373                                     ,p_token_2                 => 'LINE_TYPE_NAME'
111374                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
111375                                                                              l_component_type
111376                                                                             ,l_component_code
111377                                                                             ,l_component_type_code
111378                                                                             ,l_component_appl_id
111379                                                                             ,l_amb_context_code
111380                                                                             ,l_entity_code
111381                                                                             ,l_event_class_code
111382                                                                            )
111383                                     ,p_token_3                 => 'OWNER'
111384                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
111385                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
111386                                                                           ,p_lookup_code    => l_component_type_code
111387                                                                          )
111388                                     ,p_token_4                 => 'PRODUCT_NAME'
111389                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
111390                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
111391                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
111392                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
111393                                     ,p_ae_header_id            =>  NULL
111394                                        );
111395 
111396         IF (C_LEVEL_ERROR>= g_log_level) THEN
111397                  trace
111398                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
111399                       ,p_level    => C_LEVEL_ERROR
111400                       ,p_module   => l_log_module);
111401         END IF;
111402       END IF;
111403    END IF;
111404    --
111405    --
111406    ------------------------------------------------------------------------------------------------
111407    -- 4219869 Business Flow
111408    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
111409    -- Prior Entry.  Currently, the following code is always generated.
111410    ------------------------------------------------------------------------------------------------
111411    XLA_AE_LINES_PKG.ValidateCurrentLine;
111412 
111413    ------------------------------------------------------------------------------------
111414    -- 4219869 Business Flow
111415    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
111416    ------------------------------------------------------------------------------------
111417    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
111418 
111419    ----------------------------------------------------------------------------------
111420    -- 4219869 Business Flow
111421    -- Update journal entry status -- Need to generate this within IF <condition>
111422    ----------------------------------------------------------------------------------
111423    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
111424          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
111425          ,p_balance_type_code => l_balance_type_code
111426          );
111427 
111428    -------------------------------------------------------------------------------------------
111429    -- 4262811 - Generate the Accrual Reversal lines
111430    -------------------------------------------------------------------------------------------
111431    BEGIN
111432       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
111433                               (g_array_event(p_event_id).array_value_num('header_index'));
111434       IF l_acc_rev_flag IS NULL THEN
111435          l_acc_rev_flag := 'N';
111436       END IF;
111437    EXCEPTION
111438       WHEN OTHERS THEN
111439          l_acc_rev_flag := 'N';
111440    END;
111441    --
111442    IF (l_acc_rev_flag = 'Y') THEN
111443 
111444        -- 4645092  ------------------------------------------------------------------------------
111445        -- To allow MPA report to determine if it should generate report process
111446        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
111447        ------------------------------------------------------------------------------------------
111448 
111449        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
111450        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
111451    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
111452    -- call ADRs
111453    -- Bug 4922099
111454    --
111455    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
111456         (NVL(l_actual_upg_option, 'N') = 'O') OR
111457         (NVL(l_enc_upg_option, 'N') = 'O')
111458       )
111459    THEN
111460    NULL;
111461    --
111462    --
111463    
111464   l_ccid := AcctDerRule_4(
111465            p_application_id           => p_application_id
111466          , p_ae_header_id             => l_ae_header_id 
111467 , p_source_4 => p_source_4
111468          , x_transaction_coa_id       => l_adr_transaction_coa_id
111469          , x_accounting_coa_id        => l_adr_accounting_coa_id
111470          , x_value_type_code          => l_adr_value_type_code
111471          , p_side                     => 'NA'
111472    );
111473 
111474    xla_ae_lines_pkg.set_ccid(
111475     p_code_combination_id          => l_ccid
111476   , p_value_type_code              => l_adr_value_type_code
111477   , p_transaction_coa_id           => l_adr_transaction_coa_id
111478   , p_accounting_coa_id            => l_adr_accounting_coa_id
111479   , p_adr_code                     => 'CST_DEFAULT'
111480   , p_adr_type_code                => 'S'
111481   , p_component_type               => l_component_type
111482   , p_component_code               => l_component_code
111483   , p_component_type_code          => l_component_type_code
111484   , p_component_appl_id            => l_component_appl_id
111485   , p_amb_context_code             => l_amb_context_code
111486   , p_side                         => 'NA'
111487   );
111488 
111489 
111490    --
111491    --
111492    END IF;
111493 
111494        --
111495        -- Update the line information that should be overwritten
111496        --
111497        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
111498                                          p_header_num   => 1);
111499        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
111500 
111501        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
111502 
111503        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
111504           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
111505        END IF;
111506 
111507       --
111508       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
111509       --
111510       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
111511           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
111512       ELSE
111513           ---------------------------------------------------------------------------------------------------
111514           -- 4262811a Switch Sign
111515           ---------------------------------------------------------------------------------------------------
111516           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
111517           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
111518                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
111519           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
111520                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
111521           -- 5132302
111522           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
111523                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
111524 
111525       END IF;
111526 
111527       -- 4955764
111528       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
111529       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
111530 
111531 
111532       XLA_AE_LINES_PKG.ValidateCurrentLine;
111533       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
111534 
111535       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
111536                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
111537                ,p_balance_type_code => l_balance_type_code);
111538 
111539    END IF;
111540 
111541    -----------------------------------------------------------------------------------------
111542    -- 4262811 Multiperiod Accounting
111543    -----------------------------------------------------------------------------------------
111544      -- No MPA option is assigned.
111545 
111546 
111547 END IF;
111548 END IF;
111549 --
111550 
111551 --
111552 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
111553    trace
111554       (p_msg      => 'END of AcctLineType_202'
111555       ,p_level    => C_LEVEL_PROCEDURE
111556       ,p_module   => l_log_module);
111557 END IF;
111558 --
111559 EXCEPTION
111560   WHEN xla_exceptions_pkg.application_exception THEN
111561       RAISE;
111562   WHEN OTHERS THEN
111563        xla_exceptions_pkg.raise_message
111564            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_202');
111565 END AcctLineType_202;
111566 --
111567 
111568 ---------------------------------------
111569 --
111570 -- PRIVATE FUNCTION
111571 --         AcctLineType_203
111572 --
111573 ---------------------------------------
111574 PROCEDURE AcctLineType_203 (
111575   p_application_id        IN NUMBER
111576  ,p_event_id              IN NUMBER
111577  ,p_calculate_acctd_flag  IN VARCHAR2
111578  ,p_calculate_g_l_flag    IN VARCHAR2
111579  ,p_actual_flag           IN OUT VARCHAR2
111580  ,p_balance_type_code     OUT VARCHAR2
111581  ,p_gain_or_loss_ref      OUT VARCHAR2
111582  
111583 --Cost Management Default Account
111584  , p_source_4            IN NUMBER
111585 --DISTRIBUTION_IDENTIFIER
111586  , p_source_11            IN NUMBER
111587 --Distribution Type
111588  , p_source_12            IN VARCHAR2
111589  , p_source_12_meaning    IN VARCHAR2
111590 --Entered Currency Code
111591  , p_source_15            IN VARCHAR2
111592 --Entered Amount
111593  , p_source_18            IN NUMBER
111594 --Currency Conversion Date
111595  , p_source_19            IN DATE
111596 --Currency Conversion Rate
111597  , p_source_20            IN NUMBER
111598 --Currency Conversion Type
111599  , p_source_21            IN VARCHAR2
111600 --Accounted Amount
111601  , p_source_22            IN NUMBER
111602 --Accounting Line Type
111603  , p_source_24            IN NUMBER
111604 )
111605 IS
111606 
111607 l_component_type              VARCHAR2(80);
111608 l_component_code              VARCHAR2(30);
111609 l_component_type_code         VARCHAR2(1);
111610 l_component_appl_id           INTEGER;
111611 l_amb_context_code            VARCHAR2(30);
111612 l_entity_code                 VARCHAR2(30);
111613 l_event_class_code            VARCHAR2(30);
111614 l_ae_header_id                NUMBER;
111615 l_event_type_code             VARCHAR2(30);
111616 l_line_definition_code        VARCHAR2(30);
111617 l_line_definition_owner_code  VARCHAR2(1);
111618 --
111619 -- adr variables
111620 l_segment                     VARCHAR2(30);
111621 l_ccid                        NUMBER;
111622 l_adr_transaction_coa_id      NUMBER;
111623 l_adr_accounting_coa_id       NUMBER;
111624 l_adr_flexfield_segment_code  VARCHAR2(30);
111625 l_adr_flex_value_set_id       NUMBER;
111626 l_adr_value_type_code         VARCHAR2(30);
111627 l_adr_value_combination_id    NUMBER;
111628 l_adr_value_segment_code      VARCHAR2(30);
111629 
111630 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
111631 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
111632 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
111633 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
111634 
111635 -- 4262811 Variables ------------------------------------------------------------------------------------------
111636 l_entered_amt_idx             NUMBER;
111637 l_accted_amt_idx              NUMBER;
111638 l_acc_rev_flag                VARCHAR2(1);
111639 l_accrual_line_num            NUMBER;
111640 l_tmp_amt                     NUMBER;
111641 l_acc_rev_natural_side_code   VARCHAR2(1);
111642 
111643 l_num_entries                 NUMBER;
111644 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
111645 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
111646 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
111647 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
111648 l_recog_line_1                NUMBER;
111649 l_recog_line_2                NUMBER;
111650 
111651 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
111652 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
111653 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
111654 
111655 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
111656 
111657 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
111658 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
111659 
111660 ---------------------------------------------------------------------------------------------------------------
111661 
111662 
111663 --
111664 -- bulk performance
111665 --
111666 l_balance_type_code           VARCHAR2(1);
111667 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
111668 l_log_module                  VARCHAR2(240);
111669 
111670 --
111671 -- Upgrade strategy
111672 --
111673 l_actual_upg_option           VARCHAR2(1);
111674 l_enc_upg_option           VARCHAR2(1);
111675 
111676 --
111677 BEGIN
111678 --
111679 IF g_log_enabled THEN
111680       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_203';
111681 END IF;
111682 --
111683 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
111684 
111685       trace
111686          (p_msg      => 'BEGIN of AcctLineType_203'
111687          ,p_level    => C_LEVEL_PROCEDURE
111688          ,p_module   => l_log_module);
111689 
111690 END IF;
111691 --
111692 l_component_type             := 'AMB_JLT';
111693 l_component_code             := 'OFFSET';
111694 l_component_type_code        := 'S';
111695 l_component_appl_id          :=  707;
111696 l_amb_context_code           := 'DEFAULT';
111697 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
111698 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
111699 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
111700 l_line_definition_owner_code := 'S';
111701 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_SHIP';
111702 --
111703 l_balance_type_code          := 'A';
111704 l_segment                     := NULL;
111705 l_ccid                        := NULL;
111706 l_adr_transaction_coa_id      := NULL;
111707 l_adr_accounting_coa_id       := NULL;
111708 l_adr_flexfield_segment_code  := NULL;
111709 l_adr_flex_value_set_id       := NULL;
111710 l_adr_value_type_code         := NULL;
111711 l_adr_value_combination_id    := NULL;
111712 l_adr_value_segment_code      := NULL;
111713 
111714 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
111715 l_bflow_class_code           := '';    -- 4219869 Business Flow
111716 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
111717 l_budgetary_control_flag     := 'N';
111718 
111719 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
111720 l_bflow_applied_to_amt       := NULL; -- 5132302
111721 l_entered_amt_idx            := NULL;          -- 4262811
111722 l_accted_amt_idx             := NULL;          -- 4262811
111723 l_acc_rev_flag               := NULL;          -- 4262811
111724 l_accrual_line_num           := NULL;          -- 4262811
111725 l_tmp_amt                    := NULL;          -- 4262811
111726 --
111727  
111728 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
111729     l_balance_type_code <> 'B' THEN
111730 IF NVL(p_source_24,9E125) =  2 AND 
111731 p_source_22 >=  0
111732  THEN 
111733 
111734    --
111735    XLA_AE_LINES_PKG.SetNewLine;
111736 
111737    p_balance_type_code          := l_balance_type_code;
111738    -- set the flag so later we will know whether the gain loss line needs to be created
111739    
111740    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
111741      p_actual_flag :='A';
111742    END IF;
111743 
111744    --
111745    -- bulk performance
111746    --
111747    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
111748                                       p_header_num   => 0); -- 4262811
111749    --
111750    -- set accounting line options
111751    --
111752    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
111753            p_natural_side_code          => 'D'
111754          , p_gain_or_loss_flag          => 'N'
111755          , p_gl_transfer_mode_code      => 'S'
111756          , p_acct_entry_type_code       => 'A'
111757          , p_switch_side_flag           => 'Y'
111758          , p_merge_duplicate_code       => 'N'
111759          );
111760    --
111761    l_acc_rev_natural_side_code := 'C';  -- 4262811
111762    -- 
111763    --
111764    -- set accounting line type info
111765    --
111766    xla_ae_lines_pkg.SetAcctLineType
111767       (p_component_type             => l_component_type
111768       ,p_event_type_code            => l_event_type_code
111769       ,p_line_definition_owner_code => l_line_definition_owner_code
111770       ,p_line_definition_code       => l_line_definition_code
111771       ,p_accounting_line_code       => l_component_code
111772       ,p_accounting_line_type_code  => l_component_type_code
111773       ,p_accounting_line_appl_id    => l_component_appl_id
111774       ,p_amb_context_code           => l_amb_context_code
111775       ,p_entity_code                => l_entity_code
111776       ,p_event_class_code           => l_event_class_code);
111777    --
111778    -- set accounting class
111779    --
111780    xla_ae_lines_pkg.SetAcctClass(
111781            p_accounting_class_code  => 'OFFSET'
111782          , p_ae_header_id           => l_ae_header_id
111783          );
111784 
111785    --
111786    -- set rounding class
111787    --
111788    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
111789                       'OFFSET';
111790 
111791    --
111792    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
111793    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
111794    --
111795    -- bulk performance
111796    --
111797    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
111798 
111799    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
111800       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
111801 
111802    -- 4955764
111803    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
111804       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
111805 
111806    -- 4458381 Public Sector Enh
111807    
111808    --
111809    -- set accounting attributes for the line type
111810    --
111811    l_entered_amt_idx := 3;
111812    l_accted_amt_idx  := 8;
111813    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
111814    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
111815    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
111816    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
111817    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
111818    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
111819    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
111820    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
111821    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
111822    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
111823    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
111824    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
111825    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
111826    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
111827    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
111828    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
111829    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
111830 
111831    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
111832    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
111833 
111834    ---------------------------------------------------------------------------------------------------------------
111835    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
111836    ---------------------------------------------------------------------------------------------------------------
111837    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
111838 
111839    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
111840    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
111841 
111842    IF xla_accounting_cache_pkg.GetValueChar
111843          (p_source_code         => 'LEDGER_CATEGORY_CODE'
111844          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
111845    AND l_bflow_method_code = 'PRIOR_ENTRY'
111846 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
111847    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
111848          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
111849        )
111850    THEN
111851          xla_ae_lines_pkg.BflowUpgEntry
111852            (p_business_method_code    => l_bflow_method_code
111853            ,p_business_class_code     => l_bflow_class_code
111854            ,p_balance_type            => l_balance_type_code);
111855    ELSE
111856       NULL;
111857 -- No business flow processing for business flow method of NONE.
111858    END IF;
111859 
111860    --
111861    -- call analytical criteria
111862    --
111863    
111864    --
111865    -- call description
111866    --
111867    -- No description or it is inherited.
111868    --
111869    -- call ADRs
111870    -- Bug 4922099
111871    --
111872    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
111873         (NVL(l_actual_upg_option, 'N') = 'O') OR
111874         (NVL(l_enc_upg_option, 'N') = 'O')
111875       )
111876    THEN
111877    NULL;
111878    --
111879    --
111880    
111881   l_ccid := AcctDerRule_4(
111882            p_application_id           => p_application_id
111883          , p_ae_header_id             => l_ae_header_id 
111884 , p_source_4 => p_source_4
111885          , x_transaction_coa_id       => l_adr_transaction_coa_id
111886          , x_accounting_coa_id        => l_adr_accounting_coa_id
111887          , x_value_type_code          => l_adr_value_type_code
111888          , p_side                     => 'NA'
111889    );
111890 
111891    xla_ae_lines_pkg.set_ccid(
111892     p_code_combination_id          => l_ccid
111893   , p_value_type_code              => l_adr_value_type_code
111894   , p_transaction_coa_id           => l_adr_transaction_coa_id
111895   , p_accounting_coa_id            => l_adr_accounting_coa_id
111896   , p_adr_code                     => 'CST_DEFAULT'
111897   , p_adr_type_code                => 'S'
111898   , p_component_type               => l_component_type
111899   , p_component_code               => l_component_code
111900   , p_component_type_code          => l_component_type_code
111901   , p_component_appl_id            => l_component_appl_id
111902   , p_amb_context_code             => l_amb_context_code
111903   , p_side                         => 'NA'
111904   );
111905 
111906 
111907    --
111908    --
111909    END IF;
111910    --
111911    -- Bug 4922099
111912    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
111913           (NVL(l_enc_upg_option, 'N') = 'O')
111914         ) AND
111915         (l_bflow_method_code = 'PRIOR_ENTRY')
111916       )
111917    THEN
111918       IF
111919       --
111920       1 = 2
111921       --
111922       THEN
111923       xla_accounting_err_pkg.build_message
111924                                     (p_appli_s_name            => 'XLA'
111925                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
111926                                     ,p_token_1                 => 'LINE_NUMBER'
111927                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
111928                                     ,p_token_2                 => 'LINE_TYPE_NAME'
111929                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
111930                                                                              l_component_type
111931                                                                             ,l_component_code
111932                                                                             ,l_component_type_code
111933                                                                             ,l_component_appl_id
111934                                                                             ,l_amb_context_code
111935                                                                             ,l_entity_code
111936                                                                             ,l_event_class_code
111937                                                                            )
111938                                     ,p_token_3                 => 'OWNER'
111939                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
111940                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
111941                                                                           ,p_lookup_code    => l_component_type_code
111942                                                                          )
111943                                     ,p_token_4                 => 'PRODUCT_NAME'
111944                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
111945                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
111946                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
111947                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
111948                                     ,p_ae_header_id            =>  NULL
111949                                        );
111950 
111951         IF (C_LEVEL_ERROR>= g_log_level) THEN
111952                  trace
111953                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
111954                       ,p_level    => C_LEVEL_ERROR
111955                       ,p_module   => l_log_module);
111956         END IF;
111957       END IF;
111958    END IF;
111959    --
111960    --
111961    ------------------------------------------------------------------------------------------------
111962    -- 4219869 Business Flow
111963    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
111964    -- Prior Entry.  Currently, the following code is always generated.
111965    ------------------------------------------------------------------------------------------------
111966    XLA_AE_LINES_PKG.ValidateCurrentLine;
111967 
111968    ------------------------------------------------------------------------------------
111969    -- 4219869 Business Flow
111970    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
111971    ------------------------------------------------------------------------------------
111972    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
111973 
111974    ----------------------------------------------------------------------------------
111975    -- 4219869 Business Flow
111976    -- Update journal entry status -- Need to generate this within IF <condition>
111977    ----------------------------------------------------------------------------------
111978    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
111979          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
111980          ,p_balance_type_code => l_balance_type_code
111981          );
111982 
111983    -------------------------------------------------------------------------------------------
111984    -- 4262811 - Generate the Accrual Reversal lines
111985    -------------------------------------------------------------------------------------------
111986    BEGIN
111987       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
111988                               (g_array_event(p_event_id).array_value_num('header_index'));
111989       IF l_acc_rev_flag IS NULL THEN
111990          l_acc_rev_flag := 'N';
111991       END IF;
111992    EXCEPTION
111993       WHEN OTHERS THEN
111994          l_acc_rev_flag := 'N';
111995    END;
111996    --
111997    IF (l_acc_rev_flag = 'Y') THEN
111998 
111999        -- 4645092  ------------------------------------------------------------------------------
112000        -- To allow MPA report to determine if it should generate report process
112001        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
112002        ------------------------------------------------------------------------------------------
112003 
112004        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
112005        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
112006    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
112007    -- call ADRs
112008    -- Bug 4922099
112009    --
112010    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
112011         (NVL(l_actual_upg_option, 'N') = 'O') OR
112012         (NVL(l_enc_upg_option, 'N') = 'O')
112013       )
112014    THEN
112015    NULL;
112016    --
112017    --
112018    
112019   l_ccid := AcctDerRule_4(
112020            p_application_id           => p_application_id
112021          , p_ae_header_id             => l_ae_header_id 
112022 , p_source_4 => p_source_4
112023          , x_transaction_coa_id       => l_adr_transaction_coa_id
112024          , x_accounting_coa_id        => l_adr_accounting_coa_id
112025          , x_value_type_code          => l_adr_value_type_code
112026          , p_side                     => 'NA'
112027    );
112028 
112029    xla_ae_lines_pkg.set_ccid(
112030     p_code_combination_id          => l_ccid
112031   , p_value_type_code              => l_adr_value_type_code
112032   , p_transaction_coa_id           => l_adr_transaction_coa_id
112033   , p_accounting_coa_id            => l_adr_accounting_coa_id
112034   , p_adr_code                     => 'CST_DEFAULT'
112035   , p_adr_type_code                => 'S'
112036   , p_component_type               => l_component_type
112037   , p_component_code               => l_component_code
112038   , p_component_type_code          => l_component_type_code
112039   , p_component_appl_id            => l_component_appl_id
112040   , p_amb_context_code             => l_amb_context_code
112041   , p_side                         => 'NA'
112042   );
112043 
112044 
112045    --
112046    --
112047    END IF;
112048 
112049        --
112050        -- Update the line information that should be overwritten
112051        --
112052        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
112053                                          p_header_num   => 1);
112054        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
112055 
112056        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
112057 
112058        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
112059           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
112060        END IF;
112061 
112062       --
112063       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
112064       --
112065       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
112066           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
112067       ELSE
112068           ---------------------------------------------------------------------------------------------------
112069           -- 4262811a Switch Sign
112070           ---------------------------------------------------------------------------------------------------
112071           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
112072           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
112073                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112074           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
112075                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112076           -- 5132302
112077           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
112078                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112079 
112080       END IF;
112081 
112082       -- 4955764
112083       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
112084       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
112085 
112086 
112087       XLA_AE_LINES_PKG.ValidateCurrentLine;
112088       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
112089 
112090       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
112091                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
112092                ,p_balance_type_code => l_balance_type_code);
112093 
112094    END IF;
112095 
112096    -----------------------------------------------------------------------------------------
112097    -- 4262811 Multiperiod Accounting
112098    -----------------------------------------------------------------------------------------
112099      -- No MPA option is assigned.
112100 
112101 
112102 END IF;
112103 END IF;
112104 --
112105 
112106 --
112107 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
112108    trace
112109       (p_msg      => 'END of AcctLineType_203'
112110       ,p_level    => C_LEVEL_PROCEDURE
112111       ,p_module   => l_log_module);
112112 END IF;
112113 --
112114 EXCEPTION
112115   WHEN xla_exceptions_pkg.application_exception THEN
112116       RAISE;
112117   WHEN OTHERS THEN
112118        xla_exceptions_pkg.raise_message
112119            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_203');
112120 END AcctLineType_203;
112121 --
112122 
112123 ---------------------------------------
112124 --
112125 -- PRIVATE FUNCTION
112126 --         AcctLineType_204
112127 --
112128 ---------------------------------------
112129 PROCEDURE AcctLineType_204 (
112130   p_application_id        IN NUMBER
112131  ,p_event_id              IN NUMBER
112132  ,p_calculate_acctd_flag  IN VARCHAR2
112133  ,p_calculate_g_l_flag    IN VARCHAR2
112134  ,p_actual_flag           IN OUT VARCHAR2
112135  ,p_balance_type_code     OUT VARCHAR2
112136  ,p_gain_or_loss_ref      OUT VARCHAR2
112137  
112138 --Cost Management Default Account
112139  , p_source_4            IN NUMBER
112140 --DISTRIBUTION_IDENTIFIER
112141  , p_source_11            IN NUMBER
112142 --Distribution Type
112143  , p_source_12            IN VARCHAR2
112144  , p_source_12_meaning    IN VARCHAR2
112145 --Entered Currency Code
112146  , p_source_15            IN VARCHAR2
112147 --Entered Amount
112148  , p_source_18            IN NUMBER
112149 --Currency Conversion Date
112150  , p_source_19            IN DATE
112151 --Currency Conversion Rate
112152  , p_source_20            IN NUMBER
112153 --Currency Conversion Type
112154  , p_source_21            IN VARCHAR2
112155 --Accounted Amount
112156  , p_source_22            IN NUMBER
112157 --Accounting Line Type
112158  , p_source_24            IN NUMBER
112159 )
112160 IS
112161 
112162 l_component_type              VARCHAR2(80);
112163 l_component_code              VARCHAR2(30);
112164 l_component_type_code         VARCHAR2(1);
112165 l_component_appl_id           INTEGER;
112166 l_amb_context_code            VARCHAR2(30);
112167 l_entity_code                 VARCHAR2(30);
112168 l_event_class_code            VARCHAR2(30);
112169 l_ae_header_id                NUMBER;
112170 l_event_type_code             VARCHAR2(30);
112171 l_line_definition_code        VARCHAR2(30);
112172 l_line_definition_owner_code  VARCHAR2(1);
112173 --
112174 -- adr variables
112175 l_segment                     VARCHAR2(30);
112176 l_ccid                        NUMBER;
112177 l_adr_transaction_coa_id      NUMBER;
112178 l_adr_accounting_coa_id       NUMBER;
112179 l_adr_flexfield_segment_code  VARCHAR2(30);
112180 l_adr_flex_value_set_id       NUMBER;
112181 l_adr_value_type_code         VARCHAR2(30);
112182 l_adr_value_combination_id    NUMBER;
112183 l_adr_value_segment_code      VARCHAR2(30);
112184 
112185 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
112186 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
112187 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
112188 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
112189 
112190 -- 4262811 Variables ------------------------------------------------------------------------------------------
112191 l_entered_amt_idx             NUMBER;
112192 l_accted_amt_idx              NUMBER;
112193 l_acc_rev_flag                VARCHAR2(1);
112194 l_accrual_line_num            NUMBER;
112195 l_tmp_amt                     NUMBER;
112196 l_acc_rev_natural_side_code   VARCHAR2(1);
112197 
112198 l_num_entries                 NUMBER;
112199 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
112200 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
112201 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
112202 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
112203 l_recog_line_1                NUMBER;
112204 l_recog_line_2                NUMBER;
112205 
112206 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
112207 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
112208 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
112209 
112210 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
112211 
112212 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
112213 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
112214 
112215 ---------------------------------------------------------------------------------------------------------------
112216 
112217 
112218 --
112219 -- bulk performance
112220 --
112221 l_balance_type_code           VARCHAR2(1);
112222 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
112223 l_log_module                  VARCHAR2(240);
112224 
112225 --
112226 -- Upgrade strategy
112227 --
112228 l_actual_upg_option           VARCHAR2(1);
112229 l_enc_upg_option           VARCHAR2(1);
112230 
112231 --
112232 BEGIN
112233 --
112234 IF g_log_enabled THEN
112235       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_204';
112236 END IF;
112237 --
112238 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
112239 
112240       trace
112241          (p_msg      => 'BEGIN of AcctLineType_204'
112242          ,p_level    => C_LEVEL_PROCEDURE
112243          ,p_module   => l_log_module);
112244 
112245 END IF;
112246 --
112247 l_component_type             := 'AMB_JLT';
112248 l_component_code             := 'OFFSET';
112249 l_component_type_code        := 'S';
112250 l_component_appl_id          :=  707;
112251 l_amb_context_code           := 'DEFAULT';
112252 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
112253 l_event_class_code           := 'USER_DEFINE';
112254 l_event_type_code            := 'UDIR_INTERORG_RCPT_TP';
112255 l_line_definition_owner_code := 'S';
112256 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_TP';
112257 --
112258 l_balance_type_code          := 'A';
112259 l_segment                     := NULL;
112260 l_ccid                        := NULL;
112261 l_adr_transaction_coa_id      := NULL;
112262 l_adr_accounting_coa_id       := NULL;
112263 l_adr_flexfield_segment_code  := NULL;
112264 l_adr_flex_value_set_id       := NULL;
112265 l_adr_value_type_code         := NULL;
112266 l_adr_value_combination_id    := NULL;
112267 l_adr_value_segment_code      := NULL;
112268 
112269 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
112270 l_bflow_class_code           := '';    -- 4219869 Business Flow
112271 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
112272 l_budgetary_control_flag     := 'N';
112273 
112274 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
112275 l_bflow_applied_to_amt       := NULL; -- 5132302
112276 l_entered_amt_idx            := NULL;          -- 4262811
112277 l_accted_amt_idx             := NULL;          -- 4262811
112278 l_acc_rev_flag               := NULL;          -- 4262811
112279 l_accrual_line_num           := NULL;          -- 4262811
112280 l_tmp_amt                    := NULL;          -- 4262811
112281 --
112282  
112283 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
112284     l_balance_type_code <> 'B' THEN
112285 IF NVL(p_source_24,9E125) =  2
112286  THEN 
112287 
112288    --
112289    XLA_AE_LINES_PKG.SetNewLine;
112290 
112291    p_balance_type_code          := l_balance_type_code;
112292    -- set the flag so later we will know whether the gain loss line needs to be created
112293    
112294    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
112295      p_actual_flag :='A';
112296    END IF;
112297 
112298    --
112299    -- bulk performance
112300    --
112301    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
112302                                       p_header_num   => 0); -- 4262811
112303    --
112304    -- set accounting line options
112305    --
112306    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
112307            p_natural_side_code          => 'D'
112308          , p_gain_or_loss_flag          => 'N'
112309          , p_gl_transfer_mode_code      => 'S'
112310          , p_acct_entry_type_code       => 'A'
112311          , p_switch_side_flag           => 'Y'
112312          , p_merge_duplicate_code       => 'N'
112313          );
112314    --
112315    l_acc_rev_natural_side_code := 'C';  -- 4262811
112316    -- 
112317    --
112318    -- set accounting line type info
112319    --
112320    xla_ae_lines_pkg.SetAcctLineType
112321       (p_component_type             => l_component_type
112322       ,p_event_type_code            => l_event_type_code
112323       ,p_line_definition_owner_code => l_line_definition_owner_code
112324       ,p_line_definition_code       => l_line_definition_code
112325       ,p_accounting_line_code       => l_component_code
112326       ,p_accounting_line_type_code  => l_component_type_code
112327       ,p_accounting_line_appl_id    => l_component_appl_id
112328       ,p_amb_context_code           => l_amb_context_code
112329       ,p_entity_code                => l_entity_code
112330       ,p_event_class_code           => l_event_class_code);
112331    --
112332    -- set accounting class
112333    --
112334    xla_ae_lines_pkg.SetAcctClass(
112335            p_accounting_class_code  => 'OFFSET'
112336          , p_ae_header_id           => l_ae_header_id
112337          );
112338 
112339    --
112340    -- set rounding class
112341    --
112342    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
112343                       'OFFSET';
112344 
112345    --
112346    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
112347    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
112348    --
112349    -- bulk performance
112350    --
112351    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
112352 
112353    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
112354       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
112355 
112356    -- 4955764
112357    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
112358       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
112359 
112360    -- 4458381 Public Sector Enh
112361    
112362    --
112363    -- set accounting attributes for the line type
112364    --
112365    l_entered_amt_idx := 3;
112366    l_accted_amt_idx  := 8;
112367    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
112368    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
112369    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
112370    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
112371    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
112372    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
112373    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
112374    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
112375    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
112376    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
112377    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
112378    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
112379    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
112380    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
112381    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
112382    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
112383    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
112384 
112385    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
112386    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
112387 
112388    ---------------------------------------------------------------------------------------------------------------
112389    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
112390    ---------------------------------------------------------------------------------------------------------------
112391    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
112392 
112393    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
112394    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
112395 
112396    IF xla_accounting_cache_pkg.GetValueChar
112397          (p_source_code         => 'LEDGER_CATEGORY_CODE'
112398          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
112399    AND l_bflow_method_code = 'PRIOR_ENTRY'
112400 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
112401    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
112402          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
112403        )
112404    THEN
112405          xla_ae_lines_pkg.BflowUpgEntry
112406            (p_business_method_code    => l_bflow_method_code
112407            ,p_business_class_code     => l_bflow_class_code
112408            ,p_balance_type            => l_balance_type_code);
112409    ELSE
112410       NULL;
112411 -- No business flow processing for business flow method of NONE.
112412    END IF;
112413 
112414    --
112415    -- call analytical criteria
112416    --
112417    
112418    --
112419    -- call description
112420    --
112421    -- No description or it is inherited.
112422    --
112423    -- call ADRs
112424    -- Bug 4922099
112425    --
112426    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
112427         (NVL(l_actual_upg_option, 'N') = 'O') OR
112428         (NVL(l_enc_upg_option, 'N') = 'O')
112429       )
112430    THEN
112431    NULL;
112432    --
112433    --
112434    
112435   l_ccid := AcctDerRule_4(
112436            p_application_id           => p_application_id
112437          , p_ae_header_id             => l_ae_header_id 
112438 , p_source_4 => p_source_4
112439          , x_transaction_coa_id       => l_adr_transaction_coa_id
112440          , x_accounting_coa_id        => l_adr_accounting_coa_id
112441          , x_value_type_code          => l_adr_value_type_code
112442          , p_side                     => 'NA'
112443    );
112444 
112445    xla_ae_lines_pkg.set_ccid(
112446     p_code_combination_id          => l_ccid
112447   , p_value_type_code              => l_adr_value_type_code
112448   , p_transaction_coa_id           => l_adr_transaction_coa_id
112449   , p_accounting_coa_id            => l_adr_accounting_coa_id
112450   , p_adr_code                     => 'CST_DEFAULT'
112451   , p_adr_type_code                => 'S'
112452   , p_component_type               => l_component_type
112453   , p_component_code               => l_component_code
112454   , p_component_type_code          => l_component_type_code
112455   , p_component_appl_id            => l_component_appl_id
112456   , p_amb_context_code             => l_amb_context_code
112457   , p_side                         => 'NA'
112458   );
112459 
112460 
112461    --
112462    --
112463    END IF;
112464    --
112465    -- Bug 4922099
112466    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
112467           (NVL(l_enc_upg_option, 'N') = 'O')
112468         ) AND
112469         (l_bflow_method_code = 'PRIOR_ENTRY')
112470       )
112471    THEN
112472       IF
112473       --
112474       1 = 2
112475       --
112476       THEN
112477       xla_accounting_err_pkg.build_message
112478                                     (p_appli_s_name            => 'XLA'
112479                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
112480                                     ,p_token_1                 => 'LINE_NUMBER'
112481                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
112482                                     ,p_token_2                 => 'LINE_TYPE_NAME'
112483                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
112484                                                                              l_component_type
112485                                                                             ,l_component_code
112486                                                                             ,l_component_type_code
112487                                                                             ,l_component_appl_id
112488                                                                             ,l_amb_context_code
112489                                                                             ,l_entity_code
112490                                                                             ,l_event_class_code
112491                                                                            )
112492                                     ,p_token_3                 => 'OWNER'
112493                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
112494                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
112495                                                                           ,p_lookup_code    => l_component_type_code
112496                                                                          )
112497                                     ,p_token_4                 => 'PRODUCT_NAME'
112498                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
112499                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
112500                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
112501                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
112502                                     ,p_ae_header_id            =>  NULL
112503                                        );
112504 
112505         IF (C_LEVEL_ERROR>= g_log_level) THEN
112506                  trace
112507                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
112508                       ,p_level    => C_LEVEL_ERROR
112509                       ,p_module   => l_log_module);
112510         END IF;
112511       END IF;
112512    END IF;
112513    --
112514    --
112515    ------------------------------------------------------------------------------------------------
112516    -- 4219869 Business Flow
112517    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
112518    -- Prior Entry.  Currently, the following code is always generated.
112519    ------------------------------------------------------------------------------------------------
112520    XLA_AE_LINES_PKG.ValidateCurrentLine;
112521 
112522    ------------------------------------------------------------------------------------
112523    -- 4219869 Business Flow
112524    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
112525    ------------------------------------------------------------------------------------
112526    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
112527 
112528    ----------------------------------------------------------------------------------
112529    -- 4219869 Business Flow
112530    -- Update journal entry status -- Need to generate this within IF <condition>
112531    ----------------------------------------------------------------------------------
112532    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
112533          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
112534          ,p_balance_type_code => l_balance_type_code
112535          );
112536 
112537    -------------------------------------------------------------------------------------------
112538    -- 4262811 - Generate the Accrual Reversal lines
112539    -------------------------------------------------------------------------------------------
112540    BEGIN
112541       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
112542                               (g_array_event(p_event_id).array_value_num('header_index'));
112543       IF l_acc_rev_flag IS NULL THEN
112544          l_acc_rev_flag := 'N';
112545       END IF;
112546    EXCEPTION
112547       WHEN OTHERS THEN
112548          l_acc_rev_flag := 'N';
112549    END;
112550    --
112551    IF (l_acc_rev_flag = 'Y') THEN
112552 
112553        -- 4645092  ------------------------------------------------------------------------------
112554        -- To allow MPA report to determine if it should generate report process
112555        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
112556        ------------------------------------------------------------------------------------------
112557 
112558        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
112559        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
112560    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
112561    -- call ADRs
112562    -- Bug 4922099
112563    --
112564    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
112565         (NVL(l_actual_upg_option, 'N') = 'O') OR
112566         (NVL(l_enc_upg_option, 'N') = 'O')
112567       )
112568    THEN
112569    NULL;
112570    --
112571    --
112572    
112573   l_ccid := AcctDerRule_4(
112574            p_application_id           => p_application_id
112575          , p_ae_header_id             => l_ae_header_id 
112576 , p_source_4 => p_source_4
112577          , x_transaction_coa_id       => l_adr_transaction_coa_id
112578          , x_accounting_coa_id        => l_adr_accounting_coa_id
112579          , x_value_type_code          => l_adr_value_type_code
112580          , p_side                     => 'NA'
112581    );
112582 
112583    xla_ae_lines_pkg.set_ccid(
112584     p_code_combination_id          => l_ccid
112585   , p_value_type_code              => l_adr_value_type_code
112586   , p_transaction_coa_id           => l_adr_transaction_coa_id
112587   , p_accounting_coa_id            => l_adr_accounting_coa_id
112588   , p_adr_code                     => 'CST_DEFAULT'
112589   , p_adr_type_code                => 'S'
112590   , p_component_type               => l_component_type
112591   , p_component_code               => l_component_code
112592   , p_component_type_code          => l_component_type_code
112593   , p_component_appl_id            => l_component_appl_id
112594   , p_amb_context_code             => l_amb_context_code
112595   , p_side                         => 'NA'
112596   );
112597 
112598 
112599    --
112600    --
112601    END IF;
112602 
112603        --
112604        -- Update the line information that should be overwritten
112605        --
112606        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
112607                                          p_header_num   => 1);
112608        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
112609 
112610        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
112611 
112612        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
112613           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
112614        END IF;
112615 
112616       --
112617       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
112618       --
112619       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
112620           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
112621       ELSE
112622           ---------------------------------------------------------------------------------------------------
112623           -- 4262811a Switch Sign
112624           ---------------------------------------------------------------------------------------------------
112625           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
112626           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
112627                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112628           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
112629                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112630           -- 5132302
112631           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
112632                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112633 
112634       END IF;
112635 
112636       -- 4955764
112637       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
112638       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
112639 
112640 
112641       XLA_AE_LINES_PKG.ValidateCurrentLine;
112642       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
112643 
112644       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
112645                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
112646                ,p_balance_type_code => l_balance_type_code);
112647 
112648    END IF;
112649 
112650    -----------------------------------------------------------------------------------------
112651    -- 4262811 Multiperiod Accounting
112652    -----------------------------------------------------------------------------------------
112653      -- No MPA option is assigned.
112654 
112655 
112656 END IF;
112657 END IF;
112658 --
112659 
112660 --
112661 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
112662    trace
112663       (p_msg      => 'END of AcctLineType_204'
112664       ,p_level    => C_LEVEL_PROCEDURE
112665       ,p_module   => l_log_module);
112666 END IF;
112667 --
112668 EXCEPTION
112669   WHEN xla_exceptions_pkg.application_exception THEN
112670       RAISE;
112671   WHEN OTHERS THEN
112672        xla_exceptions_pkg.raise_message
112673            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_204');
112674 END AcctLineType_204;
112675 --
112676 
112677 ---------------------------------------
112678 --
112679 -- PRIVATE FUNCTION
112680 --         AcctLineType_205
112681 --
112682 ---------------------------------------
112683 PROCEDURE AcctLineType_205 (
112684   p_application_id        IN NUMBER
112685  ,p_event_id              IN NUMBER
112686  ,p_calculate_acctd_flag  IN VARCHAR2
112687  ,p_calculate_g_l_flag    IN VARCHAR2
112688  ,p_actual_flag           IN OUT VARCHAR2
112689  ,p_balance_type_code     OUT VARCHAR2
112690  ,p_gain_or_loss_ref      OUT VARCHAR2
112691  
112692 --Cost Management Default Account
112693  , p_source_4            IN NUMBER
112694 --DISTRIBUTION_IDENTIFIER
112695  , p_source_11            IN NUMBER
112696 --Distribution Type
112697  , p_source_12            IN VARCHAR2
112698  , p_source_12_meaning    IN VARCHAR2
112699 --Entered Currency Code
112700  , p_source_15            IN VARCHAR2
112701 --Entered Amount
112702  , p_source_18            IN NUMBER
112703 --Currency Conversion Date
112704  , p_source_19            IN DATE
112705 --Currency Conversion Rate
112706  , p_source_20            IN NUMBER
112707 --Currency Conversion Type
112708  , p_source_21            IN VARCHAR2
112709 --Accounted Amount
112710  , p_source_22            IN NUMBER
112711 --Accounting Line Type
112712  , p_source_24            IN NUMBER
112713 )
112714 IS
112715 
112716 l_component_type              VARCHAR2(80);
112717 l_component_code              VARCHAR2(30);
112718 l_component_type_code         VARCHAR2(1);
112719 l_component_appl_id           INTEGER;
112720 l_amb_context_code            VARCHAR2(30);
112721 l_entity_code                 VARCHAR2(30);
112722 l_event_class_code            VARCHAR2(30);
112723 l_ae_header_id                NUMBER;
112724 l_event_type_code             VARCHAR2(30);
112725 l_line_definition_code        VARCHAR2(30);
112726 l_line_definition_owner_code  VARCHAR2(1);
112727 --
112728 -- adr variables
112729 l_segment                     VARCHAR2(30);
112730 l_ccid                        NUMBER;
112731 l_adr_transaction_coa_id      NUMBER;
112732 l_adr_accounting_coa_id       NUMBER;
112733 l_adr_flexfield_segment_code  VARCHAR2(30);
112734 l_adr_flex_value_set_id       NUMBER;
112735 l_adr_value_type_code         VARCHAR2(30);
112736 l_adr_value_combination_id    NUMBER;
112737 l_adr_value_segment_code      VARCHAR2(30);
112738 
112739 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
112740 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
112741 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
112742 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
112743 
112744 -- 4262811 Variables ------------------------------------------------------------------------------------------
112745 l_entered_amt_idx             NUMBER;
112746 l_accted_amt_idx              NUMBER;
112747 l_acc_rev_flag                VARCHAR2(1);
112748 l_accrual_line_num            NUMBER;
112749 l_tmp_amt                     NUMBER;
112750 l_acc_rev_natural_side_code   VARCHAR2(1);
112751 
112752 l_num_entries                 NUMBER;
112753 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
112754 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
112755 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
112756 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
112757 l_recog_line_1                NUMBER;
112758 l_recog_line_2                NUMBER;
112759 
112760 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
112761 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
112762 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
112763 
112764 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
112765 
112766 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
112767 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
112768 
112769 ---------------------------------------------------------------------------------------------------------------
112770 
112771 
112772 --
112773 -- bulk performance
112774 --
112775 l_balance_type_code           VARCHAR2(1);
112776 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
112777 l_log_module                  VARCHAR2(240);
112778 
112779 --
112780 -- Upgrade strategy
112781 --
112782 l_actual_upg_option           VARCHAR2(1);
112783 l_enc_upg_option           VARCHAR2(1);
112784 
112785 --
112786 BEGIN
112787 --
112788 IF g_log_enabled THEN
112789       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_205';
112790 END IF;
112791 --
112792 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
112793 
112794       trace
112795          (p_msg      => 'BEGIN of AcctLineType_205'
112796          ,p_level    => C_LEVEL_PROCEDURE
112797          ,p_module   => l_log_module);
112798 
112799 END IF;
112800 --
112801 l_component_type             := 'AMB_JLT';
112802 l_component_code             := 'OFFSET';
112803 l_component_type_code        := 'S';
112804 l_component_appl_id          :=  707;
112805 l_amb_context_code           := 'DEFAULT';
112806 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
112807 l_event_class_code           := 'USER_DEFINE';
112808 l_event_type_code            := 'UDIR_INTERORG_SHIP_NO_TP';
112809 l_line_definition_owner_code := 'S';
112810 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_NO_TP';
112811 --
112812 l_balance_type_code          := 'A';
112813 l_segment                     := NULL;
112814 l_ccid                        := NULL;
112815 l_adr_transaction_coa_id      := NULL;
112816 l_adr_accounting_coa_id       := NULL;
112817 l_adr_flexfield_segment_code  := NULL;
112818 l_adr_flex_value_set_id       := NULL;
112819 l_adr_value_type_code         := NULL;
112820 l_adr_value_combination_id    := NULL;
112821 l_adr_value_segment_code      := NULL;
112822 
112823 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
112824 l_bflow_class_code           := '';    -- 4219869 Business Flow
112825 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
112826 l_budgetary_control_flag     := 'N';
112827 
112828 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
112829 l_bflow_applied_to_amt       := NULL; -- 5132302
112830 l_entered_amt_idx            := NULL;          -- 4262811
112831 l_accted_amt_idx             := NULL;          -- 4262811
112832 l_acc_rev_flag               := NULL;          -- 4262811
112833 l_accrual_line_num           := NULL;          -- 4262811
112834 l_tmp_amt                    := NULL;          -- 4262811
112835 --
112836  
112837 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
112838     l_balance_type_code <> 'B' THEN
112839 IF NVL(p_source_24,9E125) =  2
112840  THEN 
112841 
112842    --
112843    XLA_AE_LINES_PKG.SetNewLine;
112844 
112845    p_balance_type_code          := l_balance_type_code;
112846    -- set the flag so later we will know whether the gain loss line needs to be created
112847    
112848    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
112849      p_actual_flag :='A';
112850    END IF;
112851 
112852    --
112853    -- bulk performance
112854    --
112855    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
112856                                       p_header_num   => 0); -- 4262811
112857    --
112858    -- set accounting line options
112859    --
112860    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
112861            p_natural_side_code          => 'D'
112862          , p_gain_or_loss_flag          => 'N'
112863          , p_gl_transfer_mode_code      => 'S'
112864          , p_acct_entry_type_code       => 'A'
112865          , p_switch_side_flag           => 'Y'
112866          , p_merge_duplicate_code       => 'N'
112867          );
112868    --
112869    l_acc_rev_natural_side_code := 'C';  -- 4262811
112870    -- 
112871    --
112872    -- set accounting line type info
112873    --
112874    xla_ae_lines_pkg.SetAcctLineType
112875       (p_component_type             => l_component_type
112876       ,p_event_type_code            => l_event_type_code
112877       ,p_line_definition_owner_code => l_line_definition_owner_code
112878       ,p_line_definition_code       => l_line_definition_code
112879       ,p_accounting_line_code       => l_component_code
112880       ,p_accounting_line_type_code  => l_component_type_code
112881       ,p_accounting_line_appl_id    => l_component_appl_id
112882       ,p_amb_context_code           => l_amb_context_code
112883       ,p_entity_code                => l_entity_code
112884       ,p_event_class_code           => l_event_class_code);
112885    --
112886    -- set accounting class
112887    --
112888    xla_ae_lines_pkg.SetAcctClass(
112889            p_accounting_class_code  => 'OFFSET'
112890          , p_ae_header_id           => l_ae_header_id
112891          );
112892 
112893    --
112894    -- set rounding class
112895    --
112896    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
112897                       'OFFSET';
112898 
112899    --
112900    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
112901    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
112902    --
112903    -- bulk performance
112904    --
112905    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
112906 
112907    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
112908       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
112909 
112910    -- 4955764
112911    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
112912       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
112913 
112914    -- 4458381 Public Sector Enh
112915    
112916    --
112917    -- set accounting attributes for the line type
112918    --
112919    l_entered_amt_idx := 3;
112920    l_accted_amt_idx  := 8;
112921    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
112922    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
112923    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
112924    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
112925    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
112926    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
112927    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
112928    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
112929    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
112930    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
112931    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
112932    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
112933    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
112934    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
112935    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
112936    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
112937    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
112938 
112939    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
112940    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
112941 
112942    ---------------------------------------------------------------------------------------------------------------
112943    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
112944    ---------------------------------------------------------------------------------------------------------------
112945    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
112946 
112947    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
112948    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
112949 
112950    IF xla_accounting_cache_pkg.GetValueChar
112951          (p_source_code         => 'LEDGER_CATEGORY_CODE'
112952          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
112953    AND l_bflow_method_code = 'PRIOR_ENTRY'
112954 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
112955    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
112956          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
112957        )
112958    THEN
112959          xla_ae_lines_pkg.BflowUpgEntry
112960            (p_business_method_code    => l_bflow_method_code
112961            ,p_business_class_code     => l_bflow_class_code
112962            ,p_balance_type            => l_balance_type_code);
112963    ELSE
112964       NULL;
112965 -- No business flow processing for business flow method of NONE.
112966    END IF;
112967 
112968    --
112969    -- call analytical criteria
112970    --
112971    
112972    --
112973    -- call description
112974    --
112975    -- No description or it is inherited.
112976    --
112977    -- call ADRs
112978    -- Bug 4922099
112979    --
112980    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
112981         (NVL(l_actual_upg_option, 'N') = 'O') OR
112982         (NVL(l_enc_upg_option, 'N') = 'O')
112983       )
112984    THEN
112985    NULL;
112986    --
112987    --
112988    
112989   l_ccid := AcctDerRule_4(
112990            p_application_id           => p_application_id
112991          , p_ae_header_id             => l_ae_header_id 
112992 , p_source_4 => p_source_4
112993          , x_transaction_coa_id       => l_adr_transaction_coa_id
112994          , x_accounting_coa_id        => l_adr_accounting_coa_id
112995          , x_value_type_code          => l_adr_value_type_code
112996          , p_side                     => 'NA'
112997    );
112998 
112999    xla_ae_lines_pkg.set_ccid(
113000     p_code_combination_id          => l_ccid
113001   , p_value_type_code              => l_adr_value_type_code
113002   , p_transaction_coa_id           => l_adr_transaction_coa_id
113003   , p_accounting_coa_id            => l_adr_accounting_coa_id
113004   , p_adr_code                     => 'CST_DEFAULT'
113005   , p_adr_type_code                => 'S'
113006   , p_component_type               => l_component_type
113007   , p_component_code               => l_component_code
113008   , p_component_type_code          => l_component_type_code
113009   , p_component_appl_id            => l_component_appl_id
113010   , p_amb_context_code             => l_amb_context_code
113011   , p_side                         => 'NA'
113012   );
113013 
113014 
113015    --
113016    --
113017    END IF;
113018    --
113019    -- Bug 4922099
113020    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
113021           (NVL(l_enc_upg_option, 'N') = 'O')
113022         ) AND
113023         (l_bflow_method_code = 'PRIOR_ENTRY')
113024       )
113025    THEN
113026       IF
113027       --
113028       1 = 2
113029       --
113030       THEN
113031       xla_accounting_err_pkg.build_message
113032                                     (p_appli_s_name            => 'XLA'
113033                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
113034                                     ,p_token_1                 => 'LINE_NUMBER'
113035                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
113036                                     ,p_token_2                 => 'LINE_TYPE_NAME'
113037                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
113038                                                                              l_component_type
113039                                                                             ,l_component_code
113040                                                                             ,l_component_type_code
113041                                                                             ,l_component_appl_id
113042                                                                             ,l_amb_context_code
113043                                                                             ,l_entity_code
113044                                                                             ,l_event_class_code
113045                                                                            )
113046                                     ,p_token_3                 => 'OWNER'
113047                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
113048                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
113049                                                                           ,p_lookup_code    => l_component_type_code
113050                                                                          )
113051                                     ,p_token_4                 => 'PRODUCT_NAME'
113052                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
113053                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
113054                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
113055                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
113056                                     ,p_ae_header_id            =>  NULL
113057                                        );
113058 
113059         IF (C_LEVEL_ERROR>= g_log_level) THEN
113060                  trace
113061                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
113062                       ,p_level    => C_LEVEL_ERROR
113063                       ,p_module   => l_log_module);
113064         END IF;
113065       END IF;
113066    END IF;
113067    --
113068    --
113069    ------------------------------------------------------------------------------------------------
113070    -- 4219869 Business Flow
113071    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
113072    -- Prior Entry.  Currently, the following code is always generated.
113073    ------------------------------------------------------------------------------------------------
113074    XLA_AE_LINES_PKG.ValidateCurrentLine;
113075 
113076    ------------------------------------------------------------------------------------
113077    -- 4219869 Business Flow
113078    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
113079    ------------------------------------------------------------------------------------
113080    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
113081 
113082    ----------------------------------------------------------------------------------
113083    -- 4219869 Business Flow
113084    -- Update journal entry status -- Need to generate this within IF <condition>
113085    ----------------------------------------------------------------------------------
113086    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
113087          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
113088          ,p_balance_type_code => l_balance_type_code
113089          );
113090 
113091    -------------------------------------------------------------------------------------------
113092    -- 4262811 - Generate the Accrual Reversal lines
113093    -------------------------------------------------------------------------------------------
113094    BEGIN
113095       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
113096                               (g_array_event(p_event_id).array_value_num('header_index'));
113097       IF l_acc_rev_flag IS NULL THEN
113098          l_acc_rev_flag := 'N';
113099       END IF;
113100    EXCEPTION
113101       WHEN OTHERS THEN
113102          l_acc_rev_flag := 'N';
113103    END;
113104    --
113105    IF (l_acc_rev_flag = 'Y') THEN
113106 
113107        -- 4645092  ------------------------------------------------------------------------------
113108        -- To allow MPA report to determine if it should generate report process
113109        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
113110        ------------------------------------------------------------------------------------------
113111 
113112        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
113113        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
113114    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
113115    -- call ADRs
113116    -- Bug 4922099
113117    --
113118    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
113119         (NVL(l_actual_upg_option, 'N') = 'O') OR
113120         (NVL(l_enc_upg_option, 'N') = 'O')
113121       )
113122    THEN
113123    NULL;
113124    --
113125    --
113126    
113127   l_ccid := AcctDerRule_4(
113128            p_application_id           => p_application_id
113129          , p_ae_header_id             => l_ae_header_id 
113130 , p_source_4 => p_source_4
113131          , x_transaction_coa_id       => l_adr_transaction_coa_id
113132          , x_accounting_coa_id        => l_adr_accounting_coa_id
113133          , x_value_type_code          => l_adr_value_type_code
113134          , p_side                     => 'NA'
113135    );
113136 
113137    xla_ae_lines_pkg.set_ccid(
113138     p_code_combination_id          => l_ccid
113139   , p_value_type_code              => l_adr_value_type_code
113140   , p_transaction_coa_id           => l_adr_transaction_coa_id
113141   , p_accounting_coa_id            => l_adr_accounting_coa_id
113142   , p_adr_code                     => 'CST_DEFAULT'
113143   , p_adr_type_code                => 'S'
113144   , p_component_type               => l_component_type
113145   , p_component_code               => l_component_code
113146   , p_component_type_code          => l_component_type_code
113147   , p_component_appl_id            => l_component_appl_id
113148   , p_amb_context_code             => l_amb_context_code
113149   , p_side                         => 'NA'
113150   );
113151 
113152 
113153    --
113154    --
113155    END IF;
113156 
113157        --
113158        -- Update the line information that should be overwritten
113159        --
113160        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
113161                                          p_header_num   => 1);
113162        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
113163 
113164        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
113165 
113166        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
113167           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
113168        END IF;
113169 
113170       --
113171       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
113172       --
113173       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
113174           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
113175       ELSE
113176           ---------------------------------------------------------------------------------------------------
113177           -- 4262811a Switch Sign
113178           ---------------------------------------------------------------------------------------------------
113179           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
113180           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
113181                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113182           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
113183                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113184           -- 5132302
113185           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
113186                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113187 
113188       END IF;
113189 
113190       -- 4955764
113191       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
113192       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
113193 
113194 
113195       XLA_AE_LINES_PKG.ValidateCurrentLine;
113196       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
113197 
113198       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
113199                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
113200                ,p_balance_type_code => l_balance_type_code);
113201 
113202    END IF;
113203 
113204    -----------------------------------------------------------------------------------------
113205    -- 4262811 Multiperiod Accounting
113206    -----------------------------------------------------------------------------------------
113207      -- No MPA option is assigned.
113208 
113209 
113210 END IF;
113211 END IF;
113212 --
113213 
113214 --
113215 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
113216    trace
113217       (p_msg      => 'END of AcctLineType_205'
113218       ,p_level    => C_LEVEL_PROCEDURE
113219       ,p_module   => l_log_module);
113220 END IF;
113221 --
113222 EXCEPTION
113223   WHEN xla_exceptions_pkg.application_exception THEN
113224       RAISE;
113225   WHEN OTHERS THEN
113226        xla_exceptions_pkg.raise_message
113227            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_205');
113228 END AcctLineType_205;
113229 --
113230 
113231 ---------------------------------------
113232 --
113233 -- PRIVATE FUNCTION
113234 --         AcctLineType_206
113235 --
113236 ---------------------------------------
113237 PROCEDURE AcctLineType_206 (
113238   p_application_id        IN NUMBER
113239  ,p_event_id              IN NUMBER
113240  ,p_calculate_acctd_flag  IN VARCHAR2
113241  ,p_calculate_g_l_flag    IN VARCHAR2
113242  ,p_actual_flag           IN OUT VARCHAR2
113243  ,p_balance_type_code     OUT VARCHAR2
113244  ,p_gain_or_loss_ref      OUT VARCHAR2
113245  
113246 --Cost Management Default Account
113247  , p_source_4            IN NUMBER
113248 --DISTRIBUTION_IDENTIFIER
113249  , p_source_11            IN NUMBER
113250 --Distribution Type
113251  , p_source_12            IN VARCHAR2
113252  , p_source_12_meaning    IN VARCHAR2
113253 --Entered Currency Code
113254  , p_source_15            IN VARCHAR2
113255 --Entered Amount
113256  , p_source_18            IN NUMBER
113257 --Currency Conversion Date
113258  , p_source_19            IN DATE
113259 --Currency Conversion Rate
113260  , p_source_20            IN NUMBER
113261 --Currency Conversion Type
113262  , p_source_21            IN VARCHAR2
113263 --Accounted Amount
113264  , p_source_22            IN NUMBER
113265 --Accounting Line Type
113266  , p_source_24            IN NUMBER
113267 )
113268 IS
113269 
113270 l_component_type              VARCHAR2(80);
113271 l_component_code              VARCHAR2(30);
113272 l_component_type_code         VARCHAR2(1);
113273 l_component_appl_id           INTEGER;
113274 l_amb_context_code            VARCHAR2(30);
113275 l_entity_code                 VARCHAR2(30);
113276 l_event_class_code            VARCHAR2(30);
113277 l_ae_header_id                NUMBER;
113278 l_event_type_code             VARCHAR2(30);
113279 l_line_definition_code        VARCHAR2(30);
113280 l_line_definition_owner_code  VARCHAR2(1);
113281 --
113282 -- adr variables
113283 l_segment                     VARCHAR2(30);
113284 l_ccid                        NUMBER;
113285 l_adr_transaction_coa_id      NUMBER;
113286 l_adr_accounting_coa_id       NUMBER;
113287 l_adr_flexfield_segment_code  VARCHAR2(30);
113288 l_adr_flex_value_set_id       NUMBER;
113289 l_adr_value_type_code         VARCHAR2(30);
113290 l_adr_value_combination_id    NUMBER;
113291 l_adr_value_segment_code      VARCHAR2(30);
113292 
113293 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
113294 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
113295 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
113296 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
113297 
113298 -- 4262811 Variables ------------------------------------------------------------------------------------------
113299 l_entered_amt_idx             NUMBER;
113300 l_accted_amt_idx              NUMBER;
113301 l_acc_rev_flag                VARCHAR2(1);
113302 l_accrual_line_num            NUMBER;
113303 l_tmp_amt                     NUMBER;
113304 l_acc_rev_natural_side_code   VARCHAR2(1);
113305 
113306 l_num_entries                 NUMBER;
113307 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
113308 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
113309 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
113310 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
113311 l_recog_line_1                NUMBER;
113312 l_recog_line_2                NUMBER;
113313 
113314 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
113315 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
113316 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
113317 
113318 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
113319 
113320 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
113321 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
113322 
113323 ---------------------------------------------------------------------------------------------------------------
113324 
113325 
113326 --
113327 -- bulk performance
113328 --
113329 l_balance_type_code           VARCHAR2(1);
113330 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
113331 l_log_module                  VARCHAR2(240);
113332 
113333 --
113334 -- Upgrade strategy
113335 --
113336 l_actual_upg_option           VARCHAR2(1);
113337 l_enc_upg_option           VARCHAR2(1);
113338 
113339 --
113340 BEGIN
113341 --
113342 IF g_log_enabled THEN
113343       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_206';
113344 END IF;
113345 --
113346 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
113347 
113348       trace
113349          (p_msg      => 'BEGIN of AcctLineType_206'
113350          ,p_level    => C_LEVEL_PROCEDURE
113351          ,p_module   => l_log_module);
113352 
113353 END IF;
113354 --
113355 l_component_type             := 'AMB_JLT';
113356 l_component_code             := 'OFFSET';
113357 l_component_type_code        := 'S';
113358 l_component_appl_id          :=  707;
113359 l_amb_context_code           := 'DEFAULT';
113360 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
113361 l_event_class_code           := 'USER_DEFINE';
113362 l_event_type_code            := 'UFOB_RCPT_SENDER_SHIP';
113363 l_line_definition_owner_code := 'S';
113364 l_line_definition_code       := 'USER_FOB_RCPT_SENDER_SHIP';
113365 --
113366 l_balance_type_code          := 'A';
113367 l_segment                     := NULL;
113368 l_ccid                        := NULL;
113369 l_adr_transaction_coa_id      := NULL;
113370 l_adr_accounting_coa_id       := NULL;
113371 l_adr_flexfield_segment_code  := NULL;
113372 l_adr_flex_value_set_id       := NULL;
113373 l_adr_value_type_code         := NULL;
113374 l_adr_value_combination_id    := NULL;
113375 l_adr_value_segment_code      := NULL;
113376 
113377 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
113378 l_bflow_class_code           := '';    -- 4219869 Business Flow
113379 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
113380 l_budgetary_control_flag     := 'N';
113381 
113382 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
113383 l_bflow_applied_to_amt       := NULL; -- 5132302
113384 l_entered_amt_idx            := NULL;          -- 4262811
113385 l_accted_amt_idx             := NULL;          -- 4262811
113386 l_acc_rev_flag               := NULL;          -- 4262811
113387 l_accrual_line_num           := NULL;          -- 4262811
113388 l_tmp_amt                    := NULL;          -- 4262811
113389 --
113390  
113391 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
113392     l_balance_type_code <> 'B' THEN
113393 IF NVL(p_source_24,9E125) =  2
113394  THEN 
113395 
113396    --
113397    XLA_AE_LINES_PKG.SetNewLine;
113398 
113399    p_balance_type_code          := l_balance_type_code;
113400    -- set the flag so later we will know whether the gain loss line needs to be created
113401    
113402    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
113403      p_actual_flag :='A';
113404    END IF;
113405 
113406    --
113407    -- bulk performance
113408    --
113409    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
113410                                       p_header_num   => 0); -- 4262811
113411    --
113412    -- set accounting line options
113413    --
113414    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
113415            p_natural_side_code          => 'D'
113416          , p_gain_or_loss_flag          => 'N'
113417          , p_gl_transfer_mode_code      => 'S'
113418          , p_acct_entry_type_code       => 'A'
113419          , p_switch_side_flag           => 'Y'
113420          , p_merge_duplicate_code       => 'N'
113421          );
113422    --
113423    l_acc_rev_natural_side_code := 'C';  -- 4262811
113424    -- 
113425    --
113426    -- set accounting line type info
113427    --
113428    xla_ae_lines_pkg.SetAcctLineType
113429       (p_component_type             => l_component_type
113430       ,p_event_type_code            => l_event_type_code
113431       ,p_line_definition_owner_code => l_line_definition_owner_code
113432       ,p_line_definition_code       => l_line_definition_code
113433       ,p_accounting_line_code       => l_component_code
113434       ,p_accounting_line_type_code  => l_component_type_code
113435       ,p_accounting_line_appl_id    => l_component_appl_id
113436       ,p_amb_context_code           => l_amb_context_code
113437       ,p_entity_code                => l_entity_code
113438       ,p_event_class_code           => l_event_class_code);
113439    --
113440    -- set accounting class
113441    --
113442    xla_ae_lines_pkg.SetAcctClass(
113443            p_accounting_class_code  => 'OFFSET'
113444          , p_ae_header_id           => l_ae_header_id
113445          );
113446 
113447    --
113448    -- set rounding class
113449    --
113450    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
113451                       'OFFSET';
113452 
113453    --
113454    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
113455    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
113456    --
113457    -- bulk performance
113458    --
113459    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
113460 
113461    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
113462       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
113463 
113464    -- 4955764
113465    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
113466       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
113467 
113468    -- 4458381 Public Sector Enh
113469    
113470    --
113471    -- set accounting attributes for the line type
113472    --
113473    l_entered_amt_idx := 3;
113474    l_accted_amt_idx  := 8;
113475    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
113476    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
113477    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
113478    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
113479    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
113480    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
113481    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
113482    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
113483    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
113484    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
113485    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
113486    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
113487    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
113488    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
113489    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
113490    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
113491    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
113492 
113493    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
113494    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
113495 
113496    ---------------------------------------------------------------------------------------------------------------
113497    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
113498    ---------------------------------------------------------------------------------------------------------------
113499    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
113500 
113501    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
113502    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
113503 
113504    IF xla_accounting_cache_pkg.GetValueChar
113505          (p_source_code         => 'LEDGER_CATEGORY_CODE'
113506          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
113507    AND l_bflow_method_code = 'PRIOR_ENTRY'
113508 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
113509    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
113510          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
113511        )
113512    THEN
113513          xla_ae_lines_pkg.BflowUpgEntry
113514            (p_business_method_code    => l_bflow_method_code
113515            ,p_business_class_code     => l_bflow_class_code
113516            ,p_balance_type            => l_balance_type_code);
113517    ELSE
113518       NULL;
113519 -- No business flow processing for business flow method of NONE.
113520    END IF;
113521 
113522    --
113523    -- call analytical criteria
113524    --
113525    
113526    --
113527    -- call description
113528    --
113529    -- No description or it is inherited.
113530    --
113531    -- call ADRs
113532    -- Bug 4922099
113533    --
113534    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
113535         (NVL(l_actual_upg_option, 'N') = 'O') OR
113536         (NVL(l_enc_upg_option, 'N') = 'O')
113537       )
113538    THEN
113539    NULL;
113540    --
113541    --
113542    
113543   l_ccid := AcctDerRule_4(
113544            p_application_id           => p_application_id
113545          , p_ae_header_id             => l_ae_header_id 
113546 , p_source_4 => p_source_4
113547          , x_transaction_coa_id       => l_adr_transaction_coa_id
113548          , x_accounting_coa_id        => l_adr_accounting_coa_id
113549          , x_value_type_code          => l_adr_value_type_code
113550          , p_side                     => 'NA'
113551    );
113552 
113553    xla_ae_lines_pkg.set_ccid(
113554     p_code_combination_id          => l_ccid
113555   , p_value_type_code              => l_adr_value_type_code
113556   , p_transaction_coa_id           => l_adr_transaction_coa_id
113557   , p_accounting_coa_id            => l_adr_accounting_coa_id
113558   , p_adr_code                     => 'CST_DEFAULT'
113559   , p_adr_type_code                => 'S'
113560   , p_component_type               => l_component_type
113561   , p_component_code               => l_component_code
113562   , p_component_type_code          => l_component_type_code
113563   , p_component_appl_id            => l_component_appl_id
113564   , p_amb_context_code             => l_amb_context_code
113565   , p_side                         => 'NA'
113566   );
113567 
113568 
113569    --
113570    --
113571    END IF;
113572    --
113573    -- Bug 4922099
113574    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
113575           (NVL(l_enc_upg_option, 'N') = 'O')
113576         ) AND
113577         (l_bflow_method_code = 'PRIOR_ENTRY')
113578       )
113579    THEN
113580       IF
113581       --
113582       1 = 2
113583       --
113584       THEN
113585       xla_accounting_err_pkg.build_message
113586                                     (p_appli_s_name            => 'XLA'
113587                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
113588                                     ,p_token_1                 => 'LINE_NUMBER'
113589                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
113590                                     ,p_token_2                 => 'LINE_TYPE_NAME'
113591                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
113592                                                                              l_component_type
113593                                                                             ,l_component_code
113594                                                                             ,l_component_type_code
113595                                                                             ,l_component_appl_id
113596                                                                             ,l_amb_context_code
113597                                                                             ,l_entity_code
113598                                                                             ,l_event_class_code
113599                                                                            )
113600                                     ,p_token_3                 => 'OWNER'
113601                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
113602                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
113603                                                                           ,p_lookup_code    => l_component_type_code
113604                                                                          )
113605                                     ,p_token_4                 => 'PRODUCT_NAME'
113606                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
113607                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
113608                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
113609                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
113610                                     ,p_ae_header_id            =>  NULL
113611                                        );
113612 
113613         IF (C_LEVEL_ERROR>= g_log_level) THEN
113614                  trace
113615                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
113616                       ,p_level    => C_LEVEL_ERROR
113617                       ,p_module   => l_log_module);
113618         END IF;
113619       END IF;
113620    END IF;
113621    --
113622    --
113623    ------------------------------------------------------------------------------------------------
113624    -- 4219869 Business Flow
113625    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
113626    -- Prior Entry.  Currently, the following code is always generated.
113627    ------------------------------------------------------------------------------------------------
113628    XLA_AE_LINES_PKG.ValidateCurrentLine;
113629 
113630    ------------------------------------------------------------------------------------
113631    -- 4219869 Business Flow
113632    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
113633    ------------------------------------------------------------------------------------
113634    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
113635 
113636    ----------------------------------------------------------------------------------
113637    -- 4219869 Business Flow
113638    -- Update journal entry status -- Need to generate this within IF <condition>
113639    ----------------------------------------------------------------------------------
113640    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
113641          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
113642          ,p_balance_type_code => l_balance_type_code
113643          );
113644 
113645    -------------------------------------------------------------------------------------------
113646    -- 4262811 - Generate the Accrual Reversal lines
113647    -------------------------------------------------------------------------------------------
113648    BEGIN
113649       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
113650                               (g_array_event(p_event_id).array_value_num('header_index'));
113651       IF l_acc_rev_flag IS NULL THEN
113652          l_acc_rev_flag := 'N';
113653       END IF;
113654    EXCEPTION
113655       WHEN OTHERS THEN
113656          l_acc_rev_flag := 'N';
113657    END;
113658    --
113659    IF (l_acc_rev_flag = 'Y') THEN
113660 
113661        -- 4645092  ------------------------------------------------------------------------------
113662        -- To allow MPA report to determine if it should generate report process
113663        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
113664        ------------------------------------------------------------------------------------------
113665 
113666        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
113667        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
113668    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
113669    -- call ADRs
113670    -- Bug 4922099
113671    --
113672    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
113673         (NVL(l_actual_upg_option, 'N') = 'O') OR
113674         (NVL(l_enc_upg_option, 'N') = 'O')
113675       )
113676    THEN
113677    NULL;
113678    --
113679    --
113680    
113681   l_ccid := AcctDerRule_4(
113682            p_application_id           => p_application_id
113683          , p_ae_header_id             => l_ae_header_id 
113684 , p_source_4 => p_source_4
113685          , x_transaction_coa_id       => l_adr_transaction_coa_id
113686          , x_accounting_coa_id        => l_adr_accounting_coa_id
113687          , x_value_type_code          => l_adr_value_type_code
113688          , p_side                     => 'NA'
113689    );
113690 
113691    xla_ae_lines_pkg.set_ccid(
113692     p_code_combination_id          => l_ccid
113693   , p_value_type_code              => l_adr_value_type_code
113694   , p_transaction_coa_id           => l_adr_transaction_coa_id
113695   , p_accounting_coa_id            => l_adr_accounting_coa_id
113696   , p_adr_code                     => 'CST_DEFAULT'
113697   , p_adr_type_code                => 'S'
113698   , p_component_type               => l_component_type
113699   , p_component_code               => l_component_code
113700   , p_component_type_code          => l_component_type_code
113701   , p_component_appl_id            => l_component_appl_id
113702   , p_amb_context_code             => l_amb_context_code
113703   , p_side                         => 'NA'
113704   );
113705 
113706 
113707    --
113708    --
113709    END IF;
113710 
113711        --
113712        -- Update the line information that should be overwritten
113713        --
113714        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
113715                                          p_header_num   => 1);
113716        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
113717 
113718        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
113719 
113720        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
113721           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
113722        END IF;
113723 
113724       --
113725       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
113726       --
113727       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
113728           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
113729       ELSE
113730           ---------------------------------------------------------------------------------------------------
113731           -- 4262811a Switch Sign
113732           ---------------------------------------------------------------------------------------------------
113733           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
113734           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
113735                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113736           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
113737                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113738           -- 5132302
113739           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
113740                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113741 
113742       END IF;
113743 
113744       -- 4955764
113745       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
113746       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
113747 
113748 
113749       XLA_AE_LINES_PKG.ValidateCurrentLine;
113750       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
113751 
113752       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
113753                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
113754                ,p_balance_type_code => l_balance_type_code);
113755 
113756    END IF;
113757 
113758    -----------------------------------------------------------------------------------------
113759    -- 4262811 Multiperiod Accounting
113760    -----------------------------------------------------------------------------------------
113761      -- No MPA option is assigned.
113762 
113763 
113764 END IF;
113765 END IF;
113766 --
113767 
113768 --
113769 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
113770    trace
113771       (p_msg      => 'END of AcctLineType_206'
113772       ,p_level    => C_LEVEL_PROCEDURE
113773       ,p_module   => l_log_module);
113774 END IF;
113775 --
113776 EXCEPTION
113777   WHEN xla_exceptions_pkg.application_exception THEN
113778       RAISE;
113779   WHEN OTHERS THEN
113780        xla_exceptions_pkg.raise_message
113781            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_206');
113782 END AcctLineType_206;
113783 --
113784 
113785 ---------------------------------------
113786 --
113787 -- PRIVATE FUNCTION
113788 --         AcctLineType_207
113789 --
113790 ---------------------------------------
113791 PROCEDURE AcctLineType_207 (
113792   p_application_id        IN NUMBER
113793  ,p_event_id              IN NUMBER
113794  ,p_calculate_acctd_flag  IN VARCHAR2
113795  ,p_calculate_g_l_flag    IN VARCHAR2
113796  ,p_actual_flag           IN OUT VARCHAR2
113797  ,p_balance_type_code     OUT VARCHAR2
113798  ,p_gain_or_loss_ref      OUT VARCHAR2
113799  
113800 --Cost Management Default Account
113801  , p_source_4            IN NUMBER
113802 --DISTRIBUTION_IDENTIFIER
113803  , p_source_11            IN NUMBER
113804 --Distribution Type
113805  , p_source_12            IN VARCHAR2
113806  , p_source_12_meaning    IN VARCHAR2
113807 --Entered Currency Code
113808  , p_source_15            IN VARCHAR2
113809 --Entered Amount
113810  , p_source_18            IN NUMBER
113811 --Currency Conversion Date
113812  , p_source_19            IN DATE
113813 --Currency Conversion Rate
113814  , p_source_20            IN NUMBER
113815 --Currency Conversion Type
113816  , p_source_21            IN VARCHAR2
113817 --Accounted Amount
113818  , p_source_22            IN NUMBER
113819 --Accounting Line Type
113820  , p_source_24            IN NUMBER
113821 )
113822 IS
113823 
113824 l_component_type              VARCHAR2(80);
113825 l_component_code              VARCHAR2(30);
113826 l_component_type_code         VARCHAR2(1);
113827 l_component_appl_id           INTEGER;
113828 l_amb_context_code            VARCHAR2(30);
113829 l_entity_code                 VARCHAR2(30);
113830 l_event_class_code            VARCHAR2(30);
113831 l_ae_header_id                NUMBER;
113832 l_event_type_code             VARCHAR2(30);
113833 l_line_definition_code        VARCHAR2(30);
113834 l_line_definition_owner_code  VARCHAR2(1);
113835 --
113836 -- adr variables
113837 l_segment                     VARCHAR2(30);
113838 l_ccid                        NUMBER;
113839 l_adr_transaction_coa_id      NUMBER;
113840 l_adr_accounting_coa_id       NUMBER;
113841 l_adr_flexfield_segment_code  VARCHAR2(30);
113842 l_adr_flex_value_set_id       NUMBER;
113843 l_adr_value_type_code         VARCHAR2(30);
113844 l_adr_value_combination_id    NUMBER;
113845 l_adr_value_segment_code      VARCHAR2(30);
113846 
113847 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
113848 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
113849 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
113850 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
113851 
113852 -- 4262811 Variables ------------------------------------------------------------------------------------------
113853 l_entered_amt_idx             NUMBER;
113854 l_accted_amt_idx              NUMBER;
113855 l_acc_rev_flag                VARCHAR2(1);
113856 l_accrual_line_num            NUMBER;
113857 l_tmp_amt                     NUMBER;
113858 l_acc_rev_natural_side_code   VARCHAR2(1);
113859 
113860 l_num_entries                 NUMBER;
113861 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
113862 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
113863 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
113864 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
113865 l_recog_line_1                NUMBER;
113866 l_recog_line_2                NUMBER;
113867 
113868 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
113869 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
113870 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
113871 
113872 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
113873 
113874 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
113875 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
113876 
113877 ---------------------------------------------------------------------------------------------------------------
113878 
113879 
113880 --
113881 -- bulk performance
113882 --
113883 l_balance_type_code           VARCHAR2(1);
113884 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
113885 l_log_module                  VARCHAR2(240);
113886 
113887 --
113888 -- Upgrade strategy
113889 --
113890 l_actual_upg_option           VARCHAR2(1);
113891 l_enc_upg_option           VARCHAR2(1);
113892 
113893 --
113894 BEGIN
113895 --
113896 IF g_log_enabled THEN
113897       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_207';
113898 END IF;
113899 --
113900 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
113901 
113902       trace
113903          (p_msg      => 'BEGIN of AcctLineType_207'
113904          ,p_level    => C_LEVEL_PROCEDURE
113905          ,p_module   => l_log_module);
113906 
113907 END IF;
113908 --
113909 l_component_type             := 'AMB_JLT';
113910 l_component_code             := 'OFFSET';
113911 l_component_type_code        := 'S';
113912 l_component_appl_id          :=  707;
113913 l_amb_context_code           := 'DEFAULT';
113914 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
113915 l_event_class_code           := 'USER_DEFINE';
113916 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_TP';
113917 l_line_definition_owner_code := 'S';
113918 l_line_definition_code       := 'USER_FOB_SHIP_SENDER_SHIP_TP';
113919 --
113920 l_balance_type_code          := 'A';
113921 l_segment                     := NULL;
113922 l_ccid                        := NULL;
113923 l_adr_transaction_coa_id      := NULL;
113924 l_adr_accounting_coa_id       := NULL;
113925 l_adr_flexfield_segment_code  := NULL;
113926 l_adr_flex_value_set_id       := NULL;
113927 l_adr_value_type_code         := NULL;
113928 l_adr_value_combination_id    := NULL;
113929 l_adr_value_segment_code      := NULL;
113930 
113931 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
113932 l_bflow_class_code           := '';    -- 4219869 Business Flow
113933 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
113934 l_budgetary_control_flag     := 'N';
113935 
113936 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
113937 l_bflow_applied_to_amt       := NULL; -- 5132302
113938 l_entered_amt_idx            := NULL;          -- 4262811
113939 l_accted_amt_idx             := NULL;          -- 4262811
113940 l_acc_rev_flag               := NULL;          -- 4262811
113941 l_accrual_line_num           := NULL;          -- 4262811
113942 l_tmp_amt                    := NULL;          -- 4262811
113943 --
113944  
113945 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
113946     l_balance_type_code <> 'B' THEN
113947 IF NVL(p_source_24,9E125) =  2
113948  THEN 
113949 
113950    --
113951    XLA_AE_LINES_PKG.SetNewLine;
113952 
113953    p_balance_type_code          := l_balance_type_code;
113954    -- set the flag so later we will know whether the gain loss line needs to be created
113955    
113956    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
113957      p_actual_flag :='A';
113958    END IF;
113959 
113960    --
113961    -- bulk performance
113962    --
113963    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
113964                                       p_header_num   => 0); -- 4262811
113965    --
113966    -- set accounting line options
113967    --
113968    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
113969            p_natural_side_code          => 'D'
113970          , p_gain_or_loss_flag          => 'N'
113971          , p_gl_transfer_mode_code      => 'S'
113972          , p_acct_entry_type_code       => 'A'
113973          , p_switch_side_flag           => 'Y'
113974          , p_merge_duplicate_code       => 'N'
113975          );
113976    --
113977    l_acc_rev_natural_side_code := 'C';  -- 4262811
113978    -- 
113979    --
113980    -- set accounting line type info
113981    --
113982    xla_ae_lines_pkg.SetAcctLineType
113983       (p_component_type             => l_component_type
113984       ,p_event_type_code            => l_event_type_code
113985       ,p_line_definition_owner_code => l_line_definition_owner_code
113986       ,p_line_definition_code       => l_line_definition_code
113987       ,p_accounting_line_code       => l_component_code
113988       ,p_accounting_line_type_code  => l_component_type_code
113989       ,p_accounting_line_appl_id    => l_component_appl_id
113990       ,p_amb_context_code           => l_amb_context_code
113991       ,p_entity_code                => l_entity_code
113992       ,p_event_class_code           => l_event_class_code);
113993    --
113994    -- set accounting class
113995    --
113996    xla_ae_lines_pkg.SetAcctClass(
113997            p_accounting_class_code  => 'OFFSET'
113998          , p_ae_header_id           => l_ae_header_id
113999          );
114000 
114001    --
114002    -- set rounding class
114003    --
114004    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
114005                       'OFFSET';
114006 
114007    --
114008    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
114009    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
114010    --
114011    -- bulk performance
114012    --
114013    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
114014 
114015    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
114016       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
114017 
114018    -- 4955764
114019    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
114020       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
114021 
114022    -- 4458381 Public Sector Enh
114023    
114024    --
114025    -- set accounting attributes for the line type
114026    --
114027    l_entered_amt_idx := 3;
114028    l_accted_amt_idx  := 8;
114029    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
114030    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
114031    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
114032    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
114033    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
114034    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
114035    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
114036    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
114037    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
114038    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
114039    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
114040    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
114041    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
114042    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
114043    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
114044    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
114045    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
114046 
114047    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
114048    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
114049 
114050    ---------------------------------------------------------------------------------------------------------------
114051    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
114052    ---------------------------------------------------------------------------------------------------------------
114053    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
114054 
114055    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
114056    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
114057 
114058    IF xla_accounting_cache_pkg.GetValueChar
114059          (p_source_code         => 'LEDGER_CATEGORY_CODE'
114060          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
114061    AND l_bflow_method_code = 'PRIOR_ENTRY'
114062 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
114063    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
114064          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
114065        )
114066    THEN
114067          xla_ae_lines_pkg.BflowUpgEntry
114068            (p_business_method_code    => l_bflow_method_code
114069            ,p_business_class_code     => l_bflow_class_code
114070            ,p_balance_type            => l_balance_type_code);
114071    ELSE
114072       NULL;
114073 -- No business flow processing for business flow method of NONE.
114074    END IF;
114075 
114076    --
114077    -- call analytical criteria
114078    --
114079    
114080    --
114081    -- call description
114082    --
114083    -- No description or it is inherited.
114084    --
114085    -- call ADRs
114086    -- Bug 4922099
114087    --
114088    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
114089         (NVL(l_actual_upg_option, 'N') = 'O') OR
114090         (NVL(l_enc_upg_option, 'N') = 'O')
114091       )
114092    THEN
114093    NULL;
114094    --
114095    --
114096    
114097   l_ccid := AcctDerRule_4(
114098            p_application_id           => p_application_id
114099          , p_ae_header_id             => l_ae_header_id 
114100 , p_source_4 => p_source_4
114101          , x_transaction_coa_id       => l_adr_transaction_coa_id
114102          , x_accounting_coa_id        => l_adr_accounting_coa_id
114103          , x_value_type_code          => l_adr_value_type_code
114104          , p_side                     => 'NA'
114105    );
114106 
114107    xla_ae_lines_pkg.set_ccid(
114108     p_code_combination_id          => l_ccid
114109   , p_value_type_code              => l_adr_value_type_code
114110   , p_transaction_coa_id           => l_adr_transaction_coa_id
114111   , p_accounting_coa_id            => l_adr_accounting_coa_id
114112   , p_adr_code                     => 'CST_DEFAULT'
114113   , p_adr_type_code                => 'S'
114114   , p_component_type               => l_component_type
114115   , p_component_code               => l_component_code
114116   , p_component_type_code          => l_component_type_code
114117   , p_component_appl_id            => l_component_appl_id
114118   , p_amb_context_code             => l_amb_context_code
114119   , p_side                         => 'NA'
114120   );
114121 
114122 
114123    --
114124    --
114125    END IF;
114126    --
114127    -- Bug 4922099
114128    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
114129           (NVL(l_enc_upg_option, 'N') = 'O')
114130         ) AND
114131         (l_bflow_method_code = 'PRIOR_ENTRY')
114132       )
114133    THEN
114134       IF
114135       --
114136       1 = 2
114137       --
114138       THEN
114139       xla_accounting_err_pkg.build_message
114140                                     (p_appli_s_name            => 'XLA'
114141                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
114142                                     ,p_token_1                 => 'LINE_NUMBER'
114143                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
114144                                     ,p_token_2                 => 'LINE_TYPE_NAME'
114145                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
114146                                                                              l_component_type
114147                                                                             ,l_component_code
114148                                                                             ,l_component_type_code
114149                                                                             ,l_component_appl_id
114150                                                                             ,l_amb_context_code
114151                                                                             ,l_entity_code
114152                                                                             ,l_event_class_code
114153                                                                            )
114154                                     ,p_token_3                 => 'OWNER'
114155                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
114156                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
114157                                                                           ,p_lookup_code    => l_component_type_code
114158                                                                          )
114159                                     ,p_token_4                 => 'PRODUCT_NAME'
114160                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
114161                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
114162                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
114163                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
114164                                     ,p_ae_header_id            =>  NULL
114165                                        );
114166 
114167         IF (C_LEVEL_ERROR>= g_log_level) THEN
114168                  trace
114169                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
114170                       ,p_level    => C_LEVEL_ERROR
114171                       ,p_module   => l_log_module);
114172         END IF;
114173       END IF;
114174    END IF;
114175    --
114176    --
114177    ------------------------------------------------------------------------------------------------
114178    -- 4219869 Business Flow
114179    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
114180    -- Prior Entry.  Currently, the following code is always generated.
114181    ------------------------------------------------------------------------------------------------
114182    XLA_AE_LINES_PKG.ValidateCurrentLine;
114183 
114184    ------------------------------------------------------------------------------------
114185    -- 4219869 Business Flow
114186    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
114187    ------------------------------------------------------------------------------------
114188    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
114189 
114190    ----------------------------------------------------------------------------------
114191    -- 4219869 Business Flow
114192    -- Update journal entry status -- Need to generate this within IF <condition>
114193    ----------------------------------------------------------------------------------
114194    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
114195          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
114196          ,p_balance_type_code => l_balance_type_code
114197          );
114198 
114199    -------------------------------------------------------------------------------------------
114200    -- 4262811 - Generate the Accrual Reversal lines
114201    -------------------------------------------------------------------------------------------
114202    BEGIN
114203       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
114204                               (g_array_event(p_event_id).array_value_num('header_index'));
114205       IF l_acc_rev_flag IS NULL THEN
114206          l_acc_rev_flag := 'N';
114207       END IF;
114208    EXCEPTION
114209       WHEN OTHERS THEN
114210          l_acc_rev_flag := 'N';
114211    END;
114212    --
114213    IF (l_acc_rev_flag = 'Y') THEN
114214 
114215        -- 4645092  ------------------------------------------------------------------------------
114216        -- To allow MPA report to determine if it should generate report process
114217        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
114218        ------------------------------------------------------------------------------------------
114219 
114220        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
114221        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
114222    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
114223    -- call ADRs
114224    -- Bug 4922099
114225    --
114226    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
114227         (NVL(l_actual_upg_option, 'N') = 'O') OR
114228         (NVL(l_enc_upg_option, 'N') = 'O')
114229       )
114230    THEN
114231    NULL;
114232    --
114233    --
114234    
114235   l_ccid := AcctDerRule_4(
114236            p_application_id           => p_application_id
114237          , p_ae_header_id             => l_ae_header_id 
114238 , p_source_4 => p_source_4
114239          , x_transaction_coa_id       => l_adr_transaction_coa_id
114240          , x_accounting_coa_id        => l_adr_accounting_coa_id
114241          , x_value_type_code          => l_adr_value_type_code
114242          , p_side                     => 'NA'
114243    );
114244 
114245    xla_ae_lines_pkg.set_ccid(
114246     p_code_combination_id          => l_ccid
114247   , p_value_type_code              => l_adr_value_type_code
114248   , p_transaction_coa_id           => l_adr_transaction_coa_id
114249   , p_accounting_coa_id            => l_adr_accounting_coa_id
114250   , p_adr_code                     => 'CST_DEFAULT'
114251   , p_adr_type_code                => 'S'
114252   , p_component_type               => l_component_type
114253   , p_component_code               => l_component_code
114254   , p_component_type_code          => l_component_type_code
114255   , p_component_appl_id            => l_component_appl_id
114256   , p_amb_context_code             => l_amb_context_code
114257   , p_side                         => 'NA'
114258   );
114259 
114260 
114261    --
114262    --
114263    END IF;
114264 
114265        --
114266        -- Update the line information that should be overwritten
114267        --
114268        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
114269                                          p_header_num   => 1);
114270        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
114271 
114272        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
114273 
114274        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
114275           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
114276        END IF;
114277 
114278       --
114279       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
114280       --
114281       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
114282           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
114283       ELSE
114284           ---------------------------------------------------------------------------------------------------
114285           -- 4262811a Switch Sign
114286           ---------------------------------------------------------------------------------------------------
114287           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
114288           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
114289                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114290           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
114291                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114292           -- 5132302
114293           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
114294                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114295 
114296       END IF;
114297 
114298       -- 4955764
114299       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
114300       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
114301 
114302 
114303       XLA_AE_LINES_PKG.ValidateCurrentLine;
114304       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
114305 
114306       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
114307                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
114308                ,p_balance_type_code => l_balance_type_code);
114309 
114310    END IF;
114311 
114312    -----------------------------------------------------------------------------------------
114313    -- 4262811 Multiperiod Accounting
114314    -----------------------------------------------------------------------------------------
114315      -- No MPA option is assigned.
114316 
114317 
114318 END IF;
114319 END IF;
114320 --
114321 
114322 --
114323 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
114324    trace
114325       (p_msg      => 'END of AcctLineType_207'
114326       ,p_level    => C_LEVEL_PROCEDURE
114327       ,p_module   => l_log_module);
114328 END IF;
114329 --
114330 EXCEPTION
114331   WHEN xla_exceptions_pkg.application_exception THEN
114332       RAISE;
114333   WHEN OTHERS THEN
114334        xla_exceptions_pkg.raise_message
114335            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_207');
114336 END AcctLineType_207;
114337 --
114338 
114339 ---------------------------------------
114340 --
114341 -- PRIVATE FUNCTION
114342 --         AcctLineType_208
114343 --
114344 ---------------------------------------
114345 PROCEDURE AcctLineType_208 (
114346   p_application_id        IN NUMBER
114347  ,p_event_id              IN NUMBER
114348  ,p_calculate_acctd_flag  IN VARCHAR2
114349  ,p_calculate_g_l_flag    IN VARCHAR2
114350  ,p_actual_flag           IN OUT VARCHAR2
114351  ,p_balance_type_code     OUT VARCHAR2
114352  ,p_gain_or_loss_ref      OUT VARCHAR2
114353  
114354 --Cost Management Default Account
114355  , p_source_4            IN NUMBER
114356 --DISTRIBUTION_IDENTIFIER
114357  , p_source_11            IN NUMBER
114358 --Distribution Type
114359  , p_source_12            IN VARCHAR2
114360  , p_source_12_meaning    IN VARCHAR2
114361 --Entered Currency Code
114362  , p_source_15            IN VARCHAR2
114363 --Entered Amount
114364  , p_source_18            IN NUMBER
114365 --Currency Conversion Date
114366  , p_source_19            IN DATE
114367 --Currency Conversion Rate
114368  , p_source_20            IN NUMBER
114369 --Currency Conversion Type
114370  , p_source_21            IN VARCHAR2
114371 --Accounted Amount
114372  , p_source_22            IN NUMBER
114373 --Accounting Line Type
114374  , p_source_24            IN NUMBER
114375 )
114376 IS
114377 
114378 l_component_type              VARCHAR2(80);
114379 l_component_code              VARCHAR2(30);
114380 l_component_type_code         VARCHAR2(1);
114381 l_component_appl_id           INTEGER;
114382 l_amb_context_code            VARCHAR2(30);
114383 l_entity_code                 VARCHAR2(30);
114384 l_event_class_code            VARCHAR2(30);
114385 l_ae_header_id                NUMBER;
114386 l_event_type_code             VARCHAR2(30);
114387 l_line_definition_code        VARCHAR2(30);
114388 l_line_definition_owner_code  VARCHAR2(1);
114389 --
114390 -- adr variables
114391 l_segment                     VARCHAR2(30);
114392 l_ccid                        NUMBER;
114393 l_adr_transaction_coa_id      NUMBER;
114394 l_adr_accounting_coa_id       NUMBER;
114395 l_adr_flexfield_segment_code  VARCHAR2(30);
114396 l_adr_flex_value_set_id       NUMBER;
114397 l_adr_value_type_code         VARCHAR2(30);
114398 l_adr_value_combination_id    NUMBER;
114399 l_adr_value_segment_code      VARCHAR2(30);
114400 
114401 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
114402 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
114403 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
114404 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
114405 
114406 -- 4262811 Variables ------------------------------------------------------------------------------------------
114407 l_entered_amt_idx             NUMBER;
114408 l_accted_amt_idx              NUMBER;
114409 l_acc_rev_flag                VARCHAR2(1);
114410 l_accrual_line_num            NUMBER;
114411 l_tmp_amt                     NUMBER;
114412 l_acc_rev_natural_side_code   VARCHAR2(1);
114413 
114414 l_num_entries                 NUMBER;
114415 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
114416 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
114417 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
114418 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
114419 l_recog_line_1                NUMBER;
114420 l_recog_line_2                NUMBER;
114421 
114422 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
114423 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
114424 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
114425 
114426 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
114427 
114428 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
114429 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
114430 
114431 ---------------------------------------------------------------------------------------------------------------
114432 
114433 
114434 --
114435 -- bulk performance
114436 --
114437 l_balance_type_code           VARCHAR2(1);
114438 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
114439 l_log_module                  VARCHAR2(240);
114440 
114441 --
114442 -- Upgrade strategy
114443 --
114444 l_actual_upg_option           VARCHAR2(1);
114445 l_enc_upg_option           VARCHAR2(1);
114446 
114447 --
114448 BEGIN
114449 --
114450 IF g_log_enabled THEN
114451       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_208';
114452 END IF;
114453 --
114454 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
114455 
114456       trace
114457          (p_msg      => 'BEGIN of AcctLineType_208'
114458          ,p_level    => C_LEVEL_PROCEDURE
114459          ,p_module   => l_log_module);
114460 
114461 END IF;
114462 --
114463 l_component_type             := 'AMB_JLT';
114464 l_component_code             := 'OFFSET';
114465 l_component_type_code        := 'S';
114466 l_component_appl_id          :=  707;
114467 l_amb_context_code           := 'DEFAULT';
114468 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
114469 l_event_class_code           := 'WIP_MTL';
114470 l_event_type_code            := 'WIP_MTL_ALL';
114471 l_line_definition_owner_code := 'S';
114472 l_line_definition_code       := 'WIP_MTL';
114473 --
114474 l_balance_type_code          := 'A';
114475 l_segment                     := NULL;
114476 l_ccid                        := NULL;
114477 l_adr_transaction_coa_id      := NULL;
114478 l_adr_accounting_coa_id       := NULL;
114479 l_adr_flexfield_segment_code  := NULL;
114480 l_adr_flex_value_set_id       := NULL;
114481 l_adr_value_type_code         := NULL;
114482 l_adr_value_combination_id    := NULL;
114483 l_adr_value_segment_code      := NULL;
114484 
114485 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
114486 l_bflow_class_code           := '';    -- 4219869 Business Flow
114487 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
114488 l_budgetary_control_flag     := 'N';
114489 
114490 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
114491 l_bflow_applied_to_amt       := NULL; -- 5132302
114492 l_entered_amt_idx            := NULL;          -- 4262811
114493 l_accted_amt_idx             := NULL;          -- 4262811
114494 l_acc_rev_flag               := NULL;          -- 4262811
114495 l_accrual_line_num           := NULL;          -- 4262811
114496 l_tmp_amt                    := NULL;          -- 4262811
114497 --
114498  
114499 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
114500     l_balance_type_code <> 'B' THEN
114501 IF NVL(p_source_24,9E125) =  2
114502  THEN 
114503 
114504    --
114505    XLA_AE_LINES_PKG.SetNewLine;
114506 
114507    p_balance_type_code          := l_balance_type_code;
114508    -- set the flag so later we will know whether the gain loss line needs to be created
114509    
114510    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
114511      p_actual_flag :='A';
114512    END IF;
114513 
114514    --
114515    -- bulk performance
114516    --
114517    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
114518                                       p_header_num   => 0); -- 4262811
114519    --
114520    -- set accounting line options
114521    --
114522    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
114523            p_natural_side_code          => 'D'
114524          , p_gain_or_loss_flag          => 'N'
114525          , p_gl_transfer_mode_code      => 'S'
114526          , p_acct_entry_type_code       => 'A'
114527          , p_switch_side_flag           => 'Y'
114528          , p_merge_duplicate_code       => 'N'
114529          );
114530    --
114531    l_acc_rev_natural_side_code := 'C';  -- 4262811
114532    -- 
114533    --
114534    -- set accounting line type info
114535    --
114536    xla_ae_lines_pkg.SetAcctLineType
114537       (p_component_type             => l_component_type
114538       ,p_event_type_code            => l_event_type_code
114539       ,p_line_definition_owner_code => l_line_definition_owner_code
114540       ,p_line_definition_code       => l_line_definition_code
114541       ,p_accounting_line_code       => l_component_code
114542       ,p_accounting_line_type_code  => l_component_type_code
114543       ,p_accounting_line_appl_id    => l_component_appl_id
114544       ,p_amb_context_code           => l_amb_context_code
114545       ,p_entity_code                => l_entity_code
114546       ,p_event_class_code           => l_event_class_code);
114547    --
114548    -- set accounting class
114549    --
114550    xla_ae_lines_pkg.SetAcctClass(
114551            p_accounting_class_code  => 'OFFSET'
114552          , p_ae_header_id           => l_ae_header_id
114553          );
114554 
114555    --
114556    -- set rounding class
114557    --
114558    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
114559                       'OFFSET';
114560 
114561    --
114562    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
114563    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
114564    --
114565    -- bulk performance
114566    --
114567    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
114568 
114569    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
114570       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
114571 
114572    -- 4955764
114573    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
114574       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
114575 
114576    -- 4458381 Public Sector Enh
114577    
114578    --
114579    -- set accounting attributes for the line type
114580    --
114581    l_entered_amt_idx := 3;
114582    l_accted_amt_idx  := 8;
114583    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
114584    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
114585    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
114586    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
114587    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
114588    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
114589    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
114590    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
114591    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
114592    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
114593    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
114594    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
114595    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
114596    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
114597    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
114598    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
114599    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
114600 
114601    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
114602    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
114603 
114604    ---------------------------------------------------------------------------------------------------------------
114605    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
114606    ---------------------------------------------------------------------------------------------------------------
114607    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
114608 
114609    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
114610    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
114611 
114612    IF xla_accounting_cache_pkg.GetValueChar
114613          (p_source_code         => 'LEDGER_CATEGORY_CODE'
114614          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
114615    AND l_bflow_method_code = 'PRIOR_ENTRY'
114616 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
114617    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
114618          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
114619        )
114620    THEN
114621          xla_ae_lines_pkg.BflowUpgEntry
114622            (p_business_method_code    => l_bflow_method_code
114623            ,p_business_class_code     => l_bflow_class_code
114624            ,p_balance_type            => l_balance_type_code);
114625    ELSE
114626       NULL;
114627 -- No business flow processing for business flow method of NONE.
114628    END IF;
114629 
114630    --
114631    -- call analytical criteria
114632    --
114633    
114634    --
114635    -- call description
114636    --
114637    -- No description or it is inherited.
114638    --
114639    -- call ADRs
114640    -- Bug 4922099
114641    --
114642    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
114643         (NVL(l_actual_upg_option, 'N') = 'O') OR
114644         (NVL(l_enc_upg_option, 'N') = 'O')
114645       )
114646    THEN
114647    NULL;
114648    --
114649    --
114650    
114651   l_ccid := AcctDerRule_4(
114652            p_application_id           => p_application_id
114653          , p_ae_header_id             => l_ae_header_id 
114654 , p_source_4 => p_source_4
114655          , x_transaction_coa_id       => l_adr_transaction_coa_id
114656          , x_accounting_coa_id        => l_adr_accounting_coa_id
114657          , x_value_type_code          => l_adr_value_type_code
114658          , p_side                     => 'NA'
114659    );
114660 
114661    xla_ae_lines_pkg.set_ccid(
114662     p_code_combination_id          => l_ccid
114663   , p_value_type_code              => l_adr_value_type_code
114664   , p_transaction_coa_id           => l_adr_transaction_coa_id
114665   , p_accounting_coa_id            => l_adr_accounting_coa_id
114666   , p_adr_code                     => 'CST_DEFAULT'
114667   , p_adr_type_code                => 'S'
114668   , p_component_type               => l_component_type
114669   , p_component_code               => l_component_code
114670   , p_component_type_code          => l_component_type_code
114671   , p_component_appl_id            => l_component_appl_id
114672   , p_amb_context_code             => l_amb_context_code
114673   , p_side                         => 'NA'
114674   );
114675 
114676 
114677    --
114678    --
114679    END IF;
114680    --
114681    -- Bug 4922099
114682    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
114683           (NVL(l_enc_upg_option, 'N') = 'O')
114684         ) AND
114685         (l_bflow_method_code = 'PRIOR_ENTRY')
114686       )
114687    THEN
114688       IF
114689       --
114690       1 = 2
114691       --
114692       THEN
114693       xla_accounting_err_pkg.build_message
114694                                     (p_appli_s_name            => 'XLA'
114695                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
114696                                     ,p_token_1                 => 'LINE_NUMBER'
114697                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
114698                                     ,p_token_2                 => 'LINE_TYPE_NAME'
114699                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
114700                                                                              l_component_type
114701                                                                             ,l_component_code
114702                                                                             ,l_component_type_code
114703                                                                             ,l_component_appl_id
114704                                                                             ,l_amb_context_code
114705                                                                             ,l_entity_code
114706                                                                             ,l_event_class_code
114707                                                                            )
114708                                     ,p_token_3                 => 'OWNER'
114709                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
114710                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
114711                                                                           ,p_lookup_code    => l_component_type_code
114712                                                                          )
114713                                     ,p_token_4                 => 'PRODUCT_NAME'
114714                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
114715                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
114716                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
114717                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
114718                                     ,p_ae_header_id            =>  NULL
114719                                        );
114720 
114721         IF (C_LEVEL_ERROR>= g_log_level) THEN
114722                  trace
114723                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
114724                       ,p_level    => C_LEVEL_ERROR
114725                       ,p_module   => l_log_module);
114726         END IF;
114727       END IF;
114728    END IF;
114729    --
114730    --
114731    ------------------------------------------------------------------------------------------------
114732    -- 4219869 Business Flow
114733    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
114734    -- Prior Entry.  Currently, the following code is always generated.
114735    ------------------------------------------------------------------------------------------------
114736    XLA_AE_LINES_PKG.ValidateCurrentLine;
114737 
114738    ------------------------------------------------------------------------------------
114739    -- 4219869 Business Flow
114740    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
114741    ------------------------------------------------------------------------------------
114742    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
114743 
114744    ----------------------------------------------------------------------------------
114745    -- 4219869 Business Flow
114746    -- Update journal entry status -- Need to generate this within IF <condition>
114747    ----------------------------------------------------------------------------------
114748    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
114749          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
114750          ,p_balance_type_code => l_balance_type_code
114751          );
114752 
114753    -------------------------------------------------------------------------------------------
114754    -- 4262811 - Generate the Accrual Reversal lines
114755    -------------------------------------------------------------------------------------------
114756    BEGIN
114757       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
114758                               (g_array_event(p_event_id).array_value_num('header_index'));
114759       IF l_acc_rev_flag IS NULL THEN
114760          l_acc_rev_flag := 'N';
114761       END IF;
114762    EXCEPTION
114763       WHEN OTHERS THEN
114764          l_acc_rev_flag := 'N';
114765    END;
114766    --
114767    IF (l_acc_rev_flag = 'Y') THEN
114768 
114769        -- 4645092  ------------------------------------------------------------------------------
114770        -- To allow MPA report to determine if it should generate report process
114771        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
114772        ------------------------------------------------------------------------------------------
114773 
114774        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
114775        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
114776    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
114777    -- call ADRs
114778    -- Bug 4922099
114779    --
114780    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
114781         (NVL(l_actual_upg_option, 'N') = 'O') OR
114782         (NVL(l_enc_upg_option, 'N') = 'O')
114783       )
114784    THEN
114785    NULL;
114786    --
114787    --
114788    
114789   l_ccid := AcctDerRule_4(
114790            p_application_id           => p_application_id
114791          , p_ae_header_id             => l_ae_header_id 
114792 , p_source_4 => p_source_4
114793          , x_transaction_coa_id       => l_adr_transaction_coa_id
114794          , x_accounting_coa_id        => l_adr_accounting_coa_id
114795          , x_value_type_code          => l_adr_value_type_code
114796          , p_side                     => 'NA'
114797    );
114798 
114799    xla_ae_lines_pkg.set_ccid(
114800     p_code_combination_id          => l_ccid
114801   , p_value_type_code              => l_adr_value_type_code
114802   , p_transaction_coa_id           => l_adr_transaction_coa_id
114803   , p_accounting_coa_id            => l_adr_accounting_coa_id
114804   , p_adr_code                     => 'CST_DEFAULT'
114805   , p_adr_type_code                => 'S'
114806   , p_component_type               => l_component_type
114807   , p_component_code               => l_component_code
114808   , p_component_type_code          => l_component_type_code
114809   , p_component_appl_id            => l_component_appl_id
114810   , p_amb_context_code             => l_amb_context_code
114811   , p_side                         => 'NA'
114812   );
114813 
114814 
114815    --
114816    --
114817    END IF;
114818 
114819        --
114820        -- Update the line information that should be overwritten
114821        --
114822        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
114823                                          p_header_num   => 1);
114824        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
114825 
114826        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
114827 
114828        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
114829           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
114830        END IF;
114831 
114832       --
114833       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
114834       --
114835       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
114836           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
114837       ELSE
114838           ---------------------------------------------------------------------------------------------------
114839           -- 4262811a Switch Sign
114840           ---------------------------------------------------------------------------------------------------
114841           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
114842           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
114843                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114844           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
114845                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114846           -- 5132302
114847           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
114848                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114849 
114850       END IF;
114851 
114852       -- 4955764
114853       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
114854       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
114855 
114856 
114857       XLA_AE_LINES_PKG.ValidateCurrentLine;
114858       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
114859 
114860       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
114861                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
114862                ,p_balance_type_code => l_balance_type_code);
114863 
114864    END IF;
114865 
114866    -----------------------------------------------------------------------------------------
114867    -- 4262811 Multiperiod Accounting
114868    -----------------------------------------------------------------------------------------
114869      -- No MPA option is assigned.
114870 
114871 
114872 END IF;
114873 END IF;
114874 --
114875 
114876 --
114877 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
114878    trace
114879       (p_msg      => 'END of AcctLineType_208'
114880       ,p_level    => C_LEVEL_PROCEDURE
114881       ,p_module   => l_log_module);
114882 END IF;
114883 --
114884 EXCEPTION
114885   WHEN xla_exceptions_pkg.application_exception THEN
114886       RAISE;
114887   WHEN OTHERS THEN
114888        xla_exceptions_pkg.raise_message
114889            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_208');
114890 END AcctLineType_208;
114891 --
114892 
114893 ---------------------------------------
114894 --
114895 -- PRIVATE FUNCTION
114896 --         AcctLineType_209
114897 --
114898 ---------------------------------------
114899 PROCEDURE AcctLineType_209 (
114900   p_application_id        IN NUMBER
114901  ,p_event_id              IN NUMBER
114902  ,p_calculate_acctd_flag  IN VARCHAR2
114903  ,p_calculate_g_l_flag    IN VARCHAR2
114904  ,p_actual_flag           IN OUT VARCHAR2
114905  ,p_balance_type_code     OUT VARCHAR2
114906  ,p_gain_or_loss_ref      OUT VARCHAR2
114907  
114908 --Cost Management Default Account
114909  , p_source_4            IN NUMBER
114910 --Applied to Application ID
114911  , p_source_6            IN NUMBER
114912 --Applied to Distribution Link Type
114913  , p_source_7            IN VARCHAR2
114914 --Applied to Entity Code
114915  , p_source_8            IN VARCHAR2
114916 --DISTRIBUTION_IDENTIFIER
114917  , p_source_11            IN NUMBER
114918 --Distribution Type
114919  , p_source_12            IN VARCHAR2
114920  , p_source_12_meaning    IN VARCHAR2
114921 --Encumbrance Reversal Amount Entered
114922  , p_source_14            IN NUMBER
114923 --Entered Currency Code
114924  , p_source_15            IN VARCHAR2
114925 --Transaction Encumbrance Reversal Amount
114926  , p_source_16            IN NUMBER
114927 --Entered Amount
114928  , p_source_18            IN NUMBER
114929 --Currency Conversion Date
114930  , p_source_19            IN DATE
114931 --Currency Conversion Rate
114932  , p_source_20            IN NUMBER
114933 --Currency Conversion Type
114934  , p_source_21            IN VARCHAR2
114935 --Accounted Amount
114936  , p_source_22            IN NUMBER
114937 --Accounting Line Type
114938  , p_source_24            IN NUMBER
114939 --Costing Encumbrance Upgrade Option
114940  , p_source_27            IN VARCHAR2
114941 --TXN_PO_DISTRIBUTION_ID
114942  , p_source_28            IN NUMBER
114943 --TXN_PO_HEADER_ID
114944  , p_source_29            IN NUMBER
114945 --Requisition Budget Account
114946  , p_source_30            IN NUMBER
114947 --Requisition Encumbrance Type Identifier
114948  , p_source_31            IN NUMBER
114949 )
114950 IS
114951 
114952 l_component_type              VARCHAR2(80);
114953 l_component_code              VARCHAR2(30);
114954 l_component_type_code         VARCHAR2(1);
114955 l_component_appl_id           INTEGER;
114956 l_amb_context_code            VARCHAR2(30);
114957 l_entity_code                 VARCHAR2(30);
114958 l_event_class_code            VARCHAR2(30);
114959 l_ae_header_id                NUMBER;
114960 l_event_type_code             VARCHAR2(30);
114961 l_line_definition_code        VARCHAR2(30);
114962 l_line_definition_owner_code  VARCHAR2(1);
114963 --
114964 -- adr variables
114965 l_segment                     VARCHAR2(30);
114966 l_ccid                        NUMBER;
114967 l_adr_transaction_coa_id      NUMBER;
114968 l_adr_accounting_coa_id       NUMBER;
114969 l_adr_flexfield_segment_code  VARCHAR2(30);
114970 l_adr_flex_value_set_id       NUMBER;
114971 l_adr_value_type_code         VARCHAR2(30);
114972 l_adr_value_combination_id    NUMBER;
114973 l_adr_value_segment_code      VARCHAR2(30);
114974 
114975 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
114976 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
114977 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
114978 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
114979 
114980 -- 4262811 Variables ------------------------------------------------------------------------------------------
114981 l_entered_amt_idx             NUMBER;
114982 l_accted_amt_idx              NUMBER;
114983 l_acc_rev_flag                VARCHAR2(1);
114984 l_accrual_line_num            NUMBER;
114985 l_tmp_amt                     NUMBER;
114986 l_acc_rev_natural_side_code   VARCHAR2(1);
114987 
114988 l_num_entries                 NUMBER;
114989 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
114990 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
114991 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
114992 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
114993 l_recog_line_1                NUMBER;
114994 l_recog_line_2                NUMBER;
114995 
114996 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
114997 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
114998 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
114999 
115000 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
115001 
115002 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
115003 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
115004 
115005 ---------------------------------------------------------------------------------------------------------------
115006 
115007 
115008 --
115009 -- bulk performance
115010 --
115011 l_balance_type_code           VARCHAR2(1);
115012 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
115013 l_log_module                  VARCHAR2(240);
115014 
115015 --
115016 -- Upgrade strategy
115017 --
115018 l_actual_upg_option           VARCHAR2(1);
115019 l_enc_upg_option           VARCHAR2(1);
115020 
115021 --
115022 BEGIN
115023 --
115024 IF g_log_enabled THEN
115025       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_209';
115026 END IF;
115027 --
115028 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
115029 
115030       trace
115031          (p_msg      => 'BEGIN of AcctLineType_209'
115032          ,p_level    => C_LEVEL_PROCEDURE
115033          ,p_module   => l_log_module);
115034 
115035 END IF;
115036 --
115037 l_component_type             := 'AMB_JLT';
115038 l_component_code             := 'OFFSET';
115039 l_component_type_code        := 'S';
115040 l_component_appl_id          :=  707;
115041 l_amb_context_code           := 'DEFAULT';
115042 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
115043 l_event_class_code           := 'FOB_SHIP_RECIPIENT_RCPT';
115044 l_event_type_code            := 'FOB_SHIP_RECIPIENT_RCPT_ALL';
115045 l_line_definition_owner_code := 'S';
115046 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_RCPT';
115047 --
115048 l_balance_type_code          := 'A';
115049 l_segment                     := NULL;
115050 l_ccid                        := NULL;
115051 l_adr_transaction_coa_id      := NULL;
115052 l_adr_accounting_coa_id       := NULL;
115053 l_adr_flexfield_segment_code  := NULL;
115054 l_adr_flex_value_set_id       := NULL;
115055 l_adr_value_type_code         := NULL;
115056 l_adr_value_combination_id    := NULL;
115057 l_adr_value_segment_code      := NULL;
115058 
115059 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
115060 l_bflow_class_code           := '';    -- 4219869 Business Flow
115061 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
115062 l_budgetary_control_flag     := 'N';
115063 
115064 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
115065 l_bflow_applied_to_amt       := NULL; -- 5132302
115066 l_entered_amt_idx            := NULL;          -- 4262811
115067 l_accted_amt_idx             := NULL;          -- 4262811
115068 l_acc_rev_flag               := NULL;          -- 4262811
115069 l_accrual_line_num           := NULL;          -- 4262811
115070 l_tmp_amt                    := NULL;          -- 4262811
115071 --
115072  
115073 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
115074     l_balance_type_code <> 'B' THEN
115075 IF NVL(p_source_24,9E125) =  2
115076  THEN 
115077 
115078    --
115079    XLA_AE_LINES_PKG.SetNewLine;
115080 
115081    p_balance_type_code          := l_balance_type_code;
115082    -- set the flag so later we will know whether the gain loss line needs to be created
115083    
115084    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
115085      p_actual_flag :='A';
115086    END IF;
115087 
115088    --
115089    -- bulk performance
115090    --
115091    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
115092                                       p_header_num   => 0); -- 4262811
115093    --
115094    -- set accounting line options
115095    --
115096    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
115097            p_natural_side_code          => 'D'
115098          , p_gain_or_loss_flag          => 'N'
115099          , p_gl_transfer_mode_code      => 'S'
115100          , p_acct_entry_type_code       => 'A'
115101          , p_switch_side_flag           => 'Y'
115102          , p_merge_duplicate_code       => 'N'
115103          );
115104    --
115105    l_acc_rev_natural_side_code := 'C';  -- 4262811
115106    -- 
115107    --
115108    -- set accounting line type info
115109    --
115110    xla_ae_lines_pkg.SetAcctLineType
115111       (p_component_type             => l_component_type
115112       ,p_event_type_code            => l_event_type_code
115113       ,p_line_definition_owner_code => l_line_definition_owner_code
115114       ,p_line_definition_code       => l_line_definition_code
115115       ,p_accounting_line_code       => l_component_code
115116       ,p_accounting_line_type_code  => l_component_type_code
115117       ,p_accounting_line_appl_id    => l_component_appl_id
115118       ,p_amb_context_code           => l_amb_context_code
115119       ,p_entity_code                => l_entity_code
115120       ,p_event_class_code           => l_event_class_code);
115121    --
115122    -- set accounting class
115123    --
115124    xla_ae_lines_pkg.SetAcctClass(
115125            p_accounting_class_code  => 'OFFSET'
115126          , p_ae_header_id           => l_ae_header_id
115127          );
115128 
115129    --
115130    -- set rounding class
115131    --
115132    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
115133                       'OFFSET';
115134 
115135    --
115136    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
115137    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
115138    --
115139    -- bulk performance
115140    --
115141    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
115142 
115143    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
115144       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
115145 
115146    -- 4955764
115147    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
115148       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
115149 
115150    -- 4458381 Public Sector Enh
115151    
115152    --
115153    -- set accounting attributes for the line type
115154    --
115155    l_entered_amt_idx := 17;
115156    l_accted_amt_idx  := 22;
115157    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
115158    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
115159    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
115160    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
115161    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
115162    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
115163    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
115164    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
115165    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
115166    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
115167    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
115168    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
115169    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
115170    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
115171    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
115172    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
115173    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
115174    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
115175    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
115176    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
115177    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
115178    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
115179    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
115180    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
115181    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
115182    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
115183    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
115184    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
115185    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
115186    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
115187    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
115188    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
115189    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
115190    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
115191    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
115192    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
115193    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
115194    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
115195    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
115196    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
115197    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
115198    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
115199    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
115200    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
115201    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
115202    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
115203    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
115204    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
115205    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
115206 
115207    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
115208    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
115209 
115210    ---------------------------------------------------------------------------------------------------------------
115211    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
115212    ---------------------------------------------------------------------------------------------------------------
115213    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
115214 
115215    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
115216    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
115217 
115218    IF xla_accounting_cache_pkg.GetValueChar
115219          (p_source_code         => 'LEDGER_CATEGORY_CODE'
115220          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
115221    AND l_bflow_method_code = 'PRIOR_ENTRY'
115222 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
115223    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
115224          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
115225        )
115226    THEN
115227          xla_ae_lines_pkg.BflowUpgEntry
115228            (p_business_method_code    => l_bflow_method_code
115229            ,p_business_class_code     => l_bflow_class_code
115230            ,p_balance_type            => l_balance_type_code);
115231    ELSE
115232       NULL;
115233 -- No business flow processing for business flow method of NONE.
115234    END IF;
115235 
115236    --
115237    -- call analytical criteria
115238    --
115239    
115240    --
115241    -- call description
115242    --
115243    -- No description or it is inherited.
115244    --
115245    -- call ADRs
115246    -- Bug 4922099
115247    --
115248    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
115249         (NVL(l_actual_upg_option, 'N') = 'O') OR
115250         (NVL(l_enc_upg_option, 'N') = 'O')
115251       )
115252    THEN
115253    NULL;
115254    --
115255    --
115256    
115257   l_ccid := AcctDerRule_4(
115258            p_application_id           => p_application_id
115259          , p_ae_header_id             => l_ae_header_id 
115260 , p_source_4 => p_source_4
115261          , x_transaction_coa_id       => l_adr_transaction_coa_id
115262          , x_accounting_coa_id        => l_adr_accounting_coa_id
115263          , x_value_type_code          => l_adr_value_type_code
115264          , p_side                     => 'NA'
115265    );
115266 
115267    xla_ae_lines_pkg.set_ccid(
115268     p_code_combination_id          => l_ccid
115269   , p_value_type_code              => l_adr_value_type_code
115270   , p_transaction_coa_id           => l_adr_transaction_coa_id
115271   , p_accounting_coa_id            => l_adr_accounting_coa_id
115272   , p_adr_code                     => 'CST_DEFAULT'
115273   , p_adr_type_code                => 'S'
115274   , p_component_type               => l_component_type
115275   , p_component_code               => l_component_code
115276   , p_component_type_code          => l_component_type_code
115277   , p_component_appl_id            => l_component_appl_id
115278   , p_amb_context_code             => l_amb_context_code
115279   , p_side                         => 'NA'
115280   );
115281 
115282 
115283    --
115284    --
115285    END IF;
115286    --
115287    -- Bug 4922099
115288    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
115289           (NVL(l_enc_upg_option, 'N') = 'O')
115290         ) AND
115291         (l_bflow_method_code = 'PRIOR_ENTRY')
115292       )
115293    THEN
115294       IF
115295       --
115296       1 = 2
115297       --
115298       THEN
115299       xla_accounting_err_pkg.build_message
115300                                     (p_appli_s_name            => 'XLA'
115301                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
115302                                     ,p_token_1                 => 'LINE_NUMBER'
115303                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
115304                                     ,p_token_2                 => 'LINE_TYPE_NAME'
115305                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
115306                                                                              l_component_type
115307                                                                             ,l_component_code
115308                                                                             ,l_component_type_code
115309                                                                             ,l_component_appl_id
115310                                                                             ,l_amb_context_code
115311                                                                             ,l_entity_code
115312                                                                             ,l_event_class_code
115313                                                                            )
115314                                     ,p_token_3                 => 'OWNER'
115315                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
115316                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
115317                                                                           ,p_lookup_code    => l_component_type_code
115318                                                                          )
115319                                     ,p_token_4                 => 'PRODUCT_NAME'
115320                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
115321                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
115322                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
115323                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
115324                                     ,p_ae_header_id            =>  NULL
115325                                        );
115326 
115327         IF (C_LEVEL_ERROR>= g_log_level) THEN
115328                  trace
115329                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
115330                       ,p_level    => C_LEVEL_ERROR
115331                       ,p_module   => l_log_module);
115332         END IF;
115333       END IF;
115334    END IF;
115335    --
115336    --
115337    ------------------------------------------------------------------------------------------------
115338    -- 4219869 Business Flow
115339    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
115340    -- Prior Entry.  Currently, the following code is always generated.
115341    ------------------------------------------------------------------------------------------------
115342    XLA_AE_LINES_PKG.ValidateCurrentLine;
115343 
115344    ------------------------------------------------------------------------------------
115345    -- 4219869 Business Flow
115346    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
115347    ------------------------------------------------------------------------------------
115348    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
115349 
115350    ----------------------------------------------------------------------------------
115351    -- 4219869 Business Flow
115352    -- Update journal entry status -- Need to generate this within IF <condition>
115353    ----------------------------------------------------------------------------------
115354    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
115355          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
115356          ,p_balance_type_code => l_balance_type_code
115357          );
115358 
115359    -------------------------------------------------------------------------------------------
115360    -- 4262811 - Generate the Accrual Reversal lines
115361    -------------------------------------------------------------------------------------------
115362    BEGIN
115363       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
115364                               (g_array_event(p_event_id).array_value_num('header_index'));
115365       IF l_acc_rev_flag IS NULL THEN
115366          l_acc_rev_flag := 'N';
115367       END IF;
115368    EXCEPTION
115369       WHEN OTHERS THEN
115370          l_acc_rev_flag := 'N';
115371    END;
115372    --
115373    IF (l_acc_rev_flag = 'Y') THEN
115374 
115375        -- 4645092  ------------------------------------------------------------------------------
115376        -- To allow MPA report to determine if it should generate report process
115377        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
115378        ------------------------------------------------------------------------------------------
115379 
115380        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
115381        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
115382    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
115383    -- call ADRs
115384    -- Bug 4922099
115385    --
115386    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
115387         (NVL(l_actual_upg_option, 'N') = 'O') OR
115388         (NVL(l_enc_upg_option, 'N') = 'O')
115389       )
115390    THEN
115391    NULL;
115392    --
115393    --
115394    
115395   l_ccid := AcctDerRule_4(
115396            p_application_id           => p_application_id
115397          , p_ae_header_id             => l_ae_header_id 
115398 , p_source_4 => p_source_4
115399          , x_transaction_coa_id       => l_adr_transaction_coa_id
115400          , x_accounting_coa_id        => l_adr_accounting_coa_id
115401          , x_value_type_code          => l_adr_value_type_code
115402          , p_side                     => 'NA'
115403    );
115404 
115405    xla_ae_lines_pkg.set_ccid(
115406     p_code_combination_id          => l_ccid
115407   , p_value_type_code              => l_adr_value_type_code
115408   , p_transaction_coa_id           => l_adr_transaction_coa_id
115409   , p_accounting_coa_id            => l_adr_accounting_coa_id
115410   , p_adr_code                     => 'CST_DEFAULT'
115411   , p_adr_type_code                => 'S'
115412   , p_component_type               => l_component_type
115413   , p_component_code               => l_component_code
115414   , p_component_type_code          => l_component_type_code
115415   , p_component_appl_id            => l_component_appl_id
115416   , p_amb_context_code             => l_amb_context_code
115417   , p_side                         => 'NA'
115418   );
115419 
115420 
115421    --
115422    --
115423    END IF;
115424 
115425        --
115426        -- Update the line information that should be overwritten
115427        --
115428        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
115429                                          p_header_num   => 1);
115430        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
115431 
115432        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
115433 
115434        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
115435           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
115436        END IF;
115437 
115438       --
115439       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
115440       --
115441       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
115442           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
115443       ELSE
115444           ---------------------------------------------------------------------------------------------------
115445           -- 4262811a Switch Sign
115446           ---------------------------------------------------------------------------------------------------
115447           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
115448           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
115449                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
115450           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
115451                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
115452           -- 5132302
115453           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
115454                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
115455 
115456       END IF;
115457 
115458       -- 4955764
115459       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
115460       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
115461 
115462 
115463       XLA_AE_LINES_PKG.ValidateCurrentLine;
115464       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
115465 
115466       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
115467                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
115468                ,p_balance_type_code => l_balance_type_code);
115469 
115470    END IF;
115471 
115472    -----------------------------------------------------------------------------------------
115473    -- 4262811 Multiperiod Accounting
115474    -----------------------------------------------------------------------------------------
115475      -- No MPA option is assigned.
115476 
115477 
115478 END IF;
115479 END IF;
115480 --
115481 
115482 --
115483 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
115484    trace
115485       (p_msg      => 'END of AcctLineType_209'
115486       ,p_level    => C_LEVEL_PROCEDURE
115487       ,p_module   => l_log_module);
115488 END IF;
115489 --
115490 EXCEPTION
115491   WHEN xla_exceptions_pkg.application_exception THEN
115492       RAISE;
115493   WHEN OTHERS THEN
115494        xla_exceptions_pkg.raise_message
115495            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_209');
115496 END AcctLineType_209;
115497 --
115498 
115499 ---------------------------------------
115500 --
115501 -- PRIVATE FUNCTION
115502 --         AcctLineType_210
115503 --
115504 ---------------------------------------
115505 PROCEDURE AcctLineType_210 (
115506   p_application_id        IN NUMBER
115507  ,p_event_id              IN NUMBER
115508  ,p_calculate_acctd_flag  IN VARCHAR2
115509  ,p_calculate_g_l_flag    IN VARCHAR2
115510  ,p_actual_flag           IN OUT VARCHAR2
115511  ,p_balance_type_code     OUT VARCHAR2
115512  ,p_gain_or_loss_ref      OUT VARCHAR2
115513  
115514 --Offset Account for the Write Off
115515  , p_source_3            IN NUMBER
115516 --Distribution Type
115517  , p_source_12            IN VARCHAR2
115518  , p_source_12_meaning    IN VARCHAR2
115519 --Entered Currency Code
115520  , p_source_15            IN VARCHAR2
115521 --Entered Amount
115522  , p_source_18            IN NUMBER
115523 --Currency Conversion Date
115524  , p_source_19            IN DATE
115525 --Currency Conversion Rate
115526  , p_source_20            IN NUMBER
115527 --Currency Conversion Type
115528  , p_source_21            IN VARCHAR2
115529 --Accounted Amount
115530  , p_source_22            IN NUMBER
115531 --Line Number
115532  , p_source_25            IN NUMBER
115533 --WRITE_OFF_ID
115534  , p_source_26            IN NUMBER
115535 )
115536 IS
115537 
115538 l_component_type              VARCHAR2(80);
115539 l_component_code              VARCHAR2(30);
115540 l_component_type_code         VARCHAR2(1);
115541 l_component_appl_id           INTEGER;
115542 l_amb_context_code            VARCHAR2(30);
115543 l_entity_code                 VARCHAR2(30);
115544 l_event_class_code            VARCHAR2(30);
115545 l_ae_header_id                NUMBER;
115546 l_event_type_code             VARCHAR2(30);
115547 l_line_definition_code        VARCHAR2(30);
115548 l_line_definition_owner_code  VARCHAR2(1);
115549 --
115550 -- adr variables
115551 l_segment                     VARCHAR2(30);
115552 l_ccid                        NUMBER;
115553 l_adr_transaction_coa_id      NUMBER;
115554 l_adr_accounting_coa_id       NUMBER;
115555 l_adr_flexfield_segment_code  VARCHAR2(30);
115556 l_adr_flex_value_set_id       NUMBER;
115557 l_adr_value_type_code         VARCHAR2(30);
115558 l_adr_value_combination_id    NUMBER;
115559 l_adr_value_segment_code      VARCHAR2(30);
115560 
115561 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
115562 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
115563 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
115564 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
115565 
115566 -- 4262811 Variables ------------------------------------------------------------------------------------------
115567 l_entered_amt_idx             NUMBER;
115568 l_accted_amt_idx              NUMBER;
115569 l_acc_rev_flag                VARCHAR2(1);
115570 l_accrual_line_num            NUMBER;
115571 l_tmp_amt                     NUMBER;
115572 l_acc_rev_natural_side_code   VARCHAR2(1);
115573 
115574 l_num_entries                 NUMBER;
115575 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
115576 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
115577 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
115578 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
115579 l_recog_line_1                NUMBER;
115580 l_recog_line_2                NUMBER;
115581 
115582 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
115583 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
115584 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
115585 
115586 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
115587 
115588 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
115589 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
115590 
115591 ---------------------------------------------------------------------------------------------------------------
115592 
115593 
115594 --
115595 -- bulk performance
115596 --
115597 l_balance_type_code           VARCHAR2(1);
115598 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
115599 l_log_module                  VARCHAR2(240);
115600 
115601 --
115602 -- Upgrade strategy
115603 --
115604 l_actual_upg_option           VARCHAR2(1);
115605 l_enc_upg_option           VARCHAR2(1);
115606 
115607 --
115608 BEGIN
115609 --
115610 IF g_log_enabled THEN
115611       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_210';
115612 END IF;
115613 --
115614 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
115615 
115616       trace
115617          (p_msg      => 'BEGIN of AcctLineType_210'
115618          ,p_level    => C_LEVEL_PROCEDURE
115619          ,p_module   => l_log_module);
115620 
115621 END IF;
115622 --
115623 l_component_type             := 'AMB_JLT';
115624 l_component_code             := 'OFFSET';
115625 l_component_type_code        := 'S';
115626 l_component_appl_id          :=  707;
115627 l_amb_context_code           := 'DEFAULT';
115628 l_entity_code                := 'WO_ACCOUNTING_EVENTS';
115629 l_event_class_code           := 'ACCRUAL_WRITE_OFF';
115630 l_event_type_code            := 'ACCRUAL_WRITE_OFF_ALL';
115631 l_line_definition_owner_code := 'S';
115632 l_line_definition_code       := 'ACCRUAL_WRITE_OFF';
115633 --
115634 l_balance_type_code          := 'A';
115635 l_segment                     := NULL;
115636 l_ccid                        := NULL;
115637 l_adr_transaction_coa_id      := NULL;
115638 l_adr_accounting_coa_id       := NULL;
115639 l_adr_flexfield_segment_code  := NULL;
115640 l_adr_flex_value_set_id       := NULL;
115641 l_adr_value_type_code         := NULL;
115642 l_adr_value_combination_id    := NULL;
115643 l_adr_value_segment_code      := NULL;
115644 
115645 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
115646 l_bflow_class_code           := '';    -- 4219869 Business Flow
115647 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
115648 l_budgetary_control_flag     := 'N';
115649 
115650 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
115651 l_bflow_applied_to_amt       := NULL; -- 5132302
115652 l_entered_amt_idx            := NULL;          -- 4262811
115653 l_accted_amt_idx             := NULL;          -- 4262811
115654 l_acc_rev_flag               := NULL;          -- 4262811
115655 l_accrual_line_num           := NULL;          -- 4262811
115656 l_tmp_amt                    := NULL;          -- 4262811
115657 --
115658  
115659 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
115660     l_balance_type_code <> 'B' THEN
115661 IF NVL(p_source_25,9E125) =  1
115662  THEN 
115663 
115664    --
115665    XLA_AE_LINES_PKG.SetNewLine;
115666 
115667    p_balance_type_code          := l_balance_type_code;
115668    -- set the flag so later we will know whether the gain loss line needs to be created
115669    
115670    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
115671      p_actual_flag :='A';
115672    END IF;
115673 
115674    --
115675    -- bulk performance
115676    --
115677    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
115678                                       p_header_num   => 0); -- 4262811
115679    --
115680    -- set accounting line options
115681    --
115682    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
115683            p_natural_side_code          => 'C'
115684          , p_gain_or_loss_flag          => 'N'
115685          , p_gl_transfer_mode_code      => 'S'
115686          , p_acct_entry_type_code       => 'A'
115687          , p_switch_side_flag           => 'Y'
115688          , p_merge_duplicate_code       => 'N'
115689          );
115690    --
115691    l_acc_rev_natural_side_code := 'D';  -- 4262811
115692    -- 
115693    --
115694    -- set accounting line type info
115695    --
115696    xla_ae_lines_pkg.SetAcctLineType
115697       (p_component_type             => l_component_type
115698       ,p_event_type_code            => l_event_type_code
115699       ,p_line_definition_owner_code => l_line_definition_owner_code
115700       ,p_line_definition_code       => l_line_definition_code
115701       ,p_accounting_line_code       => l_component_code
115702       ,p_accounting_line_type_code  => l_component_type_code
115703       ,p_accounting_line_appl_id    => l_component_appl_id
115704       ,p_amb_context_code           => l_amb_context_code
115705       ,p_entity_code                => l_entity_code
115706       ,p_event_class_code           => l_event_class_code);
115707    --
115708    -- set accounting class
115709    --
115710    xla_ae_lines_pkg.SetAcctClass(
115711            p_accounting_class_code  => 'OFFSET'
115712          , p_ae_header_id           => l_ae_header_id
115713          );
115714 
115715    --
115716    -- set rounding class
115717    --
115718    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
115719                       'OFFSET';
115720 
115721    --
115722    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
115723    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
115724    --
115725    -- bulk performance
115726    --
115727    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
115728 
115729    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
115730       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
115731 
115732    -- 4955764
115733    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
115734       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
115735 
115736    -- 4458381 Public Sector Enh
115737    
115738    --
115739    -- set accounting attributes for the line type
115740    --
115741    l_entered_amt_idx := 3;
115742    l_accted_amt_idx  := 8;
115743    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
115744    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
115745    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_26);
115746    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
115747    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
115748    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
115749    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
115750    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
115751    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
115752    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
115753    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
115754    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
115755    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
115756    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
115757    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
115758    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
115759    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
115760 
115761    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
115762    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
115763 
115764    ---------------------------------------------------------------------------------------------------------------
115765    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
115766    ---------------------------------------------------------------------------------------------------------------
115767    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
115768 
115769    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
115770    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
115771 
115772    IF xla_accounting_cache_pkg.GetValueChar
115773          (p_source_code         => 'LEDGER_CATEGORY_CODE'
115774          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
115775    AND l_bflow_method_code = 'PRIOR_ENTRY'
115776 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
115777    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
115778          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
115779        )
115780    THEN
115781          xla_ae_lines_pkg.BflowUpgEntry
115782            (p_business_method_code    => l_bflow_method_code
115783            ,p_business_class_code     => l_bflow_class_code
115784            ,p_balance_type            => l_balance_type_code);
115785    ELSE
115786       NULL;
115787 -- No business flow processing for business flow method of NONE.
115788    END IF;
115789 
115790    --
115791    -- call analytical criteria
115792    --
115793    
115794    --
115795    -- call description
115796    --
115797    -- No description or it is inherited.
115798    --
115799    -- call ADRs
115800    -- Bug 4922099
115801    --
115802    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
115803         (NVL(l_actual_upg_option, 'N') = 'O') OR
115804         (NVL(l_enc_upg_option, 'N') = 'O')
115805       )
115806    THEN
115807    NULL;
115808    --
115809    --
115810    
115811   l_ccid := AcctDerRule_3(
115812            p_application_id           => p_application_id
115813          , p_ae_header_id             => l_ae_header_id 
115814 , p_source_3 => p_source_3
115815          , x_transaction_coa_id       => l_adr_transaction_coa_id
115816          , x_accounting_coa_id        => l_adr_accounting_coa_id
115817          , x_value_type_code          => l_adr_value_type_code
115818          , p_side                     => 'NA'
115819    );
115820 
115821    xla_ae_lines_pkg.set_ccid(
115822     p_code_combination_id          => l_ccid
115823   , p_value_type_code              => l_adr_value_type_code
115824   , p_transaction_coa_id           => l_adr_transaction_coa_id
115825   , p_accounting_coa_id            => l_adr_accounting_coa_id
115826   , p_adr_code                     => 'CST_AWO_OFFSET'
115827   , p_adr_type_code                => 'S'
115828   , p_component_type               => l_component_type
115829   , p_component_code               => l_component_code
115830   , p_component_type_code          => l_component_type_code
115831   , p_component_appl_id            => l_component_appl_id
115832   , p_amb_context_code             => l_amb_context_code
115833   , p_side                         => 'NA'
115834   );
115835 
115836 
115837    --
115838    --
115839    END IF;
115840    --
115841    -- Bug 4922099
115842    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
115843           (NVL(l_enc_upg_option, 'N') = 'O')
115844         ) AND
115845         (l_bflow_method_code = 'PRIOR_ENTRY')
115846       )
115847    THEN
115848       IF
115849       --
115850       1 = 2
115851       --
115852       THEN
115853       xla_accounting_err_pkg.build_message
115854                                     (p_appli_s_name            => 'XLA'
115855                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
115856                                     ,p_token_1                 => 'LINE_NUMBER'
115857                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
115858                                     ,p_token_2                 => 'LINE_TYPE_NAME'
115859                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
115860                                                                              l_component_type
115861                                                                             ,l_component_code
115862                                                                             ,l_component_type_code
115863                                                                             ,l_component_appl_id
115864                                                                             ,l_amb_context_code
115865                                                                             ,l_entity_code
115866                                                                             ,l_event_class_code
115867                                                                            )
115868                                     ,p_token_3                 => 'OWNER'
115869                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
115870                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
115871                                                                           ,p_lookup_code    => l_component_type_code
115872                                                                          )
115873                                     ,p_token_4                 => 'PRODUCT_NAME'
115874                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
115875                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
115876                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
115877                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
115878                                     ,p_ae_header_id            =>  NULL
115879                                        );
115880 
115881         IF (C_LEVEL_ERROR>= g_log_level) THEN
115882                  trace
115883                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
115884                       ,p_level    => C_LEVEL_ERROR
115885                       ,p_module   => l_log_module);
115886         END IF;
115887       END IF;
115888    END IF;
115889    --
115890    --
115891    ------------------------------------------------------------------------------------------------
115892    -- 4219869 Business Flow
115893    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
115894    -- Prior Entry.  Currently, the following code is always generated.
115895    ------------------------------------------------------------------------------------------------
115896    XLA_AE_LINES_PKG.ValidateCurrentLine;
115897 
115898    ------------------------------------------------------------------------------------
115899    -- 4219869 Business Flow
115900    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
115901    ------------------------------------------------------------------------------------
115902    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
115903 
115904    ----------------------------------------------------------------------------------
115905    -- 4219869 Business Flow
115906    -- Update journal entry status -- Need to generate this within IF <condition>
115907    ----------------------------------------------------------------------------------
115908    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
115909          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
115910          ,p_balance_type_code => l_balance_type_code
115911          );
115912 
115913    -------------------------------------------------------------------------------------------
115914    -- 4262811 - Generate the Accrual Reversal lines
115915    -------------------------------------------------------------------------------------------
115916    BEGIN
115917       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
115918                               (g_array_event(p_event_id).array_value_num('header_index'));
115919       IF l_acc_rev_flag IS NULL THEN
115920          l_acc_rev_flag := 'N';
115921       END IF;
115922    EXCEPTION
115923       WHEN OTHERS THEN
115924          l_acc_rev_flag := 'N';
115925    END;
115926    --
115927    IF (l_acc_rev_flag = 'Y') THEN
115928 
115929        -- 4645092  ------------------------------------------------------------------------------
115930        -- To allow MPA report to determine if it should generate report process
115931        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
115932        ------------------------------------------------------------------------------------------
115933 
115934        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
115935        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
115936    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
115937    -- call ADRs
115938    -- Bug 4922099
115939    --
115940    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
115941         (NVL(l_actual_upg_option, 'N') = 'O') OR
115942         (NVL(l_enc_upg_option, 'N') = 'O')
115943       )
115944    THEN
115945    NULL;
115946    --
115947    --
115948    
115949   l_ccid := AcctDerRule_3(
115950            p_application_id           => p_application_id
115951          , p_ae_header_id             => l_ae_header_id 
115952 , p_source_3 => p_source_3
115953          , x_transaction_coa_id       => l_adr_transaction_coa_id
115954          , x_accounting_coa_id        => l_adr_accounting_coa_id
115955          , x_value_type_code          => l_adr_value_type_code
115956          , p_side                     => 'NA'
115957    );
115958 
115959    xla_ae_lines_pkg.set_ccid(
115960     p_code_combination_id          => l_ccid
115961   , p_value_type_code              => l_adr_value_type_code
115962   , p_transaction_coa_id           => l_adr_transaction_coa_id
115963   , p_accounting_coa_id            => l_adr_accounting_coa_id
115964   , p_adr_code                     => 'CST_AWO_OFFSET'
115965   , p_adr_type_code                => 'S'
115966   , p_component_type               => l_component_type
115967   , p_component_code               => l_component_code
115968   , p_component_type_code          => l_component_type_code
115969   , p_component_appl_id            => l_component_appl_id
115970   , p_amb_context_code             => l_amb_context_code
115971   , p_side                         => 'NA'
115972   );
115973 
115974 
115975    --
115976    --
115977    END IF;
115978 
115979        --
115980        -- Update the line information that should be overwritten
115981        --
115982        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
115983                                          p_header_num   => 1);
115984        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
115985 
115986        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
115987 
115988        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
115989           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
115990        END IF;
115991 
115992       --
115993       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
115994       --
115995       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
115996           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
115997       ELSE
115998           ---------------------------------------------------------------------------------------------------
115999           -- 4262811a Switch Sign
116000           ---------------------------------------------------------------------------------------------------
116001           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
116002           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
116003                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116004           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
116005                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116006           -- 5132302
116007           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
116008                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116009 
116010       END IF;
116011 
116012       -- 4955764
116013       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
116014       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
116015 
116016 
116017       XLA_AE_LINES_PKG.ValidateCurrentLine;
116018       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
116019 
116020       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
116021                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
116022                ,p_balance_type_code => l_balance_type_code);
116023 
116024    END IF;
116025 
116026    -----------------------------------------------------------------------------------------
116027    -- 4262811 Multiperiod Accounting
116028    -----------------------------------------------------------------------------------------
116029      -- No MPA option is assigned.
116030 
116031 
116032 END IF;
116033 END IF;
116034 --
116035 
116036 --
116037 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
116038    trace
116039       (p_msg      => 'END of AcctLineType_210'
116040       ,p_level    => C_LEVEL_PROCEDURE
116041       ,p_module   => l_log_module);
116042 END IF;
116043 --
116044 EXCEPTION
116045   WHEN xla_exceptions_pkg.application_exception THEN
116046       RAISE;
116047   WHEN OTHERS THEN
116048        xla_exceptions_pkg.raise_message
116049            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_210');
116050 END AcctLineType_210;
116051 --
116052 
116053 ---------------------------------------
116054 --
116055 -- PRIVATE FUNCTION
116056 --         AcctLineType_211
116057 --
116058 ---------------------------------------
116059 PROCEDURE AcctLineType_211 (
116060   p_application_id        IN NUMBER
116061  ,p_event_id              IN NUMBER
116062  ,p_calculate_acctd_flag  IN VARCHAR2
116063  ,p_calculate_g_l_flag    IN VARCHAR2
116064  ,p_actual_flag           IN OUT VARCHAR2
116065  ,p_balance_type_code     OUT VARCHAR2
116066  ,p_gain_or_loss_ref      OUT VARCHAR2
116067  
116068 --Cost Management Default Account
116069  , p_source_4            IN NUMBER
116070 --Applied to Application ID
116071  , p_source_6            IN NUMBER
116072 --Applied to Distribution Link Type
116073  , p_source_7            IN VARCHAR2
116074 --Applied to Entity Code
116075  , p_source_8            IN VARCHAR2
116076 --DISTRIBUTION_IDENTIFIER
116077  , p_source_11            IN NUMBER
116078 --Distribution Type
116079  , p_source_12            IN VARCHAR2
116080  , p_source_12_meaning    IN VARCHAR2
116081 --Encumbrance Reversal Amount Entered
116082  , p_source_14            IN NUMBER
116083 --Entered Currency Code
116084  , p_source_15            IN VARCHAR2
116085 --Transaction Encumbrance Reversal Amount
116086  , p_source_16            IN NUMBER
116087 --Entered Amount
116088  , p_source_18            IN NUMBER
116089 --Currency Conversion Date
116090  , p_source_19            IN DATE
116091 --Currency Conversion Rate
116092  , p_source_20            IN NUMBER
116093 --Currency Conversion Type
116094  , p_source_21            IN VARCHAR2
116095 --Accounted Amount
116096  , p_source_22            IN NUMBER
116097 --Accounting Line Type
116098  , p_source_24            IN NUMBER
116099 --Costing Encumbrance Upgrade Option
116100  , p_source_27            IN VARCHAR2
116101 --TXN_PO_DISTRIBUTION_ID
116102  , p_source_28            IN NUMBER
116103 --TXN_PO_HEADER_ID
116104  , p_source_29            IN NUMBER
116105 --Requisition Budget Account
116106  , p_source_30            IN NUMBER
116107 --Requisition Encumbrance Type Identifier
116108  , p_source_31            IN NUMBER
116109 )
116110 IS
116111 
116112 l_component_type              VARCHAR2(80);
116113 l_component_code              VARCHAR2(30);
116114 l_component_type_code         VARCHAR2(1);
116115 l_component_appl_id           INTEGER;
116116 l_amb_context_code            VARCHAR2(30);
116117 l_entity_code                 VARCHAR2(30);
116118 l_event_class_code            VARCHAR2(30);
116119 l_ae_header_id                NUMBER;
116120 l_event_type_code             VARCHAR2(30);
116121 l_line_definition_code        VARCHAR2(30);
116122 l_line_definition_owner_code  VARCHAR2(1);
116123 --
116124 -- adr variables
116125 l_segment                     VARCHAR2(30);
116126 l_ccid                        NUMBER;
116127 l_adr_transaction_coa_id      NUMBER;
116128 l_adr_accounting_coa_id       NUMBER;
116129 l_adr_flexfield_segment_code  VARCHAR2(30);
116130 l_adr_flex_value_set_id       NUMBER;
116131 l_adr_value_type_code         VARCHAR2(30);
116132 l_adr_value_combination_id    NUMBER;
116133 l_adr_value_segment_code      VARCHAR2(30);
116134 
116135 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
116136 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
116137 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
116138 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
116139 
116140 -- 4262811 Variables ------------------------------------------------------------------------------------------
116141 l_entered_amt_idx             NUMBER;
116142 l_accted_amt_idx              NUMBER;
116143 l_acc_rev_flag                VARCHAR2(1);
116144 l_accrual_line_num            NUMBER;
116145 l_tmp_amt                     NUMBER;
116146 l_acc_rev_natural_side_code   VARCHAR2(1);
116147 
116148 l_num_entries                 NUMBER;
116149 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
116150 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
116151 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
116152 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
116153 l_recog_line_1                NUMBER;
116154 l_recog_line_2                NUMBER;
116155 
116156 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
116157 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
116158 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
116159 
116160 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
116161 
116162 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
116163 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
116164 
116165 ---------------------------------------------------------------------------------------------------------------
116166 
116167 
116168 --
116169 -- bulk performance
116170 --
116171 l_balance_type_code           VARCHAR2(1);
116172 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
116173 l_log_module                  VARCHAR2(240);
116174 
116175 --
116176 -- Upgrade strategy
116177 --
116178 l_actual_upg_option           VARCHAR2(1);
116179 l_enc_upg_option           VARCHAR2(1);
116180 
116181 --
116182 BEGIN
116183 --
116184 IF g_log_enabled THEN
116185       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_211';
116186 END IF;
116187 --
116188 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
116189 
116190       trace
116191          (p_msg      => 'BEGIN of AcctLineType_211'
116192          ,p_level    => C_LEVEL_PROCEDURE
116193          ,p_module   => l_log_module);
116194 
116195 END IF;
116196 --
116197 l_component_type             := 'AMB_JLT';
116198 l_component_code             := 'OFFSET';
116199 l_component_type_code        := 'S';
116200 l_component_appl_id          :=  707;
116201 l_amb_context_code           := 'DEFAULT';
116202 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
116203 l_event_class_code           := 'DIR_INTERORG_RCPT';
116204 l_event_type_code            := 'DIR_INTERORG_RCPT_ALL';
116205 l_line_definition_owner_code := 'S';
116206 l_line_definition_code       := 'DIRECT_INTERORG_RCPT';
116207 --
116208 l_balance_type_code          := 'A';
116209 l_segment                     := NULL;
116210 l_ccid                        := NULL;
116211 l_adr_transaction_coa_id      := NULL;
116212 l_adr_accounting_coa_id       := NULL;
116213 l_adr_flexfield_segment_code  := NULL;
116214 l_adr_flex_value_set_id       := NULL;
116215 l_adr_value_type_code         := NULL;
116216 l_adr_value_combination_id    := NULL;
116217 l_adr_value_segment_code      := NULL;
116218 
116219 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
116220 l_bflow_class_code           := '';    -- 4219869 Business Flow
116221 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
116222 l_budgetary_control_flag     := 'N';
116223 
116224 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
116225 l_bflow_applied_to_amt       := NULL; -- 5132302
116226 l_entered_amt_idx            := NULL;          -- 4262811
116227 l_accted_amt_idx             := NULL;          -- 4262811
116228 l_acc_rev_flag               := NULL;          -- 4262811
116229 l_accrual_line_num           := NULL;          -- 4262811
116230 l_tmp_amt                    := NULL;          -- 4262811
116231 --
116232  
116233 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
116234     l_balance_type_code <> 'B' THEN
116235 IF NVL(p_source_24,9E125) =  2
116236  THEN 
116237 
116238    --
116239    XLA_AE_LINES_PKG.SetNewLine;
116240 
116241    p_balance_type_code          := l_balance_type_code;
116242    -- set the flag so later we will know whether the gain loss line needs to be created
116243    
116244    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
116245      p_actual_flag :='A';
116246    END IF;
116247 
116248    --
116249    -- bulk performance
116250    --
116251    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
116252                                       p_header_num   => 0); -- 4262811
116253    --
116254    -- set accounting line options
116255    --
116256    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
116257            p_natural_side_code          => 'D'
116258          , p_gain_or_loss_flag          => 'N'
116259          , p_gl_transfer_mode_code      => 'S'
116260          , p_acct_entry_type_code       => 'A'
116261          , p_switch_side_flag           => 'Y'
116262          , p_merge_duplicate_code       => 'N'
116263          );
116264    --
116265    l_acc_rev_natural_side_code := 'C';  -- 4262811
116266    -- 
116267    --
116268    -- set accounting line type info
116269    --
116270    xla_ae_lines_pkg.SetAcctLineType
116271       (p_component_type             => l_component_type
116272       ,p_event_type_code            => l_event_type_code
116273       ,p_line_definition_owner_code => l_line_definition_owner_code
116274       ,p_line_definition_code       => l_line_definition_code
116275       ,p_accounting_line_code       => l_component_code
116276       ,p_accounting_line_type_code  => l_component_type_code
116277       ,p_accounting_line_appl_id    => l_component_appl_id
116278       ,p_amb_context_code           => l_amb_context_code
116279       ,p_entity_code                => l_entity_code
116280       ,p_event_class_code           => l_event_class_code);
116281    --
116282    -- set accounting class
116283    --
116284    xla_ae_lines_pkg.SetAcctClass(
116285            p_accounting_class_code  => 'OFFSET'
116286          , p_ae_header_id           => l_ae_header_id
116287          );
116288 
116289    --
116290    -- set rounding class
116291    --
116292    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
116293                       'OFFSET';
116294 
116295    --
116296    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
116297    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
116298    --
116299    -- bulk performance
116300    --
116301    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
116302 
116303    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
116304       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
116305 
116306    -- 4955764
116307    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
116308       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
116309 
116310    -- 4458381 Public Sector Enh
116311    
116312    --
116313    -- set accounting attributes for the line type
116314    --
116315    l_entered_amt_idx := 17;
116316    l_accted_amt_idx  := 22;
116317    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
116318    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
116319    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
116320    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
116321    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
116322    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
116323    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
116324    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
116325    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
116326    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
116327    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
116328    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
116329    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
116330    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
116331    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
116332    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
116333    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
116334    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
116335    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
116336    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
116337    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
116338    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
116339    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
116340    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
116341    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
116342    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
116343    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
116344    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
116345    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
116346    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
116347    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
116348    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
116349    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
116350    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
116351    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
116352    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
116353    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
116354    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
116355    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
116356    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
116357    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
116358    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
116359    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
116360    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
116361    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
116362    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
116363    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
116364    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
116365    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
116366 
116367    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
116368    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
116369 
116370    ---------------------------------------------------------------------------------------------------------------
116371    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
116372    ---------------------------------------------------------------------------------------------------------------
116373    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
116374 
116375    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
116376    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
116377 
116378    IF xla_accounting_cache_pkg.GetValueChar
116379          (p_source_code         => 'LEDGER_CATEGORY_CODE'
116380          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
116381    AND l_bflow_method_code = 'PRIOR_ENTRY'
116382 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
116383    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
116384          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
116385        )
116386    THEN
116387          xla_ae_lines_pkg.BflowUpgEntry
116388            (p_business_method_code    => l_bflow_method_code
116389            ,p_business_class_code     => l_bflow_class_code
116390            ,p_balance_type            => l_balance_type_code);
116391    ELSE
116392       NULL;
116393 -- No business flow processing for business flow method of NONE.
116394    END IF;
116395 
116396    --
116397    -- call analytical criteria
116398    --
116399    
116400    --
116401    -- call description
116402    --
116403    -- No description or it is inherited.
116404    --
116405    -- call ADRs
116406    -- Bug 4922099
116407    --
116408    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
116409         (NVL(l_actual_upg_option, 'N') = 'O') OR
116410         (NVL(l_enc_upg_option, 'N') = 'O')
116411       )
116412    THEN
116413    NULL;
116414    --
116415    --
116416    
116417   l_ccid := AcctDerRule_4(
116418            p_application_id           => p_application_id
116419          , p_ae_header_id             => l_ae_header_id 
116420 , p_source_4 => p_source_4
116421          , x_transaction_coa_id       => l_adr_transaction_coa_id
116422          , x_accounting_coa_id        => l_adr_accounting_coa_id
116423          , x_value_type_code          => l_adr_value_type_code
116424          , p_side                     => 'NA'
116425    );
116426 
116427    xla_ae_lines_pkg.set_ccid(
116428     p_code_combination_id          => l_ccid
116429   , p_value_type_code              => l_adr_value_type_code
116430   , p_transaction_coa_id           => l_adr_transaction_coa_id
116431   , p_accounting_coa_id            => l_adr_accounting_coa_id
116432   , p_adr_code                     => 'CST_DEFAULT'
116433   , p_adr_type_code                => 'S'
116434   , p_component_type               => l_component_type
116435   , p_component_code               => l_component_code
116436   , p_component_type_code          => l_component_type_code
116437   , p_component_appl_id            => l_component_appl_id
116438   , p_amb_context_code             => l_amb_context_code
116439   , p_side                         => 'NA'
116440   );
116441 
116442 
116443    --
116444    --
116445    END IF;
116446    --
116447    -- Bug 4922099
116448    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
116449           (NVL(l_enc_upg_option, 'N') = 'O')
116450         ) AND
116451         (l_bflow_method_code = 'PRIOR_ENTRY')
116452       )
116453    THEN
116454       IF
116455       --
116456       1 = 2
116457       --
116458       THEN
116459       xla_accounting_err_pkg.build_message
116460                                     (p_appli_s_name            => 'XLA'
116461                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
116462                                     ,p_token_1                 => 'LINE_NUMBER'
116463                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
116464                                     ,p_token_2                 => 'LINE_TYPE_NAME'
116465                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
116466                                                                              l_component_type
116467                                                                             ,l_component_code
116468                                                                             ,l_component_type_code
116469                                                                             ,l_component_appl_id
116470                                                                             ,l_amb_context_code
116471                                                                             ,l_entity_code
116472                                                                             ,l_event_class_code
116473                                                                            )
116474                                     ,p_token_3                 => 'OWNER'
116475                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
116476                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
116477                                                                           ,p_lookup_code    => l_component_type_code
116478                                                                          )
116479                                     ,p_token_4                 => 'PRODUCT_NAME'
116480                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
116481                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
116482                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
116483                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
116484                                     ,p_ae_header_id            =>  NULL
116485                                        );
116486 
116487         IF (C_LEVEL_ERROR>= g_log_level) THEN
116488                  trace
116489                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
116490                       ,p_level    => C_LEVEL_ERROR
116491                       ,p_module   => l_log_module);
116492         END IF;
116493       END IF;
116494    END IF;
116495    --
116496    --
116497    ------------------------------------------------------------------------------------------------
116498    -- 4219869 Business Flow
116499    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
116500    -- Prior Entry.  Currently, the following code is always generated.
116501    ------------------------------------------------------------------------------------------------
116502    XLA_AE_LINES_PKG.ValidateCurrentLine;
116503 
116504    ------------------------------------------------------------------------------------
116505    -- 4219869 Business Flow
116506    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
116507    ------------------------------------------------------------------------------------
116508    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
116509 
116510    ----------------------------------------------------------------------------------
116511    -- 4219869 Business Flow
116512    -- Update journal entry status -- Need to generate this within IF <condition>
116513    ----------------------------------------------------------------------------------
116514    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
116515          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
116516          ,p_balance_type_code => l_balance_type_code
116517          );
116518 
116519    -------------------------------------------------------------------------------------------
116520    -- 4262811 - Generate the Accrual Reversal lines
116521    -------------------------------------------------------------------------------------------
116522    BEGIN
116523       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
116524                               (g_array_event(p_event_id).array_value_num('header_index'));
116525       IF l_acc_rev_flag IS NULL THEN
116526          l_acc_rev_flag := 'N';
116527       END IF;
116528    EXCEPTION
116529       WHEN OTHERS THEN
116530          l_acc_rev_flag := 'N';
116531    END;
116532    --
116533    IF (l_acc_rev_flag = 'Y') THEN
116534 
116535        -- 4645092  ------------------------------------------------------------------------------
116536        -- To allow MPA report to determine if it should generate report process
116537        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
116538        ------------------------------------------------------------------------------------------
116539 
116540        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
116541        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
116542    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
116543    -- call ADRs
116544    -- Bug 4922099
116545    --
116546    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
116547         (NVL(l_actual_upg_option, 'N') = 'O') OR
116548         (NVL(l_enc_upg_option, 'N') = 'O')
116549       )
116550    THEN
116551    NULL;
116552    --
116553    --
116554    
116555   l_ccid := AcctDerRule_4(
116556            p_application_id           => p_application_id
116557          , p_ae_header_id             => l_ae_header_id 
116558 , p_source_4 => p_source_4
116559          , x_transaction_coa_id       => l_adr_transaction_coa_id
116560          , x_accounting_coa_id        => l_adr_accounting_coa_id
116561          , x_value_type_code          => l_adr_value_type_code
116562          , p_side                     => 'NA'
116563    );
116564 
116565    xla_ae_lines_pkg.set_ccid(
116566     p_code_combination_id          => l_ccid
116567   , p_value_type_code              => l_adr_value_type_code
116568   , p_transaction_coa_id           => l_adr_transaction_coa_id
116569   , p_accounting_coa_id            => l_adr_accounting_coa_id
116570   , p_adr_code                     => 'CST_DEFAULT'
116571   , p_adr_type_code                => 'S'
116572   , p_component_type               => l_component_type
116573   , p_component_code               => l_component_code
116574   , p_component_type_code          => l_component_type_code
116575   , p_component_appl_id            => l_component_appl_id
116576   , p_amb_context_code             => l_amb_context_code
116577   , p_side                         => 'NA'
116578   );
116579 
116580 
116581    --
116582    --
116583    END IF;
116584 
116585        --
116586        -- Update the line information that should be overwritten
116587        --
116588        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
116589                                          p_header_num   => 1);
116590        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
116591 
116592        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
116593 
116594        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
116595           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
116596        END IF;
116597 
116598       --
116599       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
116600       --
116601       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
116602           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
116603       ELSE
116604           ---------------------------------------------------------------------------------------------------
116605           -- 4262811a Switch Sign
116606           ---------------------------------------------------------------------------------------------------
116607           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
116608           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
116609                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116610           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
116611                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116612           -- 5132302
116613           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
116614                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116615 
116616       END IF;
116617 
116618       -- 4955764
116619       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
116620       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
116621 
116622 
116623       XLA_AE_LINES_PKG.ValidateCurrentLine;
116624       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
116625 
116626       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
116627                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
116628                ,p_balance_type_code => l_balance_type_code);
116629 
116630    END IF;
116631 
116632    -----------------------------------------------------------------------------------------
116633    -- 4262811 Multiperiod Accounting
116634    -----------------------------------------------------------------------------------------
116635      -- No MPA option is assigned.
116636 
116637 
116638 END IF;
116639 END IF;
116640 --
116641 
116642 --
116643 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
116644    trace
116645       (p_msg      => 'END of AcctLineType_211'
116646       ,p_level    => C_LEVEL_PROCEDURE
116647       ,p_module   => l_log_module);
116648 END IF;
116649 --
116650 EXCEPTION
116651   WHEN xla_exceptions_pkg.application_exception THEN
116652       RAISE;
116653   WHEN OTHERS THEN
116654        xla_exceptions_pkg.raise_message
116655            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_211');
116656 END AcctLineType_211;
116657 --
116658 
116659 ---------------------------------------
116660 --
116661 -- PRIVATE FUNCTION
116662 --         AcctLineType_212
116663 --
116664 ---------------------------------------
116665 PROCEDURE AcctLineType_212 (
116666   p_application_id        IN NUMBER
116667  ,p_event_id              IN NUMBER
116668  ,p_calculate_acctd_flag  IN VARCHAR2
116669  ,p_calculate_g_l_flag    IN VARCHAR2
116670  ,p_actual_flag           IN OUT VARCHAR2
116671  ,p_balance_type_code     OUT VARCHAR2
116672  ,p_gain_or_loss_ref      OUT VARCHAR2
116673  
116674 --Cost Management Default Account
116675  , p_source_4            IN NUMBER
116676 --DISTRIBUTION_IDENTIFIER
116677  , p_source_11            IN NUMBER
116678 --Distribution Type
116679  , p_source_12            IN VARCHAR2
116680  , p_source_12_meaning    IN VARCHAR2
116681 --Entered Currency Code
116682  , p_source_15            IN VARCHAR2
116683 --Entered Amount
116684  , p_source_18            IN NUMBER
116685 --Currency Conversion Date
116686  , p_source_19            IN DATE
116687 --Currency Conversion Rate
116688  , p_source_20            IN NUMBER
116689 --Currency Conversion Type
116690  , p_source_21            IN VARCHAR2
116691 --Accounted Amount
116692  , p_source_22            IN NUMBER
116693 --Accounting Line Type
116694  , p_source_24            IN NUMBER
116695 )
116696 IS
116697 
116698 l_component_type              VARCHAR2(80);
116699 l_component_code              VARCHAR2(30);
116700 l_component_type_code         VARCHAR2(1);
116701 l_component_appl_id           INTEGER;
116702 l_amb_context_code            VARCHAR2(30);
116703 l_entity_code                 VARCHAR2(30);
116704 l_event_class_code            VARCHAR2(30);
116705 l_ae_header_id                NUMBER;
116706 l_event_type_code             VARCHAR2(30);
116707 l_line_definition_code        VARCHAR2(30);
116708 l_line_definition_owner_code  VARCHAR2(1);
116709 --
116710 -- adr variables
116711 l_segment                     VARCHAR2(30);
116712 l_ccid                        NUMBER;
116713 l_adr_transaction_coa_id      NUMBER;
116714 l_adr_accounting_coa_id       NUMBER;
116715 l_adr_flexfield_segment_code  VARCHAR2(30);
116716 l_adr_flex_value_set_id       NUMBER;
116717 l_adr_value_type_code         VARCHAR2(30);
116718 l_adr_value_combination_id    NUMBER;
116719 l_adr_value_segment_code      VARCHAR2(30);
116720 
116721 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
116722 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
116723 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
116724 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
116725 
116726 -- 4262811 Variables ------------------------------------------------------------------------------------------
116727 l_entered_amt_idx             NUMBER;
116728 l_accted_amt_idx              NUMBER;
116729 l_acc_rev_flag                VARCHAR2(1);
116730 l_accrual_line_num            NUMBER;
116731 l_tmp_amt                     NUMBER;
116732 l_acc_rev_natural_side_code   VARCHAR2(1);
116733 
116734 l_num_entries                 NUMBER;
116735 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
116736 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
116737 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
116738 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
116739 l_recog_line_1                NUMBER;
116740 l_recog_line_2                NUMBER;
116741 
116742 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
116743 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
116744 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
116745 
116746 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
116747 
116748 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
116749 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
116750 
116751 ---------------------------------------------------------------------------------------------------------------
116752 
116753 
116754 --
116755 -- bulk performance
116756 --
116757 l_balance_type_code           VARCHAR2(1);
116758 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
116759 l_log_module                  VARCHAR2(240);
116760 
116761 --
116762 -- Upgrade strategy
116763 --
116764 l_actual_upg_option           VARCHAR2(1);
116765 l_enc_upg_option           VARCHAR2(1);
116766 
116767 --
116768 BEGIN
116769 --
116770 IF g_log_enabled THEN
116771       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_212';
116772 END IF;
116773 --
116774 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
116775 
116776       trace
116777          (p_msg      => 'BEGIN of AcctLineType_212'
116778          ,p_level    => C_LEVEL_PROCEDURE
116779          ,p_module   => l_log_module);
116780 
116781 END IF;
116782 --
116783 l_component_type             := 'AMB_JLT';
116784 l_component_code             := 'OVERHEAD_ABSORPTION';
116785 l_component_type_code        := 'S';
116786 l_component_appl_id          :=  707;
116787 l_amb_context_code           := 'DEFAULT';
116788 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
116789 l_event_class_code           := 'ABSORPTION';
116790 l_event_type_code            := 'ABSORPTION_ALL';
116791 l_line_definition_owner_code := 'S';
116792 l_line_definition_code       := 'ABSORPTION';
116793 --
116794 l_balance_type_code          := 'A';
116795 l_segment                     := NULL;
116796 l_ccid                        := NULL;
116797 l_adr_transaction_coa_id      := NULL;
116798 l_adr_accounting_coa_id       := NULL;
116799 l_adr_flexfield_segment_code  := NULL;
116800 l_adr_flex_value_set_id       := NULL;
116801 l_adr_value_type_code         := NULL;
116802 l_adr_value_combination_id    := NULL;
116803 l_adr_value_segment_code      := NULL;
116804 
116805 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
116806 l_bflow_class_code           := '';    -- 4219869 Business Flow
116807 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
116808 l_budgetary_control_flag     := 'N';
116809 
116810 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
116811 l_bflow_applied_to_amt       := NULL; -- 5132302
116812 l_entered_amt_idx            := NULL;          -- 4262811
116813 l_accted_amt_idx             := NULL;          -- 4262811
116814 l_acc_rev_flag               := NULL;          -- 4262811
116815 l_accrual_line_num           := NULL;          -- 4262811
116816 l_tmp_amt                    := NULL;          -- 4262811
116817 --
116818  
116819 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
116820     l_balance_type_code <> 'B' THEN
116821 IF NVL(p_source_24,9E125) =  3
116822  THEN 
116823 
116824    --
116825    XLA_AE_LINES_PKG.SetNewLine;
116826 
116827    p_balance_type_code          := l_balance_type_code;
116828    -- set the flag so later we will know whether the gain loss line needs to be created
116829    
116830    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
116831      p_actual_flag :='A';
116832    END IF;
116833 
116834    --
116835    -- bulk performance
116836    --
116837    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
116838                                       p_header_num   => 0); -- 4262811
116839    --
116840    -- set accounting line options
116841    --
116842    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
116843            p_natural_side_code          => 'D'
116844          , p_gain_or_loss_flag          => 'N'
116845          , p_gl_transfer_mode_code      => 'S'
116846          , p_acct_entry_type_code       => 'A'
116847          , p_switch_side_flag           => 'Y'
116848          , p_merge_duplicate_code       => 'N'
116849          );
116850    --
116851    l_acc_rev_natural_side_code := 'C';  -- 4262811
116852    -- 
116853    --
116854    -- set accounting line type info
116855    --
116856    xla_ae_lines_pkg.SetAcctLineType
116857       (p_component_type             => l_component_type
116858       ,p_event_type_code            => l_event_type_code
116859       ,p_line_definition_owner_code => l_line_definition_owner_code
116860       ,p_line_definition_code       => l_line_definition_code
116861       ,p_accounting_line_code       => l_component_code
116862       ,p_accounting_line_type_code  => l_component_type_code
116863       ,p_accounting_line_appl_id    => l_component_appl_id
116864       ,p_amb_context_code           => l_amb_context_code
116865       ,p_entity_code                => l_entity_code
116866       ,p_event_class_code           => l_event_class_code);
116867    --
116868    -- set accounting class
116869    --
116870    xla_ae_lines_pkg.SetAcctClass(
116871            p_accounting_class_code  => 'OVERHEAD_ABSORPTION'
116872          , p_ae_header_id           => l_ae_header_id
116873          );
116874 
116875    --
116876    -- set rounding class
116877    --
116878    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
116879                       'OVERHEAD_ABSORPTION';
116880 
116881    --
116882    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
116883    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
116884    --
116885    -- bulk performance
116886    --
116887    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
116888 
116889    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
116890       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
116891 
116892    -- 4955764
116893    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
116894       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
116895 
116896    -- 4458381 Public Sector Enh
116897    
116898    --
116899    -- set accounting attributes for the line type
116900    --
116901    l_entered_amt_idx := 3;
116902    l_accted_amt_idx  := 8;
116903    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
116904    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
116905    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
116906    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
116907    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
116908    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
116909    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
116910    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
116911    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
116912    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
116913    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
116914    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
116915    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
116916    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
116917    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
116918    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
116919    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
116920 
116921    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
116922    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
116923 
116924    ---------------------------------------------------------------------------------------------------------------
116925    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
116926    ---------------------------------------------------------------------------------------------------------------
116927    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
116928 
116929    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
116930    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
116931 
116932    IF xla_accounting_cache_pkg.GetValueChar
116933          (p_source_code         => 'LEDGER_CATEGORY_CODE'
116934          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
116935    AND l_bflow_method_code = 'PRIOR_ENTRY'
116936 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
116937    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
116938          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
116939        )
116940    THEN
116941          xla_ae_lines_pkg.BflowUpgEntry
116942            (p_business_method_code    => l_bflow_method_code
116943            ,p_business_class_code     => l_bflow_class_code
116944            ,p_balance_type            => l_balance_type_code);
116945    ELSE
116946       NULL;
116947 -- No business flow processing for business flow method of NONE.
116948    END IF;
116949 
116950    --
116951    -- call analytical criteria
116952    --
116953    
116954    --
116955    -- call description
116956    --
116957    -- No description or it is inherited.
116958    --
116959    -- call ADRs
116960    -- Bug 4922099
116961    --
116962    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
116963         (NVL(l_actual_upg_option, 'N') = 'O') OR
116964         (NVL(l_enc_upg_option, 'N') = 'O')
116965       )
116966    THEN
116967    NULL;
116968    --
116969    --
116970    
116971   l_ccid := AcctDerRule_4(
116972            p_application_id           => p_application_id
116973          , p_ae_header_id             => l_ae_header_id 
116974 , p_source_4 => p_source_4
116975          , x_transaction_coa_id       => l_adr_transaction_coa_id
116976          , x_accounting_coa_id        => l_adr_accounting_coa_id
116977          , x_value_type_code          => l_adr_value_type_code
116978          , p_side                     => 'NA'
116979    );
116980 
116981    xla_ae_lines_pkg.set_ccid(
116982     p_code_combination_id          => l_ccid
116983   , p_value_type_code              => l_adr_value_type_code
116984   , p_transaction_coa_id           => l_adr_transaction_coa_id
116985   , p_accounting_coa_id            => l_adr_accounting_coa_id
116986   , p_adr_code                     => 'CST_DEFAULT'
116987   , p_adr_type_code                => 'S'
116988   , p_component_type               => l_component_type
116989   , p_component_code               => l_component_code
116990   , p_component_type_code          => l_component_type_code
116991   , p_component_appl_id            => l_component_appl_id
116992   , p_amb_context_code             => l_amb_context_code
116993   , p_side                         => 'NA'
116994   );
116995 
116996 
116997    --
116998    --
116999    END IF;
117000    --
117001    -- Bug 4922099
117002    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
117003           (NVL(l_enc_upg_option, 'N') = 'O')
117004         ) AND
117005         (l_bflow_method_code = 'PRIOR_ENTRY')
117006       )
117007    THEN
117008       IF
117009       --
117010       1 = 2
117011       --
117012       THEN
117013       xla_accounting_err_pkg.build_message
117014                                     (p_appli_s_name            => 'XLA'
117015                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
117016                                     ,p_token_1                 => 'LINE_NUMBER'
117017                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
117018                                     ,p_token_2                 => 'LINE_TYPE_NAME'
117019                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
117020                                                                              l_component_type
117021                                                                             ,l_component_code
117022                                                                             ,l_component_type_code
117023                                                                             ,l_component_appl_id
117024                                                                             ,l_amb_context_code
117025                                                                             ,l_entity_code
117026                                                                             ,l_event_class_code
117027                                                                            )
117028                                     ,p_token_3                 => 'OWNER'
117029                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
117030                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
117031                                                                           ,p_lookup_code    => l_component_type_code
117032                                                                          )
117033                                     ,p_token_4                 => 'PRODUCT_NAME'
117034                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
117035                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
117036                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
117037                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
117038                                     ,p_ae_header_id            =>  NULL
117039                                        );
117040 
117041         IF (C_LEVEL_ERROR>= g_log_level) THEN
117042                  trace
117043                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
117044                       ,p_level    => C_LEVEL_ERROR
117045                       ,p_module   => l_log_module);
117046         END IF;
117047       END IF;
117048    END IF;
117049    --
117050    --
117051    ------------------------------------------------------------------------------------------------
117052    -- 4219869 Business Flow
117053    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
117054    -- Prior Entry.  Currently, the following code is always generated.
117055    ------------------------------------------------------------------------------------------------
117056    XLA_AE_LINES_PKG.ValidateCurrentLine;
117057 
117058    ------------------------------------------------------------------------------------
117059    -- 4219869 Business Flow
117060    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
117061    ------------------------------------------------------------------------------------
117062    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
117063 
117064    ----------------------------------------------------------------------------------
117065    -- 4219869 Business Flow
117066    -- Update journal entry status -- Need to generate this within IF <condition>
117067    ----------------------------------------------------------------------------------
117068    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
117069          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
117070          ,p_balance_type_code => l_balance_type_code
117071          );
117072 
117073    -------------------------------------------------------------------------------------------
117074    -- 4262811 - Generate the Accrual Reversal lines
117075    -------------------------------------------------------------------------------------------
117076    BEGIN
117077       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
117078                               (g_array_event(p_event_id).array_value_num('header_index'));
117079       IF l_acc_rev_flag IS NULL THEN
117080          l_acc_rev_flag := 'N';
117081       END IF;
117082    EXCEPTION
117083       WHEN OTHERS THEN
117084          l_acc_rev_flag := 'N';
117085    END;
117086    --
117087    IF (l_acc_rev_flag = 'Y') THEN
117088 
117089        -- 4645092  ------------------------------------------------------------------------------
117090        -- To allow MPA report to determine if it should generate report process
117091        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
117092        ------------------------------------------------------------------------------------------
117093 
117094        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
117095        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
117096    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
117097    -- call ADRs
117098    -- Bug 4922099
117099    --
117100    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
117101         (NVL(l_actual_upg_option, 'N') = 'O') OR
117102         (NVL(l_enc_upg_option, 'N') = 'O')
117103       )
117104    THEN
117105    NULL;
117106    --
117107    --
117108    
117109   l_ccid := AcctDerRule_4(
117110            p_application_id           => p_application_id
117111          , p_ae_header_id             => l_ae_header_id 
117112 , p_source_4 => p_source_4
117113          , x_transaction_coa_id       => l_adr_transaction_coa_id
117114          , x_accounting_coa_id        => l_adr_accounting_coa_id
117115          , x_value_type_code          => l_adr_value_type_code
117116          , p_side                     => 'NA'
117117    );
117118 
117119    xla_ae_lines_pkg.set_ccid(
117120     p_code_combination_id          => l_ccid
117121   , p_value_type_code              => l_adr_value_type_code
117122   , p_transaction_coa_id           => l_adr_transaction_coa_id
117123   , p_accounting_coa_id            => l_adr_accounting_coa_id
117124   , p_adr_code                     => 'CST_DEFAULT'
117125   , p_adr_type_code                => 'S'
117126   , p_component_type               => l_component_type
117127   , p_component_code               => l_component_code
117128   , p_component_type_code          => l_component_type_code
117129   , p_component_appl_id            => l_component_appl_id
117130   , p_amb_context_code             => l_amb_context_code
117131   , p_side                         => 'NA'
117132   );
117133 
117134 
117135    --
117136    --
117137    END IF;
117138 
117139        --
117140        -- Update the line information that should be overwritten
117141        --
117142        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
117143                                          p_header_num   => 1);
117144        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
117145 
117146        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
117147 
117148        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
117149           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
117150        END IF;
117151 
117152       --
117153       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
117154       --
117155       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
117156           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
117157       ELSE
117158           ---------------------------------------------------------------------------------------------------
117159           -- 4262811a Switch Sign
117160           ---------------------------------------------------------------------------------------------------
117161           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
117162           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
117163                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117164           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
117165                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117166           -- 5132302
117167           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
117168                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117169 
117170       END IF;
117171 
117172       -- 4955764
117173       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
117174       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
117175 
117176 
117177       XLA_AE_LINES_PKG.ValidateCurrentLine;
117178       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
117179 
117180       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
117181                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
117182                ,p_balance_type_code => l_balance_type_code);
117183 
117184    END IF;
117185 
117186    -----------------------------------------------------------------------------------------
117187    -- 4262811 Multiperiod Accounting
117188    -----------------------------------------------------------------------------------------
117189      -- No MPA option is assigned.
117190 
117191 
117192 END IF;
117193 END IF;
117194 --
117195 
117196 --
117197 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
117198    trace
117199       (p_msg      => 'END of AcctLineType_212'
117200       ,p_level    => C_LEVEL_PROCEDURE
117201       ,p_module   => l_log_module);
117202 END IF;
117203 --
117204 EXCEPTION
117205   WHEN xla_exceptions_pkg.application_exception THEN
117206       RAISE;
117207   WHEN OTHERS THEN
117208        xla_exceptions_pkg.raise_message
117209            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_212');
117210 END AcctLineType_212;
117211 --
117212 
117213 ---------------------------------------
117214 --
117215 -- PRIVATE FUNCTION
117216 --         AcctLineType_213
117217 --
117218 ---------------------------------------
117219 PROCEDURE AcctLineType_213 (
117220   p_application_id        IN NUMBER
117221  ,p_event_id              IN NUMBER
117222  ,p_calculate_acctd_flag  IN VARCHAR2
117223  ,p_calculate_g_l_flag    IN VARCHAR2
117224  ,p_actual_flag           IN OUT VARCHAR2
117225  ,p_balance_type_code     OUT VARCHAR2
117226  ,p_gain_or_loss_ref      OUT VARCHAR2
117227  
117228 --Cost Management Default Account
117229  , p_source_4            IN NUMBER
117230 --DISTRIBUTION_IDENTIFIER
117231  , p_source_11            IN NUMBER
117232 --Distribution Type
117233  , p_source_12            IN VARCHAR2
117234  , p_source_12_meaning    IN VARCHAR2
117235 --Entered Currency Code
117236  , p_source_15            IN VARCHAR2
117237 --Entered Amount
117238  , p_source_18            IN NUMBER
117239 --Currency Conversion Date
117240  , p_source_19            IN DATE
117241 --Currency Conversion Rate
117242  , p_source_20            IN NUMBER
117243 --Accounted Amount
117244  , p_source_22            IN NUMBER
117245 --Accounting Line Type
117246  , p_source_24            IN NUMBER
117247 )
117248 IS
117249 
117250 l_component_type              VARCHAR2(80);
117251 l_component_code              VARCHAR2(30);
117252 l_component_type_code         VARCHAR2(1);
117253 l_component_appl_id           INTEGER;
117254 l_amb_context_code            VARCHAR2(30);
117255 l_entity_code                 VARCHAR2(30);
117256 l_event_class_code            VARCHAR2(30);
117257 l_ae_header_id                NUMBER;
117258 l_event_type_code             VARCHAR2(30);
117259 l_line_definition_code        VARCHAR2(30);
117260 l_line_definition_owner_code  VARCHAR2(1);
117261 --
117262 -- adr variables
117263 l_segment                     VARCHAR2(30);
117264 l_ccid                        NUMBER;
117265 l_adr_transaction_coa_id      NUMBER;
117266 l_adr_accounting_coa_id       NUMBER;
117267 l_adr_flexfield_segment_code  VARCHAR2(30);
117268 l_adr_flex_value_set_id       NUMBER;
117269 l_adr_value_type_code         VARCHAR2(30);
117270 l_adr_value_combination_id    NUMBER;
117271 l_adr_value_segment_code      VARCHAR2(30);
117272 
117273 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
117274 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
117275 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
117276 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
117277 
117278 -- 4262811 Variables ------------------------------------------------------------------------------------------
117279 l_entered_amt_idx             NUMBER;
117280 l_accted_amt_idx              NUMBER;
117281 l_acc_rev_flag                VARCHAR2(1);
117282 l_accrual_line_num            NUMBER;
117283 l_tmp_amt                     NUMBER;
117284 l_acc_rev_natural_side_code   VARCHAR2(1);
117285 
117286 l_num_entries                 NUMBER;
117287 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
117288 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
117289 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
117290 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
117291 l_recog_line_1                NUMBER;
117292 l_recog_line_2                NUMBER;
117293 
117294 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
117295 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
117296 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
117297 
117298 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
117299 
117300 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
117301 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
117302 
117303 ---------------------------------------------------------------------------------------------------------------
117304 
117305 
117306 --
117307 -- bulk performance
117308 --
117309 l_balance_type_code           VARCHAR2(1);
117310 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
117311 l_log_module                  VARCHAR2(240);
117312 
117313 --
117314 -- Upgrade strategy
117315 --
117316 l_actual_upg_option           VARCHAR2(1);
117317 l_enc_upg_option           VARCHAR2(1);
117318 
117319 --
117320 BEGIN
117321 --
117322 IF g_log_enabled THEN
117323       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_213';
117324 END IF;
117325 --
117326 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
117327 
117328       trace
117329          (p_msg      => 'BEGIN of AcctLineType_213'
117330          ,p_level    => C_LEVEL_PROCEDURE
117331          ,p_module   => l_log_module);
117332 
117333 END IF;
117334 --
117335 l_component_type             := 'AMB_JLT';
117336 l_component_code             := 'OVERHEAD_ABSORPTION';
117337 l_component_type_code        := 'S';
117338 l_component_appl_id          :=  707;
117339 l_amb_context_code           := 'DEFAULT';
117340 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
117341 l_event_class_code           := 'OSP';
117342 l_event_type_code            := 'OSP_ALL';
117343 l_line_definition_owner_code := 'S';
117344 l_line_definition_code       := 'OUTSIDE_PROCESSING';
117345 --
117346 l_balance_type_code          := 'A';
117347 l_segment                     := NULL;
117348 l_ccid                        := NULL;
117349 l_adr_transaction_coa_id      := NULL;
117350 l_adr_accounting_coa_id       := NULL;
117351 l_adr_flexfield_segment_code  := NULL;
117352 l_adr_flex_value_set_id       := NULL;
117353 l_adr_value_type_code         := NULL;
117354 l_adr_value_combination_id    := NULL;
117355 l_adr_value_segment_code      := NULL;
117356 
117357 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
117358 l_bflow_class_code           := '';    -- 4219869 Business Flow
117359 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
117360 l_budgetary_control_flag     := 'N';
117361 
117362 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
117363 l_bflow_applied_to_amt       := NULL; -- 5132302
117364 l_entered_amt_idx            := NULL;          -- 4262811
117365 l_accted_amt_idx             := NULL;          -- 4262811
117366 l_acc_rev_flag               := NULL;          -- 4262811
117367 l_accrual_line_num           := NULL;          -- 4262811
117368 l_tmp_amt                    := NULL;          -- 4262811
117369 --
117370  
117371 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
117372     l_balance_type_code <> 'B' THEN
117373 IF NVL(p_source_24,9E125) =  3
117374  THEN 
117375 
117376    --
117377    XLA_AE_LINES_PKG.SetNewLine;
117378 
117379    p_balance_type_code          := l_balance_type_code;
117380    -- set the flag so later we will know whether the gain loss line needs to be created
117381    
117382    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
117383      p_actual_flag :='A';
117384    END IF;
117385 
117386    --
117387    -- bulk performance
117388    --
117389    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
117390                                       p_header_num   => 0); -- 4262811
117391    --
117392    -- set accounting line options
117393    --
117394    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
117395            p_natural_side_code          => 'D'
117396          , p_gain_or_loss_flag          => 'N'
117397          , p_gl_transfer_mode_code      => 'S'
117398          , p_acct_entry_type_code       => 'A'
117399          , p_switch_side_flag           => 'Y'
117400          , p_merge_duplicate_code       => 'N'
117401          );
117402    --
117403    l_acc_rev_natural_side_code := 'C';  -- 4262811
117404    -- 
117405    --
117406    -- set accounting line type info
117407    --
117408    xla_ae_lines_pkg.SetAcctLineType
117409       (p_component_type             => l_component_type
117410       ,p_event_type_code            => l_event_type_code
117411       ,p_line_definition_owner_code => l_line_definition_owner_code
117412       ,p_line_definition_code       => l_line_definition_code
117413       ,p_accounting_line_code       => l_component_code
117414       ,p_accounting_line_type_code  => l_component_type_code
117415       ,p_accounting_line_appl_id    => l_component_appl_id
117416       ,p_amb_context_code           => l_amb_context_code
117417       ,p_entity_code                => l_entity_code
117418       ,p_event_class_code           => l_event_class_code);
117419    --
117420    -- set accounting class
117421    --
117422    xla_ae_lines_pkg.SetAcctClass(
117423            p_accounting_class_code  => 'OVERHEAD_ABSORPTION'
117424          , p_ae_header_id           => l_ae_header_id
117425          );
117426 
117427    --
117428    -- set rounding class
117429    --
117430    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
117431                       'OVERHEAD_ABSORPTION';
117432 
117433    --
117434    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
117435    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
117436    --
117437    -- bulk performance
117438    --
117439    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
117440 
117441    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
117442       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
117443 
117444    -- 4955764
117445    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
117446       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
117447 
117448    -- 4458381 Public Sector Enh
117449    
117450    --
117451    -- set accounting attributes for the line type
117452    --
117453    l_entered_amt_idx := 3;
117454    l_accted_amt_idx  := 8;
117455    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
117456    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
117457    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
117458    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
117459    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
117460    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
117461    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
117462    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
117463    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
117464    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
117465    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
117466    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
117467    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
117468    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
117469    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_20);
117470    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
117471    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
117472 
117473    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
117474    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
117475 
117476    ---------------------------------------------------------------------------------------------------------------
117477    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
117478    ---------------------------------------------------------------------------------------------------------------
117479    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
117480 
117481    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
117482    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
117483 
117484    IF xla_accounting_cache_pkg.GetValueChar
117485          (p_source_code         => 'LEDGER_CATEGORY_CODE'
117486          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
117487    AND l_bflow_method_code = 'PRIOR_ENTRY'
117488 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
117489    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
117490          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
117491        )
117492    THEN
117493          xla_ae_lines_pkg.BflowUpgEntry
117494            (p_business_method_code    => l_bflow_method_code
117495            ,p_business_class_code     => l_bflow_class_code
117496            ,p_balance_type            => l_balance_type_code);
117497    ELSE
117498       NULL;
117499 -- No business flow processing for business flow method of NONE.
117500    END IF;
117501 
117502    --
117503    -- call analytical criteria
117504    --
117505    
117506    --
117507    -- call description
117508    --
117509    -- No description or it is inherited.
117510    --
117511    -- call ADRs
117512    -- Bug 4922099
117513    --
117514    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
117515         (NVL(l_actual_upg_option, 'N') = 'O') OR
117516         (NVL(l_enc_upg_option, 'N') = 'O')
117517       )
117518    THEN
117519    NULL;
117520    --
117521    --
117522    
117523   l_ccid := AcctDerRule_4(
117524            p_application_id           => p_application_id
117525          , p_ae_header_id             => l_ae_header_id 
117526 , p_source_4 => p_source_4
117527          , x_transaction_coa_id       => l_adr_transaction_coa_id
117528          , x_accounting_coa_id        => l_adr_accounting_coa_id
117529          , x_value_type_code          => l_adr_value_type_code
117530          , p_side                     => 'NA'
117531    );
117532 
117533    xla_ae_lines_pkg.set_ccid(
117534     p_code_combination_id          => l_ccid
117535   , p_value_type_code              => l_adr_value_type_code
117536   , p_transaction_coa_id           => l_adr_transaction_coa_id
117537   , p_accounting_coa_id            => l_adr_accounting_coa_id
117538   , p_adr_code                     => 'CST_DEFAULT'
117539   , p_adr_type_code                => 'S'
117540   , p_component_type               => l_component_type
117541   , p_component_code               => l_component_code
117542   , p_component_type_code          => l_component_type_code
117543   , p_component_appl_id            => l_component_appl_id
117544   , p_amb_context_code             => l_amb_context_code
117545   , p_side                         => 'NA'
117546   );
117547 
117548 
117549    --
117550    --
117551    END IF;
117552    --
117553    -- Bug 4922099
117554    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
117555           (NVL(l_enc_upg_option, 'N') = 'O')
117556         ) AND
117557         (l_bflow_method_code = 'PRIOR_ENTRY')
117558       )
117559    THEN
117560       IF
117561       --
117562       1 = 2
117563       --
117564       THEN
117565       xla_accounting_err_pkg.build_message
117566                                     (p_appli_s_name            => 'XLA'
117567                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
117568                                     ,p_token_1                 => 'LINE_NUMBER'
117569                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
117570                                     ,p_token_2                 => 'LINE_TYPE_NAME'
117571                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
117572                                                                              l_component_type
117573                                                                             ,l_component_code
117574                                                                             ,l_component_type_code
117575                                                                             ,l_component_appl_id
117576                                                                             ,l_amb_context_code
117577                                                                             ,l_entity_code
117578                                                                             ,l_event_class_code
117579                                                                            )
117580                                     ,p_token_3                 => 'OWNER'
117581                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
117582                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
117583                                                                           ,p_lookup_code    => l_component_type_code
117584                                                                          )
117585                                     ,p_token_4                 => 'PRODUCT_NAME'
117586                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
117587                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
117588                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
117589                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
117590                                     ,p_ae_header_id            =>  NULL
117591                                        );
117592 
117593         IF (C_LEVEL_ERROR>= g_log_level) THEN
117594                  trace
117595                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
117596                       ,p_level    => C_LEVEL_ERROR
117597                       ,p_module   => l_log_module);
117598         END IF;
117599       END IF;
117600    END IF;
117601    --
117602    --
117603    ------------------------------------------------------------------------------------------------
117604    -- 4219869 Business Flow
117605    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
117606    -- Prior Entry.  Currently, the following code is always generated.
117607    ------------------------------------------------------------------------------------------------
117608    XLA_AE_LINES_PKG.ValidateCurrentLine;
117609 
117610    ------------------------------------------------------------------------------------
117611    -- 4219869 Business Flow
117612    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
117613    ------------------------------------------------------------------------------------
117614    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
117615 
117616    ----------------------------------------------------------------------------------
117617    -- 4219869 Business Flow
117618    -- Update journal entry status -- Need to generate this within IF <condition>
117619    ----------------------------------------------------------------------------------
117620    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
117621          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
117622          ,p_balance_type_code => l_balance_type_code
117623          );
117624 
117625    -------------------------------------------------------------------------------------------
117626    -- 4262811 - Generate the Accrual Reversal lines
117627    -------------------------------------------------------------------------------------------
117628    BEGIN
117629       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
117630                               (g_array_event(p_event_id).array_value_num('header_index'));
117631       IF l_acc_rev_flag IS NULL THEN
117632          l_acc_rev_flag := 'N';
117633       END IF;
117634    EXCEPTION
117635       WHEN OTHERS THEN
117636          l_acc_rev_flag := 'N';
117637    END;
117638    --
117639    IF (l_acc_rev_flag = 'Y') THEN
117640 
117641        -- 4645092  ------------------------------------------------------------------------------
117642        -- To allow MPA report to determine if it should generate report process
117643        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
117644        ------------------------------------------------------------------------------------------
117645 
117646        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
117647        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
117648    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
117649    -- call ADRs
117650    -- Bug 4922099
117651    --
117652    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
117653         (NVL(l_actual_upg_option, 'N') = 'O') OR
117654         (NVL(l_enc_upg_option, 'N') = 'O')
117655       )
117656    THEN
117657    NULL;
117658    --
117659    --
117660    
117661   l_ccid := AcctDerRule_4(
117662            p_application_id           => p_application_id
117663          , p_ae_header_id             => l_ae_header_id 
117664 , p_source_4 => p_source_4
117665          , x_transaction_coa_id       => l_adr_transaction_coa_id
117666          , x_accounting_coa_id        => l_adr_accounting_coa_id
117667          , x_value_type_code          => l_adr_value_type_code
117668          , p_side                     => 'NA'
117669    );
117670 
117671    xla_ae_lines_pkg.set_ccid(
117672     p_code_combination_id          => l_ccid
117673   , p_value_type_code              => l_adr_value_type_code
117674   , p_transaction_coa_id           => l_adr_transaction_coa_id
117675   , p_accounting_coa_id            => l_adr_accounting_coa_id
117676   , p_adr_code                     => 'CST_DEFAULT'
117677   , p_adr_type_code                => 'S'
117678   , p_component_type               => l_component_type
117679   , p_component_code               => l_component_code
117680   , p_component_type_code          => l_component_type_code
117681   , p_component_appl_id            => l_component_appl_id
117682   , p_amb_context_code             => l_amb_context_code
117683   , p_side                         => 'NA'
117684   );
117685 
117686 
117687    --
117688    --
117689    END IF;
117690 
117691        --
117692        -- Update the line information that should be overwritten
117693        --
117694        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
117695                                          p_header_num   => 1);
117696        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
117697 
117698        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
117699 
117700        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
117701           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
117702        END IF;
117703 
117704       --
117705       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
117706       --
117707       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
117708           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
117709       ELSE
117710           ---------------------------------------------------------------------------------------------------
117711           -- 4262811a Switch Sign
117712           ---------------------------------------------------------------------------------------------------
117713           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
117714           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
117715                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117716           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
117717                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117718           -- 5132302
117719           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
117720                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117721 
117722       END IF;
117723 
117724       -- 4955764
117725       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
117726       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
117727 
117728 
117729       XLA_AE_LINES_PKG.ValidateCurrentLine;
117730       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
117731 
117732       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
117733                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
117734                ,p_balance_type_code => l_balance_type_code);
117735 
117736    END IF;
117737 
117738    -----------------------------------------------------------------------------------------
117739    -- 4262811 Multiperiod Accounting
117740    -----------------------------------------------------------------------------------------
117741      -- No MPA option is assigned.
117742 
117743 
117744 END IF;
117745 END IF;
117746 --
117747 
117748 --
117749 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
117750    trace
117751       (p_msg      => 'END of AcctLineType_213'
117752       ,p_level    => C_LEVEL_PROCEDURE
117753       ,p_module   => l_log_module);
117754 END IF;
117755 --
117756 EXCEPTION
117757   WHEN xla_exceptions_pkg.application_exception THEN
117758       RAISE;
117759   WHEN OTHERS THEN
117760        xla_exceptions_pkg.raise_message
117761            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_213');
117762 END AcctLineType_213;
117763 --
117764 
117765 ---------------------------------------
117766 --
117767 -- PRIVATE FUNCTION
117768 --         AcctLineType_214
117769 --
117770 ---------------------------------------
117771 PROCEDURE AcctLineType_214 (
117772   p_application_id        IN NUMBER
117773  ,p_event_id              IN NUMBER
117774  ,p_calculate_acctd_flag  IN VARCHAR2
117775  ,p_calculate_g_l_flag    IN VARCHAR2
117776  ,p_actual_flag           IN OUT VARCHAR2
117777  ,p_balance_type_code     OUT VARCHAR2
117778  ,p_gain_or_loss_ref      OUT VARCHAR2
117779  
117780 --Cost Management Default Account
117781  , p_source_4            IN NUMBER
117782 --DISTRIBUTION_IDENTIFIER
117783  , p_source_11            IN NUMBER
117784 --Distribution Type
117785  , p_source_12            IN VARCHAR2
117786  , p_source_12_meaning    IN VARCHAR2
117787 --Entered Currency Code
117788  , p_source_15            IN VARCHAR2
117789 --Entered Amount
117790  , p_source_18            IN NUMBER
117791 --Currency Conversion Date
117792  , p_source_19            IN DATE
117793 --Currency Conversion Rate
117794  , p_source_20            IN NUMBER
117795 --Currency Conversion Type
117796  , p_source_21            IN VARCHAR2
117797 --Accounted Amount
117798  , p_source_22            IN NUMBER
117799 --Accounting Line Type
117800  , p_source_24            IN NUMBER
117801 )
117802 IS
117803 
117804 l_component_type              VARCHAR2(80);
117805 l_component_code              VARCHAR2(30);
117806 l_component_type_code         VARCHAR2(1);
117807 l_component_appl_id           INTEGER;
117808 l_amb_context_code            VARCHAR2(30);
117809 l_entity_code                 VARCHAR2(30);
117810 l_event_class_code            VARCHAR2(30);
117811 l_ae_header_id                NUMBER;
117812 l_event_type_code             VARCHAR2(30);
117813 l_line_definition_code        VARCHAR2(30);
117814 l_line_definition_owner_code  VARCHAR2(1);
117815 --
117816 -- adr variables
117817 l_segment                     VARCHAR2(30);
117818 l_ccid                        NUMBER;
117819 l_adr_transaction_coa_id      NUMBER;
117820 l_adr_accounting_coa_id       NUMBER;
117821 l_adr_flexfield_segment_code  VARCHAR2(30);
117822 l_adr_flex_value_set_id       NUMBER;
117823 l_adr_value_type_code         VARCHAR2(30);
117824 l_adr_value_combination_id    NUMBER;
117825 l_adr_value_segment_code      VARCHAR2(30);
117826 
117827 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
117828 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
117829 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
117830 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
117831 
117832 -- 4262811 Variables ------------------------------------------------------------------------------------------
117833 l_entered_amt_idx             NUMBER;
117834 l_accted_amt_idx              NUMBER;
117835 l_acc_rev_flag                VARCHAR2(1);
117836 l_accrual_line_num            NUMBER;
117837 l_tmp_amt                     NUMBER;
117838 l_acc_rev_natural_side_code   VARCHAR2(1);
117839 
117840 l_num_entries                 NUMBER;
117841 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
117842 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
117843 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
117844 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
117845 l_recog_line_1                NUMBER;
117846 l_recog_line_2                NUMBER;
117847 
117848 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
117849 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
117850 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
117851 
117852 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
117853 
117854 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
117855 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
117856 
117857 ---------------------------------------------------------------------------------------------------------------
117858 
117859 
117860 --
117861 -- bulk performance
117862 --
117863 l_balance_type_code           VARCHAR2(1);
117864 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
117865 l_log_module                  VARCHAR2(240);
117866 
117867 --
117868 -- Upgrade strategy
117869 --
117870 l_actual_upg_option           VARCHAR2(1);
117871 l_enc_upg_option           VARCHAR2(1);
117872 
117873 --
117874 BEGIN
117875 --
117876 IF g_log_enabled THEN
117877       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_214';
117878 END IF;
117879 --
117880 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
117881 
117882       trace
117883          (p_msg      => 'BEGIN of AcctLineType_214'
117884          ,p_level    => C_LEVEL_PROCEDURE
117885          ,p_module   => l_log_module);
117886 
117887 END IF;
117888 --
117889 l_component_type             := 'AMB_JLT';
117890 l_component_code             := 'PROFIT_IN_INVENTORY';
117891 l_component_type_code        := 'S';
117892 l_component_appl_id          :=  707;
117893 l_amb_context_code           := 'DEFAULT';
117894 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
117895 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
117896 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
117897 l_line_definition_owner_code := 'S';
117898 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_SHIP';
117899 --
117900 l_balance_type_code          := 'A';
117901 l_segment                     := NULL;
117902 l_ccid                        := NULL;
117903 l_adr_transaction_coa_id      := NULL;
117904 l_adr_accounting_coa_id       := NULL;
117905 l_adr_flexfield_segment_code  := NULL;
117906 l_adr_flex_value_set_id       := NULL;
117907 l_adr_value_type_code         := NULL;
117908 l_adr_value_combination_id    := NULL;
117909 l_adr_value_segment_code      := NULL;
117910 
117911 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
117912 l_bflow_class_code           := '';    -- 4219869 Business Flow
117913 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
117914 l_budgetary_control_flag     := 'N';
117915 
117916 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
117917 l_bflow_applied_to_amt       := NULL; -- 5132302
117918 l_entered_amt_idx            := NULL;          -- 4262811
117919 l_accted_amt_idx             := NULL;          -- 4262811
117920 l_acc_rev_flag               := NULL;          -- 4262811
117921 l_accrual_line_num           := NULL;          -- 4262811
117922 l_tmp_amt                    := NULL;          -- 4262811
117923 --
117924  
117925 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
117926     l_balance_type_code <> 'B' THEN
117927 IF NVL(p_source_24,9E125) =  30
117928  THEN 
117929 
117930    --
117931    XLA_AE_LINES_PKG.SetNewLine;
117932 
117933    p_balance_type_code          := l_balance_type_code;
117934    -- set the flag so later we will know whether the gain loss line needs to be created
117935    
117936    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
117937      p_actual_flag :='A';
117938    END IF;
117939 
117940    --
117941    -- bulk performance
117942    --
117943    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
117944                                       p_header_num   => 0); -- 4262811
117945    --
117946    -- set accounting line options
117947    --
117948    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
117949            p_natural_side_code          => 'D'
117950          , p_gain_or_loss_flag          => 'N'
117951          , p_gl_transfer_mode_code      => 'S'
117952          , p_acct_entry_type_code       => 'A'
117953          , p_switch_side_flag           => 'Y'
117954          , p_merge_duplicate_code       => 'N'
117955          );
117956    --
117957    l_acc_rev_natural_side_code := 'C';  -- 4262811
117958    -- 
117959    --
117960    -- set accounting line type info
117961    --
117962    xla_ae_lines_pkg.SetAcctLineType
117963       (p_component_type             => l_component_type
117964       ,p_event_type_code            => l_event_type_code
117965       ,p_line_definition_owner_code => l_line_definition_owner_code
117966       ,p_line_definition_code       => l_line_definition_code
117967       ,p_accounting_line_code       => l_component_code
117968       ,p_accounting_line_type_code  => l_component_type_code
117969       ,p_accounting_line_appl_id    => l_component_appl_id
117970       ,p_amb_context_code           => l_amb_context_code
117971       ,p_entity_code                => l_entity_code
117972       ,p_event_class_code           => l_event_class_code);
117973    --
117974    -- set accounting class
117975    --
117976    xla_ae_lines_pkg.SetAcctClass(
117977            p_accounting_class_code  => 'PROFIT_IN_INVENTORY'
117978          , p_ae_header_id           => l_ae_header_id
117979          );
117980 
117981    --
117982    -- set rounding class
117983    --
117984    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
117985                       'PROFIT_IN_INVENTORY';
117986 
117987    --
117988    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
117989    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
117990    --
117991    -- bulk performance
117992    --
117993    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
117994 
117995    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
117996       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
117997 
117998    -- 4955764
117999    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
118000       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
118001 
118002    -- 4458381 Public Sector Enh
118003    
118004    --
118005    -- set accounting attributes for the line type
118006    --
118007    l_entered_amt_idx := 3;
118008    l_accted_amt_idx  := 8;
118009    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
118010    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
118011    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
118012    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
118013    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
118014    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
118015    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
118016    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
118017    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
118018    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
118019    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
118020    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
118021    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
118022    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
118023    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
118024    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
118025    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
118026 
118027    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
118028    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
118029 
118030    ---------------------------------------------------------------------------------------------------------------
118031    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
118032    ---------------------------------------------------------------------------------------------------------------
118033    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
118034 
118035    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
118036    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
118037 
118038    IF xla_accounting_cache_pkg.GetValueChar
118039          (p_source_code         => 'LEDGER_CATEGORY_CODE'
118040          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
118041    AND l_bflow_method_code = 'PRIOR_ENTRY'
118042 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
118043    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
118044          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
118045        )
118046    THEN
118047          xla_ae_lines_pkg.BflowUpgEntry
118048            (p_business_method_code    => l_bflow_method_code
118049            ,p_business_class_code     => l_bflow_class_code
118050            ,p_balance_type            => l_balance_type_code);
118051    ELSE
118052       NULL;
118053 -- No business flow processing for business flow method of NONE.
118054    END IF;
118055 
118056    --
118057    -- call analytical criteria
118058    --
118059    
118060    --
118061    -- call description
118062    --
118063    -- No description or it is inherited.
118064    --
118065    -- call ADRs
118066    -- Bug 4922099
118067    --
118068    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
118069         (NVL(l_actual_upg_option, 'N') = 'O') OR
118070         (NVL(l_enc_upg_option, 'N') = 'O')
118071       )
118072    THEN
118073    NULL;
118074    --
118075    --
118076    
118077   l_ccid := AcctDerRule_4(
118078            p_application_id           => p_application_id
118079          , p_ae_header_id             => l_ae_header_id 
118080 , p_source_4 => p_source_4
118081          , x_transaction_coa_id       => l_adr_transaction_coa_id
118082          , x_accounting_coa_id        => l_adr_accounting_coa_id
118083          , x_value_type_code          => l_adr_value_type_code
118084          , p_side                     => 'NA'
118085    );
118086 
118087    xla_ae_lines_pkg.set_ccid(
118088     p_code_combination_id          => l_ccid
118089   , p_value_type_code              => l_adr_value_type_code
118090   , p_transaction_coa_id           => l_adr_transaction_coa_id
118091   , p_accounting_coa_id            => l_adr_accounting_coa_id
118092   , p_adr_code                     => 'CST_DEFAULT'
118093   , p_adr_type_code                => 'S'
118094   , p_component_type               => l_component_type
118095   , p_component_code               => l_component_code
118096   , p_component_type_code          => l_component_type_code
118097   , p_component_appl_id            => l_component_appl_id
118098   , p_amb_context_code             => l_amb_context_code
118099   , p_side                         => 'NA'
118100   );
118101 
118102 
118103    --
118104    --
118105    END IF;
118106    --
118107    -- Bug 4922099
118108    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
118109           (NVL(l_enc_upg_option, 'N') = 'O')
118110         ) AND
118111         (l_bflow_method_code = 'PRIOR_ENTRY')
118112       )
118113    THEN
118114       IF
118115       --
118116       1 = 2
118117       --
118118       THEN
118119       xla_accounting_err_pkg.build_message
118120                                     (p_appli_s_name            => 'XLA'
118121                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
118122                                     ,p_token_1                 => 'LINE_NUMBER'
118123                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
118124                                     ,p_token_2                 => 'LINE_TYPE_NAME'
118125                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
118126                                                                              l_component_type
118127                                                                             ,l_component_code
118128                                                                             ,l_component_type_code
118129                                                                             ,l_component_appl_id
118130                                                                             ,l_amb_context_code
118131                                                                             ,l_entity_code
118132                                                                             ,l_event_class_code
118133                                                                            )
118134                                     ,p_token_3                 => 'OWNER'
118135                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
118136                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
118137                                                                           ,p_lookup_code    => l_component_type_code
118138                                                                          )
118139                                     ,p_token_4                 => 'PRODUCT_NAME'
118140                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
118141                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
118142                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
118143                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
118144                                     ,p_ae_header_id            =>  NULL
118145                                        );
118146 
118147         IF (C_LEVEL_ERROR>= g_log_level) THEN
118148                  trace
118149                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
118150                       ,p_level    => C_LEVEL_ERROR
118151                       ,p_module   => l_log_module);
118152         END IF;
118153       END IF;
118154    END IF;
118155    --
118156    --
118157    ------------------------------------------------------------------------------------------------
118158    -- 4219869 Business Flow
118159    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
118160    -- Prior Entry.  Currently, the following code is always generated.
118161    ------------------------------------------------------------------------------------------------
118162    XLA_AE_LINES_PKG.ValidateCurrentLine;
118163 
118164    ------------------------------------------------------------------------------------
118165    -- 4219869 Business Flow
118166    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
118167    ------------------------------------------------------------------------------------
118168    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
118169 
118170    ----------------------------------------------------------------------------------
118171    -- 4219869 Business Flow
118172    -- Update journal entry status -- Need to generate this within IF <condition>
118173    ----------------------------------------------------------------------------------
118174    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
118175          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
118176          ,p_balance_type_code => l_balance_type_code
118177          );
118178 
118179    -------------------------------------------------------------------------------------------
118180    -- 4262811 - Generate the Accrual Reversal lines
118181    -------------------------------------------------------------------------------------------
118182    BEGIN
118183       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
118184                               (g_array_event(p_event_id).array_value_num('header_index'));
118185       IF l_acc_rev_flag IS NULL THEN
118186          l_acc_rev_flag := 'N';
118187       END IF;
118188    EXCEPTION
118189       WHEN OTHERS THEN
118190          l_acc_rev_flag := 'N';
118191    END;
118192    --
118193    IF (l_acc_rev_flag = 'Y') THEN
118194 
118195        -- 4645092  ------------------------------------------------------------------------------
118196        -- To allow MPA report to determine if it should generate report process
118197        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
118198        ------------------------------------------------------------------------------------------
118199 
118200        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
118201        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
118202    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
118203    -- call ADRs
118204    -- Bug 4922099
118205    --
118206    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
118207         (NVL(l_actual_upg_option, 'N') = 'O') OR
118208         (NVL(l_enc_upg_option, 'N') = 'O')
118209       )
118210    THEN
118211    NULL;
118212    --
118213    --
118214    
118215   l_ccid := AcctDerRule_4(
118216            p_application_id           => p_application_id
118217          , p_ae_header_id             => l_ae_header_id 
118218 , p_source_4 => p_source_4
118219          , x_transaction_coa_id       => l_adr_transaction_coa_id
118220          , x_accounting_coa_id        => l_adr_accounting_coa_id
118221          , x_value_type_code          => l_adr_value_type_code
118222          , p_side                     => 'NA'
118223    );
118224 
118225    xla_ae_lines_pkg.set_ccid(
118226     p_code_combination_id          => l_ccid
118227   , p_value_type_code              => l_adr_value_type_code
118228   , p_transaction_coa_id           => l_adr_transaction_coa_id
118229   , p_accounting_coa_id            => l_adr_accounting_coa_id
118230   , p_adr_code                     => 'CST_DEFAULT'
118231   , p_adr_type_code                => 'S'
118232   , p_component_type               => l_component_type
118233   , p_component_code               => l_component_code
118234   , p_component_type_code          => l_component_type_code
118235   , p_component_appl_id            => l_component_appl_id
118236   , p_amb_context_code             => l_amb_context_code
118237   , p_side                         => 'NA'
118238   );
118239 
118240 
118241    --
118242    --
118243    END IF;
118244 
118245        --
118246        -- Update the line information that should be overwritten
118247        --
118248        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
118249                                          p_header_num   => 1);
118250        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
118251 
118252        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
118253 
118254        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
118255           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
118256        END IF;
118257 
118258       --
118259       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
118260       --
118261       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
118262           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
118263       ELSE
118264           ---------------------------------------------------------------------------------------------------
118265           -- 4262811a Switch Sign
118266           ---------------------------------------------------------------------------------------------------
118267           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
118268           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
118269                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118270           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
118271                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118272           -- 5132302
118273           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
118274                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118275 
118276       END IF;
118277 
118278       -- 4955764
118279       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
118280       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
118281 
118282 
118283       XLA_AE_LINES_PKG.ValidateCurrentLine;
118284       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
118285 
118286       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
118287                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
118288                ,p_balance_type_code => l_balance_type_code);
118289 
118290    END IF;
118291 
118292    -----------------------------------------------------------------------------------------
118293    -- 4262811 Multiperiod Accounting
118294    -----------------------------------------------------------------------------------------
118295      -- No MPA option is assigned.
118296 
118297 
118298 END IF;
118299 END IF;
118300 --
118301 
118302 --
118303 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
118304    trace
118305       (p_msg      => 'END of AcctLineType_214'
118306       ,p_level    => C_LEVEL_PROCEDURE
118307       ,p_module   => l_log_module);
118308 END IF;
118309 --
118310 EXCEPTION
118311   WHEN xla_exceptions_pkg.application_exception THEN
118312       RAISE;
118313   WHEN OTHERS THEN
118314        xla_exceptions_pkg.raise_message
118315            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_214');
118316 END AcctLineType_214;
118317 --
118318 
118319 ---------------------------------------
118320 --
118321 -- PRIVATE FUNCTION
118322 --         AcctLineType_215
118323 --
118324 ---------------------------------------
118325 PROCEDURE AcctLineType_215 (
118326   p_application_id        IN NUMBER
118327  ,p_event_id              IN NUMBER
118328  ,p_calculate_acctd_flag  IN VARCHAR2
118329  ,p_calculate_g_l_flag    IN VARCHAR2
118330  ,p_actual_flag           IN OUT VARCHAR2
118331  ,p_balance_type_code     OUT VARCHAR2
118332  ,p_gain_or_loss_ref      OUT VARCHAR2
118333  
118334 --Cost Management Default Account
118335  , p_source_4            IN NUMBER
118336 --DISTRIBUTION_IDENTIFIER
118337  , p_source_11            IN NUMBER
118338 --Distribution Type
118339  , p_source_12            IN VARCHAR2
118340  , p_source_12_meaning    IN VARCHAR2
118341 --Entered Currency Code
118342  , p_source_15            IN VARCHAR2
118343 --Entered Amount
118344  , p_source_18            IN NUMBER
118345 --Currency Conversion Date
118346  , p_source_19            IN DATE
118347 --Currency Conversion Rate
118348  , p_source_20            IN NUMBER
118349 --Currency Conversion Type
118350  , p_source_21            IN VARCHAR2
118351 --Accounted Amount
118352  , p_source_22            IN NUMBER
118353 --Accounting Line Type
118354  , p_source_24            IN NUMBER
118355 )
118356 IS
118357 
118358 l_component_type              VARCHAR2(80);
118359 l_component_code              VARCHAR2(30);
118360 l_component_type_code         VARCHAR2(1);
118361 l_component_appl_id           INTEGER;
118362 l_amb_context_code            VARCHAR2(30);
118363 l_entity_code                 VARCHAR2(30);
118364 l_event_class_code            VARCHAR2(30);
118365 l_ae_header_id                NUMBER;
118366 l_event_type_code             VARCHAR2(30);
118367 l_line_definition_code        VARCHAR2(30);
118368 l_line_definition_owner_code  VARCHAR2(1);
118369 --
118370 -- adr variables
118371 l_segment                     VARCHAR2(30);
118372 l_ccid                        NUMBER;
118373 l_adr_transaction_coa_id      NUMBER;
118374 l_adr_accounting_coa_id       NUMBER;
118375 l_adr_flexfield_segment_code  VARCHAR2(30);
118376 l_adr_flex_value_set_id       NUMBER;
118377 l_adr_value_type_code         VARCHAR2(30);
118378 l_adr_value_combination_id    NUMBER;
118379 l_adr_value_segment_code      VARCHAR2(30);
118380 
118381 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
118382 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
118383 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
118384 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
118385 
118386 -- 4262811 Variables ------------------------------------------------------------------------------------------
118387 l_entered_amt_idx             NUMBER;
118388 l_accted_amt_idx              NUMBER;
118389 l_acc_rev_flag                VARCHAR2(1);
118390 l_accrual_line_num            NUMBER;
118391 l_tmp_amt                     NUMBER;
118392 l_acc_rev_natural_side_code   VARCHAR2(1);
118393 
118394 l_num_entries                 NUMBER;
118395 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
118396 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
118397 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
118398 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
118399 l_recog_line_1                NUMBER;
118400 l_recog_line_2                NUMBER;
118401 
118402 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
118403 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
118404 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
118405 
118406 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
118407 
118408 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
118409 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
118410 
118411 ---------------------------------------------------------------------------------------------------------------
118412 
118413 
118414 --
118415 -- bulk performance
118416 --
118417 l_balance_type_code           VARCHAR2(1);
118418 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
118419 l_log_module                  VARCHAR2(240);
118420 
118421 --
118422 -- Upgrade strategy
118423 --
118424 l_actual_upg_option           VARCHAR2(1);
118425 l_enc_upg_option           VARCHAR2(1);
118426 
118427 --
118428 BEGIN
118429 --
118430 IF g_log_enabled THEN
118431       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_215';
118432 END IF;
118433 --
118434 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
118435 
118436       trace
118437          (p_msg      => 'BEGIN of AcctLineType_215'
118438          ,p_level    => C_LEVEL_PROCEDURE
118439          ,p_module   => l_log_module);
118440 
118441 END IF;
118442 --
118443 l_component_type             := 'AMB_JLT';
118444 l_component_code             := 'PROFIT_IN_INVENTORY';
118445 l_component_type_code        := 'S';
118446 l_component_appl_id          :=  707;
118447 l_amb_context_code           := 'DEFAULT';
118448 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
118449 l_event_class_code           := 'USER_DEFINE';
118450 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
118451 l_line_definition_owner_code := 'S';
118452 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_TP';
118453 --
118454 l_balance_type_code          := 'A';
118455 l_segment                     := NULL;
118456 l_ccid                        := NULL;
118457 l_adr_transaction_coa_id      := NULL;
118458 l_adr_accounting_coa_id       := NULL;
118459 l_adr_flexfield_segment_code  := NULL;
118460 l_adr_flex_value_set_id       := NULL;
118461 l_adr_value_type_code         := NULL;
118462 l_adr_value_combination_id    := NULL;
118463 l_adr_value_segment_code      := NULL;
118464 
118465 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
118466 l_bflow_class_code           := '';    -- 4219869 Business Flow
118467 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
118468 l_budgetary_control_flag     := 'N';
118469 
118470 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
118471 l_bflow_applied_to_amt       := NULL; -- 5132302
118472 l_entered_amt_idx            := NULL;          -- 4262811
118473 l_accted_amt_idx             := NULL;          -- 4262811
118474 l_acc_rev_flag               := NULL;          -- 4262811
118475 l_accrual_line_num           := NULL;          -- 4262811
118476 l_tmp_amt                    := NULL;          -- 4262811
118477 --
118478  
118479 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
118480     l_balance_type_code <> 'B' THEN
118481 IF NVL(p_source_24,9E125) =  30
118482  THEN 
118483 
118484    --
118485    XLA_AE_LINES_PKG.SetNewLine;
118486 
118487    p_balance_type_code          := l_balance_type_code;
118488    -- set the flag so later we will know whether the gain loss line needs to be created
118489    
118490    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
118491      p_actual_flag :='A';
118492    END IF;
118493 
118494    --
118495    -- bulk performance
118496    --
118497    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
118498                                       p_header_num   => 0); -- 4262811
118499    --
118500    -- set accounting line options
118501    --
118502    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
118503            p_natural_side_code          => 'D'
118504          , p_gain_or_loss_flag          => 'N'
118505          , p_gl_transfer_mode_code      => 'S'
118506          , p_acct_entry_type_code       => 'A'
118507          , p_switch_side_flag           => 'Y'
118508          , p_merge_duplicate_code       => 'N'
118509          );
118510    --
118511    l_acc_rev_natural_side_code := 'C';  -- 4262811
118512    -- 
118513    --
118514    -- set accounting line type info
118515    --
118516    xla_ae_lines_pkg.SetAcctLineType
118517       (p_component_type             => l_component_type
118518       ,p_event_type_code            => l_event_type_code
118519       ,p_line_definition_owner_code => l_line_definition_owner_code
118520       ,p_line_definition_code       => l_line_definition_code
118521       ,p_accounting_line_code       => l_component_code
118522       ,p_accounting_line_type_code  => l_component_type_code
118523       ,p_accounting_line_appl_id    => l_component_appl_id
118524       ,p_amb_context_code           => l_amb_context_code
118525       ,p_entity_code                => l_entity_code
118526       ,p_event_class_code           => l_event_class_code);
118527    --
118528    -- set accounting class
118529    --
118530    xla_ae_lines_pkg.SetAcctClass(
118531            p_accounting_class_code  => 'PROFIT_IN_INVENTORY'
118532          , p_ae_header_id           => l_ae_header_id
118533          );
118534 
118535    --
118536    -- set rounding class
118537    --
118538    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
118539                       'PROFIT_IN_INVENTORY';
118540 
118541    --
118542    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
118543    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
118544    --
118545    -- bulk performance
118546    --
118547    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
118548 
118549    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
118550       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
118551 
118552    -- 4955764
118553    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
118554       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
118555 
118556    -- 4458381 Public Sector Enh
118557    
118558    --
118559    -- set accounting attributes for the line type
118560    --
118561    l_entered_amt_idx := 3;
118562    l_accted_amt_idx  := 8;
118563    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
118564    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
118565    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
118566    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
118567    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
118568    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
118569    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
118570    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
118571    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
118572    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
118573    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
118574    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
118575    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
118576    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
118577    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
118578    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
118579    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
118580 
118581    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
118582    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
118583 
118584    ---------------------------------------------------------------------------------------------------------------
118585    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
118586    ---------------------------------------------------------------------------------------------------------------
118587    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
118588 
118589    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
118590    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
118591 
118592    IF xla_accounting_cache_pkg.GetValueChar
118593          (p_source_code         => 'LEDGER_CATEGORY_CODE'
118594          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
118595    AND l_bflow_method_code = 'PRIOR_ENTRY'
118596 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
118597    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
118598          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
118599        )
118600    THEN
118601          xla_ae_lines_pkg.BflowUpgEntry
118602            (p_business_method_code    => l_bflow_method_code
118603            ,p_business_class_code     => l_bflow_class_code
118604            ,p_balance_type            => l_balance_type_code);
118605    ELSE
118606       NULL;
118607 -- No business flow processing for business flow method of NONE.
118608    END IF;
118609 
118610    --
118611    -- call analytical criteria
118612    --
118613    
118614    --
118615    -- call description
118616    --
118617    -- No description or it is inherited.
118618    --
118619    -- call ADRs
118620    -- Bug 4922099
118621    --
118622    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
118623         (NVL(l_actual_upg_option, 'N') = 'O') OR
118624         (NVL(l_enc_upg_option, 'N') = 'O')
118625       )
118626    THEN
118627    NULL;
118628    --
118629    --
118630    
118631   l_ccid := AcctDerRule_4(
118632            p_application_id           => p_application_id
118633          , p_ae_header_id             => l_ae_header_id 
118634 , p_source_4 => p_source_4
118635          , x_transaction_coa_id       => l_adr_transaction_coa_id
118636          , x_accounting_coa_id        => l_adr_accounting_coa_id
118637          , x_value_type_code          => l_adr_value_type_code
118638          , p_side                     => 'NA'
118639    );
118640 
118641    xla_ae_lines_pkg.set_ccid(
118642     p_code_combination_id          => l_ccid
118643   , p_value_type_code              => l_adr_value_type_code
118644   , p_transaction_coa_id           => l_adr_transaction_coa_id
118645   , p_accounting_coa_id            => l_adr_accounting_coa_id
118646   , p_adr_code                     => 'CST_DEFAULT'
118647   , p_adr_type_code                => 'S'
118648   , p_component_type               => l_component_type
118649   , p_component_code               => l_component_code
118650   , p_component_type_code          => l_component_type_code
118651   , p_component_appl_id            => l_component_appl_id
118652   , p_amb_context_code             => l_amb_context_code
118653   , p_side                         => 'NA'
118654   );
118655 
118656 
118657    --
118658    --
118659    END IF;
118660    --
118661    -- Bug 4922099
118662    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
118663           (NVL(l_enc_upg_option, 'N') = 'O')
118664         ) AND
118665         (l_bflow_method_code = 'PRIOR_ENTRY')
118666       )
118667    THEN
118668       IF
118669       --
118670       1 = 2
118671       --
118672       THEN
118673       xla_accounting_err_pkg.build_message
118674                                     (p_appli_s_name            => 'XLA'
118675                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
118676                                     ,p_token_1                 => 'LINE_NUMBER'
118677                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
118678                                     ,p_token_2                 => 'LINE_TYPE_NAME'
118679                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
118680                                                                              l_component_type
118681                                                                             ,l_component_code
118682                                                                             ,l_component_type_code
118683                                                                             ,l_component_appl_id
118684                                                                             ,l_amb_context_code
118685                                                                             ,l_entity_code
118686                                                                             ,l_event_class_code
118687                                                                            )
118688                                     ,p_token_3                 => 'OWNER'
118689                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
118690                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
118691                                                                           ,p_lookup_code    => l_component_type_code
118692                                                                          )
118693                                     ,p_token_4                 => 'PRODUCT_NAME'
118694                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
118695                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
118696                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
118697                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
118698                                     ,p_ae_header_id            =>  NULL
118699                                        );
118700 
118701         IF (C_LEVEL_ERROR>= g_log_level) THEN
118702                  trace
118703                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
118704                       ,p_level    => C_LEVEL_ERROR
118705                       ,p_module   => l_log_module);
118706         END IF;
118707       END IF;
118708    END IF;
118709    --
118710    --
118711    ------------------------------------------------------------------------------------------------
118712    -- 4219869 Business Flow
118713    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
118714    -- Prior Entry.  Currently, the following code is always generated.
118715    ------------------------------------------------------------------------------------------------
118716    XLA_AE_LINES_PKG.ValidateCurrentLine;
118717 
118718    ------------------------------------------------------------------------------------
118719    -- 4219869 Business Flow
118720    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
118721    ------------------------------------------------------------------------------------
118722    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
118723 
118724    ----------------------------------------------------------------------------------
118725    -- 4219869 Business Flow
118726    -- Update journal entry status -- Need to generate this within IF <condition>
118727    ----------------------------------------------------------------------------------
118728    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
118729          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
118730          ,p_balance_type_code => l_balance_type_code
118731          );
118732 
118733    -------------------------------------------------------------------------------------------
118734    -- 4262811 - Generate the Accrual Reversal lines
118735    -------------------------------------------------------------------------------------------
118736    BEGIN
118737       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
118738                               (g_array_event(p_event_id).array_value_num('header_index'));
118739       IF l_acc_rev_flag IS NULL THEN
118740          l_acc_rev_flag := 'N';
118741       END IF;
118742    EXCEPTION
118743       WHEN OTHERS THEN
118744          l_acc_rev_flag := 'N';
118745    END;
118746    --
118747    IF (l_acc_rev_flag = 'Y') THEN
118748 
118749        -- 4645092  ------------------------------------------------------------------------------
118750        -- To allow MPA report to determine if it should generate report process
118751        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
118752        ------------------------------------------------------------------------------------------
118753 
118754        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
118755        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
118756    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
118757    -- call ADRs
118758    -- Bug 4922099
118759    --
118760    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
118761         (NVL(l_actual_upg_option, 'N') = 'O') OR
118762         (NVL(l_enc_upg_option, 'N') = 'O')
118763       )
118764    THEN
118765    NULL;
118766    --
118767    --
118768    
118769   l_ccid := AcctDerRule_4(
118770            p_application_id           => p_application_id
118771          , p_ae_header_id             => l_ae_header_id 
118772 , p_source_4 => p_source_4
118773          , x_transaction_coa_id       => l_adr_transaction_coa_id
118774          , x_accounting_coa_id        => l_adr_accounting_coa_id
118775          , x_value_type_code          => l_adr_value_type_code
118776          , p_side                     => 'NA'
118777    );
118778 
118779    xla_ae_lines_pkg.set_ccid(
118780     p_code_combination_id          => l_ccid
118781   , p_value_type_code              => l_adr_value_type_code
118782   , p_transaction_coa_id           => l_adr_transaction_coa_id
118783   , p_accounting_coa_id            => l_adr_accounting_coa_id
118784   , p_adr_code                     => 'CST_DEFAULT'
118785   , p_adr_type_code                => 'S'
118786   , p_component_type               => l_component_type
118787   , p_component_code               => l_component_code
118788   , p_component_type_code          => l_component_type_code
118789   , p_component_appl_id            => l_component_appl_id
118790   , p_amb_context_code             => l_amb_context_code
118791   , p_side                         => 'NA'
118792   );
118793 
118794 
118795    --
118796    --
118797    END IF;
118798 
118799        --
118800        -- Update the line information that should be overwritten
118801        --
118802        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
118803                                          p_header_num   => 1);
118804        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
118805 
118806        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
118807 
118808        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
118809           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
118810        END IF;
118811 
118812       --
118813       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
118814       --
118815       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
118816           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
118817       ELSE
118818           ---------------------------------------------------------------------------------------------------
118819           -- 4262811a Switch Sign
118820           ---------------------------------------------------------------------------------------------------
118821           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
118822           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
118823                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118824           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
118825                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118826           -- 5132302
118827           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
118828                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118829 
118830       END IF;
118831 
118832       -- 4955764
118833       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
118834       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
118835 
118836 
118837       XLA_AE_LINES_PKG.ValidateCurrentLine;
118838       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
118839 
118840       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
118841                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
118842                ,p_balance_type_code => l_balance_type_code);
118843 
118844    END IF;
118845 
118846    -----------------------------------------------------------------------------------------
118847    -- 4262811 Multiperiod Accounting
118848    -----------------------------------------------------------------------------------------
118849      -- No MPA option is assigned.
118850 
118851 
118852 END IF;
118853 END IF;
118854 --
118855 
118856 --
118857 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
118858    trace
118859       (p_msg      => 'END of AcctLineType_215'
118860       ,p_level    => C_LEVEL_PROCEDURE
118861       ,p_module   => l_log_module);
118862 END IF;
118863 --
118864 EXCEPTION
118865   WHEN xla_exceptions_pkg.application_exception THEN
118866       RAISE;
118867   WHEN OTHERS THEN
118868        xla_exceptions_pkg.raise_message
118869            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_215');
118870 END AcctLineType_215;
118871 --
118872 
118873 ---------------------------------------
118874 --
118875 -- PRIVATE FUNCTION
118876 --         AcctLineType_216
118877 --
118878 ---------------------------------------
118879 PROCEDURE AcctLineType_216 (
118880   p_application_id        IN NUMBER
118881  ,p_event_id              IN NUMBER
118882  ,p_calculate_acctd_flag  IN VARCHAR2
118883  ,p_calculate_g_l_flag    IN VARCHAR2
118884  ,p_actual_flag           IN OUT VARCHAR2
118885  ,p_balance_type_code     OUT VARCHAR2
118886  ,p_gain_or_loss_ref      OUT VARCHAR2
118887  
118888 --Cost Management Default Account
118889  , p_source_4            IN NUMBER
118890 --Applied to Application ID
118891  , p_source_6            IN NUMBER
118892 --Applied to Distribution Link Type
118893  , p_source_7            IN VARCHAR2
118894 --Applied to Entity Code
118895  , p_source_8            IN VARCHAR2
118896 --DISTRIBUTION_IDENTIFIER
118897  , p_source_11            IN NUMBER
118898 --Distribution Type
118899  , p_source_12            IN VARCHAR2
118900  , p_source_12_meaning    IN VARCHAR2
118901 --Encumbrance Reversal Amount Entered
118902  , p_source_14            IN NUMBER
118903 --Entered Currency Code
118904  , p_source_15            IN VARCHAR2
118905 --Transaction Encumbrance Reversal Amount
118906  , p_source_16            IN NUMBER
118907 --Entered Amount
118908  , p_source_18            IN NUMBER
118909 --Currency Conversion Date
118910  , p_source_19            IN DATE
118911 --Currency Conversion Rate
118912  , p_source_20            IN NUMBER
118913 --Currency Conversion Type
118914  , p_source_21            IN VARCHAR2
118915 --Accounted Amount
118916  , p_source_22            IN NUMBER
118917 --Accounting Line Type
118918  , p_source_24            IN NUMBER
118919 --Costing Encumbrance Upgrade Option
118920  , p_source_27            IN VARCHAR2
118921 --TXN_PO_DISTRIBUTION_ID
118922  , p_source_28            IN NUMBER
118923 --TXN_PO_HEADER_ID
118924  , p_source_29            IN NUMBER
118925 --Requisition Budget Account
118926  , p_source_30            IN NUMBER
118927 --Requisition Encumbrance Type Identifier
118928  , p_source_31            IN NUMBER
118929 )
118930 IS
118931 
118932 l_component_type              VARCHAR2(80);
118933 l_component_code              VARCHAR2(30);
118934 l_component_type_code         VARCHAR2(1);
118935 l_component_appl_id           INTEGER;
118936 l_amb_context_code            VARCHAR2(30);
118937 l_entity_code                 VARCHAR2(30);
118938 l_event_class_code            VARCHAR2(30);
118939 l_ae_header_id                NUMBER;
118940 l_event_type_code             VARCHAR2(30);
118941 l_line_definition_code        VARCHAR2(30);
118942 l_line_definition_owner_code  VARCHAR2(1);
118943 --
118944 -- adr variables
118945 l_segment                     VARCHAR2(30);
118946 l_ccid                        NUMBER;
118947 l_adr_transaction_coa_id      NUMBER;
118948 l_adr_accounting_coa_id       NUMBER;
118949 l_adr_flexfield_segment_code  VARCHAR2(30);
118950 l_adr_flex_value_set_id       NUMBER;
118951 l_adr_value_type_code         VARCHAR2(30);
118952 l_adr_value_combination_id    NUMBER;
118953 l_adr_value_segment_code      VARCHAR2(30);
118954 
118955 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
118956 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
118957 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
118958 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
118959 
118960 -- 4262811 Variables ------------------------------------------------------------------------------------------
118961 l_entered_amt_idx             NUMBER;
118962 l_accted_amt_idx              NUMBER;
118963 l_acc_rev_flag                VARCHAR2(1);
118964 l_accrual_line_num            NUMBER;
118965 l_tmp_amt                     NUMBER;
118966 l_acc_rev_natural_side_code   VARCHAR2(1);
118967 
118968 l_num_entries                 NUMBER;
118969 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
118970 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
118971 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
118972 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
118973 l_recog_line_1                NUMBER;
118974 l_recog_line_2                NUMBER;
118975 
118976 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
118977 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
118978 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
118979 
118980 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
118981 
118982 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
118983 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
118984 
118985 ---------------------------------------------------------------------------------------------------------------
118986 
118987 
118988 --
118989 -- bulk performance
118990 --
118991 l_balance_type_code           VARCHAR2(1);
118992 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
118993 l_log_module                  VARCHAR2(240);
118994 
118995 --
118996 -- Upgrade strategy
118997 --
118998 l_actual_upg_option           VARCHAR2(1);
118999 l_enc_upg_option           VARCHAR2(1);
119000 
119001 --
119002 BEGIN
119003 --
119004 IF g_log_enabled THEN
119005       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_216';
119006 END IF;
119007 --
119008 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
119009 
119010       trace
119011          (p_msg      => 'BEGIN of AcctLineType_216'
119012          ,p_level    => C_LEVEL_PROCEDURE
119013          ,p_module   => l_log_module);
119014 
119015 END IF;
119016 --
119017 l_component_type             := 'AMB_JLT';
119018 l_component_code             := 'PROFIT_IN_INVENTORY';
119019 l_component_type_code        := 'S';
119020 l_component_appl_id          :=  707;
119021 l_amb_context_code           := 'DEFAULT';
119022 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
119023 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
119024 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
119025 l_line_definition_owner_code := 'S';
119026 l_line_definition_code       := 'FOB_RCPT_RECIPIENT_RCPT';
119027 --
119028 l_balance_type_code          := 'A';
119029 l_segment                     := NULL;
119030 l_ccid                        := NULL;
119031 l_adr_transaction_coa_id      := NULL;
119032 l_adr_accounting_coa_id       := NULL;
119033 l_adr_flexfield_segment_code  := NULL;
119034 l_adr_flex_value_set_id       := NULL;
119035 l_adr_value_type_code         := NULL;
119036 l_adr_value_combination_id    := NULL;
119037 l_adr_value_segment_code      := NULL;
119038 
119039 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
119040 l_bflow_class_code           := '';    -- 4219869 Business Flow
119041 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
119042 l_budgetary_control_flag     := 'N';
119043 
119044 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
119045 l_bflow_applied_to_amt       := NULL; -- 5132302
119046 l_entered_amt_idx            := NULL;          -- 4262811
119047 l_accted_amt_idx             := NULL;          -- 4262811
119048 l_acc_rev_flag               := NULL;          -- 4262811
119049 l_accrual_line_num           := NULL;          -- 4262811
119050 l_tmp_amt                    := NULL;          -- 4262811
119051 --
119052  
119053 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
119054     l_balance_type_code <> 'B' THEN
119055 IF NVL(p_source_24,9E125) =  30
119056  THEN 
119057 
119058    --
119059    XLA_AE_LINES_PKG.SetNewLine;
119060 
119061    p_balance_type_code          := l_balance_type_code;
119062    -- set the flag so later we will know whether the gain loss line needs to be created
119063    
119064    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
119065      p_actual_flag :='A';
119066    END IF;
119067 
119068    --
119069    -- bulk performance
119070    --
119071    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
119072                                       p_header_num   => 0); -- 4262811
119073    --
119074    -- set accounting line options
119075    --
119076    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
119077            p_natural_side_code          => 'D'
119078          , p_gain_or_loss_flag          => 'N'
119079          , p_gl_transfer_mode_code      => 'S'
119080          , p_acct_entry_type_code       => 'A'
119081          , p_switch_side_flag           => 'Y'
119082          , p_merge_duplicate_code       => 'N'
119083          );
119084    --
119085    l_acc_rev_natural_side_code := 'C';  -- 4262811
119086    -- 
119087    --
119088    -- set accounting line type info
119089    --
119090    xla_ae_lines_pkg.SetAcctLineType
119091       (p_component_type             => l_component_type
119092       ,p_event_type_code            => l_event_type_code
119093       ,p_line_definition_owner_code => l_line_definition_owner_code
119094       ,p_line_definition_code       => l_line_definition_code
119095       ,p_accounting_line_code       => l_component_code
119096       ,p_accounting_line_type_code  => l_component_type_code
119097       ,p_accounting_line_appl_id    => l_component_appl_id
119098       ,p_amb_context_code           => l_amb_context_code
119099       ,p_entity_code                => l_entity_code
119100       ,p_event_class_code           => l_event_class_code);
119101    --
119102    -- set accounting class
119103    --
119104    xla_ae_lines_pkg.SetAcctClass(
119105            p_accounting_class_code  => 'PROFIT_IN_INVENTORY'
119106          , p_ae_header_id           => l_ae_header_id
119107          );
119108 
119109    --
119110    -- set rounding class
119111    --
119112    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
119113                       'PROFIT_IN_INVENTORY';
119114 
119115    --
119116    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
119117    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
119118    --
119119    -- bulk performance
119120    --
119121    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
119122 
119123    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
119124       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
119125 
119126    -- 4955764
119127    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
119128       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
119129 
119130    -- 4458381 Public Sector Enh
119131    
119132    --
119133    -- set accounting attributes for the line type
119134    --
119135    l_entered_amt_idx := 17;
119136    l_accted_amt_idx  := 22;
119137    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
119138    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
119139    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
119140    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
119141    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
119142    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
119143    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
119144    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
119145    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
119146    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
119147    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
119148    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
119149    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
119150    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
119151    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
119152    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
119153    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
119154    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
119155    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
119156    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
119157    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
119158    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
119159    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
119160    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
119161    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
119162    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
119163    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
119164    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
119165    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
119166    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
119167    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
119168    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
119169    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
119170    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
119171    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
119172    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
119173    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
119174    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
119175    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
119176    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
119177    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
119178    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
119179    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
119180    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
119181    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
119182    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
119183    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
119184    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
119185    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
119186 
119187    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
119188    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
119189 
119190    ---------------------------------------------------------------------------------------------------------------
119191    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
119192    ---------------------------------------------------------------------------------------------------------------
119193    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
119194 
119195    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
119196    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
119197 
119198    IF xla_accounting_cache_pkg.GetValueChar
119199          (p_source_code         => 'LEDGER_CATEGORY_CODE'
119200          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
119201    AND l_bflow_method_code = 'PRIOR_ENTRY'
119202 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
119203    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
119204          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
119205        )
119206    THEN
119207          xla_ae_lines_pkg.BflowUpgEntry
119208            (p_business_method_code    => l_bflow_method_code
119209            ,p_business_class_code     => l_bflow_class_code
119210            ,p_balance_type            => l_balance_type_code);
119211    ELSE
119212       NULL;
119213 -- No business flow processing for business flow method of NONE.
119214    END IF;
119215 
119216    --
119217    -- call analytical criteria
119218    --
119219    
119220    --
119221    -- call description
119222    --
119223    -- No description or it is inherited.
119224    --
119225    -- call ADRs
119226    -- Bug 4922099
119227    --
119228    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
119229         (NVL(l_actual_upg_option, 'N') = 'O') OR
119230         (NVL(l_enc_upg_option, 'N') = 'O')
119231       )
119232    THEN
119233    NULL;
119234    --
119235    --
119236    
119237   l_ccid := AcctDerRule_4(
119238            p_application_id           => p_application_id
119239          , p_ae_header_id             => l_ae_header_id 
119240 , p_source_4 => p_source_4
119241          , x_transaction_coa_id       => l_adr_transaction_coa_id
119242          , x_accounting_coa_id        => l_adr_accounting_coa_id
119243          , x_value_type_code          => l_adr_value_type_code
119244          , p_side                     => 'NA'
119245    );
119246 
119247    xla_ae_lines_pkg.set_ccid(
119248     p_code_combination_id          => l_ccid
119249   , p_value_type_code              => l_adr_value_type_code
119250   , p_transaction_coa_id           => l_adr_transaction_coa_id
119251   , p_accounting_coa_id            => l_adr_accounting_coa_id
119252   , p_adr_code                     => 'CST_DEFAULT'
119253   , p_adr_type_code                => 'S'
119254   , p_component_type               => l_component_type
119255   , p_component_code               => l_component_code
119256   , p_component_type_code          => l_component_type_code
119257   , p_component_appl_id            => l_component_appl_id
119258   , p_amb_context_code             => l_amb_context_code
119259   , p_side                         => 'NA'
119260   );
119261 
119262 
119263    --
119264    --
119265    END IF;
119266    --
119267    -- Bug 4922099
119268    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
119269           (NVL(l_enc_upg_option, 'N') = 'O')
119270         ) AND
119271         (l_bflow_method_code = 'PRIOR_ENTRY')
119272       )
119273    THEN
119274       IF
119275       --
119276       1 = 2
119277       --
119278       THEN
119279       xla_accounting_err_pkg.build_message
119280                                     (p_appli_s_name            => 'XLA'
119281                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
119282                                     ,p_token_1                 => 'LINE_NUMBER'
119283                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
119284                                     ,p_token_2                 => 'LINE_TYPE_NAME'
119285                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
119286                                                                              l_component_type
119287                                                                             ,l_component_code
119288                                                                             ,l_component_type_code
119289                                                                             ,l_component_appl_id
119290                                                                             ,l_amb_context_code
119291                                                                             ,l_entity_code
119292                                                                             ,l_event_class_code
119293                                                                            )
119294                                     ,p_token_3                 => 'OWNER'
119295                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
119296                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
119297                                                                           ,p_lookup_code    => l_component_type_code
119298                                                                          )
119299                                     ,p_token_4                 => 'PRODUCT_NAME'
119300                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
119301                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
119302                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
119303                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
119304                                     ,p_ae_header_id            =>  NULL
119305                                        );
119306 
119307         IF (C_LEVEL_ERROR>= g_log_level) THEN
119308                  trace
119309                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
119310                       ,p_level    => C_LEVEL_ERROR
119311                       ,p_module   => l_log_module);
119312         END IF;
119313       END IF;
119314    END IF;
119315    --
119316    --
119317    ------------------------------------------------------------------------------------------------
119318    -- 4219869 Business Flow
119319    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
119320    -- Prior Entry.  Currently, the following code is always generated.
119321    ------------------------------------------------------------------------------------------------
119322    XLA_AE_LINES_PKG.ValidateCurrentLine;
119323 
119324    ------------------------------------------------------------------------------------
119325    -- 4219869 Business Flow
119326    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
119327    ------------------------------------------------------------------------------------
119328    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
119329 
119330    ----------------------------------------------------------------------------------
119331    -- 4219869 Business Flow
119332    -- Update journal entry status -- Need to generate this within IF <condition>
119333    ----------------------------------------------------------------------------------
119334    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
119335          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
119336          ,p_balance_type_code => l_balance_type_code
119337          );
119338 
119339    -------------------------------------------------------------------------------------------
119340    -- 4262811 - Generate the Accrual Reversal lines
119341    -------------------------------------------------------------------------------------------
119342    BEGIN
119343       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
119344                               (g_array_event(p_event_id).array_value_num('header_index'));
119345       IF l_acc_rev_flag IS NULL THEN
119346          l_acc_rev_flag := 'N';
119347       END IF;
119348    EXCEPTION
119349       WHEN OTHERS THEN
119350          l_acc_rev_flag := 'N';
119351    END;
119352    --
119353    IF (l_acc_rev_flag = 'Y') THEN
119354 
119355        -- 4645092  ------------------------------------------------------------------------------
119356        -- To allow MPA report to determine if it should generate report process
119357        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
119358        ------------------------------------------------------------------------------------------
119359 
119360        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
119361        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
119362    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
119363    -- call ADRs
119364    -- Bug 4922099
119365    --
119366    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
119367         (NVL(l_actual_upg_option, 'N') = 'O') OR
119368         (NVL(l_enc_upg_option, 'N') = 'O')
119369       )
119370    THEN
119371    NULL;
119372    --
119373    --
119374    
119375   l_ccid := AcctDerRule_4(
119376            p_application_id           => p_application_id
119377          , p_ae_header_id             => l_ae_header_id 
119378 , p_source_4 => p_source_4
119379          , x_transaction_coa_id       => l_adr_transaction_coa_id
119380          , x_accounting_coa_id        => l_adr_accounting_coa_id
119381          , x_value_type_code          => l_adr_value_type_code
119382          , p_side                     => 'NA'
119383    );
119384 
119385    xla_ae_lines_pkg.set_ccid(
119386     p_code_combination_id          => l_ccid
119387   , p_value_type_code              => l_adr_value_type_code
119388   , p_transaction_coa_id           => l_adr_transaction_coa_id
119389   , p_accounting_coa_id            => l_adr_accounting_coa_id
119390   , p_adr_code                     => 'CST_DEFAULT'
119391   , p_adr_type_code                => 'S'
119392   , p_component_type               => l_component_type
119393   , p_component_code               => l_component_code
119394   , p_component_type_code          => l_component_type_code
119395   , p_component_appl_id            => l_component_appl_id
119396   , p_amb_context_code             => l_amb_context_code
119397   , p_side                         => 'NA'
119398   );
119399 
119400 
119401    --
119402    --
119403    END IF;
119404 
119405        --
119406        -- Update the line information that should be overwritten
119407        --
119408        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
119409                                          p_header_num   => 1);
119410        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
119411 
119412        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
119413 
119414        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
119415           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
119416        END IF;
119417 
119418       --
119419       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
119420       --
119421       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
119422           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
119423       ELSE
119424           ---------------------------------------------------------------------------------------------------
119425           -- 4262811a Switch Sign
119426           ---------------------------------------------------------------------------------------------------
119427           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
119428           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
119429                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
119430           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
119431                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
119432           -- 5132302
119433           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
119434                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
119435 
119436       END IF;
119437 
119438       -- 4955764
119439       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
119440       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
119441 
119442 
119443       XLA_AE_LINES_PKG.ValidateCurrentLine;
119444       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
119445 
119446       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
119447                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
119448                ,p_balance_type_code => l_balance_type_code);
119449 
119450    END IF;
119451 
119452    -----------------------------------------------------------------------------------------
119453    -- 4262811 Multiperiod Accounting
119454    -----------------------------------------------------------------------------------------
119455      -- No MPA option is assigned.
119456 
119457 
119458 END IF;
119459 END IF;
119460 --
119461 
119462 --
119463 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
119464    trace
119465       (p_msg      => 'END of AcctLineType_216'
119466       ,p_level    => C_LEVEL_PROCEDURE
119467       ,p_module   => l_log_module);
119468 END IF;
119469 --
119470 EXCEPTION
119471   WHEN xla_exceptions_pkg.application_exception THEN
119472       RAISE;
119473   WHEN OTHERS THEN
119474        xla_exceptions_pkg.raise_message
119475            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_216');
119476 END AcctLineType_216;
119477 --
119478 
119479 ---------------------------------------
119480 --
119481 -- PRIVATE FUNCTION
119482 --         AcctLineType_217
119483 --
119484 ---------------------------------------
119485 PROCEDURE AcctLineType_217 (
119486   p_application_id        IN NUMBER
119487  ,p_event_id              IN NUMBER
119488  ,p_calculate_acctd_flag  IN VARCHAR2
119489  ,p_calculate_g_l_flag    IN VARCHAR2
119490  ,p_actual_flag           IN OUT VARCHAR2
119491  ,p_balance_type_code     OUT VARCHAR2
119492  ,p_gain_or_loss_ref      OUT VARCHAR2
119493  
119494 --Cost Management Default Account
119495  , p_source_4            IN NUMBER
119496 --DISTRIBUTION_IDENTIFIER
119497  , p_source_11            IN NUMBER
119498 --Distribution Type
119499  , p_source_12            IN VARCHAR2
119500  , p_source_12_meaning    IN VARCHAR2
119501 --Entered Currency Code
119502  , p_source_15            IN VARCHAR2
119503 --Entered Amount
119504  , p_source_18            IN NUMBER
119505 --Currency Conversion Date
119506  , p_source_19            IN DATE
119507 --Currency Conversion Rate
119508  , p_source_20            IN NUMBER
119509 --Currency Conversion Type
119510  , p_source_21            IN VARCHAR2
119511 --Accounted Amount
119512  , p_source_22            IN NUMBER
119513 --Accounting Line Type
119514  , p_source_24            IN NUMBER
119515 )
119516 IS
119517 
119518 l_component_type              VARCHAR2(80);
119519 l_component_code              VARCHAR2(30);
119520 l_component_type_code         VARCHAR2(1);
119521 l_component_appl_id           INTEGER;
119522 l_amb_context_code            VARCHAR2(30);
119523 l_entity_code                 VARCHAR2(30);
119524 l_event_class_code            VARCHAR2(30);
119525 l_ae_header_id                NUMBER;
119526 l_event_type_code             VARCHAR2(30);
119527 l_line_definition_code        VARCHAR2(30);
119528 l_line_definition_owner_code  VARCHAR2(1);
119529 --
119530 -- adr variables
119531 l_segment                     VARCHAR2(30);
119532 l_ccid                        NUMBER;
119533 l_adr_transaction_coa_id      NUMBER;
119534 l_adr_accounting_coa_id       NUMBER;
119535 l_adr_flexfield_segment_code  VARCHAR2(30);
119536 l_adr_flex_value_set_id       NUMBER;
119537 l_adr_value_type_code         VARCHAR2(30);
119538 l_adr_value_combination_id    NUMBER;
119539 l_adr_value_segment_code      VARCHAR2(30);
119540 
119541 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
119542 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
119543 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
119544 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
119545 
119546 -- 4262811 Variables ------------------------------------------------------------------------------------------
119547 l_entered_amt_idx             NUMBER;
119548 l_accted_amt_idx              NUMBER;
119549 l_acc_rev_flag                VARCHAR2(1);
119550 l_accrual_line_num            NUMBER;
119551 l_tmp_amt                     NUMBER;
119552 l_acc_rev_natural_side_code   VARCHAR2(1);
119553 
119554 l_num_entries                 NUMBER;
119555 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
119556 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
119557 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
119558 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
119559 l_recog_line_1                NUMBER;
119560 l_recog_line_2                NUMBER;
119561 
119562 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
119563 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
119564 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
119565 
119566 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
119567 
119568 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
119569 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
119570 
119571 ---------------------------------------------------------------------------------------------------------------
119572 
119573 
119574 --
119575 -- bulk performance
119576 --
119577 l_balance_type_code           VARCHAR2(1);
119578 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
119579 l_log_module                  VARCHAR2(240);
119580 
119581 --
119582 -- Upgrade strategy
119583 --
119584 l_actual_upg_option           VARCHAR2(1);
119585 l_enc_upg_option           VARCHAR2(1);
119586 
119587 --
119588 BEGIN
119589 --
119590 IF g_log_enabled THEN
119591       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_217';
119592 END IF;
119593 --
119594 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
119595 
119596       trace
119597          (p_msg      => 'BEGIN of AcctLineType_217'
119598          ,p_level    => C_LEVEL_PROCEDURE
119599          ,p_module   => l_log_module);
119600 
119601 END IF;
119602 --
119603 l_component_type             := 'AMB_JLT';
119604 l_component_code             := 'PROFIT_IN_INVENTORY';
119605 l_component_type_code        := 'S';
119606 l_component_appl_id          :=  707;
119607 l_amb_context_code           := 'DEFAULT';
119608 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
119609 l_event_class_code           := 'USER_DEFINE';
119610 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
119611 l_line_definition_owner_code := 'S';
119612 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
119613 --
119614 l_balance_type_code          := 'A';
119615 l_segment                     := NULL;
119616 l_ccid                        := NULL;
119617 l_adr_transaction_coa_id      := NULL;
119618 l_adr_accounting_coa_id       := NULL;
119619 l_adr_flexfield_segment_code  := NULL;
119620 l_adr_flex_value_set_id       := NULL;
119621 l_adr_value_type_code         := NULL;
119622 l_adr_value_combination_id    := NULL;
119623 l_adr_value_segment_code      := NULL;
119624 
119625 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
119626 l_bflow_class_code           := '';    -- 4219869 Business Flow
119627 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
119628 l_budgetary_control_flag     := 'N';
119629 
119630 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
119631 l_bflow_applied_to_amt       := NULL; -- 5132302
119632 l_entered_amt_idx            := NULL;          -- 4262811
119633 l_accted_amt_idx             := NULL;          -- 4262811
119634 l_acc_rev_flag               := NULL;          -- 4262811
119635 l_accrual_line_num           := NULL;          -- 4262811
119636 l_tmp_amt                    := NULL;          -- 4262811
119637 --
119638  
119639 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
119640     l_balance_type_code <> 'B' THEN
119641 IF NVL(p_source_24,9E125) =  30
119642  THEN 
119643 
119644    --
119645    XLA_AE_LINES_PKG.SetNewLine;
119646 
119647    p_balance_type_code          := l_balance_type_code;
119648    -- set the flag so later we will know whether the gain loss line needs to be created
119649    
119650    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
119651      p_actual_flag :='A';
119652    END IF;
119653 
119654    --
119655    -- bulk performance
119656    --
119657    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
119658                                       p_header_num   => 0); -- 4262811
119659    --
119660    -- set accounting line options
119661    --
119662    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
119663            p_natural_side_code          => 'D'
119664          , p_gain_or_loss_flag          => 'N'
119665          , p_gl_transfer_mode_code      => 'S'
119666          , p_acct_entry_type_code       => 'A'
119667          , p_switch_side_flag           => 'Y'
119668          , p_merge_duplicate_code       => 'N'
119669          );
119670    --
119671    l_acc_rev_natural_side_code := 'C';  -- 4262811
119672    -- 
119673    --
119674    -- set accounting line type info
119675    --
119676    xla_ae_lines_pkg.SetAcctLineType
119677       (p_component_type             => l_component_type
119678       ,p_event_type_code            => l_event_type_code
119679       ,p_line_definition_owner_code => l_line_definition_owner_code
119680       ,p_line_definition_code       => l_line_definition_code
119681       ,p_accounting_line_code       => l_component_code
119682       ,p_accounting_line_type_code  => l_component_type_code
119683       ,p_accounting_line_appl_id    => l_component_appl_id
119684       ,p_amb_context_code           => l_amb_context_code
119685       ,p_entity_code                => l_entity_code
119686       ,p_event_class_code           => l_event_class_code);
119687    --
119688    -- set accounting class
119689    --
119690    xla_ae_lines_pkg.SetAcctClass(
119691            p_accounting_class_code  => 'PROFIT_IN_INVENTORY'
119692          , p_ae_header_id           => l_ae_header_id
119693          );
119694 
119695    --
119696    -- set rounding class
119697    --
119698    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
119699                       'PROFIT_IN_INVENTORY';
119700 
119701    --
119702    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
119703    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
119704    --
119705    -- bulk performance
119706    --
119707    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
119708 
119709    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
119710       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
119711 
119712    -- 4955764
119713    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
119714       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
119715 
119716    -- 4458381 Public Sector Enh
119717    
119718    --
119719    -- set accounting attributes for the line type
119720    --
119721    l_entered_amt_idx := 3;
119722    l_accted_amt_idx  := 8;
119723    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
119724    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
119725    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
119726    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
119727    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
119728    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
119729    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
119730    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
119731    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
119732    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
119733    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
119734    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
119735    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
119736    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
119737    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
119738    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
119739    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
119740 
119741    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
119742    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
119743 
119744    ---------------------------------------------------------------------------------------------------------------
119745    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
119746    ---------------------------------------------------------------------------------------------------------------
119747    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
119748 
119749    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
119750    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
119751 
119752    IF xla_accounting_cache_pkg.GetValueChar
119753          (p_source_code         => 'LEDGER_CATEGORY_CODE'
119754          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
119755    AND l_bflow_method_code = 'PRIOR_ENTRY'
119756 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
119757    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
119758          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
119759        )
119760    THEN
119761          xla_ae_lines_pkg.BflowUpgEntry
119762            (p_business_method_code    => l_bflow_method_code
119763            ,p_business_class_code     => l_bflow_class_code
119764            ,p_balance_type            => l_balance_type_code);
119765    ELSE
119766       NULL;
119767 -- No business flow processing for business flow method of NONE.
119768    END IF;
119769 
119770    --
119771    -- call analytical criteria
119772    --
119773    
119774    --
119775    -- call description
119776    --
119777    -- No description or it is inherited.
119778    --
119779    -- call ADRs
119780    -- Bug 4922099
119781    --
119782    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
119783         (NVL(l_actual_upg_option, 'N') = 'O') OR
119784         (NVL(l_enc_upg_option, 'N') = 'O')
119785       )
119786    THEN
119787    NULL;
119788    --
119789    --
119790    
119791   l_ccid := AcctDerRule_4(
119792            p_application_id           => p_application_id
119793          , p_ae_header_id             => l_ae_header_id 
119794 , p_source_4 => p_source_4
119795          , x_transaction_coa_id       => l_adr_transaction_coa_id
119796          , x_accounting_coa_id        => l_adr_accounting_coa_id
119797          , x_value_type_code          => l_adr_value_type_code
119798          , p_side                     => 'NA'
119799    );
119800 
119801    xla_ae_lines_pkg.set_ccid(
119802     p_code_combination_id          => l_ccid
119803   , p_value_type_code              => l_adr_value_type_code
119804   , p_transaction_coa_id           => l_adr_transaction_coa_id
119805   , p_accounting_coa_id            => l_adr_accounting_coa_id
119806   , p_adr_code                     => 'CST_DEFAULT'
119807   , p_adr_type_code                => 'S'
119808   , p_component_type               => l_component_type
119809   , p_component_code               => l_component_code
119810   , p_component_type_code          => l_component_type_code
119811   , p_component_appl_id            => l_component_appl_id
119812   , p_amb_context_code             => l_amb_context_code
119813   , p_side                         => 'NA'
119814   );
119815 
119816 
119817    --
119818    --
119819    END IF;
119820    --
119821    -- Bug 4922099
119822    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
119823           (NVL(l_enc_upg_option, 'N') = 'O')
119824         ) AND
119825         (l_bflow_method_code = 'PRIOR_ENTRY')
119826       )
119827    THEN
119828       IF
119829       --
119830       1 = 2
119831       --
119832       THEN
119833       xla_accounting_err_pkg.build_message
119834                                     (p_appli_s_name            => 'XLA'
119835                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
119836                                     ,p_token_1                 => 'LINE_NUMBER'
119837                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
119838                                     ,p_token_2                 => 'LINE_TYPE_NAME'
119839                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
119840                                                                              l_component_type
119841                                                                             ,l_component_code
119842                                                                             ,l_component_type_code
119843                                                                             ,l_component_appl_id
119844                                                                             ,l_amb_context_code
119845                                                                             ,l_entity_code
119846                                                                             ,l_event_class_code
119847                                                                            )
119848                                     ,p_token_3                 => 'OWNER'
119849                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
119850                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
119851                                                                           ,p_lookup_code    => l_component_type_code
119852                                                                          )
119853                                     ,p_token_4                 => 'PRODUCT_NAME'
119854                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
119855                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
119856                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
119857                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
119858                                     ,p_ae_header_id            =>  NULL
119859                                        );
119860 
119861         IF (C_LEVEL_ERROR>= g_log_level) THEN
119862                  trace
119863                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
119864                       ,p_level    => C_LEVEL_ERROR
119865                       ,p_module   => l_log_module);
119866         END IF;
119867       END IF;
119868    END IF;
119869    --
119870    --
119871    ------------------------------------------------------------------------------------------------
119872    -- 4219869 Business Flow
119873    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
119874    -- Prior Entry.  Currently, the following code is always generated.
119875    ------------------------------------------------------------------------------------------------
119876    XLA_AE_LINES_PKG.ValidateCurrentLine;
119877 
119878    ------------------------------------------------------------------------------------
119879    -- 4219869 Business Flow
119880    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
119881    ------------------------------------------------------------------------------------
119882    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
119883 
119884    ----------------------------------------------------------------------------------
119885    -- 4219869 Business Flow
119886    -- Update journal entry status -- Need to generate this within IF <condition>
119887    ----------------------------------------------------------------------------------
119888    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
119889          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
119890          ,p_balance_type_code => l_balance_type_code
119891          );
119892 
119893    -------------------------------------------------------------------------------------------
119894    -- 4262811 - Generate the Accrual Reversal lines
119895    -------------------------------------------------------------------------------------------
119896    BEGIN
119897       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
119898                               (g_array_event(p_event_id).array_value_num('header_index'));
119899       IF l_acc_rev_flag IS NULL THEN
119900          l_acc_rev_flag := 'N';
119901       END IF;
119902    EXCEPTION
119903       WHEN OTHERS THEN
119904          l_acc_rev_flag := 'N';
119905    END;
119906    --
119907    IF (l_acc_rev_flag = 'Y') THEN
119908 
119909        -- 4645092  ------------------------------------------------------------------------------
119910        -- To allow MPA report to determine if it should generate report process
119911        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
119912        ------------------------------------------------------------------------------------------
119913 
119914        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
119915        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
119916    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
119917    -- call ADRs
119918    -- Bug 4922099
119919    --
119920    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
119921         (NVL(l_actual_upg_option, 'N') = 'O') OR
119922         (NVL(l_enc_upg_option, 'N') = 'O')
119923       )
119924    THEN
119925    NULL;
119926    --
119927    --
119928    
119929   l_ccid := AcctDerRule_4(
119930            p_application_id           => p_application_id
119931          , p_ae_header_id             => l_ae_header_id 
119932 , p_source_4 => p_source_4
119933          , x_transaction_coa_id       => l_adr_transaction_coa_id
119934          , x_accounting_coa_id        => l_adr_accounting_coa_id
119935          , x_value_type_code          => l_adr_value_type_code
119936          , p_side                     => 'NA'
119937    );
119938 
119939    xla_ae_lines_pkg.set_ccid(
119940     p_code_combination_id          => l_ccid
119941   , p_value_type_code              => l_adr_value_type_code
119942   , p_transaction_coa_id           => l_adr_transaction_coa_id
119943   , p_accounting_coa_id            => l_adr_accounting_coa_id
119944   , p_adr_code                     => 'CST_DEFAULT'
119945   , p_adr_type_code                => 'S'
119946   , p_component_type               => l_component_type
119947   , p_component_code               => l_component_code
119948   , p_component_type_code          => l_component_type_code
119949   , p_component_appl_id            => l_component_appl_id
119950   , p_amb_context_code             => l_amb_context_code
119951   , p_side                         => 'NA'
119952   );
119953 
119954 
119955    --
119956    --
119957    END IF;
119958 
119959        --
119960        -- Update the line information that should be overwritten
119961        --
119962        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
119963                                          p_header_num   => 1);
119964        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
119965 
119966        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
119967 
119968        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
119969           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
119970        END IF;
119971 
119972       --
119973       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
119974       --
119975       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
119976           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
119977       ELSE
119978           ---------------------------------------------------------------------------------------------------
119979           -- 4262811a Switch Sign
119980           ---------------------------------------------------------------------------------------------------
119981           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
119982           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
119983                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
119984           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
119985                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
119986           -- 5132302
119987           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
119988                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
119989 
119990       END IF;
119991 
119992       -- 4955764
119993       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
119994       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
119995 
119996 
119997       XLA_AE_LINES_PKG.ValidateCurrentLine;
119998       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
119999 
120000       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
120001                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
120002                ,p_balance_type_code => l_balance_type_code);
120003 
120004    END IF;
120005 
120006    -----------------------------------------------------------------------------------------
120007    -- 4262811 Multiperiod Accounting
120008    -----------------------------------------------------------------------------------------
120009      -- No MPA option is assigned.
120010 
120011 
120012 END IF;
120013 END IF;
120014 --
120015 
120016 --
120017 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
120018    trace
120019       (p_msg      => 'END of AcctLineType_217'
120020       ,p_level    => C_LEVEL_PROCEDURE
120021       ,p_module   => l_log_module);
120022 END IF;
120023 --
120024 EXCEPTION
120025   WHEN xla_exceptions_pkg.application_exception THEN
120026       RAISE;
120027   WHEN OTHERS THEN
120028        xla_exceptions_pkg.raise_message
120029            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_217');
120030 END AcctLineType_217;
120031 --
120032 
120033 ---------------------------------------
120034 --
120035 -- PRIVATE FUNCTION
120036 --         AcctLineType_218
120037 --
120038 ---------------------------------------
120039 PROCEDURE AcctLineType_218 (
120040   p_application_id        IN NUMBER
120041  ,p_event_id              IN NUMBER
120042  ,p_calculate_acctd_flag  IN VARCHAR2
120043  ,p_calculate_g_l_flag    IN VARCHAR2
120044  ,p_actual_flag           IN OUT VARCHAR2
120045  ,p_balance_type_code     OUT VARCHAR2
120046  ,p_gain_or_loss_ref      OUT VARCHAR2
120047  
120048 --Cost Management Default Account
120049  , p_source_4            IN NUMBER
120050 --DISTRIBUTION_IDENTIFIER
120051  , p_source_11            IN NUMBER
120052 --Distribution Type
120053  , p_source_12            IN VARCHAR2
120054  , p_source_12_meaning    IN VARCHAR2
120055 --Entered Currency Code
120056  , p_source_15            IN VARCHAR2
120057 --Entered Amount
120058  , p_source_18            IN NUMBER
120059 --Currency Conversion Date
120060  , p_source_19            IN DATE
120061 --Currency Conversion Rate
120062  , p_source_20            IN NUMBER
120063 --Currency Conversion Type
120064  , p_source_21            IN VARCHAR2
120065 --Accounted Amount
120066  , p_source_22            IN NUMBER
120067 --Accounting Line Type
120068  , p_source_24            IN NUMBER
120069 )
120070 IS
120071 
120072 l_component_type              VARCHAR2(80);
120073 l_component_code              VARCHAR2(30);
120074 l_component_type_code         VARCHAR2(1);
120075 l_component_appl_id           INTEGER;
120076 l_amb_context_code            VARCHAR2(30);
120077 l_entity_code                 VARCHAR2(30);
120078 l_event_class_code            VARCHAR2(30);
120079 l_ae_header_id                NUMBER;
120080 l_event_type_code             VARCHAR2(30);
120081 l_line_definition_code        VARCHAR2(30);
120082 l_line_definition_owner_code  VARCHAR2(1);
120083 --
120084 -- adr variables
120085 l_segment                     VARCHAR2(30);
120086 l_ccid                        NUMBER;
120087 l_adr_transaction_coa_id      NUMBER;
120088 l_adr_accounting_coa_id       NUMBER;
120089 l_adr_flexfield_segment_code  VARCHAR2(30);
120090 l_adr_flex_value_set_id       NUMBER;
120091 l_adr_value_type_code         VARCHAR2(30);
120092 l_adr_value_combination_id    NUMBER;
120093 l_adr_value_segment_code      VARCHAR2(30);
120094 
120095 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
120096 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
120097 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
120098 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
120099 
120100 -- 4262811 Variables ------------------------------------------------------------------------------------------
120101 l_entered_amt_idx             NUMBER;
120102 l_accted_amt_idx              NUMBER;
120103 l_acc_rev_flag                VARCHAR2(1);
120104 l_accrual_line_num            NUMBER;
120105 l_tmp_amt                     NUMBER;
120106 l_acc_rev_natural_side_code   VARCHAR2(1);
120107 
120108 l_num_entries                 NUMBER;
120109 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
120110 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
120111 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
120112 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
120113 l_recog_line_1                NUMBER;
120114 l_recog_line_2                NUMBER;
120115 
120116 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
120117 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
120118 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
120119 
120120 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
120121 
120122 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
120123 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
120124 
120125 ---------------------------------------------------------------------------------------------------------------
120126 
120127 
120128 --
120129 -- bulk performance
120130 --
120131 l_balance_type_code           VARCHAR2(1);
120132 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
120133 l_log_module                  VARCHAR2(240);
120134 
120135 --
120136 -- Upgrade strategy
120137 --
120138 l_actual_upg_option           VARCHAR2(1);
120139 l_enc_upg_option           VARCHAR2(1);
120140 
120141 --
120142 BEGIN
120143 --
120144 IF g_log_enabled THEN
120145       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_218';
120146 END IF;
120147 --
120148 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
120149 
120150       trace
120151          (p_msg      => 'BEGIN of AcctLineType_218'
120152          ,p_level    => C_LEVEL_PROCEDURE
120153          ,p_module   => l_log_module);
120154 
120155 END IF;
120156 --
120157 l_component_type             := 'AMB_JLT';
120158 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
120159 l_component_type_code        := 'S';
120160 l_component_appl_id          :=  707;
120161 l_amb_context_code           := 'DEFAULT';
120162 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
120163 l_event_class_code           := 'CON_INV_OWNR_TXFR';
120164 l_event_type_code            := 'CON_INV_OWNR_TXFR_ALL';
120165 l_line_definition_owner_code := 'S';
120166 l_line_definition_code       := 'CON_INV_OWNR_TXFR';
120167 --
120168 l_balance_type_code          := 'A';
120169 l_segment                     := NULL;
120170 l_ccid                        := NULL;
120171 l_adr_transaction_coa_id      := NULL;
120172 l_adr_accounting_coa_id       := NULL;
120173 l_adr_flexfield_segment_code  := NULL;
120174 l_adr_flex_value_set_id       := NULL;
120175 l_adr_value_type_code         := NULL;
120176 l_adr_value_combination_id    := NULL;
120177 l_adr_value_segment_code      := NULL;
120178 
120179 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
120180 l_bflow_class_code           := '';    -- 4219869 Business Flow
120181 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
120182 l_budgetary_control_flag     := 'N';
120183 
120184 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
120185 l_bflow_applied_to_amt       := NULL; -- 5132302
120186 l_entered_amt_idx            := NULL;          -- 4262811
120187 l_accted_amt_idx             := NULL;          -- 4262811
120188 l_acc_rev_flag               := NULL;          -- 4262811
120189 l_accrual_line_num           := NULL;          -- 4262811
120190 l_tmp_amt                    := NULL;          -- 4262811
120191 --
120192  
120193 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
120194     l_balance_type_code <> 'B' THEN
120195 IF NVL(p_source_24,9E125) =  6
120196  THEN 
120197 
120198    --
120199    XLA_AE_LINES_PKG.SetNewLine;
120200 
120201    p_balance_type_code          := l_balance_type_code;
120202    -- set the flag so later we will know whether the gain loss line needs to be created
120203    
120204    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
120205      p_actual_flag :='A';
120206    END IF;
120207 
120208    --
120209    -- bulk performance
120210    --
120211    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
120212                                       p_header_num   => 0); -- 4262811
120213    --
120214    -- set accounting line options
120215    --
120216    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
120217            p_natural_side_code          => 'D'
120218          , p_gain_or_loss_flag          => 'N'
120219          , p_gl_transfer_mode_code      => 'S'
120220          , p_acct_entry_type_code       => 'A'
120221          , p_switch_side_flag           => 'Y'
120222          , p_merge_duplicate_code       => 'N'
120223          );
120224    --
120225    l_acc_rev_natural_side_code := 'C';  -- 4262811
120226    -- 
120227    --
120228    -- set accounting line type info
120229    --
120230    xla_ae_lines_pkg.SetAcctLineType
120231       (p_component_type             => l_component_type
120232       ,p_event_type_code            => l_event_type_code
120233       ,p_line_definition_owner_code => l_line_definition_owner_code
120234       ,p_line_definition_code       => l_line_definition_code
120235       ,p_accounting_line_code       => l_component_code
120236       ,p_accounting_line_type_code  => l_component_type_code
120237       ,p_accounting_line_appl_id    => l_component_appl_id
120238       ,p_amb_context_code           => l_amb_context_code
120239       ,p_entity_code                => l_entity_code
120240       ,p_event_class_code           => l_event_class_code);
120241    --
120242    -- set accounting class
120243    --
120244    xla_ae_lines_pkg.SetAcctClass(
120245            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
120246          , p_ae_header_id           => l_ae_header_id
120247          );
120248 
120249    --
120250    -- set rounding class
120251    --
120252    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
120253                       'PURCHASE_PRICE_VARIANCE';
120254 
120255    --
120256    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
120257    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
120258    --
120259    -- bulk performance
120260    --
120261    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
120262 
120263    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
120264       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
120265 
120266    -- 4955764
120267    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
120268       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
120269 
120270    -- 4458381 Public Sector Enh
120271    
120272    --
120273    -- set accounting attributes for the line type
120274    --
120275    l_entered_amt_idx := 3;
120276    l_accted_amt_idx  := 8;
120277    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
120278    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
120279    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
120280    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
120281    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
120282    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
120283    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
120284    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
120285    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
120286    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
120287    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
120288    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
120289    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
120290    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
120291    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
120292    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
120293    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
120294 
120295    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
120296    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
120297 
120298    ---------------------------------------------------------------------------------------------------------------
120299    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
120300    ---------------------------------------------------------------------------------------------------------------
120301    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
120302 
120303    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
120304    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
120305 
120306    IF xla_accounting_cache_pkg.GetValueChar
120307          (p_source_code         => 'LEDGER_CATEGORY_CODE'
120308          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
120309    AND l_bflow_method_code = 'PRIOR_ENTRY'
120310 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
120311    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
120312          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
120313        )
120314    THEN
120315          xla_ae_lines_pkg.BflowUpgEntry
120316            (p_business_method_code    => l_bflow_method_code
120317            ,p_business_class_code     => l_bflow_class_code
120318            ,p_balance_type            => l_balance_type_code);
120319    ELSE
120320       NULL;
120321 -- No business flow processing for business flow method of NONE.
120322    END IF;
120323 
120324    --
120325    -- call analytical criteria
120326    --
120327    
120328    --
120329    -- call description
120330    --
120331    -- No description or it is inherited.
120332    --
120333    -- call ADRs
120334    -- Bug 4922099
120335    --
120336    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
120337         (NVL(l_actual_upg_option, 'N') = 'O') OR
120338         (NVL(l_enc_upg_option, 'N') = 'O')
120339       )
120340    THEN
120341    NULL;
120342    --
120343    --
120344    
120345   l_ccid := AcctDerRule_4(
120346            p_application_id           => p_application_id
120347          , p_ae_header_id             => l_ae_header_id 
120348 , p_source_4 => p_source_4
120349          , x_transaction_coa_id       => l_adr_transaction_coa_id
120350          , x_accounting_coa_id        => l_adr_accounting_coa_id
120351          , x_value_type_code          => l_adr_value_type_code
120352          , p_side                     => 'NA'
120353    );
120354 
120355    xla_ae_lines_pkg.set_ccid(
120356     p_code_combination_id          => l_ccid
120357   , p_value_type_code              => l_adr_value_type_code
120358   , p_transaction_coa_id           => l_adr_transaction_coa_id
120359   , p_accounting_coa_id            => l_adr_accounting_coa_id
120360   , p_adr_code                     => 'CST_DEFAULT'
120361   , p_adr_type_code                => 'S'
120362   , p_component_type               => l_component_type
120363   , p_component_code               => l_component_code
120364   , p_component_type_code          => l_component_type_code
120365   , p_component_appl_id            => l_component_appl_id
120366   , p_amb_context_code             => l_amb_context_code
120367   , p_side                         => 'NA'
120368   );
120369 
120370 
120371    --
120372    --
120373    END IF;
120374    --
120375    -- Bug 4922099
120376    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
120377           (NVL(l_enc_upg_option, 'N') = 'O')
120378         ) AND
120379         (l_bflow_method_code = 'PRIOR_ENTRY')
120380       )
120381    THEN
120382       IF
120383       --
120384       1 = 2
120385       --
120386       THEN
120387       xla_accounting_err_pkg.build_message
120388                                     (p_appli_s_name            => 'XLA'
120389                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
120390                                     ,p_token_1                 => 'LINE_NUMBER'
120391                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
120392                                     ,p_token_2                 => 'LINE_TYPE_NAME'
120393                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
120394                                                                              l_component_type
120395                                                                             ,l_component_code
120396                                                                             ,l_component_type_code
120397                                                                             ,l_component_appl_id
120398                                                                             ,l_amb_context_code
120399                                                                             ,l_entity_code
120400                                                                             ,l_event_class_code
120401                                                                            )
120402                                     ,p_token_3                 => 'OWNER'
120403                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
120404                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
120405                                                                           ,p_lookup_code    => l_component_type_code
120406                                                                          )
120407                                     ,p_token_4                 => 'PRODUCT_NAME'
120408                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
120409                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
120410                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
120411                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
120412                                     ,p_ae_header_id            =>  NULL
120413                                        );
120414 
120415         IF (C_LEVEL_ERROR>= g_log_level) THEN
120416                  trace
120417                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
120418                       ,p_level    => C_LEVEL_ERROR
120419                       ,p_module   => l_log_module);
120420         END IF;
120421       END IF;
120422    END IF;
120423    --
120424    --
120425    ------------------------------------------------------------------------------------------------
120426    -- 4219869 Business Flow
120427    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
120428    -- Prior Entry.  Currently, the following code is always generated.
120429    ------------------------------------------------------------------------------------------------
120430    XLA_AE_LINES_PKG.ValidateCurrentLine;
120431 
120432    ------------------------------------------------------------------------------------
120433    -- 4219869 Business Flow
120434    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
120435    ------------------------------------------------------------------------------------
120436    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
120437 
120438    ----------------------------------------------------------------------------------
120439    -- 4219869 Business Flow
120440    -- Update journal entry status -- Need to generate this within IF <condition>
120441    ----------------------------------------------------------------------------------
120442    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
120443          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
120444          ,p_balance_type_code => l_balance_type_code
120445          );
120446 
120447    -------------------------------------------------------------------------------------------
120448    -- 4262811 - Generate the Accrual Reversal lines
120449    -------------------------------------------------------------------------------------------
120450    BEGIN
120451       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
120452                               (g_array_event(p_event_id).array_value_num('header_index'));
120453       IF l_acc_rev_flag IS NULL THEN
120454          l_acc_rev_flag := 'N';
120455       END IF;
120456    EXCEPTION
120457       WHEN OTHERS THEN
120458          l_acc_rev_flag := 'N';
120459    END;
120460    --
120461    IF (l_acc_rev_flag = 'Y') THEN
120462 
120463        -- 4645092  ------------------------------------------------------------------------------
120464        -- To allow MPA report to determine if it should generate report process
120465        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
120466        ------------------------------------------------------------------------------------------
120467 
120468        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
120469        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
120470    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
120471    -- call ADRs
120472    -- Bug 4922099
120473    --
120474    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
120475         (NVL(l_actual_upg_option, 'N') = 'O') OR
120476         (NVL(l_enc_upg_option, 'N') = 'O')
120477       )
120478    THEN
120479    NULL;
120480    --
120481    --
120482    
120483   l_ccid := AcctDerRule_4(
120484            p_application_id           => p_application_id
120485          , p_ae_header_id             => l_ae_header_id 
120486 , p_source_4 => p_source_4
120487          , x_transaction_coa_id       => l_adr_transaction_coa_id
120488          , x_accounting_coa_id        => l_adr_accounting_coa_id
120489          , x_value_type_code          => l_adr_value_type_code
120490          , p_side                     => 'NA'
120491    );
120492 
120493    xla_ae_lines_pkg.set_ccid(
120494     p_code_combination_id          => l_ccid
120495   , p_value_type_code              => l_adr_value_type_code
120496   , p_transaction_coa_id           => l_adr_transaction_coa_id
120497   , p_accounting_coa_id            => l_adr_accounting_coa_id
120498   , p_adr_code                     => 'CST_DEFAULT'
120499   , p_adr_type_code                => 'S'
120500   , p_component_type               => l_component_type
120501   , p_component_code               => l_component_code
120502   , p_component_type_code          => l_component_type_code
120503   , p_component_appl_id            => l_component_appl_id
120504   , p_amb_context_code             => l_amb_context_code
120505   , p_side                         => 'NA'
120506   );
120507 
120508 
120509    --
120510    --
120511    END IF;
120512 
120513        --
120514        -- Update the line information that should be overwritten
120515        --
120516        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
120517                                          p_header_num   => 1);
120518        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
120519 
120520        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
120521 
120522        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
120523           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
120524        END IF;
120525 
120526       --
120527       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
120528       --
120529       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
120530           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
120531       ELSE
120532           ---------------------------------------------------------------------------------------------------
120533           -- 4262811a Switch Sign
120534           ---------------------------------------------------------------------------------------------------
120535           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
120536           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
120537                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
120538           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
120539                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
120540           -- 5132302
120541           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
120542                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
120543 
120544       END IF;
120545 
120546       -- 4955764
120547       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
120548       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
120549 
120550 
120551       XLA_AE_LINES_PKG.ValidateCurrentLine;
120552       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
120553 
120554       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
120555                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
120556                ,p_balance_type_code => l_balance_type_code);
120557 
120558    END IF;
120559 
120560    -----------------------------------------------------------------------------------------
120561    -- 4262811 Multiperiod Accounting
120562    -----------------------------------------------------------------------------------------
120563      -- No MPA option is assigned.
120564 
120565 
120566 END IF;
120567 END IF;
120568 --
120569 
120570 --
120571 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
120572    trace
120573       (p_msg      => 'END of AcctLineType_218'
120574       ,p_level    => C_LEVEL_PROCEDURE
120575       ,p_module   => l_log_module);
120576 END IF;
120577 --
120578 EXCEPTION
120579   WHEN xla_exceptions_pkg.application_exception THEN
120580       RAISE;
120581   WHEN OTHERS THEN
120582        xla_exceptions_pkg.raise_message
120583            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_218');
120584 END AcctLineType_218;
120585 --
120586 
120587 ---------------------------------------
120588 --
120589 -- PRIVATE FUNCTION
120590 --         AcctLineType_219
120591 --
120592 ---------------------------------------
120593 PROCEDURE AcctLineType_219 (
120594   p_application_id        IN NUMBER
120595  ,p_event_id              IN NUMBER
120596  ,p_calculate_acctd_flag  IN VARCHAR2
120597  ,p_calculate_g_l_flag    IN VARCHAR2
120598  ,p_actual_flag           IN OUT VARCHAR2
120599  ,p_balance_type_code     OUT VARCHAR2
120600  ,p_gain_or_loss_ref      OUT VARCHAR2
120601  
120602 --Cost Management Default Account
120603  , p_source_4            IN NUMBER
120604 --DISTRIBUTION_IDENTIFIER
120605  , p_source_11            IN NUMBER
120606 --Distribution Type
120607  , p_source_12            IN VARCHAR2
120608  , p_source_12_meaning    IN VARCHAR2
120609 --Entered Currency Code
120610  , p_source_15            IN VARCHAR2
120611 --Entered Amount
120612  , p_source_18            IN NUMBER
120613 --Currency Conversion Date
120614  , p_source_19            IN DATE
120615 --Currency Conversion Rate
120616  , p_source_20            IN NUMBER
120617 --Currency Conversion Type
120618  , p_source_21            IN VARCHAR2
120619 --Accounted Amount
120620  , p_source_22            IN NUMBER
120621 --Accounting Line Type
120622  , p_source_24            IN NUMBER
120623 )
120624 IS
120625 
120626 l_component_type              VARCHAR2(80);
120627 l_component_code              VARCHAR2(30);
120628 l_component_type_code         VARCHAR2(1);
120629 l_component_appl_id           INTEGER;
120630 l_amb_context_code            VARCHAR2(30);
120631 l_entity_code                 VARCHAR2(30);
120632 l_event_class_code            VARCHAR2(30);
120633 l_ae_header_id                NUMBER;
120634 l_event_type_code             VARCHAR2(30);
120635 l_line_definition_code        VARCHAR2(30);
120636 l_line_definition_owner_code  VARCHAR2(1);
120637 --
120638 -- adr variables
120639 l_segment                     VARCHAR2(30);
120640 l_ccid                        NUMBER;
120641 l_adr_transaction_coa_id      NUMBER;
120642 l_adr_accounting_coa_id       NUMBER;
120643 l_adr_flexfield_segment_code  VARCHAR2(30);
120644 l_adr_flex_value_set_id       NUMBER;
120645 l_adr_value_type_code         VARCHAR2(30);
120646 l_adr_value_combination_id    NUMBER;
120647 l_adr_value_segment_code      VARCHAR2(30);
120648 
120649 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
120650 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
120651 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
120652 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
120653 
120654 -- 4262811 Variables ------------------------------------------------------------------------------------------
120655 l_entered_amt_idx             NUMBER;
120656 l_accted_amt_idx              NUMBER;
120657 l_acc_rev_flag                VARCHAR2(1);
120658 l_accrual_line_num            NUMBER;
120659 l_tmp_amt                     NUMBER;
120660 l_acc_rev_natural_side_code   VARCHAR2(1);
120661 
120662 l_num_entries                 NUMBER;
120663 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
120664 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
120665 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
120666 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
120667 l_recog_line_1                NUMBER;
120668 l_recog_line_2                NUMBER;
120669 
120670 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
120671 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
120672 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
120673 
120674 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
120675 
120676 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
120677 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
120678 
120679 ---------------------------------------------------------------------------------------------------------------
120680 
120681 
120682 --
120683 -- bulk performance
120684 --
120685 l_balance_type_code           VARCHAR2(1);
120686 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
120687 l_log_module                  VARCHAR2(240);
120688 
120689 --
120690 -- Upgrade strategy
120691 --
120692 l_actual_upg_option           VARCHAR2(1);
120693 l_enc_upg_option           VARCHAR2(1);
120694 
120695 --
120696 BEGIN
120697 --
120698 IF g_log_enabled THEN
120699       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_219';
120700 END IF;
120701 --
120702 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
120703 
120704       trace
120705          (p_msg      => 'BEGIN of AcctLineType_219'
120706          ,p_level    => C_LEVEL_PROCEDURE
120707          ,p_module   => l_log_module);
120708 
120709 END IF;
120710 --
120711 l_component_type             := 'AMB_JLT';
120712 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
120713 l_component_type_code        := 'S';
120714 l_component_appl_id          :=  707;
120715 l_amb_context_code           := 'DEFAULT';
120716 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
120717 l_event_class_code           := 'USER_DEFINE';
120718 l_event_type_code            := 'UDIR_INTERORG_RCPT_TP';
120719 l_line_definition_owner_code := 'S';
120720 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_TP';
120721 --
120722 l_balance_type_code          := 'A';
120723 l_segment                     := NULL;
120724 l_ccid                        := NULL;
120725 l_adr_transaction_coa_id      := NULL;
120726 l_adr_accounting_coa_id       := NULL;
120727 l_adr_flexfield_segment_code  := NULL;
120728 l_adr_flex_value_set_id       := NULL;
120729 l_adr_value_type_code         := NULL;
120730 l_adr_value_combination_id    := NULL;
120731 l_adr_value_segment_code      := NULL;
120732 
120733 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
120734 l_bflow_class_code           := '';    -- 4219869 Business Flow
120735 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
120736 l_budgetary_control_flag     := 'N';
120737 
120738 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
120739 l_bflow_applied_to_amt       := NULL; -- 5132302
120740 l_entered_amt_idx            := NULL;          -- 4262811
120741 l_accted_amt_idx             := NULL;          -- 4262811
120742 l_acc_rev_flag               := NULL;          -- 4262811
120743 l_accrual_line_num           := NULL;          -- 4262811
120744 l_tmp_amt                    := NULL;          -- 4262811
120745 --
120746  
120747 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
120748     l_balance_type_code <> 'B' THEN
120749 IF NVL(p_source_24,9E125) =  6
120750  THEN 
120751 
120752    --
120753    XLA_AE_LINES_PKG.SetNewLine;
120754 
120755    p_balance_type_code          := l_balance_type_code;
120756    -- set the flag so later we will know whether the gain loss line needs to be created
120757    
120758    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
120759      p_actual_flag :='A';
120760    END IF;
120761 
120762    --
120763    -- bulk performance
120764    --
120765    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
120766                                       p_header_num   => 0); -- 4262811
120767    --
120768    -- set accounting line options
120769    --
120770    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
120771            p_natural_side_code          => 'D'
120772          , p_gain_or_loss_flag          => 'N'
120773          , p_gl_transfer_mode_code      => 'S'
120774          , p_acct_entry_type_code       => 'A'
120775          , p_switch_side_flag           => 'Y'
120776          , p_merge_duplicate_code       => 'N'
120777          );
120778    --
120779    l_acc_rev_natural_side_code := 'C';  -- 4262811
120780    -- 
120781    --
120782    -- set accounting line type info
120783    --
120784    xla_ae_lines_pkg.SetAcctLineType
120785       (p_component_type             => l_component_type
120786       ,p_event_type_code            => l_event_type_code
120787       ,p_line_definition_owner_code => l_line_definition_owner_code
120788       ,p_line_definition_code       => l_line_definition_code
120789       ,p_accounting_line_code       => l_component_code
120790       ,p_accounting_line_type_code  => l_component_type_code
120791       ,p_accounting_line_appl_id    => l_component_appl_id
120792       ,p_amb_context_code           => l_amb_context_code
120793       ,p_entity_code                => l_entity_code
120794       ,p_event_class_code           => l_event_class_code);
120795    --
120796    -- set accounting class
120797    --
120798    xla_ae_lines_pkg.SetAcctClass(
120799            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
120800          , p_ae_header_id           => l_ae_header_id
120801          );
120802 
120803    --
120804    -- set rounding class
120805    --
120806    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
120807                       'PURCHASE_PRICE_VARIANCE';
120808 
120809    --
120810    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
120811    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
120812    --
120813    -- bulk performance
120814    --
120815    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
120816 
120817    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
120818       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
120819 
120820    -- 4955764
120821    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
120822       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
120823 
120824    -- 4458381 Public Sector Enh
120825    
120826    --
120827    -- set accounting attributes for the line type
120828    --
120829    l_entered_amt_idx := 3;
120830    l_accted_amt_idx  := 8;
120831    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
120832    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
120833    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
120834    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
120835    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
120836    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
120837    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
120838    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
120839    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
120840    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
120841    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
120842    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
120843    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
120844    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
120845    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
120846    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
120847    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
120848 
120849    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
120850    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
120851 
120852    ---------------------------------------------------------------------------------------------------------------
120853    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
120854    ---------------------------------------------------------------------------------------------------------------
120855    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
120856 
120857    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
120858    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
120859 
120860    IF xla_accounting_cache_pkg.GetValueChar
120861          (p_source_code         => 'LEDGER_CATEGORY_CODE'
120862          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
120863    AND l_bflow_method_code = 'PRIOR_ENTRY'
120864 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
120865    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
120866          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
120867        )
120868    THEN
120869          xla_ae_lines_pkg.BflowUpgEntry
120870            (p_business_method_code    => l_bflow_method_code
120871            ,p_business_class_code     => l_bflow_class_code
120872            ,p_balance_type            => l_balance_type_code);
120873    ELSE
120874       NULL;
120875 -- No business flow processing for business flow method of NONE.
120876    END IF;
120877 
120878    --
120879    -- call analytical criteria
120880    --
120881    
120882    --
120883    -- call description
120884    --
120885    -- No description or it is inherited.
120886    --
120887    -- call ADRs
120888    -- Bug 4922099
120889    --
120890    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
120891         (NVL(l_actual_upg_option, 'N') = 'O') OR
120892         (NVL(l_enc_upg_option, 'N') = 'O')
120893       )
120894    THEN
120895    NULL;
120896    --
120897    --
120898    
120899   l_ccid := AcctDerRule_4(
120900            p_application_id           => p_application_id
120901          , p_ae_header_id             => l_ae_header_id 
120902 , p_source_4 => p_source_4
120903          , x_transaction_coa_id       => l_adr_transaction_coa_id
120904          , x_accounting_coa_id        => l_adr_accounting_coa_id
120905          , x_value_type_code          => l_adr_value_type_code
120906          , p_side                     => 'NA'
120907    );
120908 
120909    xla_ae_lines_pkg.set_ccid(
120910     p_code_combination_id          => l_ccid
120911   , p_value_type_code              => l_adr_value_type_code
120912   , p_transaction_coa_id           => l_adr_transaction_coa_id
120913   , p_accounting_coa_id            => l_adr_accounting_coa_id
120914   , p_adr_code                     => 'CST_DEFAULT'
120915   , p_adr_type_code                => 'S'
120916   , p_component_type               => l_component_type
120917   , p_component_code               => l_component_code
120918   , p_component_type_code          => l_component_type_code
120919   , p_component_appl_id            => l_component_appl_id
120920   , p_amb_context_code             => l_amb_context_code
120921   , p_side                         => 'NA'
120922   );
120923 
120924 
120925    --
120926    --
120927    END IF;
120928    --
120929    -- Bug 4922099
120930    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
120931           (NVL(l_enc_upg_option, 'N') = 'O')
120932         ) AND
120933         (l_bflow_method_code = 'PRIOR_ENTRY')
120934       )
120935    THEN
120936       IF
120937       --
120938       1 = 2
120939       --
120940       THEN
120941       xla_accounting_err_pkg.build_message
120942                                     (p_appli_s_name            => 'XLA'
120943                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
120944                                     ,p_token_1                 => 'LINE_NUMBER'
120945                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
120946                                     ,p_token_2                 => 'LINE_TYPE_NAME'
120947                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
120948                                                                              l_component_type
120949                                                                             ,l_component_code
120950                                                                             ,l_component_type_code
120951                                                                             ,l_component_appl_id
120952                                                                             ,l_amb_context_code
120953                                                                             ,l_entity_code
120954                                                                             ,l_event_class_code
120955                                                                            )
120956                                     ,p_token_3                 => 'OWNER'
120957                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
120958                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
120959                                                                           ,p_lookup_code    => l_component_type_code
120960                                                                          )
120961                                     ,p_token_4                 => 'PRODUCT_NAME'
120962                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
120963                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
120964                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
120965                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
120966                                     ,p_ae_header_id            =>  NULL
120967                                        );
120968 
120969         IF (C_LEVEL_ERROR>= g_log_level) THEN
120970                  trace
120971                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
120972                       ,p_level    => C_LEVEL_ERROR
120973                       ,p_module   => l_log_module);
120974         END IF;
120975       END IF;
120976    END IF;
120977    --
120978    --
120979    ------------------------------------------------------------------------------------------------
120980    -- 4219869 Business Flow
120981    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
120982    -- Prior Entry.  Currently, the following code is always generated.
120983    ------------------------------------------------------------------------------------------------
120984    XLA_AE_LINES_PKG.ValidateCurrentLine;
120985 
120986    ------------------------------------------------------------------------------------
120987    -- 4219869 Business Flow
120988    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
120989    ------------------------------------------------------------------------------------
120990    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
120991 
120992    ----------------------------------------------------------------------------------
120993    -- 4219869 Business Flow
120994    -- Update journal entry status -- Need to generate this within IF <condition>
120995    ----------------------------------------------------------------------------------
120996    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
120997          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
120998          ,p_balance_type_code => l_balance_type_code
120999          );
121000 
121001    -------------------------------------------------------------------------------------------
121002    -- 4262811 - Generate the Accrual Reversal lines
121003    -------------------------------------------------------------------------------------------
121004    BEGIN
121005       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
121006                               (g_array_event(p_event_id).array_value_num('header_index'));
121007       IF l_acc_rev_flag IS NULL THEN
121008          l_acc_rev_flag := 'N';
121009       END IF;
121010    EXCEPTION
121011       WHEN OTHERS THEN
121012          l_acc_rev_flag := 'N';
121013    END;
121014    --
121015    IF (l_acc_rev_flag = 'Y') THEN
121016 
121017        -- 4645092  ------------------------------------------------------------------------------
121018        -- To allow MPA report to determine if it should generate report process
121019        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
121020        ------------------------------------------------------------------------------------------
121021 
121022        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
121023        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
121024    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
121025    -- call ADRs
121026    -- Bug 4922099
121027    --
121028    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
121029         (NVL(l_actual_upg_option, 'N') = 'O') OR
121030         (NVL(l_enc_upg_option, 'N') = 'O')
121031       )
121032    THEN
121033    NULL;
121034    --
121035    --
121036    
121037   l_ccid := AcctDerRule_4(
121038            p_application_id           => p_application_id
121039          , p_ae_header_id             => l_ae_header_id 
121040 , p_source_4 => p_source_4
121041          , x_transaction_coa_id       => l_adr_transaction_coa_id
121042          , x_accounting_coa_id        => l_adr_accounting_coa_id
121043          , x_value_type_code          => l_adr_value_type_code
121044          , p_side                     => 'NA'
121045    );
121046 
121047    xla_ae_lines_pkg.set_ccid(
121048     p_code_combination_id          => l_ccid
121049   , p_value_type_code              => l_adr_value_type_code
121050   , p_transaction_coa_id           => l_adr_transaction_coa_id
121051   , p_accounting_coa_id            => l_adr_accounting_coa_id
121052   , p_adr_code                     => 'CST_DEFAULT'
121053   , p_adr_type_code                => 'S'
121054   , p_component_type               => l_component_type
121055   , p_component_code               => l_component_code
121056   , p_component_type_code          => l_component_type_code
121057   , p_component_appl_id            => l_component_appl_id
121058   , p_amb_context_code             => l_amb_context_code
121059   , p_side                         => 'NA'
121060   );
121061 
121062 
121063    --
121064    --
121065    END IF;
121066 
121067        --
121068        -- Update the line information that should be overwritten
121069        --
121070        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
121071                                          p_header_num   => 1);
121072        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
121073 
121074        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
121075 
121076        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
121077           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
121078        END IF;
121079 
121080       --
121081       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
121082       --
121083       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
121084           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
121085       ELSE
121086           ---------------------------------------------------------------------------------------------------
121087           -- 4262811a Switch Sign
121088           ---------------------------------------------------------------------------------------------------
121089           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
121090           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
121091                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
121092           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
121093                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
121094           -- 5132302
121095           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
121096                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
121097 
121098       END IF;
121099 
121100       -- 4955764
121101       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
121102       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
121103 
121104 
121105       XLA_AE_LINES_PKG.ValidateCurrentLine;
121106       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
121107 
121108       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
121109                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
121110                ,p_balance_type_code => l_balance_type_code);
121111 
121112    END IF;
121113 
121114    -----------------------------------------------------------------------------------------
121115    -- 4262811 Multiperiod Accounting
121116    -----------------------------------------------------------------------------------------
121117      -- No MPA option is assigned.
121118 
121119 
121120 END IF;
121121 END IF;
121122 --
121123 
121124 --
121125 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
121126    trace
121127       (p_msg      => 'END of AcctLineType_219'
121128       ,p_level    => C_LEVEL_PROCEDURE
121129       ,p_module   => l_log_module);
121130 END IF;
121131 --
121132 EXCEPTION
121133   WHEN xla_exceptions_pkg.application_exception THEN
121134       RAISE;
121135   WHEN OTHERS THEN
121136        xla_exceptions_pkg.raise_message
121137            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_219');
121138 END AcctLineType_219;
121139 --
121140 
121141 ---------------------------------------
121142 --
121143 -- PRIVATE FUNCTION
121144 --         AcctLineType_220
121145 --
121146 ---------------------------------------
121147 PROCEDURE AcctLineType_220 (
121148   p_application_id        IN NUMBER
121149  ,p_event_id              IN NUMBER
121150  ,p_calculate_acctd_flag  IN VARCHAR2
121151  ,p_calculate_g_l_flag    IN VARCHAR2
121152  ,p_actual_flag           IN OUT VARCHAR2
121153  ,p_balance_type_code     OUT VARCHAR2
121154  ,p_gain_or_loss_ref      OUT VARCHAR2
121155  
121156 --Cost Management Default Account
121157  , p_source_4            IN NUMBER
121158 --DISTRIBUTION_IDENTIFIER
121159  , p_source_11            IN NUMBER
121160 --Distribution Type
121161  , p_source_12            IN VARCHAR2
121162  , p_source_12_meaning    IN VARCHAR2
121163 --Entered Currency Code
121164  , p_source_15            IN VARCHAR2
121165 --Entered Amount
121166  , p_source_18            IN NUMBER
121167 --Currency Conversion Date
121168  , p_source_19            IN DATE
121169 --Currency Conversion Rate
121170  , p_source_20            IN NUMBER
121171 --Currency Conversion Type
121172  , p_source_21            IN VARCHAR2
121173 --Accounted Amount
121174  , p_source_22            IN NUMBER
121175 --Accounting Line Type
121176  , p_source_24            IN NUMBER
121177 )
121178 IS
121179 
121180 l_component_type              VARCHAR2(80);
121181 l_component_code              VARCHAR2(30);
121182 l_component_type_code         VARCHAR2(1);
121183 l_component_appl_id           INTEGER;
121184 l_amb_context_code            VARCHAR2(30);
121185 l_entity_code                 VARCHAR2(30);
121186 l_event_class_code            VARCHAR2(30);
121187 l_ae_header_id                NUMBER;
121188 l_event_type_code             VARCHAR2(30);
121189 l_line_definition_code        VARCHAR2(30);
121190 l_line_definition_owner_code  VARCHAR2(1);
121191 --
121192 -- adr variables
121193 l_segment                     VARCHAR2(30);
121194 l_ccid                        NUMBER;
121195 l_adr_transaction_coa_id      NUMBER;
121196 l_adr_accounting_coa_id       NUMBER;
121197 l_adr_flexfield_segment_code  VARCHAR2(30);
121198 l_adr_flex_value_set_id       NUMBER;
121199 l_adr_value_type_code         VARCHAR2(30);
121200 l_adr_value_combination_id    NUMBER;
121201 l_adr_value_segment_code      VARCHAR2(30);
121202 
121203 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
121204 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
121205 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
121206 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
121207 
121208 -- 4262811 Variables ------------------------------------------------------------------------------------------
121209 l_entered_amt_idx             NUMBER;
121210 l_accted_amt_idx              NUMBER;
121211 l_acc_rev_flag                VARCHAR2(1);
121212 l_accrual_line_num            NUMBER;
121213 l_tmp_amt                     NUMBER;
121214 l_acc_rev_natural_side_code   VARCHAR2(1);
121215 
121216 l_num_entries                 NUMBER;
121217 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
121218 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
121219 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
121220 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
121221 l_recog_line_1                NUMBER;
121222 l_recog_line_2                NUMBER;
121223 
121224 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
121225 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
121226 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
121227 
121228 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
121229 
121230 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
121231 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
121232 
121233 ---------------------------------------------------------------------------------------------------------------
121234 
121235 
121236 --
121237 -- bulk performance
121238 --
121239 l_balance_type_code           VARCHAR2(1);
121240 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
121241 l_log_module                  VARCHAR2(240);
121242 
121243 --
121244 -- Upgrade strategy
121245 --
121246 l_actual_upg_option           VARCHAR2(1);
121247 l_enc_upg_option           VARCHAR2(1);
121248 
121249 --
121250 BEGIN
121251 --
121252 IF g_log_enabled THEN
121253       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_220';
121254 END IF;
121255 --
121256 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
121257 
121258       trace
121259          (p_msg      => 'BEGIN of AcctLineType_220'
121260          ,p_level    => C_LEVEL_PROCEDURE
121261          ,p_module   => l_log_module);
121262 
121263 END IF;
121264 --
121265 l_component_type             := 'AMB_JLT';
121266 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
121267 l_component_type_code        := 'S';
121268 l_component_appl_id          :=  707;
121269 l_amb_context_code           := 'DEFAULT';
121270 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
121271 l_event_class_code           := 'USER_DEFINE';
121272 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
121273 l_line_definition_owner_code := 'S';
121274 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_TP';
121275 --
121276 l_balance_type_code          := 'A';
121277 l_segment                     := NULL;
121278 l_ccid                        := NULL;
121279 l_adr_transaction_coa_id      := NULL;
121280 l_adr_accounting_coa_id       := NULL;
121281 l_adr_flexfield_segment_code  := NULL;
121282 l_adr_flex_value_set_id       := NULL;
121283 l_adr_value_type_code         := NULL;
121284 l_adr_value_combination_id    := NULL;
121285 l_adr_value_segment_code      := NULL;
121286 
121287 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
121288 l_bflow_class_code           := '';    -- 4219869 Business Flow
121289 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
121290 l_budgetary_control_flag     := 'N';
121291 
121292 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
121293 l_bflow_applied_to_amt       := NULL; -- 5132302
121294 l_entered_amt_idx            := NULL;          -- 4262811
121295 l_accted_amt_idx             := NULL;          -- 4262811
121296 l_acc_rev_flag               := NULL;          -- 4262811
121297 l_accrual_line_num           := NULL;          -- 4262811
121298 l_tmp_amt                    := NULL;          -- 4262811
121299 --
121300  
121301 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
121302     l_balance_type_code <> 'B' THEN
121303 IF NVL(p_source_24,9E125) =  6
121304  THEN 
121305 
121306    --
121307    XLA_AE_LINES_PKG.SetNewLine;
121308 
121309    p_balance_type_code          := l_balance_type_code;
121310    -- set the flag so later we will know whether the gain loss line needs to be created
121311    
121312    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
121313      p_actual_flag :='A';
121314    END IF;
121315 
121316    --
121317    -- bulk performance
121318    --
121319    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
121320                                       p_header_num   => 0); -- 4262811
121321    --
121322    -- set accounting line options
121323    --
121324    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
121325            p_natural_side_code          => 'D'
121326          , p_gain_or_loss_flag          => 'N'
121327          , p_gl_transfer_mode_code      => 'S'
121328          , p_acct_entry_type_code       => 'A'
121329          , p_switch_side_flag           => 'Y'
121330          , p_merge_duplicate_code       => 'N'
121331          );
121332    --
121333    l_acc_rev_natural_side_code := 'C';  -- 4262811
121334    -- 
121335    --
121336    -- set accounting line type info
121337    --
121338    xla_ae_lines_pkg.SetAcctLineType
121339       (p_component_type             => l_component_type
121340       ,p_event_type_code            => l_event_type_code
121341       ,p_line_definition_owner_code => l_line_definition_owner_code
121342       ,p_line_definition_code       => l_line_definition_code
121343       ,p_accounting_line_code       => l_component_code
121344       ,p_accounting_line_type_code  => l_component_type_code
121345       ,p_accounting_line_appl_id    => l_component_appl_id
121346       ,p_amb_context_code           => l_amb_context_code
121347       ,p_entity_code                => l_entity_code
121348       ,p_event_class_code           => l_event_class_code);
121349    --
121350    -- set accounting class
121351    --
121352    xla_ae_lines_pkg.SetAcctClass(
121353            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
121354          , p_ae_header_id           => l_ae_header_id
121355          );
121356 
121357    --
121358    -- set rounding class
121359    --
121360    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
121361                       'PURCHASE_PRICE_VARIANCE';
121362 
121363    --
121364    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
121365    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
121366    --
121367    -- bulk performance
121368    --
121369    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
121370 
121371    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
121372       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
121373 
121374    -- 4955764
121375    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
121376       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
121377 
121378    -- 4458381 Public Sector Enh
121379    
121380    --
121381    -- set accounting attributes for the line type
121382    --
121383    l_entered_amt_idx := 3;
121384    l_accted_amt_idx  := 8;
121385    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
121386    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
121387    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
121388    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
121389    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
121390    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
121391    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
121392    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
121393    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
121394    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
121395    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
121396    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
121397    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
121398    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
121399    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
121400    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
121401    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
121402 
121403    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
121404    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
121405 
121406    ---------------------------------------------------------------------------------------------------------------
121407    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
121408    ---------------------------------------------------------------------------------------------------------------
121409    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
121410 
121411    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
121412    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
121413 
121414    IF xla_accounting_cache_pkg.GetValueChar
121415          (p_source_code         => 'LEDGER_CATEGORY_CODE'
121416          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
121417    AND l_bflow_method_code = 'PRIOR_ENTRY'
121418 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
121419    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
121420          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
121421        )
121422    THEN
121423          xla_ae_lines_pkg.BflowUpgEntry
121424            (p_business_method_code    => l_bflow_method_code
121425            ,p_business_class_code     => l_bflow_class_code
121426            ,p_balance_type            => l_balance_type_code);
121427    ELSE
121428       NULL;
121429 -- No business flow processing for business flow method of NONE.
121430    END IF;
121431 
121432    --
121433    -- call analytical criteria
121434    --
121435    
121436    --
121437    -- call description
121438    --
121439    -- No description or it is inherited.
121440    --
121441    -- call ADRs
121442    -- Bug 4922099
121443    --
121444    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
121445         (NVL(l_actual_upg_option, 'N') = 'O') OR
121446         (NVL(l_enc_upg_option, 'N') = 'O')
121447       )
121448    THEN
121449    NULL;
121450    --
121451    --
121452    
121453   l_ccid := AcctDerRule_4(
121454            p_application_id           => p_application_id
121455          , p_ae_header_id             => l_ae_header_id 
121456 , p_source_4 => p_source_4
121457          , x_transaction_coa_id       => l_adr_transaction_coa_id
121458          , x_accounting_coa_id        => l_adr_accounting_coa_id
121459          , x_value_type_code          => l_adr_value_type_code
121460          , p_side                     => 'NA'
121461    );
121462 
121463    xla_ae_lines_pkg.set_ccid(
121464     p_code_combination_id          => l_ccid
121465   , p_value_type_code              => l_adr_value_type_code
121466   , p_transaction_coa_id           => l_adr_transaction_coa_id
121467   , p_accounting_coa_id            => l_adr_accounting_coa_id
121468   , p_adr_code                     => 'CST_DEFAULT'
121469   , p_adr_type_code                => 'S'
121470   , p_component_type               => l_component_type
121471   , p_component_code               => l_component_code
121472   , p_component_type_code          => l_component_type_code
121473   , p_component_appl_id            => l_component_appl_id
121474   , p_amb_context_code             => l_amb_context_code
121475   , p_side                         => 'NA'
121476   );
121477 
121478 
121479    --
121480    --
121481    END IF;
121482    --
121483    -- Bug 4922099
121484    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
121485           (NVL(l_enc_upg_option, 'N') = 'O')
121486         ) AND
121487         (l_bflow_method_code = 'PRIOR_ENTRY')
121488       )
121489    THEN
121490       IF
121491       --
121492       1 = 2
121493       --
121494       THEN
121495       xla_accounting_err_pkg.build_message
121496                                     (p_appli_s_name            => 'XLA'
121497                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
121498                                     ,p_token_1                 => 'LINE_NUMBER'
121499                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
121500                                     ,p_token_2                 => 'LINE_TYPE_NAME'
121501                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
121502                                                                              l_component_type
121503                                                                             ,l_component_code
121504                                                                             ,l_component_type_code
121505                                                                             ,l_component_appl_id
121506                                                                             ,l_amb_context_code
121507                                                                             ,l_entity_code
121508                                                                             ,l_event_class_code
121509                                                                            )
121510                                     ,p_token_3                 => 'OWNER'
121511                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
121512                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
121513                                                                           ,p_lookup_code    => l_component_type_code
121514                                                                          )
121515                                     ,p_token_4                 => 'PRODUCT_NAME'
121516                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
121517                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
121518                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
121519                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
121520                                     ,p_ae_header_id            =>  NULL
121521                                        );
121522 
121523         IF (C_LEVEL_ERROR>= g_log_level) THEN
121524                  trace
121525                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
121526                       ,p_level    => C_LEVEL_ERROR
121527                       ,p_module   => l_log_module);
121528         END IF;
121529       END IF;
121530    END IF;
121531    --
121532    --
121533    ------------------------------------------------------------------------------------------------
121534    -- 4219869 Business Flow
121535    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
121536    -- Prior Entry.  Currently, the following code is always generated.
121537    ------------------------------------------------------------------------------------------------
121538    XLA_AE_LINES_PKG.ValidateCurrentLine;
121539 
121540    ------------------------------------------------------------------------------------
121541    -- 4219869 Business Flow
121542    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
121543    ------------------------------------------------------------------------------------
121544    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
121545 
121546    ----------------------------------------------------------------------------------
121547    -- 4219869 Business Flow
121548    -- Update journal entry status -- Need to generate this within IF <condition>
121549    ----------------------------------------------------------------------------------
121550    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
121551          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
121552          ,p_balance_type_code => l_balance_type_code
121553          );
121554 
121555    -------------------------------------------------------------------------------------------
121556    -- 4262811 - Generate the Accrual Reversal lines
121557    -------------------------------------------------------------------------------------------
121558    BEGIN
121559       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
121560                               (g_array_event(p_event_id).array_value_num('header_index'));
121561       IF l_acc_rev_flag IS NULL THEN
121562          l_acc_rev_flag := 'N';
121563       END IF;
121564    EXCEPTION
121565       WHEN OTHERS THEN
121566          l_acc_rev_flag := 'N';
121567    END;
121568    --
121569    IF (l_acc_rev_flag = 'Y') THEN
121570 
121571        -- 4645092  ------------------------------------------------------------------------------
121572        -- To allow MPA report to determine if it should generate report process
121573        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
121574        ------------------------------------------------------------------------------------------
121575 
121576        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
121577        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
121578    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
121579    -- call ADRs
121580    -- Bug 4922099
121581    --
121582    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
121583         (NVL(l_actual_upg_option, 'N') = 'O') OR
121584         (NVL(l_enc_upg_option, 'N') = 'O')
121585       )
121586    THEN
121587    NULL;
121588    --
121589    --
121590    
121591   l_ccid := AcctDerRule_4(
121592            p_application_id           => p_application_id
121593          , p_ae_header_id             => l_ae_header_id 
121594 , p_source_4 => p_source_4
121595          , x_transaction_coa_id       => l_adr_transaction_coa_id
121596          , x_accounting_coa_id        => l_adr_accounting_coa_id
121597          , x_value_type_code          => l_adr_value_type_code
121598          , p_side                     => 'NA'
121599    );
121600 
121601    xla_ae_lines_pkg.set_ccid(
121602     p_code_combination_id          => l_ccid
121603   , p_value_type_code              => l_adr_value_type_code
121604   , p_transaction_coa_id           => l_adr_transaction_coa_id
121605   , p_accounting_coa_id            => l_adr_accounting_coa_id
121606   , p_adr_code                     => 'CST_DEFAULT'
121607   , p_adr_type_code                => 'S'
121608   , p_component_type               => l_component_type
121609   , p_component_code               => l_component_code
121610   , p_component_type_code          => l_component_type_code
121611   , p_component_appl_id            => l_component_appl_id
121612   , p_amb_context_code             => l_amb_context_code
121613   , p_side                         => 'NA'
121614   );
121615 
121616 
121617    --
121618    --
121619    END IF;
121620 
121621        --
121622        -- Update the line information that should be overwritten
121623        --
121624        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
121625                                          p_header_num   => 1);
121626        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
121627 
121628        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
121629 
121630        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
121631           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
121632        END IF;
121633 
121634       --
121635       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
121636       --
121637       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
121638           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
121639       ELSE
121640           ---------------------------------------------------------------------------------------------------
121641           -- 4262811a Switch Sign
121642           ---------------------------------------------------------------------------------------------------
121643           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
121644           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
121645                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
121646           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
121647                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
121648           -- 5132302
121649           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
121650                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
121651 
121652       END IF;
121653 
121654       -- 4955764
121655       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
121656       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
121657 
121658 
121659       XLA_AE_LINES_PKG.ValidateCurrentLine;
121660       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
121661 
121662       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
121663                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
121664                ,p_balance_type_code => l_balance_type_code);
121665 
121666    END IF;
121667 
121668    -----------------------------------------------------------------------------------------
121669    -- 4262811 Multiperiod Accounting
121670    -----------------------------------------------------------------------------------------
121671      -- No MPA option is assigned.
121672 
121673 
121674 END IF;
121675 END IF;
121676 --
121677 
121678 --
121679 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
121680    trace
121681       (p_msg      => 'END of AcctLineType_220'
121682       ,p_level    => C_LEVEL_PROCEDURE
121683       ,p_module   => l_log_module);
121684 END IF;
121685 --
121686 EXCEPTION
121687   WHEN xla_exceptions_pkg.application_exception THEN
121688       RAISE;
121689   WHEN OTHERS THEN
121690        xla_exceptions_pkg.raise_message
121691            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_220');
121692 END AcctLineType_220;
121693 --
121694 
121695 ---------------------------------------
121696 --
121697 -- PRIVATE FUNCTION
121698 --         AcctLineType_221
121699 --
121700 ---------------------------------------
121701 PROCEDURE AcctLineType_221 (
121702   p_application_id        IN NUMBER
121703  ,p_event_id              IN NUMBER
121704  ,p_calculate_acctd_flag  IN VARCHAR2
121705  ,p_calculate_g_l_flag    IN VARCHAR2
121706  ,p_actual_flag           IN OUT VARCHAR2
121707  ,p_balance_type_code     OUT VARCHAR2
121708  ,p_gain_or_loss_ref      OUT VARCHAR2
121709  
121710 --Cost Management Default Account
121711  , p_source_4            IN NUMBER
121712 --DISTRIBUTION_IDENTIFIER
121713  , p_source_11            IN NUMBER
121714 --Distribution Type
121715  , p_source_12            IN VARCHAR2
121716  , p_source_12_meaning    IN VARCHAR2
121717 --Entered Currency Code
121718  , p_source_15            IN VARCHAR2
121719 --Entered Amount
121720  , p_source_18            IN NUMBER
121721 --Currency Conversion Date
121722  , p_source_19            IN DATE
121723 --Currency Conversion Rate
121724  , p_source_20            IN NUMBER
121725 --Accounted Amount
121726  , p_source_22            IN NUMBER
121727 --Accounting Line Type
121728  , p_source_24            IN NUMBER
121729 )
121730 IS
121731 
121732 l_component_type              VARCHAR2(80);
121733 l_component_code              VARCHAR2(30);
121734 l_component_type_code         VARCHAR2(1);
121735 l_component_appl_id           INTEGER;
121736 l_amb_context_code            VARCHAR2(30);
121737 l_entity_code                 VARCHAR2(30);
121738 l_event_class_code            VARCHAR2(30);
121739 l_ae_header_id                NUMBER;
121740 l_event_type_code             VARCHAR2(30);
121741 l_line_definition_code        VARCHAR2(30);
121742 l_line_definition_owner_code  VARCHAR2(1);
121743 --
121744 -- adr variables
121745 l_segment                     VARCHAR2(30);
121746 l_ccid                        NUMBER;
121747 l_adr_transaction_coa_id      NUMBER;
121748 l_adr_accounting_coa_id       NUMBER;
121749 l_adr_flexfield_segment_code  VARCHAR2(30);
121750 l_adr_flex_value_set_id       NUMBER;
121751 l_adr_value_type_code         VARCHAR2(30);
121752 l_adr_value_combination_id    NUMBER;
121753 l_adr_value_segment_code      VARCHAR2(30);
121754 
121755 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
121756 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
121757 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
121758 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
121759 
121760 -- 4262811 Variables ------------------------------------------------------------------------------------------
121761 l_entered_amt_idx             NUMBER;
121762 l_accted_amt_idx              NUMBER;
121763 l_acc_rev_flag                VARCHAR2(1);
121764 l_accrual_line_num            NUMBER;
121765 l_tmp_amt                     NUMBER;
121766 l_acc_rev_natural_side_code   VARCHAR2(1);
121767 
121768 l_num_entries                 NUMBER;
121769 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
121770 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
121771 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
121772 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
121773 l_recog_line_1                NUMBER;
121774 l_recog_line_2                NUMBER;
121775 
121776 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
121777 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
121778 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
121779 
121780 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
121781 
121782 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
121783 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
121784 
121785 ---------------------------------------------------------------------------------------------------------------
121786 
121787 
121788 --
121789 -- bulk performance
121790 --
121791 l_balance_type_code           VARCHAR2(1);
121792 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
121793 l_log_module                  VARCHAR2(240);
121794 
121795 --
121796 -- Upgrade strategy
121797 --
121798 l_actual_upg_option           VARCHAR2(1);
121799 l_enc_upg_option           VARCHAR2(1);
121800 
121801 --
121802 BEGIN
121803 --
121804 IF g_log_enabled THEN
121805       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_221';
121806 END IF;
121807 --
121808 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
121809 
121810       trace
121811          (p_msg      => 'BEGIN of AcctLineType_221'
121812          ,p_level    => C_LEVEL_PROCEDURE
121813          ,p_module   => l_log_module);
121814 
121815 END IF;
121816 --
121817 l_component_type             := 'AMB_JLT';
121818 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
121819 l_component_type_code        := 'S';
121820 l_component_appl_id          :=  707;
121821 l_amb_context_code           := 'DEFAULT';
121822 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
121823 l_event_class_code           := 'OSP';
121824 l_event_type_code            := 'OSP_ALL';
121825 l_line_definition_owner_code := 'S';
121826 l_line_definition_code       := 'OUTSIDE_PROCESSING';
121827 --
121828 l_balance_type_code          := 'A';
121829 l_segment                     := NULL;
121830 l_ccid                        := NULL;
121831 l_adr_transaction_coa_id      := NULL;
121832 l_adr_accounting_coa_id       := NULL;
121833 l_adr_flexfield_segment_code  := NULL;
121834 l_adr_flex_value_set_id       := NULL;
121835 l_adr_value_type_code         := NULL;
121836 l_adr_value_combination_id    := NULL;
121837 l_adr_value_segment_code      := NULL;
121838 
121839 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
121840 l_bflow_class_code           := '';    -- 4219869 Business Flow
121841 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
121842 l_budgetary_control_flag     := 'N';
121843 
121844 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
121845 l_bflow_applied_to_amt       := NULL; -- 5132302
121846 l_entered_amt_idx            := NULL;          -- 4262811
121847 l_accted_amt_idx             := NULL;          -- 4262811
121848 l_acc_rev_flag               := NULL;          -- 4262811
121849 l_accrual_line_num           := NULL;          -- 4262811
121850 l_tmp_amt                    := NULL;          -- 4262811
121851 --
121852  
121853 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
121854     l_balance_type_code <> 'B' THEN
121855 IF NVL(p_source_24,9E125) =  6
121856  THEN 
121857 
121858    --
121859    XLA_AE_LINES_PKG.SetNewLine;
121860 
121861    p_balance_type_code          := l_balance_type_code;
121862    -- set the flag so later we will know whether the gain loss line needs to be created
121863    
121864    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
121865      p_actual_flag :='A';
121866    END IF;
121867 
121868    --
121869    -- bulk performance
121870    --
121871    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
121872                                       p_header_num   => 0); -- 4262811
121873    --
121874    -- set accounting line options
121875    --
121876    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
121877            p_natural_side_code          => 'D'
121878          , p_gain_or_loss_flag          => 'N'
121879          , p_gl_transfer_mode_code      => 'S'
121880          , p_acct_entry_type_code       => 'A'
121881          , p_switch_side_flag           => 'Y'
121882          , p_merge_duplicate_code       => 'N'
121883          );
121884    --
121885    l_acc_rev_natural_side_code := 'C';  -- 4262811
121886    -- 
121887    --
121888    -- set accounting line type info
121889    --
121890    xla_ae_lines_pkg.SetAcctLineType
121891       (p_component_type             => l_component_type
121892       ,p_event_type_code            => l_event_type_code
121893       ,p_line_definition_owner_code => l_line_definition_owner_code
121894       ,p_line_definition_code       => l_line_definition_code
121895       ,p_accounting_line_code       => l_component_code
121896       ,p_accounting_line_type_code  => l_component_type_code
121897       ,p_accounting_line_appl_id    => l_component_appl_id
121898       ,p_amb_context_code           => l_amb_context_code
121899       ,p_entity_code                => l_entity_code
121900       ,p_event_class_code           => l_event_class_code);
121901    --
121902    -- set accounting class
121903    --
121904    xla_ae_lines_pkg.SetAcctClass(
121905            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
121906          , p_ae_header_id           => l_ae_header_id
121907          );
121908 
121909    --
121910    -- set rounding class
121911    --
121912    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
121913                       'PURCHASE_PRICE_VARIANCE';
121914 
121915    --
121916    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
121917    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
121918    --
121919    -- bulk performance
121920    --
121921    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
121922 
121923    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
121924       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
121925 
121926    -- 4955764
121927    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
121928       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
121929 
121930    -- 4458381 Public Sector Enh
121931    
121932    --
121933    -- set accounting attributes for the line type
121934    --
121935    l_entered_amt_idx := 3;
121936    l_accted_amt_idx  := 8;
121937    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
121938    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
121939    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
121940    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
121941    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
121942    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
121943    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
121944    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
121945    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
121946    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
121947    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
121948    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
121949    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
121950    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
121951    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_20);
121952    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
121953    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
121954 
121955    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
121956    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
121957 
121958    ---------------------------------------------------------------------------------------------------------------
121959    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
121960    ---------------------------------------------------------------------------------------------------------------
121961    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
121962 
121963    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
121964    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
121965 
121966    IF xla_accounting_cache_pkg.GetValueChar
121967          (p_source_code         => 'LEDGER_CATEGORY_CODE'
121968          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
121969    AND l_bflow_method_code = 'PRIOR_ENTRY'
121970 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
121971    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
121972          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
121973        )
121974    THEN
121975          xla_ae_lines_pkg.BflowUpgEntry
121976            (p_business_method_code    => l_bflow_method_code
121977            ,p_business_class_code     => l_bflow_class_code
121978            ,p_balance_type            => l_balance_type_code);
121979    ELSE
121980       NULL;
121981 -- No business flow processing for business flow method of NONE.
121982    END IF;
121983 
121984    --
121985    -- call analytical criteria
121986    --
121987    
121988    --
121989    -- call description
121990    --
121991    -- No description or it is inherited.
121992    --
121993    -- call ADRs
121994    -- Bug 4922099
121995    --
121996    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
121997         (NVL(l_actual_upg_option, 'N') = 'O') OR
121998         (NVL(l_enc_upg_option, 'N') = 'O')
121999       )
122000    THEN
122001    NULL;
122002    --
122003    --
122004    
122005   l_ccid := AcctDerRule_4(
122006            p_application_id           => p_application_id
122007          , p_ae_header_id             => l_ae_header_id 
122008 , p_source_4 => p_source_4
122009          , x_transaction_coa_id       => l_adr_transaction_coa_id
122010          , x_accounting_coa_id        => l_adr_accounting_coa_id
122011          , x_value_type_code          => l_adr_value_type_code
122012          , p_side                     => 'NA'
122013    );
122014 
122015    xla_ae_lines_pkg.set_ccid(
122016     p_code_combination_id          => l_ccid
122017   , p_value_type_code              => l_adr_value_type_code
122018   , p_transaction_coa_id           => l_adr_transaction_coa_id
122019   , p_accounting_coa_id            => l_adr_accounting_coa_id
122020   , p_adr_code                     => 'CST_DEFAULT'
122021   , p_adr_type_code                => 'S'
122022   , p_component_type               => l_component_type
122023   , p_component_code               => l_component_code
122024   , p_component_type_code          => l_component_type_code
122025   , p_component_appl_id            => l_component_appl_id
122026   , p_amb_context_code             => l_amb_context_code
122027   , p_side                         => 'NA'
122028   );
122029 
122030 
122031    --
122032    --
122033    END IF;
122034    --
122035    -- Bug 4922099
122036    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
122037           (NVL(l_enc_upg_option, 'N') = 'O')
122038         ) AND
122039         (l_bflow_method_code = 'PRIOR_ENTRY')
122040       )
122041    THEN
122042       IF
122043       --
122044       1 = 2
122045       --
122046       THEN
122047       xla_accounting_err_pkg.build_message
122048                                     (p_appli_s_name            => 'XLA'
122049                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
122050                                     ,p_token_1                 => 'LINE_NUMBER'
122051                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
122052                                     ,p_token_2                 => 'LINE_TYPE_NAME'
122053                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
122054                                                                              l_component_type
122055                                                                             ,l_component_code
122056                                                                             ,l_component_type_code
122057                                                                             ,l_component_appl_id
122058                                                                             ,l_amb_context_code
122059                                                                             ,l_entity_code
122060                                                                             ,l_event_class_code
122061                                                                            )
122062                                     ,p_token_3                 => 'OWNER'
122063                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
122064                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
122065                                                                           ,p_lookup_code    => l_component_type_code
122066                                                                          )
122067                                     ,p_token_4                 => 'PRODUCT_NAME'
122068                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
122069                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
122070                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
122071                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
122072                                     ,p_ae_header_id            =>  NULL
122073                                        );
122074 
122075         IF (C_LEVEL_ERROR>= g_log_level) THEN
122076                  trace
122077                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
122078                       ,p_level    => C_LEVEL_ERROR
122079                       ,p_module   => l_log_module);
122080         END IF;
122081       END IF;
122082    END IF;
122083    --
122084    --
122085    ------------------------------------------------------------------------------------------------
122086    -- 4219869 Business Flow
122087    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
122088    -- Prior Entry.  Currently, the following code is always generated.
122089    ------------------------------------------------------------------------------------------------
122090    XLA_AE_LINES_PKG.ValidateCurrentLine;
122091 
122092    ------------------------------------------------------------------------------------
122093    -- 4219869 Business Flow
122094    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
122095    ------------------------------------------------------------------------------------
122096    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
122097 
122098    ----------------------------------------------------------------------------------
122099    -- 4219869 Business Flow
122100    -- Update journal entry status -- Need to generate this within IF <condition>
122101    ----------------------------------------------------------------------------------
122102    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
122103          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
122104          ,p_balance_type_code => l_balance_type_code
122105          );
122106 
122107    -------------------------------------------------------------------------------------------
122108    -- 4262811 - Generate the Accrual Reversal lines
122109    -------------------------------------------------------------------------------------------
122110    BEGIN
122111       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
122112                               (g_array_event(p_event_id).array_value_num('header_index'));
122113       IF l_acc_rev_flag IS NULL THEN
122114          l_acc_rev_flag := 'N';
122115       END IF;
122116    EXCEPTION
122117       WHEN OTHERS THEN
122118          l_acc_rev_flag := 'N';
122119    END;
122120    --
122121    IF (l_acc_rev_flag = 'Y') THEN
122122 
122123        -- 4645092  ------------------------------------------------------------------------------
122124        -- To allow MPA report to determine if it should generate report process
122125        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
122126        ------------------------------------------------------------------------------------------
122127 
122128        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
122129        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
122130    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
122131    -- call ADRs
122132    -- Bug 4922099
122133    --
122134    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
122135         (NVL(l_actual_upg_option, 'N') = 'O') OR
122136         (NVL(l_enc_upg_option, 'N') = 'O')
122137       )
122138    THEN
122139    NULL;
122140    --
122141    --
122142    
122143   l_ccid := AcctDerRule_4(
122144            p_application_id           => p_application_id
122145          , p_ae_header_id             => l_ae_header_id 
122146 , p_source_4 => p_source_4
122147          , x_transaction_coa_id       => l_adr_transaction_coa_id
122148          , x_accounting_coa_id        => l_adr_accounting_coa_id
122149          , x_value_type_code          => l_adr_value_type_code
122150          , p_side                     => 'NA'
122151    );
122152 
122153    xla_ae_lines_pkg.set_ccid(
122154     p_code_combination_id          => l_ccid
122155   , p_value_type_code              => l_adr_value_type_code
122156   , p_transaction_coa_id           => l_adr_transaction_coa_id
122157   , p_accounting_coa_id            => l_adr_accounting_coa_id
122158   , p_adr_code                     => 'CST_DEFAULT'
122159   , p_adr_type_code                => 'S'
122160   , p_component_type               => l_component_type
122161   , p_component_code               => l_component_code
122162   , p_component_type_code          => l_component_type_code
122163   , p_component_appl_id            => l_component_appl_id
122164   , p_amb_context_code             => l_amb_context_code
122165   , p_side                         => 'NA'
122166   );
122167 
122168 
122169    --
122170    --
122171    END IF;
122172 
122173        --
122174        -- Update the line information that should be overwritten
122175        --
122176        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
122177                                          p_header_num   => 1);
122178        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
122179 
122180        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
122181 
122182        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
122183           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
122184        END IF;
122185 
122186       --
122187       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
122188       --
122189       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
122190           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
122191       ELSE
122192           ---------------------------------------------------------------------------------------------------
122193           -- 4262811a Switch Sign
122194           ---------------------------------------------------------------------------------------------------
122195           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
122196           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
122197                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
122198           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
122199                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
122200           -- 5132302
122201           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
122202                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
122203 
122204       END IF;
122205 
122206       -- 4955764
122207       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
122208       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
122209 
122210 
122211       XLA_AE_LINES_PKG.ValidateCurrentLine;
122212       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
122213 
122214       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
122215                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
122216                ,p_balance_type_code => l_balance_type_code);
122217 
122218    END IF;
122219 
122220    -----------------------------------------------------------------------------------------
122221    -- 4262811 Multiperiod Accounting
122222    -----------------------------------------------------------------------------------------
122223      -- No MPA option is assigned.
122224 
122225 
122226 END IF;
122227 END IF;
122228 --
122229 
122230 --
122231 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
122232    trace
122233       (p_msg      => 'END of AcctLineType_221'
122234       ,p_level    => C_LEVEL_PROCEDURE
122235       ,p_module   => l_log_module);
122236 END IF;
122237 --
122238 EXCEPTION
122239   WHEN xla_exceptions_pkg.application_exception THEN
122240       RAISE;
122241   WHEN OTHERS THEN
122242        xla_exceptions_pkg.raise_message
122243            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_221');
122244 END AcctLineType_221;
122245 --
122246 
122247 ---------------------------------------
122248 --
122249 -- PRIVATE FUNCTION
122250 --         AcctLineType_222
122251 --
122252 ---------------------------------------
122253 PROCEDURE AcctLineType_222 (
122254   p_application_id        IN NUMBER
122255  ,p_event_id              IN NUMBER
122256  ,p_calculate_acctd_flag  IN VARCHAR2
122257  ,p_calculate_g_l_flag    IN VARCHAR2
122258  ,p_actual_flag           IN OUT VARCHAR2
122259  ,p_balance_type_code     OUT VARCHAR2
122260  ,p_gain_or_loss_ref      OUT VARCHAR2
122261  
122262 --Cost Management Default Account
122263  , p_source_4            IN NUMBER
122264 --DISTRIBUTION_IDENTIFIER
122265  , p_source_11            IN NUMBER
122266 --Distribution Type
122267  , p_source_12            IN VARCHAR2
122268  , p_source_12_meaning    IN VARCHAR2
122269 --Entered Currency Code
122270  , p_source_15            IN VARCHAR2
122271 --Entered Amount
122272  , p_source_18            IN NUMBER
122273 --Currency Conversion Date
122274  , p_source_19            IN DATE
122275 --Currency Conversion Rate
122276  , p_source_20            IN NUMBER
122277 --Currency Conversion Type
122278  , p_source_21            IN VARCHAR2
122279 --Accounted Amount
122280  , p_source_22            IN NUMBER
122281 --Accounting Line Type
122282  , p_source_24            IN NUMBER
122283 )
122284 IS
122285 
122286 l_component_type              VARCHAR2(80);
122287 l_component_code              VARCHAR2(30);
122288 l_component_type_code         VARCHAR2(1);
122289 l_component_appl_id           INTEGER;
122290 l_amb_context_code            VARCHAR2(30);
122291 l_entity_code                 VARCHAR2(30);
122292 l_event_class_code            VARCHAR2(30);
122293 l_ae_header_id                NUMBER;
122294 l_event_type_code             VARCHAR2(30);
122295 l_line_definition_code        VARCHAR2(30);
122296 l_line_definition_owner_code  VARCHAR2(1);
122297 --
122298 -- adr variables
122299 l_segment                     VARCHAR2(30);
122300 l_ccid                        NUMBER;
122301 l_adr_transaction_coa_id      NUMBER;
122302 l_adr_accounting_coa_id       NUMBER;
122303 l_adr_flexfield_segment_code  VARCHAR2(30);
122304 l_adr_flex_value_set_id       NUMBER;
122305 l_adr_value_type_code         VARCHAR2(30);
122306 l_adr_value_combination_id    NUMBER;
122307 l_adr_value_segment_code      VARCHAR2(30);
122308 
122309 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
122310 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
122311 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
122312 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
122313 
122314 -- 4262811 Variables ------------------------------------------------------------------------------------------
122315 l_entered_amt_idx             NUMBER;
122316 l_accted_amt_idx              NUMBER;
122317 l_acc_rev_flag                VARCHAR2(1);
122318 l_accrual_line_num            NUMBER;
122319 l_tmp_amt                     NUMBER;
122320 l_acc_rev_natural_side_code   VARCHAR2(1);
122321 
122322 l_num_entries                 NUMBER;
122323 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
122324 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
122325 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
122326 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
122327 l_recog_line_1                NUMBER;
122328 l_recog_line_2                NUMBER;
122329 
122330 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
122331 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
122332 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
122333 
122334 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
122335 
122336 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
122337 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
122338 
122339 ---------------------------------------------------------------------------------------------------------------
122340 
122341 
122342 --
122343 -- bulk performance
122344 --
122345 l_balance_type_code           VARCHAR2(1);
122346 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
122347 l_log_module                  VARCHAR2(240);
122348 
122349 --
122350 -- Upgrade strategy
122351 --
122352 l_actual_upg_option           VARCHAR2(1);
122353 l_enc_upg_option           VARCHAR2(1);
122354 
122355 --
122356 BEGIN
122357 --
122358 IF g_log_enabled THEN
122359       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_222';
122360 END IF;
122361 --
122362 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
122363 
122364       trace
122365          (p_msg      => 'BEGIN of AcctLineType_222'
122366          ,p_level    => C_LEVEL_PROCEDURE
122367          ,p_module   => l_log_module);
122368 
122369 END IF;
122370 --
122371 l_component_type             := 'AMB_JLT';
122372 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
122373 l_component_type_code        := 'S';
122374 l_component_appl_id          :=  707;
122375 l_amb_context_code           := 'DEFAULT';
122376 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
122377 l_event_class_code           := 'USER_DEFINE';
122378 l_event_type_code            := 'UDIR_INTERORG_RCPT';
122379 l_line_definition_owner_code := 'S';
122380 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT';
122381 --
122382 l_balance_type_code          := 'A';
122383 l_segment                     := NULL;
122384 l_ccid                        := NULL;
122385 l_adr_transaction_coa_id      := NULL;
122386 l_adr_accounting_coa_id       := NULL;
122387 l_adr_flexfield_segment_code  := NULL;
122388 l_adr_flex_value_set_id       := NULL;
122389 l_adr_value_type_code         := NULL;
122390 l_adr_value_combination_id    := NULL;
122391 l_adr_value_segment_code      := NULL;
122392 
122393 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
122394 l_bflow_class_code           := '';    -- 4219869 Business Flow
122395 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
122396 l_budgetary_control_flag     := 'N';
122397 
122398 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
122399 l_bflow_applied_to_amt       := NULL; -- 5132302
122400 l_entered_amt_idx            := NULL;          -- 4262811
122401 l_accted_amt_idx             := NULL;          -- 4262811
122402 l_acc_rev_flag               := NULL;          -- 4262811
122403 l_accrual_line_num           := NULL;          -- 4262811
122404 l_tmp_amt                    := NULL;          -- 4262811
122405 --
122406  
122407 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
122408     l_balance_type_code <> 'B' THEN
122409 IF NVL(p_source_24,9E125) =  6
122410  THEN 
122411 
122412    --
122413    XLA_AE_LINES_PKG.SetNewLine;
122414 
122415    p_balance_type_code          := l_balance_type_code;
122416    -- set the flag so later we will know whether the gain loss line needs to be created
122417    
122418    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
122419      p_actual_flag :='A';
122420    END IF;
122421 
122422    --
122423    -- bulk performance
122424    --
122425    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
122426                                       p_header_num   => 0); -- 4262811
122427    --
122428    -- set accounting line options
122429    --
122430    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
122431            p_natural_side_code          => 'D'
122432          , p_gain_or_loss_flag          => 'N'
122433          , p_gl_transfer_mode_code      => 'S'
122434          , p_acct_entry_type_code       => 'A'
122435          , p_switch_side_flag           => 'Y'
122436          , p_merge_duplicate_code       => 'N'
122437          );
122438    --
122439    l_acc_rev_natural_side_code := 'C';  -- 4262811
122440    -- 
122441    --
122442    -- set accounting line type info
122443    --
122444    xla_ae_lines_pkg.SetAcctLineType
122445       (p_component_type             => l_component_type
122446       ,p_event_type_code            => l_event_type_code
122447       ,p_line_definition_owner_code => l_line_definition_owner_code
122448       ,p_line_definition_code       => l_line_definition_code
122449       ,p_accounting_line_code       => l_component_code
122450       ,p_accounting_line_type_code  => l_component_type_code
122451       ,p_accounting_line_appl_id    => l_component_appl_id
122452       ,p_amb_context_code           => l_amb_context_code
122453       ,p_entity_code                => l_entity_code
122454       ,p_event_class_code           => l_event_class_code);
122455    --
122456    -- set accounting class
122457    --
122458    xla_ae_lines_pkg.SetAcctClass(
122459            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
122460          , p_ae_header_id           => l_ae_header_id
122461          );
122462 
122463    --
122464    -- set rounding class
122465    --
122466    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
122467                       'PURCHASE_PRICE_VARIANCE';
122468 
122469    --
122470    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
122471    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
122472    --
122473    -- bulk performance
122474    --
122475    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
122476 
122477    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
122478       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
122479 
122480    -- 4955764
122481    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
122482       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
122483 
122484    -- 4458381 Public Sector Enh
122485    
122486    --
122487    -- set accounting attributes for the line type
122488    --
122489    l_entered_amt_idx := 3;
122490    l_accted_amt_idx  := 8;
122491    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
122492    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
122493    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
122494    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
122495    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
122496    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
122497    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
122498    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
122499    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
122500    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
122501    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
122502    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
122503    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
122504    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
122505    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
122506    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
122507    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
122508 
122509    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
122510    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
122511 
122512    ---------------------------------------------------------------------------------------------------------------
122513    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
122514    ---------------------------------------------------------------------------------------------------------------
122515    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
122516 
122517    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
122518    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
122519 
122520    IF xla_accounting_cache_pkg.GetValueChar
122521          (p_source_code         => 'LEDGER_CATEGORY_CODE'
122522          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
122523    AND l_bflow_method_code = 'PRIOR_ENTRY'
122524 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
122525    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
122526          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
122527        )
122528    THEN
122529          xla_ae_lines_pkg.BflowUpgEntry
122530            (p_business_method_code    => l_bflow_method_code
122531            ,p_business_class_code     => l_bflow_class_code
122532            ,p_balance_type            => l_balance_type_code);
122533    ELSE
122534       NULL;
122535 -- No business flow processing for business flow method of NONE.
122536    END IF;
122537 
122538    --
122539    -- call analytical criteria
122540    --
122541    
122542    --
122543    -- call description
122544    --
122545    -- No description or it is inherited.
122546    --
122547    -- call ADRs
122548    -- Bug 4922099
122549    --
122550    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
122551         (NVL(l_actual_upg_option, 'N') = 'O') OR
122552         (NVL(l_enc_upg_option, 'N') = 'O')
122553       )
122554    THEN
122555    NULL;
122556    --
122557    --
122558    
122559   l_ccid := AcctDerRule_4(
122560            p_application_id           => p_application_id
122561          , p_ae_header_id             => l_ae_header_id 
122562 , p_source_4 => p_source_4
122563          , x_transaction_coa_id       => l_adr_transaction_coa_id
122564          , x_accounting_coa_id        => l_adr_accounting_coa_id
122565          , x_value_type_code          => l_adr_value_type_code
122566          , p_side                     => 'NA'
122567    );
122568 
122569    xla_ae_lines_pkg.set_ccid(
122570     p_code_combination_id          => l_ccid
122571   , p_value_type_code              => l_adr_value_type_code
122572   , p_transaction_coa_id           => l_adr_transaction_coa_id
122573   , p_accounting_coa_id            => l_adr_accounting_coa_id
122574   , p_adr_code                     => 'CST_DEFAULT'
122575   , p_adr_type_code                => 'S'
122576   , p_component_type               => l_component_type
122577   , p_component_code               => l_component_code
122578   , p_component_type_code          => l_component_type_code
122579   , p_component_appl_id            => l_component_appl_id
122580   , p_amb_context_code             => l_amb_context_code
122581   , p_side                         => 'NA'
122582   );
122583 
122584 
122585    --
122586    --
122587    END IF;
122588    --
122589    -- Bug 4922099
122590    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
122591           (NVL(l_enc_upg_option, 'N') = 'O')
122592         ) AND
122593         (l_bflow_method_code = 'PRIOR_ENTRY')
122594       )
122595    THEN
122596       IF
122597       --
122598       1 = 2
122599       --
122600       THEN
122601       xla_accounting_err_pkg.build_message
122602                                     (p_appli_s_name            => 'XLA'
122603                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
122604                                     ,p_token_1                 => 'LINE_NUMBER'
122605                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
122606                                     ,p_token_2                 => 'LINE_TYPE_NAME'
122607                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
122608                                                                              l_component_type
122609                                                                             ,l_component_code
122610                                                                             ,l_component_type_code
122611                                                                             ,l_component_appl_id
122612                                                                             ,l_amb_context_code
122613                                                                             ,l_entity_code
122614                                                                             ,l_event_class_code
122615                                                                            )
122616                                     ,p_token_3                 => 'OWNER'
122617                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
122618                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
122619                                                                           ,p_lookup_code    => l_component_type_code
122620                                                                          )
122621                                     ,p_token_4                 => 'PRODUCT_NAME'
122622                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
122623                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
122624                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
122625                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
122626                                     ,p_ae_header_id            =>  NULL
122627                                        );
122628 
122629         IF (C_LEVEL_ERROR>= g_log_level) THEN
122630                  trace
122631                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
122632                       ,p_level    => C_LEVEL_ERROR
122633                       ,p_module   => l_log_module);
122634         END IF;
122635       END IF;
122636    END IF;
122637    --
122638    --
122639    ------------------------------------------------------------------------------------------------
122640    -- 4219869 Business Flow
122641    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
122642    -- Prior Entry.  Currently, the following code is always generated.
122643    ------------------------------------------------------------------------------------------------
122644    XLA_AE_LINES_PKG.ValidateCurrentLine;
122645 
122646    ------------------------------------------------------------------------------------
122647    -- 4219869 Business Flow
122648    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
122649    ------------------------------------------------------------------------------------
122650    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
122651 
122652    ----------------------------------------------------------------------------------
122653    -- 4219869 Business Flow
122654    -- Update journal entry status -- Need to generate this within IF <condition>
122655    ----------------------------------------------------------------------------------
122656    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
122657          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
122658          ,p_balance_type_code => l_balance_type_code
122659          );
122660 
122661    -------------------------------------------------------------------------------------------
122662    -- 4262811 - Generate the Accrual Reversal lines
122663    -------------------------------------------------------------------------------------------
122664    BEGIN
122665       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
122666                               (g_array_event(p_event_id).array_value_num('header_index'));
122667       IF l_acc_rev_flag IS NULL THEN
122668          l_acc_rev_flag := 'N';
122669       END IF;
122670    EXCEPTION
122671       WHEN OTHERS THEN
122672          l_acc_rev_flag := 'N';
122673    END;
122674    --
122675    IF (l_acc_rev_flag = 'Y') THEN
122676 
122677        -- 4645092  ------------------------------------------------------------------------------
122678        -- To allow MPA report to determine if it should generate report process
122679        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
122680        ------------------------------------------------------------------------------------------
122681 
122682        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
122683        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
122684    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
122685    -- call ADRs
122686    -- Bug 4922099
122687    --
122688    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
122689         (NVL(l_actual_upg_option, 'N') = 'O') OR
122690         (NVL(l_enc_upg_option, 'N') = 'O')
122691       )
122692    THEN
122693    NULL;
122694    --
122695    --
122696    
122697   l_ccid := AcctDerRule_4(
122698            p_application_id           => p_application_id
122699          , p_ae_header_id             => l_ae_header_id 
122700 , p_source_4 => p_source_4
122701          , x_transaction_coa_id       => l_adr_transaction_coa_id
122702          , x_accounting_coa_id        => l_adr_accounting_coa_id
122703          , x_value_type_code          => l_adr_value_type_code
122704          , p_side                     => 'NA'
122705    );
122706 
122707    xla_ae_lines_pkg.set_ccid(
122708     p_code_combination_id          => l_ccid
122709   , p_value_type_code              => l_adr_value_type_code
122710   , p_transaction_coa_id           => l_adr_transaction_coa_id
122711   , p_accounting_coa_id            => l_adr_accounting_coa_id
122712   , p_adr_code                     => 'CST_DEFAULT'
122713   , p_adr_type_code                => 'S'
122714   , p_component_type               => l_component_type
122715   , p_component_code               => l_component_code
122716   , p_component_type_code          => l_component_type_code
122717   , p_component_appl_id            => l_component_appl_id
122718   , p_amb_context_code             => l_amb_context_code
122719   , p_side                         => 'NA'
122720   );
122721 
122722 
122723    --
122724    --
122725    END IF;
122726 
122727        --
122728        -- Update the line information that should be overwritten
122729        --
122730        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
122731                                          p_header_num   => 1);
122732        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
122733 
122734        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
122735 
122736        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
122737           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
122738        END IF;
122739 
122740       --
122741       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
122742       --
122743       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
122744           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
122745       ELSE
122746           ---------------------------------------------------------------------------------------------------
122747           -- 4262811a Switch Sign
122748           ---------------------------------------------------------------------------------------------------
122749           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
122750           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
122751                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
122752           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
122753                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
122754           -- 5132302
122755           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
122756                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
122757 
122758       END IF;
122759 
122760       -- 4955764
122761       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
122762       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
122763 
122764 
122765       XLA_AE_LINES_PKG.ValidateCurrentLine;
122766       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
122767 
122768       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
122769                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
122770                ,p_balance_type_code => l_balance_type_code);
122771 
122772    END IF;
122773 
122774    -----------------------------------------------------------------------------------------
122775    -- 4262811 Multiperiod Accounting
122776    -----------------------------------------------------------------------------------------
122777      -- No MPA option is assigned.
122778 
122779 
122780 END IF;
122781 END IF;
122782 --
122783 
122784 --
122785 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
122786    trace
122787       (p_msg      => 'END of AcctLineType_222'
122788       ,p_level    => C_LEVEL_PROCEDURE
122789       ,p_module   => l_log_module);
122790 END IF;
122791 --
122792 EXCEPTION
122793   WHEN xla_exceptions_pkg.application_exception THEN
122794       RAISE;
122795   WHEN OTHERS THEN
122796        xla_exceptions_pkg.raise_message
122797            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_222');
122798 END AcctLineType_222;
122799 --
122800 
122801 ---------------------------------------
122802 --
122803 -- PRIVATE FUNCTION
122804 --         AcctLineType_223
122805 --
122806 ---------------------------------------
122807 PROCEDURE AcctLineType_223 (
122808   p_application_id        IN NUMBER
122809  ,p_event_id              IN NUMBER
122810  ,p_calculate_acctd_flag  IN VARCHAR2
122811  ,p_calculate_g_l_flag    IN VARCHAR2
122812  ,p_actual_flag           IN OUT VARCHAR2
122813  ,p_balance_type_code     OUT VARCHAR2
122814  ,p_gain_or_loss_ref      OUT VARCHAR2
122815  
122816 --Cost Management Default Account
122817  , p_source_4            IN NUMBER
122818 --Applied to Application ID
122819  , p_source_6            IN NUMBER
122820 --Applied to Distribution Link Type
122821  , p_source_7            IN VARCHAR2
122822 --Applied to Entity Code
122823  , p_source_8            IN VARCHAR2
122824 --DISTRIBUTION_IDENTIFIER
122825  , p_source_11            IN NUMBER
122826 --Distribution Type
122827  , p_source_12            IN VARCHAR2
122828  , p_source_12_meaning    IN VARCHAR2
122829 --Encumbrance Reversal Amount Entered
122830  , p_source_14            IN NUMBER
122831 --Entered Currency Code
122832  , p_source_15            IN VARCHAR2
122833 --Transaction Encumbrance Reversal Amount
122834  , p_source_16            IN NUMBER
122835 --Entered Amount
122836  , p_source_18            IN NUMBER
122837 --Currency Conversion Date
122838  , p_source_19            IN DATE
122839 --Currency Conversion Rate
122840  , p_source_20            IN NUMBER
122841 --Currency Conversion Type
122842  , p_source_21            IN VARCHAR2
122843 --Accounted Amount
122844  , p_source_22            IN NUMBER
122845 --Accounting Line Type
122846  , p_source_24            IN NUMBER
122847 --Costing Encumbrance Upgrade Option
122848  , p_source_27            IN VARCHAR2
122849 --TXN_PO_DISTRIBUTION_ID
122850  , p_source_28            IN NUMBER
122851 --TXN_PO_HEADER_ID
122852  , p_source_29            IN NUMBER
122853 --Requisition Budget Account
122854  , p_source_30            IN NUMBER
122855 --Requisition Encumbrance Type Identifier
122856  , p_source_31            IN NUMBER
122857 )
122858 IS
122859 
122860 l_component_type              VARCHAR2(80);
122861 l_component_code              VARCHAR2(30);
122862 l_component_type_code         VARCHAR2(1);
122863 l_component_appl_id           INTEGER;
122864 l_amb_context_code            VARCHAR2(30);
122865 l_entity_code                 VARCHAR2(30);
122866 l_event_class_code            VARCHAR2(30);
122867 l_ae_header_id                NUMBER;
122868 l_event_type_code             VARCHAR2(30);
122869 l_line_definition_code        VARCHAR2(30);
122870 l_line_definition_owner_code  VARCHAR2(1);
122871 --
122872 -- adr variables
122873 l_segment                     VARCHAR2(30);
122874 l_ccid                        NUMBER;
122875 l_adr_transaction_coa_id      NUMBER;
122876 l_adr_accounting_coa_id       NUMBER;
122877 l_adr_flexfield_segment_code  VARCHAR2(30);
122878 l_adr_flex_value_set_id       NUMBER;
122879 l_adr_value_type_code         VARCHAR2(30);
122880 l_adr_value_combination_id    NUMBER;
122881 l_adr_value_segment_code      VARCHAR2(30);
122882 
122883 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
122884 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
122885 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
122886 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
122887 
122888 -- 4262811 Variables ------------------------------------------------------------------------------------------
122889 l_entered_amt_idx             NUMBER;
122890 l_accted_amt_idx              NUMBER;
122891 l_acc_rev_flag                VARCHAR2(1);
122892 l_accrual_line_num            NUMBER;
122893 l_tmp_amt                     NUMBER;
122894 l_acc_rev_natural_side_code   VARCHAR2(1);
122895 
122896 l_num_entries                 NUMBER;
122897 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
122898 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
122899 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
122900 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
122901 l_recog_line_1                NUMBER;
122902 l_recog_line_2                NUMBER;
122903 
122904 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
122905 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
122906 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
122907 
122908 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
122909 
122910 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
122911 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
122912 
122913 ---------------------------------------------------------------------------------------------------------------
122914 
122915 
122916 --
122917 -- bulk performance
122918 --
122919 l_balance_type_code           VARCHAR2(1);
122920 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
122921 l_log_module                  VARCHAR2(240);
122922 
122923 --
122924 -- Upgrade strategy
122925 --
122926 l_actual_upg_option           VARCHAR2(1);
122927 l_enc_upg_option           VARCHAR2(1);
122928 
122929 --
122930 BEGIN
122931 --
122932 IF g_log_enabled THEN
122933       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_223';
122934 END IF;
122935 --
122936 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
122937 
122938       trace
122939          (p_msg      => 'BEGIN of AcctLineType_223'
122940          ,p_level    => C_LEVEL_PROCEDURE
122941          ,p_module   => l_log_module);
122942 
122943 END IF;
122944 --
122945 l_component_type             := 'AMB_JLT';
122946 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
122947 l_component_type_code        := 'S';
122948 l_component_appl_id          :=  707;
122949 l_amb_context_code           := 'DEFAULT';
122950 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
122951 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
122952 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
122953 l_line_definition_owner_code := 'S';
122954 l_line_definition_code       := 'FOB_RCPT_RECIPIENT_RCPT';
122955 --
122956 l_balance_type_code          := 'A';
122957 l_segment                     := NULL;
122958 l_ccid                        := NULL;
122959 l_adr_transaction_coa_id      := NULL;
122960 l_adr_accounting_coa_id       := NULL;
122961 l_adr_flexfield_segment_code  := NULL;
122962 l_adr_flex_value_set_id       := NULL;
122963 l_adr_value_type_code         := NULL;
122964 l_adr_value_combination_id    := NULL;
122965 l_adr_value_segment_code      := NULL;
122966 
122967 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
122968 l_bflow_class_code           := '';    -- 4219869 Business Flow
122969 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
122970 l_budgetary_control_flag     := 'N';
122971 
122972 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
122973 l_bflow_applied_to_amt       := NULL; -- 5132302
122974 l_entered_amt_idx            := NULL;          -- 4262811
122975 l_accted_amt_idx             := NULL;          -- 4262811
122976 l_acc_rev_flag               := NULL;          -- 4262811
122977 l_accrual_line_num           := NULL;          -- 4262811
122978 l_tmp_amt                    := NULL;          -- 4262811
122979 --
122980  
122981 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
122982     l_balance_type_code <> 'B' THEN
122983 IF NVL(p_source_24,9E125) =  6
122984  THEN 
122985 
122986    --
122987    XLA_AE_LINES_PKG.SetNewLine;
122988 
122989    p_balance_type_code          := l_balance_type_code;
122990    -- set the flag so later we will know whether the gain loss line needs to be created
122991    
122992    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
122993      p_actual_flag :='A';
122994    END IF;
122995 
122996    --
122997    -- bulk performance
122998    --
122999    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
123000                                       p_header_num   => 0); -- 4262811
123001    --
123002    -- set accounting line options
123003    --
123004    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
123005            p_natural_side_code          => 'D'
123006          , p_gain_or_loss_flag          => 'N'
123007          , p_gl_transfer_mode_code      => 'S'
123008          , p_acct_entry_type_code       => 'A'
123009          , p_switch_side_flag           => 'Y'
123010          , p_merge_duplicate_code       => 'N'
123011          );
123012    --
123013    l_acc_rev_natural_side_code := 'C';  -- 4262811
123014    -- 
123015    --
123016    -- set accounting line type info
123017    --
123018    xla_ae_lines_pkg.SetAcctLineType
123019       (p_component_type             => l_component_type
123020       ,p_event_type_code            => l_event_type_code
123021       ,p_line_definition_owner_code => l_line_definition_owner_code
123022       ,p_line_definition_code       => l_line_definition_code
123023       ,p_accounting_line_code       => l_component_code
123024       ,p_accounting_line_type_code  => l_component_type_code
123025       ,p_accounting_line_appl_id    => l_component_appl_id
123026       ,p_amb_context_code           => l_amb_context_code
123027       ,p_entity_code                => l_entity_code
123028       ,p_event_class_code           => l_event_class_code);
123029    --
123030    -- set accounting class
123031    --
123032    xla_ae_lines_pkg.SetAcctClass(
123033            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
123034          , p_ae_header_id           => l_ae_header_id
123035          );
123036 
123037    --
123038    -- set rounding class
123039    --
123040    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
123041                       'PURCHASE_PRICE_VARIANCE';
123042 
123043    --
123044    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
123045    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
123046    --
123047    -- bulk performance
123048    --
123049    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
123050 
123051    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
123052       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
123053 
123054    -- 4955764
123055    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
123056       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
123057 
123058    -- 4458381 Public Sector Enh
123059    
123060    --
123061    -- set accounting attributes for the line type
123062    --
123063    l_entered_amt_idx := 17;
123064    l_accted_amt_idx  := 22;
123065    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
123066    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
123067    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
123068    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
123069    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
123070    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
123071    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
123072    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
123073    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
123074    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
123075    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
123076    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
123077    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
123078    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
123079    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
123080    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
123081    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
123082    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
123083    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
123084    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
123085    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
123086    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
123087    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
123088    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
123089    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
123090    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
123091    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
123092    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
123093    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
123094    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
123095    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
123096    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
123097    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
123098    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
123099    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
123100    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
123101    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
123102    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
123103    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
123104    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
123105    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
123106    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
123107    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
123108    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
123109    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
123110    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
123111    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
123112    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
123113    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
123114 
123115    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
123116    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
123117 
123118    ---------------------------------------------------------------------------------------------------------------
123119    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
123120    ---------------------------------------------------------------------------------------------------------------
123121    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
123122 
123123    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
123124    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
123125 
123126    IF xla_accounting_cache_pkg.GetValueChar
123127          (p_source_code         => 'LEDGER_CATEGORY_CODE'
123128          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
123129    AND l_bflow_method_code = 'PRIOR_ENTRY'
123130 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
123131    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
123132          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
123133        )
123134    THEN
123135          xla_ae_lines_pkg.BflowUpgEntry
123136            (p_business_method_code    => l_bflow_method_code
123137            ,p_business_class_code     => l_bflow_class_code
123138            ,p_balance_type            => l_balance_type_code);
123139    ELSE
123140       NULL;
123141 -- No business flow processing for business flow method of NONE.
123142    END IF;
123143 
123144    --
123145    -- call analytical criteria
123146    --
123147    
123148    --
123149    -- call description
123150    --
123151    -- No description or it is inherited.
123152    --
123153    -- call ADRs
123154    -- Bug 4922099
123155    --
123156    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
123157         (NVL(l_actual_upg_option, 'N') = 'O') OR
123158         (NVL(l_enc_upg_option, 'N') = 'O')
123159       )
123160    THEN
123161    NULL;
123162    --
123163    --
123164    
123165   l_ccid := AcctDerRule_4(
123166            p_application_id           => p_application_id
123167          , p_ae_header_id             => l_ae_header_id 
123168 , p_source_4 => p_source_4
123169          , x_transaction_coa_id       => l_adr_transaction_coa_id
123170          , x_accounting_coa_id        => l_adr_accounting_coa_id
123171          , x_value_type_code          => l_adr_value_type_code
123172          , p_side                     => 'NA'
123173    );
123174 
123175    xla_ae_lines_pkg.set_ccid(
123176     p_code_combination_id          => l_ccid
123177   , p_value_type_code              => l_adr_value_type_code
123178   , p_transaction_coa_id           => l_adr_transaction_coa_id
123179   , p_accounting_coa_id            => l_adr_accounting_coa_id
123180   , p_adr_code                     => 'CST_DEFAULT'
123181   , p_adr_type_code                => 'S'
123182   , p_component_type               => l_component_type
123183   , p_component_code               => l_component_code
123184   , p_component_type_code          => l_component_type_code
123185   , p_component_appl_id            => l_component_appl_id
123186   , p_amb_context_code             => l_amb_context_code
123187   , p_side                         => 'NA'
123188   );
123189 
123190 
123191    --
123192    --
123193    END IF;
123194    --
123195    -- Bug 4922099
123196    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
123197           (NVL(l_enc_upg_option, 'N') = 'O')
123198         ) AND
123199         (l_bflow_method_code = 'PRIOR_ENTRY')
123200       )
123201    THEN
123202       IF
123203       --
123204       1 = 2
123205       --
123206       THEN
123207       xla_accounting_err_pkg.build_message
123208                                     (p_appli_s_name            => 'XLA'
123209                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
123210                                     ,p_token_1                 => 'LINE_NUMBER'
123211                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
123212                                     ,p_token_2                 => 'LINE_TYPE_NAME'
123213                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
123214                                                                              l_component_type
123215                                                                             ,l_component_code
123216                                                                             ,l_component_type_code
123217                                                                             ,l_component_appl_id
123218                                                                             ,l_amb_context_code
123219                                                                             ,l_entity_code
123220                                                                             ,l_event_class_code
123221                                                                            )
123222                                     ,p_token_3                 => 'OWNER'
123223                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
123224                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
123225                                                                           ,p_lookup_code    => l_component_type_code
123226                                                                          )
123227                                     ,p_token_4                 => 'PRODUCT_NAME'
123228                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
123229                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
123230                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
123231                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
123232                                     ,p_ae_header_id            =>  NULL
123233                                        );
123234 
123235         IF (C_LEVEL_ERROR>= g_log_level) THEN
123236                  trace
123237                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
123238                       ,p_level    => C_LEVEL_ERROR
123239                       ,p_module   => l_log_module);
123240         END IF;
123241       END IF;
123242    END IF;
123243    --
123244    --
123245    ------------------------------------------------------------------------------------------------
123246    -- 4219869 Business Flow
123247    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
123248    -- Prior Entry.  Currently, the following code is always generated.
123249    ------------------------------------------------------------------------------------------------
123250    XLA_AE_LINES_PKG.ValidateCurrentLine;
123251 
123252    ------------------------------------------------------------------------------------
123253    -- 4219869 Business Flow
123254    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
123255    ------------------------------------------------------------------------------------
123256    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
123257 
123258    ----------------------------------------------------------------------------------
123259    -- 4219869 Business Flow
123260    -- Update journal entry status -- Need to generate this within IF <condition>
123261    ----------------------------------------------------------------------------------
123262    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
123263          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
123264          ,p_balance_type_code => l_balance_type_code
123265          );
123266 
123267    -------------------------------------------------------------------------------------------
123268    -- 4262811 - Generate the Accrual Reversal lines
123269    -------------------------------------------------------------------------------------------
123270    BEGIN
123271       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
123272                               (g_array_event(p_event_id).array_value_num('header_index'));
123273       IF l_acc_rev_flag IS NULL THEN
123274          l_acc_rev_flag := 'N';
123275       END IF;
123276    EXCEPTION
123277       WHEN OTHERS THEN
123278          l_acc_rev_flag := 'N';
123279    END;
123280    --
123281    IF (l_acc_rev_flag = 'Y') THEN
123282 
123283        -- 4645092  ------------------------------------------------------------------------------
123284        -- To allow MPA report to determine if it should generate report process
123285        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
123286        ------------------------------------------------------------------------------------------
123287 
123288        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
123289        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
123290    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
123291    -- call ADRs
123292    -- Bug 4922099
123293    --
123294    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
123295         (NVL(l_actual_upg_option, 'N') = 'O') OR
123296         (NVL(l_enc_upg_option, 'N') = 'O')
123297       )
123298    THEN
123299    NULL;
123300    --
123301    --
123302    
123303   l_ccid := AcctDerRule_4(
123304            p_application_id           => p_application_id
123305          , p_ae_header_id             => l_ae_header_id 
123306 , p_source_4 => p_source_4
123307          , x_transaction_coa_id       => l_adr_transaction_coa_id
123308          , x_accounting_coa_id        => l_adr_accounting_coa_id
123309          , x_value_type_code          => l_adr_value_type_code
123310          , p_side                     => 'NA'
123311    );
123312 
123313    xla_ae_lines_pkg.set_ccid(
123314     p_code_combination_id          => l_ccid
123315   , p_value_type_code              => l_adr_value_type_code
123316   , p_transaction_coa_id           => l_adr_transaction_coa_id
123317   , p_accounting_coa_id            => l_adr_accounting_coa_id
123318   , p_adr_code                     => 'CST_DEFAULT'
123319   , p_adr_type_code                => 'S'
123320   , p_component_type               => l_component_type
123321   , p_component_code               => l_component_code
123322   , p_component_type_code          => l_component_type_code
123323   , p_component_appl_id            => l_component_appl_id
123324   , p_amb_context_code             => l_amb_context_code
123325   , p_side                         => 'NA'
123326   );
123327 
123328 
123329    --
123330    --
123331    END IF;
123332 
123333        --
123334        -- Update the line information that should be overwritten
123335        --
123336        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
123337                                          p_header_num   => 1);
123338        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
123339 
123340        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
123341 
123342        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
123343           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
123344        END IF;
123345 
123346       --
123347       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
123348       --
123349       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
123350           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
123351       ELSE
123352           ---------------------------------------------------------------------------------------------------
123353           -- 4262811a Switch Sign
123354           ---------------------------------------------------------------------------------------------------
123355           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
123356           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
123357                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
123358           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
123359                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
123360           -- 5132302
123361           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
123362                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
123363 
123364       END IF;
123365 
123366       -- 4955764
123367       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
123368       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
123369 
123370 
123371       XLA_AE_LINES_PKG.ValidateCurrentLine;
123372       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
123373 
123374       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
123375                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
123376                ,p_balance_type_code => l_balance_type_code);
123377 
123378    END IF;
123379 
123380    -----------------------------------------------------------------------------------------
123381    -- 4262811 Multiperiod Accounting
123382    -----------------------------------------------------------------------------------------
123383      -- No MPA option is assigned.
123384 
123385 
123386 END IF;
123387 END IF;
123388 --
123389 
123390 --
123391 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
123392    trace
123393       (p_msg      => 'END of AcctLineType_223'
123394       ,p_level    => C_LEVEL_PROCEDURE
123395       ,p_module   => l_log_module);
123396 END IF;
123397 --
123398 EXCEPTION
123399   WHEN xla_exceptions_pkg.application_exception THEN
123400       RAISE;
123401   WHEN OTHERS THEN
123402        xla_exceptions_pkg.raise_message
123403            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_223');
123404 END AcctLineType_223;
123405 --
123406 
123407 ---------------------------------------
123408 --
123409 -- PRIVATE FUNCTION
123410 --         AcctLineType_224
123411 --
123412 ---------------------------------------
123413 PROCEDURE AcctLineType_224 (
123414   p_application_id        IN NUMBER
123415  ,p_event_id              IN NUMBER
123416  ,p_calculate_acctd_flag  IN VARCHAR2
123417  ,p_calculate_g_l_flag    IN VARCHAR2
123418  ,p_actual_flag           IN OUT VARCHAR2
123419  ,p_balance_type_code     OUT VARCHAR2
123420  ,p_gain_or_loss_ref      OUT VARCHAR2
123421  
123422 --Cost Management Default Account
123423  , p_source_4            IN NUMBER
123424 --DISTRIBUTION_IDENTIFIER
123425  , p_source_11            IN NUMBER
123426 --Distribution Type
123427  , p_source_12            IN VARCHAR2
123428  , p_source_12_meaning    IN VARCHAR2
123429 --Entered Currency Code
123430  , p_source_15            IN VARCHAR2
123431 --Entered Amount
123432  , p_source_18            IN NUMBER
123433 --Currency Conversion Date
123434  , p_source_19            IN DATE
123435 --Currency Conversion Rate
123436  , p_source_20            IN NUMBER
123437 --Currency Conversion Type
123438  , p_source_21            IN VARCHAR2
123439 --Accounted Amount
123440  , p_source_22            IN NUMBER
123441 --Accounting Line Type
123442  , p_source_24            IN NUMBER
123443 )
123444 IS
123445 
123446 l_component_type              VARCHAR2(80);
123447 l_component_code              VARCHAR2(30);
123448 l_component_type_code         VARCHAR2(1);
123449 l_component_appl_id           INTEGER;
123450 l_amb_context_code            VARCHAR2(30);
123451 l_entity_code                 VARCHAR2(30);
123452 l_event_class_code            VARCHAR2(30);
123453 l_ae_header_id                NUMBER;
123454 l_event_type_code             VARCHAR2(30);
123455 l_line_definition_code        VARCHAR2(30);
123456 l_line_definition_owner_code  VARCHAR2(1);
123457 --
123458 -- adr variables
123459 l_segment                     VARCHAR2(30);
123460 l_ccid                        NUMBER;
123461 l_adr_transaction_coa_id      NUMBER;
123462 l_adr_accounting_coa_id       NUMBER;
123463 l_adr_flexfield_segment_code  VARCHAR2(30);
123464 l_adr_flex_value_set_id       NUMBER;
123465 l_adr_value_type_code         VARCHAR2(30);
123466 l_adr_value_combination_id    NUMBER;
123467 l_adr_value_segment_code      VARCHAR2(30);
123468 
123469 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
123470 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
123471 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
123472 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
123473 
123474 -- 4262811 Variables ------------------------------------------------------------------------------------------
123475 l_entered_amt_idx             NUMBER;
123476 l_accted_amt_idx              NUMBER;
123477 l_acc_rev_flag                VARCHAR2(1);
123478 l_accrual_line_num            NUMBER;
123479 l_tmp_amt                     NUMBER;
123480 l_acc_rev_natural_side_code   VARCHAR2(1);
123481 
123482 l_num_entries                 NUMBER;
123483 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
123484 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
123485 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
123486 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
123487 l_recog_line_1                NUMBER;
123488 l_recog_line_2                NUMBER;
123489 
123490 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
123491 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
123492 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
123493 
123494 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
123495 
123496 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
123497 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
123498 
123499 ---------------------------------------------------------------------------------------------------------------
123500 
123501 
123502 --
123503 -- bulk performance
123504 --
123505 l_balance_type_code           VARCHAR2(1);
123506 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
123507 l_log_module                  VARCHAR2(240);
123508 
123509 --
123510 -- Upgrade strategy
123511 --
123512 l_actual_upg_option           VARCHAR2(1);
123513 l_enc_upg_option           VARCHAR2(1);
123514 
123515 --
123516 BEGIN
123517 --
123518 IF g_log_enabled THEN
123519       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_224';
123520 END IF;
123521 --
123522 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
123523 
123524       trace
123525          (p_msg      => 'BEGIN of AcctLineType_224'
123526          ,p_level    => C_LEVEL_PROCEDURE
123527          ,p_module   => l_log_module);
123528 
123529 END IF;
123530 --
123531 l_component_type             := 'AMB_JLT';
123532 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
123533 l_component_type_code        := 'S';
123534 l_component_appl_id          :=  707;
123535 l_amb_context_code           := 'DEFAULT';
123536 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
123537 l_event_class_code           := 'USER_DEFINE';
123538 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
123539 l_line_definition_owner_code := 'S';
123540 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
123541 --
123542 l_balance_type_code          := 'A';
123543 l_segment                     := NULL;
123544 l_ccid                        := NULL;
123545 l_adr_transaction_coa_id      := NULL;
123546 l_adr_accounting_coa_id       := NULL;
123547 l_adr_flexfield_segment_code  := NULL;
123548 l_adr_flex_value_set_id       := NULL;
123549 l_adr_value_type_code         := NULL;
123550 l_adr_value_combination_id    := NULL;
123551 l_adr_value_segment_code      := NULL;
123552 
123553 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
123554 l_bflow_class_code           := '';    -- 4219869 Business Flow
123555 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
123556 l_budgetary_control_flag     := 'N';
123557 
123558 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
123559 l_bflow_applied_to_amt       := NULL; -- 5132302
123560 l_entered_amt_idx            := NULL;          -- 4262811
123561 l_accted_amt_idx             := NULL;          -- 4262811
123562 l_acc_rev_flag               := NULL;          -- 4262811
123563 l_accrual_line_num           := NULL;          -- 4262811
123564 l_tmp_amt                    := NULL;          -- 4262811
123565 --
123566  
123567 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
123568     l_balance_type_code <> 'B' THEN
123569 IF NVL(p_source_24,9E125) =  6
123570  THEN 
123571 
123572    --
123573    XLA_AE_LINES_PKG.SetNewLine;
123574 
123575    p_balance_type_code          := l_balance_type_code;
123576    -- set the flag so later we will know whether the gain loss line needs to be created
123577    
123578    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
123579      p_actual_flag :='A';
123580    END IF;
123581 
123582    --
123583    -- bulk performance
123584    --
123585    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
123586                                       p_header_num   => 0); -- 4262811
123587    --
123588    -- set accounting line options
123589    --
123590    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
123591            p_natural_side_code          => 'D'
123592          , p_gain_or_loss_flag          => 'N'
123593          , p_gl_transfer_mode_code      => 'S'
123594          , p_acct_entry_type_code       => 'A'
123595          , p_switch_side_flag           => 'Y'
123596          , p_merge_duplicate_code       => 'N'
123597          );
123598    --
123599    l_acc_rev_natural_side_code := 'C';  -- 4262811
123600    -- 
123601    --
123602    -- set accounting line type info
123603    --
123604    xla_ae_lines_pkg.SetAcctLineType
123605       (p_component_type             => l_component_type
123606       ,p_event_type_code            => l_event_type_code
123607       ,p_line_definition_owner_code => l_line_definition_owner_code
123608       ,p_line_definition_code       => l_line_definition_code
123609       ,p_accounting_line_code       => l_component_code
123610       ,p_accounting_line_type_code  => l_component_type_code
123611       ,p_accounting_line_appl_id    => l_component_appl_id
123612       ,p_amb_context_code           => l_amb_context_code
123613       ,p_entity_code                => l_entity_code
123614       ,p_event_class_code           => l_event_class_code);
123615    --
123616    -- set accounting class
123617    --
123618    xla_ae_lines_pkg.SetAcctClass(
123619            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
123620          , p_ae_header_id           => l_ae_header_id
123621          );
123622 
123623    --
123624    -- set rounding class
123625    --
123626    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
123627                       'PURCHASE_PRICE_VARIANCE';
123628 
123629    --
123630    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
123631    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
123632    --
123633    -- bulk performance
123634    --
123635    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
123636 
123637    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
123638       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
123639 
123640    -- 4955764
123641    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
123642       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
123643 
123644    -- 4458381 Public Sector Enh
123645    
123646    --
123647    -- set accounting attributes for the line type
123648    --
123649    l_entered_amt_idx := 3;
123650    l_accted_amt_idx  := 8;
123651    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
123652    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
123653    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
123654    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
123655    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
123656    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
123657    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
123658    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
123659    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
123660    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
123661    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
123662    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
123663    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
123664    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
123665    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
123666    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
123667    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
123668 
123669    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
123670    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
123671 
123672    ---------------------------------------------------------------------------------------------------------------
123673    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
123674    ---------------------------------------------------------------------------------------------------------------
123675    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
123676 
123677    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
123678    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
123679 
123680    IF xla_accounting_cache_pkg.GetValueChar
123681          (p_source_code         => 'LEDGER_CATEGORY_CODE'
123682          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
123683    AND l_bflow_method_code = 'PRIOR_ENTRY'
123684 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
123685    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
123686          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
123687        )
123688    THEN
123689          xla_ae_lines_pkg.BflowUpgEntry
123690            (p_business_method_code    => l_bflow_method_code
123691            ,p_business_class_code     => l_bflow_class_code
123692            ,p_balance_type            => l_balance_type_code);
123693    ELSE
123694       NULL;
123695 -- No business flow processing for business flow method of NONE.
123696    END IF;
123697 
123698    --
123699    -- call analytical criteria
123700    --
123701    
123702    --
123703    -- call description
123704    --
123705    -- No description or it is inherited.
123706    --
123707    -- call ADRs
123708    -- Bug 4922099
123709    --
123710    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
123711         (NVL(l_actual_upg_option, 'N') = 'O') OR
123712         (NVL(l_enc_upg_option, 'N') = 'O')
123713       )
123714    THEN
123715    NULL;
123716    --
123717    --
123718    
123719   l_ccid := AcctDerRule_4(
123720            p_application_id           => p_application_id
123721          , p_ae_header_id             => l_ae_header_id 
123722 , p_source_4 => p_source_4
123723          , x_transaction_coa_id       => l_adr_transaction_coa_id
123724          , x_accounting_coa_id        => l_adr_accounting_coa_id
123725          , x_value_type_code          => l_adr_value_type_code
123726          , p_side                     => 'NA'
123727    );
123728 
123729    xla_ae_lines_pkg.set_ccid(
123730     p_code_combination_id          => l_ccid
123731   , p_value_type_code              => l_adr_value_type_code
123732   , p_transaction_coa_id           => l_adr_transaction_coa_id
123733   , p_accounting_coa_id            => l_adr_accounting_coa_id
123734   , p_adr_code                     => 'CST_DEFAULT'
123735   , p_adr_type_code                => 'S'
123736   , p_component_type               => l_component_type
123737   , p_component_code               => l_component_code
123738   , p_component_type_code          => l_component_type_code
123739   , p_component_appl_id            => l_component_appl_id
123740   , p_amb_context_code             => l_amb_context_code
123741   , p_side                         => 'NA'
123742   );
123743 
123744 
123745    --
123746    --
123747    END IF;
123748    --
123749    -- Bug 4922099
123750    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
123751           (NVL(l_enc_upg_option, 'N') = 'O')
123752         ) AND
123753         (l_bflow_method_code = 'PRIOR_ENTRY')
123754       )
123755    THEN
123756       IF
123757       --
123758       1 = 2
123759       --
123760       THEN
123761       xla_accounting_err_pkg.build_message
123762                                     (p_appli_s_name            => 'XLA'
123763                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
123764                                     ,p_token_1                 => 'LINE_NUMBER'
123765                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
123766                                     ,p_token_2                 => 'LINE_TYPE_NAME'
123767                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
123768                                                                              l_component_type
123769                                                                             ,l_component_code
123770                                                                             ,l_component_type_code
123771                                                                             ,l_component_appl_id
123772                                                                             ,l_amb_context_code
123773                                                                             ,l_entity_code
123774                                                                             ,l_event_class_code
123775                                                                            )
123776                                     ,p_token_3                 => 'OWNER'
123777                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
123778                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
123779                                                                           ,p_lookup_code    => l_component_type_code
123780                                                                          )
123781                                     ,p_token_4                 => 'PRODUCT_NAME'
123782                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
123783                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
123784                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
123785                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
123786                                     ,p_ae_header_id            =>  NULL
123787                                        );
123788 
123789         IF (C_LEVEL_ERROR>= g_log_level) THEN
123790                  trace
123791                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
123792                       ,p_level    => C_LEVEL_ERROR
123793                       ,p_module   => l_log_module);
123794         END IF;
123795       END IF;
123796    END IF;
123797    --
123798    --
123799    ------------------------------------------------------------------------------------------------
123800    -- 4219869 Business Flow
123801    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
123802    -- Prior Entry.  Currently, the following code is always generated.
123803    ------------------------------------------------------------------------------------------------
123804    XLA_AE_LINES_PKG.ValidateCurrentLine;
123805 
123806    ------------------------------------------------------------------------------------
123807    -- 4219869 Business Flow
123808    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
123809    ------------------------------------------------------------------------------------
123810    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
123811 
123812    ----------------------------------------------------------------------------------
123813    -- 4219869 Business Flow
123814    -- Update journal entry status -- Need to generate this within IF <condition>
123815    ----------------------------------------------------------------------------------
123816    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
123817          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
123818          ,p_balance_type_code => l_balance_type_code
123819          );
123820 
123821    -------------------------------------------------------------------------------------------
123822    -- 4262811 - Generate the Accrual Reversal lines
123823    -------------------------------------------------------------------------------------------
123824    BEGIN
123825       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
123826                               (g_array_event(p_event_id).array_value_num('header_index'));
123827       IF l_acc_rev_flag IS NULL THEN
123828          l_acc_rev_flag := 'N';
123829       END IF;
123830    EXCEPTION
123831       WHEN OTHERS THEN
123832          l_acc_rev_flag := 'N';
123833    END;
123834    --
123835    IF (l_acc_rev_flag = 'Y') THEN
123836 
123837        -- 4645092  ------------------------------------------------------------------------------
123838        -- To allow MPA report to determine if it should generate report process
123839        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
123840        ------------------------------------------------------------------------------------------
123841 
123842        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
123843        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
123844    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
123845    -- call ADRs
123846    -- Bug 4922099
123847    --
123848    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
123849         (NVL(l_actual_upg_option, 'N') = 'O') OR
123850         (NVL(l_enc_upg_option, 'N') = 'O')
123851       )
123852    THEN
123853    NULL;
123854    --
123855    --
123856    
123857   l_ccid := AcctDerRule_4(
123858            p_application_id           => p_application_id
123859          , p_ae_header_id             => l_ae_header_id 
123860 , p_source_4 => p_source_4
123861          , x_transaction_coa_id       => l_adr_transaction_coa_id
123862          , x_accounting_coa_id        => l_adr_accounting_coa_id
123863          , x_value_type_code          => l_adr_value_type_code
123864          , p_side                     => 'NA'
123865    );
123866 
123867    xla_ae_lines_pkg.set_ccid(
123868     p_code_combination_id          => l_ccid
123869   , p_value_type_code              => l_adr_value_type_code
123870   , p_transaction_coa_id           => l_adr_transaction_coa_id
123871   , p_accounting_coa_id            => l_adr_accounting_coa_id
123872   , p_adr_code                     => 'CST_DEFAULT'
123873   , p_adr_type_code                => 'S'
123874   , p_component_type               => l_component_type
123875   , p_component_code               => l_component_code
123876   , p_component_type_code          => l_component_type_code
123877   , p_component_appl_id            => l_component_appl_id
123878   , p_amb_context_code             => l_amb_context_code
123879   , p_side                         => 'NA'
123880   );
123881 
123882 
123883    --
123884    --
123885    END IF;
123886 
123887        --
123888        -- Update the line information that should be overwritten
123889        --
123890        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
123891                                          p_header_num   => 1);
123892        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
123893 
123894        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
123895 
123896        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
123897           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
123898        END IF;
123899 
123900       --
123901       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
123902       --
123903       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
123904           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
123905       ELSE
123906           ---------------------------------------------------------------------------------------------------
123907           -- 4262811a Switch Sign
123908           ---------------------------------------------------------------------------------------------------
123909           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
123910           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
123911                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
123912           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
123913                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
123914           -- 5132302
123915           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
123916                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
123917 
123918       END IF;
123919 
123920       -- 4955764
123921       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
123922       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
123923 
123924 
123925       XLA_AE_LINES_PKG.ValidateCurrentLine;
123926       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
123927 
123928       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
123929                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
123930                ,p_balance_type_code => l_balance_type_code);
123931 
123932    END IF;
123933 
123934    -----------------------------------------------------------------------------------------
123935    -- 4262811 Multiperiod Accounting
123936    -----------------------------------------------------------------------------------------
123937      -- No MPA option is assigned.
123938 
123939 
123940 END IF;
123941 END IF;
123942 --
123943 
123944 --
123945 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
123946    trace
123947       (p_msg      => 'END of AcctLineType_224'
123948       ,p_level    => C_LEVEL_PROCEDURE
123949       ,p_module   => l_log_module);
123950 END IF;
123951 --
123952 EXCEPTION
123953   WHEN xla_exceptions_pkg.application_exception THEN
123954       RAISE;
123955   WHEN OTHERS THEN
123956        xla_exceptions_pkg.raise_message
123957            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_224');
123958 END AcctLineType_224;
123959 --
123960 
123961 ---------------------------------------
123962 --
123963 -- PRIVATE FUNCTION
123964 --         AcctLineType_225
123965 --
123966 ---------------------------------------
123967 PROCEDURE AcctLineType_225 (
123968   p_application_id        IN NUMBER
123969  ,p_event_id              IN NUMBER
123970  ,p_calculate_acctd_flag  IN VARCHAR2
123971  ,p_calculate_g_l_flag    IN VARCHAR2
123972  ,p_actual_flag           IN OUT VARCHAR2
123973  ,p_balance_type_code     OUT VARCHAR2
123974  ,p_gain_or_loss_ref      OUT VARCHAR2
123975  
123976 --Cost Management Default Account
123977  , p_source_4            IN NUMBER
123978 --DISTRIBUTION_IDENTIFIER
123979  , p_source_11            IN NUMBER
123980 --Distribution Type
123981  , p_source_12            IN VARCHAR2
123982  , p_source_12_meaning    IN VARCHAR2
123983 --Entered Currency Code
123984  , p_source_15            IN VARCHAR2
123985 --Entered Amount
123986  , p_source_18            IN NUMBER
123987 --Currency Conversion Date
123988  , p_source_19            IN DATE
123989 --Currency Conversion Rate
123990  , p_source_20            IN NUMBER
123991 --Currency Conversion Type
123992  , p_source_21            IN VARCHAR2
123993 --Accounted Amount
123994  , p_source_22            IN NUMBER
123995 --Accounting Line Type
123996  , p_source_24            IN NUMBER
123997 )
123998 IS
123999 
124000 l_component_type              VARCHAR2(80);
124001 l_component_code              VARCHAR2(30);
124002 l_component_type_code         VARCHAR2(1);
124003 l_component_appl_id           INTEGER;
124004 l_amb_context_code            VARCHAR2(30);
124005 l_entity_code                 VARCHAR2(30);
124006 l_event_class_code            VARCHAR2(30);
124007 l_ae_header_id                NUMBER;
124008 l_event_type_code             VARCHAR2(30);
124009 l_line_definition_code        VARCHAR2(30);
124010 l_line_definition_owner_code  VARCHAR2(1);
124011 --
124012 -- adr variables
124013 l_segment                     VARCHAR2(30);
124014 l_ccid                        NUMBER;
124015 l_adr_transaction_coa_id      NUMBER;
124016 l_adr_accounting_coa_id       NUMBER;
124017 l_adr_flexfield_segment_code  VARCHAR2(30);
124018 l_adr_flex_value_set_id       NUMBER;
124019 l_adr_value_type_code         VARCHAR2(30);
124020 l_adr_value_combination_id    NUMBER;
124021 l_adr_value_segment_code      VARCHAR2(30);
124022 
124023 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
124024 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
124025 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
124026 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
124027 
124028 -- 4262811 Variables ------------------------------------------------------------------------------------------
124029 l_entered_amt_idx             NUMBER;
124030 l_accted_amt_idx              NUMBER;
124031 l_acc_rev_flag                VARCHAR2(1);
124032 l_accrual_line_num            NUMBER;
124033 l_tmp_amt                     NUMBER;
124034 l_acc_rev_natural_side_code   VARCHAR2(1);
124035 
124036 l_num_entries                 NUMBER;
124037 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
124038 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
124039 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
124040 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
124041 l_recog_line_1                NUMBER;
124042 l_recog_line_2                NUMBER;
124043 
124044 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
124045 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
124046 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
124047 
124048 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
124049 
124050 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
124051 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
124052 
124053 ---------------------------------------------------------------------------------------------------------------
124054 
124055 
124056 --
124057 -- bulk performance
124058 --
124059 l_balance_type_code           VARCHAR2(1);
124060 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
124061 l_log_module                  VARCHAR2(240);
124062 
124063 --
124064 -- Upgrade strategy
124065 --
124066 l_actual_upg_option           VARCHAR2(1);
124067 l_enc_upg_option           VARCHAR2(1);
124068 
124069 --
124070 BEGIN
124071 --
124072 IF g_log_enabled THEN
124073       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_225';
124074 END IF;
124075 --
124076 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
124077 
124078       trace
124079          (p_msg      => 'BEGIN of AcctLineType_225'
124080          ,p_level    => C_LEVEL_PROCEDURE
124081          ,p_module   => l_log_module);
124082 
124083 END IF;
124084 --
124085 l_component_type             := 'AMB_JLT';
124086 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
124087 l_component_type_code        := 'S';
124088 l_component_appl_id          :=  707;
124089 l_amb_context_code           := 'DEFAULT';
124090 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
124091 l_event_class_code           := 'DIR_INTERORG_SHIP';
124092 l_event_type_code            := 'DIR_INTERORG_SHIP_ALL';
124093 l_line_definition_owner_code := 'S';
124094 l_line_definition_code       := 'DIRECT_INTERORG_SHIP';
124095 --
124096 l_balance_type_code          := 'A';
124097 l_segment                     := NULL;
124098 l_ccid                        := NULL;
124099 l_adr_transaction_coa_id      := NULL;
124100 l_adr_accounting_coa_id       := NULL;
124101 l_adr_flexfield_segment_code  := NULL;
124102 l_adr_flex_value_set_id       := NULL;
124103 l_adr_value_type_code         := NULL;
124104 l_adr_value_combination_id    := NULL;
124105 l_adr_value_segment_code      := NULL;
124106 
124107 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
124108 l_bflow_class_code           := '';    -- 4219869 Business Flow
124109 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
124110 l_budgetary_control_flag     := 'N';
124111 
124112 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
124113 l_bflow_applied_to_amt       := NULL; -- 5132302
124114 l_entered_amt_idx            := NULL;          -- 4262811
124115 l_accted_amt_idx             := NULL;          -- 4262811
124116 l_acc_rev_flag               := NULL;          -- 4262811
124117 l_accrual_line_num           := NULL;          -- 4262811
124118 l_tmp_amt                    := NULL;          -- 4262811
124119 --
124120  
124121 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
124122     l_balance_type_code <> 'B' THEN
124123 IF NVL(p_source_24,9E125) =  6
124124  THEN 
124125 
124126    --
124127    XLA_AE_LINES_PKG.SetNewLine;
124128 
124129    p_balance_type_code          := l_balance_type_code;
124130    -- set the flag so later we will know whether the gain loss line needs to be created
124131    
124132    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
124133      p_actual_flag :='A';
124134    END IF;
124135 
124136    --
124137    -- bulk performance
124138    --
124139    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
124140                                       p_header_num   => 0); -- 4262811
124141    --
124142    -- set accounting line options
124143    --
124144    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
124145            p_natural_side_code          => 'D'
124146          , p_gain_or_loss_flag          => 'N'
124147          , p_gl_transfer_mode_code      => 'S'
124148          , p_acct_entry_type_code       => 'A'
124149          , p_switch_side_flag           => 'Y'
124150          , p_merge_duplicate_code       => 'N'
124151          );
124152    --
124153    l_acc_rev_natural_side_code := 'C';  -- 4262811
124154    -- 
124155    --
124156    -- set accounting line type info
124157    --
124158    xla_ae_lines_pkg.SetAcctLineType
124159       (p_component_type             => l_component_type
124160       ,p_event_type_code            => l_event_type_code
124161       ,p_line_definition_owner_code => l_line_definition_owner_code
124162       ,p_line_definition_code       => l_line_definition_code
124163       ,p_accounting_line_code       => l_component_code
124164       ,p_accounting_line_type_code  => l_component_type_code
124165       ,p_accounting_line_appl_id    => l_component_appl_id
124166       ,p_amb_context_code           => l_amb_context_code
124167       ,p_entity_code                => l_entity_code
124168       ,p_event_class_code           => l_event_class_code);
124169    --
124170    -- set accounting class
124171    --
124172    xla_ae_lines_pkg.SetAcctClass(
124173            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
124174          , p_ae_header_id           => l_ae_header_id
124175          );
124176 
124177    --
124178    -- set rounding class
124179    --
124180    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
124181                       'PURCHASE_PRICE_VARIANCE';
124182 
124183    --
124184    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
124185    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
124186    --
124187    -- bulk performance
124188    --
124189    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
124190 
124191    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
124192       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
124193 
124194    -- 4955764
124195    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
124196       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
124197 
124198    -- 4458381 Public Sector Enh
124199    
124200    --
124201    -- set accounting attributes for the line type
124202    --
124203    l_entered_amt_idx := 3;
124204    l_accted_amt_idx  := 8;
124205    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
124206    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
124207    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
124208    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
124209    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
124210    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
124211    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
124212    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
124213    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
124214    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
124215    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
124216    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
124217    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
124218    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
124219    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
124220    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
124221    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
124222 
124223    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
124224    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
124225 
124226    ---------------------------------------------------------------------------------------------------------------
124227    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
124228    ---------------------------------------------------------------------------------------------------------------
124229    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
124230 
124231    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
124232    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
124233 
124234    IF xla_accounting_cache_pkg.GetValueChar
124235          (p_source_code         => 'LEDGER_CATEGORY_CODE'
124236          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
124237    AND l_bflow_method_code = 'PRIOR_ENTRY'
124238 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
124239    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
124240          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
124241        )
124242    THEN
124243          xla_ae_lines_pkg.BflowUpgEntry
124244            (p_business_method_code    => l_bflow_method_code
124245            ,p_business_class_code     => l_bflow_class_code
124246            ,p_balance_type            => l_balance_type_code);
124247    ELSE
124248       NULL;
124249 -- No business flow processing for business flow method of NONE.
124250    END IF;
124251 
124252    --
124253    -- call analytical criteria
124254    --
124255    
124256    --
124257    -- call description
124258    --
124259    -- No description or it is inherited.
124260    --
124261    -- call ADRs
124262    -- Bug 4922099
124263    --
124264    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
124265         (NVL(l_actual_upg_option, 'N') = 'O') OR
124266         (NVL(l_enc_upg_option, 'N') = 'O')
124267       )
124268    THEN
124269    NULL;
124270    --
124271    --
124272    
124273   l_ccid := AcctDerRule_4(
124274            p_application_id           => p_application_id
124275          , p_ae_header_id             => l_ae_header_id 
124276 , p_source_4 => p_source_4
124277          , x_transaction_coa_id       => l_adr_transaction_coa_id
124278          , x_accounting_coa_id        => l_adr_accounting_coa_id
124279          , x_value_type_code          => l_adr_value_type_code
124280          , p_side                     => 'NA'
124281    );
124282 
124283    xla_ae_lines_pkg.set_ccid(
124284     p_code_combination_id          => l_ccid
124285   , p_value_type_code              => l_adr_value_type_code
124286   , p_transaction_coa_id           => l_adr_transaction_coa_id
124287   , p_accounting_coa_id            => l_adr_accounting_coa_id
124288   , p_adr_code                     => 'CST_DEFAULT'
124289   , p_adr_type_code                => 'S'
124290   , p_component_type               => l_component_type
124291   , p_component_code               => l_component_code
124292   , p_component_type_code          => l_component_type_code
124293   , p_component_appl_id            => l_component_appl_id
124294   , p_amb_context_code             => l_amb_context_code
124295   , p_side                         => 'NA'
124296   );
124297 
124298 
124299    --
124300    --
124301    END IF;
124302    --
124303    -- Bug 4922099
124304    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
124305           (NVL(l_enc_upg_option, 'N') = 'O')
124306         ) AND
124307         (l_bflow_method_code = 'PRIOR_ENTRY')
124308       )
124309    THEN
124310       IF
124311       --
124312       1 = 2
124313       --
124314       THEN
124315       xla_accounting_err_pkg.build_message
124316                                     (p_appli_s_name            => 'XLA'
124317                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
124318                                     ,p_token_1                 => 'LINE_NUMBER'
124319                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
124320                                     ,p_token_2                 => 'LINE_TYPE_NAME'
124321                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
124322                                                                              l_component_type
124323                                                                             ,l_component_code
124324                                                                             ,l_component_type_code
124325                                                                             ,l_component_appl_id
124326                                                                             ,l_amb_context_code
124327                                                                             ,l_entity_code
124328                                                                             ,l_event_class_code
124329                                                                            )
124330                                     ,p_token_3                 => 'OWNER'
124331                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
124332                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
124333                                                                           ,p_lookup_code    => l_component_type_code
124334                                                                          )
124335                                     ,p_token_4                 => 'PRODUCT_NAME'
124336                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
124337                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
124338                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
124339                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
124340                                     ,p_ae_header_id            =>  NULL
124341                                        );
124342 
124343         IF (C_LEVEL_ERROR>= g_log_level) THEN
124344                  trace
124345                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
124346                       ,p_level    => C_LEVEL_ERROR
124347                       ,p_module   => l_log_module);
124348         END IF;
124349       END IF;
124350    END IF;
124351    --
124352    --
124353    ------------------------------------------------------------------------------------------------
124354    -- 4219869 Business Flow
124355    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
124356    -- Prior Entry.  Currently, the following code is always generated.
124357    ------------------------------------------------------------------------------------------------
124358    XLA_AE_LINES_PKG.ValidateCurrentLine;
124359 
124360    ------------------------------------------------------------------------------------
124361    -- 4219869 Business Flow
124362    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
124363    ------------------------------------------------------------------------------------
124364    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
124365 
124366    ----------------------------------------------------------------------------------
124367    -- 4219869 Business Flow
124368    -- Update journal entry status -- Need to generate this within IF <condition>
124369    ----------------------------------------------------------------------------------
124370    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
124371          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
124372          ,p_balance_type_code => l_balance_type_code
124373          );
124374 
124375    -------------------------------------------------------------------------------------------
124376    -- 4262811 - Generate the Accrual Reversal lines
124377    -------------------------------------------------------------------------------------------
124378    BEGIN
124379       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
124380                               (g_array_event(p_event_id).array_value_num('header_index'));
124381       IF l_acc_rev_flag IS NULL THEN
124382          l_acc_rev_flag := 'N';
124383       END IF;
124384    EXCEPTION
124385       WHEN OTHERS THEN
124386          l_acc_rev_flag := 'N';
124387    END;
124388    --
124389    IF (l_acc_rev_flag = 'Y') THEN
124390 
124391        -- 4645092  ------------------------------------------------------------------------------
124392        -- To allow MPA report to determine if it should generate report process
124393        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
124394        ------------------------------------------------------------------------------------------
124395 
124396        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
124397        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
124398    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
124399    -- call ADRs
124400    -- Bug 4922099
124401    --
124402    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
124403         (NVL(l_actual_upg_option, 'N') = 'O') OR
124404         (NVL(l_enc_upg_option, 'N') = 'O')
124405       )
124406    THEN
124407    NULL;
124408    --
124409    --
124410    
124411   l_ccid := AcctDerRule_4(
124412            p_application_id           => p_application_id
124413          , p_ae_header_id             => l_ae_header_id 
124414 , p_source_4 => p_source_4
124415          , x_transaction_coa_id       => l_adr_transaction_coa_id
124416          , x_accounting_coa_id        => l_adr_accounting_coa_id
124417          , x_value_type_code          => l_adr_value_type_code
124418          , p_side                     => 'NA'
124419    );
124420 
124421    xla_ae_lines_pkg.set_ccid(
124422     p_code_combination_id          => l_ccid
124423   , p_value_type_code              => l_adr_value_type_code
124424   , p_transaction_coa_id           => l_adr_transaction_coa_id
124425   , p_accounting_coa_id            => l_adr_accounting_coa_id
124426   , p_adr_code                     => 'CST_DEFAULT'
124427   , p_adr_type_code                => 'S'
124428   , p_component_type               => l_component_type
124429   , p_component_code               => l_component_code
124430   , p_component_type_code          => l_component_type_code
124431   , p_component_appl_id            => l_component_appl_id
124432   , p_amb_context_code             => l_amb_context_code
124433   , p_side                         => 'NA'
124434   );
124435 
124436 
124437    --
124438    --
124439    END IF;
124440 
124441        --
124442        -- Update the line information that should be overwritten
124443        --
124444        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
124445                                          p_header_num   => 1);
124446        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
124447 
124448        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
124449 
124450        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
124451           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
124452        END IF;
124453 
124454       --
124455       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
124456       --
124457       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
124458           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
124459       ELSE
124460           ---------------------------------------------------------------------------------------------------
124461           -- 4262811a Switch Sign
124462           ---------------------------------------------------------------------------------------------------
124463           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
124464           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
124465                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
124466           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
124467                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
124468           -- 5132302
124469           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
124470                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
124471 
124472       END IF;
124473 
124474       -- 4955764
124475       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
124476       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
124477 
124478 
124479       XLA_AE_LINES_PKG.ValidateCurrentLine;
124480       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
124481 
124482       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
124483                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
124484                ,p_balance_type_code => l_balance_type_code);
124485 
124486    END IF;
124487 
124488    -----------------------------------------------------------------------------------------
124489    -- 4262811 Multiperiod Accounting
124490    -----------------------------------------------------------------------------------------
124491      -- No MPA option is assigned.
124492 
124493 
124494 END IF;
124495 END IF;
124496 --
124497 
124498 --
124499 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
124500    trace
124501       (p_msg      => 'END of AcctLineType_225'
124502       ,p_level    => C_LEVEL_PROCEDURE
124503       ,p_module   => l_log_module);
124504 END IF;
124505 --
124506 EXCEPTION
124507   WHEN xla_exceptions_pkg.application_exception THEN
124508       RAISE;
124509   WHEN OTHERS THEN
124510        xla_exceptions_pkg.raise_message
124511            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_225');
124512 END AcctLineType_225;
124513 --
124514 
124515 ---------------------------------------
124516 --
124517 -- PRIVATE FUNCTION
124518 --         AcctLineType_226
124519 --
124520 ---------------------------------------
124521 PROCEDURE AcctLineType_226 (
124522   p_application_id        IN NUMBER
124523  ,p_event_id              IN NUMBER
124524  ,p_calculate_acctd_flag  IN VARCHAR2
124525  ,p_calculate_g_l_flag    IN VARCHAR2
124526  ,p_actual_flag           IN OUT VARCHAR2
124527  ,p_balance_type_code     OUT VARCHAR2
124528  ,p_gain_or_loss_ref      OUT VARCHAR2
124529  
124530 --Cost Management Default Account
124531  , p_source_4            IN NUMBER
124532 --DISTRIBUTION_IDENTIFIER
124533  , p_source_11            IN NUMBER
124534 --Distribution Type
124535  , p_source_12            IN VARCHAR2
124536  , p_source_12_meaning    IN VARCHAR2
124537 --Entered Currency Code
124538  , p_source_15            IN VARCHAR2
124539 --Entered Amount
124540  , p_source_18            IN NUMBER
124541 --Currency Conversion Date
124542  , p_source_19            IN DATE
124543 --Currency Conversion Rate
124544  , p_source_20            IN NUMBER
124545 --Currency Conversion Type
124546  , p_source_21            IN VARCHAR2
124547 --Accounted Amount
124548  , p_source_22            IN NUMBER
124549 --Accounting Line Type
124550  , p_source_24            IN NUMBER
124551 )
124552 IS
124553 
124554 l_component_type              VARCHAR2(80);
124555 l_component_code              VARCHAR2(30);
124556 l_component_type_code         VARCHAR2(1);
124557 l_component_appl_id           INTEGER;
124558 l_amb_context_code            VARCHAR2(30);
124559 l_entity_code                 VARCHAR2(30);
124560 l_event_class_code            VARCHAR2(30);
124561 l_ae_header_id                NUMBER;
124562 l_event_type_code             VARCHAR2(30);
124563 l_line_definition_code        VARCHAR2(30);
124564 l_line_definition_owner_code  VARCHAR2(1);
124565 --
124566 -- adr variables
124567 l_segment                     VARCHAR2(30);
124568 l_ccid                        NUMBER;
124569 l_adr_transaction_coa_id      NUMBER;
124570 l_adr_accounting_coa_id       NUMBER;
124571 l_adr_flexfield_segment_code  VARCHAR2(30);
124572 l_adr_flex_value_set_id       NUMBER;
124573 l_adr_value_type_code         VARCHAR2(30);
124574 l_adr_value_combination_id    NUMBER;
124575 l_adr_value_segment_code      VARCHAR2(30);
124576 
124577 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
124578 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
124579 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
124580 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
124581 
124582 -- 4262811 Variables ------------------------------------------------------------------------------------------
124583 l_entered_amt_idx             NUMBER;
124584 l_accted_amt_idx              NUMBER;
124585 l_acc_rev_flag                VARCHAR2(1);
124586 l_accrual_line_num            NUMBER;
124587 l_tmp_amt                     NUMBER;
124588 l_acc_rev_natural_side_code   VARCHAR2(1);
124589 
124590 l_num_entries                 NUMBER;
124591 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
124592 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
124593 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
124594 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
124595 l_recog_line_1                NUMBER;
124596 l_recog_line_2                NUMBER;
124597 
124598 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
124599 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
124600 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
124601 
124602 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
124603 
124604 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
124605 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
124606 
124607 ---------------------------------------------------------------------------------------------------------------
124608 
124609 
124610 --
124611 -- bulk performance
124612 --
124613 l_balance_type_code           VARCHAR2(1);
124614 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
124615 l_log_module                  VARCHAR2(240);
124616 
124617 --
124618 -- Upgrade strategy
124619 --
124620 l_actual_upg_option           VARCHAR2(1);
124621 l_enc_upg_option           VARCHAR2(1);
124622 
124623 --
124624 BEGIN
124625 --
124626 IF g_log_enabled THEN
124627       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_226';
124628 END IF;
124629 --
124630 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
124631 
124632       trace
124633          (p_msg      => 'BEGIN of AcctLineType_226'
124634          ,p_level    => C_LEVEL_PROCEDURE
124635          ,p_module   => l_log_module);
124636 
124637 END IF;
124638 --
124639 l_component_type             := 'AMB_JLT';
124640 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
124641 l_component_type_code        := 'S';
124642 l_component_appl_id          :=  707;
124643 l_amb_context_code           := 'DEFAULT';
124644 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
124645 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
124646 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
124647 l_line_definition_owner_code := 'S';
124648 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_SHIP';
124649 --
124650 l_balance_type_code          := 'A';
124651 l_segment                     := NULL;
124652 l_ccid                        := NULL;
124653 l_adr_transaction_coa_id      := NULL;
124654 l_adr_accounting_coa_id       := NULL;
124655 l_adr_flexfield_segment_code  := NULL;
124656 l_adr_flex_value_set_id       := NULL;
124657 l_adr_value_type_code         := NULL;
124658 l_adr_value_combination_id    := NULL;
124659 l_adr_value_segment_code      := NULL;
124660 
124661 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
124662 l_bflow_class_code           := '';    -- 4219869 Business Flow
124663 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
124664 l_budgetary_control_flag     := 'N';
124665 
124666 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
124667 l_bflow_applied_to_amt       := NULL; -- 5132302
124668 l_entered_amt_idx            := NULL;          -- 4262811
124669 l_accted_amt_idx             := NULL;          -- 4262811
124670 l_acc_rev_flag               := NULL;          -- 4262811
124671 l_accrual_line_num           := NULL;          -- 4262811
124672 l_tmp_amt                    := NULL;          -- 4262811
124673 --
124674  
124675 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
124676     l_balance_type_code <> 'B' THEN
124677 IF NVL(p_source_24,9E125) =  6
124678  THEN 
124679 
124680    --
124681    XLA_AE_LINES_PKG.SetNewLine;
124682 
124683    p_balance_type_code          := l_balance_type_code;
124684    -- set the flag so later we will know whether the gain loss line needs to be created
124685    
124686    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
124687      p_actual_flag :='A';
124688    END IF;
124689 
124690    --
124691    -- bulk performance
124692    --
124693    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
124694                                       p_header_num   => 0); -- 4262811
124695    --
124696    -- set accounting line options
124697    --
124698    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
124699            p_natural_side_code          => 'D'
124700          , p_gain_or_loss_flag          => 'N'
124701          , p_gl_transfer_mode_code      => 'S'
124702          , p_acct_entry_type_code       => 'A'
124703          , p_switch_side_flag           => 'Y'
124704          , p_merge_duplicate_code       => 'N'
124705          );
124706    --
124707    l_acc_rev_natural_side_code := 'C';  -- 4262811
124708    -- 
124709    --
124710    -- set accounting line type info
124711    --
124712    xla_ae_lines_pkg.SetAcctLineType
124713       (p_component_type             => l_component_type
124714       ,p_event_type_code            => l_event_type_code
124715       ,p_line_definition_owner_code => l_line_definition_owner_code
124716       ,p_line_definition_code       => l_line_definition_code
124717       ,p_accounting_line_code       => l_component_code
124718       ,p_accounting_line_type_code  => l_component_type_code
124719       ,p_accounting_line_appl_id    => l_component_appl_id
124720       ,p_amb_context_code           => l_amb_context_code
124721       ,p_entity_code                => l_entity_code
124722       ,p_event_class_code           => l_event_class_code);
124723    --
124724    -- set accounting class
124725    --
124726    xla_ae_lines_pkg.SetAcctClass(
124727            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
124728          , p_ae_header_id           => l_ae_header_id
124729          );
124730 
124731    --
124732    -- set rounding class
124733    --
124734    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
124735                       'PURCHASE_PRICE_VARIANCE';
124736 
124737    --
124738    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
124739    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
124740    --
124741    -- bulk performance
124742    --
124743    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
124744 
124745    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
124746       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
124747 
124748    -- 4955764
124749    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
124750       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
124751 
124752    -- 4458381 Public Sector Enh
124753    
124754    --
124755    -- set accounting attributes for the line type
124756    --
124757    l_entered_amt_idx := 3;
124758    l_accted_amt_idx  := 8;
124759    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
124760    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
124761    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
124762    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
124763    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
124764    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
124765    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
124766    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
124767    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
124768    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
124769    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
124770    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
124771    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
124772    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
124773    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
124774    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
124775    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
124776 
124777    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
124778    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
124779 
124780    ---------------------------------------------------------------------------------------------------------------
124781    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
124782    ---------------------------------------------------------------------------------------------------------------
124783    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
124784 
124785    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
124786    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
124787 
124788    IF xla_accounting_cache_pkg.GetValueChar
124789          (p_source_code         => 'LEDGER_CATEGORY_CODE'
124790          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
124791    AND l_bflow_method_code = 'PRIOR_ENTRY'
124792 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
124793    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
124794          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
124795        )
124796    THEN
124797          xla_ae_lines_pkg.BflowUpgEntry
124798            (p_business_method_code    => l_bflow_method_code
124799            ,p_business_class_code     => l_bflow_class_code
124800            ,p_balance_type            => l_balance_type_code);
124801    ELSE
124802       NULL;
124803 -- No business flow processing for business flow method of NONE.
124804    END IF;
124805 
124806    --
124807    -- call analytical criteria
124808    --
124809    
124810    --
124811    -- call description
124812    --
124813    -- No description or it is inherited.
124814    --
124815    -- call ADRs
124816    -- Bug 4922099
124817    --
124818    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
124819         (NVL(l_actual_upg_option, 'N') = 'O') OR
124820         (NVL(l_enc_upg_option, 'N') = 'O')
124821       )
124822    THEN
124823    NULL;
124824    --
124825    --
124826    
124827   l_ccid := AcctDerRule_4(
124828            p_application_id           => p_application_id
124829          , p_ae_header_id             => l_ae_header_id 
124830 , p_source_4 => p_source_4
124831          , x_transaction_coa_id       => l_adr_transaction_coa_id
124832          , x_accounting_coa_id        => l_adr_accounting_coa_id
124833          , x_value_type_code          => l_adr_value_type_code
124834          , p_side                     => 'NA'
124835    );
124836 
124837    xla_ae_lines_pkg.set_ccid(
124838     p_code_combination_id          => l_ccid
124839   , p_value_type_code              => l_adr_value_type_code
124840   , p_transaction_coa_id           => l_adr_transaction_coa_id
124841   , p_accounting_coa_id            => l_adr_accounting_coa_id
124842   , p_adr_code                     => 'CST_DEFAULT'
124843   , p_adr_type_code                => 'S'
124844   , p_component_type               => l_component_type
124845   , p_component_code               => l_component_code
124846   , p_component_type_code          => l_component_type_code
124847   , p_component_appl_id            => l_component_appl_id
124848   , p_amb_context_code             => l_amb_context_code
124849   , p_side                         => 'NA'
124850   );
124851 
124852 
124853    --
124854    --
124855    END IF;
124856    --
124857    -- Bug 4922099
124858    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
124859           (NVL(l_enc_upg_option, 'N') = 'O')
124860         ) AND
124861         (l_bflow_method_code = 'PRIOR_ENTRY')
124862       )
124863    THEN
124864       IF
124865       --
124866       1 = 2
124867       --
124868       THEN
124869       xla_accounting_err_pkg.build_message
124870                                     (p_appli_s_name            => 'XLA'
124871                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
124872                                     ,p_token_1                 => 'LINE_NUMBER'
124873                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
124874                                     ,p_token_2                 => 'LINE_TYPE_NAME'
124875                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
124876                                                                              l_component_type
124877                                                                             ,l_component_code
124878                                                                             ,l_component_type_code
124879                                                                             ,l_component_appl_id
124880                                                                             ,l_amb_context_code
124881                                                                             ,l_entity_code
124882                                                                             ,l_event_class_code
124883                                                                            )
124884                                     ,p_token_3                 => 'OWNER'
124885                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
124886                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
124887                                                                           ,p_lookup_code    => l_component_type_code
124888                                                                          )
124889                                     ,p_token_4                 => 'PRODUCT_NAME'
124890                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
124891                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
124892                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
124893                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
124894                                     ,p_ae_header_id            =>  NULL
124895                                        );
124896 
124897         IF (C_LEVEL_ERROR>= g_log_level) THEN
124898                  trace
124899                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
124900                       ,p_level    => C_LEVEL_ERROR
124901                       ,p_module   => l_log_module);
124902         END IF;
124903       END IF;
124904    END IF;
124905    --
124906    --
124907    ------------------------------------------------------------------------------------------------
124908    -- 4219869 Business Flow
124909    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
124910    -- Prior Entry.  Currently, the following code is always generated.
124911    ------------------------------------------------------------------------------------------------
124912    XLA_AE_LINES_PKG.ValidateCurrentLine;
124913 
124914    ------------------------------------------------------------------------------------
124915    -- 4219869 Business Flow
124916    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
124917    ------------------------------------------------------------------------------------
124918    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
124919 
124920    ----------------------------------------------------------------------------------
124921    -- 4219869 Business Flow
124922    -- Update journal entry status -- Need to generate this within IF <condition>
124923    ----------------------------------------------------------------------------------
124924    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
124925          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
124926          ,p_balance_type_code => l_balance_type_code
124927          );
124928 
124929    -------------------------------------------------------------------------------------------
124930    -- 4262811 - Generate the Accrual Reversal lines
124931    -------------------------------------------------------------------------------------------
124932    BEGIN
124933       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
124934                               (g_array_event(p_event_id).array_value_num('header_index'));
124935       IF l_acc_rev_flag IS NULL THEN
124936          l_acc_rev_flag := 'N';
124937       END IF;
124938    EXCEPTION
124939       WHEN OTHERS THEN
124940          l_acc_rev_flag := 'N';
124941    END;
124942    --
124943    IF (l_acc_rev_flag = 'Y') THEN
124944 
124945        -- 4645092  ------------------------------------------------------------------------------
124946        -- To allow MPA report to determine if it should generate report process
124947        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
124948        ------------------------------------------------------------------------------------------
124949 
124950        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
124951        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
124952    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
124953    -- call ADRs
124954    -- Bug 4922099
124955    --
124956    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
124957         (NVL(l_actual_upg_option, 'N') = 'O') OR
124958         (NVL(l_enc_upg_option, 'N') = 'O')
124959       )
124960    THEN
124961    NULL;
124962    --
124963    --
124964    
124965   l_ccid := AcctDerRule_4(
124966            p_application_id           => p_application_id
124967          , p_ae_header_id             => l_ae_header_id 
124968 , p_source_4 => p_source_4
124969          , x_transaction_coa_id       => l_adr_transaction_coa_id
124970          , x_accounting_coa_id        => l_adr_accounting_coa_id
124971          , x_value_type_code          => l_adr_value_type_code
124972          , p_side                     => 'NA'
124973    );
124974 
124975    xla_ae_lines_pkg.set_ccid(
124976     p_code_combination_id          => l_ccid
124977   , p_value_type_code              => l_adr_value_type_code
124978   , p_transaction_coa_id           => l_adr_transaction_coa_id
124979   , p_accounting_coa_id            => l_adr_accounting_coa_id
124980   , p_adr_code                     => 'CST_DEFAULT'
124981   , p_adr_type_code                => 'S'
124982   , p_component_type               => l_component_type
124983   , p_component_code               => l_component_code
124984   , p_component_type_code          => l_component_type_code
124985   , p_component_appl_id            => l_component_appl_id
124986   , p_amb_context_code             => l_amb_context_code
124987   , p_side                         => 'NA'
124988   );
124989 
124990 
124991    --
124992    --
124993    END IF;
124994 
124995        --
124996        -- Update the line information that should be overwritten
124997        --
124998        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
124999                                          p_header_num   => 1);
125000        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
125001 
125002        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
125003 
125004        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
125005           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
125006        END IF;
125007 
125008       --
125009       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
125010       --
125011       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
125012           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
125013       ELSE
125014           ---------------------------------------------------------------------------------------------------
125015           -- 4262811a Switch Sign
125016           ---------------------------------------------------------------------------------------------------
125017           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
125018           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
125019                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
125020           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
125021                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
125022           -- 5132302
125023           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
125024                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
125025 
125026       END IF;
125027 
125028       -- 4955764
125029       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
125030       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
125031 
125032 
125033       XLA_AE_LINES_PKG.ValidateCurrentLine;
125034       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
125035 
125036       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
125037                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
125038                ,p_balance_type_code => l_balance_type_code);
125039 
125040    END IF;
125041 
125042    -----------------------------------------------------------------------------------------
125043    -- 4262811 Multiperiod Accounting
125044    -----------------------------------------------------------------------------------------
125045      -- No MPA option is assigned.
125046 
125047 
125048 END IF;
125049 END IF;
125050 --
125051 
125052 --
125053 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
125054    trace
125055       (p_msg      => 'END of AcctLineType_226'
125056       ,p_level    => C_LEVEL_PROCEDURE
125057       ,p_module   => l_log_module);
125058 END IF;
125059 --
125060 EXCEPTION
125061   WHEN xla_exceptions_pkg.application_exception THEN
125062       RAISE;
125063   WHEN OTHERS THEN
125064        xla_exceptions_pkg.raise_message
125065            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_226');
125066 END AcctLineType_226;
125067 --
125068 
125069 ---------------------------------------
125070 --
125071 -- PRIVATE FUNCTION
125072 --         AcctLineType_227
125073 --
125074 ---------------------------------------
125075 PROCEDURE AcctLineType_227 (
125076   p_application_id        IN NUMBER
125077  ,p_event_id              IN NUMBER
125078  ,p_calculate_acctd_flag  IN VARCHAR2
125079  ,p_calculate_g_l_flag    IN VARCHAR2
125080  ,p_actual_flag           IN OUT VARCHAR2
125081  ,p_balance_type_code     OUT VARCHAR2
125082  ,p_gain_or_loss_ref      OUT VARCHAR2
125083  
125084 --Cost Management Default Account
125085  , p_source_4            IN NUMBER
125086 --DISTRIBUTION_IDENTIFIER
125087  , p_source_11            IN NUMBER
125088 --Distribution Type
125089  , p_source_12            IN VARCHAR2
125090  , p_source_12_meaning    IN VARCHAR2
125091 --Entered Currency Code
125092  , p_source_15            IN VARCHAR2
125093 --Entered Amount
125094  , p_source_18            IN NUMBER
125095 --Currency Conversion Date
125096  , p_source_19            IN DATE
125097 --Currency Conversion Rate
125098  , p_source_20            IN NUMBER
125099 --Currency Conversion Type
125100  , p_source_21            IN VARCHAR2
125101 --Accounted Amount
125102  , p_source_22            IN NUMBER
125103 --Accounting Line Type
125104  , p_source_24            IN NUMBER
125105 )
125106 IS
125107 
125108 l_component_type              VARCHAR2(80);
125109 l_component_code              VARCHAR2(30);
125110 l_component_type_code         VARCHAR2(1);
125111 l_component_appl_id           INTEGER;
125112 l_amb_context_code            VARCHAR2(30);
125113 l_entity_code                 VARCHAR2(30);
125114 l_event_class_code            VARCHAR2(30);
125115 l_ae_header_id                NUMBER;
125116 l_event_type_code             VARCHAR2(30);
125117 l_line_definition_code        VARCHAR2(30);
125118 l_line_definition_owner_code  VARCHAR2(1);
125119 --
125120 -- adr variables
125121 l_segment                     VARCHAR2(30);
125122 l_ccid                        NUMBER;
125123 l_adr_transaction_coa_id      NUMBER;
125124 l_adr_accounting_coa_id       NUMBER;
125125 l_adr_flexfield_segment_code  VARCHAR2(30);
125126 l_adr_flex_value_set_id       NUMBER;
125127 l_adr_value_type_code         VARCHAR2(30);
125128 l_adr_value_combination_id    NUMBER;
125129 l_adr_value_segment_code      VARCHAR2(30);
125130 
125131 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
125132 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
125133 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
125134 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
125135 
125136 -- 4262811 Variables ------------------------------------------------------------------------------------------
125137 l_entered_amt_idx             NUMBER;
125138 l_accted_amt_idx              NUMBER;
125139 l_acc_rev_flag                VARCHAR2(1);
125140 l_accrual_line_num            NUMBER;
125141 l_tmp_amt                     NUMBER;
125142 l_acc_rev_natural_side_code   VARCHAR2(1);
125143 
125144 l_num_entries                 NUMBER;
125145 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
125146 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
125147 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
125148 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
125149 l_recog_line_1                NUMBER;
125150 l_recog_line_2                NUMBER;
125151 
125152 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
125153 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
125154 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
125155 
125156 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
125157 
125158 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
125159 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
125160 
125161 ---------------------------------------------------------------------------------------------------------------
125162 
125163 
125164 --
125165 -- bulk performance
125166 --
125167 l_balance_type_code           VARCHAR2(1);
125168 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
125169 l_log_module                  VARCHAR2(240);
125170 
125171 --
125172 -- Upgrade strategy
125173 --
125174 l_actual_upg_option           VARCHAR2(1);
125175 l_enc_upg_option           VARCHAR2(1);
125176 
125177 --
125178 BEGIN
125179 --
125180 IF g_log_enabled THEN
125181       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_227';
125182 END IF;
125183 --
125184 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
125185 
125186       trace
125187          (p_msg      => 'BEGIN of AcctLineType_227'
125188          ,p_level    => C_LEVEL_PROCEDURE
125189          ,p_module   => l_log_module);
125190 
125191 END IF;
125192 --
125193 l_component_type             := 'AMB_JLT';
125194 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
125195 l_component_type_code        := 'S';
125196 l_component_appl_id          :=  707;
125197 l_amb_context_code           := 'DEFAULT';
125198 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
125199 l_event_class_code           := 'USER_DEFINE';
125200 l_event_type_code            := 'UDIR_INTERORG_RCPT_NO_TP';
125201 l_line_definition_owner_code := 'S';
125202 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_NO_TP';
125203 --
125204 l_balance_type_code          := 'A';
125205 l_segment                     := NULL;
125206 l_ccid                        := NULL;
125207 l_adr_transaction_coa_id      := NULL;
125208 l_adr_accounting_coa_id       := NULL;
125209 l_adr_flexfield_segment_code  := NULL;
125210 l_adr_flex_value_set_id       := NULL;
125211 l_adr_value_type_code         := NULL;
125212 l_adr_value_combination_id    := NULL;
125213 l_adr_value_segment_code      := NULL;
125214 
125215 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
125216 l_bflow_class_code           := '';    -- 4219869 Business Flow
125217 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
125218 l_budgetary_control_flag     := 'N';
125219 
125220 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
125221 l_bflow_applied_to_amt       := NULL; -- 5132302
125222 l_entered_amt_idx            := NULL;          -- 4262811
125223 l_accted_amt_idx             := NULL;          -- 4262811
125224 l_acc_rev_flag               := NULL;          -- 4262811
125225 l_accrual_line_num           := NULL;          -- 4262811
125226 l_tmp_amt                    := NULL;          -- 4262811
125227 --
125228  
125229 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
125230     l_balance_type_code <> 'B' THEN
125231 IF NVL(p_source_24,9E125) =  6
125232  THEN 
125233 
125234    --
125235    XLA_AE_LINES_PKG.SetNewLine;
125236 
125237    p_balance_type_code          := l_balance_type_code;
125238    -- set the flag so later we will know whether the gain loss line needs to be created
125239    
125240    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
125241      p_actual_flag :='A';
125242    END IF;
125243 
125244    --
125245    -- bulk performance
125246    --
125247    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
125248                                       p_header_num   => 0); -- 4262811
125249    --
125250    -- set accounting line options
125251    --
125252    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
125253            p_natural_side_code          => 'D'
125254          , p_gain_or_loss_flag          => 'N'
125255          , p_gl_transfer_mode_code      => 'S'
125256          , p_acct_entry_type_code       => 'A'
125257          , p_switch_side_flag           => 'Y'
125258          , p_merge_duplicate_code       => 'N'
125259          );
125260    --
125261    l_acc_rev_natural_side_code := 'C';  -- 4262811
125262    -- 
125263    --
125264    -- set accounting line type info
125265    --
125266    xla_ae_lines_pkg.SetAcctLineType
125267       (p_component_type             => l_component_type
125268       ,p_event_type_code            => l_event_type_code
125269       ,p_line_definition_owner_code => l_line_definition_owner_code
125270       ,p_line_definition_code       => l_line_definition_code
125271       ,p_accounting_line_code       => l_component_code
125272       ,p_accounting_line_type_code  => l_component_type_code
125273       ,p_accounting_line_appl_id    => l_component_appl_id
125274       ,p_amb_context_code           => l_amb_context_code
125275       ,p_entity_code                => l_entity_code
125276       ,p_event_class_code           => l_event_class_code);
125277    --
125278    -- set accounting class
125279    --
125280    xla_ae_lines_pkg.SetAcctClass(
125281            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
125282          , p_ae_header_id           => l_ae_header_id
125283          );
125284 
125285    --
125286    -- set rounding class
125287    --
125288    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
125289                       'PURCHASE_PRICE_VARIANCE';
125290 
125291    --
125292    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
125293    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
125294    --
125295    -- bulk performance
125296    --
125297    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
125298 
125299    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
125300       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
125301 
125302    -- 4955764
125303    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
125304       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
125305 
125306    -- 4458381 Public Sector Enh
125307    
125308    --
125309    -- set accounting attributes for the line type
125310    --
125311    l_entered_amt_idx := 3;
125312    l_accted_amt_idx  := 8;
125313    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
125314    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
125315    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
125316    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
125317    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
125318    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
125319    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
125320    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
125321    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
125322    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
125323    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
125324    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
125325    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
125326    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
125327    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
125328    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
125329    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
125330 
125331    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
125332    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
125333 
125334    ---------------------------------------------------------------------------------------------------------------
125335    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
125336    ---------------------------------------------------------------------------------------------------------------
125337    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
125338 
125339    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
125340    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
125341 
125342    IF xla_accounting_cache_pkg.GetValueChar
125343          (p_source_code         => 'LEDGER_CATEGORY_CODE'
125344          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
125345    AND l_bflow_method_code = 'PRIOR_ENTRY'
125346 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
125347    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
125348          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
125349        )
125350    THEN
125351          xla_ae_lines_pkg.BflowUpgEntry
125352            (p_business_method_code    => l_bflow_method_code
125353            ,p_business_class_code     => l_bflow_class_code
125354            ,p_balance_type            => l_balance_type_code);
125355    ELSE
125356       NULL;
125357 -- No business flow processing for business flow method of NONE.
125358    END IF;
125359 
125360    --
125361    -- call analytical criteria
125362    --
125363    
125364    --
125365    -- call description
125366    --
125367    -- No description or it is inherited.
125368    --
125369    -- call ADRs
125370    -- Bug 4922099
125371    --
125372    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
125373         (NVL(l_actual_upg_option, 'N') = 'O') OR
125374         (NVL(l_enc_upg_option, 'N') = 'O')
125375       )
125376    THEN
125377    NULL;
125378    --
125379    --
125380    
125381   l_ccid := AcctDerRule_4(
125382            p_application_id           => p_application_id
125383          , p_ae_header_id             => l_ae_header_id 
125384 , p_source_4 => p_source_4
125385          , x_transaction_coa_id       => l_adr_transaction_coa_id
125386          , x_accounting_coa_id        => l_adr_accounting_coa_id
125387          , x_value_type_code          => l_adr_value_type_code
125388          , p_side                     => 'NA'
125389    );
125390 
125391    xla_ae_lines_pkg.set_ccid(
125392     p_code_combination_id          => l_ccid
125393   , p_value_type_code              => l_adr_value_type_code
125394   , p_transaction_coa_id           => l_adr_transaction_coa_id
125395   , p_accounting_coa_id            => l_adr_accounting_coa_id
125396   , p_adr_code                     => 'CST_DEFAULT'
125397   , p_adr_type_code                => 'S'
125398   , p_component_type               => l_component_type
125399   , p_component_code               => l_component_code
125400   , p_component_type_code          => l_component_type_code
125401   , p_component_appl_id            => l_component_appl_id
125402   , p_amb_context_code             => l_amb_context_code
125403   , p_side                         => 'NA'
125404   );
125405 
125406 
125407    --
125408    --
125409    END IF;
125410    --
125411    -- Bug 4922099
125412    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
125413           (NVL(l_enc_upg_option, 'N') = 'O')
125414         ) AND
125415         (l_bflow_method_code = 'PRIOR_ENTRY')
125416       )
125417    THEN
125418       IF
125419       --
125420       1 = 2
125421       --
125422       THEN
125423       xla_accounting_err_pkg.build_message
125424                                     (p_appli_s_name            => 'XLA'
125425                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
125426                                     ,p_token_1                 => 'LINE_NUMBER'
125427                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
125428                                     ,p_token_2                 => 'LINE_TYPE_NAME'
125429                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
125430                                                                              l_component_type
125431                                                                             ,l_component_code
125432                                                                             ,l_component_type_code
125433                                                                             ,l_component_appl_id
125434                                                                             ,l_amb_context_code
125435                                                                             ,l_entity_code
125436                                                                             ,l_event_class_code
125437                                                                            )
125438                                     ,p_token_3                 => 'OWNER'
125439                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
125440                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
125441                                                                           ,p_lookup_code    => l_component_type_code
125442                                                                          )
125443                                     ,p_token_4                 => 'PRODUCT_NAME'
125444                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
125445                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
125446                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
125447                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
125448                                     ,p_ae_header_id            =>  NULL
125449                                        );
125450 
125451         IF (C_LEVEL_ERROR>= g_log_level) THEN
125452                  trace
125453                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
125454                       ,p_level    => C_LEVEL_ERROR
125455                       ,p_module   => l_log_module);
125456         END IF;
125457       END IF;
125458    END IF;
125459    --
125460    --
125461    ------------------------------------------------------------------------------------------------
125462    -- 4219869 Business Flow
125463    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
125464    -- Prior Entry.  Currently, the following code is always generated.
125465    ------------------------------------------------------------------------------------------------
125466    XLA_AE_LINES_PKG.ValidateCurrentLine;
125467 
125468    ------------------------------------------------------------------------------------
125469    -- 4219869 Business Flow
125470    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
125471    ------------------------------------------------------------------------------------
125472    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
125473 
125474    ----------------------------------------------------------------------------------
125475    -- 4219869 Business Flow
125476    -- Update journal entry status -- Need to generate this within IF <condition>
125477    ----------------------------------------------------------------------------------
125478    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
125479          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
125480          ,p_balance_type_code => l_balance_type_code
125481          );
125482 
125483    -------------------------------------------------------------------------------------------
125484    -- 4262811 - Generate the Accrual Reversal lines
125485    -------------------------------------------------------------------------------------------
125486    BEGIN
125487       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
125488                               (g_array_event(p_event_id).array_value_num('header_index'));
125489       IF l_acc_rev_flag IS NULL THEN
125490          l_acc_rev_flag := 'N';
125491       END IF;
125492    EXCEPTION
125493       WHEN OTHERS THEN
125494          l_acc_rev_flag := 'N';
125495    END;
125496    --
125497    IF (l_acc_rev_flag = 'Y') THEN
125498 
125499        -- 4645092  ------------------------------------------------------------------------------
125500        -- To allow MPA report to determine if it should generate report process
125501        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
125502        ------------------------------------------------------------------------------------------
125503 
125504        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
125505        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
125506    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
125507    -- call ADRs
125508    -- Bug 4922099
125509    --
125510    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
125511         (NVL(l_actual_upg_option, 'N') = 'O') OR
125512         (NVL(l_enc_upg_option, 'N') = 'O')
125513       )
125514    THEN
125515    NULL;
125516    --
125517    --
125518    
125519   l_ccid := AcctDerRule_4(
125520            p_application_id           => p_application_id
125521          , p_ae_header_id             => l_ae_header_id 
125522 , p_source_4 => p_source_4
125523          , x_transaction_coa_id       => l_adr_transaction_coa_id
125524          , x_accounting_coa_id        => l_adr_accounting_coa_id
125525          , x_value_type_code          => l_adr_value_type_code
125526          , p_side                     => 'NA'
125527    );
125528 
125529    xla_ae_lines_pkg.set_ccid(
125530     p_code_combination_id          => l_ccid
125531   , p_value_type_code              => l_adr_value_type_code
125532   , p_transaction_coa_id           => l_adr_transaction_coa_id
125533   , p_accounting_coa_id            => l_adr_accounting_coa_id
125534   , p_adr_code                     => 'CST_DEFAULT'
125535   , p_adr_type_code                => 'S'
125536   , p_component_type               => l_component_type
125537   , p_component_code               => l_component_code
125538   , p_component_type_code          => l_component_type_code
125539   , p_component_appl_id            => l_component_appl_id
125540   , p_amb_context_code             => l_amb_context_code
125541   , p_side                         => 'NA'
125542   );
125543 
125544 
125545    --
125546    --
125547    END IF;
125548 
125549        --
125550        -- Update the line information that should be overwritten
125551        --
125552        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
125553                                          p_header_num   => 1);
125554        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
125555 
125556        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
125557 
125558        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
125559           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
125560        END IF;
125561 
125562       --
125563       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
125564       --
125565       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
125566           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
125567       ELSE
125568           ---------------------------------------------------------------------------------------------------
125569           -- 4262811a Switch Sign
125570           ---------------------------------------------------------------------------------------------------
125571           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
125572           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
125573                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
125574           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
125575                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
125576           -- 5132302
125577           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
125578                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
125579 
125580       END IF;
125581 
125582       -- 4955764
125583       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
125584       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
125585 
125586 
125587       XLA_AE_LINES_PKG.ValidateCurrentLine;
125588       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
125589 
125590       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
125591                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
125592                ,p_balance_type_code => l_balance_type_code);
125593 
125594    END IF;
125595 
125596    -----------------------------------------------------------------------------------------
125597    -- 4262811 Multiperiod Accounting
125598    -----------------------------------------------------------------------------------------
125599      -- No MPA option is assigned.
125600 
125601 
125602 END IF;
125603 END IF;
125604 --
125605 
125606 --
125607 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
125608    trace
125609       (p_msg      => 'END of AcctLineType_227'
125610       ,p_level    => C_LEVEL_PROCEDURE
125611       ,p_module   => l_log_module);
125612 END IF;
125613 --
125614 EXCEPTION
125615   WHEN xla_exceptions_pkg.application_exception THEN
125616       RAISE;
125617   WHEN OTHERS THEN
125618        xla_exceptions_pkg.raise_message
125619            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_227');
125620 END AcctLineType_227;
125621 --
125622 
125623 ---------------------------------------
125624 --
125625 -- PRIVATE FUNCTION
125626 --         AcctLineType_228
125627 --
125628 ---------------------------------------
125629 PROCEDURE AcctLineType_228 (
125630   p_application_id        IN NUMBER
125631  ,p_event_id              IN NUMBER
125632  ,p_calculate_acctd_flag  IN VARCHAR2
125633  ,p_calculate_g_l_flag    IN VARCHAR2
125634  ,p_actual_flag           IN OUT VARCHAR2
125635  ,p_balance_type_code     OUT VARCHAR2
125636  ,p_gain_or_loss_ref      OUT VARCHAR2
125637  
125638 --Cost Management Default Account
125639  , p_source_4            IN NUMBER
125640 --DISTRIBUTION_IDENTIFIER
125641  , p_source_11            IN NUMBER
125642 --Distribution Type
125643  , p_source_12            IN VARCHAR2
125644  , p_source_12_meaning    IN VARCHAR2
125645 --Entered Currency Code
125646  , p_source_15            IN VARCHAR2
125647 --Entered Amount
125648  , p_source_18            IN NUMBER
125649 --Currency Conversion Date
125650  , p_source_19            IN DATE
125651 --Currency Conversion Rate
125652  , p_source_20            IN NUMBER
125653 --Currency Conversion Type
125654  , p_source_21            IN VARCHAR2
125655 --Accounted Amount
125656  , p_source_22            IN NUMBER
125657 --Accounting Line Type
125658  , p_source_24            IN NUMBER
125659 )
125660 IS
125661 
125662 l_component_type              VARCHAR2(80);
125663 l_component_code              VARCHAR2(30);
125664 l_component_type_code         VARCHAR2(1);
125665 l_component_appl_id           INTEGER;
125666 l_amb_context_code            VARCHAR2(30);
125667 l_entity_code                 VARCHAR2(30);
125668 l_event_class_code            VARCHAR2(30);
125669 l_ae_header_id                NUMBER;
125670 l_event_type_code             VARCHAR2(30);
125671 l_line_definition_code        VARCHAR2(30);
125672 l_line_definition_owner_code  VARCHAR2(1);
125673 --
125674 -- adr variables
125675 l_segment                     VARCHAR2(30);
125676 l_ccid                        NUMBER;
125677 l_adr_transaction_coa_id      NUMBER;
125678 l_adr_accounting_coa_id       NUMBER;
125679 l_adr_flexfield_segment_code  VARCHAR2(30);
125680 l_adr_flex_value_set_id       NUMBER;
125681 l_adr_value_type_code         VARCHAR2(30);
125682 l_adr_value_combination_id    NUMBER;
125683 l_adr_value_segment_code      VARCHAR2(30);
125684 
125685 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
125686 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
125687 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
125688 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
125689 
125690 -- 4262811 Variables ------------------------------------------------------------------------------------------
125691 l_entered_amt_idx             NUMBER;
125692 l_accted_amt_idx              NUMBER;
125693 l_acc_rev_flag                VARCHAR2(1);
125694 l_accrual_line_num            NUMBER;
125695 l_tmp_amt                     NUMBER;
125696 l_acc_rev_natural_side_code   VARCHAR2(1);
125697 
125698 l_num_entries                 NUMBER;
125699 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
125700 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
125701 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
125702 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
125703 l_recog_line_1                NUMBER;
125704 l_recog_line_2                NUMBER;
125705 
125706 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
125707 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
125708 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
125709 
125710 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
125711 
125712 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
125713 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
125714 
125715 ---------------------------------------------------------------------------------------------------------------
125716 
125717 
125718 --
125719 -- bulk performance
125720 --
125721 l_balance_type_code           VARCHAR2(1);
125722 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
125723 l_log_module                  VARCHAR2(240);
125724 
125725 --
125726 -- Upgrade strategy
125727 --
125728 l_actual_upg_option           VARCHAR2(1);
125729 l_enc_upg_option           VARCHAR2(1);
125730 
125731 --
125732 BEGIN
125733 --
125734 IF g_log_enabled THEN
125735       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_228';
125736 END IF;
125737 --
125738 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
125739 
125740       trace
125741          (p_msg      => 'BEGIN of AcctLineType_228'
125742          ,p_level    => C_LEVEL_PROCEDURE
125743          ,p_module   => l_log_module);
125744 
125745 END IF;
125746 --
125747 l_component_type             := 'AMB_JLT';
125748 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
125749 l_component_type_code        := 'S';
125750 l_component_appl_id          :=  707;
125751 l_amb_context_code           := 'DEFAULT';
125752 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
125753 l_event_class_code           := 'USER_DEFINE';
125754 l_event_type_code            := 'UDIR_INTERORG_SHIP_NO_TP';
125755 l_line_definition_owner_code := 'S';
125756 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_NO_TP';
125757 --
125758 l_balance_type_code          := 'A';
125759 l_segment                     := NULL;
125760 l_ccid                        := NULL;
125761 l_adr_transaction_coa_id      := NULL;
125762 l_adr_accounting_coa_id       := NULL;
125763 l_adr_flexfield_segment_code  := NULL;
125764 l_adr_flex_value_set_id       := NULL;
125765 l_adr_value_type_code         := NULL;
125766 l_adr_value_combination_id    := NULL;
125767 l_adr_value_segment_code      := NULL;
125768 
125769 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
125770 l_bflow_class_code           := '';    -- 4219869 Business Flow
125771 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
125772 l_budgetary_control_flag     := 'N';
125773 
125774 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
125775 l_bflow_applied_to_amt       := NULL; -- 5132302
125776 l_entered_amt_idx            := NULL;          -- 4262811
125777 l_accted_amt_idx             := NULL;          -- 4262811
125778 l_acc_rev_flag               := NULL;          -- 4262811
125779 l_accrual_line_num           := NULL;          -- 4262811
125780 l_tmp_amt                    := NULL;          -- 4262811
125781 --
125782  
125783 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
125784     l_balance_type_code <> 'B' THEN
125785 IF NVL(p_source_24,9E125) =  6
125786  THEN 
125787 
125788    --
125789    XLA_AE_LINES_PKG.SetNewLine;
125790 
125791    p_balance_type_code          := l_balance_type_code;
125792    -- set the flag so later we will know whether the gain loss line needs to be created
125793    
125794    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
125795      p_actual_flag :='A';
125796    END IF;
125797 
125798    --
125799    -- bulk performance
125800    --
125801    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
125802                                       p_header_num   => 0); -- 4262811
125803    --
125804    -- set accounting line options
125805    --
125806    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
125807            p_natural_side_code          => 'D'
125808          , p_gain_or_loss_flag          => 'N'
125809          , p_gl_transfer_mode_code      => 'S'
125810          , p_acct_entry_type_code       => 'A'
125811          , p_switch_side_flag           => 'Y'
125812          , p_merge_duplicate_code       => 'N'
125813          );
125814    --
125815    l_acc_rev_natural_side_code := 'C';  -- 4262811
125816    -- 
125817    --
125818    -- set accounting line type info
125819    --
125820    xla_ae_lines_pkg.SetAcctLineType
125821       (p_component_type             => l_component_type
125822       ,p_event_type_code            => l_event_type_code
125823       ,p_line_definition_owner_code => l_line_definition_owner_code
125824       ,p_line_definition_code       => l_line_definition_code
125825       ,p_accounting_line_code       => l_component_code
125826       ,p_accounting_line_type_code  => l_component_type_code
125827       ,p_accounting_line_appl_id    => l_component_appl_id
125828       ,p_amb_context_code           => l_amb_context_code
125829       ,p_entity_code                => l_entity_code
125830       ,p_event_class_code           => l_event_class_code);
125831    --
125832    -- set accounting class
125833    --
125834    xla_ae_lines_pkg.SetAcctClass(
125835            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
125836          , p_ae_header_id           => l_ae_header_id
125837          );
125838 
125839    --
125840    -- set rounding class
125841    --
125842    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
125843                       'PURCHASE_PRICE_VARIANCE';
125844 
125845    --
125846    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
125847    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
125848    --
125849    -- bulk performance
125850    --
125851    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
125852 
125853    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
125854       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
125855 
125856    -- 4955764
125857    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
125858       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
125859 
125860    -- 4458381 Public Sector Enh
125861    
125862    --
125863    -- set accounting attributes for the line type
125864    --
125865    l_entered_amt_idx := 3;
125866    l_accted_amt_idx  := 8;
125867    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
125868    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
125869    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
125870    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
125871    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
125872    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
125873    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
125874    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
125875    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
125876    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
125877    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
125878    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
125879    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
125880    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
125881    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
125882    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
125883    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
125884 
125885    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
125886    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
125887 
125888    ---------------------------------------------------------------------------------------------------------------
125889    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
125890    ---------------------------------------------------------------------------------------------------------------
125891    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
125892 
125893    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
125894    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
125895 
125896    IF xla_accounting_cache_pkg.GetValueChar
125897          (p_source_code         => 'LEDGER_CATEGORY_CODE'
125898          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
125899    AND l_bflow_method_code = 'PRIOR_ENTRY'
125900 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
125901    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
125902          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
125903        )
125904    THEN
125905          xla_ae_lines_pkg.BflowUpgEntry
125906            (p_business_method_code    => l_bflow_method_code
125907            ,p_business_class_code     => l_bflow_class_code
125908            ,p_balance_type            => l_balance_type_code);
125909    ELSE
125910       NULL;
125911 -- No business flow processing for business flow method of NONE.
125912    END IF;
125913 
125914    --
125915    -- call analytical criteria
125916    --
125917    
125918    --
125919    -- call description
125920    --
125921    -- No description or it is inherited.
125922    --
125923    -- call ADRs
125924    -- Bug 4922099
125925    --
125926    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
125927         (NVL(l_actual_upg_option, 'N') = 'O') OR
125928         (NVL(l_enc_upg_option, 'N') = 'O')
125929       )
125930    THEN
125931    NULL;
125932    --
125933    --
125934    
125935   l_ccid := AcctDerRule_4(
125936            p_application_id           => p_application_id
125937          , p_ae_header_id             => l_ae_header_id 
125938 , p_source_4 => p_source_4
125939          , x_transaction_coa_id       => l_adr_transaction_coa_id
125940          , x_accounting_coa_id        => l_adr_accounting_coa_id
125941          , x_value_type_code          => l_adr_value_type_code
125942          , p_side                     => 'NA'
125943    );
125944 
125945    xla_ae_lines_pkg.set_ccid(
125946     p_code_combination_id          => l_ccid
125947   , p_value_type_code              => l_adr_value_type_code
125948   , p_transaction_coa_id           => l_adr_transaction_coa_id
125949   , p_accounting_coa_id            => l_adr_accounting_coa_id
125950   , p_adr_code                     => 'CST_DEFAULT'
125951   , p_adr_type_code                => 'S'
125952   , p_component_type               => l_component_type
125953   , p_component_code               => l_component_code
125954   , p_component_type_code          => l_component_type_code
125955   , p_component_appl_id            => l_component_appl_id
125956   , p_amb_context_code             => l_amb_context_code
125957   , p_side                         => 'NA'
125958   );
125959 
125960 
125961    --
125962    --
125963    END IF;
125964    --
125965    -- Bug 4922099
125966    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
125967           (NVL(l_enc_upg_option, 'N') = 'O')
125968         ) AND
125969         (l_bflow_method_code = 'PRIOR_ENTRY')
125970       )
125971    THEN
125972       IF
125973       --
125974       1 = 2
125975       --
125976       THEN
125977       xla_accounting_err_pkg.build_message
125978                                     (p_appli_s_name            => 'XLA'
125979                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
125980                                     ,p_token_1                 => 'LINE_NUMBER'
125981                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
125982                                     ,p_token_2                 => 'LINE_TYPE_NAME'
125983                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
125984                                                                              l_component_type
125985                                                                             ,l_component_code
125986                                                                             ,l_component_type_code
125987                                                                             ,l_component_appl_id
125988                                                                             ,l_amb_context_code
125989                                                                             ,l_entity_code
125990                                                                             ,l_event_class_code
125991                                                                            )
125992                                     ,p_token_3                 => 'OWNER'
125993                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
125994                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
125995                                                                           ,p_lookup_code    => l_component_type_code
125996                                                                          )
125997                                     ,p_token_4                 => 'PRODUCT_NAME'
125998                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
125999                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
126000                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
126001                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
126002                                     ,p_ae_header_id            =>  NULL
126003                                        );
126004 
126005         IF (C_LEVEL_ERROR>= g_log_level) THEN
126006                  trace
126007                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
126008                       ,p_level    => C_LEVEL_ERROR
126009                       ,p_module   => l_log_module);
126010         END IF;
126011       END IF;
126012    END IF;
126013    --
126014    --
126015    ------------------------------------------------------------------------------------------------
126016    -- 4219869 Business Flow
126017    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
126018    -- Prior Entry.  Currently, the following code is always generated.
126019    ------------------------------------------------------------------------------------------------
126020    XLA_AE_LINES_PKG.ValidateCurrentLine;
126021 
126022    ------------------------------------------------------------------------------------
126023    -- 4219869 Business Flow
126024    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
126025    ------------------------------------------------------------------------------------
126026    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
126027 
126028    ----------------------------------------------------------------------------------
126029    -- 4219869 Business Flow
126030    -- Update journal entry status -- Need to generate this within IF <condition>
126031    ----------------------------------------------------------------------------------
126032    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
126033          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
126034          ,p_balance_type_code => l_balance_type_code
126035          );
126036 
126037    -------------------------------------------------------------------------------------------
126038    -- 4262811 - Generate the Accrual Reversal lines
126039    -------------------------------------------------------------------------------------------
126040    BEGIN
126041       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
126042                               (g_array_event(p_event_id).array_value_num('header_index'));
126043       IF l_acc_rev_flag IS NULL THEN
126044          l_acc_rev_flag := 'N';
126045       END IF;
126046    EXCEPTION
126047       WHEN OTHERS THEN
126048          l_acc_rev_flag := 'N';
126049    END;
126050    --
126051    IF (l_acc_rev_flag = 'Y') THEN
126052 
126053        -- 4645092  ------------------------------------------------------------------------------
126054        -- To allow MPA report to determine if it should generate report process
126055        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
126056        ------------------------------------------------------------------------------------------
126057 
126058        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
126059        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
126060    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
126061    -- call ADRs
126062    -- Bug 4922099
126063    --
126064    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
126065         (NVL(l_actual_upg_option, 'N') = 'O') OR
126066         (NVL(l_enc_upg_option, 'N') = 'O')
126067       )
126068    THEN
126069    NULL;
126070    --
126071    --
126072    
126073   l_ccid := AcctDerRule_4(
126074            p_application_id           => p_application_id
126075          , p_ae_header_id             => l_ae_header_id 
126076 , p_source_4 => p_source_4
126077          , x_transaction_coa_id       => l_adr_transaction_coa_id
126078          , x_accounting_coa_id        => l_adr_accounting_coa_id
126079          , x_value_type_code          => l_adr_value_type_code
126080          , p_side                     => 'NA'
126081    );
126082 
126083    xla_ae_lines_pkg.set_ccid(
126084     p_code_combination_id          => l_ccid
126085   , p_value_type_code              => l_adr_value_type_code
126086   , p_transaction_coa_id           => l_adr_transaction_coa_id
126087   , p_accounting_coa_id            => l_adr_accounting_coa_id
126088   , p_adr_code                     => 'CST_DEFAULT'
126089   , p_adr_type_code                => 'S'
126090   , p_component_type               => l_component_type
126091   , p_component_code               => l_component_code
126092   , p_component_type_code          => l_component_type_code
126093   , p_component_appl_id            => l_component_appl_id
126094   , p_amb_context_code             => l_amb_context_code
126095   , p_side                         => 'NA'
126096   );
126097 
126098 
126099    --
126100    --
126101    END IF;
126102 
126103        --
126104        -- Update the line information that should be overwritten
126105        --
126106        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
126107                                          p_header_num   => 1);
126108        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
126109 
126110        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
126111 
126112        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
126113           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
126114        END IF;
126115 
126116       --
126117       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
126118       --
126119       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
126120           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
126121       ELSE
126122           ---------------------------------------------------------------------------------------------------
126123           -- 4262811a Switch Sign
126124           ---------------------------------------------------------------------------------------------------
126125           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
126126           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
126127                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
126128           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
126129                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
126130           -- 5132302
126131           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
126132                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
126133 
126134       END IF;
126135 
126136       -- 4955764
126137       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
126138       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
126139 
126140 
126141       XLA_AE_LINES_PKG.ValidateCurrentLine;
126142       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
126143 
126144       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
126145                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
126146                ,p_balance_type_code => l_balance_type_code);
126147 
126148    END IF;
126149 
126150    -----------------------------------------------------------------------------------------
126151    -- 4262811 Multiperiod Accounting
126152    -----------------------------------------------------------------------------------------
126153      -- No MPA option is assigned.
126154 
126155 
126156 END IF;
126157 END IF;
126158 --
126159 
126160 --
126161 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
126162    trace
126163       (p_msg      => 'END of AcctLineType_228'
126164       ,p_level    => C_LEVEL_PROCEDURE
126165       ,p_module   => l_log_module);
126166 END IF;
126167 --
126168 EXCEPTION
126169   WHEN xla_exceptions_pkg.application_exception THEN
126170       RAISE;
126171   WHEN OTHERS THEN
126172        xla_exceptions_pkg.raise_message
126173            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_228');
126174 END AcctLineType_228;
126175 --
126176 
126177 ---------------------------------------
126178 --
126179 -- PRIVATE FUNCTION
126180 --         AcctLineType_229
126181 --
126182 ---------------------------------------
126183 PROCEDURE AcctLineType_229 (
126184   p_application_id        IN NUMBER
126185  ,p_event_id              IN NUMBER
126186  ,p_calculate_acctd_flag  IN VARCHAR2
126187  ,p_calculate_g_l_flag    IN VARCHAR2
126188  ,p_actual_flag           IN OUT VARCHAR2
126189  ,p_balance_type_code     OUT VARCHAR2
126190  ,p_gain_or_loss_ref      OUT VARCHAR2
126191  
126192 --Cost Management Default Account
126193  , p_source_4            IN NUMBER
126194 --DISTRIBUTION_IDENTIFIER
126195  , p_source_11            IN NUMBER
126196 --Distribution Type
126197  , p_source_12            IN VARCHAR2
126198  , p_source_12_meaning    IN VARCHAR2
126199 --Entered Currency Code
126200  , p_source_15            IN VARCHAR2
126201 --Entered Amount
126202  , p_source_18            IN NUMBER
126203 --Currency Conversion Date
126204  , p_source_19            IN DATE
126205 --Currency Conversion Rate
126206  , p_source_20            IN NUMBER
126207 --Currency Conversion Type
126208  , p_source_21            IN VARCHAR2
126209 --Accounted Amount
126210  , p_source_22            IN NUMBER
126211 --Accounting Line Type
126212  , p_source_24            IN NUMBER
126213 )
126214 IS
126215 
126216 l_component_type              VARCHAR2(80);
126217 l_component_code              VARCHAR2(30);
126218 l_component_type_code         VARCHAR2(1);
126219 l_component_appl_id           INTEGER;
126220 l_amb_context_code            VARCHAR2(30);
126221 l_entity_code                 VARCHAR2(30);
126222 l_event_class_code            VARCHAR2(30);
126223 l_ae_header_id                NUMBER;
126224 l_event_type_code             VARCHAR2(30);
126225 l_line_definition_code        VARCHAR2(30);
126226 l_line_definition_owner_code  VARCHAR2(1);
126227 --
126228 -- adr variables
126229 l_segment                     VARCHAR2(30);
126230 l_ccid                        NUMBER;
126231 l_adr_transaction_coa_id      NUMBER;
126232 l_adr_accounting_coa_id       NUMBER;
126233 l_adr_flexfield_segment_code  VARCHAR2(30);
126234 l_adr_flex_value_set_id       NUMBER;
126235 l_adr_value_type_code         VARCHAR2(30);
126236 l_adr_value_combination_id    NUMBER;
126237 l_adr_value_segment_code      VARCHAR2(30);
126238 
126239 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
126240 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
126241 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
126242 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
126243 
126244 -- 4262811 Variables ------------------------------------------------------------------------------------------
126245 l_entered_amt_idx             NUMBER;
126246 l_accted_amt_idx              NUMBER;
126247 l_acc_rev_flag                VARCHAR2(1);
126248 l_accrual_line_num            NUMBER;
126249 l_tmp_amt                     NUMBER;
126250 l_acc_rev_natural_side_code   VARCHAR2(1);
126251 
126252 l_num_entries                 NUMBER;
126253 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
126254 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
126255 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
126256 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
126257 l_recog_line_1                NUMBER;
126258 l_recog_line_2                NUMBER;
126259 
126260 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
126261 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
126262 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
126263 
126264 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
126265 
126266 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
126267 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
126268 
126269 ---------------------------------------------------------------------------------------------------------------
126270 
126271 
126272 --
126273 -- bulk performance
126274 --
126275 l_balance_type_code           VARCHAR2(1);
126276 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
126277 l_log_module                  VARCHAR2(240);
126278 
126279 --
126280 -- Upgrade strategy
126281 --
126282 l_actual_upg_option           VARCHAR2(1);
126283 l_enc_upg_option           VARCHAR2(1);
126284 
126285 --
126286 BEGIN
126287 --
126288 IF g_log_enabled THEN
126289       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_229';
126290 END IF;
126291 --
126292 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
126293 
126294       trace
126295          (p_msg      => 'BEGIN of AcctLineType_229'
126296          ,p_level    => C_LEVEL_PROCEDURE
126297          ,p_module   => l_log_module);
126298 
126299 END IF;
126300 --
126301 l_component_type             := 'AMB_JLT';
126302 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
126303 l_component_type_code        := 'S';
126304 l_component_appl_id          :=  707;
126305 l_amb_context_code           := 'DEFAULT';
126306 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
126307 l_event_class_code           := 'USER_DEFINE';
126308 l_event_type_code            := 'UDIR_INTERORG_SHIP';
126309 l_line_definition_owner_code := 'S';
126310 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP';
126311 --
126312 l_balance_type_code          := 'A';
126313 l_segment                     := NULL;
126314 l_ccid                        := NULL;
126315 l_adr_transaction_coa_id      := NULL;
126316 l_adr_accounting_coa_id       := NULL;
126317 l_adr_flexfield_segment_code  := NULL;
126318 l_adr_flex_value_set_id       := NULL;
126319 l_adr_value_type_code         := NULL;
126320 l_adr_value_combination_id    := NULL;
126321 l_adr_value_segment_code      := NULL;
126322 
126323 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
126324 l_bflow_class_code           := '';    -- 4219869 Business Flow
126325 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
126326 l_budgetary_control_flag     := 'N';
126327 
126328 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
126329 l_bflow_applied_to_amt       := NULL; -- 5132302
126330 l_entered_amt_idx            := NULL;          -- 4262811
126331 l_accted_amt_idx             := NULL;          -- 4262811
126332 l_acc_rev_flag               := NULL;          -- 4262811
126333 l_accrual_line_num           := NULL;          -- 4262811
126334 l_tmp_amt                    := NULL;          -- 4262811
126335 --
126336  
126337 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
126338     l_balance_type_code <> 'B' THEN
126339 IF NVL(p_source_24,9E125) =  6
126340  THEN 
126341 
126342    --
126343    XLA_AE_LINES_PKG.SetNewLine;
126344 
126345    p_balance_type_code          := l_balance_type_code;
126346    -- set the flag so later we will know whether the gain loss line needs to be created
126347    
126348    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
126349      p_actual_flag :='A';
126350    END IF;
126351 
126352    --
126353    -- bulk performance
126354    --
126355    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
126356                                       p_header_num   => 0); -- 4262811
126357    --
126358    -- set accounting line options
126359    --
126360    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
126361            p_natural_side_code          => 'D'
126362          , p_gain_or_loss_flag          => 'N'
126363          , p_gl_transfer_mode_code      => 'S'
126364          , p_acct_entry_type_code       => 'A'
126365          , p_switch_side_flag           => 'Y'
126366          , p_merge_duplicate_code       => 'N'
126367          );
126368    --
126369    l_acc_rev_natural_side_code := 'C';  -- 4262811
126370    -- 
126371    --
126372    -- set accounting line type info
126373    --
126374    xla_ae_lines_pkg.SetAcctLineType
126375       (p_component_type             => l_component_type
126376       ,p_event_type_code            => l_event_type_code
126377       ,p_line_definition_owner_code => l_line_definition_owner_code
126378       ,p_line_definition_code       => l_line_definition_code
126379       ,p_accounting_line_code       => l_component_code
126380       ,p_accounting_line_type_code  => l_component_type_code
126381       ,p_accounting_line_appl_id    => l_component_appl_id
126382       ,p_amb_context_code           => l_amb_context_code
126383       ,p_entity_code                => l_entity_code
126384       ,p_event_class_code           => l_event_class_code);
126385    --
126386    -- set accounting class
126387    --
126388    xla_ae_lines_pkg.SetAcctClass(
126389            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
126390          , p_ae_header_id           => l_ae_header_id
126391          );
126392 
126393    --
126394    -- set rounding class
126395    --
126396    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
126397                       'PURCHASE_PRICE_VARIANCE';
126398 
126399    --
126400    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
126401    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
126402    --
126403    -- bulk performance
126404    --
126405    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
126406 
126407    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
126408       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
126409 
126410    -- 4955764
126411    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
126412       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
126413 
126414    -- 4458381 Public Sector Enh
126415    
126416    --
126417    -- set accounting attributes for the line type
126418    --
126419    l_entered_amt_idx := 3;
126420    l_accted_amt_idx  := 8;
126421    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
126422    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
126423    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
126424    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
126425    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
126426    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
126427    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
126428    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
126429    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
126430    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
126431    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
126432    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
126433    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
126434    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
126435    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
126436    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
126437    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
126438 
126439    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
126440    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
126441 
126442    ---------------------------------------------------------------------------------------------------------------
126443    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
126444    ---------------------------------------------------------------------------------------------------------------
126445    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
126446 
126447    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
126448    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
126449 
126450    IF xla_accounting_cache_pkg.GetValueChar
126451          (p_source_code         => 'LEDGER_CATEGORY_CODE'
126452          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
126453    AND l_bflow_method_code = 'PRIOR_ENTRY'
126454 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
126455    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
126456          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
126457        )
126458    THEN
126459          xla_ae_lines_pkg.BflowUpgEntry
126460            (p_business_method_code    => l_bflow_method_code
126461            ,p_business_class_code     => l_bflow_class_code
126462            ,p_balance_type            => l_balance_type_code);
126463    ELSE
126464       NULL;
126465 -- No business flow processing for business flow method of NONE.
126466    END IF;
126467 
126468    --
126469    -- call analytical criteria
126470    --
126471    
126472    --
126473    -- call description
126474    --
126475    -- No description or it is inherited.
126476    --
126477    -- call ADRs
126478    -- Bug 4922099
126479    --
126480    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
126481         (NVL(l_actual_upg_option, 'N') = 'O') OR
126482         (NVL(l_enc_upg_option, 'N') = 'O')
126483       )
126484    THEN
126485    NULL;
126486    --
126487    --
126488    
126489   l_ccid := AcctDerRule_4(
126490            p_application_id           => p_application_id
126491          , p_ae_header_id             => l_ae_header_id 
126492 , p_source_4 => p_source_4
126493          , x_transaction_coa_id       => l_adr_transaction_coa_id
126494          , x_accounting_coa_id        => l_adr_accounting_coa_id
126495          , x_value_type_code          => l_adr_value_type_code
126496          , p_side                     => 'NA'
126497    );
126498 
126499    xla_ae_lines_pkg.set_ccid(
126500     p_code_combination_id          => l_ccid
126501   , p_value_type_code              => l_adr_value_type_code
126502   , p_transaction_coa_id           => l_adr_transaction_coa_id
126503   , p_accounting_coa_id            => l_adr_accounting_coa_id
126504   , p_adr_code                     => 'CST_DEFAULT'
126505   , p_adr_type_code                => 'S'
126506   , p_component_type               => l_component_type
126507   , p_component_code               => l_component_code
126508   , p_component_type_code          => l_component_type_code
126509   , p_component_appl_id            => l_component_appl_id
126510   , p_amb_context_code             => l_amb_context_code
126511   , p_side                         => 'NA'
126512   );
126513 
126514 
126515    --
126516    --
126517    END IF;
126518    --
126519    -- Bug 4922099
126520    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
126521           (NVL(l_enc_upg_option, 'N') = 'O')
126522         ) AND
126523         (l_bflow_method_code = 'PRIOR_ENTRY')
126524       )
126525    THEN
126526       IF
126527       --
126528       1 = 2
126529       --
126530       THEN
126531       xla_accounting_err_pkg.build_message
126532                                     (p_appli_s_name            => 'XLA'
126533                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
126534                                     ,p_token_1                 => 'LINE_NUMBER'
126535                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
126536                                     ,p_token_2                 => 'LINE_TYPE_NAME'
126537                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
126538                                                                              l_component_type
126539                                                                             ,l_component_code
126540                                                                             ,l_component_type_code
126541                                                                             ,l_component_appl_id
126542                                                                             ,l_amb_context_code
126543                                                                             ,l_entity_code
126544                                                                             ,l_event_class_code
126545                                                                            )
126546                                     ,p_token_3                 => 'OWNER'
126547                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
126548                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
126549                                                                           ,p_lookup_code    => l_component_type_code
126550                                                                          )
126551                                     ,p_token_4                 => 'PRODUCT_NAME'
126552                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
126553                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
126554                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
126555                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
126556                                     ,p_ae_header_id            =>  NULL
126557                                        );
126558 
126559         IF (C_LEVEL_ERROR>= g_log_level) THEN
126560                  trace
126561                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
126562                       ,p_level    => C_LEVEL_ERROR
126563                       ,p_module   => l_log_module);
126564         END IF;
126565       END IF;
126566    END IF;
126567    --
126568    --
126569    ------------------------------------------------------------------------------------------------
126570    -- 4219869 Business Flow
126571    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
126572    -- Prior Entry.  Currently, the following code is always generated.
126573    ------------------------------------------------------------------------------------------------
126574    XLA_AE_LINES_PKG.ValidateCurrentLine;
126575 
126576    ------------------------------------------------------------------------------------
126577    -- 4219869 Business Flow
126578    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
126579    ------------------------------------------------------------------------------------
126580    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
126581 
126582    ----------------------------------------------------------------------------------
126583    -- 4219869 Business Flow
126584    -- Update journal entry status -- Need to generate this within IF <condition>
126585    ----------------------------------------------------------------------------------
126586    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
126587          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
126588          ,p_balance_type_code => l_balance_type_code
126589          );
126590 
126591    -------------------------------------------------------------------------------------------
126592    -- 4262811 - Generate the Accrual Reversal lines
126593    -------------------------------------------------------------------------------------------
126594    BEGIN
126595       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
126596                               (g_array_event(p_event_id).array_value_num('header_index'));
126597       IF l_acc_rev_flag IS NULL THEN
126598          l_acc_rev_flag := 'N';
126599       END IF;
126600    EXCEPTION
126601       WHEN OTHERS THEN
126602          l_acc_rev_flag := 'N';
126603    END;
126604    --
126605    IF (l_acc_rev_flag = 'Y') THEN
126606 
126607        -- 4645092  ------------------------------------------------------------------------------
126608        -- To allow MPA report to determine if it should generate report process
126609        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
126610        ------------------------------------------------------------------------------------------
126611 
126612        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
126613        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
126614    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
126615    -- call ADRs
126616    -- Bug 4922099
126617    --
126618    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
126619         (NVL(l_actual_upg_option, 'N') = 'O') OR
126620         (NVL(l_enc_upg_option, 'N') = 'O')
126621       )
126622    THEN
126623    NULL;
126624    --
126625    --
126626    
126627   l_ccid := AcctDerRule_4(
126628            p_application_id           => p_application_id
126629          , p_ae_header_id             => l_ae_header_id 
126630 , p_source_4 => p_source_4
126631          , x_transaction_coa_id       => l_adr_transaction_coa_id
126632          , x_accounting_coa_id        => l_adr_accounting_coa_id
126633          , x_value_type_code          => l_adr_value_type_code
126634          , p_side                     => 'NA'
126635    );
126636 
126637    xla_ae_lines_pkg.set_ccid(
126638     p_code_combination_id          => l_ccid
126639   , p_value_type_code              => l_adr_value_type_code
126640   , p_transaction_coa_id           => l_adr_transaction_coa_id
126641   , p_accounting_coa_id            => l_adr_accounting_coa_id
126642   , p_adr_code                     => 'CST_DEFAULT'
126643   , p_adr_type_code                => 'S'
126644   , p_component_type               => l_component_type
126645   , p_component_code               => l_component_code
126646   , p_component_type_code          => l_component_type_code
126647   , p_component_appl_id            => l_component_appl_id
126648   , p_amb_context_code             => l_amb_context_code
126649   , p_side                         => 'NA'
126650   );
126651 
126652 
126653    --
126654    --
126655    END IF;
126656 
126657        --
126658        -- Update the line information that should be overwritten
126659        --
126660        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
126661                                          p_header_num   => 1);
126662        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
126663 
126664        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
126665 
126666        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
126667           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
126668        END IF;
126669 
126670       --
126671       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
126672       --
126673       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
126674           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
126675       ELSE
126676           ---------------------------------------------------------------------------------------------------
126677           -- 4262811a Switch Sign
126678           ---------------------------------------------------------------------------------------------------
126679           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
126680           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
126681                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
126682           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
126683                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
126684           -- 5132302
126685           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
126686                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
126687 
126688       END IF;
126689 
126690       -- 4955764
126691       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
126692       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
126693 
126694 
126695       XLA_AE_LINES_PKG.ValidateCurrentLine;
126696       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
126697 
126698       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
126699                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
126700                ,p_balance_type_code => l_balance_type_code);
126701 
126702    END IF;
126703 
126704    -----------------------------------------------------------------------------------------
126705    -- 4262811 Multiperiod Accounting
126706    -----------------------------------------------------------------------------------------
126707      -- No MPA option is assigned.
126708 
126709 
126710 END IF;
126711 END IF;
126712 --
126713 
126714 --
126715 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
126716    trace
126717       (p_msg      => 'END of AcctLineType_229'
126718       ,p_level    => C_LEVEL_PROCEDURE
126719       ,p_module   => l_log_module);
126720 END IF;
126721 --
126722 EXCEPTION
126723   WHEN xla_exceptions_pkg.application_exception THEN
126724       RAISE;
126725   WHEN OTHERS THEN
126726        xla_exceptions_pkg.raise_message
126727            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_229');
126728 END AcctLineType_229;
126729 --
126730 
126731 ---------------------------------------
126732 --
126733 -- PRIVATE FUNCTION
126734 --         AcctLineType_230
126735 --
126736 ---------------------------------------
126737 PROCEDURE AcctLineType_230 (
126738   p_application_id        IN NUMBER
126739  ,p_event_id              IN NUMBER
126740  ,p_calculate_acctd_flag  IN VARCHAR2
126741  ,p_calculate_g_l_flag    IN VARCHAR2
126742  ,p_actual_flag           IN OUT VARCHAR2
126743  ,p_balance_type_code     OUT VARCHAR2
126744  ,p_gain_or_loss_ref      OUT VARCHAR2
126745  
126746 --Cost Management Default Account
126747  , p_source_4            IN NUMBER
126748 --Applied to Application ID
126749  , p_source_6            IN NUMBER
126750 --Applied to Distribution Link Type
126751  , p_source_7            IN VARCHAR2
126752 --Applied to Entity Code
126753  , p_source_8            IN VARCHAR2
126754 --DISTRIBUTION_IDENTIFIER
126755  , p_source_11            IN NUMBER
126756 --Distribution Type
126757  , p_source_12            IN VARCHAR2
126758  , p_source_12_meaning    IN VARCHAR2
126759 --Encumbrance Reversal Amount Entered
126760  , p_source_14            IN NUMBER
126761 --Entered Currency Code
126762  , p_source_15            IN VARCHAR2
126763 --Transaction Encumbrance Reversal Amount
126764  , p_source_16            IN NUMBER
126765 --Entered Amount
126766  , p_source_18            IN NUMBER
126767 --Currency Conversion Date
126768  , p_source_19            IN DATE
126769 --Currency Conversion Rate
126770  , p_source_20            IN NUMBER
126771 --Currency Conversion Type
126772  , p_source_21            IN VARCHAR2
126773 --Accounted Amount
126774  , p_source_22            IN NUMBER
126775 --Accounting Line Type
126776  , p_source_24            IN NUMBER
126777 --Costing Encumbrance Upgrade Option
126778  , p_source_27            IN VARCHAR2
126779 --TXN_PO_DISTRIBUTION_ID
126780  , p_source_28            IN NUMBER
126781 --TXN_PO_HEADER_ID
126782  , p_source_29            IN NUMBER
126783 --Requisition Budget Account
126784  , p_source_30            IN NUMBER
126785 --Requisition Encumbrance Type Identifier
126786  , p_source_31            IN NUMBER
126787 )
126788 IS
126789 
126790 l_component_type              VARCHAR2(80);
126791 l_component_code              VARCHAR2(30);
126792 l_component_type_code         VARCHAR2(1);
126793 l_component_appl_id           INTEGER;
126794 l_amb_context_code            VARCHAR2(30);
126795 l_entity_code                 VARCHAR2(30);
126796 l_event_class_code            VARCHAR2(30);
126797 l_ae_header_id                NUMBER;
126798 l_event_type_code             VARCHAR2(30);
126799 l_line_definition_code        VARCHAR2(30);
126800 l_line_definition_owner_code  VARCHAR2(1);
126801 --
126802 -- adr variables
126803 l_segment                     VARCHAR2(30);
126804 l_ccid                        NUMBER;
126805 l_adr_transaction_coa_id      NUMBER;
126806 l_adr_accounting_coa_id       NUMBER;
126807 l_adr_flexfield_segment_code  VARCHAR2(30);
126808 l_adr_flex_value_set_id       NUMBER;
126809 l_adr_value_type_code         VARCHAR2(30);
126810 l_adr_value_combination_id    NUMBER;
126811 l_adr_value_segment_code      VARCHAR2(30);
126812 
126813 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
126814 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
126815 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
126816 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
126817 
126818 -- 4262811 Variables ------------------------------------------------------------------------------------------
126819 l_entered_amt_idx             NUMBER;
126820 l_accted_amt_idx              NUMBER;
126821 l_acc_rev_flag                VARCHAR2(1);
126822 l_accrual_line_num            NUMBER;
126823 l_tmp_amt                     NUMBER;
126824 l_acc_rev_natural_side_code   VARCHAR2(1);
126825 
126826 l_num_entries                 NUMBER;
126827 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
126828 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
126829 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
126830 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
126831 l_recog_line_1                NUMBER;
126832 l_recog_line_2                NUMBER;
126833 
126834 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
126835 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
126836 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
126837 
126838 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
126839 
126840 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
126841 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
126842 
126843 ---------------------------------------------------------------------------------------------------------------
126844 
126845 
126846 --
126847 -- bulk performance
126848 --
126849 l_balance_type_code           VARCHAR2(1);
126850 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
126851 l_log_module                  VARCHAR2(240);
126852 
126853 --
126854 -- Upgrade strategy
126855 --
126856 l_actual_upg_option           VARCHAR2(1);
126857 l_enc_upg_option           VARCHAR2(1);
126858 
126859 --
126860 BEGIN
126861 --
126862 IF g_log_enabled THEN
126863       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_230';
126864 END IF;
126865 --
126866 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
126867 
126868       trace
126869          (p_msg      => 'BEGIN of AcctLineType_230'
126870          ,p_level    => C_LEVEL_PROCEDURE
126871          ,p_module   => l_log_module);
126872 
126873 END IF;
126874 --
126875 l_component_type             := 'AMB_JLT';
126876 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
126877 l_component_type_code        := 'S';
126878 l_component_appl_id          :=  707;
126879 l_amb_context_code           := 'DEFAULT';
126880 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
126881 l_event_class_code           := 'DIR_INTERORG_RCPT';
126882 l_event_type_code            := 'DIR_INTERORG_RCPT_ALL';
126883 l_line_definition_owner_code := 'S';
126884 l_line_definition_code       := 'DIRECT_INTERORG_RCPT';
126885 --
126886 l_balance_type_code          := 'A';
126887 l_segment                     := NULL;
126888 l_ccid                        := NULL;
126889 l_adr_transaction_coa_id      := NULL;
126890 l_adr_accounting_coa_id       := NULL;
126891 l_adr_flexfield_segment_code  := NULL;
126892 l_adr_flex_value_set_id       := NULL;
126893 l_adr_value_type_code         := NULL;
126894 l_adr_value_combination_id    := NULL;
126895 l_adr_value_segment_code      := NULL;
126896 
126897 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
126898 l_bflow_class_code           := '';    -- 4219869 Business Flow
126899 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
126900 l_budgetary_control_flag     := 'N';
126901 
126902 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
126903 l_bflow_applied_to_amt       := NULL; -- 5132302
126904 l_entered_amt_idx            := NULL;          -- 4262811
126905 l_accted_amt_idx             := NULL;          -- 4262811
126906 l_acc_rev_flag               := NULL;          -- 4262811
126907 l_accrual_line_num           := NULL;          -- 4262811
126908 l_tmp_amt                    := NULL;          -- 4262811
126909 --
126910  
126911 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
126912     l_balance_type_code <> 'B' THEN
126913 IF NVL(p_source_24,9E125) =  6
126914  THEN 
126915 
126916    --
126917    XLA_AE_LINES_PKG.SetNewLine;
126918 
126919    p_balance_type_code          := l_balance_type_code;
126920    -- set the flag so later we will know whether the gain loss line needs to be created
126921    
126922    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
126923      p_actual_flag :='A';
126924    END IF;
126925 
126926    --
126927    -- bulk performance
126928    --
126929    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
126930                                       p_header_num   => 0); -- 4262811
126931    --
126932    -- set accounting line options
126933    --
126934    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
126935            p_natural_side_code          => 'D'
126936          , p_gain_or_loss_flag          => 'N'
126937          , p_gl_transfer_mode_code      => 'S'
126938          , p_acct_entry_type_code       => 'A'
126939          , p_switch_side_flag           => 'Y'
126940          , p_merge_duplicate_code       => 'N'
126941          );
126942    --
126943    l_acc_rev_natural_side_code := 'C';  -- 4262811
126944    -- 
126945    --
126946    -- set accounting line type info
126947    --
126948    xla_ae_lines_pkg.SetAcctLineType
126949       (p_component_type             => l_component_type
126950       ,p_event_type_code            => l_event_type_code
126951       ,p_line_definition_owner_code => l_line_definition_owner_code
126952       ,p_line_definition_code       => l_line_definition_code
126953       ,p_accounting_line_code       => l_component_code
126954       ,p_accounting_line_type_code  => l_component_type_code
126955       ,p_accounting_line_appl_id    => l_component_appl_id
126956       ,p_amb_context_code           => l_amb_context_code
126957       ,p_entity_code                => l_entity_code
126958       ,p_event_class_code           => l_event_class_code);
126959    --
126960    -- set accounting class
126961    --
126962    xla_ae_lines_pkg.SetAcctClass(
126963            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
126964          , p_ae_header_id           => l_ae_header_id
126965          );
126966 
126967    --
126968    -- set rounding class
126969    --
126970    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
126971                       'PURCHASE_PRICE_VARIANCE';
126972 
126973    --
126974    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
126975    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
126976    --
126977    -- bulk performance
126978    --
126979    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
126980 
126981    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
126982       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
126983 
126984    -- 4955764
126985    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
126986       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
126987 
126988    -- 4458381 Public Sector Enh
126989    
126990    --
126991    -- set accounting attributes for the line type
126992    --
126993    l_entered_amt_idx := 17;
126994    l_accted_amt_idx  := 22;
126995    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
126996    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
126997    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
126998    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
126999    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
127000    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
127001    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
127002    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
127003    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
127004    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
127005    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
127006    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
127007    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
127008    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
127009    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
127010    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
127011    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
127012    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
127013    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
127014    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
127015    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
127016    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
127017    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
127018    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
127019    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
127020    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
127021    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
127022    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
127023    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
127024    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
127025    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
127026    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
127027    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
127028    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
127029    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
127030    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
127031    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
127032    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
127033    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
127034    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
127035    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
127036    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
127037    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
127038    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
127039    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
127040    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
127041    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
127042    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
127043    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
127044 
127045    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
127046    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
127047 
127048    ---------------------------------------------------------------------------------------------------------------
127049    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
127050    ---------------------------------------------------------------------------------------------------------------
127051    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
127052 
127053    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
127054    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
127055 
127056    IF xla_accounting_cache_pkg.GetValueChar
127057          (p_source_code         => 'LEDGER_CATEGORY_CODE'
127058          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
127059    AND l_bflow_method_code = 'PRIOR_ENTRY'
127060 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
127061    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
127062          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
127063        )
127064    THEN
127065          xla_ae_lines_pkg.BflowUpgEntry
127066            (p_business_method_code    => l_bflow_method_code
127067            ,p_business_class_code     => l_bflow_class_code
127068            ,p_balance_type            => l_balance_type_code);
127069    ELSE
127070       NULL;
127071 -- No business flow processing for business flow method of NONE.
127072    END IF;
127073 
127074    --
127075    -- call analytical criteria
127076    --
127077    
127078    --
127079    -- call description
127080    --
127081    -- No description or it is inherited.
127082    --
127083    -- call ADRs
127084    -- Bug 4922099
127085    --
127086    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
127087         (NVL(l_actual_upg_option, 'N') = 'O') OR
127088         (NVL(l_enc_upg_option, 'N') = 'O')
127089       )
127090    THEN
127091    NULL;
127092    --
127093    --
127094    
127095   l_ccid := AcctDerRule_4(
127096            p_application_id           => p_application_id
127097          , p_ae_header_id             => l_ae_header_id 
127098 , p_source_4 => p_source_4
127099          , x_transaction_coa_id       => l_adr_transaction_coa_id
127100          , x_accounting_coa_id        => l_adr_accounting_coa_id
127101          , x_value_type_code          => l_adr_value_type_code
127102          , p_side                     => 'NA'
127103    );
127104 
127105    xla_ae_lines_pkg.set_ccid(
127106     p_code_combination_id          => l_ccid
127107   , p_value_type_code              => l_adr_value_type_code
127108   , p_transaction_coa_id           => l_adr_transaction_coa_id
127109   , p_accounting_coa_id            => l_adr_accounting_coa_id
127110   , p_adr_code                     => 'CST_DEFAULT'
127111   , p_adr_type_code                => 'S'
127112   , p_component_type               => l_component_type
127113   , p_component_code               => l_component_code
127114   , p_component_type_code          => l_component_type_code
127115   , p_component_appl_id            => l_component_appl_id
127116   , p_amb_context_code             => l_amb_context_code
127117   , p_side                         => 'NA'
127118   );
127119 
127120 
127121    --
127122    --
127123    END IF;
127124    --
127125    -- Bug 4922099
127126    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
127127           (NVL(l_enc_upg_option, 'N') = 'O')
127128         ) AND
127129         (l_bflow_method_code = 'PRIOR_ENTRY')
127130       )
127131    THEN
127132       IF
127133       --
127134       1 = 2
127135       --
127136       THEN
127137       xla_accounting_err_pkg.build_message
127138                                     (p_appli_s_name            => 'XLA'
127139                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
127140                                     ,p_token_1                 => 'LINE_NUMBER'
127141                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
127142                                     ,p_token_2                 => 'LINE_TYPE_NAME'
127143                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
127144                                                                              l_component_type
127145                                                                             ,l_component_code
127146                                                                             ,l_component_type_code
127147                                                                             ,l_component_appl_id
127148                                                                             ,l_amb_context_code
127149                                                                             ,l_entity_code
127150                                                                             ,l_event_class_code
127151                                                                            )
127152                                     ,p_token_3                 => 'OWNER'
127153                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
127154                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
127155                                                                           ,p_lookup_code    => l_component_type_code
127156                                                                          )
127157                                     ,p_token_4                 => 'PRODUCT_NAME'
127158                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
127159                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
127160                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
127161                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
127162                                     ,p_ae_header_id            =>  NULL
127163                                        );
127164 
127165         IF (C_LEVEL_ERROR>= g_log_level) THEN
127166                  trace
127167                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
127168                       ,p_level    => C_LEVEL_ERROR
127169                       ,p_module   => l_log_module);
127170         END IF;
127171       END IF;
127172    END IF;
127173    --
127174    --
127175    ------------------------------------------------------------------------------------------------
127176    -- 4219869 Business Flow
127177    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
127178    -- Prior Entry.  Currently, the following code is always generated.
127179    ------------------------------------------------------------------------------------------------
127180    XLA_AE_LINES_PKG.ValidateCurrentLine;
127181 
127182    ------------------------------------------------------------------------------------
127183    -- 4219869 Business Flow
127184    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
127185    ------------------------------------------------------------------------------------
127186    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
127187 
127188    ----------------------------------------------------------------------------------
127189    -- 4219869 Business Flow
127190    -- Update journal entry status -- Need to generate this within IF <condition>
127191    ----------------------------------------------------------------------------------
127192    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
127193          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
127194          ,p_balance_type_code => l_balance_type_code
127195          );
127196 
127197    -------------------------------------------------------------------------------------------
127198    -- 4262811 - Generate the Accrual Reversal lines
127199    -------------------------------------------------------------------------------------------
127200    BEGIN
127201       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
127202                               (g_array_event(p_event_id).array_value_num('header_index'));
127203       IF l_acc_rev_flag IS NULL THEN
127204          l_acc_rev_flag := 'N';
127205       END IF;
127206    EXCEPTION
127207       WHEN OTHERS THEN
127208          l_acc_rev_flag := 'N';
127209    END;
127210    --
127211    IF (l_acc_rev_flag = 'Y') THEN
127212 
127213        -- 4645092  ------------------------------------------------------------------------------
127214        -- To allow MPA report to determine if it should generate report process
127215        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
127216        ------------------------------------------------------------------------------------------
127217 
127218        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
127219        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
127220    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
127221    -- call ADRs
127222    -- Bug 4922099
127223    --
127224    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
127225         (NVL(l_actual_upg_option, 'N') = 'O') OR
127226         (NVL(l_enc_upg_option, 'N') = 'O')
127227       )
127228    THEN
127229    NULL;
127230    --
127231    --
127232    
127233   l_ccid := AcctDerRule_4(
127234            p_application_id           => p_application_id
127235          , p_ae_header_id             => l_ae_header_id 
127236 , p_source_4 => p_source_4
127237          , x_transaction_coa_id       => l_adr_transaction_coa_id
127238          , x_accounting_coa_id        => l_adr_accounting_coa_id
127239          , x_value_type_code          => l_adr_value_type_code
127240          , p_side                     => 'NA'
127241    );
127242 
127243    xla_ae_lines_pkg.set_ccid(
127244     p_code_combination_id          => l_ccid
127245   , p_value_type_code              => l_adr_value_type_code
127246   , p_transaction_coa_id           => l_adr_transaction_coa_id
127247   , p_accounting_coa_id            => l_adr_accounting_coa_id
127248   , p_adr_code                     => 'CST_DEFAULT'
127249   , p_adr_type_code                => 'S'
127250   , p_component_type               => l_component_type
127251   , p_component_code               => l_component_code
127252   , p_component_type_code          => l_component_type_code
127253   , p_component_appl_id            => l_component_appl_id
127254   , p_amb_context_code             => l_amb_context_code
127255   , p_side                         => 'NA'
127256   );
127257 
127258 
127259    --
127260    --
127261    END IF;
127262 
127263        --
127264        -- Update the line information that should be overwritten
127265        --
127266        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
127267                                          p_header_num   => 1);
127268        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
127269 
127270        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
127271 
127272        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
127273           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
127274        END IF;
127275 
127276       --
127277       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
127278       --
127279       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
127280           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
127281       ELSE
127282           ---------------------------------------------------------------------------------------------------
127283           -- 4262811a Switch Sign
127284           ---------------------------------------------------------------------------------------------------
127285           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
127286           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
127287                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
127288           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
127289                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
127290           -- 5132302
127291           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
127292                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
127293 
127294       END IF;
127295 
127296       -- 4955764
127297       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
127298       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
127299 
127300 
127301       XLA_AE_LINES_PKG.ValidateCurrentLine;
127302       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
127303 
127304       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
127305                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
127306                ,p_balance_type_code => l_balance_type_code);
127307 
127308    END IF;
127309 
127310    -----------------------------------------------------------------------------------------
127311    -- 4262811 Multiperiod Accounting
127312    -----------------------------------------------------------------------------------------
127313      -- No MPA option is assigned.
127314 
127315 
127316 END IF;
127317 END IF;
127318 --
127319 
127320 --
127321 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
127322    trace
127323       (p_msg      => 'END of AcctLineType_230'
127324       ,p_level    => C_LEVEL_PROCEDURE
127325       ,p_module   => l_log_module);
127326 END IF;
127327 --
127328 EXCEPTION
127329   WHEN xla_exceptions_pkg.application_exception THEN
127330       RAISE;
127331   WHEN OTHERS THEN
127332        xla_exceptions_pkg.raise_message
127333            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_230');
127334 END AcctLineType_230;
127335 --
127336 
127337 ---------------------------------------
127338 --
127339 -- PRIVATE FUNCTION
127340 --         AcctLineType_231
127341 --
127342 ---------------------------------------
127343 PROCEDURE AcctLineType_231 (
127344   p_application_id        IN NUMBER
127345  ,p_event_id              IN NUMBER
127346  ,p_calculate_acctd_flag  IN VARCHAR2
127347  ,p_calculate_g_l_flag    IN VARCHAR2
127348  ,p_actual_flag           IN OUT VARCHAR2
127349  ,p_balance_type_code     OUT VARCHAR2
127350  ,p_gain_or_loss_ref      OUT VARCHAR2
127351  
127352 --Cost Management Default Account
127353  , p_source_4            IN NUMBER
127354 --Receiving Accounting Line Type
127355  , p_source_5            IN VARCHAR2
127356 --DISTRIBUTION_IDENTIFIER
127357  , p_source_11            IN NUMBER
127358 --Distribution Type
127359  , p_source_12            IN VARCHAR2
127360  , p_source_12_meaning    IN VARCHAR2
127361 --Entered Amount
127362  , p_source_18            IN NUMBER
127363 --Accounted Amount
127364  , p_source_22            IN NUMBER
127365 --Entered Currency Code
127366  , p_source_32            IN VARCHAR2
127367 --Currency Conversion Date
127368  , p_source_33            IN DATE
127369 --Currency Conversion Rate
127370  , p_source_34            IN NUMBER
127371 )
127372 IS
127373 
127374 l_component_type              VARCHAR2(80);
127375 l_component_code              VARCHAR2(30);
127376 l_component_type_code         VARCHAR2(1);
127377 l_component_appl_id           INTEGER;
127378 l_amb_context_code            VARCHAR2(30);
127379 l_entity_code                 VARCHAR2(30);
127380 l_event_class_code            VARCHAR2(30);
127381 l_ae_header_id                NUMBER;
127382 l_event_type_code             VARCHAR2(30);
127383 l_line_definition_code        VARCHAR2(30);
127384 l_line_definition_owner_code  VARCHAR2(1);
127385 --
127386 -- adr variables
127387 l_segment                     VARCHAR2(30);
127388 l_ccid                        NUMBER;
127389 l_adr_transaction_coa_id      NUMBER;
127390 l_adr_accounting_coa_id       NUMBER;
127391 l_adr_flexfield_segment_code  VARCHAR2(30);
127392 l_adr_flex_value_set_id       NUMBER;
127393 l_adr_value_type_code         VARCHAR2(30);
127394 l_adr_value_combination_id    NUMBER;
127395 l_adr_value_segment_code      VARCHAR2(30);
127396 
127397 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
127398 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
127399 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
127400 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
127401 
127402 -- 4262811 Variables ------------------------------------------------------------------------------------------
127403 l_entered_amt_idx             NUMBER;
127404 l_accted_amt_idx              NUMBER;
127405 l_acc_rev_flag                VARCHAR2(1);
127406 l_accrual_line_num            NUMBER;
127407 l_tmp_amt                     NUMBER;
127408 l_acc_rev_natural_side_code   VARCHAR2(1);
127409 
127410 l_num_entries                 NUMBER;
127411 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
127412 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
127413 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
127414 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
127415 l_recog_line_1                NUMBER;
127416 l_recog_line_2                NUMBER;
127417 
127418 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
127419 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
127420 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
127421 
127422 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
127423 
127424 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
127425 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
127426 
127427 ---------------------------------------------------------------------------------------------------------------
127428 
127429 
127430 --
127431 -- bulk performance
127432 --
127433 l_balance_type_code           VARCHAR2(1);
127434 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
127435 l_log_module                  VARCHAR2(240);
127436 
127437 --
127438 -- Upgrade strategy
127439 --
127440 l_actual_upg_option           VARCHAR2(1);
127441 l_enc_upg_option           VARCHAR2(1);
127442 
127443 --
127444 BEGIN
127445 --
127446 IF g_log_enabled THEN
127447       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_231';
127448 END IF;
127449 --
127450 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
127451 
127452       trace
127453          (p_msg      => 'BEGIN of AcctLineType_231'
127454          ,p_level    => C_LEVEL_PROCEDURE
127455          ,p_module   => l_log_module);
127456 
127457 END IF;
127458 --
127459 l_component_type             := 'AMB_JLT';
127460 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
127461 l_component_type_code        := 'S';
127462 l_component_appl_id          :=  707;
127463 l_amb_context_code           := 'DEFAULT';
127464 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
127465 l_event_class_code           := 'LDD_COST_ADJ_DEL';
127466 l_event_type_code            := 'LDD_COST_ADJ_DEL_ALL';
127467 l_line_definition_owner_code := 'S';
127468 l_line_definition_code       := 'LDD_COST_ADJ_DEL';
127469 --
127470 l_balance_type_code          := 'A';
127471 l_segment                     := NULL;
127472 l_ccid                        := NULL;
127473 l_adr_transaction_coa_id      := NULL;
127474 l_adr_accounting_coa_id       := NULL;
127475 l_adr_flexfield_segment_code  := NULL;
127476 l_adr_flex_value_set_id       := NULL;
127477 l_adr_value_type_code         := NULL;
127478 l_adr_value_combination_id    := NULL;
127479 l_adr_value_segment_code      := NULL;
127480 
127481 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
127482 l_bflow_class_code           := '';    -- 4219869 Business Flow
127483 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
127484 l_budgetary_control_flag     := 'N';
127485 
127486 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
127487 l_bflow_applied_to_amt       := NULL; -- 5132302
127488 l_entered_amt_idx            := NULL;          -- 4262811
127489 l_accted_amt_idx             := NULL;          -- 4262811
127490 l_acc_rev_flag               := NULL;          -- 4262811
127491 l_accrual_line_num           := NULL;          -- 4262811
127492 l_tmp_amt                    := NULL;          -- 4262811
127493 --
127494  
127495 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
127496     l_balance_type_code <> 'B' THEN
127497 IF NVL(p_source_5,'
127498 ') =  'Purchase Price Variance'
127499  THEN 
127500 
127501    --
127502    XLA_AE_LINES_PKG.SetNewLine;
127503 
127504    p_balance_type_code          := l_balance_type_code;
127505    -- set the flag so later we will know whether the gain loss line needs to be created
127506    
127507    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
127508      p_actual_flag :='A';
127509    END IF;
127510 
127511    --
127512    -- bulk performance
127513    --
127514    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
127515                                       p_header_num   => 0); -- 4262811
127516    --
127517    -- set accounting line options
127518    --
127519    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
127520            p_natural_side_code          => 'D'
127521          , p_gain_or_loss_flag          => 'N'
127522          , p_gl_transfer_mode_code      => 'S'
127523          , p_acct_entry_type_code       => 'A'
127524          , p_switch_side_flag           => 'Y'
127525          , p_merge_duplicate_code       => 'N'
127526          );
127527    --
127528    l_acc_rev_natural_side_code := 'C';  -- 4262811
127529    -- 
127530    --
127531    -- set accounting line type info
127532    --
127533    xla_ae_lines_pkg.SetAcctLineType
127534       (p_component_type             => l_component_type
127535       ,p_event_type_code            => l_event_type_code
127536       ,p_line_definition_owner_code => l_line_definition_owner_code
127537       ,p_line_definition_code       => l_line_definition_code
127538       ,p_accounting_line_code       => l_component_code
127539       ,p_accounting_line_type_code  => l_component_type_code
127540       ,p_accounting_line_appl_id    => l_component_appl_id
127541       ,p_amb_context_code           => l_amb_context_code
127542       ,p_entity_code                => l_entity_code
127543       ,p_event_class_code           => l_event_class_code);
127544    --
127545    -- set accounting class
127546    --
127547    xla_ae_lines_pkg.SetAcctClass(
127548            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
127549          , p_ae_header_id           => l_ae_header_id
127550          );
127551 
127552    --
127553    -- set rounding class
127554    --
127555    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
127556                       'PURCHASE_PRICE_VARIANCE';
127557 
127558    --
127559    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
127560    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
127561    --
127562    -- bulk performance
127563    --
127564    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
127565 
127566    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
127567       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
127568 
127569    -- 4955764
127570    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
127571       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
127572 
127573    -- 4458381 Public Sector Enh
127574    
127575    --
127576    -- set accounting attributes for the line type
127577    --
127578    l_entered_amt_idx := 3;
127579    l_accted_amt_idx  := 7;
127580    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
127581    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
127582    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
127583    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
127584    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
127585    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
127586    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
127587    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
127588    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
127589    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
127590    l_rec_acct_attrs.array_date_value(5)  := p_source_33;
127591    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
127592    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
127593    l_rec_acct_attrs.array_acct_attr_code(7) := 'LEDGER_AMOUNT';
127594    l_rec_acct_attrs.array_num_value(7)  := p_source_22;
127595 
127596    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
127597    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
127598 
127599    ---------------------------------------------------------------------------------------------------------------
127600    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
127601    ---------------------------------------------------------------------------------------------------------------
127602    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
127603 
127604    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
127605    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
127606 
127607    IF xla_accounting_cache_pkg.GetValueChar
127608          (p_source_code         => 'LEDGER_CATEGORY_CODE'
127609          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
127610    AND l_bflow_method_code = 'PRIOR_ENTRY'
127611 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
127612    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
127613          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
127614        )
127615    THEN
127616          xla_ae_lines_pkg.BflowUpgEntry
127617            (p_business_method_code    => l_bflow_method_code
127618            ,p_business_class_code     => l_bflow_class_code
127619            ,p_balance_type            => l_balance_type_code);
127620    ELSE
127621       NULL;
127622 -- No business flow processing for business flow method of NONE.
127623    END IF;
127624 
127625    --
127626    -- call analytical criteria
127627    --
127628    
127629    --
127630    -- call description
127631    --
127632    -- No description or it is inherited.
127633    --
127634    -- call ADRs
127635    -- Bug 4922099
127636    --
127637    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
127638         (NVL(l_actual_upg_option, 'N') = 'O') OR
127639         (NVL(l_enc_upg_option, 'N') = 'O')
127640       )
127641    THEN
127642    NULL;
127643    --
127644    --
127645    
127646   l_ccid := AcctDerRule_4(
127647            p_application_id           => p_application_id
127648          , p_ae_header_id             => l_ae_header_id 
127649 , p_source_4 => p_source_4
127650          , x_transaction_coa_id       => l_adr_transaction_coa_id
127651          , x_accounting_coa_id        => l_adr_accounting_coa_id
127652          , x_value_type_code          => l_adr_value_type_code
127653          , p_side                     => 'NA'
127654    );
127655 
127656    xla_ae_lines_pkg.set_ccid(
127657     p_code_combination_id          => l_ccid
127658   , p_value_type_code              => l_adr_value_type_code
127659   , p_transaction_coa_id           => l_adr_transaction_coa_id
127660   , p_accounting_coa_id            => l_adr_accounting_coa_id
127661   , p_adr_code                     => 'CST_DEFAULT'
127662   , p_adr_type_code                => 'S'
127663   , p_component_type               => l_component_type
127664   , p_component_code               => l_component_code
127665   , p_component_type_code          => l_component_type_code
127666   , p_component_appl_id            => l_component_appl_id
127667   , p_amb_context_code             => l_amb_context_code
127668   , p_side                         => 'NA'
127669   );
127670 
127671 
127672    --
127673    --
127674    END IF;
127675    --
127676    -- Bug 4922099
127677    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
127678           (NVL(l_enc_upg_option, 'N') = 'O')
127679         ) AND
127680         (l_bflow_method_code = 'PRIOR_ENTRY')
127681       )
127682    THEN
127683       IF
127684       --
127685       1 = 2
127686       --
127687       THEN
127688       xla_accounting_err_pkg.build_message
127689                                     (p_appli_s_name            => 'XLA'
127690                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
127691                                     ,p_token_1                 => 'LINE_NUMBER'
127692                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
127693                                     ,p_token_2                 => 'LINE_TYPE_NAME'
127694                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
127695                                                                              l_component_type
127696                                                                             ,l_component_code
127697                                                                             ,l_component_type_code
127698                                                                             ,l_component_appl_id
127699                                                                             ,l_amb_context_code
127700                                                                             ,l_entity_code
127701                                                                             ,l_event_class_code
127702                                                                            )
127703                                     ,p_token_3                 => 'OWNER'
127704                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
127705                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
127706                                                                           ,p_lookup_code    => l_component_type_code
127707                                                                          )
127708                                     ,p_token_4                 => 'PRODUCT_NAME'
127709                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
127710                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
127711                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
127712                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
127713                                     ,p_ae_header_id            =>  NULL
127714                                        );
127715 
127716         IF (C_LEVEL_ERROR>= g_log_level) THEN
127717                  trace
127718                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
127719                       ,p_level    => C_LEVEL_ERROR
127720                       ,p_module   => l_log_module);
127721         END IF;
127722       END IF;
127723    END IF;
127724    --
127725    --
127726    ------------------------------------------------------------------------------------------------
127727    -- 4219869 Business Flow
127728    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
127729    -- Prior Entry.  Currently, the following code is always generated.
127730    ------------------------------------------------------------------------------------------------
127731    XLA_AE_LINES_PKG.ValidateCurrentLine;
127732 
127733    ------------------------------------------------------------------------------------
127734    -- 4219869 Business Flow
127735    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
127736    ------------------------------------------------------------------------------------
127737    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
127738 
127739    ----------------------------------------------------------------------------------
127740    -- 4219869 Business Flow
127741    -- Update journal entry status -- Need to generate this within IF <condition>
127742    ----------------------------------------------------------------------------------
127743    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
127744          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
127745          ,p_balance_type_code => l_balance_type_code
127746          );
127747 
127748    -------------------------------------------------------------------------------------------
127749    -- 4262811 - Generate the Accrual Reversal lines
127750    -------------------------------------------------------------------------------------------
127751    BEGIN
127752       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
127753                               (g_array_event(p_event_id).array_value_num('header_index'));
127754       IF l_acc_rev_flag IS NULL THEN
127755          l_acc_rev_flag := 'N';
127756       END IF;
127757    EXCEPTION
127758       WHEN OTHERS THEN
127759          l_acc_rev_flag := 'N';
127760    END;
127761    --
127762    IF (l_acc_rev_flag = 'Y') THEN
127763 
127764        -- 4645092  ------------------------------------------------------------------------------
127765        -- To allow MPA report to determine if it should generate report process
127766        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
127767        ------------------------------------------------------------------------------------------
127768 
127769        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
127770        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
127771    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
127772    -- call ADRs
127773    -- Bug 4922099
127774    --
127775    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
127776         (NVL(l_actual_upg_option, 'N') = 'O') OR
127777         (NVL(l_enc_upg_option, 'N') = 'O')
127778       )
127779    THEN
127780    NULL;
127781    --
127782    --
127783    
127784   l_ccid := AcctDerRule_4(
127785            p_application_id           => p_application_id
127786          , p_ae_header_id             => l_ae_header_id 
127787 , p_source_4 => p_source_4
127788          , x_transaction_coa_id       => l_adr_transaction_coa_id
127789          , x_accounting_coa_id        => l_adr_accounting_coa_id
127790          , x_value_type_code          => l_adr_value_type_code
127791          , p_side                     => 'NA'
127792    );
127793 
127794    xla_ae_lines_pkg.set_ccid(
127795     p_code_combination_id          => l_ccid
127796   , p_value_type_code              => l_adr_value_type_code
127797   , p_transaction_coa_id           => l_adr_transaction_coa_id
127798   , p_accounting_coa_id            => l_adr_accounting_coa_id
127799   , p_adr_code                     => 'CST_DEFAULT'
127800   , p_adr_type_code                => 'S'
127801   , p_component_type               => l_component_type
127802   , p_component_code               => l_component_code
127803   , p_component_type_code          => l_component_type_code
127804   , p_component_appl_id            => l_component_appl_id
127805   , p_amb_context_code             => l_amb_context_code
127806   , p_side                         => 'NA'
127807   );
127808 
127809 
127810    --
127811    --
127812    END IF;
127813 
127814        --
127815        -- Update the line information that should be overwritten
127816        --
127817        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
127818                                          p_header_num   => 1);
127819        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
127820 
127821        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
127822 
127823        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
127824           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
127825        END IF;
127826 
127827       --
127828       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
127829       --
127830       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
127831           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
127832       ELSE
127833           ---------------------------------------------------------------------------------------------------
127834           -- 4262811a Switch Sign
127835           ---------------------------------------------------------------------------------------------------
127836           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
127837           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
127838                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
127839           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
127840                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
127841           -- 5132302
127842           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
127843                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
127844 
127845       END IF;
127846 
127847       -- 4955764
127848       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
127849       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
127850 
127851 
127852       XLA_AE_LINES_PKG.ValidateCurrentLine;
127853       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
127854 
127855       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
127856                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
127857                ,p_balance_type_code => l_balance_type_code);
127858 
127859    END IF;
127860 
127861    -----------------------------------------------------------------------------------------
127862    -- 4262811 Multiperiod Accounting
127863    -----------------------------------------------------------------------------------------
127864      -- No MPA option is assigned.
127865 
127866 
127867 END IF;
127868 END IF;
127869 --
127870 
127871 --
127872 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
127873    trace
127874       (p_msg      => 'END of AcctLineType_231'
127875       ,p_level    => C_LEVEL_PROCEDURE
127876       ,p_module   => l_log_module);
127877 END IF;
127878 --
127879 EXCEPTION
127880   WHEN xla_exceptions_pkg.application_exception THEN
127881       RAISE;
127882   WHEN OTHERS THEN
127883        xla_exceptions_pkg.raise_message
127884            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_231');
127885 END AcctLineType_231;
127886 --
127887 
127888 ---------------------------------------
127889 --
127890 -- PRIVATE FUNCTION
127891 --         AcctLineType_232
127892 --
127893 ---------------------------------------
127894 PROCEDURE AcctLineType_232 (
127895   p_application_id        IN NUMBER
127896  ,p_event_id              IN NUMBER
127897  ,p_calculate_acctd_flag  IN VARCHAR2
127898  ,p_calculate_g_l_flag    IN VARCHAR2
127899  ,p_actual_flag           IN OUT VARCHAR2
127900  ,p_balance_type_code     OUT VARCHAR2
127901  ,p_gain_or_loss_ref      OUT VARCHAR2
127902  
127903 --Cost Management Default Account
127904  , p_source_4            IN NUMBER
127905 --Applied to Application ID
127906  , p_source_6            IN NUMBER
127907 --Applied to Distribution Link Type
127908  , p_source_7            IN VARCHAR2
127909 --Applied to Entity Code
127910  , p_source_8            IN VARCHAR2
127911 --Applied To Purchase Document Identifier
127912  , p_source_10            IN NUMBER
127913 --DISTRIBUTION_IDENTIFIER
127914  , p_source_11            IN NUMBER
127915 --Distribution Type
127916  , p_source_12            IN VARCHAR2
127917  , p_source_12_meaning    IN VARCHAR2
127918 --PO Budget Account
127919  , p_source_13            IN NUMBER
127920 --Encumbrance Reversal Amount Entered
127921  , p_source_14            IN NUMBER
127922 --Entered Currency Code
127923  , p_source_15            IN VARCHAR2
127924 --Transaction Encumbrance Reversal Amount
127925  , p_source_16            IN NUMBER
127926 --Entered Amount
127927  , p_source_18            IN NUMBER
127928 --Currency Conversion Date
127929  , p_source_19            IN DATE
127930 --Currency Conversion Rate
127931  , p_source_20            IN NUMBER
127932 --Currency Conversion Type
127933  , p_source_21            IN VARCHAR2
127934 --Accounted Amount
127935  , p_source_22            IN NUMBER
127936 --Purchasing Encumbrance Type Identifier
127937  , p_source_23            IN NUMBER
127938 --Accounting Line Type
127939  , p_source_24            IN NUMBER
127940 --Costing Encumbrance Upgrade Option
127941  , p_source_27            IN VARCHAR2
127942 --TXN_PO_DISTRIBUTION_ID
127943  , p_source_28            IN NUMBER
127944 )
127945 IS
127946 
127947 l_component_type              VARCHAR2(80);
127948 l_component_code              VARCHAR2(30);
127949 l_component_type_code         VARCHAR2(1);
127950 l_component_appl_id           INTEGER;
127951 l_amb_context_code            VARCHAR2(30);
127952 l_entity_code                 VARCHAR2(30);
127953 l_event_class_code            VARCHAR2(30);
127954 l_ae_header_id                NUMBER;
127955 l_event_type_code             VARCHAR2(30);
127956 l_line_definition_code        VARCHAR2(30);
127957 l_line_definition_owner_code  VARCHAR2(1);
127958 --
127959 -- adr variables
127960 l_segment                     VARCHAR2(30);
127961 l_ccid                        NUMBER;
127962 l_adr_transaction_coa_id      NUMBER;
127963 l_adr_accounting_coa_id       NUMBER;
127964 l_adr_flexfield_segment_code  VARCHAR2(30);
127965 l_adr_flex_value_set_id       NUMBER;
127966 l_adr_value_type_code         VARCHAR2(30);
127967 l_adr_value_combination_id    NUMBER;
127968 l_adr_value_segment_code      VARCHAR2(30);
127969 
127970 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
127971 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
127972 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
127973 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
127974 
127975 -- 4262811 Variables ------------------------------------------------------------------------------------------
127976 l_entered_amt_idx             NUMBER;
127977 l_accted_amt_idx              NUMBER;
127978 l_acc_rev_flag                VARCHAR2(1);
127979 l_accrual_line_num            NUMBER;
127980 l_tmp_amt                     NUMBER;
127981 l_acc_rev_natural_side_code   VARCHAR2(1);
127982 
127983 l_num_entries                 NUMBER;
127984 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
127985 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
127986 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
127987 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
127988 l_recog_line_1                NUMBER;
127989 l_recog_line_2                NUMBER;
127990 
127991 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
127992 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
127993 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
127994 
127995 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
127996 
127997 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
127998 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
127999 
128000 ---------------------------------------------------------------------------------------------------------------
128001 
128002 
128003 --
128004 -- bulk performance
128005 --
128006 l_balance_type_code           VARCHAR2(1);
128007 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
128008 l_log_module                  VARCHAR2(240);
128009 
128010 --
128011 -- Upgrade strategy
128012 --
128013 l_actual_upg_option           VARCHAR2(1);
128014 l_enc_upg_option           VARCHAR2(1);
128015 
128016 --
128017 BEGIN
128018 --
128019 IF g_log_enabled THEN
128020       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_232';
128021 END IF;
128022 --
128023 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
128024 
128025       trace
128026          (p_msg      => 'BEGIN of AcctLineType_232'
128027          ,p_level    => C_LEVEL_PROCEDURE
128028          ,p_module   => l_log_module);
128029 
128030 END IF;
128031 --
128032 l_component_type             := 'AMB_JLT';
128033 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
128034 l_component_type_code        := 'S';
128035 l_component_appl_id          :=  707;
128036 l_amb_context_code           := 'DEFAULT';
128037 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
128038 l_event_class_code           := 'PURCHASE_ORDER';
128039 l_event_type_code            := 'PURCHASE_ORDER_ALL';
128040 l_line_definition_owner_code := 'S';
128041 l_line_definition_code       := 'PURCHASE_ORDER';
128042 --
128043 l_balance_type_code          := 'A';
128044 l_segment                     := NULL;
128045 l_ccid                        := NULL;
128046 l_adr_transaction_coa_id      := NULL;
128047 l_adr_accounting_coa_id       := NULL;
128048 l_adr_flexfield_segment_code  := NULL;
128049 l_adr_flex_value_set_id       := NULL;
128050 l_adr_value_type_code         := NULL;
128051 l_adr_value_combination_id    := NULL;
128052 l_adr_value_segment_code      := NULL;
128053 
128054 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
128055 l_bflow_class_code           := '';    -- 4219869 Business Flow
128056 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
128057 l_budgetary_control_flag     := 'N';
128058 
128059 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
128060 l_bflow_applied_to_amt       := NULL; -- 5132302
128061 l_entered_amt_idx            := NULL;          -- 4262811
128062 l_accted_amt_idx             := NULL;          -- 4262811
128063 l_acc_rev_flag               := NULL;          -- 4262811
128064 l_accrual_line_num           := NULL;          -- 4262811
128065 l_tmp_amt                    := NULL;          -- 4262811
128066 --
128067  
128068 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
128069     l_balance_type_code <> 'B' THEN
128070 IF NVL(p_source_24,9E125) =  6
128071  THEN 
128072 
128073    --
128074    XLA_AE_LINES_PKG.SetNewLine;
128075 
128076    p_balance_type_code          := l_balance_type_code;
128077    -- set the flag so later we will know whether the gain loss line needs to be created
128078    
128079    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
128080      p_actual_flag :='A';
128081    END IF;
128082 
128083    --
128084    -- bulk performance
128085    --
128086    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
128087                                       p_header_num   => 0); -- 4262811
128088    --
128089    -- set accounting line options
128090    --
128091    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
128092            p_natural_side_code          => 'D'
128093          , p_gain_or_loss_flag          => 'N'
128094          , p_gl_transfer_mode_code      => 'S'
128095          , p_acct_entry_type_code       => 'A'
128096          , p_switch_side_flag           => 'Y'
128097          , p_merge_duplicate_code       => 'N'
128098          );
128099    --
128100    l_acc_rev_natural_side_code := 'C';  -- 4262811
128101    -- 
128102    --
128103    -- set accounting line type info
128104    --
128105    xla_ae_lines_pkg.SetAcctLineType
128106       (p_component_type             => l_component_type
128107       ,p_event_type_code            => l_event_type_code
128108       ,p_line_definition_owner_code => l_line_definition_owner_code
128109       ,p_line_definition_code       => l_line_definition_code
128110       ,p_accounting_line_code       => l_component_code
128111       ,p_accounting_line_type_code  => l_component_type_code
128112       ,p_accounting_line_appl_id    => l_component_appl_id
128113       ,p_amb_context_code           => l_amb_context_code
128114       ,p_entity_code                => l_entity_code
128115       ,p_event_class_code           => l_event_class_code);
128116    --
128117    -- set accounting class
128118    --
128119    xla_ae_lines_pkg.SetAcctClass(
128120            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
128121          , p_ae_header_id           => l_ae_header_id
128122          );
128123 
128124    --
128125    -- set rounding class
128126    --
128127    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
128128                       'PURCHASE_PRICE_VARIANCE';
128129 
128130    --
128131    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
128132    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
128133    --
128134    -- bulk performance
128135    --
128136    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
128137 
128138    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
128139       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
128140 
128141    -- 4955764
128142    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
128143       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
128144 
128145    -- 4458381 Public Sector Enh
128146    
128147    --
128148    -- set accounting attributes for the line type
128149    --
128150    l_entered_amt_idx := 17;
128151    l_accted_amt_idx  := 22;
128152    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
128153    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
128154    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
128155    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
128156    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
128157    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
128158    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
128159    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
128160    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
128161    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
128162    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_10);
128163    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
128164    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
128165    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
128166    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
128167    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
128168    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_13);
128169    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
128170    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
128171    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
128172    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
128173    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
128174    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
128175    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
128176    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_13);
128177    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
128178    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
128179    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
128180    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
128181    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
128182    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
128183    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
128184    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
128185    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
128186    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
128187    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
128188    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
128189    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
128190    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
128191    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
128192    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
128193    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
128194    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
128195    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
128196    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
128197    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
128198    l_rec_acct_attrs.array_num_value(23)  := p_source_23;
128199    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
128200    l_rec_acct_attrs.array_num_value(24)  := p_source_23;
128201 
128202    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
128203    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
128204 
128205    ---------------------------------------------------------------------------------------------------------------
128206    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
128207    ---------------------------------------------------------------------------------------------------------------
128208    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
128209 
128210    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
128211    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
128212 
128213    IF xla_accounting_cache_pkg.GetValueChar
128214          (p_source_code         => 'LEDGER_CATEGORY_CODE'
128215          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
128216    AND l_bflow_method_code = 'PRIOR_ENTRY'
128217 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
128218    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
128219          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
128220        )
128221    THEN
128222          xla_ae_lines_pkg.BflowUpgEntry
128223            (p_business_method_code    => l_bflow_method_code
128224            ,p_business_class_code     => l_bflow_class_code
128225            ,p_balance_type            => l_balance_type_code);
128226    ELSE
128227       NULL;
128228 -- No business flow processing for business flow method of NONE.
128229    END IF;
128230 
128231    --
128232    -- call analytical criteria
128233    --
128234    
128235    --
128236    -- call description
128237    --
128238    -- No description or it is inherited.
128239    --
128240    -- call ADRs
128241    -- Bug 4922099
128242    --
128243    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
128244         (NVL(l_actual_upg_option, 'N') = 'O') OR
128245         (NVL(l_enc_upg_option, 'N') = 'O')
128246       )
128247    THEN
128248    NULL;
128249    --
128250    --
128251    
128252   l_ccid := AcctDerRule_4(
128253            p_application_id           => p_application_id
128254          , p_ae_header_id             => l_ae_header_id 
128255 , p_source_4 => p_source_4
128256          , x_transaction_coa_id       => l_adr_transaction_coa_id
128257          , x_accounting_coa_id        => l_adr_accounting_coa_id
128258          , x_value_type_code          => l_adr_value_type_code
128259          , p_side                     => 'NA'
128260    );
128261 
128262    xla_ae_lines_pkg.set_ccid(
128263     p_code_combination_id          => l_ccid
128264   , p_value_type_code              => l_adr_value_type_code
128265   , p_transaction_coa_id           => l_adr_transaction_coa_id
128266   , p_accounting_coa_id            => l_adr_accounting_coa_id
128267   , p_adr_code                     => 'CST_DEFAULT'
128268   , p_adr_type_code                => 'S'
128269   , p_component_type               => l_component_type
128270   , p_component_code               => l_component_code
128271   , p_component_type_code          => l_component_type_code
128272   , p_component_appl_id            => l_component_appl_id
128273   , p_amb_context_code             => l_amb_context_code
128274   , p_side                         => 'NA'
128275   );
128276 
128277 
128278    --
128279    --
128280    END IF;
128281    --
128282    -- Bug 4922099
128283    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
128284           (NVL(l_enc_upg_option, 'N') = 'O')
128285         ) AND
128286         (l_bflow_method_code = 'PRIOR_ENTRY')
128287       )
128288    THEN
128289       IF
128290       --
128291       1 = 2
128292       --
128293       THEN
128294       xla_accounting_err_pkg.build_message
128295                                     (p_appli_s_name            => 'XLA'
128296                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
128297                                     ,p_token_1                 => 'LINE_NUMBER'
128298                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
128299                                     ,p_token_2                 => 'LINE_TYPE_NAME'
128300                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
128301                                                                              l_component_type
128302                                                                             ,l_component_code
128303                                                                             ,l_component_type_code
128304                                                                             ,l_component_appl_id
128305                                                                             ,l_amb_context_code
128306                                                                             ,l_entity_code
128307                                                                             ,l_event_class_code
128308                                                                            )
128309                                     ,p_token_3                 => 'OWNER'
128310                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
128311                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
128312                                                                           ,p_lookup_code    => l_component_type_code
128313                                                                          )
128314                                     ,p_token_4                 => 'PRODUCT_NAME'
128315                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
128316                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
128317                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
128318                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
128319                                     ,p_ae_header_id            =>  NULL
128320                                        );
128321 
128322         IF (C_LEVEL_ERROR>= g_log_level) THEN
128323                  trace
128324                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
128325                       ,p_level    => C_LEVEL_ERROR
128326                       ,p_module   => l_log_module);
128327         END IF;
128328       END IF;
128329    END IF;
128330    --
128331    --
128332    ------------------------------------------------------------------------------------------------
128333    -- 4219869 Business Flow
128334    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
128335    -- Prior Entry.  Currently, the following code is always generated.
128336    ------------------------------------------------------------------------------------------------
128337    XLA_AE_LINES_PKG.ValidateCurrentLine;
128338 
128339    ------------------------------------------------------------------------------------
128340    -- 4219869 Business Flow
128341    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
128342    ------------------------------------------------------------------------------------
128343    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
128344 
128345    ----------------------------------------------------------------------------------
128346    -- 4219869 Business Flow
128347    -- Update journal entry status -- Need to generate this within IF <condition>
128348    ----------------------------------------------------------------------------------
128349    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
128350          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
128351          ,p_balance_type_code => l_balance_type_code
128352          );
128353 
128354    -------------------------------------------------------------------------------------------
128355    -- 4262811 - Generate the Accrual Reversal lines
128356    -------------------------------------------------------------------------------------------
128357    BEGIN
128358       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
128359                               (g_array_event(p_event_id).array_value_num('header_index'));
128360       IF l_acc_rev_flag IS NULL THEN
128361          l_acc_rev_flag := 'N';
128362       END IF;
128363    EXCEPTION
128364       WHEN OTHERS THEN
128365          l_acc_rev_flag := 'N';
128366    END;
128367    --
128368    IF (l_acc_rev_flag = 'Y') THEN
128369 
128370        -- 4645092  ------------------------------------------------------------------------------
128371        -- To allow MPA report to determine if it should generate report process
128372        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
128373        ------------------------------------------------------------------------------------------
128374 
128375        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
128376        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
128377    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
128378    -- call ADRs
128379    -- Bug 4922099
128380    --
128381    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
128382         (NVL(l_actual_upg_option, 'N') = 'O') OR
128383         (NVL(l_enc_upg_option, 'N') = 'O')
128384       )
128385    THEN
128386    NULL;
128387    --
128388    --
128389    
128390   l_ccid := AcctDerRule_4(
128391            p_application_id           => p_application_id
128392          , p_ae_header_id             => l_ae_header_id 
128393 , p_source_4 => p_source_4
128394          , x_transaction_coa_id       => l_adr_transaction_coa_id
128395          , x_accounting_coa_id        => l_adr_accounting_coa_id
128396          , x_value_type_code          => l_adr_value_type_code
128397          , p_side                     => 'NA'
128398    );
128399 
128400    xla_ae_lines_pkg.set_ccid(
128401     p_code_combination_id          => l_ccid
128402   , p_value_type_code              => l_adr_value_type_code
128403   , p_transaction_coa_id           => l_adr_transaction_coa_id
128404   , p_accounting_coa_id            => l_adr_accounting_coa_id
128405   , p_adr_code                     => 'CST_DEFAULT'
128406   , p_adr_type_code                => 'S'
128407   , p_component_type               => l_component_type
128408   , p_component_code               => l_component_code
128409   , p_component_type_code          => l_component_type_code
128410   , p_component_appl_id            => l_component_appl_id
128411   , p_amb_context_code             => l_amb_context_code
128412   , p_side                         => 'NA'
128413   );
128414 
128415 
128416    --
128417    --
128418    END IF;
128419 
128420        --
128421        -- Update the line information that should be overwritten
128422        --
128423        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
128424                                          p_header_num   => 1);
128425        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
128426 
128427        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
128428 
128429        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
128430           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
128431        END IF;
128432 
128433       --
128434       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
128435       --
128436       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
128437           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
128438       ELSE
128439           ---------------------------------------------------------------------------------------------------
128440           -- 4262811a Switch Sign
128441           ---------------------------------------------------------------------------------------------------
128442           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
128443           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
128444                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
128445           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
128446                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
128447           -- 5132302
128448           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
128449                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
128450 
128451       END IF;
128452 
128453       -- 4955764
128454       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
128455       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
128456 
128457 
128458       XLA_AE_LINES_PKG.ValidateCurrentLine;
128459       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
128460 
128461       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
128462                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
128463                ,p_balance_type_code => l_balance_type_code);
128464 
128465    END IF;
128466 
128467    -----------------------------------------------------------------------------------------
128468    -- 4262811 Multiperiod Accounting
128469    -----------------------------------------------------------------------------------------
128470      -- No MPA option is assigned.
128471 
128472 
128473 END IF;
128474 END IF;
128475 --
128476 
128477 --
128478 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
128479    trace
128480       (p_msg      => 'END of AcctLineType_232'
128481       ,p_level    => C_LEVEL_PROCEDURE
128482       ,p_module   => l_log_module);
128483 END IF;
128484 --
128485 EXCEPTION
128486   WHEN xla_exceptions_pkg.application_exception THEN
128487       RAISE;
128488   WHEN OTHERS THEN
128489        xla_exceptions_pkg.raise_message
128490            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_232');
128491 END AcctLineType_232;
128492 --
128493 
128494 ---------------------------------------
128495 --
128496 -- PRIVATE FUNCTION
128497 --         AcctLineType_233
128498 --
128499 ---------------------------------------
128500 PROCEDURE AcctLineType_233 (
128501   p_application_id        IN NUMBER
128502  ,p_event_id              IN NUMBER
128503  ,p_calculate_acctd_flag  IN VARCHAR2
128504  ,p_calculate_g_l_flag    IN VARCHAR2
128505  ,p_actual_flag           IN OUT VARCHAR2
128506  ,p_balance_type_code     OUT VARCHAR2
128507  ,p_gain_or_loss_ref      OUT VARCHAR2
128508  
128509 --Cost Management Default Account
128510  , p_source_4            IN NUMBER
128511 --DISTRIBUTION_IDENTIFIER
128512  , p_source_11            IN NUMBER
128513 --Distribution Type
128514  , p_source_12            IN VARCHAR2
128515  , p_source_12_meaning    IN VARCHAR2
128516 --Entered Currency Code
128517  , p_source_15            IN VARCHAR2
128518 --Entered Amount
128519  , p_source_18            IN NUMBER
128520 --Currency Conversion Date
128521  , p_source_19            IN DATE
128522 --Currency Conversion Rate
128523  , p_source_20            IN NUMBER
128524 --Currency Conversion Type
128525  , p_source_21            IN VARCHAR2
128526 --Accounted Amount
128527  , p_source_22            IN NUMBER
128528 --Accounting Line Type
128529  , p_source_24            IN NUMBER
128530 )
128531 IS
128532 
128533 l_component_type              VARCHAR2(80);
128534 l_component_code              VARCHAR2(30);
128535 l_component_type_code         VARCHAR2(1);
128536 l_component_appl_id           INTEGER;
128537 l_amb_context_code            VARCHAR2(30);
128538 l_entity_code                 VARCHAR2(30);
128539 l_event_class_code            VARCHAR2(30);
128540 l_ae_header_id                NUMBER;
128541 l_event_type_code             VARCHAR2(30);
128542 l_line_definition_code        VARCHAR2(30);
128543 l_line_definition_owner_code  VARCHAR2(1);
128544 --
128545 -- adr variables
128546 l_segment                     VARCHAR2(30);
128547 l_ccid                        NUMBER;
128548 l_adr_transaction_coa_id      NUMBER;
128549 l_adr_accounting_coa_id       NUMBER;
128550 l_adr_flexfield_segment_code  VARCHAR2(30);
128551 l_adr_flex_value_set_id       NUMBER;
128552 l_adr_value_type_code         VARCHAR2(30);
128553 l_adr_value_combination_id    NUMBER;
128554 l_adr_value_segment_code      VARCHAR2(30);
128555 
128556 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
128557 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
128558 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
128559 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
128560 
128561 -- 4262811 Variables ------------------------------------------------------------------------------------------
128562 l_entered_amt_idx             NUMBER;
128563 l_accted_amt_idx              NUMBER;
128564 l_acc_rev_flag                VARCHAR2(1);
128565 l_accrual_line_num            NUMBER;
128566 l_tmp_amt                     NUMBER;
128567 l_acc_rev_natural_side_code   VARCHAR2(1);
128568 
128569 l_num_entries                 NUMBER;
128570 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
128571 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
128572 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
128573 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
128574 l_recog_line_1                NUMBER;
128575 l_recog_line_2                NUMBER;
128576 
128577 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
128578 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
128579 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
128580 
128581 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
128582 
128583 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
128584 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
128585 
128586 ---------------------------------------------------------------------------------------------------------------
128587 
128588 
128589 --
128590 -- bulk performance
128591 --
128592 l_balance_type_code           VARCHAR2(1);
128593 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
128594 l_log_module                  VARCHAR2(240);
128595 
128596 --
128597 -- Upgrade strategy
128598 --
128599 l_actual_upg_option           VARCHAR2(1);
128600 l_enc_upg_option           VARCHAR2(1);
128601 
128602 --
128603 BEGIN
128604 --
128605 IF g_log_enabled THEN
128606       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_233';
128607 END IF;
128608 --
128609 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
128610 
128611       trace
128612          (p_msg      => 'BEGIN of AcctLineType_233'
128613          ,p_level    => C_LEVEL_PROCEDURE
128614          ,p_module   => l_log_module);
128615 
128616 END IF;
128617 --
128618 l_component_type             := 'AMB_JLT';
128619 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
128620 l_component_type_code        := 'S';
128621 l_component_appl_id          :=  707;
128622 l_amb_context_code           := 'DEFAULT';
128623 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
128624 l_event_class_code           := 'USER_DEFINE';
128625 l_event_type_code            := 'UDIR_INTERORG_SHIP_TP';
128626 l_line_definition_owner_code := 'S';
128627 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_TP';
128628 --
128629 l_balance_type_code          := 'A';
128630 l_segment                     := NULL;
128631 l_ccid                        := NULL;
128632 l_adr_transaction_coa_id      := NULL;
128633 l_adr_accounting_coa_id       := NULL;
128634 l_adr_flexfield_segment_code  := NULL;
128635 l_adr_flex_value_set_id       := NULL;
128636 l_adr_value_type_code         := NULL;
128637 l_adr_value_combination_id    := NULL;
128638 l_adr_value_segment_code      := NULL;
128639 
128640 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
128641 l_bflow_class_code           := '';    -- 4219869 Business Flow
128642 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
128643 l_budgetary_control_flag     := 'N';
128644 
128645 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
128646 l_bflow_applied_to_amt       := NULL; -- 5132302
128647 l_entered_amt_idx            := NULL;          -- 4262811
128648 l_accted_amt_idx             := NULL;          -- 4262811
128649 l_acc_rev_flag               := NULL;          -- 4262811
128650 l_accrual_line_num           := NULL;          -- 4262811
128651 l_tmp_amt                    := NULL;          -- 4262811
128652 --
128653  
128654 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
128655     l_balance_type_code <> 'B' THEN
128656 IF NVL(p_source_24,9E125) =  6
128657  THEN 
128658 
128659    --
128660    XLA_AE_LINES_PKG.SetNewLine;
128661 
128662    p_balance_type_code          := l_balance_type_code;
128663    -- set the flag so later we will know whether the gain loss line needs to be created
128664    
128665    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
128666      p_actual_flag :='A';
128667    END IF;
128668 
128669    --
128670    -- bulk performance
128671    --
128672    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
128673                                       p_header_num   => 0); -- 4262811
128674    --
128675    -- set accounting line options
128676    --
128677    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
128678            p_natural_side_code          => 'D'
128679          , p_gain_or_loss_flag          => 'N'
128680          , p_gl_transfer_mode_code      => 'S'
128681          , p_acct_entry_type_code       => 'A'
128682          , p_switch_side_flag           => 'Y'
128683          , p_merge_duplicate_code       => 'N'
128684          );
128685    --
128686    l_acc_rev_natural_side_code := 'C';  -- 4262811
128687    -- 
128688    --
128689    -- set accounting line type info
128690    --
128691    xla_ae_lines_pkg.SetAcctLineType
128692       (p_component_type             => l_component_type
128693       ,p_event_type_code            => l_event_type_code
128694       ,p_line_definition_owner_code => l_line_definition_owner_code
128695       ,p_line_definition_code       => l_line_definition_code
128696       ,p_accounting_line_code       => l_component_code
128697       ,p_accounting_line_type_code  => l_component_type_code
128698       ,p_accounting_line_appl_id    => l_component_appl_id
128699       ,p_amb_context_code           => l_amb_context_code
128700       ,p_entity_code                => l_entity_code
128701       ,p_event_class_code           => l_event_class_code);
128702    --
128703    -- set accounting class
128704    --
128705    xla_ae_lines_pkg.SetAcctClass(
128706            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
128707          , p_ae_header_id           => l_ae_header_id
128708          );
128709 
128710    --
128711    -- set rounding class
128712    --
128713    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
128714                       'PURCHASE_PRICE_VARIANCE';
128715 
128716    --
128717    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
128718    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
128719    --
128720    -- bulk performance
128721    --
128722    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
128723 
128724    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
128725       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
128726 
128727    -- 4955764
128728    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
128729       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
128730 
128731    -- 4458381 Public Sector Enh
128732    
128733    --
128734    -- set accounting attributes for the line type
128735    --
128736    l_entered_amt_idx := 3;
128737    l_accted_amt_idx  := 8;
128738    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
128739    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
128740    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
128741    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
128742    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
128743    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
128744    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
128745    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
128746    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
128747    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
128748    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
128749    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
128750    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
128751    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
128752    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
128753    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
128754    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
128755 
128756    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
128757    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
128758 
128759    ---------------------------------------------------------------------------------------------------------------
128760    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
128761    ---------------------------------------------------------------------------------------------------------------
128762    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
128763 
128764    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
128765    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
128766 
128767    IF xla_accounting_cache_pkg.GetValueChar
128768          (p_source_code         => 'LEDGER_CATEGORY_CODE'
128769          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
128770    AND l_bflow_method_code = 'PRIOR_ENTRY'
128771 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
128772    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
128773          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
128774        )
128775    THEN
128776          xla_ae_lines_pkg.BflowUpgEntry
128777            (p_business_method_code    => l_bflow_method_code
128778            ,p_business_class_code     => l_bflow_class_code
128779            ,p_balance_type            => l_balance_type_code);
128780    ELSE
128781       NULL;
128782 -- No business flow processing for business flow method of NONE.
128783    END IF;
128784 
128785    --
128786    -- call analytical criteria
128787    --
128788    
128789    --
128790    -- call description
128791    --
128792    -- No description or it is inherited.
128793    --
128794    -- call ADRs
128795    -- Bug 4922099
128796    --
128797    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
128798         (NVL(l_actual_upg_option, 'N') = 'O') OR
128799         (NVL(l_enc_upg_option, 'N') = 'O')
128800       )
128801    THEN
128802    NULL;
128803    --
128804    --
128805    
128806   l_ccid := AcctDerRule_4(
128807            p_application_id           => p_application_id
128808          , p_ae_header_id             => l_ae_header_id 
128809 , p_source_4 => p_source_4
128810          , x_transaction_coa_id       => l_adr_transaction_coa_id
128811          , x_accounting_coa_id        => l_adr_accounting_coa_id
128812          , x_value_type_code          => l_adr_value_type_code
128813          , p_side                     => 'NA'
128814    );
128815 
128816    xla_ae_lines_pkg.set_ccid(
128817     p_code_combination_id          => l_ccid
128818   , p_value_type_code              => l_adr_value_type_code
128819   , p_transaction_coa_id           => l_adr_transaction_coa_id
128820   , p_accounting_coa_id            => l_adr_accounting_coa_id
128821   , p_adr_code                     => 'CST_DEFAULT'
128822   , p_adr_type_code                => 'S'
128823   , p_component_type               => l_component_type
128824   , p_component_code               => l_component_code
128825   , p_component_type_code          => l_component_type_code
128826   , p_component_appl_id            => l_component_appl_id
128827   , p_amb_context_code             => l_amb_context_code
128828   , p_side                         => 'NA'
128829   );
128830 
128831 
128832    --
128833    --
128834    END IF;
128835    --
128836    -- Bug 4922099
128837    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
128838           (NVL(l_enc_upg_option, 'N') = 'O')
128839         ) AND
128840         (l_bflow_method_code = 'PRIOR_ENTRY')
128841       )
128842    THEN
128843       IF
128844       --
128845       1 = 2
128846       --
128847       THEN
128848       xla_accounting_err_pkg.build_message
128849                                     (p_appli_s_name            => 'XLA'
128850                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
128851                                     ,p_token_1                 => 'LINE_NUMBER'
128852                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
128853                                     ,p_token_2                 => 'LINE_TYPE_NAME'
128854                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
128855                                                                              l_component_type
128856                                                                             ,l_component_code
128857                                                                             ,l_component_type_code
128858                                                                             ,l_component_appl_id
128859                                                                             ,l_amb_context_code
128860                                                                             ,l_entity_code
128861                                                                             ,l_event_class_code
128862                                                                            )
128863                                     ,p_token_3                 => 'OWNER'
128864                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
128865                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
128866                                                                           ,p_lookup_code    => l_component_type_code
128867                                                                          )
128868                                     ,p_token_4                 => 'PRODUCT_NAME'
128869                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
128870                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
128871                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
128872                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
128873                                     ,p_ae_header_id            =>  NULL
128874                                        );
128875 
128876         IF (C_LEVEL_ERROR>= g_log_level) THEN
128877                  trace
128878                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
128879                       ,p_level    => C_LEVEL_ERROR
128880                       ,p_module   => l_log_module);
128881         END IF;
128882       END IF;
128883    END IF;
128884    --
128885    --
128886    ------------------------------------------------------------------------------------------------
128887    -- 4219869 Business Flow
128888    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
128889    -- Prior Entry.  Currently, the following code is always generated.
128890    ------------------------------------------------------------------------------------------------
128891    XLA_AE_LINES_PKG.ValidateCurrentLine;
128892 
128893    ------------------------------------------------------------------------------------
128894    -- 4219869 Business Flow
128895    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
128896    ------------------------------------------------------------------------------------
128897    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
128898 
128899    ----------------------------------------------------------------------------------
128900    -- 4219869 Business Flow
128901    -- Update journal entry status -- Need to generate this within IF <condition>
128902    ----------------------------------------------------------------------------------
128903    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
128904          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
128905          ,p_balance_type_code => l_balance_type_code
128906          );
128907 
128908    -------------------------------------------------------------------------------------------
128909    -- 4262811 - Generate the Accrual Reversal lines
128910    -------------------------------------------------------------------------------------------
128911    BEGIN
128912       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
128913                               (g_array_event(p_event_id).array_value_num('header_index'));
128914       IF l_acc_rev_flag IS NULL THEN
128915          l_acc_rev_flag := 'N';
128916       END IF;
128917    EXCEPTION
128918       WHEN OTHERS THEN
128919          l_acc_rev_flag := 'N';
128920    END;
128921    --
128922    IF (l_acc_rev_flag = 'Y') THEN
128923 
128924        -- 4645092  ------------------------------------------------------------------------------
128925        -- To allow MPA report to determine if it should generate report process
128926        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
128927        ------------------------------------------------------------------------------------------
128928 
128929        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
128930        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
128931    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
128932    -- call ADRs
128933    -- Bug 4922099
128934    --
128935    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
128936         (NVL(l_actual_upg_option, 'N') = 'O') OR
128937         (NVL(l_enc_upg_option, 'N') = 'O')
128938       )
128939    THEN
128940    NULL;
128941    --
128942    --
128943    
128944   l_ccid := AcctDerRule_4(
128945            p_application_id           => p_application_id
128946          , p_ae_header_id             => l_ae_header_id 
128947 , p_source_4 => p_source_4
128948          , x_transaction_coa_id       => l_adr_transaction_coa_id
128949          , x_accounting_coa_id        => l_adr_accounting_coa_id
128950          , x_value_type_code          => l_adr_value_type_code
128951          , p_side                     => 'NA'
128952    );
128953 
128954    xla_ae_lines_pkg.set_ccid(
128955     p_code_combination_id          => l_ccid
128956   , p_value_type_code              => l_adr_value_type_code
128957   , p_transaction_coa_id           => l_adr_transaction_coa_id
128958   , p_accounting_coa_id            => l_adr_accounting_coa_id
128959   , p_adr_code                     => 'CST_DEFAULT'
128960   , p_adr_type_code                => 'S'
128961   , p_component_type               => l_component_type
128962   , p_component_code               => l_component_code
128963   , p_component_type_code          => l_component_type_code
128964   , p_component_appl_id            => l_component_appl_id
128965   , p_amb_context_code             => l_amb_context_code
128966   , p_side                         => 'NA'
128967   );
128968 
128969 
128970    --
128971    --
128972    END IF;
128973 
128974        --
128975        -- Update the line information that should be overwritten
128976        --
128977        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
128978                                          p_header_num   => 1);
128979        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
128980 
128981        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
128982 
128983        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
128984           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
128985        END IF;
128986 
128987       --
128988       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
128989       --
128990       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
128991           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
128992       ELSE
128993           ---------------------------------------------------------------------------------------------------
128994           -- 4262811a Switch Sign
128995           ---------------------------------------------------------------------------------------------------
128996           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
128997           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
128998                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
128999           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
129000                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
129001           -- 5132302
129002           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
129003                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
129004 
129005       END IF;
129006 
129007       -- 4955764
129008       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
129009       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
129010 
129011 
129012       XLA_AE_LINES_PKG.ValidateCurrentLine;
129013       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
129014 
129015       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
129016                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
129017                ,p_balance_type_code => l_balance_type_code);
129018 
129019    END IF;
129020 
129021    -----------------------------------------------------------------------------------------
129022    -- 4262811 Multiperiod Accounting
129023    -----------------------------------------------------------------------------------------
129024      -- No MPA option is assigned.
129025 
129026 
129027 END IF;
129028 END IF;
129029 --
129030 
129031 --
129032 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
129033    trace
129034       (p_msg      => 'END of AcctLineType_233'
129035       ,p_level    => C_LEVEL_PROCEDURE
129036       ,p_module   => l_log_module);
129037 END IF;
129038 --
129039 EXCEPTION
129040   WHEN xla_exceptions_pkg.application_exception THEN
129041       RAISE;
129042   WHEN OTHERS THEN
129043        xla_exceptions_pkg.raise_message
129044            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_233');
129045 END AcctLineType_233;
129046 --
129047 
129048 ---------------------------------------
129049 --
129050 -- PRIVATE FUNCTION
129051 --         AcctLineType_234
129052 --
129053 ---------------------------------------
129054 PROCEDURE AcctLineType_234 (
129055   p_application_id        IN NUMBER
129056  ,p_event_id              IN NUMBER
129057  ,p_calculate_acctd_flag  IN VARCHAR2
129058  ,p_calculate_g_l_flag    IN VARCHAR2
129059  ,p_actual_flag           IN OUT VARCHAR2
129060  ,p_balance_type_code     OUT VARCHAR2
129061  ,p_gain_or_loss_ref      OUT VARCHAR2
129062  
129063 --Cost Management Default Account
129064  , p_source_4            IN NUMBER
129065 --DISTRIBUTION_IDENTIFIER
129066  , p_source_11            IN NUMBER
129067 --Distribution Type
129068  , p_source_12            IN VARCHAR2
129069  , p_source_12_meaning    IN VARCHAR2
129070 --Entered Currency Code
129071  , p_source_15            IN VARCHAR2
129072 --Entered Amount
129073  , p_source_18            IN NUMBER
129074 --Currency Conversion Date
129075  , p_source_19            IN DATE
129076 --Currency Conversion Rate
129077  , p_source_20            IN NUMBER
129078 --Accounted Amount
129079  , p_source_22            IN NUMBER
129080 --Accounting Line Type
129081  , p_source_24            IN NUMBER
129082 )
129083 IS
129084 
129085 l_component_type              VARCHAR2(80);
129086 l_component_code              VARCHAR2(30);
129087 l_component_type_code         VARCHAR2(1);
129088 l_component_appl_id           INTEGER;
129089 l_amb_context_code            VARCHAR2(30);
129090 l_entity_code                 VARCHAR2(30);
129091 l_event_class_code            VARCHAR2(30);
129092 l_ae_header_id                NUMBER;
129093 l_event_type_code             VARCHAR2(30);
129094 l_line_definition_code        VARCHAR2(30);
129095 l_line_definition_owner_code  VARCHAR2(1);
129096 --
129097 -- adr variables
129098 l_segment                     VARCHAR2(30);
129099 l_ccid                        NUMBER;
129100 l_adr_transaction_coa_id      NUMBER;
129101 l_adr_accounting_coa_id       NUMBER;
129102 l_adr_flexfield_segment_code  VARCHAR2(30);
129103 l_adr_flex_value_set_id       NUMBER;
129104 l_adr_value_type_code         VARCHAR2(30);
129105 l_adr_value_combination_id    NUMBER;
129106 l_adr_value_segment_code      VARCHAR2(30);
129107 
129108 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
129109 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
129110 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
129111 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
129112 
129113 -- 4262811 Variables ------------------------------------------------------------------------------------------
129114 l_entered_amt_idx             NUMBER;
129115 l_accted_amt_idx              NUMBER;
129116 l_acc_rev_flag                VARCHAR2(1);
129117 l_accrual_line_num            NUMBER;
129118 l_tmp_amt                     NUMBER;
129119 l_acc_rev_natural_side_code   VARCHAR2(1);
129120 
129121 l_num_entries                 NUMBER;
129122 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
129123 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
129124 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
129125 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
129126 l_recog_line_1                NUMBER;
129127 l_recog_line_2                NUMBER;
129128 
129129 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
129130 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
129131 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
129132 
129133 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
129134 
129135 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
129136 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
129137 
129138 ---------------------------------------------------------------------------------------------------------------
129139 
129140 
129141 --
129142 -- bulk performance
129143 --
129144 l_balance_type_code           VARCHAR2(1);
129145 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
129146 l_log_module                  VARCHAR2(240);
129147 
129148 --
129149 -- Upgrade strategy
129150 --
129151 l_actual_upg_option           VARCHAR2(1);
129152 l_enc_upg_option           VARCHAR2(1);
129153 
129154 --
129155 BEGIN
129156 --
129157 IF g_log_enabled THEN
129158       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_234';
129159 END IF;
129160 --
129161 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
129162 
129163       trace
129164          (p_msg      => 'BEGIN of AcctLineType_234'
129165          ,p_level    => C_LEVEL_PROCEDURE
129166          ,p_module   => l_log_module);
129167 
129168 END IF;
129169 --
129170 l_component_type             := 'AMB_JLT';
129171 l_component_code             := 'RECEIVING_INSPECTION';
129172 l_component_type_code        := 'S';
129173 l_component_appl_id          :=  707;
129174 l_amb_context_code           := 'DEFAULT';
129175 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
129176 l_event_class_code           := 'OSP';
129177 l_event_type_code            := 'OSP_ALL';
129178 l_line_definition_owner_code := 'S';
129179 l_line_definition_code       := 'OUTSIDE_PROCESSING';
129180 --
129181 l_balance_type_code          := 'A';
129182 l_segment                     := NULL;
129183 l_ccid                        := NULL;
129184 l_adr_transaction_coa_id      := NULL;
129185 l_adr_accounting_coa_id       := NULL;
129186 l_adr_flexfield_segment_code  := NULL;
129187 l_adr_flex_value_set_id       := NULL;
129188 l_adr_value_type_code         := NULL;
129189 l_adr_value_combination_id    := NULL;
129190 l_adr_value_segment_code      := NULL;
129191 
129192 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
129193 l_bflow_class_code           := '';    -- 4219869 Business Flow
129194 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
129195 l_budgetary_control_flag     := 'N';
129196 
129197 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
129198 l_bflow_applied_to_amt       := NULL; -- 5132302
129199 l_entered_amt_idx            := NULL;          -- 4262811
129200 l_accted_amt_idx             := NULL;          -- 4262811
129201 l_acc_rev_flag               := NULL;          -- 4262811
129202 l_accrual_line_num           := NULL;          -- 4262811
129203 l_tmp_amt                    := NULL;          -- 4262811
129204 --
129205  
129206 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
129207     l_balance_type_code <> 'B' THEN
129208 IF NVL(p_source_24,9E125) =  5
129209  THEN 
129210 
129211    --
129212    XLA_AE_LINES_PKG.SetNewLine;
129213 
129214    p_balance_type_code          := l_balance_type_code;
129215    -- set the flag so later we will know whether the gain loss line needs to be created
129216    
129217    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
129218      p_actual_flag :='A';
129219    END IF;
129220 
129221    --
129222    -- bulk performance
129223    --
129224    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
129225                                       p_header_num   => 0); -- 4262811
129226    --
129227    -- set accounting line options
129228    --
129229    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
129230            p_natural_side_code          => 'D'
129231          , p_gain_or_loss_flag          => 'N'
129232          , p_gl_transfer_mode_code      => 'S'
129233          , p_acct_entry_type_code       => 'A'
129234          , p_switch_side_flag           => 'Y'
129235          , p_merge_duplicate_code       => 'N'
129236          );
129237    --
129238    l_acc_rev_natural_side_code := 'C';  -- 4262811
129239    -- 
129240    --
129241    -- set accounting line type info
129242    --
129243    xla_ae_lines_pkg.SetAcctLineType
129244       (p_component_type             => l_component_type
129245       ,p_event_type_code            => l_event_type_code
129246       ,p_line_definition_owner_code => l_line_definition_owner_code
129247       ,p_line_definition_code       => l_line_definition_code
129248       ,p_accounting_line_code       => l_component_code
129249       ,p_accounting_line_type_code  => l_component_type_code
129250       ,p_accounting_line_appl_id    => l_component_appl_id
129251       ,p_amb_context_code           => l_amb_context_code
129252       ,p_entity_code                => l_entity_code
129253       ,p_event_class_code           => l_event_class_code);
129254    --
129255    -- set accounting class
129256    --
129257    xla_ae_lines_pkg.SetAcctClass(
129258            p_accounting_class_code  => 'RECEIVING_INSPECTION'
129259          , p_ae_header_id           => l_ae_header_id
129260          );
129261 
129262    --
129263    -- set rounding class
129264    --
129265    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
129266                       'RECEIVING_INSPECTION';
129267 
129268    --
129269    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
129270    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
129271    --
129272    -- bulk performance
129273    --
129274    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
129275 
129276    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
129277       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
129278 
129279    -- 4955764
129280    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
129281       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
129282 
129283    -- 4458381 Public Sector Enh
129284    
129285    --
129286    -- set accounting attributes for the line type
129287    --
129288    l_entered_amt_idx := 3;
129289    l_accted_amt_idx  := 8;
129290    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
129291    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
129292    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
129293    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
129294    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
129295    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
129296    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
129297    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
129298    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
129299    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
129300    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
129301    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
129302    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
129303    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
129304    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_20);
129305    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
129306    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
129307 
129308    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
129309    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
129310 
129311    ---------------------------------------------------------------------------------------------------------------
129312    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
129313    ---------------------------------------------------------------------------------------------------------------
129314    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
129315 
129316    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
129317    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
129318 
129319    IF xla_accounting_cache_pkg.GetValueChar
129320          (p_source_code         => 'LEDGER_CATEGORY_CODE'
129321          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
129322    AND l_bflow_method_code = 'PRIOR_ENTRY'
129323 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
129324    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
129325          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
129326        )
129327    THEN
129328          xla_ae_lines_pkg.BflowUpgEntry
129329            (p_business_method_code    => l_bflow_method_code
129330            ,p_business_class_code     => l_bflow_class_code
129331            ,p_balance_type            => l_balance_type_code);
129332    ELSE
129333       NULL;
129334 -- No business flow processing for business flow method of NONE.
129335    END IF;
129336 
129337    --
129338    -- call analytical criteria
129339    --
129340    
129341    --
129342    -- call description
129343    --
129344    -- No description or it is inherited.
129345    --
129346    -- call ADRs
129347    -- Bug 4922099
129348    --
129349    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
129350         (NVL(l_actual_upg_option, 'N') = 'O') OR
129351         (NVL(l_enc_upg_option, 'N') = 'O')
129352       )
129353    THEN
129354    NULL;
129355    --
129356    --
129357    
129358   l_ccid := AcctDerRule_4(
129359            p_application_id           => p_application_id
129360          , p_ae_header_id             => l_ae_header_id 
129361 , p_source_4 => p_source_4
129362          , x_transaction_coa_id       => l_adr_transaction_coa_id
129363          , x_accounting_coa_id        => l_adr_accounting_coa_id
129364          , x_value_type_code          => l_adr_value_type_code
129365          , p_side                     => 'NA'
129366    );
129367 
129368    xla_ae_lines_pkg.set_ccid(
129369     p_code_combination_id          => l_ccid
129370   , p_value_type_code              => l_adr_value_type_code
129371   , p_transaction_coa_id           => l_adr_transaction_coa_id
129372   , p_accounting_coa_id            => l_adr_accounting_coa_id
129373   , p_adr_code                     => 'CST_DEFAULT'
129374   , p_adr_type_code                => 'S'
129375   , p_component_type               => l_component_type
129376   , p_component_code               => l_component_code
129377   , p_component_type_code          => l_component_type_code
129378   , p_component_appl_id            => l_component_appl_id
129379   , p_amb_context_code             => l_amb_context_code
129380   , p_side                         => 'NA'
129381   );
129382 
129383 
129384    --
129385    --
129386    END IF;
129387    --
129388    -- Bug 4922099
129389    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
129390           (NVL(l_enc_upg_option, 'N') = 'O')
129391         ) AND
129392         (l_bflow_method_code = 'PRIOR_ENTRY')
129393       )
129394    THEN
129395       IF
129396       --
129397       1 = 2
129398       --
129399       THEN
129400       xla_accounting_err_pkg.build_message
129401                                     (p_appli_s_name            => 'XLA'
129402                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
129403                                     ,p_token_1                 => 'LINE_NUMBER'
129404                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
129405                                     ,p_token_2                 => 'LINE_TYPE_NAME'
129406                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
129407                                                                              l_component_type
129408                                                                             ,l_component_code
129409                                                                             ,l_component_type_code
129410                                                                             ,l_component_appl_id
129411                                                                             ,l_amb_context_code
129412                                                                             ,l_entity_code
129413                                                                             ,l_event_class_code
129414                                                                            )
129415                                     ,p_token_3                 => 'OWNER'
129416                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
129417                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
129418                                                                           ,p_lookup_code    => l_component_type_code
129419                                                                          )
129420                                     ,p_token_4                 => 'PRODUCT_NAME'
129421                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
129422                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
129423                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
129424                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
129425                                     ,p_ae_header_id            =>  NULL
129426                                        );
129427 
129428         IF (C_LEVEL_ERROR>= g_log_level) THEN
129429                  trace
129430                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
129431                       ,p_level    => C_LEVEL_ERROR
129432                       ,p_module   => l_log_module);
129433         END IF;
129434       END IF;
129435    END IF;
129436    --
129437    --
129438    ------------------------------------------------------------------------------------------------
129439    -- 4219869 Business Flow
129440    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
129441    -- Prior Entry.  Currently, the following code is always generated.
129442    ------------------------------------------------------------------------------------------------
129443    XLA_AE_LINES_PKG.ValidateCurrentLine;
129444 
129445    ------------------------------------------------------------------------------------
129446    -- 4219869 Business Flow
129447    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
129448    ------------------------------------------------------------------------------------
129449    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
129450 
129451    ----------------------------------------------------------------------------------
129452    -- 4219869 Business Flow
129453    -- Update journal entry status -- Need to generate this within IF <condition>
129454    ----------------------------------------------------------------------------------
129455    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
129456          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
129457          ,p_balance_type_code => l_balance_type_code
129458          );
129459 
129460    -------------------------------------------------------------------------------------------
129461    -- 4262811 - Generate the Accrual Reversal lines
129462    -------------------------------------------------------------------------------------------
129463    BEGIN
129464       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
129465                               (g_array_event(p_event_id).array_value_num('header_index'));
129466       IF l_acc_rev_flag IS NULL THEN
129467          l_acc_rev_flag := 'N';
129468       END IF;
129469    EXCEPTION
129470       WHEN OTHERS THEN
129471          l_acc_rev_flag := 'N';
129472    END;
129473    --
129474    IF (l_acc_rev_flag = 'Y') THEN
129475 
129476        -- 4645092  ------------------------------------------------------------------------------
129477        -- To allow MPA report to determine if it should generate report process
129478        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
129479        ------------------------------------------------------------------------------------------
129480 
129481        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
129482        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
129483    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
129484    -- call ADRs
129485    -- Bug 4922099
129486    --
129487    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
129488         (NVL(l_actual_upg_option, 'N') = 'O') OR
129489         (NVL(l_enc_upg_option, 'N') = 'O')
129490       )
129491    THEN
129492    NULL;
129493    --
129494    --
129495    
129496   l_ccid := AcctDerRule_4(
129497            p_application_id           => p_application_id
129498          , p_ae_header_id             => l_ae_header_id 
129499 , p_source_4 => p_source_4
129500          , x_transaction_coa_id       => l_adr_transaction_coa_id
129501          , x_accounting_coa_id        => l_adr_accounting_coa_id
129502          , x_value_type_code          => l_adr_value_type_code
129503          , p_side                     => 'NA'
129504    );
129505 
129506    xla_ae_lines_pkg.set_ccid(
129507     p_code_combination_id          => l_ccid
129508   , p_value_type_code              => l_adr_value_type_code
129509   , p_transaction_coa_id           => l_adr_transaction_coa_id
129510   , p_accounting_coa_id            => l_adr_accounting_coa_id
129511   , p_adr_code                     => 'CST_DEFAULT'
129512   , p_adr_type_code                => 'S'
129513   , p_component_type               => l_component_type
129514   , p_component_code               => l_component_code
129515   , p_component_type_code          => l_component_type_code
129516   , p_component_appl_id            => l_component_appl_id
129517   , p_amb_context_code             => l_amb_context_code
129518   , p_side                         => 'NA'
129519   );
129520 
129521 
129522    --
129523    --
129524    END IF;
129525 
129526        --
129527        -- Update the line information that should be overwritten
129528        --
129529        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
129530                                          p_header_num   => 1);
129531        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
129532 
129533        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
129534 
129535        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
129536           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
129537        END IF;
129538 
129539       --
129540       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
129541       --
129542       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
129543           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
129544       ELSE
129545           ---------------------------------------------------------------------------------------------------
129546           -- 4262811a Switch Sign
129547           ---------------------------------------------------------------------------------------------------
129548           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
129549           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
129550                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
129551           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
129552                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
129553           -- 5132302
129554           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
129555                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
129556 
129557       END IF;
129558 
129559       -- 4955764
129560       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
129561       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
129562 
129563 
129564       XLA_AE_LINES_PKG.ValidateCurrentLine;
129565       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
129566 
129567       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
129568                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
129569                ,p_balance_type_code => l_balance_type_code);
129570 
129571    END IF;
129572 
129573    -----------------------------------------------------------------------------------------
129574    -- 4262811 Multiperiod Accounting
129575    -----------------------------------------------------------------------------------------
129576      -- No MPA option is assigned.
129577 
129578 
129579 END IF;
129580 END IF;
129581 --
129582 
129583 --
129584 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
129585    trace
129586       (p_msg      => 'END of AcctLineType_234'
129587       ,p_level    => C_LEVEL_PROCEDURE
129588       ,p_module   => l_log_module);
129589 END IF;
129590 --
129591 EXCEPTION
129592   WHEN xla_exceptions_pkg.application_exception THEN
129593       RAISE;
129594   WHEN OTHERS THEN
129595        xla_exceptions_pkg.raise_message
129596            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_234');
129597 END AcctLineType_234;
129598 --
129599 
129600 ---------------------------------------
129601 --
129602 -- PRIVATE FUNCTION
129603 --         AcctLineType_235
129604 --
129605 ---------------------------------------
129606 PROCEDURE AcctLineType_235 (
129607   p_application_id        IN NUMBER
129608  ,p_event_id              IN NUMBER
129609  ,p_calculate_acctd_flag  IN VARCHAR2
129610  ,p_calculate_g_l_flag    IN VARCHAR2
129611  ,p_actual_flag           IN OUT VARCHAR2
129612  ,p_balance_type_code     OUT VARCHAR2
129613  ,p_gain_or_loss_ref      OUT VARCHAR2
129614  
129615 --Cost Management Default Account
129616  , p_source_4            IN NUMBER
129617 --Applied to Application ID
129618  , p_source_6            IN NUMBER
129619 --Applied to Distribution Link Type
129620  , p_source_7            IN VARCHAR2
129621 --Applied to Entity Code
129622  , p_source_8            IN VARCHAR2
129623 --Applied To Purchase Document Identifier
129624  , p_source_10            IN NUMBER
129625 --DISTRIBUTION_IDENTIFIER
129626  , p_source_11            IN NUMBER
129627 --Distribution Type
129628  , p_source_12            IN VARCHAR2
129629  , p_source_12_meaning    IN VARCHAR2
129630 --PO Budget Account
129631  , p_source_13            IN NUMBER
129632 --Encumbrance Reversal Amount Entered
129633  , p_source_14            IN NUMBER
129634 --Entered Currency Code
129635  , p_source_15            IN VARCHAR2
129636 --Transaction Encumbrance Reversal Amount
129637  , p_source_16            IN NUMBER
129638 --Entered Amount
129639  , p_source_18            IN NUMBER
129640 --Currency Conversion Date
129641  , p_source_19            IN DATE
129642 --Currency Conversion Rate
129643  , p_source_20            IN NUMBER
129644 --Currency Conversion Type
129645  , p_source_21            IN VARCHAR2
129646 --Accounted Amount
129647  , p_source_22            IN NUMBER
129648 --Purchasing Encumbrance Type Identifier
129649  , p_source_23            IN NUMBER
129650 --Accounting Line Type
129651  , p_source_24            IN NUMBER
129652 --Costing Encumbrance Upgrade Option
129653  , p_source_27            IN VARCHAR2
129654 --TXN_PO_DISTRIBUTION_ID
129655  , p_source_28            IN NUMBER
129656 )
129657 IS
129658 
129659 l_component_type              VARCHAR2(80);
129660 l_component_code              VARCHAR2(30);
129661 l_component_type_code         VARCHAR2(1);
129662 l_component_appl_id           INTEGER;
129663 l_amb_context_code            VARCHAR2(30);
129664 l_entity_code                 VARCHAR2(30);
129665 l_event_class_code            VARCHAR2(30);
129666 l_ae_header_id                NUMBER;
129667 l_event_type_code             VARCHAR2(30);
129668 l_line_definition_code        VARCHAR2(30);
129669 l_line_definition_owner_code  VARCHAR2(1);
129670 --
129671 -- adr variables
129672 l_segment                     VARCHAR2(30);
129673 l_ccid                        NUMBER;
129674 l_adr_transaction_coa_id      NUMBER;
129675 l_adr_accounting_coa_id       NUMBER;
129676 l_adr_flexfield_segment_code  VARCHAR2(30);
129677 l_adr_flex_value_set_id       NUMBER;
129678 l_adr_value_type_code         VARCHAR2(30);
129679 l_adr_value_combination_id    NUMBER;
129680 l_adr_value_segment_code      VARCHAR2(30);
129681 
129682 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
129683 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
129684 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
129685 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
129686 
129687 -- 4262811 Variables ------------------------------------------------------------------------------------------
129688 l_entered_amt_idx             NUMBER;
129689 l_accted_amt_idx              NUMBER;
129690 l_acc_rev_flag                VARCHAR2(1);
129691 l_accrual_line_num            NUMBER;
129692 l_tmp_amt                     NUMBER;
129693 l_acc_rev_natural_side_code   VARCHAR2(1);
129694 
129695 l_num_entries                 NUMBER;
129696 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
129697 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
129698 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
129699 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
129700 l_recog_line_1                NUMBER;
129701 l_recog_line_2                NUMBER;
129702 
129703 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
129704 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
129705 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
129706 
129707 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
129708 
129709 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
129710 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
129711 
129712 ---------------------------------------------------------------------------------------------------------------
129713 
129714 
129715 --
129716 -- bulk performance
129717 --
129718 l_balance_type_code           VARCHAR2(1);
129719 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
129720 l_log_module                  VARCHAR2(240);
129721 
129722 --
129723 -- Upgrade strategy
129724 --
129725 l_actual_upg_option           VARCHAR2(1);
129726 l_enc_upg_option           VARCHAR2(1);
129727 
129728 --
129729 BEGIN
129730 --
129731 IF g_log_enabled THEN
129732       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_235';
129733 END IF;
129734 --
129735 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
129736 
129737       trace
129738          (p_msg      => 'BEGIN of AcctLineType_235'
129739          ,p_level    => C_LEVEL_PROCEDURE
129740          ,p_module   => l_log_module);
129741 
129742 END IF;
129743 --
129744 l_component_type             := 'AMB_JLT';
129745 l_component_code             := 'RECEIVING_INSPECTION';
129746 l_component_type_code        := 'S';
129747 l_component_appl_id          :=  707;
129748 l_amb_context_code           := 'DEFAULT';
129749 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
129750 l_event_class_code           := 'PURCHASE_ORDER';
129751 l_event_type_code            := 'PURCHASE_ORDER_ALL';
129752 l_line_definition_owner_code := 'S';
129753 l_line_definition_code       := 'PURCHASE_ORDER';
129754 --
129755 l_balance_type_code          := 'A';
129756 l_segment                     := NULL;
129757 l_ccid                        := NULL;
129758 l_adr_transaction_coa_id      := NULL;
129759 l_adr_accounting_coa_id       := NULL;
129760 l_adr_flexfield_segment_code  := NULL;
129761 l_adr_flex_value_set_id       := NULL;
129762 l_adr_value_type_code         := NULL;
129763 l_adr_value_combination_id    := NULL;
129764 l_adr_value_segment_code      := NULL;
129765 
129766 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
129767 l_bflow_class_code           := '';    -- 4219869 Business Flow
129768 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
129769 l_budgetary_control_flag     := 'N';
129770 
129771 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
129772 l_bflow_applied_to_amt       := NULL; -- 5132302
129773 l_entered_amt_idx            := NULL;          -- 4262811
129774 l_accted_amt_idx             := NULL;          -- 4262811
129775 l_acc_rev_flag               := NULL;          -- 4262811
129776 l_accrual_line_num           := NULL;          -- 4262811
129777 l_tmp_amt                    := NULL;          -- 4262811
129778 --
129779  
129780 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
129781     l_balance_type_code <> 'B' THEN
129782 IF NVL(p_source_24,9E125) =  5
129783  THEN 
129784 
129785    --
129786    XLA_AE_LINES_PKG.SetNewLine;
129787 
129788    p_balance_type_code          := l_balance_type_code;
129789    -- set the flag so later we will know whether the gain loss line needs to be created
129790    
129791    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
129792      p_actual_flag :='A';
129793    END IF;
129794 
129795    --
129796    -- bulk performance
129797    --
129798    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
129799                                       p_header_num   => 0); -- 4262811
129800    --
129801    -- set accounting line options
129802    --
129803    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
129804            p_natural_side_code          => 'D'
129805          , p_gain_or_loss_flag          => 'N'
129806          , p_gl_transfer_mode_code      => 'S'
129807          , p_acct_entry_type_code       => 'A'
129808          , p_switch_side_flag           => 'Y'
129809          , p_merge_duplicate_code       => 'N'
129810          );
129811    --
129812    l_acc_rev_natural_side_code := 'C';  -- 4262811
129813    -- 
129814    --
129815    -- set accounting line type info
129816    --
129817    xla_ae_lines_pkg.SetAcctLineType
129818       (p_component_type             => l_component_type
129819       ,p_event_type_code            => l_event_type_code
129820       ,p_line_definition_owner_code => l_line_definition_owner_code
129821       ,p_line_definition_code       => l_line_definition_code
129822       ,p_accounting_line_code       => l_component_code
129823       ,p_accounting_line_type_code  => l_component_type_code
129824       ,p_accounting_line_appl_id    => l_component_appl_id
129825       ,p_amb_context_code           => l_amb_context_code
129826       ,p_entity_code                => l_entity_code
129827       ,p_event_class_code           => l_event_class_code);
129828    --
129829    -- set accounting class
129830    --
129831    xla_ae_lines_pkg.SetAcctClass(
129832            p_accounting_class_code  => 'RECEIVING_INSPECTION'
129833          , p_ae_header_id           => l_ae_header_id
129834          );
129835 
129836    --
129837    -- set rounding class
129838    --
129839    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
129840                       'RECEIVING_INSPECTION';
129841 
129842    --
129843    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
129844    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
129845    --
129846    -- bulk performance
129847    --
129848    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
129849 
129850    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
129851       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
129852 
129853    -- 4955764
129854    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
129855       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
129856 
129857    -- 4458381 Public Sector Enh
129858    
129859    --
129860    -- set accounting attributes for the line type
129861    --
129862    l_entered_amt_idx := 17;
129863    l_accted_amt_idx  := 22;
129864    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
129865    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
129866    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
129867    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
129868    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
129869    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
129870    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
129871    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
129872    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
129873    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
129874    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_10);
129875    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
129876    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
129877    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
129878    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
129879    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
129880    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_13);
129881    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
129882    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
129883    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
129884    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
129885    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
129886    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
129887    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
129888    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_13);
129889    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
129890    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
129891    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
129892    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
129893    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
129894    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
129895    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
129896    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
129897    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
129898    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
129899    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
129900    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
129901    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
129902    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
129903    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
129904    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
129905    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
129906    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
129907    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
129908    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
129909    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
129910    l_rec_acct_attrs.array_num_value(23)  := p_source_23;
129911    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
129912    l_rec_acct_attrs.array_num_value(24)  := p_source_23;
129913 
129914    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
129915    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
129916 
129917    ---------------------------------------------------------------------------------------------------------------
129918    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
129919    ---------------------------------------------------------------------------------------------------------------
129920    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
129921 
129922    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
129923    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
129924 
129925    IF xla_accounting_cache_pkg.GetValueChar
129926          (p_source_code         => 'LEDGER_CATEGORY_CODE'
129927          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
129928    AND l_bflow_method_code = 'PRIOR_ENTRY'
129929 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
129930    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
129931          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
129932        )
129933    THEN
129934          xla_ae_lines_pkg.BflowUpgEntry
129935            (p_business_method_code    => l_bflow_method_code
129936            ,p_business_class_code     => l_bflow_class_code
129937            ,p_balance_type            => l_balance_type_code);
129938    ELSE
129939       NULL;
129940 -- No business flow processing for business flow method of NONE.
129941    END IF;
129942 
129943    --
129944    -- call analytical criteria
129945    --
129946    
129947    --
129948    -- call description
129949    --
129950    -- No description or it is inherited.
129951    --
129952    -- call ADRs
129953    -- Bug 4922099
129954    --
129955    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
129956         (NVL(l_actual_upg_option, 'N') = 'O') OR
129957         (NVL(l_enc_upg_option, 'N') = 'O')
129958       )
129959    THEN
129960    NULL;
129961    --
129962    --
129963    
129964   l_ccid := AcctDerRule_4(
129965            p_application_id           => p_application_id
129966          , p_ae_header_id             => l_ae_header_id 
129967 , p_source_4 => p_source_4
129968          , x_transaction_coa_id       => l_adr_transaction_coa_id
129969          , x_accounting_coa_id        => l_adr_accounting_coa_id
129970          , x_value_type_code          => l_adr_value_type_code
129971          , p_side                     => 'NA'
129972    );
129973 
129974    xla_ae_lines_pkg.set_ccid(
129975     p_code_combination_id          => l_ccid
129976   , p_value_type_code              => l_adr_value_type_code
129977   , p_transaction_coa_id           => l_adr_transaction_coa_id
129978   , p_accounting_coa_id            => l_adr_accounting_coa_id
129979   , p_adr_code                     => 'CST_DEFAULT'
129980   , p_adr_type_code                => 'S'
129981   , p_component_type               => l_component_type
129982   , p_component_code               => l_component_code
129983   , p_component_type_code          => l_component_type_code
129984   , p_component_appl_id            => l_component_appl_id
129985   , p_amb_context_code             => l_amb_context_code
129986   , p_side                         => 'NA'
129987   );
129988 
129989 
129990    --
129991    --
129992    END IF;
129993    --
129994    -- Bug 4922099
129995    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
129996           (NVL(l_enc_upg_option, 'N') = 'O')
129997         ) AND
129998         (l_bflow_method_code = 'PRIOR_ENTRY')
129999       )
130000    THEN
130001       IF
130002       --
130003       1 = 2
130004       --
130005       THEN
130006       xla_accounting_err_pkg.build_message
130007                                     (p_appli_s_name            => 'XLA'
130008                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
130009                                     ,p_token_1                 => 'LINE_NUMBER'
130010                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
130011                                     ,p_token_2                 => 'LINE_TYPE_NAME'
130012                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
130013                                                                              l_component_type
130014                                                                             ,l_component_code
130015                                                                             ,l_component_type_code
130016                                                                             ,l_component_appl_id
130017                                                                             ,l_amb_context_code
130018                                                                             ,l_entity_code
130019                                                                             ,l_event_class_code
130020                                                                            )
130021                                     ,p_token_3                 => 'OWNER'
130022                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
130023                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
130024                                                                           ,p_lookup_code    => l_component_type_code
130025                                                                          )
130026                                     ,p_token_4                 => 'PRODUCT_NAME'
130027                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
130028                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
130029                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
130030                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
130031                                     ,p_ae_header_id            =>  NULL
130032                                        );
130033 
130034         IF (C_LEVEL_ERROR>= g_log_level) THEN
130035                  trace
130036                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
130037                       ,p_level    => C_LEVEL_ERROR
130038                       ,p_module   => l_log_module);
130039         END IF;
130040       END IF;
130041    END IF;
130042    --
130043    --
130044    ------------------------------------------------------------------------------------------------
130045    -- 4219869 Business Flow
130046    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
130047    -- Prior Entry.  Currently, the following code is always generated.
130048    ------------------------------------------------------------------------------------------------
130049    XLA_AE_LINES_PKG.ValidateCurrentLine;
130050 
130051    ------------------------------------------------------------------------------------
130052    -- 4219869 Business Flow
130053    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
130054    ------------------------------------------------------------------------------------
130055    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
130056 
130057    ----------------------------------------------------------------------------------
130058    -- 4219869 Business Flow
130059    -- Update journal entry status -- Need to generate this within IF <condition>
130060    ----------------------------------------------------------------------------------
130061    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
130062          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
130063          ,p_balance_type_code => l_balance_type_code
130064          );
130065 
130066    -------------------------------------------------------------------------------------------
130067    -- 4262811 - Generate the Accrual Reversal lines
130068    -------------------------------------------------------------------------------------------
130069    BEGIN
130070       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
130071                               (g_array_event(p_event_id).array_value_num('header_index'));
130072       IF l_acc_rev_flag IS NULL THEN
130073          l_acc_rev_flag := 'N';
130074       END IF;
130075    EXCEPTION
130076       WHEN OTHERS THEN
130077          l_acc_rev_flag := 'N';
130078    END;
130079    --
130080    IF (l_acc_rev_flag = 'Y') THEN
130081 
130082        -- 4645092  ------------------------------------------------------------------------------
130083        -- To allow MPA report to determine if it should generate report process
130084        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
130085        ------------------------------------------------------------------------------------------
130086 
130087        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
130088        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
130089    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
130090    -- call ADRs
130091    -- Bug 4922099
130092    --
130093    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
130094         (NVL(l_actual_upg_option, 'N') = 'O') OR
130095         (NVL(l_enc_upg_option, 'N') = 'O')
130096       )
130097    THEN
130098    NULL;
130099    --
130100    --
130101    
130102   l_ccid := AcctDerRule_4(
130103            p_application_id           => p_application_id
130104          , p_ae_header_id             => l_ae_header_id 
130105 , p_source_4 => p_source_4
130106          , x_transaction_coa_id       => l_adr_transaction_coa_id
130107          , x_accounting_coa_id        => l_adr_accounting_coa_id
130108          , x_value_type_code          => l_adr_value_type_code
130109          , p_side                     => 'NA'
130110    );
130111 
130112    xla_ae_lines_pkg.set_ccid(
130113     p_code_combination_id          => l_ccid
130114   , p_value_type_code              => l_adr_value_type_code
130115   , p_transaction_coa_id           => l_adr_transaction_coa_id
130116   , p_accounting_coa_id            => l_adr_accounting_coa_id
130117   , p_adr_code                     => 'CST_DEFAULT'
130118   , p_adr_type_code                => 'S'
130119   , p_component_type               => l_component_type
130120   , p_component_code               => l_component_code
130121   , p_component_type_code          => l_component_type_code
130122   , p_component_appl_id            => l_component_appl_id
130123   , p_amb_context_code             => l_amb_context_code
130124   , p_side                         => 'NA'
130125   );
130126 
130127 
130128    --
130129    --
130130    END IF;
130131 
130132        --
130133        -- Update the line information that should be overwritten
130134        --
130135        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
130136                                          p_header_num   => 1);
130137        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
130138 
130139        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
130140 
130141        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
130142           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
130143        END IF;
130144 
130145       --
130146       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
130147       --
130148       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
130149           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
130150       ELSE
130151           ---------------------------------------------------------------------------------------------------
130152           -- 4262811a Switch Sign
130153           ---------------------------------------------------------------------------------------------------
130154           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
130155           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
130156                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
130157           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
130158                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
130159           -- 5132302
130160           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
130161                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
130162 
130163       END IF;
130164 
130165       -- 4955764
130166       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
130167       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
130168 
130169 
130170       XLA_AE_LINES_PKG.ValidateCurrentLine;
130171       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
130172 
130173       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
130174                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
130175                ,p_balance_type_code => l_balance_type_code);
130176 
130177    END IF;
130178 
130179    -----------------------------------------------------------------------------------------
130180    -- 4262811 Multiperiod Accounting
130181    -----------------------------------------------------------------------------------------
130182      -- No MPA option is assigned.
130183 
130184 
130185 END IF;
130186 END IF;
130187 --
130188 
130189 --
130190 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
130191    trace
130192       (p_msg      => 'END of AcctLineType_235'
130193       ,p_level    => C_LEVEL_PROCEDURE
130194       ,p_module   => l_log_module);
130195 END IF;
130196 --
130197 EXCEPTION
130198   WHEN xla_exceptions_pkg.application_exception THEN
130199       RAISE;
130200   WHEN OTHERS THEN
130201        xla_exceptions_pkg.raise_message
130202            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_235');
130203 END AcctLineType_235;
130204 --
130205 
130206 ---------------------------------------
130207 --
130208 -- PRIVATE FUNCTION
130209 --         AcctLineType_236
130210 --
130211 ---------------------------------------
130212 PROCEDURE AcctLineType_236 (
130213   p_application_id        IN NUMBER
130214  ,p_event_id              IN NUMBER
130215  ,p_calculate_acctd_flag  IN VARCHAR2
130216  ,p_calculate_g_l_flag    IN VARCHAR2
130217  ,p_actual_flag           IN OUT VARCHAR2
130218  ,p_balance_type_code     OUT VARCHAR2
130219  ,p_gain_or_loss_ref      OUT VARCHAR2
130220  
130221 --Cost Management Default Account
130222  , p_source_4            IN NUMBER
130223 --Receiving Accounting Line Type
130224  , p_source_5            IN VARCHAR2
130225 --DISTRIBUTION_IDENTIFIER
130226  , p_source_11            IN NUMBER
130227 --Distribution Type
130228  , p_source_12            IN VARCHAR2
130229  , p_source_12_meaning    IN VARCHAR2
130230 --Entered Amount
130231  , p_source_18            IN NUMBER
130232 --Accounted Amount
130233  , p_source_22            IN NUMBER
130234 --Entered Currency Code
130235  , p_source_32            IN VARCHAR2
130236 --Currency Conversion Date
130237  , p_source_33            IN DATE
130238 --Currency Conversion Rate
130239  , p_source_34            IN NUMBER
130240 )
130241 IS
130242 
130243 l_component_type              VARCHAR2(80);
130244 l_component_code              VARCHAR2(30);
130245 l_component_type_code         VARCHAR2(1);
130246 l_component_appl_id           INTEGER;
130247 l_amb_context_code            VARCHAR2(30);
130248 l_entity_code                 VARCHAR2(30);
130249 l_event_class_code            VARCHAR2(30);
130250 l_ae_header_id                NUMBER;
130251 l_event_type_code             VARCHAR2(30);
130252 l_line_definition_code        VARCHAR2(30);
130253 l_line_definition_owner_code  VARCHAR2(1);
130254 --
130255 -- adr variables
130256 l_segment                     VARCHAR2(30);
130257 l_ccid                        NUMBER;
130258 l_adr_transaction_coa_id      NUMBER;
130259 l_adr_accounting_coa_id       NUMBER;
130260 l_adr_flexfield_segment_code  VARCHAR2(30);
130261 l_adr_flex_value_set_id       NUMBER;
130262 l_adr_value_type_code         VARCHAR2(30);
130263 l_adr_value_combination_id    NUMBER;
130264 l_adr_value_segment_code      VARCHAR2(30);
130265 
130266 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
130267 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
130268 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
130269 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
130270 
130271 -- 4262811 Variables ------------------------------------------------------------------------------------------
130272 l_entered_amt_idx             NUMBER;
130273 l_accted_amt_idx              NUMBER;
130274 l_acc_rev_flag                VARCHAR2(1);
130275 l_accrual_line_num            NUMBER;
130276 l_tmp_amt                     NUMBER;
130277 l_acc_rev_natural_side_code   VARCHAR2(1);
130278 
130279 l_num_entries                 NUMBER;
130280 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
130281 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
130282 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
130283 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
130284 l_recog_line_1                NUMBER;
130285 l_recog_line_2                NUMBER;
130286 
130287 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
130288 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
130289 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
130290 
130291 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
130292 
130293 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
130294 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
130295 
130296 ---------------------------------------------------------------------------------------------------------------
130297 
130298 
130299 --
130300 -- bulk performance
130301 --
130302 l_balance_type_code           VARCHAR2(1);
130303 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
130304 l_log_module                  VARCHAR2(240);
130305 
130306 --
130307 -- Upgrade strategy
130308 --
130309 l_actual_upg_option           VARCHAR2(1);
130310 l_enc_upg_option           VARCHAR2(1);
130311 
130312 --
130313 BEGIN
130314 --
130315 IF g_log_enabled THEN
130316       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_236';
130317 END IF;
130318 --
130319 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
130320 
130321       trace
130322          (p_msg      => 'BEGIN of AcctLineType_236'
130323          ,p_level    => C_LEVEL_PROCEDURE
130324          ,p_module   => l_log_module);
130325 
130326 END IF;
130327 --
130328 l_component_type             := 'AMB_JLT';
130329 l_component_code             := 'RECEIVING_INSPECTION';
130330 l_component_type_code        := 'S';
130331 l_component_appl_id          :=  707;
130332 l_amb_context_code           := 'DEFAULT';
130333 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
130334 l_event_class_code           := 'LDD_COST_ADJ_DEL';
130335 l_event_type_code            := 'LDD_COST_ADJ_DEL_ALL';
130336 l_line_definition_owner_code := 'S';
130337 l_line_definition_code       := 'LDD_COST_ADJ_DEL';
130338 --
130339 l_balance_type_code          := 'A';
130340 l_segment                     := NULL;
130341 l_ccid                        := NULL;
130342 l_adr_transaction_coa_id      := NULL;
130343 l_adr_accounting_coa_id       := NULL;
130344 l_adr_flexfield_segment_code  := NULL;
130345 l_adr_flex_value_set_id       := NULL;
130346 l_adr_value_type_code         := NULL;
130347 l_adr_value_combination_id    := NULL;
130348 l_adr_value_segment_code      := NULL;
130349 
130350 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
130351 l_bflow_class_code           := '';    -- 4219869 Business Flow
130352 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
130353 l_budgetary_control_flag     := 'N';
130354 
130355 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
130356 l_bflow_applied_to_amt       := NULL; -- 5132302
130357 l_entered_amt_idx            := NULL;          -- 4262811
130358 l_accted_amt_idx             := NULL;          -- 4262811
130359 l_acc_rev_flag               := NULL;          -- 4262811
130360 l_accrual_line_num           := NULL;          -- 4262811
130361 l_tmp_amt                    := NULL;          -- 4262811
130362 --
130363  
130364 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
130365     l_balance_type_code <> 'B' THEN
130366 IF NVL(p_source_5,'
130367 ') =  'Receiving Inspection'
130368  THEN 
130369 
130370    --
130371    XLA_AE_LINES_PKG.SetNewLine;
130372 
130373    p_balance_type_code          := l_balance_type_code;
130374    -- set the flag so later we will know whether the gain loss line needs to be created
130375    
130376    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
130377      p_actual_flag :='A';
130378    END IF;
130379 
130380    --
130381    -- bulk performance
130382    --
130383    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
130384                                       p_header_num   => 0); -- 4262811
130385    --
130386    -- set accounting line options
130387    --
130388    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
130389            p_natural_side_code          => 'D'
130390          , p_gain_or_loss_flag          => 'N'
130391          , p_gl_transfer_mode_code      => 'S'
130392          , p_acct_entry_type_code       => 'A'
130393          , p_switch_side_flag           => 'Y'
130394          , p_merge_duplicate_code       => 'N'
130395          );
130396    --
130397    l_acc_rev_natural_side_code := 'C';  -- 4262811
130398    -- 
130399    --
130400    -- set accounting line type info
130401    --
130402    xla_ae_lines_pkg.SetAcctLineType
130403       (p_component_type             => l_component_type
130404       ,p_event_type_code            => l_event_type_code
130405       ,p_line_definition_owner_code => l_line_definition_owner_code
130406       ,p_line_definition_code       => l_line_definition_code
130407       ,p_accounting_line_code       => l_component_code
130408       ,p_accounting_line_type_code  => l_component_type_code
130409       ,p_accounting_line_appl_id    => l_component_appl_id
130410       ,p_amb_context_code           => l_amb_context_code
130411       ,p_entity_code                => l_entity_code
130412       ,p_event_class_code           => l_event_class_code);
130413    --
130414    -- set accounting class
130415    --
130416    xla_ae_lines_pkg.SetAcctClass(
130417            p_accounting_class_code  => 'RECEIVING_INSPECTION'
130418          , p_ae_header_id           => l_ae_header_id
130419          );
130420 
130421    --
130422    -- set rounding class
130423    --
130424    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
130425                       'RECEIVING_INSPECTION';
130426 
130427    --
130428    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
130429    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
130430    --
130431    -- bulk performance
130432    --
130433    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
130434 
130435    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
130436       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
130437 
130438    -- 4955764
130439    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
130440       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
130441 
130442    -- 4458381 Public Sector Enh
130443    
130444    --
130445    -- set accounting attributes for the line type
130446    --
130447    l_entered_amt_idx := 3;
130448    l_accted_amt_idx  := 7;
130449    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
130450    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
130451    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
130452    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
130453    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
130454    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
130455    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
130456    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
130457    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
130458    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
130459    l_rec_acct_attrs.array_date_value(5)  := p_source_33;
130460    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
130461    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
130462    l_rec_acct_attrs.array_acct_attr_code(7) := 'LEDGER_AMOUNT';
130463    l_rec_acct_attrs.array_num_value(7)  := p_source_22;
130464 
130465    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
130466    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
130467 
130468    ---------------------------------------------------------------------------------------------------------------
130469    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
130470    ---------------------------------------------------------------------------------------------------------------
130471    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
130472 
130473    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
130474    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
130475 
130476    IF xla_accounting_cache_pkg.GetValueChar
130477          (p_source_code         => 'LEDGER_CATEGORY_CODE'
130478          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
130479    AND l_bflow_method_code = 'PRIOR_ENTRY'
130480 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
130481    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
130482          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
130483        )
130484    THEN
130485          xla_ae_lines_pkg.BflowUpgEntry
130486            (p_business_method_code    => l_bflow_method_code
130487            ,p_business_class_code     => l_bflow_class_code
130488            ,p_balance_type            => l_balance_type_code);
130489    ELSE
130490       NULL;
130491 -- No business flow processing for business flow method of NONE.
130492    END IF;
130493 
130494    --
130495    -- call analytical criteria
130496    --
130497    
130498    --
130499    -- call description
130500    --
130501    -- No description or it is inherited.
130502    --
130503    -- call ADRs
130504    -- Bug 4922099
130505    --
130506    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
130507         (NVL(l_actual_upg_option, 'N') = 'O') OR
130508         (NVL(l_enc_upg_option, 'N') = 'O')
130509       )
130510    THEN
130511    NULL;
130512    --
130513    --
130514    
130515   l_ccid := AcctDerRule_4(
130516            p_application_id           => p_application_id
130517          , p_ae_header_id             => l_ae_header_id 
130518 , p_source_4 => p_source_4
130519          , x_transaction_coa_id       => l_adr_transaction_coa_id
130520          , x_accounting_coa_id        => l_adr_accounting_coa_id
130521          , x_value_type_code          => l_adr_value_type_code
130522          , p_side                     => 'NA'
130523    );
130524 
130525    xla_ae_lines_pkg.set_ccid(
130526     p_code_combination_id          => l_ccid
130527   , p_value_type_code              => l_adr_value_type_code
130528   , p_transaction_coa_id           => l_adr_transaction_coa_id
130529   , p_accounting_coa_id            => l_adr_accounting_coa_id
130530   , p_adr_code                     => 'CST_DEFAULT'
130531   , p_adr_type_code                => 'S'
130532   , p_component_type               => l_component_type
130533   , p_component_code               => l_component_code
130534   , p_component_type_code          => l_component_type_code
130535   , p_component_appl_id            => l_component_appl_id
130536   , p_amb_context_code             => l_amb_context_code
130537   , p_side                         => 'NA'
130538   );
130539 
130540 
130541    --
130542    --
130543    END IF;
130544    --
130545    -- Bug 4922099
130546    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
130547           (NVL(l_enc_upg_option, 'N') = 'O')
130548         ) AND
130549         (l_bflow_method_code = 'PRIOR_ENTRY')
130550       )
130551    THEN
130552       IF
130553       --
130554       1 = 2
130555       --
130556       THEN
130557       xla_accounting_err_pkg.build_message
130558                                     (p_appli_s_name            => 'XLA'
130559                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
130560                                     ,p_token_1                 => 'LINE_NUMBER'
130561                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
130562                                     ,p_token_2                 => 'LINE_TYPE_NAME'
130563                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
130564                                                                              l_component_type
130565                                                                             ,l_component_code
130566                                                                             ,l_component_type_code
130567                                                                             ,l_component_appl_id
130568                                                                             ,l_amb_context_code
130569                                                                             ,l_entity_code
130570                                                                             ,l_event_class_code
130571                                                                            )
130572                                     ,p_token_3                 => 'OWNER'
130573                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
130574                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
130575                                                                           ,p_lookup_code    => l_component_type_code
130576                                                                          )
130577                                     ,p_token_4                 => 'PRODUCT_NAME'
130578                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
130579                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
130580                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
130581                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
130582                                     ,p_ae_header_id            =>  NULL
130583                                        );
130584 
130585         IF (C_LEVEL_ERROR>= g_log_level) THEN
130586                  trace
130587                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
130588                       ,p_level    => C_LEVEL_ERROR
130589                       ,p_module   => l_log_module);
130590         END IF;
130591       END IF;
130592    END IF;
130593    --
130594    --
130595    ------------------------------------------------------------------------------------------------
130596    -- 4219869 Business Flow
130597    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
130598    -- Prior Entry.  Currently, the following code is always generated.
130599    ------------------------------------------------------------------------------------------------
130600    XLA_AE_LINES_PKG.ValidateCurrentLine;
130601 
130602    ------------------------------------------------------------------------------------
130603    -- 4219869 Business Flow
130604    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
130605    ------------------------------------------------------------------------------------
130606    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
130607 
130608    ----------------------------------------------------------------------------------
130609    -- 4219869 Business Flow
130610    -- Update journal entry status -- Need to generate this within IF <condition>
130611    ----------------------------------------------------------------------------------
130612    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
130613          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
130614          ,p_balance_type_code => l_balance_type_code
130615          );
130616 
130617    -------------------------------------------------------------------------------------------
130618    -- 4262811 - Generate the Accrual Reversal lines
130619    -------------------------------------------------------------------------------------------
130620    BEGIN
130621       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
130622                               (g_array_event(p_event_id).array_value_num('header_index'));
130623       IF l_acc_rev_flag IS NULL THEN
130624          l_acc_rev_flag := 'N';
130625       END IF;
130626    EXCEPTION
130627       WHEN OTHERS THEN
130628          l_acc_rev_flag := 'N';
130629    END;
130630    --
130631    IF (l_acc_rev_flag = 'Y') THEN
130632 
130633        -- 4645092  ------------------------------------------------------------------------------
130634        -- To allow MPA report to determine if it should generate report process
130635        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
130636        ------------------------------------------------------------------------------------------
130637 
130638        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
130639        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
130640    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
130641    -- call ADRs
130642    -- Bug 4922099
130643    --
130644    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
130645         (NVL(l_actual_upg_option, 'N') = 'O') OR
130646         (NVL(l_enc_upg_option, 'N') = 'O')
130647       )
130648    THEN
130649    NULL;
130650    --
130651    --
130652    
130653   l_ccid := AcctDerRule_4(
130654            p_application_id           => p_application_id
130655          , p_ae_header_id             => l_ae_header_id 
130656 , p_source_4 => p_source_4
130657          , x_transaction_coa_id       => l_adr_transaction_coa_id
130658          , x_accounting_coa_id        => l_adr_accounting_coa_id
130659          , x_value_type_code          => l_adr_value_type_code
130660          , p_side                     => 'NA'
130661    );
130662 
130663    xla_ae_lines_pkg.set_ccid(
130664     p_code_combination_id          => l_ccid
130665   , p_value_type_code              => l_adr_value_type_code
130666   , p_transaction_coa_id           => l_adr_transaction_coa_id
130667   , p_accounting_coa_id            => l_adr_accounting_coa_id
130668   , p_adr_code                     => 'CST_DEFAULT'
130669   , p_adr_type_code                => 'S'
130670   , p_component_type               => l_component_type
130671   , p_component_code               => l_component_code
130672   , p_component_type_code          => l_component_type_code
130673   , p_component_appl_id            => l_component_appl_id
130674   , p_amb_context_code             => l_amb_context_code
130675   , p_side                         => 'NA'
130676   );
130677 
130678 
130679    --
130680    --
130681    END IF;
130682 
130683        --
130684        -- Update the line information that should be overwritten
130685        --
130686        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
130687                                          p_header_num   => 1);
130688        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
130689 
130690        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
130691 
130692        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
130693           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
130694        END IF;
130695 
130696       --
130697       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
130698       --
130699       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
130700           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
130701       ELSE
130702           ---------------------------------------------------------------------------------------------------
130703           -- 4262811a Switch Sign
130704           ---------------------------------------------------------------------------------------------------
130705           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
130706           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
130707                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
130708           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
130709                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
130710           -- 5132302
130711           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
130712                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
130713 
130714       END IF;
130715 
130716       -- 4955764
130717       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
130718       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
130719 
130720 
130721       XLA_AE_LINES_PKG.ValidateCurrentLine;
130722       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
130723 
130724       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
130725                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
130726                ,p_balance_type_code => l_balance_type_code);
130727 
130728    END IF;
130729 
130730    -----------------------------------------------------------------------------------------
130731    -- 4262811 Multiperiod Accounting
130732    -----------------------------------------------------------------------------------------
130733      -- No MPA option is assigned.
130734 
130735 
130736 END IF;
130737 END IF;
130738 --
130739 
130740 --
130741 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
130742    trace
130743       (p_msg      => 'END of AcctLineType_236'
130744       ,p_level    => C_LEVEL_PROCEDURE
130745       ,p_module   => l_log_module);
130746 END IF;
130747 --
130748 EXCEPTION
130749   WHEN xla_exceptions_pkg.application_exception THEN
130750       RAISE;
130751   WHEN OTHERS THEN
130752        xla_exceptions_pkg.raise_message
130753            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_236');
130754 END AcctLineType_236;
130755 --
130756 
130757 ---------------------------------------
130758 --
130759 -- PRIVATE FUNCTION
130760 --         AcctLineType_237
130761 --
130762 ---------------------------------------
130763 PROCEDURE AcctLineType_237 (
130764   p_application_id        IN NUMBER
130765  ,p_event_id              IN NUMBER
130766  ,p_calculate_acctd_flag  IN VARCHAR2
130767  ,p_calculate_g_l_flag    IN VARCHAR2
130768  ,p_actual_flag           IN OUT VARCHAR2
130769  ,p_balance_type_code     OUT VARCHAR2
130770  ,p_gain_or_loss_ref      OUT VARCHAR2
130771  
130772 --Cost Management Default Account
130773  , p_source_4            IN NUMBER
130774 --Receiving Accounting Line Type
130775  , p_source_5            IN VARCHAR2
130776 --DISTRIBUTION_IDENTIFIER
130777  , p_source_11            IN NUMBER
130778 --Distribution Type
130779  , p_source_12            IN VARCHAR2
130780  , p_source_12_meaning    IN VARCHAR2
130781 --Entered Amount
130782  , p_source_18            IN NUMBER
130783 --Accounted Amount
130784  , p_source_22            IN NUMBER
130785 --Entered Currency Code
130786  , p_source_32            IN VARCHAR2
130787 --Currency Conversion Date
130788  , p_source_33            IN DATE
130789 --Currency Conversion Rate
130790  , p_source_34            IN NUMBER
130791 --Currency Conversion Type
130792  , p_source_36            IN VARCHAR2
130793 )
130794 IS
130795 
130796 l_component_type              VARCHAR2(80);
130797 l_component_code              VARCHAR2(30);
130798 l_component_type_code         VARCHAR2(1);
130799 l_component_appl_id           INTEGER;
130800 l_amb_context_code            VARCHAR2(30);
130801 l_entity_code                 VARCHAR2(30);
130802 l_event_class_code            VARCHAR2(30);
130803 l_ae_header_id                NUMBER;
130804 l_event_type_code             VARCHAR2(30);
130805 l_line_definition_code        VARCHAR2(30);
130806 l_line_definition_owner_code  VARCHAR2(1);
130807 --
130808 -- adr variables
130809 l_segment                     VARCHAR2(30);
130810 l_ccid                        NUMBER;
130811 l_adr_transaction_coa_id      NUMBER;
130812 l_adr_accounting_coa_id       NUMBER;
130813 l_adr_flexfield_segment_code  VARCHAR2(30);
130814 l_adr_flex_value_set_id       NUMBER;
130815 l_adr_value_type_code         VARCHAR2(30);
130816 l_adr_value_combination_id    NUMBER;
130817 l_adr_value_segment_code      VARCHAR2(30);
130818 
130819 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
130820 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
130821 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
130822 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
130823 
130824 -- 4262811 Variables ------------------------------------------------------------------------------------------
130825 l_entered_amt_idx             NUMBER;
130826 l_accted_amt_idx              NUMBER;
130827 l_acc_rev_flag                VARCHAR2(1);
130828 l_accrual_line_num            NUMBER;
130829 l_tmp_amt                     NUMBER;
130830 l_acc_rev_natural_side_code   VARCHAR2(1);
130831 
130832 l_num_entries                 NUMBER;
130833 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
130834 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
130835 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
130836 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
130837 l_recog_line_1                NUMBER;
130838 l_recog_line_2                NUMBER;
130839 
130840 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
130841 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
130842 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
130843 
130844 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
130845 
130846 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
130847 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
130848 
130849 ---------------------------------------------------------------------------------------------------------------
130850 
130851 
130852 --
130853 -- bulk performance
130854 --
130855 l_balance_type_code           VARCHAR2(1);
130856 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
130857 l_log_module                  VARCHAR2(240);
130858 
130859 --
130860 -- Upgrade strategy
130861 --
130862 l_actual_upg_option           VARCHAR2(1);
130863 l_enc_upg_option           VARCHAR2(1);
130864 
130865 --
130866 BEGIN
130867 --
130868 IF g_log_enabled THEN
130869       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_237';
130870 END IF;
130871 --
130872 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
130873 
130874       trace
130875          (p_msg      => 'BEGIN of AcctLineType_237'
130876          ,p_level    => C_LEVEL_PROCEDURE
130877          ,p_module   => l_log_module);
130878 
130879 END IF;
130880 --
130881 l_component_type             := 'AMB_JLT';
130882 l_component_code             := 'RECEIVING_INSPECTION';
130883 l_component_type_code        := 'S';
130884 l_component_appl_id          :=  707;
130885 l_amb_context_code           := 'DEFAULT';
130886 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
130887 l_event_class_code           := 'LDD_COST_ADJ_RCV';
130888 l_event_type_code            := 'LDD_COST_ADJ_RCV_ALL';
130889 l_line_definition_owner_code := 'S';
130890 l_line_definition_code       := 'LDD_COST_ADJ_RCV';
130891 --
130892 l_balance_type_code          := 'A';
130893 l_segment                     := NULL;
130894 l_ccid                        := NULL;
130895 l_adr_transaction_coa_id      := NULL;
130896 l_adr_accounting_coa_id       := NULL;
130897 l_adr_flexfield_segment_code  := NULL;
130898 l_adr_flex_value_set_id       := NULL;
130899 l_adr_value_type_code         := NULL;
130900 l_adr_value_combination_id    := NULL;
130901 l_adr_value_segment_code      := NULL;
130902 
130903 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
130904 l_bflow_class_code           := '';    -- 4219869 Business Flow
130905 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
130906 l_budgetary_control_flag     := 'N';
130907 
130908 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
130909 l_bflow_applied_to_amt       := NULL; -- 5132302
130910 l_entered_amt_idx            := NULL;          -- 4262811
130911 l_accted_amt_idx             := NULL;          -- 4262811
130912 l_acc_rev_flag               := NULL;          -- 4262811
130913 l_accrual_line_num           := NULL;          -- 4262811
130914 l_tmp_amt                    := NULL;          -- 4262811
130915 --
130916  
130917 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
130918     l_balance_type_code <> 'B' THEN
130919 IF NVL(p_source_5,'
130920 ') =  'Receiving Inspection'
130921  THEN 
130922 
130923    --
130924    XLA_AE_LINES_PKG.SetNewLine;
130925 
130926    p_balance_type_code          := l_balance_type_code;
130927    -- set the flag so later we will know whether the gain loss line needs to be created
130928    
130929    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
130930      p_actual_flag :='A';
130931    END IF;
130932 
130933    --
130934    -- bulk performance
130935    --
130936    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
130937                                       p_header_num   => 0); -- 4262811
130938    --
130939    -- set accounting line options
130940    --
130941    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
130942            p_natural_side_code          => 'D'
130943          , p_gain_or_loss_flag          => 'N'
130944          , p_gl_transfer_mode_code      => 'S'
130945          , p_acct_entry_type_code       => 'A'
130946          , p_switch_side_flag           => 'Y'
130947          , p_merge_duplicate_code       => 'N'
130948          );
130949    --
130950    l_acc_rev_natural_side_code := 'C';  -- 4262811
130951    -- 
130952    --
130953    -- set accounting line type info
130954    --
130955    xla_ae_lines_pkg.SetAcctLineType
130956       (p_component_type             => l_component_type
130957       ,p_event_type_code            => l_event_type_code
130958       ,p_line_definition_owner_code => l_line_definition_owner_code
130959       ,p_line_definition_code       => l_line_definition_code
130960       ,p_accounting_line_code       => l_component_code
130961       ,p_accounting_line_type_code  => l_component_type_code
130962       ,p_accounting_line_appl_id    => l_component_appl_id
130963       ,p_amb_context_code           => l_amb_context_code
130964       ,p_entity_code                => l_entity_code
130965       ,p_event_class_code           => l_event_class_code);
130966    --
130967    -- set accounting class
130968    --
130969    xla_ae_lines_pkg.SetAcctClass(
130970            p_accounting_class_code  => 'RECEIVING_INSPECTION'
130971          , p_ae_header_id           => l_ae_header_id
130972          );
130973 
130974    --
130975    -- set rounding class
130976    --
130977    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
130978                       'RECEIVING_INSPECTION';
130979 
130980    --
130981    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
130982    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
130983    --
130984    -- bulk performance
130985    --
130986    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
130987 
130988    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
130989       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
130990 
130991    -- 4955764
130992    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
130993       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
130994 
130995    -- 4458381 Public Sector Enh
130996    
130997    --
130998    -- set accounting attributes for the line type
130999    --
131000    l_entered_amt_idx := 3;
131001    l_accted_amt_idx  := 8;
131002    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
131003    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
131004    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
131005    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
131006    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
131007    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
131008    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
131009    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
131010    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
131011    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
131012    l_rec_acct_attrs.array_date_value(5)  := p_source_33;
131013    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
131014    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
131015    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
131016    l_rec_acct_attrs.array_char_value(7)  := p_source_36;
131017    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
131018    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
131019 
131020    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
131021    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
131022 
131023    ---------------------------------------------------------------------------------------------------------------
131024    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
131025    ---------------------------------------------------------------------------------------------------------------
131026    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
131027 
131028    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
131029    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
131030 
131031    IF xla_accounting_cache_pkg.GetValueChar
131032          (p_source_code         => 'LEDGER_CATEGORY_CODE'
131033          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
131034    AND l_bflow_method_code = 'PRIOR_ENTRY'
131035 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
131036    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
131037          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
131038        )
131039    THEN
131040          xla_ae_lines_pkg.BflowUpgEntry
131041            (p_business_method_code    => l_bflow_method_code
131042            ,p_business_class_code     => l_bflow_class_code
131043            ,p_balance_type            => l_balance_type_code);
131044    ELSE
131045       NULL;
131046 -- No business flow processing for business flow method of NONE.
131047    END IF;
131048 
131049    --
131050    -- call analytical criteria
131051    --
131052    
131053    --
131054    -- call description
131055    --
131056    -- No description or it is inherited.
131057    --
131058    -- call ADRs
131059    -- Bug 4922099
131060    --
131061    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
131062         (NVL(l_actual_upg_option, 'N') = 'O') OR
131063         (NVL(l_enc_upg_option, 'N') = 'O')
131064       )
131065    THEN
131066    NULL;
131067    --
131068    --
131069    
131070   l_ccid := AcctDerRule_4(
131071            p_application_id           => p_application_id
131072          , p_ae_header_id             => l_ae_header_id 
131073 , p_source_4 => p_source_4
131074          , x_transaction_coa_id       => l_adr_transaction_coa_id
131075          , x_accounting_coa_id        => l_adr_accounting_coa_id
131076          , x_value_type_code          => l_adr_value_type_code
131077          , p_side                     => 'NA'
131078    );
131079 
131080    xla_ae_lines_pkg.set_ccid(
131081     p_code_combination_id          => l_ccid
131082   , p_value_type_code              => l_adr_value_type_code
131083   , p_transaction_coa_id           => l_adr_transaction_coa_id
131084   , p_accounting_coa_id            => l_adr_accounting_coa_id
131085   , p_adr_code                     => 'CST_DEFAULT'
131086   , p_adr_type_code                => 'S'
131087   , p_component_type               => l_component_type
131088   , p_component_code               => l_component_code
131089   , p_component_type_code          => l_component_type_code
131090   , p_component_appl_id            => l_component_appl_id
131091   , p_amb_context_code             => l_amb_context_code
131092   , p_side                         => 'NA'
131093   );
131094 
131095 
131096    --
131097    --
131098    END IF;
131099    --
131100    -- Bug 4922099
131101    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
131102           (NVL(l_enc_upg_option, 'N') = 'O')
131103         ) AND
131104         (l_bflow_method_code = 'PRIOR_ENTRY')
131105       )
131106    THEN
131107       IF
131108       --
131109       1 = 2
131110       --
131111       THEN
131112       xla_accounting_err_pkg.build_message
131113                                     (p_appli_s_name            => 'XLA'
131114                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
131115                                     ,p_token_1                 => 'LINE_NUMBER'
131116                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
131117                                     ,p_token_2                 => 'LINE_TYPE_NAME'
131118                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
131119                                                                              l_component_type
131120                                                                             ,l_component_code
131121                                                                             ,l_component_type_code
131122                                                                             ,l_component_appl_id
131123                                                                             ,l_amb_context_code
131124                                                                             ,l_entity_code
131125                                                                             ,l_event_class_code
131126                                                                            )
131127                                     ,p_token_3                 => 'OWNER'
131128                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
131129                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
131130                                                                           ,p_lookup_code    => l_component_type_code
131131                                                                          )
131132                                     ,p_token_4                 => 'PRODUCT_NAME'
131133                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
131134                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
131135                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
131136                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
131137                                     ,p_ae_header_id            =>  NULL
131138                                        );
131139 
131140         IF (C_LEVEL_ERROR>= g_log_level) THEN
131141                  trace
131142                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
131143                       ,p_level    => C_LEVEL_ERROR
131144                       ,p_module   => l_log_module);
131145         END IF;
131146       END IF;
131147    END IF;
131148    --
131149    --
131150    ------------------------------------------------------------------------------------------------
131151    -- 4219869 Business Flow
131152    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
131153    -- Prior Entry.  Currently, the following code is always generated.
131154    ------------------------------------------------------------------------------------------------
131155    XLA_AE_LINES_PKG.ValidateCurrentLine;
131156 
131157    ------------------------------------------------------------------------------------
131158    -- 4219869 Business Flow
131159    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
131160    ------------------------------------------------------------------------------------
131161    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
131162 
131163    ----------------------------------------------------------------------------------
131164    -- 4219869 Business Flow
131165    -- Update journal entry status -- Need to generate this within IF <condition>
131166    ----------------------------------------------------------------------------------
131167    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
131168          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
131169          ,p_balance_type_code => l_balance_type_code
131170          );
131171 
131172    -------------------------------------------------------------------------------------------
131173    -- 4262811 - Generate the Accrual Reversal lines
131174    -------------------------------------------------------------------------------------------
131175    BEGIN
131176       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
131177                               (g_array_event(p_event_id).array_value_num('header_index'));
131178       IF l_acc_rev_flag IS NULL THEN
131179          l_acc_rev_flag := 'N';
131180       END IF;
131181    EXCEPTION
131182       WHEN OTHERS THEN
131183          l_acc_rev_flag := 'N';
131184    END;
131185    --
131186    IF (l_acc_rev_flag = 'Y') THEN
131187 
131188        -- 4645092  ------------------------------------------------------------------------------
131189        -- To allow MPA report to determine if it should generate report process
131190        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
131191        ------------------------------------------------------------------------------------------
131192 
131193        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
131194        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
131195    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
131196    -- call ADRs
131197    -- Bug 4922099
131198    --
131199    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
131200         (NVL(l_actual_upg_option, 'N') = 'O') OR
131201         (NVL(l_enc_upg_option, 'N') = 'O')
131202       )
131203    THEN
131204    NULL;
131205    --
131206    --
131207    
131208   l_ccid := AcctDerRule_4(
131209            p_application_id           => p_application_id
131210          , p_ae_header_id             => l_ae_header_id 
131211 , p_source_4 => p_source_4
131212          , x_transaction_coa_id       => l_adr_transaction_coa_id
131213          , x_accounting_coa_id        => l_adr_accounting_coa_id
131214          , x_value_type_code          => l_adr_value_type_code
131215          , p_side                     => 'NA'
131216    );
131217 
131218    xla_ae_lines_pkg.set_ccid(
131219     p_code_combination_id          => l_ccid
131220   , p_value_type_code              => l_adr_value_type_code
131221   , p_transaction_coa_id           => l_adr_transaction_coa_id
131222   , p_accounting_coa_id            => l_adr_accounting_coa_id
131223   , p_adr_code                     => 'CST_DEFAULT'
131224   , p_adr_type_code                => 'S'
131225   , p_component_type               => l_component_type
131226   , p_component_code               => l_component_code
131227   , p_component_type_code          => l_component_type_code
131228   , p_component_appl_id            => l_component_appl_id
131229   , p_amb_context_code             => l_amb_context_code
131230   , p_side                         => 'NA'
131231   );
131232 
131233 
131234    --
131235    --
131236    END IF;
131237 
131238        --
131239        -- Update the line information that should be overwritten
131240        --
131241        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
131242                                          p_header_num   => 1);
131243        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
131244 
131245        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
131246 
131247        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
131248           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
131249        END IF;
131250 
131251       --
131252       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
131253       --
131254       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
131255           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
131256       ELSE
131257           ---------------------------------------------------------------------------------------------------
131258           -- 4262811a Switch Sign
131259           ---------------------------------------------------------------------------------------------------
131260           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
131261           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
131262                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
131263           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
131264                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
131265           -- 5132302
131266           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
131267                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
131268 
131269       END IF;
131270 
131271       -- 4955764
131272       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
131273       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
131274 
131275 
131276       XLA_AE_LINES_PKG.ValidateCurrentLine;
131277       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
131278 
131279       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
131280                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
131281                ,p_balance_type_code => l_balance_type_code);
131282 
131283    END IF;
131284 
131285    -----------------------------------------------------------------------------------------
131286    -- 4262811 Multiperiod Accounting
131287    -----------------------------------------------------------------------------------------
131288      -- No MPA option is assigned.
131289 
131290 
131291 END IF;
131292 END IF;
131293 --
131294 
131295 --
131296 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
131297    trace
131298       (p_msg      => 'END of AcctLineType_237'
131299       ,p_level    => C_LEVEL_PROCEDURE
131300       ,p_module   => l_log_module);
131301 END IF;
131302 --
131303 EXCEPTION
131304   WHEN xla_exceptions_pkg.application_exception THEN
131305       RAISE;
131306   WHEN OTHERS THEN
131307        xla_exceptions_pkg.raise_message
131308            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_237');
131309 END AcctLineType_237;
131310 --
131311 
131312 ---------------------------------------
131313 --
131314 -- PRIVATE FUNCTION
131315 --         AcctLineType_238
131316 --
131317 ---------------------------------------
131318 PROCEDURE AcctLineType_238 (
131319   p_application_id        IN NUMBER
131320  ,p_event_id              IN NUMBER
131321  ,p_calculate_acctd_flag  IN VARCHAR2
131322  ,p_calculate_g_l_flag    IN VARCHAR2
131323  ,p_actual_flag           IN OUT VARCHAR2
131324  ,p_balance_type_code     OUT VARCHAR2
131325  ,p_gain_or_loss_ref      OUT VARCHAR2
131326  
131327 --Cost Management Default Account
131328  , p_source_4            IN NUMBER
131329 --Receiving Accounting Line Type
131330  , p_source_5            IN VARCHAR2
131331 --DISTRIBUTION_IDENTIFIER
131332  , p_source_11            IN NUMBER
131333 --Distribution Type
131334  , p_source_12            IN VARCHAR2
131335  , p_source_12_meaning    IN VARCHAR2
131336 --Entered Currency Code
131337  , p_source_15            IN VARCHAR2
131338 --Entered Amount
131339  , p_source_18            IN NUMBER
131340 --Currency Conversion Date
131341  , p_source_19            IN DATE
131342 --Currency Conversion Rate
131343  , p_source_20            IN NUMBER
131344 --Currency Conversion Type
131345  , p_source_21            IN VARCHAR2
131346 --Accounted Amount
131347  , p_source_22            IN NUMBER
131348 )
131349 IS
131350 
131351 l_component_type              VARCHAR2(80);
131352 l_component_code              VARCHAR2(30);
131353 l_component_type_code         VARCHAR2(1);
131354 l_component_appl_id           INTEGER;
131355 l_amb_context_code            VARCHAR2(30);
131356 l_entity_code                 VARCHAR2(30);
131357 l_event_class_code            VARCHAR2(30);
131358 l_ae_header_id                NUMBER;
131359 l_event_type_code             VARCHAR2(30);
131360 l_line_definition_code        VARCHAR2(30);
131361 l_line_definition_owner_code  VARCHAR2(1);
131362 --
131363 -- adr variables
131364 l_segment                     VARCHAR2(30);
131365 l_ccid                        NUMBER;
131366 l_adr_transaction_coa_id      NUMBER;
131367 l_adr_accounting_coa_id       NUMBER;
131368 l_adr_flexfield_segment_code  VARCHAR2(30);
131369 l_adr_flex_value_set_id       NUMBER;
131370 l_adr_value_type_code         VARCHAR2(30);
131371 l_adr_value_combination_id    NUMBER;
131372 l_adr_value_segment_code      VARCHAR2(30);
131373 
131374 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
131375 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
131376 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
131377 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
131378 
131379 -- 4262811 Variables ------------------------------------------------------------------------------------------
131380 l_entered_amt_idx             NUMBER;
131381 l_accted_amt_idx              NUMBER;
131382 l_acc_rev_flag                VARCHAR2(1);
131383 l_accrual_line_num            NUMBER;
131384 l_tmp_amt                     NUMBER;
131385 l_acc_rev_natural_side_code   VARCHAR2(1);
131386 
131387 l_num_entries                 NUMBER;
131388 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
131389 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
131390 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
131391 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
131392 l_recog_line_1                NUMBER;
131393 l_recog_line_2                NUMBER;
131394 
131395 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
131396 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
131397 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
131398 
131399 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
131400 
131401 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
131402 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
131403 
131404 ---------------------------------------------------------------------------------------------------------------
131405 
131406 
131407 --
131408 -- bulk performance
131409 --
131410 l_balance_type_code           VARCHAR2(1);
131411 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
131412 l_log_module                  VARCHAR2(240);
131413 
131414 --
131415 -- Upgrade strategy
131416 --
131417 l_actual_upg_option           VARCHAR2(1);
131418 l_enc_upg_option           VARCHAR2(1);
131419 
131420 --
131421 BEGIN
131422 --
131423 IF g_log_enabled THEN
131424       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_238';
131425 END IF;
131426 --
131427 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
131428 
131429       trace
131430          (p_msg      => 'BEGIN of AcctLineType_238'
131431          ,p_level    => C_LEVEL_PROCEDURE
131432          ,p_module   => l_log_module);
131433 
131434 END IF;
131435 --
131436 l_component_type             := 'AMB_JLT';
131437 l_component_code             := 'RECEIVING_INSPECTION';
131438 l_component_type_code        := 'S';
131439 l_component_appl_id          :=  707;
131440 l_amb_context_code           := 'DEFAULT';
131441 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
131442 l_event_class_code           := 'RCPT_REC_INSP';
131443 l_event_type_code            := 'RCPT_REC_INSP_ALL';
131444 l_line_definition_owner_code := 'S';
131445 l_line_definition_code       := 'RCPT_REC_INSP';
131446 --
131447 l_balance_type_code          := 'A';
131448 l_segment                     := NULL;
131449 l_ccid                        := NULL;
131450 l_adr_transaction_coa_id      := NULL;
131451 l_adr_accounting_coa_id       := NULL;
131452 l_adr_flexfield_segment_code  := NULL;
131453 l_adr_flex_value_set_id       := NULL;
131454 l_adr_value_type_code         := NULL;
131455 l_adr_value_combination_id    := NULL;
131456 l_adr_value_segment_code      := NULL;
131457 
131458 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
131459 l_bflow_class_code           := '';    -- 4219869 Business Flow
131460 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
131461 l_budgetary_control_flag     := 'N';
131462 
131463 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
131464 l_bflow_applied_to_amt       := NULL; -- 5132302
131465 l_entered_amt_idx            := NULL;          -- 4262811
131466 l_accted_amt_idx             := NULL;          -- 4262811
131467 l_acc_rev_flag               := NULL;          -- 4262811
131468 l_accrual_line_num           := NULL;          -- 4262811
131469 l_tmp_amt                    := NULL;          -- 4262811
131470 --
131471  
131472 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
131473     l_balance_type_code <> 'B' THEN
131474 IF NVL(p_source_5,'
131475 ') =  'Receiving Inspection'
131476  THEN 
131477 
131478    --
131479    XLA_AE_LINES_PKG.SetNewLine;
131480 
131481    p_balance_type_code          := l_balance_type_code;
131482    -- set the flag so later we will know whether the gain loss line needs to be created
131483    
131484    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
131485      p_actual_flag :='A';
131486    END IF;
131487 
131488    --
131489    -- bulk performance
131490    --
131491    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
131492                                       p_header_num   => 0); -- 4262811
131493    --
131494    -- set accounting line options
131495    --
131496    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
131497            p_natural_side_code          => 'D'
131498          , p_gain_or_loss_flag          => 'N'
131499          , p_gl_transfer_mode_code      => 'S'
131500          , p_acct_entry_type_code       => 'A'
131501          , p_switch_side_flag           => 'Y'
131502          , p_merge_duplicate_code       => 'N'
131503          );
131504    --
131505    l_acc_rev_natural_side_code := 'C';  -- 4262811
131506    -- 
131507    --
131508    -- set accounting line type info
131509    --
131510    xla_ae_lines_pkg.SetAcctLineType
131511       (p_component_type             => l_component_type
131512       ,p_event_type_code            => l_event_type_code
131513       ,p_line_definition_owner_code => l_line_definition_owner_code
131514       ,p_line_definition_code       => l_line_definition_code
131515       ,p_accounting_line_code       => l_component_code
131516       ,p_accounting_line_type_code  => l_component_type_code
131517       ,p_accounting_line_appl_id    => l_component_appl_id
131518       ,p_amb_context_code           => l_amb_context_code
131519       ,p_entity_code                => l_entity_code
131520       ,p_event_class_code           => l_event_class_code);
131521    --
131522    -- set accounting class
131523    --
131524    xla_ae_lines_pkg.SetAcctClass(
131525            p_accounting_class_code  => 'RECEIVING_INSPECTION'
131526          , p_ae_header_id           => l_ae_header_id
131527          );
131528 
131529    --
131530    -- set rounding class
131531    --
131532    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
131533                       'RECEIVING_INSPECTION';
131534 
131535    --
131536    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
131537    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
131538    --
131539    -- bulk performance
131540    --
131541    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
131542 
131543    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
131544       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
131545 
131546    -- 4955764
131547    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
131548       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
131549 
131550    -- 4458381 Public Sector Enh
131551    
131552    --
131553    -- set accounting attributes for the line type
131554    --
131555    l_entered_amt_idx := 3;
131556    l_accted_amt_idx  := 8;
131557    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
131558    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
131559    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
131560    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
131561    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
131562    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
131563    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
131564    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
131565    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
131566    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
131567    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
131568    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
131569    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
131570    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
131571    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
131572    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
131573    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
131574 
131575    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
131576    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
131577 
131578    ---------------------------------------------------------------------------------------------------------------
131579    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
131580    ---------------------------------------------------------------------------------------------------------------
131581    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
131582 
131583    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
131584    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
131585 
131586    IF xla_accounting_cache_pkg.GetValueChar
131587          (p_source_code         => 'LEDGER_CATEGORY_CODE'
131588          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
131589    AND l_bflow_method_code = 'PRIOR_ENTRY'
131590 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
131591    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
131592          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
131593        )
131594    THEN
131595          xla_ae_lines_pkg.BflowUpgEntry
131596            (p_business_method_code    => l_bflow_method_code
131597            ,p_business_class_code     => l_bflow_class_code
131598            ,p_balance_type            => l_balance_type_code);
131599    ELSE
131600       NULL;
131601 -- No business flow processing for business flow method of NONE.
131602    END IF;
131603 
131604    --
131605    -- call analytical criteria
131606    --
131607    
131608    --
131609    -- call description
131610    --
131611    -- No description or it is inherited.
131612    --
131613    -- call ADRs
131614    -- Bug 4922099
131615    --
131616    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
131617         (NVL(l_actual_upg_option, 'N') = 'O') OR
131618         (NVL(l_enc_upg_option, 'N') = 'O')
131619       )
131620    THEN
131621    NULL;
131622    --
131623    --
131624    
131625   l_ccid := AcctDerRule_4(
131626            p_application_id           => p_application_id
131627          , p_ae_header_id             => l_ae_header_id 
131628 , p_source_4 => p_source_4
131629          , x_transaction_coa_id       => l_adr_transaction_coa_id
131630          , x_accounting_coa_id        => l_adr_accounting_coa_id
131631          , x_value_type_code          => l_adr_value_type_code
131632          , p_side                     => 'NA'
131633    );
131634 
131635    xla_ae_lines_pkg.set_ccid(
131636     p_code_combination_id          => l_ccid
131637   , p_value_type_code              => l_adr_value_type_code
131638   , p_transaction_coa_id           => l_adr_transaction_coa_id
131639   , p_accounting_coa_id            => l_adr_accounting_coa_id
131640   , p_adr_code                     => 'CST_DEFAULT'
131641   , p_adr_type_code                => 'S'
131642   , p_component_type               => l_component_type
131643   , p_component_code               => l_component_code
131644   , p_component_type_code          => l_component_type_code
131645   , p_component_appl_id            => l_component_appl_id
131646   , p_amb_context_code             => l_amb_context_code
131647   , p_side                         => 'NA'
131648   );
131649 
131650 
131651    --
131652    --
131653    END IF;
131654    --
131655    -- Bug 4922099
131656    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
131657           (NVL(l_enc_upg_option, 'N') = 'O')
131658         ) AND
131659         (l_bflow_method_code = 'PRIOR_ENTRY')
131660       )
131661    THEN
131662       IF
131663       --
131664       1 = 2
131665       --
131666       THEN
131667       xla_accounting_err_pkg.build_message
131668                                     (p_appli_s_name            => 'XLA'
131669                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
131670                                     ,p_token_1                 => 'LINE_NUMBER'
131671                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
131672                                     ,p_token_2                 => 'LINE_TYPE_NAME'
131673                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
131674                                                                              l_component_type
131675                                                                             ,l_component_code
131676                                                                             ,l_component_type_code
131677                                                                             ,l_component_appl_id
131678                                                                             ,l_amb_context_code
131679                                                                             ,l_entity_code
131680                                                                             ,l_event_class_code
131681                                                                            )
131682                                     ,p_token_3                 => 'OWNER'
131683                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
131684                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
131685                                                                           ,p_lookup_code    => l_component_type_code
131686                                                                          )
131687                                     ,p_token_4                 => 'PRODUCT_NAME'
131688                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
131689                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
131690                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
131691                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
131692                                     ,p_ae_header_id            =>  NULL
131693                                        );
131694 
131695         IF (C_LEVEL_ERROR>= g_log_level) THEN
131696                  trace
131697                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
131698                       ,p_level    => C_LEVEL_ERROR
131699                       ,p_module   => l_log_module);
131700         END IF;
131701       END IF;
131702    END IF;
131703    --
131704    --
131705    ------------------------------------------------------------------------------------------------
131706    -- 4219869 Business Flow
131707    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
131708    -- Prior Entry.  Currently, the following code is always generated.
131709    ------------------------------------------------------------------------------------------------
131710    XLA_AE_LINES_PKG.ValidateCurrentLine;
131711 
131712    ------------------------------------------------------------------------------------
131713    -- 4219869 Business Flow
131714    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
131715    ------------------------------------------------------------------------------------
131716    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
131717 
131718    ----------------------------------------------------------------------------------
131719    -- 4219869 Business Flow
131720    -- Update journal entry status -- Need to generate this within IF <condition>
131721    ----------------------------------------------------------------------------------
131722    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
131723          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
131724          ,p_balance_type_code => l_balance_type_code
131725          );
131726 
131727    -------------------------------------------------------------------------------------------
131728    -- 4262811 - Generate the Accrual Reversal lines
131729    -------------------------------------------------------------------------------------------
131730    BEGIN
131731       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
131732                               (g_array_event(p_event_id).array_value_num('header_index'));
131733       IF l_acc_rev_flag IS NULL THEN
131734          l_acc_rev_flag := 'N';
131735       END IF;
131736    EXCEPTION
131737       WHEN OTHERS THEN
131738          l_acc_rev_flag := 'N';
131739    END;
131740    --
131741    IF (l_acc_rev_flag = 'Y') THEN
131742 
131743        -- 4645092  ------------------------------------------------------------------------------
131744        -- To allow MPA report to determine if it should generate report process
131745        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
131746        ------------------------------------------------------------------------------------------
131747 
131748        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
131749        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
131750    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
131751    -- call ADRs
131752    -- Bug 4922099
131753    --
131754    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
131755         (NVL(l_actual_upg_option, 'N') = 'O') OR
131756         (NVL(l_enc_upg_option, 'N') = 'O')
131757       )
131758    THEN
131759    NULL;
131760    --
131761    --
131762    
131763   l_ccid := AcctDerRule_4(
131764            p_application_id           => p_application_id
131765          , p_ae_header_id             => l_ae_header_id 
131766 , p_source_4 => p_source_4
131767          , x_transaction_coa_id       => l_adr_transaction_coa_id
131768          , x_accounting_coa_id        => l_adr_accounting_coa_id
131769          , x_value_type_code          => l_adr_value_type_code
131770          , p_side                     => 'NA'
131771    );
131772 
131773    xla_ae_lines_pkg.set_ccid(
131774     p_code_combination_id          => l_ccid
131775   , p_value_type_code              => l_adr_value_type_code
131776   , p_transaction_coa_id           => l_adr_transaction_coa_id
131777   , p_accounting_coa_id            => l_adr_accounting_coa_id
131778   , p_adr_code                     => 'CST_DEFAULT'
131779   , p_adr_type_code                => 'S'
131780   , p_component_type               => l_component_type
131781   , p_component_code               => l_component_code
131782   , p_component_type_code          => l_component_type_code
131783   , p_component_appl_id            => l_component_appl_id
131784   , p_amb_context_code             => l_amb_context_code
131785   , p_side                         => 'NA'
131786   );
131787 
131788 
131789    --
131790    --
131791    END IF;
131792 
131793        --
131794        -- Update the line information that should be overwritten
131795        --
131796        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
131797                                          p_header_num   => 1);
131798        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
131799 
131800        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
131801 
131802        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
131803           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
131804        END IF;
131805 
131806       --
131807       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
131808       --
131809       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
131810           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
131811       ELSE
131812           ---------------------------------------------------------------------------------------------------
131813           -- 4262811a Switch Sign
131814           ---------------------------------------------------------------------------------------------------
131815           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
131816           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
131817                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
131818           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
131819                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
131820           -- 5132302
131821           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
131822                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
131823 
131824       END IF;
131825 
131826       -- 4955764
131827       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
131828       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
131829 
131830 
131831       XLA_AE_LINES_PKG.ValidateCurrentLine;
131832       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
131833 
131834       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
131835                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
131836                ,p_balance_type_code => l_balance_type_code);
131837 
131838    END IF;
131839 
131840    -----------------------------------------------------------------------------------------
131841    -- 4262811 Multiperiod Accounting
131842    -----------------------------------------------------------------------------------------
131843      -- No MPA option is assigned.
131844 
131845 
131846 END IF;
131847 END IF;
131848 --
131849 
131850 --
131851 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
131852    trace
131853       (p_msg      => 'END of AcctLineType_238'
131854       ,p_level    => C_LEVEL_PROCEDURE
131855       ,p_module   => l_log_module);
131856 END IF;
131857 --
131858 EXCEPTION
131859   WHEN xla_exceptions_pkg.application_exception THEN
131860       RAISE;
131861   WHEN OTHERS THEN
131862        xla_exceptions_pkg.raise_message
131863            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_238');
131864 END AcctLineType_238;
131865 --
131866 
131867 ---------------------------------------
131868 --
131869 -- PRIVATE FUNCTION
131870 --         AcctLineType_239
131871 --
131872 ---------------------------------------
131873 PROCEDURE AcctLineType_239 (
131874   p_application_id        IN NUMBER
131875  ,p_event_id              IN NUMBER
131876  ,p_calculate_acctd_flag  IN VARCHAR2
131877  ,p_calculate_g_l_flag    IN VARCHAR2
131878  ,p_actual_flag           IN OUT VARCHAR2
131879  ,p_balance_type_code     OUT VARCHAR2
131880  ,p_gain_or_loss_ref      OUT VARCHAR2
131881  
131882 --Cost Management Default Account
131883  , p_source_4            IN NUMBER
131884 --Receiving Accounting Line Type
131885  , p_source_5            IN VARCHAR2
131886 --DISTRIBUTION_IDENTIFIER
131887  , p_source_11            IN NUMBER
131888 --Distribution Type
131889  , p_source_12            IN VARCHAR2
131890  , p_source_12_meaning    IN VARCHAR2
131891 --Entered Currency Code
131892  , p_source_15            IN VARCHAR2
131893 --Entered Amount
131894  , p_source_18            IN NUMBER
131895 --Currency Conversion Date
131896  , p_source_19            IN DATE
131897 --Currency Conversion Rate
131898  , p_source_20            IN NUMBER
131899 --Currency Conversion Type
131900  , p_source_21            IN VARCHAR2
131901 --Accounted Amount
131902  , p_source_22            IN NUMBER
131903 )
131904 IS
131905 
131906 l_component_type              VARCHAR2(80);
131907 l_component_code              VARCHAR2(30);
131908 l_component_type_code         VARCHAR2(1);
131909 l_component_appl_id           INTEGER;
131910 l_amb_context_code            VARCHAR2(30);
131911 l_entity_code                 VARCHAR2(30);
131912 l_event_class_code            VARCHAR2(30);
131913 l_ae_header_id                NUMBER;
131914 l_event_type_code             VARCHAR2(30);
131915 l_line_definition_code        VARCHAR2(30);
131916 l_line_definition_owner_code  VARCHAR2(1);
131917 --
131918 -- adr variables
131919 l_segment                     VARCHAR2(30);
131920 l_ccid                        NUMBER;
131921 l_adr_transaction_coa_id      NUMBER;
131922 l_adr_accounting_coa_id       NUMBER;
131923 l_adr_flexfield_segment_code  VARCHAR2(30);
131924 l_adr_flex_value_set_id       NUMBER;
131925 l_adr_value_type_code         VARCHAR2(30);
131926 l_adr_value_combination_id    NUMBER;
131927 l_adr_value_segment_code      VARCHAR2(30);
131928 
131929 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
131930 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
131931 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
131932 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
131933 
131934 -- 4262811 Variables ------------------------------------------------------------------------------------------
131935 l_entered_amt_idx             NUMBER;
131936 l_accted_amt_idx              NUMBER;
131937 l_acc_rev_flag                VARCHAR2(1);
131938 l_accrual_line_num            NUMBER;
131939 l_tmp_amt                     NUMBER;
131940 l_acc_rev_natural_side_code   VARCHAR2(1);
131941 
131942 l_num_entries                 NUMBER;
131943 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
131944 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
131945 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
131946 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
131947 l_recog_line_1                NUMBER;
131948 l_recog_line_2                NUMBER;
131949 
131950 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
131951 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
131952 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
131953 
131954 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
131955 
131956 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
131957 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
131958 
131959 ---------------------------------------------------------------------------------------------------------------
131960 
131961 
131962 --
131963 -- bulk performance
131964 --
131965 l_balance_type_code           VARCHAR2(1);
131966 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
131967 l_log_module                  VARCHAR2(240);
131968 
131969 --
131970 -- Upgrade strategy
131971 --
131972 l_actual_upg_option           VARCHAR2(1);
131973 l_enc_upg_option           VARCHAR2(1);
131974 
131975 --
131976 BEGIN
131977 --
131978 IF g_log_enabled THEN
131979       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_239';
131980 END IF;
131981 --
131982 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
131983 
131984       trace
131985          (p_msg      => 'BEGIN of AcctLineType_239'
131986          ,p_level    => C_LEVEL_PROCEDURE
131987          ,p_module   => l_log_module);
131988 
131989 END IF;
131990 --
131991 l_component_type             := 'AMB_JLT';
131992 l_component_code             := 'RECEIVING_INSPECTION';
131993 l_component_type_code        := 'S';
131994 l_component_appl_id          :=  707;
131995 l_amb_context_code           := 'DEFAULT';
131996 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
131997 l_event_class_code           := 'RETR_PRICE_ADJ_RCV';
131998 l_event_type_code            := 'RETR_PRICE_ADJ_RCV_ALL';
131999 l_line_definition_owner_code := 'S';
132000 l_line_definition_code       := 'RETR_PRICE_ADJ_RCV';
132001 --
132002 l_balance_type_code          := 'A';
132003 l_segment                     := NULL;
132004 l_ccid                        := NULL;
132005 l_adr_transaction_coa_id      := NULL;
132006 l_adr_accounting_coa_id       := NULL;
132007 l_adr_flexfield_segment_code  := NULL;
132008 l_adr_flex_value_set_id       := NULL;
132009 l_adr_value_type_code         := NULL;
132010 l_adr_value_combination_id    := NULL;
132011 l_adr_value_segment_code      := NULL;
132012 
132013 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
132014 l_bflow_class_code           := '';    -- 4219869 Business Flow
132015 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
132016 l_budgetary_control_flag     := 'N';
132017 
132018 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
132019 l_bflow_applied_to_amt       := NULL; -- 5132302
132020 l_entered_amt_idx            := NULL;          -- 4262811
132021 l_accted_amt_idx             := NULL;          -- 4262811
132022 l_acc_rev_flag               := NULL;          -- 4262811
132023 l_accrual_line_num           := NULL;          -- 4262811
132024 l_tmp_amt                    := NULL;          -- 4262811
132025 --
132026  
132027 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
132028     l_balance_type_code <> 'B' THEN
132029 IF NVL(p_source_5,'
132030 ') =  'Receiving Inspection'
132031  THEN 
132032 
132033    --
132034    XLA_AE_LINES_PKG.SetNewLine;
132035 
132036    p_balance_type_code          := l_balance_type_code;
132037    -- set the flag so later we will know whether the gain loss line needs to be created
132038    
132039    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
132040      p_actual_flag :='A';
132041    END IF;
132042 
132043    --
132044    -- bulk performance
132045    --
132046    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
132047                                       p_header_num   => 0); -- 4262811
132048    --
132049    -- set accounting line options
132050    --
132051    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
132052            p_natural_side_code          => 'D'
132053          , p_gain_or_loss_flag          => 'N'
132054          , p_gl_transfer_mode_code      => 'S'
132055          , p_acct_entry_type_code       => 'A'
132056          , p_switch_side_flag           => 'Y'
132057          , p_merge_duplicate_code       => 'N'
132058          );
132059    --
132060    l_acc_rev_natural_side_code := 'C';  -- 4262811
132061    -- 
132062    --
132063    -- set accounting line type info
132064    --
132065    xla_ae_lines_pkg.SetAcctLineType
132066       (p_component_type             => l_component_type
132067       ,p_event_type_code            => l_event_type_code
132068       ,p_line_definition_owner_code => l_line_definition_owner_code
132069       ,p_line_definition_code       => l_line_definition_code
132070       ,p_accounting_line_code       => l_component_code
132071       ,p_accounting_line_type_code  => l_component_type_code
132072       ,p_accounting_line_appl_id    => l_component_appl_id
132073       ,p_amb_context_code           => l_amb_context_code
132074       ,p_entity_code                => l_entity_code
132075       ,p_event_class_code           => l_event_class_code);
132076    --
132077    -- set accounting class
132078    --
132079    xla_ae_lines_pkg.SetAcctClass(
132080            p_accounting_class_code  => 'RECEIVING_INSPECTION'
132081          , p_ae_header_id           => l_ae_header_id
132082          );
132083 
132084    --
132085    -- set rounding class
132086    --
132087    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
132088                       'RECEIVING_INSPECTION';
132089 
132090    --
132091    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
132092    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
132093    --
132094    -- bulk performance
132095    --
132096    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
132097 
132098    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
132099       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
132100 
132101    -- 4955764
132102    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
132103       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
132104 
132105    -- 4458381 Public Sector Enh
132106    
132107    --
132108    -- set accounting attributes for the line type
132109    --
132110    l_entered_amt_idx := 3;
132111    l_accted_amt_idx  := 8;
132112    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
132113    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
132114    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
132115    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
132116    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
132117    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
132118    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
132119    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
132120    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
132121    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
132122    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
132123    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
132124    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
132125    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
132126    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
132127    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
132128    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
132129 
132130    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
132131    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
132132 
132133    ---------------------------------------------------------------------------------------------------------------
132134    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
132135    ---------------------------------------------------------------------------------------------------------------
132136    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
132137 
132138    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
132139    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
132140 
132141    IF xla_accounting_cache_pkg.GetValueChar
132142          (p_source_code         => 'LEDGER_CATEGORY_CODE'
132143          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
132144    AND l_bflow_method_code = 'PRIOR_ENTRY'
132145 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
132146    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
132147          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
132148        )
132149    THEN
132150          xla_ae_lines_pkg.BflowUpgEntry
132151            (p_business_method_code    => l_bflow_method_code
132152            ,p_business_class_code     => l_bflow_class_code
132153            ,p_balance_type            => l_balance_type_code);
132154    ELSE
132155       NULL;
132156 -- No business flow processing for business flow method of NONE.
132157    END IF;
132158 
132159    --
132160    -- call analytical criteria
132161    --
132162    
132163    --
132164    -- call description
132165    --
132166    -- No description or it is inherited.
132167    --
132168    -- call ADRs
132169    -- Bug 4922099
132170    --
132171    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
132172         (NVL(l_actual_upg_option, 'N') = 'O') OR
132173         (NVL(l_enc_upg_option, 'N') = 'O')
132174       )
132175    THEN
132176    NULL;
132177    --
132178    --
132179    
132180   l_ccid := AcctDerRule_4(
132181            p_application_id           => p_application_id
132182          , p_ae_header_id             => l_ae_header_id 
132183 , p_source_4 => p_source_4
132184          , x_transaction_coa_id       => l_adr_transaction_coa_id
132185          , x_accounting_coa_id        => l_adr_accounting_coa_id
132186          , x_value_type_code          => l_adr_value_type_code
132187          , p_side                     => 'NA'
132188    );
132189 
132190    xla_ae_lines_pkg.set_ccid(
132191     p_code_combination_id          => l_ccid
132192   , p_value_type_code              => l_adr_value_type_code
132193   , p_transaction_coa_id           => l_adr_transaction_coa_id
132194   , p_accounting_coa_id            => l_adr_accounting_coa_id
132195   , p_adr_code                     => 'CST_DEFAULT'
132196   , p_adr_type_code                => 'S'
132197   , p_component_type               => l_component_type
132198   , p_component_code               => l_component_code
132199   , p_component_type_code          => l_component_type_code
132200   , p_component_appl_id            => l_component_appl_id
132201   , p_amb_context_code             => l_amb_context_code
132202   , p_side                         => 'NA'
132203   );
132204 
132205 
132206    --
132207    --
132208    END IF;
132209    --
132210    -- Bug 4922099
132211    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
132212           (NVL(l_enc_upg_option, 'N') = 'O')
132213         ) AND
132214         (l_bflow_method_code = 'PRIOR_ENTRY')
132215       )
132216    THEN
132217       IF
132218       --
132219       1 = 2
132220       --
132221       THEN
132222       xla_accounting_err_pkg.build_message
132223                                     (p_appli_s_name            => 'XLA'
132224                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
132225                                     ,p_token_1                 => 'LINE_NUMBER'
132226                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
132227                                     ,p_token_2                 => 'LINE_TYPE_NAME'
132228                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
132229                                                                              l_component_type
132230                                                                             ,l_component_code
132231                                                                             ,l_component_type_code
132232                                                                             ,l_component_appl_id
132233                                                                             ,l_amb_context_code
132234                                                                             ,l_entity_code
132235                                                                             ,l_event_class_code
132236                                                                            )
132237                                     ,p_token_3                 => 'OWNER'
132238                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
132239                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
132240                                                                           ,p_lookup_code    => l_component_type_code
132241                                                                          )
132242                                     ,p_token_4                 => 'PRODUCT_NAME'
132243                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
132244                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
132245                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
132246                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
132247                                     ,p_ae_header_id            =>  NULL
132248                                        );
132249 
132250         IF (C_LEVEL_ERROR>= g_log_level) THEN
132251                  trace
132252                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
132253                       ,p_level    => C_LEVEL_ERROR
132254                       ,p_module   => l_log_module);
132255         END IF;
132256       END IF;
132257    END IF;
132258    --
132259    --
132260    ------------------------------------------------------------------------------------------------
132261    -- 4219869 Business Flow
132262    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
132263    -- Prior Entry.  Currently, the following code is always generated.
132264    ------------------------------------------------------------------------------------------------
132265    XLA_AE_LINES_PKG.ValidateCurrentLine;
132266 
132267    ------------------------------------------------------------------------------------
132268    -- 4219869 Business Flow
132269    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
132270    ------------------------------------------------------------------------------------
132271    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
132272 
132273    ----------------------------------------------------------------------------------
132274    -- 4219869 Business Flow
132275    -- Update journal entry status -- Need to generate this within IF <condition>
132276    ----------------------------------------------------------------------------------
132277    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
132278          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
132279          ,p_balance_type_code => l_balance_type_code
132280          );
132281 
132282    -------------------------------------------------------------------------------------------
132283    -- 4262811 - Generate the Accrual Reversal lines
132284    -------------------------------------------------------------------------------------------
132285    BEGIN
132286       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
132287                               (g_array_event(p_event_id).array_value_num('header_index'));
132288       IF l_acc_rev_flag IS NULL THEN
132289          l_acc_rev_flag := 'N';
132290       END IF;
132291    EXCEPTION
132292       WHEN OTHERS THEN
132293          l_acc_rev_flag := 'N';
132294    END;
132295    --
132296    IF (l_acc_rev_flag = 'Y') THEN
132297 
132298        -- 4645092  ------------------------------------------------------------------------------
132299        -- To allow MPA report to determine if it should generate report process
132300        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
132301        ------------------------------------------------------------------------------------------
132302 
132303        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
132304        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
132305    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
132306    -- call ADRs
132307    -- Bug 4922099
132308    --
132309    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
132310         (NVL(l_actual_upg_option, 'N') = 'O') OR
132311         (NVL(l_enc_upg_option, 'N') = 'O')
132312       )
132313    THEN
132314    NULL;
132315    --
132316    --
132317    
132318   l_ccid := AcctDerRule_4(
132319            p_application_id           => p_application_id
132320          , p_ae_header_id             => l_ae_header_id 
132321 , p_source_4 => p_source_4
132322          , x_transaction_coa_id       => l_adr_transaction_coa_id
132323          , x_accounting_coa_id        => l_adr_accounting_coa_id
132324          , x_value_type_code          => l_adr_value_type_code
132325          , p_side                     => 'NA'
132326    );
132327 
132328    xla_ae_lines_pkg.set_ccid(
132329     p_code_combination_id          => l_ccid
132330   , p_value_type_code              => l_adr_value_type_code
132331   , p_transaction_coa_id           => l_adr_transaction_coa_id
132332   , p_accounting_coa_id            => l_adr_accounting_coa_id
132333   , p_adr_code                     => 'CST_DEFAULT'
132334   , p_adr_type_code                => 'S'
132335   , p_component_type               => l_component_type
132336   , p_component_code               => l_component_code
132337   , p_component_type_code          => l_component_type_code
132338   , p_component_appl_id            => l_component_appl_id
132339   , p_amb_context_code             => l_amb_context_code
132340   , p_side                         => 'NA'
132341   );
132342 
132343 
132344    --
132345    --
132346    END IF;
132347 
132348        --
132349        -- Update the line information that should be overwritten
132350        --
132351        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
132352                                          p_header_num   => 1);
132353        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
132354 
132355        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
132356 
132357        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
132358           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
132359        END IF;
132360 
132361       --
132362       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
132363       --
132364       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
132365           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
132366       ELSE
132367           ---------------------------------------------------------------------------------------------------
132368           -- 4262811a Switch Sign
132369           ---------------------------------------------------------------------------------------------------
132370           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
132371           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
132372                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
132373           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
132374                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
132375           -- 5132302
132376           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
132377                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
132378 
132379       END IF;
132380 
132381       -- 4955764
132382       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
132383       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
132384 
132385 
132386       XLA_AE_LINES_PKG.ValidateCurrentLine;
132387       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
132388 
132389       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
132390                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
132391                ,p_balance_type_code => l_balance_type_code);
132392 
132393    END IF;
132394 
132395    -----------------------------------------------------------------------------------------
132396    -- 4262811 Multiperiod Accounting
132397    -----------------------------------------------------------------------------------------
132398      -- No MPA option is assigned.
132399 
132400 
132401 END IF;
132402 END IF;
132403 --
132404 
132405 --
132406 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
132407    trace
132408       (p_msg      => 'END of AcctLineType_239'
132409       ,p_level    => C_LEVEL_PROCEDURE
132410       ,p_module   => l_log_module);
132411 END IF;
132412 --
132413 EXCEPTION
132414   WHEN xla_exceptions_pkg.application_exception THEN
132415       RAISE;
132416   WHEN OTHERS THEN
132417        xla_exceptions_pkg.raise_message
132418            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_239');
132419 END AcctLineType_239;
132420 --
132421 
132422 ---------------------------------------
132423 --
132424 -- PRIVATE FUNCTION
132425 --         AcctLineType_240
132426 --
132427 ---------------------------------------
132428 PROCEDURE AcctLineType_240 (
132429   p_application_id        IN NUMBER
132430  ,p_event_id              IN NUMBER
132431  ,p_calculate_acctd_flag  IN VARCHAR2
132432  ,p_calculate_g_l_flag    IN VARCHAR2
132433  ,p_actual_flag           IN OUT VARCHAR2
132434  ,p_balance_type_code     OUT VARCHAR2
132435  ,p_gain_or_loss_ref      OUT VARCHAR2
132436  
132437 --Cost Management Default Account
132438  , p_source_4            IN NUMBER
132439 --Receiving Accounting Line Type
132440  , p_source_5            IN VARCHAR2
132441 --DISTRIBUTION_IDENTIFIER
132442  , p_source_11            IN NUMBER
132443 --Distribution Type
132444  , p_source_12            IN VARCHAR2
132445  , p_source_12_meaning    IN VARCHAR2
132446 --Entered Currency Code
132447  , p_source_15            IN VARCHAR2
132448 --Entered Amount
132449  , p_source_18            IN NUMBER
132450 --Currency Conversion Date
132451  , p_source_19            IN DATE
132452 --Currency Conversion Rate
132453  , p_source_20            IN NUMBER
132454 --Accounted Amount
132455  , p_source_22            IN NUMBER
132456 )
132457 IS
132458 
132459 l_component_type              VARCHAR2(80);
132460 l_component_code              VARCHAR2(30);
132461 l_component_type_code         VARCHAR2(1);
132462 l_component_appl_id           INTEGER;
132463 l_amb_context_code            VARCHAR2(30);
132464 l_entity_code                 VARCHAR2(30);
132465 l_event_class_code            VARCHAR2(30);
132466 l_ae_header_id                NUMBER;
132467 l_event_type_code             VARCHAR2(30);
132468 l_line_definition_code        VARCHAR2(30);
132469 l_line_definition_owner_code  VARCHAR2(1);
132470 --
132471 -- adr variables
132472 l_segment                     VARCHAR2(30);
132473 l_ccid                        NUMBER;
132474 l_adr_transaction_coa_id      NUMBER;
132475 l_adr_accounting_coa_id       NUMBER;
132476 l_adr_flexfield_segment_code  VARCHAR2(30);
132477 l_adr_flex_value_set_id       NUMBER;
132478 l_adr_value_type_code         VARCHAR2(30);
132479 l_adr_value_combination_id    NUMBER;
132480 l_adr_value_segment_code      VARCHAR2(30);
132481 
132482 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
132483 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
132484 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
132485 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
132486 
132487 -- 4262811 Variables ------------------------------------------------------------------------------------------
132488 l_entered_amt_idx             NUMBER;
132489 l_accted_amt_idx              NUMBER;
132490 l_acc_rev_flag                VARCHAR2(1);
132491 l_accrual_line_num            NUMBER;
132492 l_tmp_amt                     NUMBER;
132493 l_acc_rev_natural_side_code   VARCHAR2(1);
132494 
132495 l_num_entries                 NUMBER;
132496 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
132497 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
132498 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
132499 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
132500 l_recog_line_1                NUMBER;
132501 l_recog_line_2                NUMBER;
132502 
132503 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
132504 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
132505 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
132506 
132507 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
132508 
132509 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
132510 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
132511 
132512 ---------------------------------------------------------------------------------------------------------------
132513 
132514 
132515 --
132516 -- bulk performance
132517 --
132518 l_balance_type_code           VARCHAR2(1);
132519 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
132520 l_log_module                  VARCHAR2(240);
132521 
132522 --
132523 -- Upgrade strategy
132524 --
132525 l_actual_upg_option           VARCHAR2(1);
132526 l_enc_upg_option           VARCHAR2(1);
132527 
132528 --
132529 BEGIN
132530 --
132531 IF g_log_enabled THEN
132532       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_240';
132533 END IF;
132534 --
132535 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
132536 
132537       trace
132538          (p_msg      => 'BEGIN of AcctLineType_240'
132539          ,p_level    => C_LEVEL_PROCEDURE
132540          ,p_module   => l_log_module);
132541 
132542 END IF;
132543 --
132544 l_component_type             := 'AMB_JLT';
132545 l_component_code             := 'RECEIVING_INSPECTION';
132546 l_component_type_code        := 'S';
132547 l_component_appl_id          :=  707;
132548 l_amb_context_code           := 'DEFAULT';
132549 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
132550 l_event_class_code           := 'RETR_PRICE_ADJ_DEL';
132551 l_event_type_code            := 'RETR_PRICE_ADJ_DEL_ALL';
132552 l_line_definition_owner_code := 'S';
132553 l_line_definition_code       := 'RETR_PRICE_ADJ_DEL';
132554 --
132555 l_balance_type_code          := 'A';
132556 l_segment                     := NULL;
132557 l_ccid                        := NULL;
132558 l_adr_transaction_coa_id      := NULL;
132559 l_adr_accounting_coa_id       := NULL;
132560 l_adr_flexfield_segment_code  := NULL;
132561 l_adr_flex_value_set_id       := NULL;
132562 l_adr_value_type_code         := NULL;
132563 l_adr_value_combination_id    := NULL;
132564 l_adr_value_segment_code      := NULL;
132565 
132566 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
132567 l_bflow_class_code           := '';    -- 4219869 Business Flow
132568 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
132569 l_budgetary_control_flag     := 'N';
132570 
132571 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
132572 l_bflow_applied_to_amt       := NULL; -- 5132302
132573 l_entered_amt_idx            := NULL;          -- 4262811
132574 l_accted_amt_idx             := NULL;          -- 4262811
132575 l_acc_rev_flag               := NULL;          -- 4262811
132576 l_accrual_line_num           := NULL;          -- 4262811
132577 l_tmp_amt                    := NULL;          -- 4262811
132578 --
132579  
132580 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
132581     l_balance_type_code <> 'B' THEN
132582 IF NVL(p_source_5,'
132583 ') =  'Receiving Inspection'
132584  THEN 
132585 
132586    --
132587    XLA_AE_LINES_PKG.SetNewLine;
132588 
132589    p_balance_type_code          := l_balance_type_code;
132590    -- set the flag so later we will know whether the gain loss line needs to be created
132591    
132592    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
132593      p_actual_flag :='A';
132594    END IF;
132595 
132596    --
132597    -- bulk performance
132598    --
132599    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
132600                                       p_header_num   => 0); -- 4262811
132601    --
132602    -- set accounting line options
132603    --
132604    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
132605            p_natural_side_code          => 'D'
132606          , p_gain_or_loss_flag          => 'N'
132607          , p_gl_transfer_mode_code      => 'S'
132608          , p_acct_entry_type_code       => 'A'
132609          , p_switch_side_flag           => 'Y'
132610          , p_merge_duplicate_code       => 'N'
132611          );
132612    --
132613    l_acc_rev_natural_side_code := 'C';  -- 4262811
132614    -- 
132615    --
132616    -- set accounting line type info
132617    --
132618    xla_ae_lines_pkg.SetAcctLineType
132619       (p_component_type             => l_component_type
132620       ,p_event_type_code            => l_event_type_code
132621       ,p_line_definition_owner_code => l_line_definition_owner_code
132622       ,p_line_definition_code       => l_line_definition_code
132623       ,p_accounting_line_code       => l_component_code
132624       ,p_accounting_line_type_code  => l_component_type_code
132625       ,p_accounting_line_appl_id    => l_component_appl_id
132626       ,p_amb_context_code           => l_amb_context_code
132627       ,p_entity_code                => l_entity_code
132628       ,p_event_class_code           => l_event_class_code);
132629    --
132630    -- set accounting class
132631    --
132632    xla_ae_lines_pkg.SetAcctClass(
132633            p_accounting_class_code  => 'RECEIVING_INSPECTION'
132634          , p_ae_header_id           => l_ae_header_id
132635          );
132636 
132637    --
132638    -- set rounding class
132639    --
132640    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
132641                       'RECEIVING_INSPECTION';
132642 
132643    --
132644    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
132645    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
132646    --
132647    -- bulk performance
132648    --
132649    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
132650 
132651    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
132652       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
132653 
132654    -- 4955764
132655    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
132656       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
132657 
132658    -- 4458381 Public Sector Enh
132659    
132660    --
132661    -- set accounting attributes for the line type
132662    --
132663    l_entered_amt_idx := 3;
132664    l_accted_amt_idx  := 8;
132665    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
132666    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
132667    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
132668    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
132669    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
132670    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
132671    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
132672    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
132673    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
132674    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
132675    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
132676    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
132677    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
132678    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
132679    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_20);
132680    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
132681    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
132682 
132683    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
132684    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
132685 
132686    ---------------------------------------------------------------------------------------------------------------
132687    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
132688    ---------------------------------------------------------------------------------------------------------------
132689    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
132690 
132691    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
132692    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
132693 
132694    IF xla_accounting_cache_pkg.GetValueChar
132695          (p_source_code         => 'LEDGER_CATEGORY_CODE'
132696          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
132697    AND l_bflow_method_code = 'PRIOR_ENTRY'
132698 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
132699    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
132700          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
132701        )
132702    THEN
132703          xla_ae_lines_pkg.BflowUpgEntry
132704            (p_business_method_code    => l_bflow_method_code
132705            ,p_business_class_code     => l_bflow_class_code
132706            ,p_balance_type            => l_balance_type_code);
132707    ELSE
132708       NULL;
132709 -- No business flow processing for business flow method of NONE.
132710    END IF;
132711 
132712    --
132713    -- call analytical criteria
132714    --
132715    
132716    --
132717    -- call description
132718    --
132719    -- No description or it is inherited.
132720    --
132721    -- call ADRs
132722    -- Bug 4922099
132723    --
132724    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
132725         (NVL(l_actual_upg_option, 'N') = 'O') OR
132726         (NVL(l_enc_upg_option, 'N') = 'O')
132727       )
132728    THEN
132729    NULL;
132730    --
132731    --
132732    
132733   l_ccid := AcctDerRule_4(
132734            p_application_id           => p_application_id
132735          , p_ae_header_id             => l_ae_header_id 
132736 , p_source_4 => p_source_4
132737          , x_transaction_coa_id       => l_adr_transaction_coa_id
132738          , x_accounting_coa_id        => l_adr_accounting_coa_id
132739          , x_value_type_code          => l_adr_value_type_code
132740          , p_side                     => 'NA'
132741    );
132742 
132743    xla_ae_lines_pkg.set_ccid(
132744     p_code_combination_id          => l_ccid
132745   , p_value_type_code              => l_adr_value_type_code
132746   , p_transaction_coa_id           => l_adr_transaction_coa_id
132747   , p_accounting_coa_id            => l_adr_accounting_coa_id
132748   , p_adr_code                     => 'CST_DEFAULT'
132749   , p_adr_type_code                => 'S'
132750   , p_component_type               => l_component_type
132751   , p_component_code               => l_component_code
132752   , p_component_type_code          => l_component_type_code
132753   , p_component_appl_id            => l_component_appl_id
132754   , p_amb_context_code             => l_amb_context_code
132755   , p_side                         => 'NA'
132756   );
132757 
132758 
132759    --
132760    --
132761    END IF;
132762    --
132763    -- Bug 4922099
132764    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
132765           (NVL(l_enc_upg_option, 'N') = 'O')
132766         ) AND
132767         (l_bflow_method_code = 'PRIOR_ENTRY')
132768       )
132769    THEN
132770       IF
132771       --
132772       1 = 2
132773       --
132774       THEN
132775       xla_accounting_err_pkg.build_message
132776                                     (p_appli_s_name            => 'XLA'
132777                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
132778                                     ,p_token_1                 => 'LINE_NUMBER'
132779                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
132780                                     ,p_token_2                 => 'LINE_TYPE_NAME'
132781                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
132782                                                                              l_component_type
132783                                                                             ,l_component_code
132784                                                                             ,l_component_type_code
132785                                                                             ,l_component_appl_id
132786                                                                             ,l_amb_context_code
132787                                                                             ,l_entity_code
132788                                                                             ,l_event_class_code
132789                                                                            )
132790                                     ,p_token_3                 => 'OWNER'
132791                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
132792                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
132793                                                                           ,p_lookup_code    => l_component_type_code
132794                                                                          )
132795                                     ,p_token_4                 => 'PRODUCT_NAME'
132796                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
132797                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
132798                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
132799                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
132800                                     ,p_ae_header_id            =>  NULL
132801                                        );
132802 
132803         IF (C_LEVEL_ERROR>= g_log_level) THEN
132804                  trace
132805                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
132806                       ,p_level    => C_LEVEL_ERROR
132807                       ,p_module   => l_log_module);
132808         END IF;
132809       END IF;
132810    END IF;
132811    --
132812    --
132813    ------------------------------------------------------------------------------------------------
132814    -- 4219869 Business Flow
132815    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
132816    -- Prior Entry.  Currently, the following code is always generated.
132817    ------------------------------------------------------------------------------------------------
132818    XLA_AE_LINES_PKG.ValidateCurrentLine;
132819 
132820    ------------------------------------------------------------------------------------
132821    -- 4219869 Business Flow
132822    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
132823    ------------------------------------------------------------------------------------
132824    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
132825 
132826    ----------------------------------------------------------------------------------
132827    -- 4219869 Business Flow
132828    -- Update journal entry status -- Need to generate this within IF <condition>
132829    ----------------------------------------------------------------------------------
132830    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
132831          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
132832          ,p_balance_type_code => l_balance_type_code
132833          );
132834 
132835    -------------------------------------------------------------------------------------------
132836    -- 4262811 - Generate the Accrual Reversal lines
132837    -------------------------------------------------------------------------------------------
132838    BEGIN
132839       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
132840                               (g_array_event(p_event_id).array_value_num('header_index'));
132841       IF l_acc_rev_flag IS NULL THEN
132842          l_acc_rev_flag := 'N';
132843       END IF;
132844    EXCEPTION
132845       WHEN OTHERS THEN
132846          l_acc_rev_flag := 'N';
132847    END;
132848    --
132849    IF (l_acc_rev_flag = 'Y') THEN
132850 
132851        -- 4645092  ------------------------------------------------------------------------------
132852        -- To allow MPA report to determine if it should generate report process
132853        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
132854        ------------------------------------------------------------------------------------------
132855 
132856        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
132857        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
132858    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
132859    -- call ADRs
132860    -- Bug 4922099
132861    --
132862    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
132863         (NVL(l_actual_upg_option, 'N') = 'O') OR
132864         (NVL(l_enc_upg_option, 'N') = 'O')
132865       )
132866    THEN
132867    NULL;
132868    --
132869    --
132870    
132871   l_ccid := AcctDerRule_4(
132872            p_application_id           => p_application_id
132873          , p_ae_header_id             => l_ae_header_id 
132874 , p_source_4 => p_source_4
132875          , x_transaction_coa_id       => l_adr_transaction_coa_id
132876          , x_accounting_coa_id        => l_adr_accounting_coa_id
132877          , x_value_type_code          => l_adr_value_type_code
132878          , p_side                     => 'NA'
132879    );
132880 
132881    xla_ae_lines_pkg.set_ccid(
132882     p_code_combination_id          => l_ccid
132883   , p_value_type_code              => l_adr_value_type_code
132884   , p_transaction_coa_id           => l_adr_transaction_coa_id
132885   , p_accounting_coa_id            => l_adr_accounting_coa_id
132886   , p_adr_code                     => 'CST_DEFAULT'
132887   , p_adr_type_code                => 'S'
132888   , p_component_type               => l_component_type
132889   , p_component_code               => l_component_code
132890   , p_component_type_code          => l_component_type_code
132891   , p_component_appl_id            => l_component_appl_id
132892   , p_amb_context_code             => l_amb_context_code
132893   , p_side                         => 'NA'
132894   );
132895 
132896 
132897    --
132898    --
132899    END IF;
132900 
132901        --
132902        -- Update the line information that should be overwritten
132903        --
132904        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
132905                                          p_header_num   => 1);
132906        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
132907 
132908        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
132909 
132910        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
132911           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
132912        END IF;
132913 
132914       --
132915       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
132916       --
132917       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
132918           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
132919       ELSE
132920           ---------------------------------------------------------------------------------------------------
132921           -- 4262811a Switch Sign
132922           ---------------------------------------------------------------------------------------------------
132923           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
132924           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
132925                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
132926           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
132927                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
132928           -- 5132302
132929           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
132930                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
132931 
132932       END IF;
132933 
132934       -- 4955764
132935       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
132936       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
132937 
132938 
132939       XLA_AE_LINES_PKG.ValidateCurrentLine;
132940       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
132941 
132942       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
132943                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
132944                ,p_balance_type_code => l_balance_type_code);
132945 
132946    END IF;
132947 
132948    -----------------------------------------------------------------------------------------
132949    -- 4262811 Multiperiod Accounting
132950    -----------------------------------------------------------------------------------------
132951      -- No MPA option is assigned.
132952 
132953 
132954 END IF;
132955 END IF;
132956 --
132957 
132958 --
132959 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
132960    trace
132961       (p_msg      => 'END of AcctLineType_240'
132962       ,p_level    => C_LEVEL_PROCEDURE
132963       ,p_module   => l_log_module);
132964 END IF;
132965 --
132966 EXCEPTION
132967   WHEN xla_exceptions_pkg.application_exception THEN
132968       RAISE;
132969   WHEN OTHERS THEN
132970        xla_exceptions_pkg.raise_message
132971            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_240');
132972 END AcctLineType_240;
132973 --
132974 
132975 ---------------------------------------
132976 --
132977 -- PRIVATE FUNCTION
132978 --         AcctLineType_241
132979 --
132980 ---------------------------------------
132981 PROCEDURE AcctLineType_241 (
132982   p_application_id        IN NUMBER
132983  ,p_event_id              IN NUMBER
132984  ,p_calculate_acctd_flag  IN VARCHAR2
132985  ,p_calculate_g_l_flag    IN VARCHAR2
132986  ,p_actual_flag           IN OUT VARCHAR2
132987  ,p_balance_type_code     OUT VARCHAR2
132988  ,p_gain_or_loss_ref      OUT VARCHAR2
132989  
132990 --Cost Management Default Account
132991  , p_source_4            IN NUMBER
132992 --Receiving Accounting Line Type
132993  , p_source_5            IN VARCHAR2
132994 --Applied to Application ID
132995  , p_source_6            IN NUMBER
132996 --Applied to Distribution Link Type
132997  , p_source_7            IN VARCHAR2
132998 --Applied to Entity Code
132999  , p_source_8            IN VARCHAR2
133000 --PO_DISTRIBUTION_ID
133001  , p_source_9            IN NUMBER
133002 --Applied To Purchase Document Identifier
133003  , p_source_10            IN NUMBER
133004 --DISTRIBUTION_IDENTIFIER
133005  , p_source_11            IN NUMBER
133006 --Distribution Type
133007  , p_source_12            IN VARCHAR2
133008  , p_source_12_meaning    IN VARCHAR2
133009 --PO Budget Account
133010  , p_source_13            IN NUMBER
133011 --Encumbrance Reversal Amount Entered
133012  , p_source_14            IN NUMBER
133013 --Entered Currency Code
133014  , p_source_15            IN VARCHAR2
133015 --Transaction Encumbrance Reversal Amount
133016  , p_source_16            IN NUMBER
133017 --Entered Amount
133018  , p_source_18            IN NUMBER
133019 --Currency Conversion Date
133020  , p_source_19            IN DATE
133021 --Currency Conversion Rate
133022  , p_source_20            IN NUMBER
133023 --Currency Conversion Type
133024  , p_source_21            IN VARCHAR2
133025 --Accounted Amount
133026  , p_source_22            IN NUMBER
133027 --Purchasing Encumbrance Type Identifier
133028  , p_source_23            IN NUMBER
133029 --Costing Encumbrance Upgrade Option
133030  , p_source_27            IN VARCHAR2
133031 )
133032 IS
133033 
133034 l_component_type              VARCHAR2(80);
133035 l_component_code              VARCHAR2(30);
133036 l_component_type_code         VARCHAR2(1);
133037 l_component_appl_id           INTEGER;
133038 l_amb_context_code            VARCHAR2(30);
133039 l_entity_code                 VARCHAR2(30);
133040 l_event_class_code            VARCHAR2(30);
133041 l_ae_header_id                NUMBER;
133042 l_event_type_code             VARCHAR2(30);
133043 l_line_definition_code        VARCHAR2(30);
133044 l_line_definition_owner_code  VARCHAR2(1);
133045 --
133046 -- adr variables
133047 l_segment                     VARCHAR2(30);
133048 l_ccid                        NUMBER;
133049 l_adr_transaction_coa_id      NUMBER;
133050 l_adr_accounting_coa_id       NUMBER;
133051 l_adr_flexfield_segment_code  VARCHAR2(30);
133052 l_adr_flex_value_set_id       NUMBER;
133053 l_adr_value_type_code         VARCHAR2(30);
133054 l_adr_value_combination_id    NUMBER;
133055 l_adr_value_segment_code      VARCHAR2(30);
133056 
133057 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
133058 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
133059 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
133060 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
133061 
133062 -- 4262811 Variables ------------------------------------------------------------------------------------------
133063 l_entered_amt_idx             NUMBER;
133064 l_accted_amt_idx              NUMBER;
133065 l_acc_rev_flag                VARCHAR2(1);
133066 l_accrual_line_num            NUMBER;
133067 l_tmp_amt                     NUMBER;
133068 l_acc_rev_natural_side_code   VARCHAR2(1);
133069 
133070 l_num_entries                 NUMBER;
133071 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
133072 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
133073 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
133074 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
133075 l_recog_line_1                NUMBER;
133076 l_recog_line_2                NUMBER;
133077 
133078 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
133079 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
133080 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
133081 
133082 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
133083 
133084 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
133085 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
133086 
133087 ---------------------------------------------------------------------------------------------------------------
133088 
133089 
133090 --
133091 -- bulk performance
133092 --
133093 l_balance_type_code           VARCHAR2(1);
133094 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
133095 l_log_module                  VARCHAR2(240);
133096 
133097 --
133098 -- Upgrade strategy
133099 --
133100 l_actual_upg_option           VARCHAR2(1);
133101 l_enc_upg_option           VARCHAR2(1);
133102 
133103 --
133104 BEGIN
133105 --
133106 IF g_log_enabled THEN
133107       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_241';
133108 END IF;
133109 --
133110 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
133111 
133112       trace
133113          (p_msg      => 'BEGIN of AcctLineType_241'
133114          ,p_level    => C_LEVEL_PROCEDURE
133115          ,p_module   => l_log_module);
133116 
133117 END IF;
133118 --
133119 l_component_type             := 'AMB_JLT';
133120 l_component_code             := 'RECEIVING_INSPECTION';
133121 l_component_type_code        := 'S';
133122 l_component_appl_id          :=  707;
133123 l_amb_context_code           := 'DEFAULT';
133124 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
133125 l_event_class_code           := 'DELIVER_EXPENSE';
133126 l_event_type_code            := 'DELIVER_EXPENSE_ALL';
133127 l_line_definition_owner_code := 'S';
133128 l_line_definition_code       := 'DELIVER_EXPENSE';
133129 --
133130 l_balance_type_code          := 'A';
133131 l_segment                     := NULL;
133132 l_ccid                        := NULL;
133133 l_adr_transaction_coa_id      := NULL;
133134 l_adr_accounting_coa_id       := NULL;
133135 l_adr_flexfield_segment_code  := NULL;
133136 l_adr_flex_value_set_id       := NULL;
133137 l_adr_value_type_code         := NULL;
133138 l_adr_value_combination_id    := NULL;
133139 l_adr_value_segment_code      := NULL;
133140 
133141 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
133142 l_bflow_class_code           := '';    -- 4219869 Business Flow
133143 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
133144 l_budgetary_control_flag     := 'N';
133145 
133146 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
133147 l_bflow_applied_to_amt       := NULL; -- 5132302
133148 l_entered_amt_idx            := NULL;          -- 4262811
133149 l_accted_amt_idx             := NULL;          -- 4262811
133150 l_acc_rev_flag               := NULL;          -- 4262811
133151 l_accrual_line_num           := NULL;          -- 4262811
133152 l_tmp_amt                    := NULL;          -- 4262811
133153 --
133154  
133155 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
133156     l_balance_type_code <> 'B' THEN
133157 IF NVL(p_source_5,'
133158 ') =  'Receiving Inspection'
133159  THEN 
133160 
133161    --
133162    XLA_AE_LINES_PKG.SetNewLine;
133163 
133164    p_balance_type_code          := l_balance_type_code;
133165    -- set the flag so later we will know whether the gain loss line needs to be created
133166    
133167    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
133168      p_actual_flag :='A';
133169    END IF;
133170 
133171    --
133172    -- bulk performance
133173    --
133174    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
133175                                       p_header_num   => 0); -- 4262811
133176    --
133177    -- set accounting line options
133178    --
133179    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
133180            p_natural_side_code          => 'D'
133181          , p_gain_or_loss_flag          => 'N'
133182          , p_gl_transfer_mode_code      => 'S'
133183          , p_acct_entry_type_code       => 'A'
133184          , p_switch_side_flag           => 'Y'
133185          , p_merge_duplicate_code       => 'N'
133186          );
133187    --
133188    l_acc_rev_natural_side_code := 'C';  -- 4262811
133189    -- 
133190    --
133191    -- set accounting line type info
133192    --
133193    xla_ae_lines_pkg.SetAcctLineType
133194       (p_component_type             => l_component_type
133195       ,p_event_type_code            => l_event_type_code
133196       ,p_line_definition_owner_code => l_line_definition_owner_code
133197       ,p_line_definition_code       => l_line_definition_code
133198       ,p_accounting_line_code       => l_component_code
133199       ,p_accounting_line_type_code  => l_component_type_code
133200       ,p_accounting_line_appl_id    => l_component_appl_id
133201       ,p_amb_context_code           => l_amb_context_code
133202       ,p_entity_code                => l_entity_code
133203       ,p_event_class_code           => l_event_class_code);
133204    --
133205    -- set accounting class
133206    --
133207    xla_ae_lines_pkg.SetAcctClass(
133208            p_accounting_class_code  => 'RECEIVING_INSPECTION'
133209          , p_ae_header_id           => l_ae_header_id
133210          );
133211 
133212    --
133213    -- set rounding class
133214    --
133215    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
133216                       'RECEIVING_INSPECTION';
133217 
133218    --
133219    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
133220    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
133221    --
133222    -- bulk performance
133223    --
133224    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
133225 
133226    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
133227       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
133228 
133229    -- 4955764
133230    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
133231       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
133232 
133233    -- 4458381 Public Sector Enh
133234    
133235    --
133236    -- set accounting attributes for the line type
133237    --
133238    l_entered_amt_idx := 17;
133239    l_accted_amt_idx  := 22;
133240    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
133241    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
133242    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
133243    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
133244    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
133245    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
133246    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
133247    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
133248    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_9);
133249    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
133250    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_10);
133251    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
133252    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
133253    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
133254    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
133255    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
133256    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_13);
133257    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
133258    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
133259    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
133260    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
133261    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
133262    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
133263    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
133264    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_13);
133265    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
133266    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
133267    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
133268    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
133269    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
133270    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
133271    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
133272    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
133273    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
133274    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
133275    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
133276    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
133277    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
133278    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
133279    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
133280    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
133281    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
133282    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
133283    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
133284    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
133285    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
133286    l_rec_acct_attrs.array_num_value(23)  := p_source_23;
133287    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
133288    l_rec_acct_attrs.array_num_value(24)  := p_source_23;
133289 
133290    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
133291    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
133292 
133293    ---------------------------------------------------------------------------------------------------------------
133294    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
133295    ---------------------------------------------------------------------------------------------------------------
133296    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
133297 
133298    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
133299    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
133300 
133301    IF xla_accounting_cache_pkg.GetValueChar
133302          (p_source_code         => 'LEDGER_CATEGORY_CODE'
133303          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
133304    AND l_bflow_method_code = 'PRIOR_ENTRY'
133305 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
133306    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
133307          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
133308        )
133309    THEN
133310          xla_ae_lines_pkg.BflowUpgEntry
133311            (p_business_method_code    => l_bflow_method_code
133312            ,p_business_class_code     => l_bflow_class_code
133313            ,p_balance_type            => l_balance_type_code);
133314    ELSE
133315       NULL;
133316 -- No business flow processing for business flow method of NONE.
133317    END IF;
133318 
133319    --
133320    -- call analytical criteria
133321    --
133322    
133323    --
133324    -- call description
133325    --
133326    -- No description or it is inherited.
133327    --
133328    -- call ADRs
133329    -- Bug 4922099
133330    --
133331    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
133332         (NVL(l_actual_upg_option, 'N') = 'O') OR
133333         (NVL(l_enc_upg_option, 'N') = 'O')
133334       )
133335    THEN
133336    NULL;
133337    --
133338    --
133339    
133340   l_ccid := AcctDerRule_4(
133341            p_application_id           => p_application_id
133342          , p_ae_header_id             => l_ae_header_id 
133343 , p_source_4 => p_source_4
133344          , x_transaction_coa_id       => l_adr_transaction_coa_id
133345          , x_accounting_coa_id        => l_adr_accounting_coa_id
133346          , x_value_type_code          => l_adr_value_type_code
133347          , p_side                     => 'NA'
133348    );
133349 
133350    xla_ae_lines_pkg.set_ccid(
133351     p_code_combination_id          => l_ccid
133352   , p_value_type_code              => l_adr_value_type_code
133353   , p_transaction_coa_id           => l_adr_transaction_coa_id
133354   , p_accounting_coa_id            => l_adr_accounting_coa_id
133355   , p_adr_code                     => 'CST_DEFAULT'
133356   , p_adr_type_code                => 'S'
133357   , p_component_type               => l_component_type
133358   , p_component_code               => l_component_code
133359   , p_component_type_code          => l_component_type_code
133360   , p_component_appl_id            => l_component_appl_id
133361   , p_amb_context_code             => l_amb_context_code
133362   , p_side                         => 'NA'
133363   );
133364 
133365 
133366    --
133367    --
133368    END IF;
133369    --
133370    -- Bug 4922099
133371    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
133372           (NVL(l_enc_upg_option, 'N') = 'O')
133373         ) AND
133374         (l_bflow_method_code = 'PRIOR_ENTRY')
133375       )
133376    THEN
133377       IF
133378       --
133379       1 = 2
133380       --
133381       THEN
133382       xla_accounting_err_pkg.build_message
133383                                     (p_appli_s_name            => 'XLA'
133384                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
133385                                     ,p_token_1                 => 'LINE_NUMBER'
133386                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
133387                                     ,p_token_2                 => 'LINE_TYPE_NAME'
133388                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
133389                                                                              l_component_type
133390                                                                             ,l_component_code
133391                                                                             ,l_component_type_code
133392                                                                             ,l_component_appl_id
133393                                                                             ,l_amb_context_code
133394                                                                             ,l_entity_code
133395                                                                             ,l_event_class_code
133396                                                                            )
133397                                     ,p_token_3                 => 'OWNER'
133398                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
133399                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
133400                                                                           ,p_lookup_code    => l_component_type_code
133401                                                                          )
133402                                     ,p_token_4                 => 'PRODUCT_NAME'
133403                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
133404                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
133405                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
133406                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
133407                                     ,p_ae_header_id            =>  NULL
133408                                        );
133409 
133410         IF (C_LEVEL_ERROR>= g_log_level) THEN
133411                  trace
133412                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
133413                       ,p_level    => C_LEVEL_ERROR
133414                       ,p_module   => l_log_module);
133415         END IF;
133416       END IF;
133417    END IF;
133418    --
133419    --
133420    ------------------------------------------------------------------------------------------------
133421    -- 4219869 Business Flow
133422    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
133423    -- Prior Entry.  Currently, the following code is always generated.
133424    ------------------------------------------------------------------------------------------------
133425    XLA_AE_LINES_PKG.ValidateCurrentLine;
133426 
133427    ------------------------------------------------------------------------------------
133428    -- 4219869 Business Flow
133429    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
133430    ------------------------------------------------------------------------------------
133431    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
133432 
133433    ----------------------------------------------------------------------------------
133434    -- 4219869 Business Flow
133435    -- Update journal entry status -- Need to generate this within IF <condition>
133436    ----------------------------------------------------------------------------------
133437    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
133438          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
133439          ,p_balance_type_code => l_balance_type_code
133440          );
133441 
133442    -------------------------------------------------------------------------------------------
133443    -- 4262811 - Generate the Accrual Reversal lines
133444    -------------------------------------------------------------------------------------------
133445    BEGIN
133446       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
133447                               (g_array_event(p_event_id).array_value_num('header_index'));
133448       IF l_acc_rev_flag IS NULL THEN
133449          l_acc_rev_flag := 'N';
133450       END IF;
133451    EXCEPTION
133452       WHEN OTHERS THEN
133453          l_acc_rev_flag := 'N';
133454    END;
133455    --
133456    IF (l_acc_rev_flag = 'Y') THEN
133457 
133458        -- 4645092  ------------------------------------------------------------------------------
133459        -- To allow MPA report to determine if it should generate report process
133460        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
133461        ------------------------------------------------------------------------------------------
133462 
133463        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
133464        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
133465    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
133466    -- call ADRs
133467    -- Bug 4922099
133468    --
133469    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
133470         (NVL(l_actual_upg_option, 'N') = 'O') OR
133471         (NVL(l_enc_upg_option, 'N') = 'O')
133472       )
133473    THEN
133474    NULL;
133475    --
133476    --
133477    
133478   l_ccid := AcctDerRule_4(
133479            p_application_id           => p_application_id
133480          , p_ae_header_id             => l_ae_header_id 
133481 , p_source_4 => p_source_4
133482          , x_transaction_coa_id       => l_adr_transaction_coa_id
133483          , x_accounting_coa_id        => l_adr_accounting_coa_id
133484          , x_value_type_code          => l_adr_value_type_code
133485          , p_side                     => 'NA'
133486    );
133487 
133488    xla_ae_lines_pkg.set_ccid(
133489     p_code_combination_id          => l_ccid
133490   , p_value_type_code              => l_adr_value_type_code
133491   , p_transaction_coa_id           => l_adr_transaction_coa_id
133492   , p_accounting_coa_id            => l_adr_accounting_coa_id
133493   , p_adr_code                     => 'CST_DEFAULT'
133494   , p_adr_type_code                => 'S'
133495   , p_component_type               => l_component_type
133496   , p_component_code               => l_component_code
133497   , p_component_type_code          => l_component_type_code
133498   , p_component_appl_id            => l_component_appl_id
133499   , p_amb_context_code             => l_amb_context_code
133500   , p_side                         => 'NA'
133501   );
133502 
133503 
133504    --
133505    --
133506    END IF;
133507 
133508        --
133509        -- Update the line information that should be overwritten
133510        --
133511        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
133512                                          p_header_num   => 1);
133513        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
133514 
133515        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
133516 
133517        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
133518           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
133519        END IF;
133520 
133521       --
133522       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
133523       --
133524       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
133525           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
133526       ELSE
133527           ---------------------------------------------------------------------------------------------------
133528           -- 4262811a Switch Sign
133529           ---------------------------------------------------------------------------------------------------
133530           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
133531           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
133532                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
133533           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
133534                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
133535           -- 5132302
133536           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
133537                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
133538 
133539       END IF;
133540 
133541       -- 4955764
133542       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
133543       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
133544 
133545 
133546       XLA_AE_LINES_PKG.ValidateCurrentLine;
133547       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
133548 
133549       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
133550                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
133551                ,p_balance_type_code => l_balance_type_code);
133552 
133553    END IF;
133554 
133555    -----------------------------------------------------------------------------------------
133556    -- 4262811 Multiperiod Accounting
133557    -----------------------------------------------------------------------------------------
133558      -- No MPA option is assigned.
133559 
133560 
133561 END IF;
133562 END IF;
133563 --
133564 
133565 --
133566 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
133567    trace
133568       (p_msg      => 'END of AcctLineType_241'
133569       ,p_level    => C_LEVEL_PROCEDURE
133570       ,p_module   => l_log_module);
133571 END IF;
133572 --
133573 EXCEPTION
133574   WHEN xla_exceptions_pkg.application_exception THEN
133575       RAISE;
133576   WHEN OTHERS THEN
133577        xla_exceptions_pkg.raise_message
133578            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_241');
133579 END AcctLineType_241;
133580 --
133581 
133582 ---------------------------------------
133583 --
133584 -- PRIVATE FUNCTION
133585 --         AcctLineType_242
133586 --
133587 ---------------------------------------
133588 PROCEDURE AcctLineType_242 (
133589   p_application_id        IN NUMBER
133590  ,p_event_id              IN NUMBER
133591  ,p_calculate_acctd_flag  IN VARCHAR2
133592  ,p_calculate_g_l_flag    IN VARCHAR2
133593  ,p_actual_flag           IN OUT VARCHAR2
133594  ,p_balance_type_code     OUT VARCHAR2
133595  ,p_gain_or_loss_ref      OUT VARCHAR2
133596  
133597 --Cost Management Default Account
133598  , p_source_4            IN NUMBER
133599 --DISTRIBUTION_IDENTIFIER
133600  , p_source_11            IN NUMBER
133601 --Distribution Type
133602  , p_source_12            IN VARCHAR2
133603  , p_source_12_meaning    IN VARCHAR2
133604 --Entered Currency Code
133605  , p_source_15            IN VARCHAR2
133606 --Entered Amount
133607  , p_source_18            IN NUMBER
133608 --Currency Conversion Date
133609  , p_source_19            IN DATE
133610 --Currency Conversion Rate
133611  , p_source_20            IN NUMBER
133612 --Accounted Amount
133613  , p_source_22            IN NUMBER
133614 --Accounting Line Type
133615  , p_source_24            IN NUMBER
133616 )
133617 IS
133618 
133619 l_component_type              VARCHAR2(80);
133620 l_component_code              VARCHAR2(30);
133621 l_component_type_code         VARCHAR2(1);
133622 l_component_appl_id           INTEGER;
133623 l_amb_context_code            VARCHAR2(30);
133624 l_entity_code                 VARCHAR2(30);
133625 l_event_class_code            VARCHAR2(30);
133626 l_ae_header_id                NUMBER;
133627 l_event_type_code             VARCHAR2(30);
133628 l_line_definition_code        VARCHAR2(30);
133629 l_line_definition_owner_code  VARCHAR2(1);
133630 --
133631 -- adr variables
133632 l_segment                     VARCHAR2(30);
133633 l_ccid                        NUMBER;
133634 l_adr_transaction_coa_id      NUMBER;
133635 l_adr_accounting_coa_id       NUMBER;
133636 l_adr_flexfield_segment_code  VARCHAR2(30);
133637 l_adr_flex_value_set_id       NUMBER;
133638 l_adr_value_type_code         VARCHAR2(30);
133639 l_adr_value_combination_id    NUMBER;
133640 l_adr_value_segment_code      VARCHAR2(30);
133641 
133642 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
133643 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
133644 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
133645 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
133646 
133647 -- 4262811 Variables ------------------------------------------------------------------------------------------
133648 l_entered_amt_idx             NUMBER;
133649 l_accted_amt_idx              NUMBER;
133650 l_acc_rev_flag                VARCHAR2(1);
133651 l_accrual_line_num            NUMBER;
133652 l_tmp_amt                     NUMBER;
133653 l_acc_rev_natural_side_code   VARCHAR2(1);
133654 
133655 l_num_entries                 NUMBER;
133656 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
133657 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
133658 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
133659 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
133660 l_recog_line_1                NUMBER;
133661 l_recog_line_2                NUMBER;
133662 
133663 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
133664 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
133665 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
133666 
133667 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
133668 
133669 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
133670 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
133671 
133672 ---------------------------------------------------------------------------------------------------------------
133673 
133674 
133675 --
133676 -- bulk performance
133677 --
133678 l_balance_type_code           VARCHAR2(1);
133679 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
133680 l_log_module                  VARCHAR2(240);
133681 
133682 --
133683 -- Upgrade strategy
133684 --
133685 l_actual_upg_option           VARCHAR2(1);
133686 l_enc_upg_option           VARCHAR2(1);
133687 
133688 --
133689 BEGIN
133690 --
133691 IF g_log_enabled THEN
133692       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_242';
133693 END IF;
133694 --
133695 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
133696 
133697       trace
133698          (p_msg      => 'BEGIN of AcctLineType_242'
133699          ,p_level    => C_LEVEL_PROCEDURE
133700          ,p_module   => l_log_module);
133701 
133702 END IF;
133703 --
133704 l_component_type             := 'AMB_JLT';
133705 l_component_code             := 'RESOURCE_ABSORPTION';
133706 l_component_type_code        := 'S';
133707 l_component_appl_id          :=  707;
133708 l_amb_context_code           := 'DEFAULT';
133709 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
133710 l_event_class_code           := 'OSP';
133711 l_event_type_code            := 'OSP_ALL';
133712 l_line_definition_owner_code := 'S';
133713 l_line_definition_code       := 'OUTSIDE_PROCESSING';
133714 --
133715 l_balance_type_code          := 'A';
133716 l_segment                     := NULL;
133717 l_ccid                        := NULL;
133718 l_adr_transaction_coa_id      := NULL;
133719 l_adr_accounting_coa_id       := NULL;
133720 l_adr_flexfield_segment_code  := NULL;
133721 l_adr_flex_value_set_id       := NULL;
133722 l_adr_value_type_code         := NULL;
133723 l_adr_value_combination_id    := NULL;
133724 l_adr_value_segment_code      := NULL;
133725 
133726 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
133727 l_bflow_class_code           := '';    -- 4219869 Business Flow
133728 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
133729 l_budgetary_control_flag     := 'N';
133730 
133731 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
133732 l_bflow_applied_to_amt       := NULL; -- 5132302
133733 l_entered_amt_idx            := NULL;          -- 4262811
133734 l_accted_amt_idx             := NULL;          -- 4262811
133735 l_acc_rev_flag               := NULL;          -- 4262811
133736 l_accrual_line_num           := NULL;          -- 4262811
133737 l_tmp_amt                    := NULL;          -- 4262811
133738 --
133739  
133740 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
133741     l_balance_type_code <> 'B' THEN
133742 IF NVL(p_source_24,9E125) =  4
133743  THEN 
133744 
133745    --
133746    XLA_AE_LINES_PKG.SetNewLine;
133747 
133748    p_balance_type_code          := l_balance_type_code;
133749    -- set the flag so later we will know whether the gain loss line needs to be created
133750    
133751    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
133752      p_actual_flag :='A';
133753    END IF;
133754 
133755    --
133756    -- bulk performance
133757    --
133758    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
133759                                       p_header_num   => 0); -- 4262811
133760    --
133761    -- set accounting line options
133762    --
133763    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
133764            p_natural_side_code          => 'D'
133765          , p_gain_or_loss_flag          => 'N'
133766          , p_gl_transfer_mode_code      => 'S'
133767          , p_acct_entry_type_code       => 'A'
133768          , p_switch_side_flag           => 'Y'
133769          , p_merge_duplicate_code       => 'N'
133770          );
133771    --
133772    l_acc_rev_natural_side_code := 'C';  -- 4262811
133773    -- 
133774    --
133775    -- set accounting line type info
133776    --
133777    xla_ae_lines_pkg.SetAcctLineType
133778       (p_component_type             => l_component_type
133779       ,p_event_type_code            => l_event_type_code
133780       ,p_line_definition_owner_code => l_line_definition_owner_code
133781       ,p_line_definition_code       => l_line_definition_code
133782       ,p_accounting_line_code       => l_component_code
133783       ,p_accounting_line_type_code  => l_component_type_code
133784       ,p_accounting_line_appl_id    => l_component_appl_id
133785       ,p_amb_context_code           => l_amb_context_code
133786       ,p_entity_code                => l_entity_code
133787       ,p_event_class_code           => l_event_class_code);
133788    --
133789    -- set accounting class
133790    --
133791    xla_ae_lines_pkg.SetAcctClass(
133792            p_accounting_class_code  => 'RESOURCE_ABSORPTION'
133793          , p_ae_header_id           => l_ae_header_id
133794          );
133795 
133796    --
133797    -- set rounding class
133798    --
133799    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
133800                       'RESOURCE_ABSORPTION';
133801 
133802    --
133803    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
133804    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
133805    --
133806    -- bulk performance
133807    --
133808    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
133809 
133810    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
133811       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
133812 
133813    -- 4955764
133814    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
133815       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
133816 
133817    -- 4458381 Public Sector Enh
133818    
133819    --
133820    -- set accounting attributes for the line type
133821    --
133822    l_entered_amt_idx := 3;
133823    l_accted_amt_idx  := 8;
133824    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
133825    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
133826    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
133827    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
133828    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
133829    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
133830    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
133831    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
133832    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
133833    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
133834    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
133835    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
133836    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
133837    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
133838    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_20);
133839    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
133840    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
133841 
133842    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
133843    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
133844 
133845    ---------------------------------------------------------------------------------------------------------------
133846    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
133847    ---------------------------------------------------------------------------------------------------------------
133848    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
133849 
133850    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
133851    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
133852 
133853    IF xla_accounting_cache_pkg.GetValueChar
133854          (p_source_code         => 'LEDGER_CATEGORY_CODE'
133855          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
133856    AND l_bflow_method_code = 'PRIOR_ENTRY'
133857 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
133858    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
133859          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
133860        )
133861    THEN
133862          xla_ae_lines_pkg.BflowUpgEntry
133863            (p_business_method_code    => l_bflow_method_code
133864            ,p_business_class_code     => l_bflow_class_code
133865            ,p_balance_type            => l_balance_type_code);
133866    ELSE
133867       NULL;
133868 -- No business flow processing for business flow method of NONE.
133869    END IF;
133870 
133871    --
133872    -- call analytical criteria
133873    --
133874    
133875    --
133876    -- call description
133877    --
133878    -- No description or it is inherited.
133879    --
133880    -- call ADRs
133881    -- Bug 4922099
133882    --
133883    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
133884         (NVL(l_actual_upg_option, 'N') = 'O') OR
133885         (NVL(l_enc_upg_option, 'N') = 'O')
133886       )
133887    THEN
133888    NULL;
133889    --
133890    --
133891    
133892   l_ccid := AcctDerRule_4(
133893            p_application_id           => p_application_id
133894          , p_ae_header_id             => l_ae_header_id 
133895 , p_source_4 => p_source_4
133896          , x_transaction_coa_id       => l_adr_transaction_coa_id
133897          , x_accounting_coa_id        => l_adr_accounting_coa_id
133898          , x_value_type_code          => l_adr_value_type_code
133899          , p_side                     => 'NA'
133900    );
133901 
133902    xla_ae_lines_pkg.set_ccid(
133903     p_code_combination_id          => l_ccid
133904   , p_value_type_code              => l_adr_value_type_code
133905   , p_transaction_coa_id           => l_adr_transaction_coa_id
133906   , p_accounting_coa_id            => l_adr_accounting_coa_id
133907   , p_adr_code                     => 'CST_DEFAULT'
133908   , p_adr_type_code                => 'S'
133909   , p_component_type               => l_component_type
133910   , p_component_code               => l_component_code
133911   , p_component_type_code          => l_component_type_code
133912   , p_component_appl_id            => l_component_appl_id
133913   , p_amb_context_code             => l_amb_context_code
133914   , p_side                         => 'NA'
133915   );
133916 
133917 
133918    --
133919    --
133920    END IF;
133921    --
133922    -- Bug 4922099
133923    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
133924           (NVL(l_enc_upg_option, 'N') = 'O')
133925         ) AND
133926         (l_bflow_method_code = 'PRIOR_ENTRY')
133927       )
133928    THEN
133929       IF
133930       --
133931       1 = 2
133932       --
133933       THEN
133934       xla_accounting_err_pkg.build_message
133935                                     (p_appli_s_name            => 'XLA'
133936                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
133937                                     ,p_token_1                 => 'LINE_NUMBER'
133938                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
133939                                     ,p_token_2                 => 'LINE_TYPE_NAME'
133940                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
133941                                                                              l_component_type
133942                                                                             ,l_component_code
133943                                                                             ,l_component_type_code
133944                                                                             ,l_component_appl_id
133945                                                                             ,l_amb_context_code
133946                                                                             ,l_entity_code
133947                                                                             ,l_event_class_code
133948                                                                            )
133949                                     ,p_token_3                 => 'OWNER'
133950                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
133951                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
133952                                                                           ,p_lookup_code    => l_component_type_code
133953                                                                          )
133954                                     ,p_token_4                 => 'PRODUCT_NAME'
133955                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
133956                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
133957                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
133958                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
133959                                     ,p_ae_header_id            =>  NULL
133960                                        );
133961 
133962         IF (C_LEVEL_ERROR>= g_log_level) THEN
133963                  trace
133964                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
133965                       ,p_level    => C_LEVEL_ERROR
133966                       ,p_module   => l_log_module);
133967         END IF;
133968       END IF;
133969    END IF;
133970    --
133971    --
133972    ------------------------------------------------------------------------------------------------
133973    -- 4219869 Business Flow
133974    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
133975    -- Prior Entry.  Currently, the following code is always generated.
133976    ------------------------------------------------------------------------------------------------
133977    XLA_AE_LINES_PKG.ValidateCurrentLine;
133978 
133979    ------------------------------------------------------------------------------------
133980    -- 4219869 Business Flow
133981    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
133982    ------------------------------------------------------------------------------------
133983    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
133984 
133985    ----------------------------------------------------------------------------------
133986    -- 4219869 Business Flow
133987    -- Update journal entry status -- Need to generate this within IF <condition>
133988    ----------------------------------------------------------------------------------
133989    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
133990          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
133991          ,p_balance_type_code => l_balance_type_code
133992          );
133993 
133994    -------------------------------------------------------------------------------------------
133995    -- 4262811 - Generate the Accrual Reversal lines
133996    -------------------------------------------------------------------------------------------
133997    BEGIN
133998       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
133999                               (g_array_event(p_event_id).array_value_num('header_index'));
134000       IF l_acc_rev_flag IS NULL THEN
134001          l_acc_rev_flag := 'N';
134002       END IF;
134003    EXCEPTION
134004       WHEN OTHERS THEN
134005          l_acc_rev_flag := 'N';
134006    END;
134007    --
134008    IF (l_acc_rev_flag = 'Y') THEN
134009 
134010        -- 4645092  ------------------------------------------------------------------------------
134011        -- To allow MPA report to determine if it should generate report process
134012        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
134013        ------------------------------------------------------------------------------------------
134014 
134015        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
134016        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
134017    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
134018    -- call ADRs
134019    -- Bug 4922099
134020    --
134021    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
134022         (NVL(l_actual_upg_option, 'N') = 'O') OR
134023         (NVL(l_enc_upg_option, 'N') = 'O')
134024       )
134025    THEN
134026    NULL;
134027    --
134028    --
134029    
134030   l_ccid := AcctDerRule_4(
134031            p_application_id           => p_application_id
134032          , p_ae_header_id             => l_ae_header_id 
134033 , p_source_4 => p_source_4
134034          , x_transaction_coa_id       => l_adr_transaction_coa_id
134035          , x_accounting_coa_id        => l_adr_accounting_coa_id
134036          , x_value_type_code          => l_adr_value_type_code
134037          , p_side                     => 'NA'
134038    );
134039 
134040    xla_ae_lines_pkg.set_ccid(
134041     p_code_combination_id          => l_ccid
134042   , p_value_type_code              => l_adr_value_type_code
134043   , p_transaction_coa_id           => l_adr_transaction_coa_id
134044   , p_accounting_coa_id            => l_adr_accounting_coa_id
134045   , p_adr_code                     => 'CST_DEFAULT'
134046   , p_adr_type_code                => 'S'
134047   , p_component_type               => l_component_type
134048   , p_component_code               => l_component_code
134049   , p_component_type_code          => l_component_type_code
134050   , p_component_appl_id            => l_component_appl_id
134051   , p_amb_context_code             => l_amb_context_code
134052   , p_side                         => 'NA'
134053   );
134054 
134055 
134056    --
134057    --
134058    END IF;
134059 
134060        --
134061        -- Update the line information that should be overwritten
134062        --
134063        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
134064                                          p_header_num   => 1);
134065        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
134066 
134067        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
134068 
134069        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
134070           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
134071        END IF;
134072 
134073       --
134074       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
134075       --
134076       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
134077           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
134078       ELSE
134079           ---------------------------------------------------------------------------------------------------
134080           -- 4262811a Switch Sign
134081           ---------------------------------------------------------------------------------------------------
134082           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
134083           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
134084                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
134085           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
134086                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
134087           -- 5132302
134088           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
134089                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
134090 
134091       END IF;
134092 
134093       -- 4955764
134094       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
134095       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
134096 
134097 
134098       XLA_AE_LINES_PKG.ValidateCurrentLine;
134099       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
134100 
134101       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
134102                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
134103                ,p_balance_type_code => l_balance_type_code);
134104 
134105    END IF;
134106 
134107    -----------------------------------------------------------------------------------------
134108    -- 4262811 Multiperiod Accounting
134109    -----------------------------------------------------------------------------------------
134110      -- No MPA option is assigned.
134111 
134112 
134113 END IF;
134114 END IF;
134115 --
134116 
134117 --
134118 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
134119    trace
134120       (p_msg      => 'END of AcctLineType_242'
134121       ,p_level    => C_LEVEL_PROCEDURE
134122       ,p_module   => l_log_module);
134123 END IF;
134124 --
134125 EXCEPTION
134126   WHEN xla_exceptions_pkg.application_exception THEN
134127       RAISE;
134128   WHEN OTHERS THEN
134129        xla_exceptions_pkg.raise_message
134130            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_242');
134131 END AcctLineType_242;
134132 --
134133 
134134 ---------------------------------------
134135 --
134136 -- PRIVATE FUNCTION
134137 --         AcctLineType_243
134138 --
134139 ---------------------------------------
134140 PROCEDURE AcctLineType_243 (
134141   p_application_id        IN NUMBER
134142  ,p_event_id              IN NUMBER
134143  ,p_calculate_acctd_flag  IN VARCHAR2
134144  ,p_calculate_g_l_flag    IN VARCHAR2
134145  ,p_actual_flag           IN OUT VARCHAR2
134146  ,p_balance_type_code     OUT VARCHAR2
134147  ,p_gain_or_loss_ref      OUT VARCHAR2
134148  
134149 --Cost Management Default Account
134150  , p_source_4            IN NUMBER
134151 --DISTRIBUTION_IDENTIFIER
134152  , p_source_11            IN NUMBER
134153 --Distribution Type
134154  , p_source_12            IN VARCHAR2
134155  , p_source_12_meaning    IN VARCHAR2
134156 --Entered Currency Code
134157  , p_source_15            IN VARCHAR2
134158 --Entered Amount
134159  , p_source_18            IN NUMBER
134160 --Currency Conversion Date
134161  , p_source_19            IN DATE
134162 --Currency Conversion Rate
134163  , p_source_20            IN NUMBER
134164 --Currency Conversion Type
134165  , p_source_21            IN VARCHAR2
134166 --Accounted Amount
134167  , p_source_22            IN NUMBER
134168 --Accounting Line Type
134169  , p_source_24            IN NUMBER
134170 )
134171 IS
134172 
134173 l_component_type              VARCHAR2(80);
134174 l_component_code              VARCHAR2(30);
134175 l_component_type_code         VARCHAR2(1);
134176 l_component_appl_id           INTEGER;
134177 l_amb_context_code            VARCHAR2(30);
134178 l_entity_code                 VARCHAR2(30);
134179 l_event_class_code            VARCHAR2(30);
134180 l_ae_header_id                NUMBER;
134181 l_event_type_code             VARCHAR2(30);
134182 l_line_definition_code        VARCHAR2(30);
134183 l_line_definition_owner_code  VARCHAR2(1);
134184 --
134185 -- adr variables
134186 l_segment                     VARCHAR2(30);
134187 l_ccid                        NUMBER;
134188 l_adr_transaction_coa_id      NUMBER;
134189 l_adr_accounting_coa_id       NUMBER;
134190 l_adr_flexfield_segment_code  VARCHAR2(30);
134191 l_adr_flex_value_set_id       NUMBER;
134192 l_adr_value_type_code         VARCHAR2(30);
134193 l_adr_value_combination_id    NUMBER;
134194 l_adr_value_segment_code      VARCHAR2(30);
134195 
134196 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
134197 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
134198 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
134199 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
134200 
134201 -- 4262811 Variables ------------------------------------------------------------------------------------------
134202 l_entered_amt_idx             NUMBER;
134203 l_accted_amt_idx              NUMBER;
134204 l_acc_rev_flag                VARCHAR2(1);
134205 l_accrual_line_num            NUMBER;
134206 l_tmp_amt                     NUMBER;
134207 l_acc_rev_natural_side_code   VARCHAR2(1);
134208 
134209 l_num_entries                 NUMBER;
134210 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
134211 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
134212 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
134213 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
134214 l_recog_line_1                NUMBER;
134215 l_recog_line_2                NUMBER;
134216 
134217 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
134218 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
134219 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
134220 
134221 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
134222 
134223 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
134224 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
134225 
134226 ---------------------------------------------------------------------------------------------------------------
134227 
134228 
134229 --
134230 -- bulk performance
134231 --
134232 l_balance_type_code           VARCHAR2(1);
134233 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
134234 l_log_module                  VARCHAR2(240);
134235 
134236 --
134237 -- Upgrade strategy
134238 --
134239 l_actual_upg_option           VARCHAR2(1);
134240 l_enc_upg_option           VARCHAR2(1);
134241 
134242 --
134243 BEGIN
134244 --
134245 IF g_log_enabled THEN
134246       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_243';
134247 END IF;
134248 --
134249 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
134250 
134251       trace
134252          (p_msg      => 'BEGIN of AcctLineType_243'
134253          ,p_level    => C_LEVEL_PROCEDURE
134254          ,p_module   => l_log_module);
134255 
134256 END IF;
134257 --
134258 l_component_type             := 'AMB_JLT';
134259 l_component_code             := 'RESOURCE_ABSORPTION';
134260 l_component_type_code        := 'S';
134261 l_component_appl_id          :=  707;
134262 l_amb_context_code           := 'DEFAULT';
134263 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
134264 l_event_class_code           := 'ABSORPTION';
134265 l_event_type_code            := 'ABSORPTION_ALL';
134266 l_line_definition_owner_code := 'S';
134267 l_line_definition_code       := 'ABSORPTION';
134268 --
134269 l_balance_type_code          := 'A';
134270 l_segment                     := NULL;
134271 l_ccid                        := NULL;
134272 l_adr_transaction_coa_id      := NULL;
134273 l_adr_accounting_coa_id       := NULL;
134274 l_adr_flexfield_segment_code  := NULL;
134275 l_adr_flex_value_set_id       := NULL;
134276 l_adr_value_type_code         := NULL;
134277 l_adr_value_combination_id    := NULL;
134278 l_adr_value_segment_code      := NULL;
134279 
134280 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
134281 l_bflow_class_code           := '';    -- 4219869 Business Flow
134282 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
134283 l_budgetary_control_flag     := 'N';
134284 
134285 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
134286 l_bflow_applied_to_amt       := NULL; -- 5132302
134287 l_entered_amt_idx            := NULL;          -- 4262811
134288 l_accted_amt_idx             := NULL;          -- 4262811
134289 l_acc_rev_flag               := NULL;          -- 4262811
134290 l_accrual_line_num           := NULL;          -- 4262811
134291 l_tmp_amt                    := NULL;          -- 4262811
134292 --
134293  
134294 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
134295     l_balance_type_code <> 'B' THEN
134296 IF NVL(p_source_24,9E125) =  4
134297  THEN 
134298 
134299    --
134300    XLA_AE_LINES_PKG.SetNewLine;
134301 
134302    p_balance_type_code          := l_balance_type_code;
134303    -- set the flag so later we will know whether the gain loss line needs to be created
134304    
134305    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
134306      p_actual_flag :='A';
134307    END IF;
134308 
134309    --
134310    -- bulk performance
134311    --
134312    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
134313                                       p_header_num   => 0); -- 4262811
134314    --
134315    -- set accounting line options
134316    --
134317    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
134318            p_natural_side_code          => 'D'
134319          , p_gain_or_loss_flag          => 'N'
134320          , p_gl_transfer_mode_code      => 'S'
134321          , p_acct_entry_type_code       => 'A'
134322          , p_switch_side_flag           => 'Y'
134323          , p_merge_duplicate_code       => 'N'
134324          );
134325    --
134326    l_acc_rev_natural_side_code := 'C';  -- 4262811
134327    -- 
134328    --
134329    -- set accounting line type info
134330    --
134331    xla_ae_lines_pkg.SetAcctLineType
134332       (p_component_type             => l_component_type
134333       ,p_event_type_code            => l_event_type_code
134334       ,p_line_definition_owner_code => l_line_definition_owner_code
134335       ,p_line_definition_code       => l_line_definition_code
134336       ,p_accounting_line_code       => l_component_code
134337       ,p_accounting_line_type_code  => l_component_type_code
134338       ,p_accounting_line_appl_id    => l_component_appl_id
134339       ,p_amb_context_code           => l_amb_context_code
134340       ,p_entity_code                => l_entity_code
134341       ,p_event_class_code           => l_event_class_code);
134342    --
134343    -- set accounting class
134344    --
134345    xla_ae_lines_pkg.SetAcctClass(
134346            p_accounting_class_code  => 'RESOURCE_ABSORPTION'
134347          , p_ae_header_id           => l_ae_header_id
134348          );
134349 
134350    --
134351    -- set rounding class
134352    --
134353    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
134354                       'RESOURCE_ABSORPTION';
134355 
134356    --
134357    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
134358    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
134359    --
134360    -- bulk performance
134361    --
134362    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
134363 
134364    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
134365       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
134366 
134367    -- 4955764
134368    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
134369       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
134370 
134371    -- 4458381 Public Sector Enh
134372    
134373    --
134374    -- set accounting attributes for the line type
134375    --
134376    l_entered_amt_idx := 3;
134377    l_accted_amt_idx  := 8;
134378    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
134379    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
134380    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
134381    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
134382    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
134383    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
134384    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
134385    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
134386    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
134387    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
134388    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
134389    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
134390    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
134391    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
134392    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
134393    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
134394    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
134395 
134396    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
134397    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
134398 
134399    ---------------------------------------------------------------------------------------------------------------
134400    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
134401    ---------------------------------------------------------------------------------------------------------------
134402    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
134403 
134404    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
134405    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
134406 
134407    IF xla_accounting_cache_pkg.GetValueChar
134408          (p_source_code         => 'LEDGER_CATEGORY_CODE'
134409          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
134410    AND l_bflow_method_code = 'PRIOR_ENTRY'
134411 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
134412    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
134413          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
134414        )
134415    THEN
134416          xla_ae_lines_pkg.BflowUpgEntry
134417            (p_business_method_code    => l_bflow_method_code
134418            ,p_business_class_code     => l_bflow_class_code
134419            ,p_balance_type            => l_balance_type_code);
134420    ELSE
134421       NULL;
134422 -- No business flow processing for business flow method of NONE.
134423    END IF;
134424 
134425    --
134426    -- call analytical criteria
134427    --
134428    
134429    --
134430    -- call description
134431    --
134432    -- No description or it is inherited.
134433    --
134434    -- call ADRs
134435    -- Bug 4922099
134436    --
134437    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
134438         (NVL(l_actual_upg_option, 'N') = 'O') OR
134439         (NVL(l_enc_upg_option, 'N') = 'O')
134440       )
134441    THEN
134442    NULL;
134443    --
134444    --
134445    
134446   l_ccid := AcctDerRule_4(
134447            p_application_id           => p_application_id
134448          , p_ae_header_id             => l_ae_header_id 
134449 , p_source_4 => p_source_4
134450          , x_transaction_coa_id       => l_adr_transaction_coa_id
134451          , x_accounting_coa_id        => l_adr_accounting_coa_id
134452          , x_value_type_code          => l_adr_value_type_code
134453          , p_side                     => 'NA'
134454    );
134455 
134456    xla_ae_lines_pkg.set_ccid(
134457     p_code_combination_id          => l_ccid
134458   , p_value_type_code              => l_adr_value_type_code
134459   , p_transaction_coa_id           => l_adr_transaction_coa_id
134460   , p_accounting_coa_id            => l_adr_accounting_coa_id
134461   , p_adr_code                     => 'CST_DEFAULT'
134462   , p_adr_type_code                => 'S'
134463   , p_component_type               => l_component_type
134464   , p_component_code               => l_component_code
134465   , p_component_type_code          => l_component_type_code
134466   , p_component_appl_id            => l_component_appl_id
134467   , p_amb_context_code             => l_amb_context_code
134468   , p_side                         => 'NA'
134469   );
134470 
134471 
134472    --
134473    --
134474    END IF;
134475    --
134476    -- Bug 4922099
134477    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
134478           (NVL(l_enc_upg_option, 'N') = 'O')
134479         ) AND
134480         (l_bflow_method_code = 'PRIOR_ENTRY')
134481       )
134482    THEN
134483       IF
134484       --
134485       1 = 2
134486       --
134487       THEN
134488       xla_accounting_err_pkg.build_message
134489                                     (p_appli_s_name            => 'XLA'
134490                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
134491                                     ,p_token_1                 => 'LINE_NUMBER'
134492                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
134493                                     ,p_token_2                 => 'LINE_TYPE_NAME'
134494                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
134495                                                                              l_component_type
134496                                                                             ,l_component_code
134497                                                                             ,l_component_type_code
134498                                                                             ,l_component_appl_id
134499                                                                             ,l_amb_context_code
134500                                                                             ,l_entity_code
134501                                                                             ,l_event_class_code
134502                                                                            )
134503                                     ,p_token_3                 => 'OWNER'
134504                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
134505                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
134506                                                                           ,p_lookup_code    => l_component_type_code
134507                                                                          )
134508                                     ,p_token_4                 => 'PRODUCT_NAME'
134509                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
134510                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
134511                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
134512                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
134513                                     ,p_ae_header_id            =>  NULL
134514                                        );
134515 
134516         IF (C_LEVEL_ERROR>= g_log_level) THEN
134517                  trace
134518                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
134519                       ,p_level    => C_LEVEL_ERROR
134520                       ,p_module   => l_log_module);
134521         END IF;
134522       END IF;
134523    END IF;
134524    --
134525    --
134526    ------------------------------------------------------------------------------------------------
134527    -- 4219869 Business Flow
134528    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
134529    -- Prior Entry.  Currently, the following code is always generated.
134530    ------------------------------------------------------------------------------------------------
134531    XLA_AE_LINES_PKG.ValidateCurrentLine;
134532 
134533    ------------------------------------------------------------------------------------
134534    -- 4219869 Business Flow
134535    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
134536    ------------------------------------------------------------------------------------
134537    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
134538 
134539    ----------------------------------------------------------------------------------
134540    -- 4219869 Business Flow
134541    -- Update journal entry status -- Need to generate this within IF <condition>
134542    ----------------------------------------------------------------------------------
134543    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
134544          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
134545          ,p_balance_type_code => l_balance_type_code
134546          );
134547 
134548    -------------------------------------------------------------------------------------------
134549    -- 4262811 - Generate the Accrual Reversal lines
134550    -------------------------------------------------------------------------------------------
134551    BEGIN
134552       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
134553                               (g_array_event(p_event_id).array_value_num('header_index'));
134554       IF l_acc_rev_flag IS NULL THEN
134555          l_acc_rev_flag := 'N';
134556       END IF;
134557    EXCEPTION
134558       WHEN OTHERS THEN
134559          l_acc_rev_flag := 'N';
134560    END;
134561    --
134562    IF (l_acc_rev_flag = 'Y') THEN
134563 
134564        -- 4645092  ------------------------------------------------------------------------------
134565        -- To allow MPA report to determine if it should generate report process
134566        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
134567        ------------------------------------------------------------------------------------------
134568 
134569        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
134570        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
134571    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
134572    -- call ADRs
134573    -- Bug 4922099
134574    --
134575    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
134576         (NVL(l_actual_upg_option, 'N') = 'O') OR
134577         (NVL(l_enc_upg_option, 'N') = 'O')
134578       )
134579    THEN
134580    NULL;
134581    --
134582    --
134583    
134584   l_ccid := AcctDerRule_4(
134585            p_application_id           => p_application_id
134586          , p_ae_header_id             => l_ae_header_id 
134587 , p_source_4 => p_source_4
134588          , x_transaction_coa_id       => l_adr_transaction_coa_id
134589          , x_accounting_coa_id        => l_adr_accounting_coa_id
134590          , x_value_type_code          => l_adr_value_type_code
134591          , p_side                     => 'NA'
134592    );
134593 
134594    xla_ae_lines_pkg.set_ccid(
134595     p_code_combination_id          => l_ccid
134596   , p_value_type_code              => l_adr_value_type_code
134597   , p_transaction_coa_id           => l_adr_transaction_coa_id
134598   , p_accounting_coa_id            => l_adr_accounting_coa_id
134599   , p_adr_code                     => 'CST_DEFAULT'
134600   , p_adr_type_code                => 'S'
134601   , p_component_type               => l_component_type
134602   , p_component_code               => l_component_code
134603   , p_component_type_code          => l_component_type_code
134604   , p_component_appl_id            => l_component_appl_id
134605   , p_amb_context_code             => l_amb_context_code
134606   , p_side                         => 'NA'
134607   );
134608 
134609 
134610    --
134611    --
134612    END IF;
134613 
134614        --
134615        -- Update the line information that should be overwritten
134616        --
134617        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
134618                                          p_header_num   => 1);
134619        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
134620 
134621        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
134622 
134623        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
134624           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
134625        END IF;
134626 
134627       --
134628       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
134629       --
134630       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
134631           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
134632       ELSE
134633           ---------------------------------------------------------------------------------------------------
134634           -- 4262811a Switch Sign
134635           ---------------------------------------------------------------------------------------------------
134636           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
134637           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
134638                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
134639           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
134640                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
134641           -- 5132302
134642           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
134643                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
134644 
134645       END IF;
134646 
134647       -- 4955764
134648       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
134649       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
134650 
134651 
134652       XLA_AE_LINES_PKG.ValidateCurrentLine;
134653       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
134654 
134655       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
134656                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
134657                ,p_balance_type_code => l_balance_type_code);
134658 
134659    END IF;
134660 
134661    -----------------------------------------------------------------------------------------
134662    -- 4262811 Multiperiod Accounting
134663    -----------------------------------------------------------------------------------------
134664      -- No MPA option is assigned.
134665 
134666 
134667 END IF;
134668 END IF;
134669 --
134670 
134671 --
134672 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
134673    trace
134674       (p_msg      => 'END of AcctLineType_243'
134675       ,p_level    => C_LEVEL_PROCEDURE
134676       ,p_module   => l_log_module);
134677 END IF;
134678 --
134679 EXCEPTION
134680   WHEN xla_exceptions_pkg.application_exception THEN
134681       RAISE;
134682   WHEN OTHERS THEN
134683        xla_exceptions_pkg.raise_message
134684            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_243');
134685 END AcctLineType_243;
134686 --
134687 
134688 ---------------------------------------
134689 --
134690 -- PRIVATE FUNCTION
134691 --         AcctLineType_244
134692 --
134693 ---------------------------------------
134694 PROCEDURE AcctLineType_244 (
134695   p_application_id        IN NUMBER
134696  ,p_event_id              IN NUMBER
134697  ,p_calculate_acctd_flag  IN VARCHAR2
134698  ,p_calculate_g_l_flag    IN VARCHAR2
134699  ,p_actual_flag           IN OUT VARCHAR2
134700  ,p_balance_type_code     OUT VARCHAR2
134701  ,p_gain_or_loss_ref      OUT VARCHAR2
134702  
134703 --Cost Management Default Account
134704  , p_source_4            IN NUMBER
134705 --DISTRIBUTION_IDENTIFIER
134706  , p_source_11            IN NUMBER
134707 --Distribution Type
134708  , p_source_12            IN VARCHAR2
134709  , p_source_12_meaning    IN VARCHAR2
134710 --Entered Currency Code
134711  , p_source_15            IN VARCHAR2
134712 --Entered Amount
134713  , p_source_18            IN NUMBER
134714 --Currency Conversion Date
134715  , p_source_19            IN DATE
134716 --Currency Conversion Rate
134717  , p_source_20            IN NUMBER
134718 --Currency Conversion Type
134719  , p_source_21            IN VARCHAR2
134720 --Accounted Amount
134721  , p_source_22            IN NUMBER
134722 --Accounting Line Type
134723  , p_source_24            IN NUMBER
134724 )
134725 IS
134726 
134727 l_component_type              VARCHAR2(80);
134728 l_component_code              VARCHAR2(30);
134729 l_component_type_code         VARCHAR2(1);
134730 l_component_appl_id           INTEGER;
134731 l_amb_context_code            VARCHAR2(30);
134732 l_entity_code                 VARCHAR2(30);
134733 l_event_class_code            VARCHAR2(30);
134734 l_ae_header_id                NUMBER;
134735 l_event_type_code             VARCHAR2(30);
134736 l_line_definition_code        VARCHAR2(30);
134737 l_line_definition_owner_code  VARCHAR2(1);
134738 --
134739 -- adr variables
134740 l_segment                     VARCHAR2(30);
134741 l_ccid                        NUMBER;
134742 l_adr_transaction_coa_id      NUMBER;
134743 l_adr_accounting_coa_id       NUMBER;
134744 l_adr_flexfield_segment_code  VARCHAR2(30);
134745 l_adr_flex_value_set_id       NUMBER;
134746 l_adr_value_type_code         VARCHAR2(30);
134747 l_adr_value_combination_id    NUMBER;
134748 l_adr_value_segment_code      VARCHAR2(30);
134749 
134750 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
134751 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
134752 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
134753 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
134754 
134755 -- 4262811 Variables ------------------------------------------------------------------------------------------
134756 l_entered_amt_idx             NUMBER;
134757 l_accted_amt_idx              NUMBER;
134758 l_acc_rev_flag                VARCHAR2(1);
134759 l_accrual_line_num            NUMBER;
134760 l_tmp_amt                     NUMBER;
134761 l_acc_rev_natural_side_code   VARCHAR2(1);
134762 
134763 l_num_entries                 NUMBER;
134764 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
134765 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
134766 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
134767 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
134768 l_recog_line_1                NUMBER;
134769 l_recog_line_2                NUMBER;
134770 
134771 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
134772 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
134773 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
134774 
134775 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
134776 
134777 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
134778 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
134779 
134780 ---------------------------------------------------------------------------------------------------------------
134781 
134782 
134783 --
134784 -- bulk performance
134785 --
134786 l_balance_type_code           VARCHAR2(1);
134787 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
134788 l_log_module                  VARCHAR2(240);
134789 
134790 --
134791 -- Upgrade strategy
134792 --
134793 l_actual_upg_option           VARCHAR2(1);
134794 l_enc_upg_option           VARCHAR2(1);
134795 
134796 --
134797 BEGIN
134798 --
134799 IF g_log_enabled THEN
134800       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_244';
134801 END IF;
134802 --
134803 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
134804 
134805       trace
134806          (p_msg      => 'BEGIN of AcctLineType_244'
134807          ,p_level    => C_LEVEL_PROCEDURE
134808          ,p_module   => l_log_module);
134809 
134810 END IF;
134811 --
134812 l_component_type             := 'AMB_JLT';
134813 l_component_code             := 'RESOURCE_RATE_VARIANCE';
134814 l_component_type_code        := 'S';
134815 l_component_appl_id          :=  707;
134816 l_amb_context_code           := 'DEFAULT';
134817 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
134818 l_event_class_code           := 'ABSORPTION';
134819 l_event_type_code            := 'ABSORPTION_ALL';
134820 l_line_definition_owner_code := 'S';
134821 l_line_definition_code       := 'ABSORPTION';
134822 --
134823 l_balance_type_code          := 'A';
134824 l_segment                     := NULL;
134825 l_ccid                        := NULL;
134826 l_adr_transaction_coa_id      := NULL;
134827 l_adr_accounting_coa_id       := NULL;
134828 l_adr_flexfield_segment_code  := NULL;
134829 l_adr_flex_value_set_id       := NULL;
134830 l_adr_value_type_code         := NULL;
134831 l_adr_value_combination_id    := NULL;
134832 l_adr_value_segment_code      := NULL;
134833 
134834 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
134835 l_bflow_class_code           := '';    -- 4219869 Business Flow
134836 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
134837 l_budgetary_control_flag     := 'N';
134838 
134839 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
134840 l_bflow_applied_to_amt       := NULL; -- 5132302
134841 l_entered_amt_idx            := NULL;          -- 4262811
134842 l_accted_amt_idx             := NULL;          -- 4262811
134843 l_acc_rev_flag               := NULL;          -- 4262811
134844 l_accrual_line_num           := NULL;          -- 4262811
134845 l_tmp_amt                    := NULL;          -- 4262811
134846 --
134847  
134848 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
134849     l_balance_type_code <> 'B' THEN
134850 IF NVL(p_source_24,9E125) =  6
134851  THEN 
134852 
134853    --
134854    XLA_AE_LINES_PKG.SetNewLine;
134855 
134856    p_balance_type_code          := l_balance_type_code;
134857    -- set the flag so later we will know whether the gain loss line needs to be created
134858    
134859    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
134860      p_actual_flag :='A';
134861    END IF;
134862 
134863    --
134864    -- bulk performance
134865    --
134866    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
134867                                       p_header_num   => 0); -- 4262811
134868    --
134869    -- set accounting line options
134870    --
134871    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
134872            p_natural_side_code          => 'D'
134873          , p_gain_or_loss_flag          => 'N'
134874          , p_gl_transfer_mode_code      => 'S'
134875          , p_acct_entry_type_code       => 'A'
134876          , p_switch_side_flag           => 'Y'
134877          , p_merge_duplicate_code       => 'N'
134878          );
134879    --
134880    l_acc_rev_natural_side_code := 'C';  -- 4262811
134881    -- 
134882    --
134883    -- set accounting line type info
134884    --
134885    xla_ae_lines_pkg.SetAcctLineType
134886       (p_component_type             => l_component_type
134887       ,p_event_type_code            => l_event_type_code
134888       ,p_line_definition_owner_code => l_line_definition_owner_code
134889       ,p_line_definition_code       => l_line_definition_code
134890       ,p_accounting_line_code       => l_component_code
134891       ,p_accounting_line_type_code  => l_component_type_code
134892       ,p_accounting_line_appl_id    => l_component_appl_id
134893       ,p_amb_context_code           => l_amb_context_code
134894       ,p_entity_code                => l_entity_code
134895       ,p_event_class_code           => l_event_class_code);
134896    --
134897    -- set accounting class
134898    --
134899    xla_ae_lines_pkg.SetAcctClass(
134900            p_accounting_class_code  => 'RESOURCE_RATE_VARIANCE'
134901          , p_ae_header_id           => l_ae_header_id
134902          );
134903 
134904    --
134905    -- set rounding class
134906    --
134907    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
134908                       'RESOURCE_RATE_VARIANCE';
134909 
134910    --
134911    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
134912    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
134913    --
134914    -- bulk performance
134915    --
134916    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
134917 
134918    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
134919       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
134920 
134921    -- 4955764
134922    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
134923       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
134924 
134925    -- 4458381 Public Sector Enh
134926    
134927    --
134928    -- set accounting attributes for the line type
134929    --
134930    l_entered_amt_idx := 3;
134931    l_accted_amt_idx  := 8;
134932    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
134933    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
134934    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
134935    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
134936    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
134937    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
134938    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
134939    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
134940    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
134941    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
134942    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
134943    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
134944    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
134945    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
134946    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
134947    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
134948    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
134949 
134950    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
134951    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
134952 
134953    ---------------------------------------------------------------------------------------------------------------
134954    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
134955    ---------------------------------------------------------------------------------------------------------------
134956    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
134957 
134958    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
134959    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
134960 
134961    IF xla_accounting_cache_pkg.GetValueChar
134962          (p_source_code         => 'LEDGER_CATEGORY_CODE'
134963          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
134964    AND l_bflow_method_code = 'PRIOR_ENTRY'
134965 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
134966    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
134967          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
134968        )
134969    THEN
134970          xla_ae_lines_pkg.BflowUpgEntry
134971            (p_business_method_code    => l_bflow_method_code
134972            ,p_business_class_code     => l_bflow_class_code
134973            ,p_balance_type            => l_balance_type_code);
134974    ELSE
134975       NULL;
134976 -- No business flow processing for business flow method of NONE.
134977    END IF;
134978 
134979    --
134980    -- call analytical criteria
134981    --
134982    
134983    --
134984    -- call description
134985    --
134986    -- No description or it is inherited.
134987    --
134988    -- call ADRs
134989    -- Bug 4922099
134990    --
134991    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
134992         (NVL(l_actual_upg_option, 'N') = 'O') OR
134993         (NVL(l_enc_upg_option, 'N') = 'O')
134994       )
134995    THEN
134996    NULL;
134997    --
134998    --
134999    
135000   l_ccid := AcctDerRule_4(
135001            p_application_id           => p_application_id
135002          , p_ae_header_id             => l_ae_header_id 
135003 , p_source_4 => p_source_4
135004          , x_transaction_coa_id       => l_adr_transaction_coa_id
135005          , x_accounting_coa_id        => l_adr_accounting_coa_id
135006          , x_value_type_code          => l_adr_value_type_code
135007          , p_side                     => 'NA'
135008    );
135009 
135010    xla_ae_lines_pkg.set_ccid(
135011     p_code_combination_id          => l_ccid
135012   , p_value_type_code              => l_adr_value_type_code
135013   , p_transaction_coa_id           => l_adr_transaction_coa_id
135014   , p_accounting_coa_id            => l_adr_accounting_coa_id
135015   , p_adr_code                     => 'CST_DEFAULT'
135016   , p_adr_type_code                => 'S'
135017   , p_component_type               => l_component_type
135018   , p_component_code               => l_component_code
135019   , p_component_type_code          => l_component_type_code
135020   , p_component_appl_id            => l_component_appl_id
135021   , p_amb_context_code             => l_amb_context_code
135022   , p_side                         => 'NA'
135023   );
135024 
135025 
135026    --
135027    --
135028    END IF;
135029    --
135030    -- Bug 4922099
135031    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
135032           (NVL(l_enc_upg_option, 'N') = 'O')
135033         ) AND
135034         (l_bflow_method_code = 'PRIOR_ENTRY')
135035       )
135036    THEN
135037       IF
135038       --
135039       1 = 2
135040       --
135041       THEN
135042       xla_accounting_err_pkg.build_message
135043                                     (p_appli_s_name            => 'XLA'
135044                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
135045                                     ,p_token_1                 => 'LINE_NUMBER'
135046                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
135047                                     ,p_token_2                 => 'LINE_TYPE_NAME'
135048                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
135049                                                                              l_component_type
135050                                                                             ,l_component_code
135051                                                                             ,l_component_type_code
135052                                                                             ,l_component_appl_id
135053                                                                             ,l_amb_context_code
135054                                                                             ,l_entity_code
135055                                                                             ,l_event_class_code
135056                                                                            )
135057                                     ,p_token_3                 => 'OWNER'
135058                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
135059                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
135060                                                                           ,p_lookup_code    => l_component_type_code
135061                                                                          )
135062                                     ,p_token_4                 => 'PRODUCT_NAME'
135063                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
135064                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
135065                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
135066                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
135067                                     ,p_ae_header_id            =>  NULL
135068                                        );
135069 
135070         IF (C_LEVEL_ERROR>= g_log_level) THEN
135071                  trace
135072                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
135073                       ,p_level    => C_LEVEL_ERROR
135074                       ,p_module   => l_log_module);
135075         END IF;
135076       END IF;
135077    END IF;
135078    --
135079    --
135080    ------------------------------------------------------------------------------------------------
135081    -- 4219869 Business Flow
135082    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
135083    -- Prior Entry.  Currently, the following code is always generated.
135084    ------------------------------------------------------------------------------------------------
135085    XLA_AE_LINES_PKG.ValidateCurrentLine;
135086 
135087    ------------------------------------------------------------------------------------
135088    -- 4219869 Business Flow
135089    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
135090    ------------------------------------------------------------------------------------
135091    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
135092 
135093    ----------------------------------------------------------------------------------
135094    -- 4219869 Business Flow
135095    -- Update journal entry status -- Need to generate this within IF <condition>
135096    ----------------------------------------------------------------------------------
135097    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
135098          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
135099          ,p_balance_type_code => l_balance_type_code
135100          );
135101 
135102    -------------------------------------------------------------------------------------------
135103    -- 4262811 - Generate the Accrual Reversal lines
135104    -------------------------------------------------------------------------------------------
135105    BEGIN
135106       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
135107                               (g_array_event(p_event_id).array_value_num('header_index'));
135108       IF l_acc_rev_flag IS NULL THEN
135109          l_acc_rev_flag := 'N';
135110       END IF;
135111    EXCEPTION
135112       WHEN OTHERS THEN
135113          l_acc_rev_flag := 'N';
135114    END;
135115    --
135116    IF (l_acc_rev_flag = 'Y') THEN
135117 
135118        -- 4645092  ------------------------------------------------------------------------------
135119        -- To allow MPA report to determine if it should generate report process
135120        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
135121        ------------------------------------------------------------------------------------------
135122 
135123        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
135124        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
135125    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
135126    -- call ADRs
135127    -- Bug 4922099
135128    --
135129    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
135130         (NVL(l_actual_upg_option, 'N') = 'O') OR
135131         (NVL(l_enc_upg_option, 'N') = 'O')
135132       )
135133    THEN
135134    NULL;
135135    --
135136    --
135137    
135138   l_ccid := AcctDerRule_4(
135139            p_application_id           => p_application_id
135140          , p_ae_header_id             => l_ae_header_id 
135141 , p_source_4 => p_source_4
135142          , x_transaction_coa_id       => l_adr_transaction_coa_id
135143          , x_accounting_coa_id        => l_adr_accounting_coa_id
135144          , x_value_type_code          => l_adr_value_type_code
135145          , p_side                     => 'NA'
135146    );
135147 
135148    xla_ae_lines_pkg.set_ccid(
135149     p_code_combination_id          => l_ccid
135150   , p_value_type_code              => l_adr_value_type_code
135151   , p_transaction_coa_id           => l_adr_transaction_coa_id
135152   , p_accounting_coa_id            => l_adr_accounting_coa_id
135153   , p_adr_code                     => 'CST_DEFAULT'
135154   , p_adr_type_code                => 'S'
135155   , p_component_type               => l_component_type
135156   , p_component_code               => l_component_code
135157   , p_component_type_code          => l_component_type_code
135158   , p_component_appl_id            => l_component_appl_id
135159   , p_amb_context_code             => l_amb_context_code
135160   , p_side                         => 'NA'
135161   );
135162 
135163 
135164    --
135165    --
135166    END IF;
135167 
135168        --
135169        -- Update the line information that should be overwritten
135170        --
135171        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
135172                                          p_header_num   => 1);
135173        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
135174 
135175        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
135176 
135177        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
135178           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
135179        END IF;
135180 
135181       --
135182       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
135183       --
135184       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
135185           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
135186       ELSE
135187           ---------------------------------------------------------------------------------------------------
135188           -- 4262811a Switch Sign
135189           ---------------------------------------------------------------------------------------------------
135190           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
135191           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
135192                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
135193           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
135194                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
135195           -- 5132302
135196           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
135197                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
135198 
135199       END IF;
135200 
135201       -- 4955764
135202       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
135203       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
135204 
135205 
135206       XLA_AE_LINES_PKG.ValidateCurrentLine;
135207       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
135208 
135209       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
135210                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
135211                ,p_balance_type_code => l_balance_type_code);
135212 
135213    END IF;
135214 
135215    -----------------------------------------------------------------------------------------
135216    -- 4262811 Multiperiod Accounting
135217    -----------------------------------------------------------------------------------------
135218      -- No MPA option is assigned.
135219 
135220 
135221 END IF;
135222 END IF;
135223 --
135224 
135225 --
135226 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
135227    trace
135228       (p_msg      => 'END of AcctLineType_244'
135229       ,p_level    => C_LEVEL_PROCEDURE
135230       ,p_module   => l_log_module);
135231 END IF;
135232 --
135233 EXCEPTION
135234   WHEN xla_exceptions_pkg.application_exception THEN
135235       RAISE;
135236   WHEN OTHERS THEN
135237        xla_exceptions_pkg.raise_message
135238            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_244');
135239 END AcctLineType_244;
135240 --
135241 
135242 ---------------------------------------
135243 --
135244 -- PRIVATE FUNCTION
135245 --         AcctLineType_245
135246 --
135247 ---------------------------------------
135248 PROCEDURE AcctLineType_245 (
135249   p_application_id        IN NUMBER
135250  ,p_event_id              IN NUMBER
135251  ,p_calculate_acctd_flag  IN VARCHAR2
135252  ,p_calculate_g_l_flag    IN VARCHAR2
135253  ,p_actual_flag           IN OUT VARCHAR2
135254  ,p_balance_type_code     OUT VARCHAR2
135255  ,p_gain_or_loss_ref      OUT VARCHAR2
135256  
135257 --Cost Management Default Account
135258  , p_source_4            IN NUMBER
135259 --DISTRIBUTION_IDENTIFIER
135260  , p_source_11            IN NUMBER
135261 --Distribution Type
135262  , p_source_12            IN VARCHAR2
135263  , p_source_12_meaning    IN VARCHAR2
135264 --Entered Currency Code
135265  , p_source_15            IN VARCHAR2
135266 --Entered Amount
135267  , p_source_18            IN NUMBER
135268 --Currency Conversion Date
135269  , p_source_19            IN DATE
135270 --Currency Conversion Rate
135271  , p_source_20            IN NUMBER
135272 --Currency Conversion Type
135273  , p_source_21            IN VARCHAR2
135274 --Accounted Amount
135275  , p_source_22            IN NUMBER
135276 --Accounting Line Type
135277  , p_source_24            IN NUMBER
135278 )
135279 IS
135280 
135281 l_component_type              VARCHAR2(80);
135282 l_component_code              VARCHAR2(30);
135283 l_component_type_code         VARCHAR2(1);
135284 l_component_appl_id           INTEGER;
135285 l_amb_context_code            VARCHAR2(30);
135286 l_entity_code                 VARCHAR2(30);
135287 l_event_class_code            VARCHAR2(30);
135288 l_ae_header_id                NUMBER;
135289 l_event_type_code             VARCHAR2(30);
135290 l_line_definition_code        VARCHAR2(30);
135291 l_line_definition_owner_code  VARCHAR2(1);
135292 --
135293 -- adr variables
135294 l_segment                     VARCHAR2(30);
135295 l_ccid                        NUMBER;
135296 l_adr_transaction_coa_id      NUMBER;
135297 l_adr_accounting_coa_id       NUMBER;
135298 l_adr_flexfield_segment_code  VARCHAR2(30);
135299 l_adr_flex_value_set_id       NUMBER;
135300 l_adr_value_type_code         VARCHAR2(30);
135301 l_adr_value_combination_id    NUMBER;
135302 l_adr_value_segment_code      VARCHAR2(30);
135303 
135304 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
135305 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
135306 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
135307 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
135308 
135309 -- 4262811 Variables ------------------------------------------------------------------------------------------
135310 l_entered_amt_idx             NUMBER;
135311 l_accted_amt_idx              NUMBER;
135312 l_acc_rev_flag                VARCHAR2(1);
135313 l_accrual_line_num            NUMBER;
135314 l_tmp_amt                     NUMBER;
135315 l_acc_rev_natural_side_code   VARCHAR2(1);
135316 
135317 l_num_entries                 NUMBER;
135318 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
135319 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
135320 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
135321 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
135322 l_recog_line_1                NUMBER;
135323 l_recog_line_2                NUMBER;
135324 
135325 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
135326 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
135327 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
135328 
135329 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
135330 
135331 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
135332 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
135333 
135334 ---------------------------------------------------------------------------------------------------------------
135335 
135336 
135337 --
135338 -- bulk performance
135339 --
135340 l_balance_type_code           VARCHAR2(1);
135341 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
135342 l_log_module                  VARCHAR2(240);
135343 
135344 --
135345 -- Upgrade strategy
135346 --
135347 l_actual_upg_option           VARCHAR2(1);
135348 l_enc_upg_option           VARCHAR2(1);
135349 
135350 --
135351 BEGIN
135352 --
135353 IF g_log_enabled THEN
135354       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_245';
135355 END IF;
135356 --
135357 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
135358 
135359       trace
135360          (p_msg      => 'BEGIN of AcctLineType_245'
135361          ,p_level    => C_LEVEL_PROCEDURE
135362          ,p_module   => l_log_module);
135363 
135364 END IF;
135365 --
135366 l_component_type             := 'AMB_JLT';
135367 l_component_code             := 'RETROACTIVE_PRICE_ADJ';
135368 l_component_type_code        := 'S';
135369 l_component_appl_id          :=  707;
135370 l_amb_context_code           := 'DEFAULT';
135371 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
135372 l_event_class_code           := 'RETR_PRICE_ADJ';
135373 l_event_type_code            := 'RETR_PRICE_ADJ_ALL';
135374 l_line_definition_owner_code := 'S';
135375 l_line_definition_code       := 'RETR_PRICE_ADJ';
135376 --
135377 l_balance_type_code          := 'A';
135378 l_segment                     := NULL;
135379 l_ccid                        := NULL;
135380 l_adr_transaction_coa_id      := NULL;
135381 l_adr_accounting_coa_id       := NULL;
135382 l_adr_flexfield_segment_code  := NULL;
135383 l_adr_flex_value_set_id       := NULL;
135384 l_adr_value_type_code         := NULL;
135385 l_adr_value_combination_id    := NULL;
135386 l_adr_value_segment_code      := NULL;
135387 
135388 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
135389 l_bflow_class_code           := '';    -- 4219869 Business Flow
135390 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
135391 l_budgetary_control_flag     := 'N';
135392 
135393 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
135394 l_bflow_applied_to_amt       := NULL; -- 5132302
135395 l_entered_amt_idx            := NULL;          -- 4262811
135396 l_accted_amt_idx             := NULL;          -- 4262811
135397 l_acc_rev_flag               := NULL;          -- 4262811
135398 l_accrual_line_num           := NULL;          -- 4262811
135399 l_tmp_amt                    := NULL;          -- 4262811
135400 --
135401  
135402 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
135403     l_balance_type_code <> 'B' THEN
135404 IF NVL(p_source_24,9E125) =  32
135405  THEN 
135406 
135407    --
135408    XLA_AE_LINES_PKG.SetNewLine;
135409 
135410    p_balance_type_code          := l_balance_type_code;
135411    -- set the flag so later we will know whether the gain loss line needs to be created
135412    
135413    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
135414      p_actual_flag :='A';
135415    END IF;
135416 
135417    --
135418    -- bulk performance
135419    --
135420    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
135421                                       p_header_num   => 0); -- 4262811
135422    --
135423    -- set accounting line options
135424    --
135425    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
135426            p_natural_side_code          => 'D'
135427          , p_gain_or_loss_flag          => 'N'
135428          , p_gl_transfer_mode_code      => 'S'
135429          , p_acct_entry_type_code       => 'A'
135430          , p_switch_side_flag           => 'Y'
135431          , p_merge_duplicate_code       => 'N'
135432          );
135433    --
135434    l_acc_rev_natural_side_code := 'C';  -- 4262811
135435    -- 
135436    --
135437    -- set accounting line type info
135438    --
135439    xla_ae_lines_pkg.SetAcctLineType
135440       (p_component_type             => l_component_type
135441       ,p_event_type_code            => l_event_type_code
135442       ,p_line_definition_owner_code => l_line_definition_owner_code
135443       ,p_line_definition_code       => l_line_definition_code
135444       ,p_accounting_line_code       => l_component_code
135445       ,p_accounting_line_type_code  => l_component_type_code
135446       ,p_accounting_line_appl_id    => l_component_appl_id
135447       ,p_amb_context_code           => l_amb_context_code
135448       ,p_entity_code                => l_entity_code
135449       ,p_event_class_code           => l_event_class_code);
135450    --
135451    -- set accounting class
135452    --
135453    xla_ae_lines_pkg.SetAcctClass(
135454            p_accounting_class_code  => 'RETROACTIVE_PRICE_ADJUSTMENT'
135455          , p_ae_header_id           => l_ae_header_id
135456          );
135457 
135458    --
135459    -- set rounding class
135460    --
135461    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
135462                       'RETROACTIVE_PRICE_ADJUSTMENT';
135463 
135464    --
135465    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
135466    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
135467    --
135468    -- bulk performance
135469    --
135470    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
135471 
135472    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
135473       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
135474 
135475    -- 4955764
135476    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
135477       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
135478 
135479    -- 4458381 Public Sector Enh
135480    
135481    --
135482    -- set accounting attributes for the line type
135483    --
135484    l_entered_amt_idx := 3;
135485    l_accted_amt_idx  := 8;
135486    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
135487    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
135488    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
135489    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
135490    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
135491    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
135492    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
135493    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
135494    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
135495    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
135496    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
135497    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
135498    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
135499    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
135500    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
135501    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
135502    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
135503 
135504    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
135505    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
135506 
135507    ---------------------------------------------------------------------------------------------------------------
135508    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
135509    ---------------------------------------------------------------------------------------------------------------
135510    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
135511 
135512    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
135513    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
135514 
135515    IF xla_accounting_cache_pkg.GetValueChar
135516          (p_source_code         => 'LEDGER_CATEGORY_CODE'
135517          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
135518    AND l_bflow_method_code = 'PRIOR_ENTRY'
135519 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
135520    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
135521          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
135522        )
135523    THEN
135524          xla_ae_lines_pkg.BflowUpgEntry
135525            (p_business_method_code    => l_bflow_method_code
135526            ,p_business_class_code     => l_bflow_class_code
135527            ,p_balance_type            => l_balance_type_code);
135528    ELSE
135529       NULL;
135530 -- No business flow processing for business flow method of NONE.
135531    END IF;
135532 
135533    --
135534    -- call analytical criteria
135535    --
135536    
135537    --
135538    -- call description
135539    --
135540    -- No description or it is inherited.
135541    --
135542    -- call ADRs
135543    -- Bug 4922099
135544    --
135545    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
135546         (NVL(l_actual_upg_option, 'N') = 'O') OR
135547         (NVL(l_enc_upg_option, 'N') = 'O')
135548       )
135549    THEN
135550    NULL;
135551    --
135552    --
135553    
135554   l_ccid := AcctDerRule_4(
135555            p_application_id           => p_application_id
135556          , p_ae_header_id             => l_ae_header_id 
135557 , p_source_4 => p_source_4
135558          , x_transaction_coa_id       => l_adr_transaction_coa_id
135559          , x_accounting_coa_id        => l_adr_accounting_coa_id
135560          , x_value_type_code          => l_adr_value_type_code
135561          , p_side                     => 'NA'
135562    );
135563 
135564    xla_ae_lines_pkg.set_ccid(
135565     p_code_combination_id          => l_ccid
135566   , p_value_type_code              => l_adr_value_type_code
135567   , p_transaction_coa_id           => l_adr_transaction_coa_id
135568   , p_accounting_coa_id            => l_adr_accounting_coa_id
135569   , p_adr_code                     => 'CST_DEFAULT'
135570   , p_adr_type_code                => 'S'
135571   , p_component_type               => l_component_type
135572   , p_component_code               => l_component_code
135573   , p_component_type_code          => l_component_type_code
135574   , p_component_appl_id            => l_component_appl_id
135575   , p_amb_context_code             => l_amb_context_code
135576   , p_side                         => 'NA'
135577   );
135578 
135579 
135580    --
135581    --
135582    END IF;
135583    --
135584    -- Bug 4922099
135585    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
135586           (NVL(l_enc_upg_option, 'N') = 'O')
135587         ) AND
135588         (l_bflow_method_code = 'PRIOR_ENTRY')
135589       )
135590    THEN
135591       IF
135592       --
135593       1 = 2
135594       --
135595       THEN
135596       xla_accounting_err_pkg.build_message
135597                                     (p_appli_s_name            => 'XLA'
135598                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
135599                                     ,p_token_1                 => 'LINE_NUMBER'
135600                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
135601                                     ,p_token_2                 => 'LINE_TYPE_NAME'
135602                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
135603                                                                              l_component_type
135604                                                                             ,l_component_code
135605                                                                             ,l_component_type_code
135606                                                                             ,l_component_appl_id
135607                                                                             ,l_amb_context_code
135608                                                                             ,l_entity_code
135609                                                                             ,l_event_class_code
135610                                                                            )
135611                                     ,p_token_3                 => 'OWNER'
135612                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
135613                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
135614                                                                           ,p_lookup_code    => l_component_type_code
135615                                                                          )
135616                                     ,p_token_4                 => 'PRODUCT_NAME'
135617                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
135618                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
135619                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
135620                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
135621                                     ,p_ae_header_id            =>  NULL
135622                                        );
135623 
135624         IF (C_LEVEL_ERROR>= g_log_level) THEN
135625                  trace
135626                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
135627                       ,p_level    => C_LEVEL_ERROR
135628                       ,p_module   => l_log_module);
135629         END IF;
135630       END IF;
135631    END IF;
135632    --
135633    --
135634    ------------------------------------------------------------------------------------------------
135635    -- 4219869 Business Flow
135636    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
135637    -- Prior Entry.  Currently, the following code is always generated.
135638    ------------------------------------------------------------------------------------------------
135639    XLA_AE_LINES_PKG.ValidateCurrentLine;
135640 
135641    ------------------------------------------------------------------------------------
135642    -- 4219869 Business Flow
135643    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
135644    ------------------------------------------------------------------------------------
135645    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
135646 
135647    ----------------------------------------------------------------------------------
135648    -- 4219869 Business Flow
135649    -- Update journal entry status -- Need to generate this within IF <condition>
135650    ----------------------------------------------------------------------------------
135651    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
135652          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
135653          ,p_balance_type_code => l_balance_type_code
135654          );
135655 
135656    -------------------------------------------------------------------------------------------
135657    -- 4262811 - Generate the Accrual Reversal lines
135658    -------------------------------------------------------------------------------------------
135659    BEGIN
135660       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
135661                               (g_array_event(p_event_id).array_value_num('header_index'));
135662       IF l_acc_rev_flag IS NULL THEN
135663          l_acc_rev_flag := 'N';
135664       END IF;
135665    EXCEPTION
135666       WHEN OTHERS THEN
135667          l_acc_rev_flag := 'N';
135668    END;
135669    --
135670    IF (l_acc_rev_flag = 'Y') THEN
135671 
135672        -- 4645092  ------------------------------------------------------------------------------
135673        -- To allow MPA report to determine if it should generate report process
135674        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
135675        ------------------------------------------------------------------------------------------
135676 
135677        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
135678        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
135679    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
135680    -- call ADRs
135681    -- Bug 4922099
135682    --
135683    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
135684         (NVL(l_actual_upg_option, 'N') = 'O') OR
135685         (NVL(l_enc_upg_option, 'N') = 'O')
135686       )
135687    THEN
135688    NULL;
135689    --
135690    --
135691    
135692   l_ccid := AcctDerRule_4(
135693            p_application_id           => p_application_id
135694          , p_ae_header_id             => l_ae_header_id 
135695 , p_source_4 => p_source_4
135696          , x_transaction_coa_id       => l_adr_transaction_coa_id
135697          , x_accounting_coa_id        => l_adr_accounting_coa_id
135698          , x_value_type_code          => l_adr_value_type_code
135699          , p_side                     => 'NA'
135700    );
135701 
135702    xla_ae_lines_pkg.set_ccid(
135703     p_code_combination_id          => l_ccid
135704   , p_value_type_code              => l_adr_value_type_code
135705   , p_transaction_coa_id           => l_adr_transaction_coa_id
135706   , p_accounting_coa_id            => l_adr_accounting_coa_id
135707   , p_adr_code                     => 'CST_DEFAULT'
135708   , p_adr_type_code                => 'S'
135709   , p_component_type               => l_component_type
135710   , p_component_code               => l_component_code
135711   , p_component_type_code          => l_component_type_code
135712   , p_component_appl_id            => l_component_appl_id
135713   , p_amb_context_code             => l_amb_context_code
135714   , p_side                         => 'NA'
135715   );
135716 
135717 
135718    --
135719    --
135720    END IF;
135721 
135722        --
135723        -- Update the line information that should be overwritten
135724        --
135725        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
135726                                          p_header_num   => 1);
135727        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
135728 
135729        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
135730 
135731        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
135732           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
135733        END IF;
135734 
135735       --
135736       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
135737       --
135738       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
135739           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
135740       ELSE
135741           ---------------------------------------------------------------------------------------------------
135742           -- 4262811a Switch Sign
135743           ---------------------------------------------------------------------------------------------------
135744           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
135745           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
135746                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
135747           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
135748                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
135749           -- 5132302
135750           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
135751                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
135752 
135753       END IF;
135754 
135755       -- 4955764
135756       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
135757       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
135758 
135759 
135760       XLA_AE_LINES_PKG.ValidateCurrentLine;
135761       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
135762 
135763       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
135764                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
135765                ,p_balance_type_code => l_balance_type_code);
135766 
135767    END IF;
135768 
135769    -----------------------------------------------------------------------------------------
135770    -- 4262811 Multiperiod Accounting
135771    -----------------------------------------------------------------------------------------
135772      -- No MPA option is assigned.
135773 
135774 
135775 END IF;
135776 END IF;
135777 --
135778 
135779 --
135780 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
135781    trace
135782       (p_msg      => 'END of AcctLineType_245'
135783       ,p_level    => C_LEVEL_PROCEDURE
135784       ,p_module   => l_log_module);
135785 END IF;
135786 --
135787 EXCEPTION
135788   WHEN xla_exceptions_pkg.application_exception THEN
135789       RAISE;
135790   WHEN OTHERS THEN
135791        xla_exceptions_pkg.raise_message
135792            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_245');
135793 END AcctLineType_245;
135794 --
135795 
135796 ---------------------------------------
135797 --
135798 -- PRIVATE FUNCTION
135799 --         AcctLineType_246
135800 --
135801 ---------------------------------------
135802 PROCEDURE AcctLineType_246 (
135803   p_application_id        IN NUMBER
135804  ,p_event_id              IN NUMBER
135805  ,p_calculate_acctd_flag  IN VARCHAR2
135806  ,p_calculate_g_l_flag    IN VARCHAR2
135807  ,p_actual_flag           IN OUT VARCHAR2
135808  ,p_balance_type_code     OUT VARCHAR2
135809  ,p_gain_or_loss_ref      OUT VARCHAR2
135810  
135811 --Cost Management Default Account
135812  , p_source_4            IN NUMBER
135813 --Receiving Accounting Line Type
135814  , p_source_5            IN VARCHAR2
135815 --DISTRIBUTION_IDENTIFIER
135816  , p_source_11            IN NUMBER
135817 --Distribution Type
135818  , p_source_12            IN VARCHAR2
135819  , p_source_12_meaning    IN VARCHAR2
135820 --Entered Currency Code
135821  , p_source_15            IN VARCHAR2
135822 --Entered Amount
135823  , p_source_18            IN NUMBER
135824 --Currency Conversion Date
135825  , p_source_19            IN DATE
135826 --Currency Conversion Rate
135827  , p_source_20            IN NUMBER
135828 --Accounted Amount
135829  , p_source_22            IN NUMBER
135830 )
135831 IS
135832 
135833 l_component_type              VARCHAR2(80);
135834 l_component_code              VARCHAR2(30);
135835 l_component_type_code         VARCHAR2(1);
135836 l_component_appl_id           INTEGER;
135837 l_amb_context_code            VARCHAR2(30);
135838 l_entity_code                 VARCHAR2(30);
135839 l_event_class_code            VARCHAR2(30);
135840 l_ae_header_id                NUMBER;
135841 l_event_type_code             VARCHAR2(30);
135842 l_line_definition_code        VARCHAR2(30);
135843 l_line_definition_owner_code  VARCHAR2(1);
135844 --
135845 -- adr variables
135846 l_segment                     VARCHAR2(30);
135847 l_ccid                        NUMBER;
135848 l_adr_transaction_coa_id      NUMBER;
135849 l_adr_accounting_coa_id       NUMBER;
135850 l_adr_flexfield_segment_code  VARCHAR2(30);
135851 l_adr_flex_value_set_id       NUMBER;
135852 l_adr_value_type_code         VARCHAR2(30);
135853 l_adr_value_combination_id    NUMBER;
135854 l_adr_value_segment_code      VARCHAR2(30);
135855 
135856 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
135857 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
135858 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
135859 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
135860 
135861 -- 4262811 Variables ------------------------------------------------------------------------------------------
135862 l_entered_amt_idx             NUMBER;
135863 l_accted_amt_idx              NUMBER;
135864 l_acc_rev_flag                VARCHAR2(1);
135865 l_accrual_line_num            NUMBER;
135866 l_tmp_amt                     NUMBER;
135867 l_acc_rev_natural_side_code   VARCHAR2(1);
135868 
135869 l_num_entries                 NUMBER;
135870 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
135871 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
135872 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
135873 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
135874 l_recog_line_1                NUMBER;
135875 l_recog_line_2                NUMBER;
135876 
135877 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
135878 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
135879 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
135880 
135881 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
135882 
135883 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
135884 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
135885 
135886 ---------------------------------------------------------------------------------------------------------------
135887 
135888 
135889 --
135890 -- bulk performance
135891 --
135892 l_balance_type_code           VARCHAR2(1);
135893 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
135894 l_log_module                  VARCHAR2(240);
135895 
135896 --
135897 -- Upgrade strategy
135898 --
135899 l_actual_upg_option           VARCHAR2(1);
135900 l_enc_upg_option           VARCHAR2(1);
135901 
135902 --
135903 BEGIN
135904 --
135905 IF g_log_enabled THEN
135906       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_246';
135907 END IF;
135908 --
135909 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
135910 
135911       trace
135912          (p_msg      => 'BEGIN of AcctLineType_246'
135913          ,p_level    => C_LEVEL_PROCEDURE
135914          ,p_module   => l_log_module);
135915 
135916 END IF;
135917 --
135918 l_component_type             := 'AMB_JLT';
135919 l_component_code             := 'RETROACTIVE_PRICE_ADJ';
135920 l_component_type_code        := 'S';
135921 l_component_appl_id          :=  707;
135922 l_amb_context_code           := 'DEFAULT';
135923 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
135924 l_event_class_code           := 'RETR_PRICE_ADJ_DEL';
135925 l_event_type_code            := 'RETR_PRICE_ADJ_DEL_ALL';
135926 l_line_definition_owner_code := 'S';
135927 l_line_definition_code       := 'RETR_PRICE_ADJ_DEL';
135928 --
135929 l_balance_type_code          := 'A';
135930 l_segment                     := NULL;
135931 l_ccid                        := NULL;
135932 l_adr_transaction_coa_id      := NULL;
135933 l_adr_accounting_coa_id       := NULL;
135934 l_adr_flexfield_segment_code  := NULL;
135935 l_adr_flex_value_set_id       := NULL;
135936 l_adr_value_type_code         := NULL;
135937 l_adr_value_combination_id    := NULL;
135938 l_adr_value_segment_code      := NULL;
135939 
135940 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
135941 l_bflow_class_code           := '';    -- 4219869 Business Flow
135942 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
135943 l_budgetary_control_flag     := 'N';
135944 
135945 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
135946 l_bflow_applied_to_amt       := NULL; -- 5132302
135947 l_entered_amt_idx            := NULL;          -- 4262811
135948 l_accted_amt_idx             := NULL;          -- 4262811
135949 l_acc_rev_flag               := NULL;          -- 4262811
135950 l_accrual_line_num           := NULL;          -- 4262811
135951 l_tmp_amt                    := NULL;          -- 4262811
135952 --
135953  
135954 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
135955     l_balance_type_code <> 'B' THEN
135956 IF NVL(p_source_5,'
135957 ') =  'Retroprice Adjustment'
135958  THEN 
135959 
135960    --
135961    XLA_AE_LINES_PKG.SetNewLine;
135962 
135963    p_balance_type_code          := l_balance_type_code;
135964    -- set the flag so later we will know whether the gain loss line needs to be created
135965    
135966    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
135967      p_actual_flag :='A';
135968    END IF;
135969 
135970    --
135971    -- bulk performance
135972    --
135973    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
135974                                       p_header_num   => 0); -- 4262811
135975    --
135976    -- set accounting line options
135977    --
135978    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
135979            p_natural_side_code          => 'D'
135980          , p_gain_or_loss_flag          => 'N'
135981          , p_gl_transfer_mode_code      => 'S'
135982          , p_acct_entry_type_code       => 'A'
135983          , p_switch_side_flag           => 'Y'
135984          , p_merge_duplicate_code       => 'N'
135985          );
135986    --
135987    l_acc_rev_natural_side_code := 'C';  -- 4262811
135988    -- 
135989    --
135990    -- set accounting line type info
135991    --
135992    xla_ae_lines_pkg.SetAcctLineType
135993       (p_component_type             => l_component_type
135994       ,p_event_type_code            => l_event_type_code
135995       ,p_line_definition_owner_code => l_line_definition_owner_code
135996       ,p_line_definition_code       => l_line_definition_code
135997       ,p_accounting_line_code       => l_component_code
135998       ,p_accounting_line_type_code  => l_component_type_code
135999       ,p_accounting_line_appl_id    => l_component_appl_id
136000       ,p_amb_context_code           => l_amb_context_code
136001       ,p_entity_code                => l_entity_code
136002       ,p_event_class_code           => l_event_class_code);
136003    --
136004    -- set accounting class
136005    --
136006    xla_ae_lines_pkg.SetAcctClass(
136007            p_accounting_class_code  => 'RETROACTIVE_PRICE_ADJUSTMENT'
136008          , p_ae_header_id           => l_ae_header_id
136009          );
136010 
136011    --
136012    -- set rounding class
136013    --
136014    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
136015                       'RETROACTIVE_PRICE_ADJUSTMENT';
136016 
136017    --
136018    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
136019    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
136020    --
136021    -- bulk performance
136022    --
136023    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
136024 
136025    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
136026       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
136027 
136028    -- 4955764
136029    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
136030       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
136031 
136032    -- 4458381 Public Sector Enh
136033    
136034    --
136035    -- set accounting attributes for the line type
136036    --
136037    l_entered_amt_idx := 3;
136038    l_accted_amt_idx  := 8;
136039    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
136040    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
136041    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
136042    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
136043    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
136044    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
136045    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
136046    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
136047    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
136048    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
136049    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
136050    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
136051    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
136052    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
136053    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_20);
136054    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
136055    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
136056 
136057    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
136058    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
136059 
136060    ---------------------------------------------------------------------------------------------------------------
136061    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
136062    ---------------------------------------------------------------------------------------------------------------
136063    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
136064 
136065    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
136066    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
136067 
136068    IF xla_accounting_cache_pkg.GetValueChar
136069          (p_source_code         => 'LEDGER_CATEGORY_CODE'
136070          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
136071    AND l_bflow_method_code = 'PRIOR_ENTRY'
136072 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
136073    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
136074          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
136075        )
136076    THEN
136077          xla_ae_lines_pkg.BflowUpgEntry
136078            (p_business_method_code    => l_bflow_method_code
136079            ,p_business_class_code     => l_bflow_class_code
136080            ,p_balance_type            => l_balance_type_code);
136081    ELSE
136082       NULL;
136083 -- No business flow processing for business flow method of NONE.
136084    END IF;
136085 
136086    --
136087    -- call analytical criteria
136088    --
136089    
136090    --
136091    -- call description
136092    --
136093    -- No description or it is inherited.
136094    --
136095    -- call ADRs
136096    -- Bug 4922099
136097    --
136098    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
136099         (NVL(l_actual_upg_option, 'N') = 'O') OR
136100         (NVL(l_enc_upg_option, 'N') = 'O')
136101       )
136102    THEN
136103    NULL;
136104    --
136105    --
136106    
136107   l_ccid := AcctDerRule_4(
136108            p_application_id           => p_application_id
136109          , p_ae_header_id             => l_ae_header_id 
136110 , p_source_4 => p_source_4
136111          , x_transaction_coa_id       => l_adr_transaction_coa_id
136112          , x_accounting_coa_id        => l_adr_accounting_coa_id
136113          , x_value_type_code          => l_adr_value_type_code
136114          , p_side                     => 'NA'
136115    );
136116 
136117    xla_ae_lines_pkg.set_ccid(
136118     p_code_combination_id          => l_ccid
136119   , p_value_type_code              => l_adr_value_type_code
136120   , p_transaction_coa_id           => l_adr_transaction_coa_id
136121   , p_accounting_coa_id            => l_adr_accounting_coa_id
136122   , p_adr_code                     => 'CST_DEFAULT'
136123   , p_adr_type_code                => 'S'
136124   , p_component_type               => l_component_type
136125   , p_component_code               => l_component_code
136126   , p_component_type_code          => l_component_type_code
136127   , p_component_appl_id            => l_component_appl_id
136128   , p_amb_context_code             => l_amb_context_code
136129   , p_side                         => 'NA'
136130   );
136131 
136132 
136133    --
136134    --
136135    END IF;
136136    --
136137    -- Bug 4922099
136138    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
136139           (NVL(l_enc_upg_option, 'N') = 'O')
136140         ) AND
136141         (l_bflow_method_code = 'PRIOR_ENTRY')
136142       )
136143    THEN
136144       IF
136145       --
136146       1 = 2
136147       --
136148       THEN
136149       xla_accounting_err_pkg.build_message
136150                                     (p_appli_s_name            => 'XLA'
136151                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
136152                                     ,p_token_1                 => 'LINE_NUMBER'
136153                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
136154                                     ,p_token_2                 => 'LINE_TYPE_NAME'
136155                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
136156                                                                              l_component_type
136157                                                                             ,l_component_code
136158                                                                             ,l_component_type_code
136159                                                                             ,l_component_appl_id
136160                                                                             ,l_amb_context_code
136161                                                                             ,l_entity_code
136162                                                                             ,l_event_class_code
136163                                                                            )
136164                                     ,p_token_3                 => 'OWNER'
136165                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
136166                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
136167                                                                           ,p_lookup_code    => l_component_type_code
136168                                                                          )
136169                                     ,p_token_4                 => 'PRODUCT_NAME'
136170                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
136171                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
136172                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
136173                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
136174                                     ,p_ae_header_id            =>  NULL
136175                                        );
136176 
136177         IF (C_LEVEL_ERROR>= g_log_level) THEN
136178                  trace
136179                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
136180                       ,p_level    => C_LEVEL_ERROR
136181                       ,p_module   => l_log_module);
136182         END IF;
136183       END IF;
136184    END IF;
136185    --
136186    --
136187    ------------------------------------------------------------------------------------------------
136188    -- 4219869 Business Flow
136189    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
136190    -- Prior Entry.  Currently, the following code is always generated.
136191    ------------------------------------------------------------------------------------------------
136192    XLA_AE_LINES_PKG.ValidateCurrentLine;
136193 
136194    ------------------------------------------------------------------------------------
136195    -- 4219869 Business Flow
136196    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
136197    ------------------------------------------------------------------------------------
136198    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
136199 
136200    ----------------------------------------------------------------------------------
136201    -- 4219869 Business Flow
136202    -- Update journal entry status -- Need to generate this within IF <condition>
136203    ----------------------------------------------------------------------------------
136204    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
136205          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
136206          ,p_balance_type_code => l_balance_type_code
136207          );
136208 
136209    -------------------------------------------------------------------------------------------
136210    -- 4262811 - Generate the Accrual Reversal lines
136211    -------------------------------------------------------------------------------------------
136212    BEGIN
136213       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
136214                               (g_array_event(p_event_id).array_value_num('header_index'));
136215       IF l_acc_rev_flag IS NULL THEN
136216          l_acc_rev_flag := 'N';
136217       END IF;
136218    EXCEPTION
136219       WHEN OTHERS THEN
136220          l_acc_rev_flag := 'N';
136221    END;
136222    --
136223    IF (l_acc_rev_flag = 'Y') THEN
136224 
136225        -- 4645092  ------------------------------------------------------------------------------
136226        -- To allow MPA report to determine if it should generate report process
136227        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
136228        ------------------------------------------------------------------------------------------
136229 
136230        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
136231        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
136232    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
136233    -- call ADRs
136234    -- Bug 4922099
136235    --
136236    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
136237         (NVL(l_actual_upg_option, 'N') = 'O') OR
136238         (NVL(l_enc_upg_option, 'N') = 'O')
136239       )
136240    THEN
136241    NULL;
136242    --
136243    --
136244    
136245   l_ccid := AcctDerRule_4(
136246            p_application_id           => p_application_id
136247          , p_ae_header_id             => l_ae_header_id 
136248 , p_source_4 => p_source_4
136249          , x_transaction_coa_id       => l_adr_transaction_coa_id
136250          , x_accounting_coa_id        => l_adr_accounting_coa_id
136251          , x_value_type_code          => l_adr_value_type_code
136252          , p_side                     => 'NA'
136253    );
136254 
136255    xla_ae_lines_pkg.set_ccid(
136256     p_code_combination_id          => l_ccid
136257   , p_value_type_code              => l_adr_value_type_code
136258   , p_transaction_coa_id           => l_adr_transaction_coa_id
136259   , p_accounting_coa_id            => l_adr_accounting_coa_id
136260   , p_adr_code                     => 'CST_DEFAULT'
136261   , p_adr_type_code                => 'S'
136262   , p_component_type               => l_component_type
136263   , p_component_code               => l_component_code
136264   , p_component_type_code          => l_component_type_code
136265   , p_component_appl_id            => l_component_appl_id
136266   , p_amb_context_code             => l_amb_context_code
136267   , p_side                         => 'NA'
136268   );
136269 
136270 
136271    --
136272    --
136273    END IF;
136274 
136275        --
136276        -- Update the line information that should be overwritten
136277        --
136278        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
136279                                          p_header_num   => 1);
136280        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
136281 
136282        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
136283 
136284        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
136285           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
136286        END IF;
136287 
136288       --
136289       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
136290       --
136291       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
136292           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
136293       ELSE
136294           ---------------------------------------------------------------------------------------------------
136295           -- 4262811a Switch Sign
136296           ---------------------------------------------------------------------------------------------------
136297           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
136298           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
136299                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
136300           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
136301                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
136302           -- 5132302
136303           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
136304                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
136305 
136306       END IF;
136307 
136308       -- 4955764
136309       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
136310       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
136311 
136312 
136313       XLA_AE_LINES_PKG.ValidateCurrentLine;
136314       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
136315 
136316       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
136317                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
136318                ,p_balance_type_code => l_balance_type_code);
136319 
136320    END IF;
136321 
136322    -----------------------------------------------------------------------------------------
136323    -- 4262811 Multiperiod Accounting
136324    -----------------------------------------------------------------------------------------
136325      -- No MPA option is assigned.
136326 
136327 
136328 END IF;
136329 END IF;
136330 --
136331 
136332 --
136333 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
136334    trace
136335       (p_msg      => 'END of AcctLineType_246'
136336       ,p_level    => C_LEVEL_PROCEDURE
136337       ,p_module   => l_log_module);
136338 END IF;
136339 --
136340 EXCEPTION
136341   WHEN xla_exceptions_pkg.application_exception THEN
136342       RAISE;
136343   WHEN OTHERS THEN
136344        xla_exceptions_pkg.raise_message
136345            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_246');
136346 END AcctLineType_246;
136347 --
136348 
136349 ---------------------------------------
136350 --
136351 -- PRIVATE FUNCTION
136352 --         AcctLineType_247
136353 --
136354 ---------------------------------------
136355 PROCEDURE AcctLineType_247 (
136356   p_application_id        IN NUMBER
136357  ,p_event_id              IN NUMBER
136358  ,p_calculate_acctd_flag  IN VARCHAR2
136359  ,p_calculate_g_l_flag    IN VARCHAR2
136360  ,p_actual_flag           IN OUT VARCHAR2
136361  ,p_balance_type_code     OUT VARCHAR2
136362  ,p_gain_or_loss_ref      OUT VARCHAR2
136363  
136364 --Cost Management Default Account
136365  , p_source_4            IN NUMBER
136366 --Receiving Accounting Line Type
136367  , p_source_5            IN VARCHAR2
136368 --DISTRIBUTION_IDENTIFIER
136369  , p_source_11            IN NUMBER
136370 --Distribution Type
136371  , p_source_12            IN VARCHAR2
136372  , p_source_12_meaning    IN VARCHAR2
136373 --Entered Currency Code
136374  , p_source_15            IN VARCHAR2
136375 --Entered Amount
136376  , p_source_18            IN NUMBER
136377 --Currency Conversion Date
136378  , p_source_19            IN DATE
136379 --Currency Conversion Rate
136380  , p_source_20            IN NUMBER
136381 --Currency Conversion Type
136382  , p_source_21            IN VARCHAR2
136383 --Accounted Amount
136384  , p_source_22            IN NUMBER
136385 )
136386 IS
136387 
136388 l_component_type              VARCHAR2(80);
136389 l_component_code              VARCHAR2(30);
136390 l_component_type_code         VARCHAR2(1);
136391 l_component_appl_id           INTEGER;
136392 l_amb_context_code            VARCHAR2(30);
136393 l_entity_code                 VARCHAR2(30);
136394 l_event_class_code            VARCHAR2(30);
136395 l_ae_header_id                NUMBER;
136396 l_event_type_code             VARCHAR2(30);
136397 l_line_definition_code        VARCHAR2(30);
136398 l_line_definition_owner_code  VARCHAR2(1);
136399 --
136400 -- adr variables
136401 l_segment                     VARCHAR2(30);
136402 l_ccid                        NUMBER;
136403 l_adr_transaction_coa_id      NUMBER;
136404 l_adr_accounting_coa_id       NUMBER;
136405 l_adr_flexfield_segment_code  VARCHAR2(30);
136406 l_adr_flex_value_set_id       NUMBER;
136407 l_adr_value_type_code         VARCHAR2(30);
136408 l_adr_value_combination_id    NUMBER;
136409 l_adr_value_segment_code      VARCHAR2(30);
136410 
136411 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
136412 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
136413 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
136414 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
136415 
136416 -- 4262811 Variables ------------------------------------------------------------------------------------------
136417 l_entered_amt_idx             NUMBER;
136418 l_accted_amt_idx              NUMBER;
136419 l_acc_rev_flag                VARCHAR2(1);
136420 l_accrual_line_num            NUMBER;
136421 l_tmp_amt                     NUMBER;
136422 l_acc_rev_natural_side_code   VARCHAR2(1);
136423 
136424 l_num_entries                 NUMBER;
136425 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
136426 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
136427 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
136428 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
136429 l_recog_line_1                NUMBER;
136430 l_recog_line_2                NUMBER;
136431 
136432 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
136433 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
136434 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
136435 
136436 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
136437 
136438 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
136439 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
136440 
136441 ---------------------------------------------------------------------------------------------------------------
136442 
136443 
136444 --
136445 -- bulk performance
136446 --
136447 l_balance_type_code           VARCHAR2(1);
136448 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
136449 l_log_module                  VARCHAR2(240);
136450 
136451 --
136452 -- Upgrade strategy
136453 --
136454 l_actual_upg_option           VARCHAR2(1);
136455 l_enc_upg_option           VARCHAR2(1);
136456 
136457 --
136458 BEGIN
136459 --
136460 IF g_log_enabled THEN
136461       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_247';
136462 END IF;
136463 --
136464 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
136465 
136466       trace
136467          (p_msg      => 'BEGIN of AcctLineType_247'
136468          ,p_level    => C_LEVEL_PROCEDURE
136469          ,p_module   => l_log_module);
136470 
136471 END IF;
136472 --
136473 l_component_type             := 'AMB_JLT';
136474 l_component_code             := 'RETROACTIVE_PRICE_ADJ';
136475 l_component_type_code        := 'S';
136476 l_component_appl_id          :=  707;
136477 l_amb_context_code           := 'DEFAULT';
136478 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
136479 l_event_class_code           := 'RETR_PRICE_ADJ_RCV';
136480 l_event_type_code            := 'RETR_PRICE_ADJ_RCV_ALL';
136481 l_line_definition_owner_code := 'S';
136482 l_line_definition_code       := 'RETR_PRICE_ADJ_RCV';
136483 --
136484 l_balance_type_code          := 'A';
136485 l_segment                     := NULL;
136486 l_ccid                        := NULL;
136487 l_adr_transaction_coa_id      := NULL;
136488 l_adr_accounting_coa_id       := NULL;
136489 l_adr_flexfield_segment_code  := NULL;
136490 l_adr_flex_value_set_id       := NULL;
136491 l_adr_value_type_code         := NULL;
136492 l_adr_value_combination_id    := NULL;
136493 l_adr_value_segment_code      := NULL;
136494 
136495 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
136496 l_bflow_class_code           := '';    -- 4219869 Business Flow
136497 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
136498 l_budgetary_control_flag     := 'N';
136499 
136500 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
136501 l_bflow_applied_to_amt       := NULL; -- 5132302
136502 l_entered_amt_idx            := NULL;          -- 4262811
136503 l_accted_amt_idx             := NULL;          -- 4262811
136504 l_acc_rev_flag               := NULL;          -- 4262811
136505 l_accrual_line_num           := NULL;          -- 4262811
136506 l_tmp_amt                    := NULL;          -- 4262811
136507 --
136508  
136509 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
136510     l_balance_type_code <> 'B' THEN
136511 IF NVL(p_source_5,'
136512 ') =  'Retroprice Adjustment'
136513  THEN 
136514 
136515    --
136516    XLA_AE_LINES_PKG.SetNewLine;
136517 
136518    p_balance_type_code          := l_balance_type_code;
136519    -- set the flag so later we will know whether the gain loss line needs to be created
136520    
136521    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
136522      p_actual_flag :='A';
136523    END IF;
136524 
136525    --
136526    -- bulk performance
136527    --
136528    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
136529                                       p_header_num   => 0); -- 4262811
136530    --
136531    -- set accounting line options
136532    --
136533    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
136534            p_natural_side_code          => 'D'
136535          , p_gain_or_loss_flag          => 'N'
136536          , p_gl_transfer_mode_code      => 'S'
136537          , p_acct_entry_type_code       => 'A'
136538          , p_switch_side_flag           => 'Y'
136539          , p_merge_duplicate_code       => 'N'
136540          );
136541    --
136542    l_acc_rev_natural_side_code := 'C';  -- 4262811
136543    -- 
136544    --
136545    -- set accounting line type info
136546    --
136547    xla_ae_lines_pkg.SetAcctLineType
136548       (p_component_type             => l_component_type
136549       ,p_event_type_code            => l_event_type_code
136550       ,p_line_definition_owner_code => l_line_definition_owner_code
136551       ,p_line_definition_code       => l_line_definition_code
136552       ,p_accounting_line_code       => l_component_code
136553       ,p_accounting_line_type_code  => l_component_type_code
136554       ,p_accounting_line_appl_id    => l_component_appl_id
136555       ,p_amb_context_code           => l_amb_context_code
136556       ,p_entity_code                => l_entity_code
136557       ,p_event_class_code           => l_event_class_code);
136558    --
136559    -- set accounting class
136560    --
136561    xla_ae_lines_pkg.SetAcctClass(
136562            p_accounting_class_code  => 'RETROACTIVE_PRICE_ADJUSTMENT'
136563          , p_ae_header_id           => l_ae_header_id
136564          );
136565 
136566    --
136567    -- set rounding class
136568    --
136569    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
136570                       'RETROACTIVE_PRICE_ADJUSTMENT';
136571 
136572    --
136573    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
136574    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
136575    --
136576    -- bulk performance
136577    --
136578    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
136579 
136580    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
136581       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
136582 
136583    -- 4955764
136584    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
136585       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
136586 
136587    -- 4458381 Public Sector Enh
136588    
136589    --
136590    -- set accounting attributes for the line type
136591    --
136592    l_entered_amt_idx := 3;
136593    l_accted_amt_idx  := 8;
136594    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
136595    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
136596    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
136597    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
136598    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
136599    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
136600    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
136601    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
136602    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
136603    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
136604    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
136605    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
136606    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
136607    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
136608    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
136609    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
136610    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
136611 
136612    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
136613    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
136614 
136615    ---------------------------------------------------------------------------------------------------------------
136616    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
136617    ---------------------------------------------------------------------------------------------------------------
136618    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
136619 
136620    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
136621    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
136622 
136623    IF xla_accounting_cache_pkg.GetValueChar
136624          (p_source_code         => 'LEDGER_CATEGORY_CODE'
136625          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
136626    AND l_bflow_method_code = 'PRIOR_ENTRY'
136627 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
136628    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
136629          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
136630        )
136631    THEN
136632          xla_ae_lines_pkg.BflowUpgEntry
136633            (p_business_method_code    => l_bflow_method_code
136634            ,p_business_class_code     => l_bflow_class_code
136635            ,p_balance_type            => l_balance_type_code);
136636    ELSE
136637       NULL;
136638 -- No business flow processing for business flow method of NONE.
136639    END IF;
136640 
136641    --
136642    -- call analytical criteria
136643    --
136644    
136645    --
136646    -- call description
136647    --
136648    -- No description or it is inherited.
136649    --
136650    -- call ADRs
136651    -- Bug 4922099
136652    --
136653    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
136654         (NVL(l_actual_upg_option, 'N') = 'O') OR
136655         (NVL(l_enc_upg_option, 'N') = 'O')
136656       )
136657    THEN
136658    NULL;
136659    --
136660    --
136661    
136662   l_ccid := AcctDerRule_4(
136663            p_application_id           => p_application_id
136664          , p_ae_header_id             => l_ae_header_id 
136665 , p_source_4 => p_source_4
136666          , x_transaction_coa_id       => l_adr_transaction_coa_id
136667          , x_accounting_coa_id        => l_adr_accounting_coa_id
136668          , x_value_type_code          => l_adr_value_type_code
136669          , p_side                     => 'NA'
136670    );
136671 
136672    xla_ae_lines_pkg.set_ccid(
136673     p_code_combination_id          => l_ccid
136674   , p_value_type_code              => l_adr_value_type_code
136675   , p_transaction_coa_id           => l_adr_transaction_coa_id
136676   , p_accounting_coa_id            => l_adr_accounting_coa_id
136677   , p_adr_code                     => 'CST_DEFAULT'
136678   , p_adr_type_code                => 'S'
136679   , p_component_type               => l_component_type
136680   , p_component_code               => l_component_code
136681   , p_component_type_code          => l_component_type_code
136682   , p_component_appl_id            => l_component_appl_id
136683   , p_amb_context_code             => l_amb_context_code
136684   , p_side                         => 'NA'
136685   );
136686 
136687 
136688    --
136689    --
136690    END IF;
136691    --
136692    -- Bug 4922099
136693    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
136694           (NVL(l_enc_upg_option, 'N') = 'O')
136695         ) AND
136696         (l_bflow_method_code = 'PRIOR_ENTRY')
136697       )
136698    THEN
136699       IF
136700       --
136701       1 = 2
136702       --
136703       THEN
136704       xla_accounting_err_pkg.build_message
136705                                     (p_appli_s_name            => 'XLA'
136706                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
136707                                     ,p_token_1                 => 'LINE_NUMBER'
136708                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
136709                                     ,p_token_2                 => 'LINE_TYPE_NAME'
136710                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
136711                                                                              l_component_type
136712                                                                             ,l_component_code
136713                                                                             ,l_component_type_code
136714                                                                             ,l_component_appl_id
136715                                                                             ,l_amb_context_code
136716                                                                             ,l_entity_code
136717                                                                             ,l_event_class_code
136718                                                                            )
136719                                     ,p_token_3                 => 'OWNER'
136720                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
136721                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
136722                                                                           ,p_lookup_code    => l_component_type_code
136723                                                                          )
136724                                     ,p_token_4                 => 'PRODUCT_NAME'
136725                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
136726                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
136727                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
136728                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
136729                                     ,p_ae_header_id            =>  NULL
136730                                        );
136731 
136732         IF (C_LEVEL_ERROR>= g_log_level) THEN
136733                  trace
136734                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
136735                       ,p_level    => C_LEVEL_ERROR
136736                       ,p_module   => l_log_module);
136737         END IF;
136738       END IF;
136739    END IF;
136740    --
136741    --
136742    ------------------------------------------------------------------------------------------------
136743    -- 4219869 Business Flow
136744    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
136745    -- Prior Entry.  Currently, the following code is always generated.
136746    ------------------------------------------------------------------------------------------------
136747    XLA_AE_LINES_PKG.ValidateCurrentLine;
136748 
136749    ------------------------------------------------------------------------------------
136750    -- 4219869 Business Flow
136751    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
136752    ------------------------------------------------------------------------------------
136753    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
136754 
136755    ----------------------------------------------------------------------------------
136756    -- 4219869 Business Flow
136757    -- Update journal entry status -- Need to generate this within IF <condition>
136758    ----------------------------------------------------------------------------------
136759    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
136760          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
136761          ,p_balance_type_code => l_balance_type_code
136762          );
136763 
136764    -------------------------------------------------------------------------------------------
136765    -- 4262811 - Generate the Accrual Reversal lines
136766    -------------------------------------------------------------------------------------------
136767    BEGIN
136768       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
136769                               (g_array_event(p_event_id).array_value_num('header_index'));
136770       IF l_acc_rev_flag IS NULL THEN
136771          l_acc_rev_flag := 'N';
136772       END IF;
136773    EXCEPTION
136774       WHEN OTHERS THEN
136775          l_acc_rev_flag := 'N';
136776    END;
136777    --
136778    IF (l_acc_rev_flag = 'Y') THEN
136779 
136780        -- 4645092  ------------------------------------------------------------------------------
136781        -- To allow MPA report to determine if it should generate report process
136782        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
136783        ------------------------------------------------------------------------------------------
136784 
136785        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
136786        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
136787    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
136788    -- call ADRs
136789    -- Bug 4922099
136790    --
136791    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
136792         (NVL(l_actual_upg_option, 'N') = 'O') OR
136793         (NVL(l_enc_upg_option, 'N') = 'O')
136794       )
136795    THEN
136796    NULL;
136797    --
136798    --
136799    
136800   l_ccid := AcctDerRule_4(
136801            p_application_id           => p_application_id
136802          , p_ae_header_id             => l_ae_header_id 
136803 , p_source_4 => p_source_4
136804          , x_transaction_coa_id       => l_adr_transaction_coa_id
136805          , x_accounting_coa_id        => l_adr_accounting_coa_id
136806          , x_value_type_code          => l_adr_value_type_code
136807          , p_side                     => 'NA'
136808    );
136809 
136810    xla_ae_lines_pkg.set_ccid(
136811     p_code_combination_id          => l_ccid
136812   , p_value_type_code              => l_adr_value_type_code
136813   , p_transaction_coa_id           => l_adr_transaction_coa_id
136814   , p_accounting_coa_id            => l_adr_accounting_coa_id
136815   , p_adr_code                     => 'CST_DEFAULT'
136816   , p_adr_type_code                => 'S'
136817   , p_component_type               => l_component_type
136818   , p_component_code               => l_component_code
136819   , p_component_type_code          => l_component_type_code
136820   , p_component_appl_id            => l_component_appl_id
136821   , p_amb_context_code             => l_amb_context_code
136822   , p_side                         => 'NA'
136823   );
136824 
136825 
136826    --
136827    --
136828    END IF;
136829 
136830        --
136831        -- Update the line information that should be overwritten
136832        --
136833        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
136834                                          p_header_num   => 1);
136835        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
136836 
136837        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
136838 
136839        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
136840           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
136841        END IF;
136842 
136843       --
136844       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
136845       --
136846       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
136847           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
136848       ELSE
136849           ---------------------------------------------------------------------------------------------------
136850           -- 4262811a Switch Sign
136851           ---------------------------------------------------------------------------------------------------
136852           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
136853           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
136854                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
136855           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
136856                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
136857           -- 5132302
136858           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
136859                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
136860 
136861       END IF;
136862 
136863       -- 4955764
136864       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
136865       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
136866 
136867 
136868       XLA_AE_LINES_PKG.ValidateCurrentLine;
136869       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
136870 
136871       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
136872                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
136873                ,p_balance_type_code => l_balance_type_code);
136874 
136875    END IF;
136876 
136877    -----------------------------------------------------------------------------------------
136878    -- 4262811 Multiperiod Accounting
136879    -----------------------------------------------------------------------------------------
136880      -- No MPA option is assigned.
136881 
136882 
136883 END IF;
136884 END IF;
136885 --
136886 
136887 --
136888 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
136889    trace
136890       (p_msg      => 'END of AcctLineType_247'
136891       ,p_level    => C_LEVEL_PROCEDURE
136892       ,p_module   => l_log_module);
136893 END IF;
136894 --
136895 EXCEPTION
136896   WHEN xla_exceptions_pkg.application_exception THEN
136897       RAISE;
136898   WHEN OTHERS THEN
136899        xla_exceptions_pkg.raise_message
136900            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_247');
136901 END AcctLineType_247;
136902 --
136903 
136904 ---------------------------------------
136905 --
136906 -- PRIVATE FUNCTION
136907 --         AcctLineType_248
136908 --
136909 ---------------------------------------
136910 PROCEDURE AcctLineType_248 (
136911   p_application_id        IN NUMBER
136912  ,p_event_id              IN NUMBER
136913  ,p_calculate_acctd_flag  IN VARCHAR2
136914  ,p_calculate_g_l_flag    IN VARCHAR2
136915  ,p_actual_flag           IN OUT VARCHAR2
136916  ,p_balance_type_code     OUT VARCHAR2
136917  ,p_gain_or_loss_ref      OUT VARCHAR2
136918  
136919 --Cost Management Default Account
136920  , p_source_4            IN NUMBER
136921 --Applied to Application ID
136922  , p_source_6            IN NUMBER
136923 --Applied to Distribution Link Type
136924  , p_source_7            IN VARCHAR2
136925 --Applied to Entity Code
136926  , p_source_8            IN VARCHAR2
136927 --Applied To Purchase Document Identifier
136928  , p_source_10            IN NUMBER
136929 --DISTRIBUTION_IDENTIFIER
136930  , p_source_11            IN NUMBER
136931 --Distribution Type
136932  , p_source_12            IN VARCHAR2
136933  , p_source_12_meaning    IN VARCHAR2
136934 --PO Budget Account
136935  , p_source_13            IN NUMBER
136936 --Encumbrance Reversal Amount Entered
136937  , p_source_14            IN NUMBER
136938 --Entered Currency Code
136939  , p_source_15            IN VARCHAR2
136940 --Transaction Encumbrance Reversal Amount
136941  , p_source_16            IN NUMBER
136942 --Entered Amount
136943  , p_source_18            IN NUMBER
136944 --Currency Conversion Date
136945  , p_source_19            IN DATE
136946 --Currency Conversion Rate
136947  , p_source_20            IN NUMBER
136948 --Currency Conversion Type
136949  , p_source_21            IN VARCHAR2
136950 --Accounted Amount
136951  , p_source_22            IN NUMBER
136952 --Purchasing Encumbrance Type Identifier
136953  , p_source_23            IN NUMBER
136954 --Accounting Line Type
136955  , p_source_24            IN NUMBER
136956 --Costing Encumbrance Upgrade Option
136957  , p_source_27            IN VARCHAR2
136958 --TXN_PO_DISTRIBUTION_ID
136959  , p_source_28            IN NUMBER
136960 )
136961 IS
136962 
136963 l_component_type              VARCHAR2(80);
136964 l_component_code              VARCHAR2(30);
136965 l_component_type_code         VARCHAR2(1);
136966 l_component_appl_id           INTEGER;
136967 l_amb_context_code            VARCHAR2(30);
136968 l_entity_code                 VARCHAR2(30);
136969 l_event_class_code            VARCHAR2(30);
136970 l_ae_header_id                NUMBER;
136971 l_event_type_code             VARCHAR2(30);
136972 l_line_definition_code        VARCHAR2(30);
136973 l_line_definition_owner_code  VARCHAR2(1);
136974 --
136975 -- adr variables
136976 l_segment                     VARCHAR2(30);
136977 l_ccid                        NUMBER;
136978 l_adr_transaction_coa_id      NUMBER;
136979 l_adr_accounting_coa_id       NUMBER;
136980 l_adr_flexfield_segment_code  VARCHAR2(30);
136981 l_adr_flex_value_set_id       NUMBER;
136982 l_adr_value_type_code         VARCHAR2(30);
136983 l_adr_value_combination_id    NUMBER;
136984 l_adr_value_segment_code      VARCHAR2(30);
136985 
136986 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
136987 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
136988 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
136989 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
136990 
136991 -- 4262811 Variables ------------------------------------------------------------------------------------------
136992 l_entered_amt_idx             NUMBER;
136993 l_accted_amt_idx              NUMBER;
136994 l_acc_rev_flag                VARCHAR2(1);
136995 l_accrual_line_num            NUMBER;
136996 l_tmp_amt                     NUMBER;
136997 l_acc_rev_natural_side_code   VARCHAR2(1);
136998 
136999 l_num_entries                 NUMBER;
137000 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
137001 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
137002 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
137003 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
137004 l_recog_line_1                NUMBER;
137005 l_recog_line_2                NUMBER;
137006 
137007 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
137008 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
137009 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
137010 
137011 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
137012 
137013 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
137014 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
137015 
137016 ---------------------------------------------------------------------------------------------------------------
137017 
137018 
137019 --
137020 -- bulk performance
137021 --
137022 l_balance_type_code           VARCHAR2(1);
137023 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
137024 l_log_module                  VARCHAR2(240);
137025 
137026 --
137027 -- Upgrade strategy
137028 --
137029 l_actual_upg_option           VARCHAR2(1);
137030 l_enc_upg_option           VARCHAR2(1);
137031 
137032 --
137033 BEGIN
137034 --
137035 IF g_log_enabled THEN
137036       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_248';
137037 END IF;
137038 --
137039 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
137040 
137041       trace
137042          (p_msg      => 'BEGIN of AcctLineType_248'
137043          ,p_level    => C_LEVEL_PROCEDURE
137044          ,p_module   => l_log_module);
137045 
137046 END IF;
137047 --
137048 l_component_type             := 'AMB_JLT';
137049 l_component_code             := 'SHIKYU_VARIANCE';
137050 l_component_type_code        := 'S';
137051 l_component_appl_id          :=  707;
137052 l_amb_context_code           := 'DEFAULT';
137053 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
137054 l_event_class_code           := 'PURCHASE_ORDER';
137055 l_event_type_code            := 'PURCHASE_ORDER_ALL';
137056 l_line_definition_owner_code := 'S';
137057 l_line_definition_code       := 'PURCHASE_ORDER';
137058 --
137059 l_balance_type_code          := 'A';
137060 l_segment                     := NULL;
137061 l_ccid                        := NULL;
137062 l_adr_transaction_coa_id      := NULL;
137063 l_adr_accounting_coa_id       := NULL;
137064 l_adr_flexfield_segment_code  := NULL;
137065 l_adr_flex_value_set_id       := NULL;
137066 l_adr_value_type_code         := NULL;
137067 l_adr_value_combination_id    := NULL;
137068 l_adr_value_segment_code      := NULL;
137069 
137070 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
137071 l_bflow_class_code           := '';    -- 4219869 Business Flow
137072 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
137073 l_budgetary_control_flag     := 'N';
137074 
137075 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
137076 l_bflow_applied_to_amt       := NULL; -- 5132302
137077 l_entered_amt_idx            := NULL;          -- 4262811
137078 l_accted_amt_idx             := NULL;          -- 4262811
137079 l_acc_rev_flag               := NULL;          -- 4262811
137080 l_accrual_line_num           := NULL;          -- 4262811
137081 l_tmp_amt                    := NULL;          -- 4262811
137082 --
137083  
137084 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
137085     l_balance_type_code <> 'B' THEN
137086 IF NVL(p_source_24,9E125) =  33
137087  THEN 
137088 
137089    --
137090    XLA_AE_LINES_PKG.SetNewLine;
137091 
137092    p_balance_type_code          := l_balance_type_code;
137093    -- set the flag so later we will know whether the gain loss line needs to be created
137094    
137095    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
137096      p_actual_flag :='A';
137097    END IF;
137098 
137099    --
137100    -- bulk performance
137101    --
137102    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
137103                                       p_header_num   => 0); -- 4262811
137104    --
137105    -- set accounting line options
137106    --
137107    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
137108            p_natural_side_code          => 'D'
137109          , p_gain_or_loss_flag          => 'N'
137110          , p_gl_transfer_mode_code      => 'S'
137111          , p_acct_entry_type_code       => 'A'
137112          , p_switch_side_flag           => 'Y'
137113          , p_merge_duplicate_code       => 'N'
137114          );
137115    --
137116    l_acc_rev_natural_side_code := 'C';  -- 4262811
137117    -- 
137118    --
137119    -- set accounting line type info
137120    --
137121    xla_ae_lines_pkg.SetAcctLineType
137122       (p_component_type             => l_component_type
137123       ,p_event_type_code            => l_event_type_code
137124       ,p_line_definition_owner_code => l_line_definition_owner_code
137125       ,p_line_definition_code       => l_line_definition_code
137126       ,p_accounting_line_code       => l_component_code
137127       ,p_accounting_line_type_code  => l_component_type_code
137128       ,p_accounting_line_appl_id    => l_component_appl_id
137129       ,p_amb_context_code           => l_amb_context_code
137130       ,p_entity_code                => l_entity_code
137131       ,p_event_class_code           => l_event_class_code);
137132    --
137133    -- set accounting class
137134    --
137135    xla_ae_lines_pkg.SetAcctClass(
137136            p_accounting_class_code  => 'SHIKYU_VARIANCE'
137137          , p_ae_header_id           => l_ae_header_id
137138          );
137139 
137140    --
137141    -- set rounding class
137142    --
137143    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
137144                       'SHIKYU_VARIANCE';
137145 
137146    --
137147    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
137148    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
137149    --
137150    -- bulk performance
137151    --
137152    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
137153 
137154    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
137155       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
137156 
137157    -- 4955764
137158    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
137159       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
137160 
137161    -- 4458381 Public Sector Enh
137162    
137163    --
137164    -- set accounting attributes for the line type
137165    --
137166    l_entered_amt_idx := 17;
137167    l_accted_amt_idx  := 22;
137168    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
137169    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
137170    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
137171    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
137172    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
137173    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
137174    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
137175    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
137176    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
137177    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
137178    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_10);
137179    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
137180    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
137181    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
137182    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
137183    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
137184    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_13);
137185    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
137186    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
137187    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
137188    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
137189    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
137190    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
137191    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
137192    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_13);
137193    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
137194    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
137195    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
137196    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
137197    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
137198    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
137199    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
137200    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
137201    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
137202    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
137203    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
137204    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
137205    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
137206    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
137207    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
137208    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
137209    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
137210    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
137211    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
137212    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
137213    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
137214    l_rec_acct_attrs.array_num_value(23)  := p_source_23;
137215    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
137216    l_rec_acct_attrs.array_num_value(24)  := p_source_23;
137217 
137218    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
137219    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
137220 
137221    ---------------------------------------------------------------------------------------------------------------
137222    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
137223    ---------------------------------------------------------------------------------------------------------------
137224    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
137225 
137226    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
137227    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
137228 
137229    IF xla_accounting_cache_pkg.GetValueChar
137230          (p_source_code         => 'LEDGER_CATEGORY_CODE'
137231          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
137232    AND l_bflow_method_code = 'PRIOR_ENTRY'
137233 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
137234    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
137235          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
137236        )
137237    THEN
137238          xla_ae_lines_pkg.BflowUpgEntry
137239            (p_business_method_code    => l_bflow_method_code
137240            ,p_business_class_code     => l_bflow_class_code
137241            ,p_balance_type            => l_balance_type_code);
137242    ELSE
137243       NULL;
137244 -- No business flow processing for business flow method of NONE.
137245    END IF;
137246 
137247    --
137248    -- call analytical criteria
137249    --
137250    
137251    --
137252    -- call description
137253    --
137254    -- No description or it is inherited.
137255    --
137256    -- call ADRs
137257    -- Bug 4922099
137258    --
137259    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
137260         (NVL(l_actual_upg_option, 'N') = 'O') OR
137261         (NVL(l_enc_upg_option, 'N') = 'O')
137262       )
137263    THEN
137264    NULL;
137265    --
137266    --
137267    
137268   l_ccid := AcctDerRule_4(
137269            p_application_id           => p_application_id
137270          , p_ae_header_id             => l_ae_header_id 
137271 , p_source_4 => p_source_4
137272          , x_transaction_coa_id       => l_adr_transaction_coa_id
137273          , x_accounting_coa_id        => l_adr_accounting_coa_id
137274          , x_value_type_code          => l_adr_value_type_code
137275          , p_side                     => 'NA'
137276    );
137277 
137278    xla_ae_lines_pkg.set_ccid(
137279     p_code_combination_id          => l_ccid
137280   , p_value_type_code              => l_adr_value_type_code
137281   , p_transaction_coa_id           => l_adr_transaction_coa_id
137282   , p_accounting_coa_id            => l_adr_accounting_coa_id
137283   , p_adr_code                     => 'CST_DEFAULT'
137284   , p_adr_type_code                => 'S'
137285   , p_component_type               => l_component_type
137286   , p_component_code               => l_component_code
137287   , p_component_type_code          => l_component_type_code
137288   , p_component_appl_id            => l_component_appl_id
137289   , p_amb_context_code             => l_amb_context_code
137290   , p_side                         => 'NA'
137291   );
137292 
137293 
137294    --
137295    --
137296    END IF;
137297    --
137298    -- Bug 4922099
137299    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
137300           (NVL(l_enc_upg_option, 'N') = 'O')
137301         ) AND
137302         (l_bflow_method_code = 'PRIOR_ENTRY')
137303       )
137304    THEN
137305       IF
137306       --
137307       1 = 2
137308       --
137309       THEN
137310       xla_accounting_err_pkg.build_message
137311                                     (p_appli_s_name            => 'XLA'
137312                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
137313                                     ,p_token_1                 => 'LINE_NUMBER'
137314                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
137315                                     ,p_token_2                 => 'LINE_TYPE_NAME'
137316                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
137317                                                                              l_component_type
137318                                                                             ,l_component_code
137319                                                                             ,l_component_type_code
137320                                                                             ,l_component_appl_id
137321                                                                             ,l_amb_context_code
137322                                                                             ,l_entity_code
137323                                                                             ,l_event_class_code
137324                                                                            )
137325                                     ,p_token_3                 => 'OWNER'
137326                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
137327                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
137328                                                                           ,p_lookup_code    => l_component_type_code
137329                                                                          )
137330                                     ,p_token_4                 => 'PRODUCT_NAME'
137331                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
137332                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
137333                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
137334                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
137335                                     ,p_ae_header_id            =>  NULL
137336                                        );
137337 
137338         IF (C_LEVEL_ERROR>= g_log_level) THEN
137339                  trace
137340                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
137341                       ,p_level    => C_LEVEL_ERROR
137342                       ,p_module   => l_log_module);
137343         END IF;
137344       END IF;
137345    END IF;
137346    --
137347    --
137348    ------------------------------------------------------------------------------------------------
137349    -- 4219869 Business Flow
137350    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
137351    -- Prior Entry.  Currently, the following code is always generated.
137352    ------------------------------------------------------------------------------------------------
137353    XLA_AE_LINES_PKG.ValidateCurrentLine;
137354 
137355    ------------------------------------------------------------------------------------
137356    -- 4219869 Business Flow
137357    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
137358    ------------------------------------------------------------------------------------
137359    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
137360 
137361    ----------------------------------------------------------------------------------
137362    -- 4219869 Business Flow
137363    -- Update journal entry status -- Need to generate this within IF <condition>
137364    ----------------------------------------------------------------------------------
137365    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
137366          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
137367          ,p_balance_type_code => l_balance_type_code
137368          );
137369 
137370    -------------------------------------------------------------------------------------------
137371    -- 4262811 - Generate the Accrual Reversal lines
137372    -------------------------------------------------------------------------------------------
137373    BEGIN
137374       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
137375                               (g_array_event(p_event_id).array_value_num('header_index'));
137376       IF l_acc_rev_flag IS NULL THEN
137377          l_acc_rev_flag := 'N';
137378       END IF;
137379    EXCEPTION
137380       WHEN OTHERS THEN
137381          l_acc_rev_flag := 'N';
137382    END;
137383    --
137384    IF (l_acc_rev_flag = 'Y') THEN
137385 
137386        -- 4645092  ------------------------------------------------------------------------------
137387        -- To allow MPA report to determine if it should generate report process
137388        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
137389        ------------------------------------------------------------------------------------------
137390 
137391        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
137392        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
137393    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
137394    -- call ADRs
137395    -- Bug 4922099
137396    --
137397    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
137398         (NVL(l_actual_upg_option, 'N') = 'O') OR
137399         (NVL(l_enc_upg_option, 'N') = 'O')
137400       )
137401    THEN
137402    NULL;
137403    --
137404    --
137405    
137406   l_ccid := AcctDerRule_4(
137407            p_application_id           => p_application_id
137408          , p_ae_header_id             => l_ae_header_id 
137409 , p_source_4 => p_source_4
137410          , x_transaction_coa_id       => l_adr_transaction_coa_id
137411          , x_accounting_coa_id        => l_adr_accounting_coa_id
137412          , x_value_type_code          => l_adr_value_type_code
137413          , p_side                     => 'NA'
137414    );
137415 
137416    xla_ae_lines_pkg.set_ccid(
137417     p_code_combination_id          => l_ccid
137418   , p_value_type_code              => l_adr_value_type_code
137419   , p_transaction_coa_id           => l_adr_transaction_coa_id
137420   , p_accounting_coa_id            => l_adr_accounting_coa_id
137421   , p_adr_code                     => 'CST_DEFAULT'
137422   , p_adr_type_code                => 'S'
137423   , p_component_type               => l_component_type
137424   , p_component_code               => l_component_code
137425   , p_component_type_code          => l_component_type_code
137426   , p_component_appl_id            => l_component_appl_id
137427   , p_amb_context_code             => l_amb_context_code
137428   , p_side                         => 'NA'
137429   );
137430 
137431 
137432    --
137433    --
137434    END IF;
137435 
137436        --
137437        -- Update the line information that should be overwritten
137438        --
137439        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
137440                                          p_header_num   => 1);
137441        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
137442 
137443        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
137444 
137445        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
137446           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
137447        END IF;
137448 
137449       --
137450       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
137451       --
137452       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
137453           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
137454       ELSE
137455           ---------------------------------------------------------------------------------------------------
137456           -- 4262811a Switch Sign
137457           ---------------------------------------------------------------------------------------------------
137458           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
137459           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
137460                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
137461           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
137462                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
137463           -- 5132302
137464           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
137465                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
137466 
137467       END IF;
137468 
137469       -- 4955764
137470       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
137471       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
137472 
137473 
137474       XLA_AE_LINES_PKG.ValidateCurrentLine;
137475       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
137476 
137477       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
137478                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
137479                ,p_balance_type_code => l_balance_type_code);
137480 
137481    END IF;
137482 
137483    -----------------------------------------------------------------------------------------
137484    -- 4262811 Multiperiod Accounting
137485    -----------------------------------------------------------------------------------------
137486      -- No MPA option is assigned.
137487 
137488 
137489 END IF;
137490 END IF;
137491 --
137492 
137493 --
137494 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
137495    trace
137496       (p_msg      => 'END of AcctLineType_248'
137497       ,p_level    => C_LEVEL_PROCEDURE
137498       ,p_module   => l_log_module);
137499 END IF;
137500 --
137501 EXCEPTION
137502   WHEN xla_exceptions_pkg.application_exception THEN
137503       RAISE;
137504   WHEN OTHERS THEN
137505        xla_exceptions_pkg.raise_message
137506            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_248');
137507 END AcctLineType_248;
137508 --
137509 
137510 ---------------------------------------
137511 --
137512 -- PRIVATE FUNCTION
137513 --         AcctLineType_249
137514 --
137515 ---------------------------------------
137516 PROCEDURE AcctLineType_249 (
137517   p_application_id        IN NUMBER
137518  ,p_event_id              IN NUMBER
137519  ,p_calculate_acctd_flag  IN VARCHAR2
137520  ,p_calculate_g_l_flag    IN VARCHAR2
137521  ,p_actual_flag           IN OUT VARCHAR2
137522  ,p_balance_type_code     OUT VARCHAR2
137523  ,p_gain_or_loss_ref      OUT VARCHAR2
137524  
137525 --Cost Management Default Account
137526  , p_source_4            IN NUMBER
137527 --DISTRIBUTION_IDENTIFIER
137528  , p_source_11            IN NUMBER
137529 --Distribution Type
137530  , p_source_12            IN VARCHAR2
137531  , p_source_12_meaning    IN VARCHAR2
137532 --Entered Currency Code
137533  , p_source_15            IN VARCHAR2
137534 --Entered Amount
137535  , p_source_18            IN NUMBER
137536 --Currency Conversion Date
137537  , p_source_19            IN DATE
137538 --Currency Conversion Rate
137539  , p_source_20            IN NUMBER
137540 --Currency Conversion Type
137541  , p_source_21            IN VARCHAR2
137542 --Accounted Amount
137543  , p_source_22            IN NUMBER
137544 --Accounting Line Type
137545  , p_source_24            IN NUMBER
137546 )
137547 IS
137548 
137549 l_component_type              VARCHAR2(80);
137550 l_component_code              VARCHAR2(30);
137551 l_component_type_code         VARCHAR2(1);
137552 l_component_appl_id           INTEGER;
137553 l_amb_context_code            VARCHAR2(30);
137554 l_entity_code                 VARCHAR2(30);
137555 l_event_class_code            VARCHAR2(30);
137556 l_ae_header_id                NUMBER;
137557 l_event_type_code             VARCHAR2(30);
137558 l_line_definition_code        VARCHAR2(30);
137559 l_line_definition_owner_code  VARCHAR2(1);
137560 --
137561 -- adr variables
137562 l_segment                     VARCHAR2(30);
137563 l_ccid                        NUMBER;
137564 l_adr_transaction_coa_id      NUMBER;
137565 l_adr_accounting_coa_id       NUMBER;
137566 l_adr_flexfield_segment_code  VARCHAR2(30);
137567 l_adr_flex_value_set_id       NUMBER;
137568 l_adr_value_type_code         VARCHAR2(30);
137569 l_adr_value_combination_id    NUMBER;
137570 l_adr_value_segment_code      VARCHAR2(30);
137571 
137572 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
137573 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
137574 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
137575 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
137576 
137577 -- 4262811 Variables ------------------------------------------------------------------------------------------
137578 l_entered_amt_idx             NUMBER;
137579 l_accted_amt_idx              NUMBER;
137580 l_acc_rev_flag                VARCHAR2(1);
137581 l_accrual_line_num            NUMBER;
137582 l_tmp_amt                     NUMBER;
137583 l_acc_rev_natural_side_code   VARCHAR2(1);
137584 
137585 l_num_entries                 NUMBER;
137586 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
137587 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
137588 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
137589 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
137590 l_recog_line_1                NUMBER;
137591 l_recog_line_2                NUMBER;
137592 
137593 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
137594 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
137595 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
137596 
137597 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
137598 
137599 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
137600 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
137601 
137602 ---------------------------------------------------------------------------------------------------------------
137603 
137604 
137605 --
137606 -- bulk performance
137607 --
137608 l_balance_type_code           VARCHAR2(1);
137609 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
137610 l_log_module                  VARCHAR2(240);
137611 
137612 --
137613 -- Upgrade strategy
137614 --
137615 l_actual_upg_option           VARCHAR2(1);
137616 l_enc_upg_option           VARCHAR2(1);
137617 
137618 --
137619 BEGIN
137620 --
137621 IF g_log_enabled THEN
137622       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_249';
137623 END IF;
137624 --
137625 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
137626 
137627       trace
137628          (p_msg      => 'BEGIN of AcctLineType_249'
137629          ,p_level    => C_LEVEL_PROCEDURE
137630          ,p_module   => l_log_module);
137631 
137632 END IF;
137633 --
137634 l_component_type             := 'AMB_JLT';
137635 l_component_code             := 'WIP_VALUATION';
137636 l_component_type_code        := 'S';
137637 l_component_appl_id          :=  707;
137638 l_amb_context_code           := 'DEFAULT';
137639 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
137640 l_event_class_code           := 'ABSORPTION';
137641 l_event_type_code            := 'ABSORPTION_ALL';
137642 l_line_definition_owner_code := 'S';
137643 l_line_definition_code       := 'ABSORPTION';
137644 --
137645 l_balance_type_code          := 'A';
137646 l_segment                     := NULL;
137647 l_ccid                        := NULL;
137648 l_adr_transaction_coa_id      := NULL;
137649 l_adr_accounting_coa_id       := NULL;
137650 l_adr_flexfield_segment_code  := NULL;
137651 l_adr_flex_value_set_id       := NULL;
137652 l_adr_value_type_code         := NULL;
137653 l_adr_value_combination_id    := NULL;
137654 l_adr_value_segment_code      := NULL;
137655 
137656 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
137657 l_bflow_class_code           := '';    -- 4219869 Business Flow
137658 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
137659 l_budgetary_control_flag     := 'N';
137660 
137661 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
137662 l_bflow_applied_to_amt       := NULL; -- 5132302
137663 l_entered_amt_idx            := NULL;          -- 4262811
137664 l_accted_amt_idx             := NULL;          -- 4262811
137665 l_acc_rev_flag               := NULL;          -- 4262811
137666 l_accrual_line_num           := NULL;          -- 4262811
137667 l_tmp_amt                    := NULL;          -- 4262811
137668 --
137669  
137670 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
137671     l_balance_type_code <> 'B' THEN
137672 IF NVL(p_source_24,9E125) =  7
137673  THEN 
137674 
137675    --
137676    XLA_AE_LINES_PKG.SetNewLine;
137677 
137678    p_balance_type_code          := l_balance_type_code;
137679    -- set the flag so later we will know whether the gain loss line needs to be created
137680    
137681    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
137682      p_actual_flag :='A';
137683    END IF;
137684 
137685    --
137686    -- bulk performance
137687    --
137688    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
137689                                       p_header_num   => 0); -- 4262811
137690    --
137691    -- set accounting line options
137692    --
137693    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
137694            p_natural_side_code          => 'D'
137695          , p_gain_or_loss_flag          => 'N'
137696          , p_gl_transfer_mode_code      => 'S'
137697          , p_acct_entry_type_code       => 'A'
137698          , p_switch_side_flag           => 'Y'
137699          , p_merge_duplicate_code       => 'N'
137700          );
137701    --
137702    l_acc_rev_natural_side_code := 'C';  -- 4262811
137703    -- 
137704    --
137705    -- set accounting line type info
137706    --
137707    xla_ae_lines_pkg.SetAcctLineType
137708       (p_component_type             => l_component_type
137709       ,p_event_type_code            => l_event_type_code
137710       ,p_line_definition_owner_code => l_line_definition_owner_code
137711       ,p_line_definition_code       => l_line_definition_code
137712       ,p_accounting_line_code       => l_component_code
137713       ,p_accounting_line_type_code  => l_component_type_code
137714       ,p_accounting_line_appl_id    => l_component_appl_id
137715       ,p_amb_context_code           => l_amb_context_code
137716       ,p_entity_code                => l_entity_code
137717       ,p_event_class_code           => l_event_class_code);
137718    --
137719    -- set accounting class
137720    --
137721    xla_ae_lines_pkg.SetAcctClass(
137722            p_accounting_class_code  => 'WIP_VALUATION'
137723          , p_ae_header_id           => l_ae_header_id
137724          );
137725 
137726    --
137727    -- set rounding class
137728    --
137729    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
137730                       'WIP_VALUATION';
137731 
137732    --
137733    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
137734    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
137735    --
137736    -- bulk performance
137737    --
137738    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
137739 
137740    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
137741       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
137742 
137743    -- 4955764
137744    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
137745       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
137746 
137747    -- 4458381 Public Sector Enh
137748    
137749    --
137750    -- set accounting attributes for the line type
137751    --
137752    l_entered_amt_idx := 3;
137753    l_accted_amt_idx  := 8;
137754    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
137755    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
137756    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
137757    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
137758    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
137759    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
137760    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
137761    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
137762    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
137763    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
137764    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
137765    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
137766    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
137767    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
137768    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
137769    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
137770    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
137771 
137772    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
137773    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
137774 
137775    ---------------------------------------------------------------------------------------------------------------
137776    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
137777    ---------------------------------------------------------------------------------------------------------------
137778    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
137779 
137780    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
137781    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
137782 
137783    IF xla_accounting_cache_pkg.GetValueChar
137784          (p_source_code         => 'LEDGER_CATEGORY_CODE'
137785          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
137786    AND l_bflow_method_code = 'PRIOR_ENTRY'
137787 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
137788    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
137789          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
137790        )
137791    THEN
137792          xla_ae_lines_pkg.BflowUpgEntry
137793            (p_business_method_code    => l_bflow_method_code
137794            ,p_business_class_code     => l_bflow_class_code
137795            ,p_balance_type            => l_balance_type_code);
137796    ELSE
137797       NULL;
137798 -- No business flow processing for business flow method of NONE.
137799    END IF;
137800 
137801    --
137802    -- call analytical criteria
137803    --
137804    
137805    --
137806    -- call description
137807    --
137808    -- No description or it is inherited.
137809    --
137810    -- call ADRs
137811    -- Bug 4922099
137812    --
137813    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
137814         (NVL(l_actual_upg_option, 'N') = 'O') OR
137815         (NVL(l_enc_upg_option, 'N') = 'O')
137816       )
137817    THEN
137818    NULL;
137819    --
137820    --
137821    
137822   l_ccid := AcctDerRule_4(
137823            p_application_id           => p_application_id
137824          , p_ae_header_id             => l_ae_header_id 
137825 , p_source_4 => p_source_4
137826          , x_transaction_coa_id       => l_adr_transaction_coa_id
137827          , x_accounting_coa_id        => l_adr_accounting_coa_id
137828          , x_value_type_code          => l_adr_value_type_code
137829          , p_side                     => 'NA'
137830    );
137831 
137832    xla_ae_lines_pkg.set_ccid(
137833     p_code_combination_id          => l_ccid
137834   , p_value_type_code              => l_adr_value_type_code
137835   , p_transaction_coa_id           => l_adr_transaction_coa_id
137836   , p_accounting_coa_id            => l_adr_accounting_coa_id
137837   , p_adr_code                     => 'CST_DEFAULT'
137838   , p_adr_type_code                => 'S'
137839   , p_component_type               => l_component_type
137840   , p_component_code               => l_component_code
137841   , p_component_type_code          => l_component_type_code
137842   , p_component_appl_id            => l_component_appl_id
137843   , p_amb_context_code             => l_amb_context_code
137844   , p_side                         => 'NA'
137845   );
137846 
137847 
137848    --
137849    --
137850    END IF;
137851    --
137852    -- Bug 4922099
137853    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
137854           (NVL(l_enc_upg_option, 'N') = 'O')
137855         ) AND
137856         (l_bflow_method_code = 'PRIOR_ENTRY')
137857       )
137858    THEN
137859       IF
137860       --
137861       1 = 2
137862       --
137863       THEN
137864       xla_accounting_err_pkg.build_message
137865                                     (p_appli_s_name            => 'XLA'
137866                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
137867                                     ,p_token_1                 => 'LINE_NUMBER'
137868                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
137869                                     ,p_token_2                 => 'LINE_TYPE_NAME'
137870                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
137871                                                                              l_component_type
137872                                                                             ,l_component_code
137873                                                                             ,l_component_type_code
137874                                                                             ,l_component_appl_id
137875                                                                             ,l_amb_context_code
137876                                                                             ,l_entity_code
137877                                                                             ,l_event_class_code
137878                                                                            )
137879                                     ,p_token_3                 => 'OWNER'
137880                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
137881                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
137882                                                                           ,p_lookup_code    => l_component_type_code
137883                                                                          )
137884                                     ,p_token_4                 => 'PRODUCT_NAME'
137885                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
137886                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
137887                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
137888                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
137889                                     ,p_ae_header_id            =>  NULL
137890                                        );
137891 
137892         IF (C_LEVEL_ERROR>= g_log_level) THEN
137893                  trace
137894                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
137895                       ,p_level    => C_LEVEL_ERROR
137896                       ,p_module   => l_log_module);
137897         END IF;
137898       END IF;
137899    END IF;
137900    --
137901    --
137902    ------------------------------------------------------------------------------------------------
137903    -- 4219869 Business Flow
137904    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
137905    -- Prior Entry.  Currently, the following code is always generated.
137906    ------------------------------------------------------------------------------------------------
137907    XLA_AE_LINES_PKG.ValidateCurrentLine;
137908 
137909    ------------------------------------------------------------------------------------
137910    -- 4219869 Business Flow
137911    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
137912    ------------------------------------------------------------------------------------
137913    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
137914 
137915    ----------------------------------------------------------------------------------
137916    -- 4219869 Business Flow
137917    -- Update journal entry status -- Need to generate this within IF <condition>
137918    ----------------------------------------------------------------------------------
137919    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
137920          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
137921          ,p_balance_type_code => l_balance_type_code
137922          );
137923 
137924    -------------------------------------------------------------------------------------------
137925    -- 4262811 - Generate the Accrual Reversal lines
137926    -------------------------------------------------------------------------------------------
137927    BEGIN
137928       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
137929                               (g_array_event(p_event_id).array_value_num('header_index'));
137930       IF l_acc_rev_flag IS NULL THEN
137931          l_acc_rev_flag := 'N';
137932       END IF;
137933    EXCEPTION
137934       WHEN OTHERS THEN
137935          l_acc_rev_flag := 'N';
137936    END;
137937    --
137938    IF (l_acc_rev_flag = 'Y') THEN
137939 
137940        -- 4645092  ------------------------------------------------------------------------------
137941        -- To allow MPA report to determine if it should generate report process
137942        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
137943        ------------------------------------------------------------------------------------------
137944 
137945        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
137946        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
137947    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
137948    -- call ADRs
137949    -- Bug 4922099
137950    --
137951    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
137952         (NVL(l_actual_upg_option, 'N') = 'O') OR
137953         (NVL(l_enc_upg_option, 'N') = 'O')
137954       )
137955    THEN
137956    NULL;
137957    --
137958    --
137959    
137960   l_ccid := AcctDerRule_4(
137961            p_application_id           => p_application_id
137962          , p_ae_header_id             => l_ae_header_id 
137963 , p_source_4 => p_source_4
137964          , x_transaction_coa_id       => l_adr_transaction_coa_id
137965          , x_accounting_coa_id        => l_adr_accounting_coa_id
137966          , x_value_type_code          => l_adr_value_type_code
137967          , p_side                     => 'NA'
137968    );
137969 
137970    xla_ae_lines_pkg.set_ccid(
137971     p_code_combination_id          => l_ccid
137972   , p_value_type_code              => l_adr_value_type_code
137973   , p_transaction_coa_id           => l_adr_transaction_coa_id
137974   , p_accounting_coa_id            => l_adr_accounting_coa_id
137975   , p_adr_code                     => 'CST_DEFAULT'
137976   , p_adr_type_code                => 'S'
137977   , p_component_type               => l_component_type
137978   , p_component_code               => l_component_code
137979   , p_component_type_code          => l_component_type_code
137980   , p_component_appl_id            => l_component_appl_id
137981   , p_amb_context_code             => l_amb_context_code
137982   , p_side                         => 'NA'
137983   );
137984 
137985 
137986    --
137987    --
137988    END IF;
137989 
137990        --
137991        -- Update the line information that should be overwritten
137992        --
137993        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
137994                                          p_header_num   => 1);
137995        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
137996 
137997        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
137998 
137999        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
138000           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
138001        END IF;
138002 
138003       --
138004       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
138005       --
138006       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
138007           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
138008       ELSE
138009           ---------------------------------------------------------------------------------------------------
138010           -- 4262811a Switch Sign
138011           ---------------------------------------------------------------------------------------------------
138012           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
138013           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
138014                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
138015           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
138016                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
138017           -- 5132302
138018           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
138019                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
138020 
138021       END IF;
138022 
138023       -- 4955764
138024       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
138025       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
138026 
138027 
138028       XLA_AE_LINES_PKG.ValidateCurrentLine;
138029       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
138030 
138031       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
138032                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
138033                ,p_balance_type_code => l_balance_type_code);
138034 
138035    END IF;
138036 
138037    -----------------------------------------------------------------------------------------
138038    -- 4262811 Multiperiod Accounting
138039    -----------------------------------------------------------------------------------------
138040      -- No MPA option is assigned.
138041 
138042 
138043 END IF;
138044 END IF;
138045 --
138046 
138047 --
138048 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
138049    trace
138050       (p_msg      => 'END of AcctLineType_249'
138051       ,p_level    => C_LEVEL_PROCEDURE
138052       ,p_module   => l_log_module);
138053 END IF;
138054 --
138055 EXCEPTION
138056   WHEN xla_exceptions_pkg.application_exception THEN
138057       RAISE;
138058   WHEN OTHERS THEN
138059        xla_exceptions_pkg.raise_message
138060            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_249');
138061 END AcctLineType_249;
138062 --
138063 
138064 ---------------------------------------
138065 --
138066 -- PRIVATE FUNCTION
138067 --         AcctLineType_250
138068 --
138069 ---------------------------------------
138070 PROCEDURE AcctLineType_250 (
138071   p_application_id        IN NUMBER
138072  ,p_event_id              IN NUMBER
138073  ,p_calculate_acctd_flag  IN VARCHAR2
138074  ,p_calculate_g_l_flag    IN VARCHAR2
138075  ,p_actual_flag           IN OUT VARCHAR2
138076  ,p_balance_type_code     OUT VARCHAR2
138077  ,p_gain_or_loss_ref      OUT VARCHAR2
138078  
138079 --Cost Management Default Account
138080  , p_source_4            IN NUMBER
138081 --DISTRIBUTION_IDENTIFIER
138082  , p_source_11            IN NUMBER
138083 --Distribution Type
138084  , p_source_12            IN VARCHAR2
138085  , p_source_12_meaning    IN VARCHAR2
138086 --Entered Currency Code
138087  , p_source_15            IN VARCHAR2
138088 --Entered Amount
138089  , p_source_18            IN NUMBER
138090 --Currency Conversion Date
138091  , p_source_19            IN DATE
138092 --Currency Conversion Rate
138093  , p_source_20            IN NUMBER
138094 --Currency Conversion Type
138095  , p_source_21            IN VARCHAR2
138096 --Accounted Amount
138097  , p_source_22            IN NUMBER
138098 --Accounting Line Type
138099  , p_source_24            IN NUMBER
138100 )
138101 IS
138102 
138103 l_component_type              VARCHAR2(80);
138104 l_component_code              VARCHAR2(30);
138105 l_component_type_code         VARCHAR2(1);
138106 l_component_appl_id           INTEGER;
138107 l_amb_context_code            VARCHAR2(30);
138108 l_entity_code                 VARCHAR2(30);
138109 l_event_class_code            VARCHAR2(30);
138110 l_ae_header_id                NUMBER;
138111 l_event_type_code             VARCHAR2(30);
138112 l_line_definition_code        VARCHAR2(30);
138113 l_line_definition_owner_code  VARCHAR2(1);
138114 --
138115 -- adr variables
138116 l_segment                     VARCHAR2(30);
138117 l_ccid                        NUMBER;
138118 l_adr_transaction_coa_id      NUMBER;
138119 l_adr_accounting_coa_id       NUMBER;
138120 l_adr_flexfield_segment_code  VARCHAR2(30);
138121 l_adr_flex_value_set_id       NUMBER;
138122 l_adr_value_type_code         VARCHAR2(30);
138123 l_adr_value_combination_id    NUMBER;
138124 l_adr_value_segment_code      VARCHAR2(30);
138125 
138126 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
138127 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
138128 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
138129 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
138130 
138131 -- 4262811 Variables ------------------------------------------------------------------------------------------
138132 l_entered_amt_idx             NUMBER;
138133 l_accted_amt_idx              NUMBER;
138134 l_acc_rev_flag                VARCHAR2(1);
138135 l_accrual_line_num            NUMBER;
138136 l_tmp_amt                     NUMBER;
138137 l_acc_rev_natural_side_code   VARCHAR2(1);
138138 
138139 l_num_entries                 NUMBER;
138140 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
138141 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
138142 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
138143 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
138144 l_recog_line_1                NUMBER;
138145 l_recog_line_2                NUMBER;
138146 
138147 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
138148 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
138149 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
138150 
138151 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
138152 
138153 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
138154 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
138155 
138156 ---------------------------------------------------------------------------------------------------------------
138157 
138158 
138159 --
138160 -- bulk performance
138161 --
138162 l_balance_type_code           VARCHAR2(1);
138163 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
138164 l_log_module                  VARCHAR2(240);
138165 
138166 --
138167 -- Upgrade strategy
138168 --
138169 l_actual_upg_option           VARCHAR2(1);
138170 l_enc_upg_option           VARCHAR2(1);
138171 
138172 --
138173 BEGIN
138174 --
138175 IF g_log_enabled THEN
138176       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_250';
138177 END IF;
138178 --
138179 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
138180 
138181       trace
138182          (p_msg      => 'BEGIN of AcctLineType_250'
138183          ,p_level    => C_LEVEL_PROCEDURE
138184          ,p_module   => l_log_module);
138185 
138186 END IF;
138187 --
138188 l_component_type             := 'AMB_JLT';
138189 l_component_code             := 'WIP_VALUATION';
138190 l_component_type_code        := 'S';
138191 l_component_appl_id          :=  707;
138192 l_amb_context_code           := 'DEFAULT';
138193 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
138194 l_event_class_code           := 'VARIANCE';
138195 l_event_type_code            := 'VARIANCE_ALL';
138196 l_line_definition_owner_code := 'S';
138197 l_line_definition_code       := 'VARIANCE';
138198 --
138199 l_balance_type_code          := 'A';
138200 l_segment                     := NULL;
138201 l_ccid                        := NULL;
138202 l_adr_transaction_coa_id      := NULL;
138203 l_adr_accounting_coa_id       := NULL;
138204 l_adr_flexfield_segment_code  := NULL;
138205 l_adr_flex_value_set_id       := NULL;
138206 l_adr_value_type_code         := NULL;
138207 l_adr_value_combination_id    := NULL;
138208 l_adr_value_segment_code      := NULL;
138209 
138210 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
138211 l_bflow_class_code           := '';    -- 4219869 Business Flow
138212 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
138213 l_budgetary_control_flag     := 'N';
138214 
138215 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
138216 l_bflow_applied_to_amt       := NULL; -- 5132302
138217 l_entered_amt_idx            := NULL;          -- 4262811
138218 l_accted_amt_idx             := NULL;          -- 4262811
138219 l_acc_rev_flag               := NULL;          -- 4262811
138220 l_accrual_line_num           := NULL;          -- 4262811
138221 l_tmp_amt                    := NULL;          -- 4262811
138222 --
138223  
138224 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
138225     l_balance_type_code <> 'B' THEN
138226 IF NVL(p_source_24,9E125) =  7
138227  THEN 
138228 
138229    --
138230    XLA_AE_LINES_PKG.SetNewLine;
138231 
138232    p_balance_type_code          := l_balance_type_code;
138233    -- set the flag so later we will know whether the gain loss line needs to be created
138234    
138235    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
138236      p_actual_flag :='A';
138237    END IF;
138238 
138239    --
138240    -- bulk performance
138241    --
138242    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
138243                                       p_header_num   => 0); -- 4262811
138244    --
138245    -- set accounting line options
138246    --
138247    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
138248            p_natural_side_code          => 'D'
138249          , p_gain_or_loss_flag          => 'N'
138250          , p_gl_transfer_mode_code      => 'S'
138251          , p_acct_entry_type_code       => 'A'
138252          , p_switch_side_flag           => 'Y'
138253          , p_merge_duplicate_code       => 'N'
138254          );
138255    --
138256    l_acc_rev_natural_side_code := 'C';  -- 4262811
138257    -- 
138258    --
138259    -- set accounting line type info
138260    --
138261    xla_ae_lines_pkg.SetAcctLineType
138262       (p_component_type             => l_component_type
138263       ,p_event_type_code            => l_event_type_code
138264       ,p_line_definition_owner_code => l_line_definition_owner_code
138265       ,p_line_definition_code       => l_line_definition_code
138266       ,p_accounting_line_code       => l_component_code
138267       ,p_accounting_line_type_code  => l_component_type_code
138268       ,p_accounting_line_appl_id    => l_component_appl_id
138269       ,p_amb_context_code           => l_amb_context_code
138270       ,p_entity_code                => l_entity_code
138271       ,p_event_class_code           => l_event_class_code);
138272    --
138273    -- set accounting class
138274    --
138275    xla_ae_lines_pkg.SetAcctClass(
138276            p_accounting_class_code  => 'WIP_VALUATION'
138277          , p_ae_header_id           => l_ae_header_id
138278          );
138279 
138280    --
138281    -- set rounding class
138282    --
138283    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
138284                       'WIP_VALUATION';
138285 
138286    --
138287    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
138288    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
138289    --
138290    -- bulk performance
138291    --
138292    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
138293 
138294    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
138295       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
138296 
138297    -- 4955764
138298    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
138299       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
138300 
138301    -- 4458381 Public Sector Enh
138302    
138303    --
138304    -- set accounting attributes for the line type
138305    --
138306    l_entered_amt_idx := 3;
138307    l_accted_amt_idx  := 8;
138308    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
138309    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
138310    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
138311    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
138312    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
138313    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
138314    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
138315    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
138316    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
138317    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
138318    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
138319    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
138320    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
138321    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
138322    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
138323    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
138324    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
138325 
138326    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
138327    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
138328 
138329    ---------------------------------------------------------------------------------------------------------------
138330    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
138331    ---------------------------------------------------------------------------------------------------------------
138332    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
138333 
138334    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
138335    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
138336 
138337    IF xla_accounting_cache_pkg.GetValueChar
138338          (p_source_code         => 'LEDGER_CATEGORY_CODE'
138339          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
138340    AND l_bflow_method_code = 'PRIOR_ENTRY'
138341 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
138342    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
138343          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
138344        )
138345    THEN
138346          xla_ae_lines_pkg.BflowUpgEntry
138347            (p_business_method_code    => l_bflow_method_code
138348            ,p_business_class_code     => l_bflow_class_code
138349            ,p_balance_type            => l_balance_type_code);
138350    ELSE
138351       NULL;
138352 -- No business flow processing for business flow method of NONE.
138353    END IF;
138354 
138355    --
138356    -- call analytical criteria
138357    --
138358    
138359    --
138360    -- call description
138361    --
138362    -- No description or it is inherited.
138363    --
138364    -- call ADRs
138365    -- Bug 4922099
138366    --
138367    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
138368         (NVL(l_actual_upg_option, 'N') = 'O') OR
138369         (NVL(l_enc_upg_option, 'N') = 'O')
138370       )
138371    THEN
138372    NULL;
138373    --
138374    --
138375    
138376   l_ccid := AcctDerRule_4(
138377            p_application_id           => p_application_id
138378          , p_ae_header_id             => l_ae_header_id 
138379 , p_source_4 => p_source_4
138380          , x_transaction_coa_id       => l_adr_transaction_coa_id
138381          , x_accounting_coa_id        => l_adr_accounting_coa_id
138382          , x_value_type_code          => l_adr_value_type_code
138383          , p_side                     => 'NA'
138384    );
138385 
138386    xla_ae_lines_pkg.set_ccid(
138387     p_code_combination_id          => l_ccid
138388   , p_value_type_code              => l_adr_value_type_code
138389   , p_transaction_coa_id           => l_adr_transaction_coa_id
138390   , p_accounting_coa_id            => l_adr_accounting_coa_id
138391   , p_adr_code                     => 'CST_DEFAULT'
138392   , p_adr_type_code                => 'S'
138393   , p_component_type               => l_component_type
138394   , p_component_code               => l_component_code
138395   , p_component_type_code          => l_component_type_code
138396   , p_component_appl_id            => l_component_appl_id
138397   , p_amb_context_code             => l_amb_context_code
138398   , p_side                         => 'NA'
138399   );
138400 
138401 
138402    --
138403    --
138404    END IF;
138405    --
138406    -- Bug 4922099
138407    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
138408           (NVL(l_enc_upg_option, 'N') = 'O')
138409         ) AND
138410         (l_bflow_method_code = 'PRIOR_ENTRY')
138411       )
138412    THEN
138413       IF
138414       --
138415       1 = 2
138416       --
138417       THEN
138418       xla_accounting_err_pkg.build_message
138419                                     (p_appli_s_name            => 'XLA'
138420                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
138421                                     ,p_token_1                 => 'LINE_NUMBER'
138422                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
138423                                     ,p_token_2                 => 'LINE_TYPE_NAME'
138424                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
138425                                                                              l_component_type
138426                                                                             ,l_component_code
138427                                                                             ,l_component_type_code
138428                                                                             ,l_component_appl_id
138429                                                                             ,l_amb_context_code
138430                                                                             ,l_entity_code
138431                                                                             ,l_event_class_code
138432                                                                            )
138433                                     ,p_token_3                 => 'OWNER'
138434                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
138435                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
138436                                                                           ,p_lookup_code    => l_component_type_code
138437                                                                          )
138438                                     ,p_token_4                 => 'PRODUCT_NAME'
138439                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
138440                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
138441                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
138442                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
138443                                     ,p_ae_header_id            =>  NULL
138444                                        );
138445 
138446         IF (C_LEVEL_ERROR>= g_log_level) THEN
138447                  trace
138448                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
138449                       ,p_level    => C_LEVEL_ERROR
138450                       ,p_module   => l_log_module);
138451         END IF;
138452       END IF;
138453    END IF;
138454    --
138455    --
138456    ------------------------------------------------------------------------------------------------
138457    -- 4219869 Business Flow
138458    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
138459    -- Prior Entry.  Currently, the following code is always generated.
138460    ------------------------------------------------------------------------------------------------
138461    XLA_AE_LINES_PKG.ValidateCurrentLine;
138462 
138463    ------------------------------------------------------------------------------------
138464    -- 4219869 Business Flow
138465    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
138466    ------------------------------------------------------------------------------------
138467    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
138468 
138469    ----------------------------------------------------------------------------------
138470    -- 4219869 Business Flow
138471    -- Update journal entry status -- Need to generate this within IF <condition>
138472    ----------------------------------------------------------------------------------
138473    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
138474          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
138475          ,p_balance_type_code => l_balance_type_code
138476          );
138477 
138478    -------------------------------------------------------------------------------------------
138479    -- 4262811 - Generate the Accrual Reversal lines
138480    -------------------------------------------------------------------------------------------
138481    BEGIN
138482       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
138483                               (g_array_event(p_event_id).array_value_num('header_index'));
138484       IF l_acc_rev_flag IS NULL THEN
138485          l_acc_rev_flag := 'N';
138486       END IF;
138487    EXCEPTION
138488       WHEN OTHERS THEN
138489          l_acc_rev_flag := 'N';
138490    END;
138491    --
138492    IF (l_acc_rev_flag = 'Y') THEN
138493 
138494        -- 4645092  ------------------------------------------------------------------------------
138495        -- To allow MPA report to determine if it should generate report process
138496        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
138497        ------------------------------------------------------------------------------------------
138498 
138499        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
138500        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
138501    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
138502    -- call ADRs
138503    -- Bug 4922099
138504    --
138505    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
138506         (NVL(l_actual_upg_option, 'N') = 'O') OR
138507         (NVL(l_enc_upg_option, 'N') = 'O')
138508       )
138509    THEN
138510    NULL;
138511    --
138512    --
138513    
138514   l_ccid := AcctDerRule_4(
138515            p_application_id           => p_application_id
138516          , p_ae_header_id             => l_ae_header_id 
138517 , p_source_4 => p_source_4
138518          , x_transaction_coa_id       => l_adr_transaction_coa_id
138519          , x_accounting_coa_id        => l_adr_accounting_coa_id
138520          , x_value_type_code          => l_adr_value_type_code
138521          , p_side                     => 'NA'
138522    );
138523 
138524    xla_ae_lines_pkg.set_ccid(
138525     p_code_combination_id          => l_ccid
138526   , p_value_type_code              => l_adr_value_type_code
138527   , p_transaction_coa_id           => l_adr_transaction_coa_id
138528   , p_accounting_coa_id            => l_adr_accounting_coa_id
138529   , p_adr_code                     => 'CST_DEFAULT'
138530   , p_adr_type_code                => 'S'
138531   , p_component_type               => l_component_type
138532   , p_component_code               => l_component_code
138533   , p_component_type_code          => l_component_type_code
138534   , p_component_appl_id            => l_component_appl_id
138535   , p_amb_context_code             => l_amb_context_code
138536   , p_side                         => 'NA'
138537   );
138538 
138539 
138540    --
138541    --
138542    END IF;
138543 
138544        --
138545        -- Update the line information that should be overwritten
138546        --
138547        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
138548                                          p_header_num   => 1);
138549        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
138550 
138551        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
138552 
138553        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
138554           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
138555        END IF;
138556 
138557       --
138558       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
138559       --
138560       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
138561           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
138562       ELSE
138563           ---------------------------------------------------------------------------------------------------
138564           -- 4262811a Switch Sign
138565           ---------------------------------------------------------------------------------------------------
138566           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
138567           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
138568                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
138569           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
138570                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
138571           -- 5132302
138572           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
138573                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
138574 
138575       END IF;
138576 
138577       -- 4955764
138578       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
138579       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
138580 
138581 
138582       XLA_AE_LINES_PKG.ValidateCurrentLine;
138583       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
138584 
138585       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
138586                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
138587                ,p_balance_type_code => l_balance_type_code);
138588 
138589    END IF;
138590 
138591    -----------------------------------------------------------------------------------------
138592    -- 4262811 Multiperiod Accounting
138593    -----------------------------------------------------------------------------------------
138594      -- No MPA option is assigned.
138595 
138596 
138597 END IF;
138598 END IF;
138599 --
138600 
138601 --
138602 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
138603    trace
138604       (p_msg      => 'END of AcctLineType_250'
138605       ,p_level    => C_LEVEL_PROCEDURE
138606       ,p_module   => l_log_module);
138607 END IF;
138608 --
138609 EXCEPTION
138610   WHEN xla_exceptions_pkg.application_exception THEN
138611       RAISE;
138612   WHEN OTHERS THEN
138613        xla_exceptions_pkg.raise_message
138614            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_250');
138615 END AcctLineType_250;
138616 --
138617 
138618 ---------------------------------------
138619 --
138620 -- PRIVATE FUNCTION
138621 --         AcctLineType_251
138622 --
138623 ---------------------------------------
138624 PROCEDURE AcctLineType_251 (
138625   p_application_id        IN NUMBER
138626  ,p_event_id              IN NUMBER
138627  ,p_calculate_acctd_flag  IN VARCHAR2
138628  ,p_calculate_g_l_flag    IN VARCHAR2
138629  ,p_actual_flag           IN OUT VARCHAR2
138630  ,p_balance_type_code     OUT VARCHAR2
138631  ,p_gain_or_loss_ref      OUT VARCHAR2
138632  
138633 --Cost Management Default Account
138634  , p_source_4            IN NUMBER
138635 --DISTRIBUTION_IDENTIFIER
138636  , p_source_11            IN NUMBER
138637 --Distribution Type
138638  , p_source_12            IN VARCHAR2
138639  , p_source_12_meaning    IN VARCHAR2
138640 --Entered Currency Code
138641  , p_source_15            IN VARCHAR2
138642 --Entered Amount
138643  , p_source_18            IN NUMBER
138644 --Currency Conversion Date
138645  , p_source_19            IN DATE
138646 --Currency Conversion Rate
138647  , p_source_20            IN NUMBER
138648 --Currency Conversion Type
138649  , p_source_21            IN VARCHAR2
138650 --Accounted Amount
138651  , p_source_22            IN NUMBER
138652 --Accounting Line Type
138653  , p_source_24            IN NUMBER
138654 )
138655 IS
138656 
138657 l_component_type              VARCHAR2(80);
138658 l_component_code              VARCHAR2(30);
138659 l_component_type_code         VARCHAR2(1);
138660 l_component_appl_id           INTEGER;
138661 l_amb_context_code            VARCHAR2(30);
138662 l_entity_code                 VARCHAR2(30);
138663 l_event_class_code            VARCHAR2(30);
138664 l_ae_header_id                NUMBER;
138665 l_event_type_code             VARCHAR2(30);
138666 l_line_definition_code        VARCHAR2(30);
138667 l_line_definition_owner_code  VARCHAR2(1);
138668 --
138669 -- adr variables
138670 l_segment                     VARCHAR2(30);
138671 l_ccid                        NUMBER;
138672 l_adr_transaction_coa_id      NUMBER;
138673 l_adr_accounting_coa_id       NUMBER;
138674 l_adr_flexfield_segment_code  VARCHAR2(30);
138675 l_adr_flex_value_set_id       NUMBER;
138676 l_adr_value_type_code         VARCHAR2(30);
138677 l_adr_value_combination_id    NUMBER;
138678 l_adr_value_segment_code      VARCHAR2(30);
138679 
138680 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
138681 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
138682 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
138683 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
138684 
138685 -- 4262811 Variables ------------------------------------------------------------------------------------------
138686 l_entered_amt_idx             NUMBER;
138687 l_accted_amt_idx              NUMBER;
138688 l_acc_rev_flag                VARCHAR2(1);
138689 l_accrual_line_num            NUMBER;
138690 l_tmp_amt                     NUMBER;
138691 l_acc_rev_natural_side_code   VARCHAR2(1);
138692 
138693 l_num_entries                 NUMBER;
138694 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
138695 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
138696 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
138697 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
138698 l_recog_line_1                NUMBER;
138699 l_recog_line_2                NUMBER;
138700 
138701 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
138702 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
138703 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
138704 
138705 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
138706 
138707 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
138708 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
138709 
138710 ---------------------------------------------------------------------------------------------------------------
138711 
138712 
138713 --
138714 -- bulk performance
138715 --
138716 l_balance_type_code           VARCHAR2(1);
138717 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
138718 l_log_module                  VARCHAR2(240);
138719 
138720 --
138721 -- Upgrade strategy
138722 --
138723 l_actual_upg_option           VARCHAR2(1);
138724 l_enc_upg_option           VARCHAR2(1);
138725 
138726 --
138727 BEGIN
138728 --
138729 IF g_log_enabled THEN
138730       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_251';
138731 END IF;
138732 --
138733 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
138734 
138735       trace
138736          (p_msg      => 'BEGIN of AcctLineType_251'
138737          ,p_level    => C_LEVEL_PROCEDURE
138738          ,p_module   => l_log_module);
138739 
138740 END IF;
138741 --
138742 l_component_type             := 'AMB_JLT';
138743 l_component_code             := 'WIP_VALUATION';
138744 l_component_type_code        := 'S';
138745 l_component_appl_id          :=  707;
138746 l_amb_context_code           := 'DEFAULT';
138747 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
138748 l_event_class_code           := 'WIP_COST_UPD';
138749 l_event_type_code            := 'WIP_COST_UPD_ALL';
138750 l_line_definition_owner_code := 'S';
138751 l_line_definition_code       := 'COST_UPDATE';
138752 --
138753 l_balance_type_code          := 'A';
138754 l_segment                     := NULL;
138755 l_ccid                        := NULL;
138756 l_adr_transaction_coa_id      := NULL;
138757 l_adr_accounting_coa_id       := NULL;
138758 l_adr_flexfield_segment_code  := NULL;
138759 l_adr_flex_value_set_id       := NULL;
138760 l_adr_value_type_code         := NULL;
138761 l_adr_value_combination_id    := NULL;
138762 l_adr_value_segment_code      := NULL;
138763 
138764 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
138765 l_bflow_class_code           := '';    -- 4219869 Business Flow
138766 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
138767 l_budgetary_control_flag     := 'N';
138768 
138769 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
138770 l_bflow_applied_to_amt       := NULL; -- 5132302
138771 l_entered_amt_idx            := NULL;          -- 4262811
138772 l_accted_amt_idx             := NULL;          -- 4262811
138773 l_acc_rev_flag               := NULL;          -- 4262811
138774 l_accrual_line_num           := NULL;          -- 4262811
138775 l_tmp_amt                    := NULL;          -- 4262811
138776 --
138777  
138778 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
138779     l_balance_type_code <> 'B' THEN
138780 IF NVL(p_source_24,9E125) =  7
138781  THEN 
138782 
138783    --
138784    XLA_AE_LINES_PKG.SetNewLine;
138785 
138786    p_balance_type_code          := l_balance_type_code;
138787    -- set the flag so later we will know whether the gain loss line needs to be created
138788    
138789    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
138790      p_actual_flag :='A';
138791    END IF;
138792 
138793    --
138794    -- bulk performance
138795    --
138796    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
138797                                       p_header_num   => 0); -- 4262811
138798    --
138799    -- set accounting line options
138800    --
138801    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
138802            p_natural_side_code          => 'D'
138803          , p_gain_or_loss_flag          => 'N'
138804          , p_gl_transfer_mode_code      => 'S'
138805          , p_acct_entry_type_code       => 'A'
138806          , p_switch_side_flag           => 'Y'
138807          , p_merge_duplicate_code       => 'N'
138808          );
138809    --
138810    l_acc_rev_natural_side_code := 'C';  -- 4262811
138811    -- 
138812    --
138813    -- set accounting line type info
138814    --
138815    xla_ae_lines_pkg.SetAcctLineType
138816       (p_component_type             => l_component_type
138817       ,p_event_type_code            => l_event_type_code
138818       ,p_line_definition_owner_code => l_line_definition_owner_code
138819       ,p_line_definition_code       => l_line_definition_code
138820       ,p_accounting_line_code       => l_component_code
138821       ,p_accounting_line_type_code  => l_component_type_code
138822       ,p_accounting_line_appl_id    => l_component_appl_id
138823       ,p_amb_context_code           => l_amb_context_code
138824       ,p_entity_code                => l_entity_code
138825       ,p_event_class_code           => l_event_class_code);
138826    --
138827    -- set accounting class
138828    --
138829    xla_ae_lines_pkg.SetAcctClass(
138830            p_accounting_class_code  => 'WIP_VALUATION'
138831          , p_ae_header_id           => l_ae_header_id
138832          );
138833 
138834    --
138835    -- set rounding class
138836    --
138837    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
138838                       'WIP_VALUATION';
138839 
138840    --
138841    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
138842    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
138843    --
138844    -- bulk performance
138845    --
138846    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
138847 
138848    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
138849       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
138850 
138851    -- 4955764
138852    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
138853       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
138854 
138855    -- 4458381 Public Sector Enh
138856    
138857    --
138858    -- set accounting attributes for the line type
138859    --
138860    l_entered_amt_idx := 3;
138861    l_accted_amt_idx  := 8;
138862    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
138863    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
138864    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
138865    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
138866    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
138867    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
138868    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
138869    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
138870    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
138871    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
138872    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
138873    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
138874    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
138875    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
138876    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
138877    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
138878    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
138879 
138880    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
138881    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
138882 
138883    ---------------------------------------------------------------------------------------------------------------
138884    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
138885    ---------------------------------------------------------------------------------------------------------------
138886    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
138887 
138888    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
138889    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
138890 
138891    IF xla_accounting_cache_pkg.GetValueChar
138892          (p_source_code         => 'LEDGER_CATEGORY_CODE'
138893          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
138894    AND l_bflow_method_code = 'PRIOR_ENTRY'
138895 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
138896    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
138897          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
138898        )
138899    THEN
138900          xla_ae_lines_pkg.BflowUpgEntry
138901            (p_business_method_code    => l_bflow_method_code
138902            ,p_business_class_code     => l_bflow_class_code
138903            ,p_balance_type            => l_balance_type_code);
138904    ELSE
138905       NULL;
138906 -- No business flow processing for business flow method of NONE.
138907    END IF;
138908 
138909    --
138910    -- call analytical criteria
138911    --
138912    
138913    --
138914    -- call description
138915    --
138916    -- No description or it is inherited.
138917    --
138918    -- call ADRs
138919    -- Bug 4922099
138920    --
138921    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
138922         (NVL(l_actual_upg_option, 'N') = 'O') OR
138923         (NVL(l_enc_upg_option, 'N') = 'O')
138924       )
138925    THEN
138926    NULL;
138927    --
138928    --
138929    
138930   l_ccid := AcctDerRule_4(
138931            p_application_id           => p_application_id
138932          , p_ae_header_id             => l_ae_header_id 
138933 , p_source_4 => p_source_4
138934          , x_transaction_coa_id       => l_adr_transaction_coa_id
138935          , x_accounting_coa_id        => l_adr_accounting_coa_id
138936          , x_value_type_code          => l_adr_value_type_code
138937          , p_side                     => 'NA'
138938    );
138939 
138940    xla_ae_lines_pkg.set_ccid(
138941     p_code_combination_id          => l_ccid
138942   , p_value_type_code              => l_adr_value_type_code
138943   , p_transaction_coa_id           => l_adr_transaction_coa_id
138944   , p_accounting_coa_id            => l_adr_accounting_coa_id
138945   , p_adr_code                     => 'CST_DEFAULT'
138946   , p_adr_type_code                => 'S'
138947   , p_component_type               => l_component_type
138948   , p_component_code               => l_component_code
138949   , p_component_type_code          => l_component_type_code
138950   , p_component_appl_id            => l_component_appl_id
138951   , p_amb_context_code             => l_amb_context_code
138952   , p_side                         => 'NA'
138953   );
138954 
138955 
138956    --
138957    --
138958    END IF;
138959    --
138960    -- Bug 4922099
138961    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
138962           (NVL(l_enc_upg_option, 'N') = 'O')
138963         ) AND
138964         (l_bflow_method_code = 'PRIOR_ENTRY')
138965       )
138966    THEN
138967       IF
138968       --
138969       1 = 2
138970       --
138971       THEN
138972       xla_accounting_err_pkg.build_message
138973                                     (p_appli_s_name            => 'XLA'
138974                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
138975                                     ,p_token_1                 => 'LINE_NUMBER'
138976                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
138977                                     ,p_token_2                 => 'LINE_TYPE_NAME'
138978                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
138979                                                                              l_component_type
138980                                                                             ,l_component_code
138981                                                                             ,l_component_type_code
138982                                                                             ,l_component_appl_id
138983                                                                             ,l_amb_context_code
138984                                                                             ,l_entity_code
138985                                                                             ,l_event_class_code
138986                                                                            )
138987                                     ,p_token_3                 => 'OWNER'
138988                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
138989                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
138990                                                                           ,p_lookup_code    => l_component_type_code
138991                                                                          )
138992                                     ,p_token_4                 => 'PRODUCT_NAME'
138993                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
138994                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
138995                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
138996                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
138997                                     ,p_ae_header_id            =>  NULL
138998                                        );
138999 
139000         IF (C_LEVEL_ERROR>= g_log_level) THEN
139001                  trace
139002                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
139003                       ,p_level    => C_LEVEL_ERROR
139004                       ,p_module   => l_log_module);
139005         END IF;
139006       END IF;
139007    END IF;
139008    --
139009    --
139010    ------------------------------------------------------------------------------------------------
139011    -- 4219869 Business Flow
139012    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
139013    -- Prior Entry.  Currently, the following code is always generated.
139014    ------------------------------------------------------------------------------------------------
139015    XLA_AE_LINES_PKG.ValidateCurrentLine;
139016 
139017    ------------------------------------------------------------------------------------
139018    -- 4219869 Business Flow
139019    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
139020    ------------------------------------------------------------------------------------
139021    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
139022 
139023    ----------------------------------------------------------------------------------
139024    -- 4219869 Business Flow
139025    -- Update journal entry status -- Need to generate this within IF <condition>
139026    ----------------------------------------------------------------------------------
139027    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
139028          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
139029          ,p_balance_type_code => l_balance_type_code
139030          );
139031 
139032    -------------------------------------------------------------------------------------------
139033    -- 4262811 - Generate the Accrual Reversal lines
139034    -------------------------------------------------------------------------------------------
139035    BEGIN
139036       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
139037                               (g_array_event(p_event_id).array_value_num('header_index'));
139038       IF l_acc_rev_flag IS NULL THEN
139039          l_acc_rev_flag := 'N';
139040       END IF;
139041    EXCEPTION
139042       WHEN OTHERS THEN
139043          l_acc_rev_flag := 'N';
139044    END;
139045    --
139046    IF (l_acc_rev_flag = 'Y') THEN
139047 
139048        -- 4645092  ------------------------------------------------------------------------------
139049        -- To allow MPA report to determine if it should generate report process
139050        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
139051        ------------------------------------------------------------------------------------------
139052 
139053        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
139054        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
139055    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
139056    -- call ADRs
139057    -- Bug 4922099
139058    --
139059    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
139060         (NVL(l_actual_upg_option, 'N') = 'O') OR
139061         (NVL(l_enc_upg_option, 'N') = 'O')
139062       )
139063    THEN
139064    NULL;
139065    --
139066    --
139067    
139068   l_ccid := AcctDerRule_4(
139069            p_application_id           => p_application_id
139070          , p_ae_header_id             => l_ae_header_id 
139071 , p_source_4 => p_source_4
139072          , x_transaction_coa_id       => l_adr_transaction_coa_id
139073          , x_accounting_coa_id        => l_adr_accounting_coa_id
139074          , x_value_type_code          => l_adr_value_type_code
139075          , p_side                     => 'NA'
139076    );
139077 
139078    xla_ae_lines_pkg.set_ccid(
139079     p_code_combination_id          => l_ccid
139080   , p_value_type_code              => l_adr_value_type_code
139081   , p_transaction_coa_id           => l_adr_transaction_coa_id
139082   , p_accounting_coa_id            => l_adr_accounting_coa_id
139083   , p_adr_code                     => 'CST_DEFAULT'
139084   , p_adr_type_code                => 'S'
139085   , p_component_type               => l_component_type
139086   , p_component_code               => l_component_code
139087   , p_component_type_code          => l_component_type_code
139088   , p_component_appl_id            => l_component_appl_id
139089   , p_amb_context_code             => l_amb_context_code
139090   , p_side                         => 'NA'
139091   );
139092 
139093 
139094    --
139095    --
139096    END IF;
139097 
139098        --
139099        -- Update the line information that should be overwritten
139100        --
139101        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
139102                                          p_header_num   => 1);
139103        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
139104 
139105        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
139106 
139107        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
139108           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
139109        END IF;
139110 
139111       --
139112       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
139113       --
139114       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
139115           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
139116       ELSE
139117           ---------------------------------------------------------------------------------------------------
139118           -- 4262811a Switch Sign
139119           ---------------------------------------------------------------------------------------------------
139120           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
139121           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
139122                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
139123           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
139124                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
139125           -- 5132302
139126           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
139127                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
139128 
139129       END IF;
139130 
139131       -- 4955764
139132       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
139133       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
139134 
139135 
139136       XLA_AE_LINES_PKG.ValidateCurrentLine;
139137       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
139138 
139139       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
139140                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
139141                ,p_balance_type_code => l_balance_type_code);
139142 
139143    END IF;
139144 
139145    -----------------------------------------------------------------------------------------
139146    -- 4262811 Multiperiod Accounting
139147    -----------------------------------------------------------------------------------------
139148      -- No MPA option is assigned.
139149 
139150 
139151 END IF;
139152 END IF;
139153 --
139154 
139155 --
139156 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
139157    trace
139158       (p_msg      => 'END of AcctLineType_251'
139159       ,p_level    => C_LEVEL_PROCEDURE
139160       ,p_module   => l_log_module);
139161 END IF;
139162 --
139163 EXCEPTION
139164   WHEN xla_exceptions_pkg.application_exception THEN
139165       RAISE;
139166   WHEN OTHERS THEN
139167        xla_exceptions_pkg.raise_message
139168            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_251');
139169 END AcctLineType_251;
139170 --
139171 
139172 ---------------------------------------
139173 --
139174 -- PRIVATE FUNCTION
139175 --         AcctLineType_252
139176 --
139177 ---------------------------------------
139178 PROCEDURE AcctLineType_252 (
139179   p_application_id        IN NUMBER
139180  ,p_event_id              IN NUMBER
139181  ,p_calculate_acctd_flag  IN VARCHAR2
139182  ,p_calculate_g_l_flag    IN VARCHAR2
139183  ,p_actual_flag           IN OUT VARCHAR2
139184  ,p_balance_type_code     OUT VARCHAR2
139185  ,p_gain_or_loss_ref      OUT VARCHAR2
139186  
139187 --Cost Management Default Account
139188  , p_source_4            IN NUMBER
139189 --DISTRIBUTION_IDENTIFIER
139190  , p_source_11            IN NUMBER
139191 --Distribution Type
139192  , p_source_12            IN VARCHAR2
139193  , p_source_12_meaning    IN VARCHAR2
139194 --Entered Currency Code
139195  , p_source_15            IN VARCHAR2
139196 --Entered Amount
139197  , p_source_18            IN NUMBER
139198 --Currency Conversion Date
139199  , p_source_19            IN DATE
139200 --Currency Conversion Rate
139201  , p_source_20            IN NUMBER
139202 --Currency Conversion Type
139203  , p_source_21            IN VARCHAR2
139204 --Accounted Amount
139205  , p_source_22            IN NUMBER
139206 --Accounting Line Type
139207  , p_source_24            IN NUMBER
139208 )
139209 IS
139210 
139211 l_component_type              VARCHAR2(80);
139212 l_component_code              VARCHAR2(30);
139213 l_component_type_code         VARCHAR2(1);
139214 l_component_appl_id           INTEGER;
139215 l_amb_context_code            VARCHAR2(30);
139216 l_entity_code                 VARCHAR2(30);
139217 l_event_class_code            VARCHAR2(30);
139218 l_ae_header_id                NUMBER;
139219 l_event_type_code             VARCHAR2(30);
139220 l_line_definition_code        VARCHAR2(30);
139221 l_line_definition_owner_code  VARCHAR2(1);
139222 --
139223 -- adr variables
139224 l_segment                     VARCHAR2(30);
139225 l_ccid                        NUMBER;
139226 l_adr_transaction_coa_id      NUMBER;
139227 l_adr_accounting_coa_id       NUMBER;
139228 l_adr_flexfield_segment_code  VARCHAR2(30);
139229 l_adr_flex_value_set_id       NUMBER;
139230 l_adr_value_type_code         VARCHAR2(30);
139231 l_adr_value_combination_id    NUMBER;
139232 l_adr_value_segment_code      VARCHAR2(30);
139233 
139234 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
139235 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
139236 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
139237 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
139238 
139239 -- 4262811 Variables ------------------------------------------------------------------------------------------
139240 l_entered_amt_idx             NUMBER;
139241 l_accted_amt_idx              NUMBER;
139242 l_acc_rev_flag                VARCHAR2(1);
139243 l_accrual_line_num            NUMBER;
139244 l_tmp_amt                     NUMBER;
139245 l_acc_rev_natural_side_code   VARCHAR2(1);
139246 
139247 l_num_entries                 NUMBER;
139248 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
139249 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
139250 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
139251 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
139252 l_recog_line_1                NUMBER;
139253 l_recog_line_2                NUMBER;
139254 
139255 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
139256 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
139257 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
139258 
139259 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
139260 
139261 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
139262 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
139263 
139264 ---------------------------------------------------------------------------------------------------------------
139265 
139266 
139267 --
139268 -- bulk performance
139269 --
139270 l_balance_type_code           VARCHAR2(1);
139271 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
139272 l_log_module                  VARCHAR2(240);
139273 
139274 --
139275 -- Upgrade strategy
139276 --
139277 l_actual_upg_option           VARCHAR2(1);
139278 l_enc_upg_option           VARCHAR2(1);
139279 
139280 --
139281 BEGIN
139282 --
139283 IF g_log_enabled THEN
139284       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_252';
139285 END IF;
139286 --
139287 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
139288 
139289       trace
139290          (p_msg      => 'BEGIN of AcctLineType_252'
139291          ,p_level    => C_LEVEL_PROCEDURE
139292          ,p_module   => l_log_module);
139293 
139294 END IF;
139295 --
139296 l_component_type             := 'AMB_JLT';
139297 l_component_code             := 'WIP_VALUATION';
139298 l_component_type_code        := 'S';
139299 l_component_appl_id          :=  707;
139300 l_amb_context_code           := 'DEFAULT';
139301 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
139302 l_event_class_code           := 'LOT';
139303 l_event_type_code            := 'LOT_ALL';
139304 l_line_definition_owner_code := 'S';
139305 l_line_definition_code       := 'WIP_MATERIAL_LOT';
139306 --
139307 l_balance_type_code          := 'A';
139308 l_segment                     := NULL;
139309 l_ccid                        := NULL;
139310 l_adr_transaction_coa_id      := NULL;
139311 l_adr_accounting_coa_id       := NULL;
139312 l_adr_flexfield_segment_code  := NULL;
139313 l_adr_flex_value_set_id       := NULL;
139314 l_adr_value_type_code         := NULL;
139315 l_adr_value_combination_id    := NULL;
139316 l_adr_value_segment_code      := NULL;
139317 
139318 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
139319 l_bflow_class_code           := '';    -- 4219869 Business Flow
139320 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
139321 l_budgetary_control_flag     := 'N';
139322 
139323 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
139324 l_bflow_applied_to_amt       := NULL; -- 5132302
139325 l_entered_amt_idx            := NULL;          -- 4262811
139326 l_accted_amt_idx             := NULL;          -- 4262811
139327 l_acc_rev_flag               := NULL;          -- 4262811
139328 l_accrual_line_num           := NULL;          -- 4262811
139329 l_tmp_amt                    := NULL;          -- 4262811
139330 --
139331  
139332 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
139333     l_balance_type_code <> 'B' THEN
139334 IF NVL(p_source_24,9E125) =  21 OR 
139335 NVL(p_source_24,9E125) =  22 OR 
139336 NVL(p_source_24,9E125) =  23 OR 
139337 NVL(p_source_24,9E125) =  24 OR 
139338 NVL(p_source_24,9E125) =  26 OR 
139339 NVL(p_source_24,9E125) =  28
139340  THEN 
139341 
139342    --
139343    XLA_AE_LINES_PKG.SetNewLine;
139344 
139345    p_balance_type_code          := l_balance_type_code;
139346    -- set the flag so later we will know whether the gain loss line needs to be created
139347    
139348    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
139349      p_actual_flag :='A';
139350    END IF;
139351 
139352    --
139353    -- bulk performance
139354    --
139355    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
139356                                       p_header_num   => 0); -- 4262811
139357    --
139358    -- set accounting line options
139359    --
139360    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
139361            p_natural_side_code          => 'D'
139362          , p_gain_or_loss_flag          => 'N'
139363          , p_gl_transfer_mode_code      => 'S'
139364          , p_acct_entry_type_code       => 'A'
139365          , p_switch_side_flag           => 'Y'
139366          , p_merge_duplicate_code       => 'N'
139367          );
139368    --
139369    l_acc_rev_natural_side_code := 'C';  -- 4262811
139370    -- 
139371    --
139372    -- set accounting line type info
139373    --
139374    xla_ae_lines_pkg.SetAcctLineType
139375       (p_component_type             => l_component_type
139376       ,p_event_type_code            => l_event_type_code
139377       ,p_line_definition_owner_code => l_line_definition_owner_code
139378       ,p_line_definition_code       => l_line_definition_code
139379       ,p_accounting_line_code       => l_component_code
139380       ,p_accounting_line_type_code  => l_component_type_code
139381       ,p_accounting_line_appl_id    => l_component_appl_id
139382       ,p_amb_context_code           => l_amb_context_code
139383       ,p_entity_code                => l_entity_code
139384       ,p_event_class_code           => l_event_class_code);
139385    --
139386    -- set accounting class
139387    --
139388    xla_ae_lines_pkg.SetAcctClass(
139389            p_accounting_class_code  => 'WIP_VALUATION'
139390          , p_ae_header_id           => l_ae_header_id
139391          );
139392 
139393    --
139394    -- set rounding class
139395    --
139396    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
139397                       'WIP_VALUATION';
139398 
139399    --
139400    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
139401    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
139402    --
139403    -- bulk performance
139404    --
139405    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
139406 
139407    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
139408       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
139409 
139410    -- 4955764
139411    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
139412       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
139413 
139414    -- 4458381 Public Sector Enh
139415    
139416    --
139417    -- set accounting attributes for the line type
139418    --
139419    l_entered_amt_idx := 3;
139420    l_accted_amt_idx  := 8;
139421    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
139422    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
139423    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
139424    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
139425    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
139426    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
139427    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
139428    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
139429    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
139430    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
139431    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
139432    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
139433    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
139434    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
139435    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
139436    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
139437    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
139438 
139439    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
139440    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
139441 
139442    ---------------------------------------------------------------------------------------------------------------
139443    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
139444    ---------------------------------------------------------------------------------------------------------------
139445    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
139446 
139447    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
139448    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
139449 
139450    IF xla_accounting_cache_pkg.GetValueChar
139451          (p_source_code         => 'LEDGER_CATEGORY_CODE'
139452          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
139453    AND l_bflow_method_code = 'PRIOR_ENTRY'
139454 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
139455    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
139456          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
139457        )
139458    THEN
139459          xla_ae_lines_pkg.BflowUpgEntry
139460            (p_business_method_code    => l_bflow_method_code
139461            ,p_business_class_code     => l_bflow_class_code
139462            ,p_balance_type            => l_balance_type_code);
139463    ELSE
139464       NULL;
139465 -- No business flow processing for business flow method of NONE.
139466    END IF;
139467 
139468    --
139469    -- call analytical criteria
139470    --
139471    
139472    --
139473    -- call description
139474    --
139475    -- No description or it is inherited.
139476    --
139477    -- call ADRs
139478    -- Bug 4922099
139479    --
139480    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
139481         (NVL(l_actual_upg_option, 'N') = 'O') OR
139482         (NVL(l_enc_upg_option, 'N') = 'O')
139483       )
139484    THEN
139485    NULL;
139486    --
139487    --
139488    
139489   l_ccid := AcctDerRule_4(
139490            p_application_id           => p_application_id
139491          , p_ae_header_id             => l_ae_header_id 
139492 , p_source_4 => p_source_4
139493          , x_transaction_coa_id       => l_adr_transaction_coa_id
139494          , x_accounting_coa_id        => l_adr_accounting_coa_id
139495          , x_value_type_code          => l_adr_value_type_code
139496          , p_side                     => 'NA'
139497    );
139498 
139499    xla_ae_lines_pkg.set_ccid(
139500     p_code_combination_id          => l_ccid
139501   , p_value_type_code              => l_adr_value_type_code
139502   , p_transaction_coa_id           => l_adr_transaction_coa_id
139503   , p_accounting_coa_id            => l_adr_accounting_coa_id
139504   , p_adr_code                     => 'CST_DEFAULT'
139505   , p_adr_type_code                => 'S'
139506   , p_component_type               => l_component_type
139507   , p_component_code               => l_component_code
139508   , p_component_type_code          => l_component_type_code
139509   , p_component_appl_id            => l_component_appl_id
139510   , p_amb_context_code             => l_amb_context_code
139511   , p_side                         => 'NA'
139512   );
139513 
139514 
139515    --
139516    --
139517    END IF;
139518    --
139519    -- Bug 4922099
139520    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
139521           (NVL(l_enc_upg_option, 'N') = 'O')
139522         ) AND
139523         (l_bflow_method_code = 'PRIOR_ENTRY')
139524       )
139525    THEN
139526       IF
139527       --
139528       1 = 2
139529       --
139530       THEN
139531       xla_accounting_err_pkg.build_message
139532                                     (p_appli_s_name            => 'XLA'
139533                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
139534                                     ,p_token_1                 => 'LINE_NUMBER'
139535                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
139536                                     ,p_token_2                 => 'LINE_TYPE_NAME'
139537                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
139538                                                                              l_component_type
139539                                                                             ,l_component_code
139540                                                                             ,l_component_type_code
139541                                                                             ,l_component_appl_id
139542                                                                             ,l_amb_context_code
139543                                                                             ,l_entity_code
139544                                                                             ,l_event_class_code
139545                                                                            )
139546                                     ,p_token_3                 => 'OWNER'
139547                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
139548                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
139549                                                                           ,p_lookup_code    => l_component_type_code
139550                                                                          )
139551                                     ,p_token_4                 => 'PRODUCT_NAME'
139552                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
139553                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
139554                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
139555                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
139556                                     ,p_ae_header_id            =>  NULL
139557                                        );
139558 
139559         IF (C_LEVEL_ERROR>= g_log_level) THEN
139560                  trace
139561                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
139562                       ,p_level    => C_LEVEL_ERROR
139563                       ,p_module   => l_log_module);
139564         END IF;
139565       END IF;
139566    END IF;
139567    --
139568    --
139569    ------------------------------------------------------------------------------------------------
139570    -- 4219869 Business Flow
139571    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
139572    -- Prior Entry.  Currently, the following code is always generated.
139573    ------------------------------------------------------------------------------------------------
139574    XLA_AE_LINES_PKG.ValidateCurrentLine;
139575 
139576    ------------------------------------------------------------------------------------
139577    -- 4219869 Business Flow
139578    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
139579    ------------------------------------------------------------------------------------
139580    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
139581 
139582    ----------------------------------------------------------------------------------
139583    -- 4219869 Business Flow
139584    -- Update journal entry status -- Need to generate this within IF <condition>
139585    ----------------------------------------------------------------------------------
139586    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
139587          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
139588          ,p_balance_type_code => l_balance_type_code
139589          );
139590 
139591    -------------------------------------------------------------------------------------------
139592    -- 4262811 - Generate the Accrual Reversal lines
139593    -------------------------------------------------------------------------------------------
139594    BEGIN
139595       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
139596                               (g_array_event(p_event_id).array_value_num('header_index'));
139597       IF l_acc_rev_flag IS NULL THEN
139598          l_acc_rev_flag := 'N';
139599       END IF;
139600    EXCEPTION
139601       WHEN OTHERS THEN
139602          l_acc_rev_flag := 'N';
139603    END;
139604    --
139605    IF (l_acc_rev_flag = 'Y') THEN
139606 
139607        -- 4645092  ------------------------------------------------------------------------------
139608        -- To allow MPA report to determine if it should generate report process
139609        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
139610        ------------------------------------------------------------------------------------------
139611 
139612        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
139613        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
139614    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
139615    -- call ADRs
139616    -- Bug 4922099
139617    --
139618    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
139619         (NVL(l_actual_upg_option, 'N') = 'O') OR
139620         (NVL(l_enc_upg_option, 'N') = 'O')
139621       )
139622    THEN
139623    NULL;
139624    --
139625    --
139626    
139627   l_ccid := AcctDerRule_4(
139628            p_application_id           => p_application_id
139629          , p_ae_header_id             => l_ae_header_id 
139630 , p_source_4 => p_source_4
139631          , x_transaction_coa_id       => l_adr_transaction_coa_id
139632          , x_accounting_coa_id        => l_adr_accounting_coa_id
139633          , x_value_type_code          => l_adr_value_type_code
139634          , p_side                     => 'NA'
139635    );
139636 
139637    xla_ae_lines_pkg.set_ccid(
139638     p_code_combination_id          => l_ccid
139639   , p_value_type_code              => l_adr_value_type_code
139640   , p_transaction_coa_id           => l_adr_transaction_coa_id
139641   , p_accounting_coa_id            => l_adr_accounting_coa_id
139642   , p_adr_code                     => 'CST_DEFAULT'
139643   , p_adr_type_code                => 'S'
139644   , p_component_type               => l_component_type
139645   , p_component_code               => l_component_code
139646   , p_component_type_code          => l_component_type_code
139647   , p_component_appl_id            => l_component_appl_id
139648   , p_amb_context_code             => l_amb_context_code
139649   , p_side                         => 'NA'
139650   );
139651 
139652 
139653    --
139654    --
139655    END IF;
139656 
139657        --
139658        -- Update the line information that should be overwritten
139659        --
139660        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
139661                                          p_header_num   => 1);
139662        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
139663 
139664        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
139665 
139666        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
139667           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
139668        END IF;
139669 
139670       --
139671       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
139672       --
139673       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
139674           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
139675       ELSE
139676           ---------------------------------------------------------------------------------------------------
139677           -- 4262811a Switch Sign
139678           ---------------------------------------------------------------------------------------------------
139679           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
139680           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
139681                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
139682           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
139683                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
139684           -- 5132302
139685           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
139686                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
139687 
139688       END IF;
139689 
139690       -- 4955764
139691       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
139692       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
139693 
139694 
139695       XLA_AE_LINES_PKG.ValidateCurrentLine;
139696       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
139697 
139698       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
139699                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
139700                ,p_balance_type_code => l_balance_type_code);
139701 
139702    END IF;
139703 
139704    -----------------------------------------------------------------------------------------
139705    -- 4262811 Multiperiod Accounting
139706    -----------------------------------------------------------------------------------------
139707      -- No MPA option is assigned.
139708 
139709 
139710 END IF;
139711 END IF;
139712 --
139713 
139714 --
139715 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
139716    trace
139717       (p_msg      => 'END of AcctLineType_252'
139718       ,p_level    => C_LEVEL_PROCEDURE
139719       ,p_module   => l_log_module);
139720 END IF;
139721 --
139722 EXCEPTION
139723   WHEN xla_exceptions_pkg.application_exception THEN
139724       RAISE;
139725   WHEN OTHERS THEN
139726        xla_exceptions_pkg.raise_message
139727            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_252');
139728 END AcctLineType_252;
139729 --
139730 
139731 ---------------------------------------
139732 --
139733 -- PRIVATE FUNCTION
139734 --         AcctLineType_253
139735 --
139736 ---------------------------------------
139737 PROCEDURE AcctLineType_253 (
139738   p_application_id        IN NUMBER
139739  ,p_event_id              IN NUMBER
139740  ,p_calculate_acctd_flag  IN VARCHAR2
139741  ,p_calculate_g_l_flag    IN VARCHAR2
139742  ,p_actual_flag           IN OUT VARCHAR2
139743  ,p_balance_type_code     OUT VARCHAR2
139744  ,p_gain_or_loss_ref      OUT VARCHAR2
139745  
139746 --Cost Management Default Account
139747  , p_source_4            IN NUMBER
139748 --DISTRIBUTION_IDENTIFIER
139749  , p_source_11            IN NUMBER
139750 --Distribution Type
139751  , p_source_12            IN VARCHAR2
139752  , p_source_12_meaning    IN VARCHAR2
139753 --Entered Currency Code
139754  , p_source_15            IN VARCHAR2
139755 --Entered Amount
139756  , p_source_18            IN NUMBER
139757 --Currency Conversion Date
139758  , p_source_19            IN DATE
139759 --Currency Conversion Rate
139760  , p_source_20            IN NUMBER
139761 --Currency Conversion Type
139762  , p_source_21            IN VARCHAR2
139763 --Accounted Amount
139764  , p_source_22            IN NUMBER
139765 --Accounting Line Type
139766  , p_source_24            IN NUMBER
139767 )
139768 IS
139769 
139770 l_component_type              VARCHAR2(80);
139771 l_component_code              VARCHAR2(30);
139772 l_component_type_code         VARCHAR2(1);
139773 l_component_appl_id           INTEGER;
139774 l_amb_context_code            VARCHAR2(30);
139775 l_entity_code                 VARCHAR2(30);
139776 l_event_class_code            VARCHAR2(30);
139777 l_ae_header_id                NUMBER;
139778 l_event_type_code             VARCHAR2(30);
139779 l_line_definition_code        VARCHAR2(30);
139780 l_line_definition_owner_code  VARCHAR2(1);
139781 --
139782 -- adr variables
139783 l_segment                     VARCHAR2(30);
139784 l_ccid                        NUMBER;
139785 l_adr_transaction_coa_id      NUMBER;
139786 l_adr_accounting_coa_id       NUMBER;
139787 l_adr_flexfield_segment_code  VARCHAR2(30);
139788 l_adr_flex_value_set_id       NUMBER;
139789 l_adr_value_type_code         VARCHAR2(30);
139790 l_adr_value_combination_id    NUMBER;
139791 l_adr_value_segment_code      VARCHAR2(30);
139792 
139793 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
139794 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
139795 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
139796 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
139797 
139798 -- 4262811 Variables ------------------------------------------------------------------------------------------
139799 l_entered_amt_idx             NUMBER;
139800 l_accted_amt_idx              NUMBER;
139801 l_acc_rev_flag                VARCHAR2(1);
139802 l_accrual_line_num            NUMBER;
139803 l_tmp_amt                     NUMBER;
139804 l_acc_rev_natural_side_code   VARCHAR2(1);
139805 
139806 l_num_entries                 NUMBER;
139807 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
139808 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
139809 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
139810 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
139811 l_recog_line_1                NUMBER;
139812 l_recog_line_2                NUMBER;
139813 
139814 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
139815 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
139816 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
139817 
139818 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
139819 
139820 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
139821 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
139822 
139823 ---------------------------------------------------------------------------------------------------------------
139824 
139825 
139826 --
139827 -- bulk performance
139828 --
139829 l_balance_type_code           VARCHAR2(1);
139830 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
139831 l_log_module                  VARCHAR2(240);
139832 
139833 --
139834 -- Upgrade strategy
139835 --
139836 l_actual_upg_option           VARCHAR2(1);
139837 l_enc_upg_option           VARCHAR2(1);
139838 
139839 --
139840 BEGIN
139841 --
139842 IF g_log_enabled THEN
139843       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_253';
139844 END IF;
139845 --
139846 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
139847 
139848       trace
139849          (p_msg      => 'BEGIN of AcctLineType_253'
139850          ,p_level    => C_LEVEL_PROCEDURE
139851          ,p_module   => l_log_module);
139852 
139853 END IF;
139854 --
139855 l_component_type             := 'AMB_JLT';
139856 l_component_code             := 'WIP_VALUATION';
139857 l_component_type_code        := 'S';
139858 l_component_appl_id          :=  707;
139859 l_amb_context_code           := 'DEFAULT';
139860 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
139861 l_event_class_code           := 'WIP_MTL';
139862 l_event_type_code            := 'WIP_MTL_ALL';
139863 l_line_definition_owner_code := 'S';
139864 l_line_definition_code       := 'WIP_MTL';
139865 --
139866 l_balance_type_code          := 'A';
139867 l_segment                     := NULL;
139868 l_ccid                        := NULL;
139869 l_adr_transaction_coa_id      := NULL;
139870 l_adr_accounting_coa_id       := NULL;
139871 l_adr_flexfield_segment_code  := NULL;
139872 l_adr_flex_value_set_id       := NULL;
139873 l_adr_value_type_code         := NULL;
139874 l_adr_value_combination_id    := NULL;
139875 l_adr_value_segment_code      := NULL;
139876 
139877 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
139878 l_bflow_class_code           := '';    -- 4219869 Business Flow
139879 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
139880 l_budgetary_control_flag     := 'N';
139881 
139882 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
139883 l_bflow_applied_to_amt       := NULL; -- 5132302
139884 l_entered_amt_idx            := NULL;          -- 4262811
139885 l_accted_amt_idx             := NULL;          -- 4262811
139886 l_acc_rev_flag               := NULL;          -- 4262811
139887 l_accrual_line_num           := NULL;          -- 4262811
139888 l_tmp_amt                    := NULL;          -- 4262811
139889 --
139890  
139891 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
139892     l_balance_type_code <> 'B' THEN
139893 IF NVL(p_source_24,9E125) =  7
139894  THEN 
139895 
139896    --
139897    XLA_AE_LINES_PKG.SetNewLine;
139898 
139899    p_balance_type_code          := l_balance_type_code;
139900    -- set the flag so later we will know whether the gain loss line needs to be created
139901    
139902    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
139903      p_actual_flag :='A';
139904    END IF;
139905 
139906    --
139907    -- bulk performance
139908    --
139909    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
139910                                       p_header_num   => 0); -- 4262811
139911    --
139912    -- set accounting line options
139913    --
139914    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
139915            p_natural_side_code          => 'D'
139916          , p_gain_or_loss_flag          => 'N'
139917          , p_gl_transfer_mode_code      => 'S'
139918          , p_acct_entry_type_code       => 'A'
139919          , p_switch_side_flag           => 'Y'
139920          , p_merge_duplicate_code       => 'N'
139921          );
139922    --
139923    l_acc_rev_natural_side_code := 'C';  -- 4262811
139924    -- 
139925    --
139926    -- set accounting line type info
139927    --
139928    xla_ae_lines_pkg.SetAcctLineType
139929       (p_component_type             => l_component_type
139930       ,p_event_type_code            => l_event_type_code
139931       ,p_line_definition_owner_code => l_line_definition_owner_code
139932       ,p_line_definition_code       => l_line_definition_code
139933       ,p_accounting_line_code       => l_component_code
139934       ,p_accounting_line_type_code  => l_component_type_code
139935       ,p_accounting_line_appl_id    => l_component_appl_id
139936       ,p_amb_context_code           => l_amb_context_code
139937       ,p_entity_code                => l_entity_code
139938       ,p_event_class_code           => l_event_class_code);
139939    --
139940    -- set accounting class
139941    --
139942    xla_ae_lines_pkg.SetAcctClass(
139943            p_accounting_class_code  => 'WIP_VALUATION'
139944          , p_ae_header_id           => l_ae_header_id
139945          );
139946 
139947    --
139948    -- set rounding class
139949    --
139950    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
139951                       'WIP_VALUATION';
139952 
139953    --
139954    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
139955    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
139956    --
139957    -- bulk performance
139958    --
139959    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
139960 
139961    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
139962       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
139963 
139964    -- 4955764
139965    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
139966       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
139967 
139968    -- 4458381 Public Sector Enh
139969    
139970    --
139971    -- set accounting attributes for the line type
139972    --
139973    l_entered_amt_idx := 3;
139974    l_accted_amt_idx  := 8;
139975    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
139976    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
139977    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
139978    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
139979    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
139980    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
139981    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
139982    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
139983    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
139984    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
139985    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
139986    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
139987    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
139988    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
139989    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
139990    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
139991    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
139992 
139993    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
139994    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
139995 
139996    ---------------------------------------------------------------------------------------------------------------
139997    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
139998    ---------------------------------------------------------------------------------------------------------------
139999    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
140000 
140001    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
140002    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
140003 
140004    IF xla_accounting_cache_pkg.GetValueChar
140005          (p_source_code         => 'LEDGER_CATEGORY_CODE'
140006          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
140007    AND l_bflow_method_code = 'PRIOR_ENTRY'
140008 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
140009    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
140010          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
140011        )
140012    THEN
140013          xla_ae_lines_pkg.BflowUpgEntry
140014            (p_business_method_code    => l_bflow_method_code
140015            ,p_business_class_code     => l_bflow_class_code
140016            ,p_balance_type            => l_balance_type_code);
140017    ELSE
140018       NULL;
140019 -- No business flow processing for business flow method of NONE.
140020    END IF;
140021 
140022    --
140023    -- call analytical criteria
140024    --
140025    
140026    --
140027    -- call description
140028    --
140029    -- No description or it is inherited.
140030    --
140031    -- call ADRs
140032    -- Bug 4922099
140033    --
140034    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
140035         (NVL(l_actual_upg_option, 'N') = 'O') OR
140036         (NVL(l_enc_upg_option, 'N') = 'O')
140037       )
140038    THEN
140039    NULL;
140040    --
140041    --
140042    
140043   l_ccid := AcctDerRule_4(
140044            p_application_id           => p_application_id
140045          , p_ae_header_id             => l_ae_header_id 
140046 , p_source_4 => p_source_4
140047          , x_transaction_coa_id       => l_adr_transaction_coa_id
140048          , x_accounting_coa_id        => l_adr_accounting_coa_id
140049          , x_value_type_code          => l_adr_value_type_code
140050          , p_side                     => 'NA'
140051    );
140052 
140053    xla_ae_lines_pkg.set_ccid(
140054     p_code_combination_id          => l_ccid
140055   , p_value_type_code              => l_adr_value_type_code
140056   , p_transaction_coa_id           => l_adr_transaction_coa_id
140057   , p_accounting_coa_id            => l_adr_accounting_coa_id
140058   , p_adr_code                     => 'CST_DEFAULT'
140059   , p_adr_type_code                => 'S'
140060   , p_component_type               => l_component_type
140061   , p_component_code               => l_component_code
140062   , p_component_type_code          => l_component_type_code
140063   , p_component_appl_id            => l_component_appl_id
140064   , p_amb_context_code             => l_amb_context_code
140065   , p_side                         => 'NA'
140066   );
140067 
140068 
140069    --
140070    --
140071    END IF;
140072    --
140073    -- Bug 4922099
140074    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
140075           (NVL(l_enc_upg_option, 'N') = 'O')
140076         ) AND
140077         (l_bflow_method_code = 'PRIOR_ENTRY')
140078       )
140079    THEN
140080       IF
140081       --
140082       1 = 2
140083       --
140084       THEN
140085       xla_accounting_err_pkg.build_message
140086                                     (p_appli_s_name            => 'XLA'
140087                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
140088                                     ,p_token_1                 => 'LINE_NUMBER'
140089                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
140090                                     ,p_token_2                 => 'LINE_TYPE_NAME'
140091                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
140092                                                                              l_component_type
140093                                                                             ,l_component_code
140094                                                                             ,l_component_type_code
140095                                                                             ,l_component_appl_id
140096                                                                             ,l_amb_context_code
140097                                                                             ,l_entity_code
140098                                                                             ,l_event_class_code
140099                                                                            )
140100                                     ,p_token_3                 => 'OWNER'
140101                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
140102                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
140103                                                                           ,p_lookup_code    => l_component_type_code
140104                                                                          )
140105                                     ,p_token_4                 => 'PRODUCT_NAME'
140106                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
140107                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
140108                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
140109                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
140110                                     ,p_ae_header_id            =>  NULL
140111                                        );
140112 
140113         IF (C_LEVEL_ERROR>= g_log_level) THEN
140114                  trace
140115                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
140116                       ,p_level    => C_LEVEL_ERROR
140117                       ,p_module   => l_log_module);
140118         END IF;
140119       END IF;
140120    END IF;
140121    --
140122    --
140123    ------------------------------------------------------------------------------------------------
140124    -- 4219869 Business Flow
140125    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
140126    -- Prior Entry.  Currently, the following code is always generated.
140127    ------------------------------------------------------------------------------------------------
140128    XLA_AE_LINES_PKG.ValidateCurrentLine;
140129 
140130    ------------------------------------------------------------------------------------
140131    -- 4219869 Business Flow
140132    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
140133    ------------------------------------------------------------------------------------
140134    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
140135 
140136    ----------------------------------------------------------------------------------
140137    -- 4219869 Business Flow
140138    -- Update journal entry status -- Need to generate this within IF <condition>
140139    ----------------------------------------------------------------------------------
140140    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
140141          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
140142          ,p_balance_type_code => l_balance_type_code
140143          );
140144 
140145    -------------------------------------------------------------------------------------------
140146    -- 4262811 - Generate the Accrual Reversal lines
140147    -------------------------------------------------------------------------------------------
140148    BEGIN
140149       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
140150                               (g_array_event(p_event_id).array_value_num('header_index'));
140151       IF l_acc_rev_flag IS NULL THEN
140152          l_acc_rev_flag := 'N';
140153       END IF;
140154    EXCEPTION
140155       WHEN OTHERS THEN
140156          l_acc_rev_flag := 'N';
140157    END;
140158    --
140159    IF (l_acc_rev_flag = 'Y') THEN
140160 
140161        -- 4645092  ------------------------------------------------------------------------------
140162        -- To allow MPA report to determine if it should generate report process
140163        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
140164        ------------------------------------------------------------------------------------------
140165 
140166        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
140167        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
140168    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
140169    -- call ADRs
140170    -- Bug 4922099
140171    --
140172    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
140173         (NVL(l_actual_upg_option, 'N') = 'O') OR
140174         (NVL(l_enc_upg_option, 'N') = 'O')
140175       )
140176    THEN
140177    NULL;
140178    --
140179    --
140180    
140181   l_ccid := AcctDerRule_4(
140182            p_application_id           => p_application_id
140183          , p_ae_header_id             => l_ae_header_id 
140184 , p_source_4 => p_source_4
140185          , x_transaction_coa_id       => l_adr_transaction_coa_id
140186          , x_accounting_coa_id        => l_adr_accounting_coa_id
140187          , x_value_type_code          => l_adr_value_type_code
140188          , p_side                     => 'NA'
140189    );
140190 
140191    xla_ae_lines_pkg.set_ccid(
140192     p_code_combination_id          => l_ccid
140193   , p_value_type_code              => l_adr_value_type_code
140194   , p_transaction_coa_id           => l_adr_transaction_coa_id
140195   , p_accounting_coa_id            => l_adr_accounting_coa_id
140196   , p_adr_code                     => 'CST_DEFAULT'
140197   , p_adr_type_code                => 'S'
140198   , p_component_type               => l_component_type
140199   , p_component_code               => l_component_code
140200   , p_component_type_code          => l_component_type_code
140201   , p_component_appl_id            => l_component_appl_id
140202   , p_amb_context_code             => l_amb_context_code
140203   , p_side                         => 'NA'
140204   );
140205 
140206 
140207    --
140208    --
140209    END IF;
140210 
140211        --
140212        -- Update the line information that should be overwritten
140213        --
140214        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
140215                                          p_header_num   => 1);
140216        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
140217 
140218        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
140219 
140220        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
140221           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
140222        END IF;
140223 
140224       --
140225       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
140226       --
140227       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
140228           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
140229       ELSE
140230           ---------------------------------------------------------------------------------------------------
140231           -- 4262811a Switch Sign
140232           ---------------------------------------------------------------------------------------------------
140233           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
140234           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
140235                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
140236           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
140237                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
140238           -- 5132302
140239           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
140240                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
140241 
140242       END IF;
140243 
140244       -- 4955764
140245       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
140246       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
140247 
140248 
140249       XLA_AE_LINES_PKG.ValidateCurrentLine;
140250       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
140251 
140252       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
140253                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
140254                ,p_balance_type_code => l_balance_type_code);
140255 
140256    END IF;
140257 
140258    -----------------------------------------------------------------------------------------
140259    -- 4262811 Multiperiod Accounting
140260    -----------------------------------------------------------------------------------------
140261      -- No MPA option is assigned.
140262 
140263 
140264 END IF;
140265 END IF;
140266 --
140267 
140268 --
140269 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
140270    trace
140271       (p_msg      => 'END of AcctLineType_253'
140272       ,p_level    => C_LEVEL_PROCEDURE
140273       ,p_module   => l_log_module);
140274 END IF;
140275 --
140276 EXCEPTION
140277   WHEN xla_exceptions_pkg.application_exception THEN
140278       RAISE;
140279   WHEN OTHERS THEN
140280        xla_exceptions_pkg.raise_message
140281            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_253');
140282 END AcctLineType_253;
140283 --
140284 
140285 ---------------------------------------
140286 --
140287 -- PRIVATE FUNCTION
140288 --         AcctLineType_254
140289 --
140290 ---------------------------------------
140291 PROCEDURE AcctLineType_254 (
140292   p_application_id        IN NUMBER
140293  ,p_event_id              IN NUMBER
140294  ,p_calculate_acctd_flag  IN VARCHAR2
140295  ,p_calculate_g_l_flag    IN VARCHAR2
140296  ,p_actual_flag           IN OUT VARCHAR2
140297  ,p_balance_type_code     OUT VARCHAR2
140298  ,p_gain_or_loss_ref      OUT VARCHAR2
140299  
140300 --Cost Management Default Account
140301  , p_source_4            IN NUMBER
140302 --DISTRIBUTION_IDENTIFIER
140303  , p_source_11            IN NUMBER
140304 --Distribution Type
140305  , p_source_12            IN VARCHAR2
140306  , p_source_12_meaning    IN VARCHAR2
140307 --Entered Currency Code
140308  , p_source_15            IN VARCHAR2
140309 --Entered Amount
140310  , p_source_18            IN NUMBER
140311 --Currency Conversion Date
140312  , p_source_19            IN DATE
140313 --Currency Conversion Rate
140314  , p_source_20            IN NUMBER
140315 --Accounted Amount
140316  , p_source_22            IN NUMBER
140317 --Accounting Line Type
140318  , p_source_24            IN NUMBER
140319 )
140320 IS
140321 
140322 l_component_type              VARCHAR2(80);
140323 l_component_code              VARCHAR2(30);
140324 l_component_type_code         VARCHAR2(1);
140325 l_component_appl_id           INTEGER;
140326 l_amb_context_code            VARCHAR2(30);
140327 l_entity_code                 VARCHAR2(30);
140328 l_event_class_code            VARCHAR2(30);
140329 l_ae_header_id                NUMBER;
140330 l_event_type_code             VARCHAR2(30);
140331 l_line_definition_code        VARCHAR2(30);
140332 l_line_definition_owner_code  VARCHAR2(1);
140333 --
140334 -- adr variables
140335 l_segment                     VARCHAR2(30);
140336 l_ccid                        NUMBER;
140337 l_adr_transaction_coa_id      NUMBER;
140338 l_adr_accounting_coa_id       NUMBER;
140339 l_adr_flexfield_segment_code  VARCHAR2(30);
140340 l_adr_flex_value_set_id       NUMBER;
140341 l_adr_value_type_code         VARCHAR2(30);
140342 l_adr_value_combination_id    NUMBER;
140343 l_adr_value_segment_code      VARCHAR2(30);
140344 
140345 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
140346 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
140347 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
140348 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
140349 
140350 -- 4262811 Variables ------------------------------------------------------------------------------------------
140351 l_entered_amt_idx             NUMBER;
140352 l_accted_amt_idx              NUMBER;
140353 l_acc_rev_flag                VARCHAR2(1);
140354 l_accrual_line_num            NUMBER;
140355 l_tmp_amt                     NUMBER;
140356 l_acc_rev_natural_side_code   VARCHAR2(1);
140357 
140358 l_num_entries                 NUMBER;
140359 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
140360 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
140361 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
140362 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
140363 l_recog_line_1                NUMBER;
140364 l_recog_line_2                NUMBER;
140365 
140366 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
140367 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
140368 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
140369 
140370 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
140371 
140372 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
140373 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
140374 
140375 ---------------------------------------------------------------------------------------------------------------
140376 
140377 
140378 --
140379 -- bulk performance
140380 --
140381 l_balance_type_code           VARCHAR2(1);
140382 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
140383 l_log_module                  VARCHAR2(240);
140384 
140385 --
140386 -- Upgrade strategy
140387 --
140388 l_actual_upg_option           VARCHAR2(1);
140389 l_enc_upg_option           VARCHAR2(1);
140390 
140391 --
140392 BEGIN
140393 --
140394 IF g_log_enabled THEN
140395       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_254';
140396 END IF;
140397 --
140398 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
140399 
140400       trace
140401          (p_msg      => 'BEGIN of AcctLineType_254'
140402          ,p_level    => C_LEVEL_PROCEDURE
140403          ,p_module   => l_log_module);
140404 
140405 END IF;
140406 --
140407 l_component_type             := 'AMB_JLT';
140408 l_component_code             := 'WIP_VALUATION';
140409 l_component_type_code        := 'S';
140410 l_component_appl_id          :=  707;
140411 l_amb_context_code           := 'DEFAULT';
140412 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
140413 l_event_class_code           := 'OSP';
140414 l_event_type_code            := 'OSP_ALL';
140415 l_line_definition_owner_code := 'S';
140416 l_line_definition_code       := 'OUTSIDE_PROCESSING';
140417 --
140418 l_balance_type_code          := 'A';
140419 l_segment                     := NULL;
140420 l_ccid                        := NULL;
140421 l_adr_transaction_coa_id      := NULL;
140422 l_adr_accounting_coa_id       := NULL;
140423 l_adr_flexfield_segment_code  := NULL;
140424 l_adr_flex_value_set_id       := NULL;
140425 l_adr_value_type_code         := NULL;
140426 l_adr_value_combination_id    := NULL;
140427 l_adr_value_segment_code      := NULL;
140428 
140429 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
140430 l_bflow_class_code           := '';    -- 4219869 Business Flow
140431 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
140432 l_budgetary_control_flag     := 'N';
140433 
140434 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
140435 l_bflow_applied_to_amt       := NULL; -- 5132302
140436 l_entered_amt_idx            := NULL;          -- 4262811
140437 l_accted_amt_idx             := NULL;          -- 4262811
140438 l_acc_rev_flag               := NULL;          -- 4262811
140439 l_accrual_line_num           := NULL;          -- 4262811
140440 l_tmp_amt                    := NULL;          -- 4262811
140441 --
140442  
140443 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
140444     l_balance_type_code <> 'B' THEN
140445 IF NVL(p_source_24,9E125) =  7
140446  THEN 
140447 
140448    --
140449    XLA_AE_LINES_PKG.SetNewLine;
140450 
140451    p_balance_type_code          := l_balance_type_code;
140452    -- set the flag so later we will know whether the gain loss line needs to be created
140453    
140454    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
140455      p_actual_flag :='A';
140456    END IF;
140457 
140458    --
140459    -- bulk performance
140460    --
140461    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
140462                                       p_header_num   => 0); -- 4262811
140463    --
140464    -- set accounting line options
140465    --
140466    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
140467            p_natural_side_code          => 'D'
140468          , p_gain_or_loss_flag          => 'N'
140469          , p_gl_transfer_mode_code      => 'S'
140470          , p_acct_entry_type_code       => 'A'
140471          , p_switch_side_flag           => 'Y'
140472          , p_merge_duplicate_code       => 'N'
140473          );
140474    --
140475    l_acc_rev_natural_side_code := 'C';  -- 4262811
140476    -- 
140477    --
140478    -- set accounting line type info
140479    --
140480    xla_ae_lines_pkg.SetAcctLineType
140481       (p_component_type             => l_component_type
140482       ,p_event_type_code            => l_event_type_code
140483       ,p_line_definition_owner_code => l_line_definition_owner_code
140484       ,p_line_definition_code       => l_line_definition_code
140485       ,p_accounting_line_code       => l_component_code
140486       ,p_accounting_line_type_code  => l_component_type_code
140487       ,p_accounting_line_appl_id    => l_component_appl_id
140488       ,p_amb_context_code           => l_amb_context_code
140489       ,p_entity_code                => l_entity_code
140490       ,p_event_class_code           => l_event_class_code);
140491    --
140492    -- set accounting class
140493    --
140494    xla_ae_lines_pkg.SetAcctClass(
140495            p_accounting_class_code  => 'WIP_VALUATION'
140496          , p_ae_header_id           => l_ae_header_id
140497          );
140498 
140499    --
140500    -- set rounding class
140501    --
140502    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
140503                       'WIP_VALUATION';
140504 
140505    --
140506    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
140507    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
140508    --
140509    -- bulk performance
140510    --
140511    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
140512 
140513    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
140514       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
140515 
140516    -- 4955764
140517    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
140518       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
140519 
140520    -- 4458381 Public Sector Enh
140521    
140522    --
140523    -- set accounting attributes for the line type
140524    --
140525    l_entered_amt_idx := 3;
140526    l_accted_amt_idx  := 8;
140527    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
140528    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
140529    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
140530    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
140531    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
140532    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
140533    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
140534    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
140535    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
140536    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
140537    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
140538    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
140539    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
140540    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
140541    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_20);
140542    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
140543    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
140544 
140545    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
140546    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
140547 
140548    ---------------------------------------------------------------------------------------------------------------
140549    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
140550    ---------------------------------------------------------------------------------------------------------------
140551    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
140552 
140553    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
140554    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
140555 
140556    IF xla_accounting_cache_pkg.GetValueChar
140557          (p_source_code         => 'LEDGER_CATEGORY_CODE'
140558          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
140559    AND l_bflow_method_code = 'PRIOR_ENTRY'
140560 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
140561    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
140562          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
140563        )
140564    THEN
140565          xla_ae_lines_pkg.BflowUpgEntry
140566            (p_business_method_code    => l_bflow_method_code
140567            ,p_business_class_code     => l_bflow_class_code
140568            ,p_balance_type            => l_balance_type_code);
140569    ELSE
140570       NULL;
140571 -- No business flow processing for business flow method of NONE.
140572    END IF;
140573 
140574    --
140575    -- call analytical criteria
140576    --
140577    
140578    --
140579    -- call description
140580    --
140581    -- No description or it is inherited.
140582    --
140583    -- call ADRs
140584    -- Bug 4922099
140585    --
140586    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
140587         (NVL(l_actual_upg_option, 'N') = 'O') OR
140588         (NVL(l_enc_upg_option, 'N') = 'O')
140589       )
140590    THEN
140591    NULL;
140592    --
140593    --
140594    
140595   l_ccid := AcctDerRule_4(
140596            p_application_id           => p_application_id
140597          , p_ae_header_id             => l_ae_header_id 
140598 , p_source_4 => p_source_4
140599          , x_transaction_coa_id       => l_adr_transaction_coa_id
140600          , x_accounting_coa_id        => l_adr_accounting_coa_id
140601          , x_value_type_code          => l_adr_value_type_code
140602          , p_side                     => 'NA'
140603    );
140604 
140605    xla_ae_lines_pkg.set_ccid(
140606     p_code_combination_id          => l_ccid
140607   , p_value_type_code              => l_adr_value_type_code
140608   , p_transaction_coa_id           => l_adr_transaction_coa_id
140609   , p_accounting_coa_id            => l_adr_accounting_coa_id
140610   , p_adr_code                     => 'CST_DEFAULT'
140611   , p_adr_type_code                => 'S'
140612   , p_component_type               => l_component_type
140613   , p_component_code               => l_component_code
140614   , p_component_type_code          => l_component_type_code
140615   , p_component_appl_id            => l_component_appl_id
140616   , p_amb_context_code             => l_amb_context_code
140617   , p_side                         => 'NA'
140618   );
140619 
140620 
140621    --
140622    --
140623    END IF;
140624    --
140625    -- Bug 4922099
140626    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
140627           (NVL(l_enc_upg_option, 'N') = 'O')
140628         ) AND
140629         (l_bflow_method_code = 'PRIOR_ENTRY')
140630       )
140631    THEN
140632       IF
140633       --
140634       1 = 2
140635       --
140636       THEN
140637       xla_accounting_err_pkg.build_message
140638                                     (p_appli_s_name            => 'XLA'
140639                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
140640                                     ,p_token_1                 => 'LINE_NUMBER'
140641                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
140642                                     ,p_token_2                 => 'LINE_TYPE_NAME'
140643                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
140644                                                                              l_component_type
140645                                                                             ,l_component_code
140646                                                                             ,l_component_type_code
140647                                                                             ,l_component_appl_id
140648                                                                             ,l_amb_context_code
140649                                                                             ,l_entity_code
140650                                                                             ,l_event_class_code
140651                                                                            )
140652                                     ,p_token_3                 => 'OWNER'
140653                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
140654                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
140655                                                                           ,p_lookup_code    => l_component_type_code
140656                                                                          )
140657                                     ,p_token_4                 => 'PRODUCT_NAME'
140658                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
140659                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
140660                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
140661                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
140662                                     ,p_ae_header_id            =>  NULL
140663                                        );
140664 
140665         IF (C_LEVEL_ERROR>= g_log_level) THEN
140666                  trace
140667                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
140668                       ,p_level    => C_LEVEL_ERROR
140669                       ,p_module   => l_log_module);
140670         END IF;
140671       END IF;
140672    END IF;
140673    --
140674    --
140675    ------------------------------------------------------------------------------------------------
140676    -- 4219869 Business Flow
140677    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
140678    -- Prior Entry.  Currently, the following code is always generated.
140679    ------------------------------------------------------------------------------------------------
140680    XLA_AE_LINES_PKG.ValidateCurrentLine;
140681 
140682    ------------------------------------------------------------------------------------
140683    -- 4219869 Business Flow
140684    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
140685    ------------------------------------------------------------------------------------
140686    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
140687 
140688    ----------------------------------------------------------------------------------
140689    -- 4219869 Business Flow
140690    -- Update journal entry status -- Need to generate this within IF <condition>
140691    ----------------------------------------------------------------------------------
140692    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
140693          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
140694          ,p_balance_type_code => l_balance_type_code
140695          );
140696 
140697    -------------------------------------------------------------------------------------------
140698    -- 4262811 - Generate the Accrual Reversal lines
140699    -------------------------------------------------------------------------------------------
140700    BEGIN
140701       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
140702                               (g_array_event(p_event_id).array_value_num('header_index'));
140703       IF l_acc_rev_flag IS NULL THEN
140704          l_acc_rev_flag := 'N';
140705       END IF;
140706    EXCEPTION
140707       WHEN OTHERS THEN
140708          l_acc_rev_flag := 'N';
140709    END;
140710    --
140711    IF (l_acc_rev_flag = 'Y') THEN
140712 
140713        -- 4645092  ------------------------------------------------------------------------------
140714        -- To allow MPA report to determine if it should generate report process
140715        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
140716        ------------------------------------------------------------------------------------------
140717 
140718        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
140719        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
140720    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
140721    -- call ADRs
140722    -- Bug 4922099
140723    --
140724    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
140725         (NVL(l_actual_upg_option, 'N') = 'O') OR
140726         (NVL(l_enc_upg_option, 'N') = 'O')
140727       )
140728    THEN
140729    NULL;
140730    --
140731    --
140732    
140733   l_ccid := AcctDerRule_4(
140734            p_application_id           => p_application_id
140735          , p_ae_header_id             => l_ae_header_id 
140736 , p_source_4 => p_source_4
140737          , x_transaction_coa_id       => l_adr_transaction_coa_id
140738          , x_accounting_coa_id        => l_adr_accounting_coa_id
140739          , x_value_type_code          => l_adr_value_type_code
140740          , p_side                     => 'NA'
140741    );
140742 
140743    xla_ae_lines_pkg.set_ccid(
140744     p_code_combination_id          => l_ccid
140745   , p_value_type_code              => l_adr_value_type_code
140746   , p_transaction_coa_id           => l_adr_transaction_coa_id
140747   , p_accounting_coa_id            => l_adr_accounting_coa_id
140748   , p_adr_code                     => 'CST_DEFAULT'
140749   , p_adr_type_code                => 'S'
140750   , p_component_type               => l_component_type
140751   , p_component_code               => l_component_code
140752   , p_component_type_code          => l_component_type_code
140753   , p_component_appl_id            => l_component_appl_id
140754   , p_amb_context_code             => l_amb_context_code
140755   , p_side                         => 'NA'
140756   );
140757 
140758 
140759    --
140760    --
140761    END IF;
140762 
140763        --
140764        -- Update the line information that should be overwritten
140765        --
140766        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
140767                                          p_header_num   => 1);
140768        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
140769 
140770        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
140771 
140772        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
140773           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
140774        END IF;
140775 
140776       --
140777       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
140778       --
140779       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
140780           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
140781       ELSE
140782           ---------------------------------------------------------------------------------------------------
140783           -- 4262811a Switch Sign
140784           ---------------------------------------------------------------------------------------------------
140785           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
140786           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
140787                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
140788           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
140789                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
140790           -- 5132302
140791           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
140792                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
140793 
140794       END IF;
140795 
140796       -- 4955764
140797       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
140798       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
140799 
140800 
140801       XLA_AE_LINES_PKG.ValidateCurrentLine;
140802       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
140803 
140804       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
140805                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
140806                ,p_balance_type_code => l_balance_type_code);
140807 
140808    END IF;
140809 
140810    -----------------------------------------------------------------------------------------
140811    -- 4262811 Multiperiod Accounting
140812    -----------------------------------------------------------------------------------------
140813      -- No MPA option is assigned.
140814 
140815 
140816 END IF;
140817 END IF;
140818 --
140819 
140820 --
140821 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
140822    trace
140823       (p_msg      => 'END of AcctLineType_254'
140824       ,p_level    => C_LEVEL_PROCEDURE
140825       ,p_module   => l_log_module);
140826 END IF;
140827 --
140828 EXCEPTION
140829   WHEN xla_exceptions_pkg.application_exception THEN
140830       RAISE;
140831   WHEN OTHERS THEN
140832        xla_exceptions_pkg.raise_message
140833            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_254');
140834 END AcctLineType_254;
140835 --
140836 
140837 ---------------------------------------
140838 --
140839 -- PRIVATE FUNCTION
140840 --         AcctLineType_255
140841 --
140842 ---------------------------------------
140843 PROCEDURE AcctLineType_255 (
140844   p_application_id        IN NUMBER
140845  ,p_event_id              IN NUMBER
140846  ,p_calculate_acctd_flag  IN VARCHAR2
140847  ,p_calculate_g_l_flag    IN VARCHAR2
140848  ,p_actual_flag           IN OUT VARCHAR2
140849  ,p_balance_type_code     OUT VARCHAR2
140850  ,p_gain_or_loss_ref      OUT VARCHAR2
140851  
140852 --Cost Management Default Account
140853  , p_source_4            IN NUMBER
140854 --DISTRIBUTION_IDENTIFIER
140855  , p_source_11            IN NUMBER
140856 --Distribution Type
140857  , p_source_12            IN VARCHAR2
140858  , p_source_12_meaning    IN VARCHAR2
140859 --Entered Currency Code
140860  , p_source_15            IN VARCHAR2
140861 --Entered Amount
140862  , p_source_18            IN NUMBER
140863 --Currency Conversion Date
140864  , p_source_19            IN DATE
140865 --Currency Conversion Rate
140866  , p_source_20            IN NUMBER
140867 --Currency Conversion Type
140868  , p_source_21            IN VARCHAR2
140869 --Accounted Amount
140870  , p_source_22            IN NUMBER
140871 --Accounting Line Type
140872  , p_source_24            IN NUMBER
140873 )
140874 IS
140875 
140876 l_component_type              VARCHAR2(80);
140877 l_component_code              VARCHAR2(30);
140878 l_component_type_code         VARCHAR2(1);
140879 l_component_appl_id           INTEGER;
140880 l_amb_context_code            VARCHAR2(30);
140881 l_entity_code                 VARCHAR2(30);
140882 l_event_class_code            VARCHAR2(30);
140883 l_ae_header_id                NUMBER;
140884 l_event_type_code             VARCHAR2(30);
140885 l_line_definition_code        VARCHAR2(30);
140886 l_line_definition_owner_code  VARCHAR2(1);
140887 --
140888 -- adr variables
140889 l_segment                     VARCHAR2(30);
140890 l_ccid                        NUMBER;
140891 l_adr_transaction_coa_id      NUMBER;
140892 l_adr_accounting_coa_id       NUMBER;
140893 l_adr_flexfield_segment_code  VARCHAR2(30);
140894 l_adr_flex_value_set_id       NUMBER;
140895 l_adr_value_type_code         VARCHAR2(30);
140896 l_adr_value_combination_id    NUMBER;
140897 l_adr_value_segment_code      VARCHAR2(30);
140898 
140899 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
140900 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
140901 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
140902 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
140903 
140904 -- 4262811 Variables ------------------------------------------------------------------------------------------
140905 l_entered_amt_idx             NUMBER;
140906 l_accted_amt_idx              NUMBER;
140907 l_acc_rev_flag                VARCHAR2(1);
140908 l_accrual_line_num            NUMBER;
140909 l_tmp_amt                     NUMBER;
140910 l_acc_rev_natural_side_code   VARCHAR2(1);
140911 
140912 l_num_entries                 NUMBER;
140913 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
140914 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
140915 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
140916 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
140917 l_recog_line_1                NUMBER;
140918 l_recog_line_2                NUMBER;
140919 
140920 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
140921 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
140922 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
140923 
140924 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
140925 
140926 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
140927 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
140928 
140929 ---------------------------------------------------------------------------------------------------------------
140930 
140931 
140932 --
140933 -- bulk performance
140934 --
140935 l_balance_type_code           VARCHAR2(1);
140936 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
140937 l_log_module                  VARCHAR2(240);
140938 
140939 --
140940 -- Upgrade strategy
140941 --
140942 l_actual_upg_option           VARCHAR2(1);
140943 l_enc_upg_option           VARCHAR2(1);
140944 
140945 --
140946 BEGIN
140947 --
140948 IF g_log_enabled THEN
140949       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_255';
140950 END IF;
140951 --
140952 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
140953 
140954       trace
140955          (p_msg      => 'BEGIN of AcctLineType_255'
140956          ,p_level    => C_LEVEL_PROCEDURE
140957          ,p_module   => l_log_module);
140958 
140959 END IF;
140960 --
140961 l_component_type             := 'AMB_JLT';
140962 l_component_code             := 'WIP_VALUATION';
140963 l_component_type_code        := 'S';
140964 l_component_appl_id          :=  707;
140965 l_amb_context_code           := 'DEFAULT';
140966 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
140967 l_event_class_code           := 'WIP_LOT';
140968 l_event_type_code            := 'WIP_LOT_ALL';
140969 l_line_definition_owner_code := 'S';
140970 l_line_definition_code       := 'WIP_LOT';
140971 --
140972 l_balance_type_code          := 'A';
140973 l_segment                     := NULL;
140974 l_ccid                        := NULL;
140975 l_adr_transaction_coa_id      := NULL;
140976 l_adr_accounting_coa_id       := NULL;
140977 l_adr_flexfield_segment_code  := NULL;
140978 l_adr_flex_value_set_id       := NULL;
140979 l_adr_value_type_code         := NULL;
140980 l_adr_value_combination_id    := NULL;
140981 l_adr_value_segment_code      := NULL;
140982 
140983 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
140984 l_bflow_class_code           := '';    -- 4219869 Business Flow
140985 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
140986 l_budgetary_control_flag     := 'N';
140987 
140988 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
140989 l_bflow_applied_to_amt       := NULL; -- 5132302
140990 l_entered_amt_idx            := NULL;          -- 4262811
140991 l_accted_amt_idx             := NULL;          -- 4262811
140992 l_acc_rev_flag               := NULL;          -- 4262811
140993 l_accrual_line_num           := NULL;          -- 4262811
140994 l_tmp_amt                    := NULL;          -- 4262811
140995 --
140996  
140997 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
140998     l_balance_type_code <> 'B' THEN
140999 IF NVL(p_source_24,9E125) =  21 OR 
141000 NVL(p_source_24,9E125) =  22 OR 
141001 NVL(p_source_24,9E125) =  23 OR 
141002 NVL(p_source_24,9E125) =  24 OR 
141003 NVL(p_source_24,9E125) =  26 OR 
141004 NVL(p_source_24,9E125) =  28
141005  THEN 
141006 
141007    --
141008    XLA_AE_LINES_PKG.SetNewLine;
141009 
141010    p_balance_type_code          := l_balance_type_code;
141011    -- set the flag so later we will know whether the gain loss line needs to be created
141012    
141013    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
141014      p_actual_flag :='A';
141015    END IF;
141016 
141017    --
141018    -- bulk performance
141019    --
141020    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
141021                                       p_header_num   => 0); -- 4262811
141022    --
141023    -- set accounting line options
141024    --
141025    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
141026            p_natural_side_code          => 'D'
141027          , p_gain_or_loss_flag          => 'N'
141028          , p_gl_transfer_mode_code      => 'S'
141029          , p_acct_entry_type_code       => 'A'
141030          , p_switch_side_flag           => 'Y'
141031          , p_merge_duplicate_code       => 'N'
141032          );
141033    --
141034    l_acc_rev_natural_side_code := 'C';  -- 4262811
141035    -- 
141036    --
141037    -- set accounting line type info
141038    --
141039    xla_ae_lines_pkg.SetAcctLineType
141040       (p_component_type             => l_component_type
141041       ,p_event_type_code            => l_event_type_code
141042       ,p_line_definition_owner_code => l_line_definition_owner_code
141043       ,p_line_definition_code       => l_line_definition_code
141044       ,p_accounting_line_code       => l_component_code
141045       ,p_accounting_line_type_code  => l_component_type_code
141046       ,p_accounting_line_appl_id    => l_component_appl_id
141047       ,p_amb_context_code           => l_amb_context_code
141048       ,p_entity_code                => l_entity_code
141049       ,p_event_class_code           => l_event_class_code);
141050    --
141051    -- set accounting class
141052    --
141053    xla_ae_lines_pkg.SetAcctClass(
141054            p_accounting_class_code  => 'WIP_VALUATION'
141055          , p_ae_header_id           => l_ae_header_id
141056          );
141057 
141058    --
141059    -- set rounding class
141060    --
141061    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
141062                       'WIP_VALUATION';
141063 
141064    --
141065    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
141066    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
141067    --
141068    -- bulk performance
141069    --
141070    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
141071 
141072    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
141073       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
141074 
141075    -- 4955764
141076    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
141077       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
141078 
141079    -- 4458381 Public Sector Enh
141080    
141081    --
141082    -- set accounting attributes for the line type
141083    --
141084    l_entered_amt_idx := 3;
141085    l_accted_amt_idx  := 8;
141086    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
141087    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
141088    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
141089    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
141090    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
141091    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
141092    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
141093    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
141094    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
141095    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
141096    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
141097    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
141098    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
141099    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
141100    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
141101    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
141102    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
141103 
141104    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
141105    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
141106 
141107    ---------------------------------------------------------------------------------------------------------------
141108    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
141109    ---------------------------------------------------------------------------------------------------------------
141110    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
141111 
141112    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
141113    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
141114 
141115    IF xla_accounting_cache_pkg.GetValueChar
141116          (p_source_code         => 'LEDGER_CATEGORY_CODE'
141117          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
141118    AND l_bflow_method_code = 'PRIOR_ENTRY'
141119 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
141120    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
141121          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
141122        )
141123    THEN
141124          xla_ae_lines_pkg.BflowUpgEntry
141125            (p_business_method_code    => l_bflow_method_code
141126            ,p_business_class_code     => l_bflow_class_code
141127            ,p_balance_type            => l_balance_type_code);
141128    ELSE
141129       NULL;
141130 -- No business flow processing for business flow method of NONE.
141131    END IF;
141132 
141133    --
141134    -- call analytical criteria
141135    --
141136    
141137    --
141138    -- call description
141139    --
141140    -- No description or it is inherited.
141141    --
141142    -- call ADRs
141143    -- Bug 4922099
141144    --
141145    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
141146         (NVL(l_actual_upg_option, 'N') = 'O') OR
141147         (NVL(l_enc_upg_option, 'N') = 'O')
141148       )
141149    THEN
141150    NULL;
141151    --
141152    --
141153    
141154   l_ccid := AcctDerRule_4(
141155            p_application_id           => p_application_id
141156          , p_ae_header_id             => l_ae_header_id 
141157 , p_source_4 => p_source_4
141158          , x_transaction_coa_id       => l_adr_transaction_coa_id
141159          , x_accounting_coa_id        => l_adr_accounting_coa_id
141160          , x_value_type_code          => l_adr_value_type_code
141161          , p_side                     => 'NA'
141162    );
141163 
141164    xla_ae_lines_pkg.set_ccid(
141165     p_code_combination_id          => l_ccid
141166   , p_value_type_code              => l_adr_value_type_code
141167   , p_transaction_coa_id           => l_adr_transaction_coa_id
141168   , p_accounting_coa_id            => l_adr_accounting_coa_id
141169   , p_adr_code                     => 'CST_DEFAULT'
141170   , p_adr_type_code                => 'S'
141171   , p_component_type               => l_component_type
141172   , p_component_code               => l_component_code
141173   , p_component_type_code          => l_component_type_code
141174   , p_component_appl_id            => l_component_appl_id
141175   , p_amb_context_code             => l_amb_context_code
141176   , p_side                         => 'NA'
141177   );
141178 
141179 
141180    --
141181    --
141182    END IF;
141183    --
141184    -- Bug 4922099
141185    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
141186           (NVL(l_enc_upg_option, 'N') = 'O')
141187         ) AND
141188         (l_bflow_method_code = 'PRIOR_ENTRY')
141189       )
141190    THEN
141191       IF
141192       --
141193       1 = 2
141194       --
141195       THEN
141196       xla_accounting_err_pkg.build_message
141197                                     (p_appli_s_name            => 'XLA'
141198                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
141199                                     ,p_token_1                 => 'LINE_NUMBER'
141200                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
141201                                     ,p_token_2                 => 'LINE_TYPE_NAME'
141202                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
141203                                                                              l_component_type
141204                                                                             ,l_component_code
141205                                                                             ,l_component_type_code
141206                                                                             ,l_component_appl_id
141207                                                                             ,l_amb_context_code
141208                                                                             ,l_entity_code
141209                                                                             ,l_event_class_code
141210                                                                            )
141211                                     ,p_token_3                 => 'OWNER'
141212                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
141213                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
141214                                                                           ,p_lookup_code    => l_component_type_code
141215                                                                          )
141216                                     ,p_token_4                 => 'PRODUCT_NAME'
141217                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
141218                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
141219                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
141220                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
141221                                     ,p_ae_header_id            =>  NULL
141222                                        );
141223 
141224         IF (C_LEVEL_ERROR>= g_log_level) THEN
141225                  trace
141226                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
141227                       ,p_level    => C_LEVEL_ERROR
141228                       ,p_module   => l_log_module);
141229         END IF;
141230       END IF;
141231    END IF;
141232    --
141233    --
141234    ------------------------------------------------------------------------------------------------
141235    -- 4219869 Business Flow
141236    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
141237    -- Prior Entry.  Currently, the following code is always generated.
141238    ------------------------------------------------------------------------------------------------
141239    XLA_AE_LINES_PKG.ValidateCurrentLine;
141240 
141241    ------------------------------------------------------------------------------------
141242    -- 4219869 Business Flow
141243    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
141244    ------------------------------------------------------------------------------------
141245    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
141246 
141247    ----------------------------------------------------------------------------------
141248    -- 4219869 Business Flow
141249    -- Update journal entry status -- Need to generate this within IF <condition>
141250    ----------------------------------------------------------------------------------
141251    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
141252          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
141253          ,p_balance_type_code => l_balance_type_code
141254          );
141255 
141256    -------------------------------------------------------------------------------------------
141257    -- 4262811 - Generate the Accrual Reversal lines
141258    -------------------------------------------------------------------------------------------
141259    BEGIN
141260       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
141261                               (g_array_event(p_event_id).array_value_num('header_index'));
141262       IF l_acc_rev_flag IS NULL THEN
141263          l_acc_rev_flag := 'N';
141264       END IF;
141265    EXCEPTION
141266       WHEN OTHERS THEN
141267          l_acc_rev_flag := 'N';
141268    END;
141269    --
141270    IF (l_acc_rev_flag = 'Y') THEN
141271 
141272        -- 4645092  ------------------------------------------------------------------------------
141273        -- To allow MPA report to determine if it should generate report process
141274        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
141275        ------------------------------------------------------------------------------------------
141276 
141277        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
141278        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
141279    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
141280    -- call ADRs
141281    -- Bug 4922099
141282    --
141283    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
141284         (NVL(l_actual_upg_option, 'N') = 'O') OR
141285         (NVL(l_enc_upg_option, 'N') = 'O')
141286       )
141287    THEN
141288    NULL;
141289    --
141290    --
141291    
141292   l_ccid := AcctDerRule_4(
141293            p_application_id           => p_application_id
141294          , p_ae_header_id             => l_ae_header_id 
141295 , p_source_4 => p_source_4
141296          , x_transaction_coa_id       => l_adr_transaction_coa_id
141297          , x_accounting_coa_id        => l_adr_accounting_coa_id
141298          , x_value_type_code          => l_adr_value_type_code
141299          , p_side                     => 'NA'
141300    );
141301 
141302    xla_ae_lines_pkg.set_ccid(
141303     p_code_combination_id          => l_ccid
141304   , p_value_type_code              => l_adr_value_type_code
141305   , p_transaction_coa_id           => l_adr_transaction_coa_id
141306   , p_accounting_coa_id            => l_adr_accounting_coa_id
141307   , p_adr_code                     => 'CST_DEFAULT'
141308   , p_adr_type_code                => 'S'
141309   , p_component_type               => l_component_type
141310   , p_component_code               => l_component_code
141311   , p_component_type_code          => l_component_type_code
141312   , p_component_appl_id            => l_component_appl_id
141313   , p_amb_context_code             => l_amb_context_code
141314   , p_side                         => 'NA'
141315   );
141316 
141317 
141318    --
141319    --
141320    END IF;
141321 
141322        --
141323        -- Update the line information that should be overwritten
141324        --
141325        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
141326                                          p_header_num   => 1);
141327        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
141328 
141329        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
141330 
141331        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
141332           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
141333        END IF;
141334 
141335       --
141336       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
141337       --
141338       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
141339           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
141340       ELSE
141341           ---------------------------------------------------------------------------------------------------
141342           -- 4262811a Switch Sign
141343           ---------------------------------------------------------------------------------------------------
141344           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
141345           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
141346                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
141347           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
141348                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
141349           -- 5132302
141350           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
141351                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
141352 
141353       END IF;
141354 
141355       -- 4955764
141356       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
141357       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
141358 
141359 
141360       XLA_AE_LINES_PKG.ValidateCurrentLine;
141361       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
141362 
141363       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
141364                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
141365                ,p_balance_type_code => l_balance_type_code);
141366 
141367    END IF;
141368 
141369    -----------------------------------------------------------------------------------------
141370    -- 4262811 Multiperiod Accounting
141371    -----------------------------------------------------------------------------------------
141372      -- No MPA option is assigned.
141373 
141374 
141375 END IF;
141376 END IF;
141377 --
141378 
141379 --
141380 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
141381    trace
141382       (p_msg      => 'END of AcctLineType_255'
141383       ,p_level    => C_LEVEL_PROCEDURE
141384       ,p_module   => l_log_module);
141385 END IF;
141386 --
141387 EXCEPTION
141388   WHEN xla_exceptions_pkg.application_exception THEN
141389       RAISE;
141390   WHEN OTHERS THEN
141391        xla_exceptions_pkg.raise_message
141392            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_255');
141393 END AcctLineType_255;
141394 --
141395 
141396 ---------------------------------------
141397 --
141398 -- PRIVATE FUNCTION
141399 --         AcctLineType_256
141400 --
141401 ---------------------------------------
141402 PROCEDURE AcctLineType_256 (
141403   p_application_id        IN NUMBER
141404  ,p_event_id              IN NUMBER
141405  ,p_calculate_acctd_flag  IN VARCHAR2
141406  ,p_calculate_g_l_flag    IN VARCHAR2
141407  ,p_actual_flag           IN OUT VARCHAR2
141408  ,p_balance_type_code     OUT VARCHAR2
141409  ,p_gain_or_loss_ref      OUT VARCHAR2
141410  
141411 --Cost Management Default Account
141412  , p_source_4            IN NUMBER
141413 --DISTRIBUTION_IDENTIFIER
141414  , p_source_11            IN NUMBER
141415 --Distribution Type
141416  , p_source_12            IN VARCHAR2
141417  , p_source_12_meaning    IN VARCHAR2
141418 --Entered Currency Code
141419  , p_source_15            IN VARCHAR2
141420 --Entered Amount
141421  , p_source_18            IN NUMBER
141422 --Currency Conversion Date
141423  , p_source_19            IN DATE
141424 --Currency Conversion Rate
141425  , p_source_20            IN NUMBER
141426 --Currency Conversion Type
141427  , p_source_21            IN VARCHAR2
141428 --Accounted Amount
141429  , p_source_22            IN NUMBER
141430 --Accounting Line Type
141431  , p_source_24            IN NUMBER
141432 )
141433 IS
141434 
141435 l_component_type              VARCHAR2(80);
141436 l_component_code              VARCHAR2(30);
141437 l_component_type_code         VARCHAR2(1);
141438 l_component_appl_id           INTEGER;
141439 l_amb_context_code            VARCHAR2(30);
141440 l_entity_code                 VARCHAR2(30);
141441 l_event_class_code            VARCHAR2(30);
141442 l_ae_header_id                NUMBER;
141443 l_event_type_code             VARCHAR2(30);
141444 l_line_definition_code        VARCHAR2(30);
141445 l_line_definition_owner_code  VARCHAR2(1);
141446 --
141447 -- adr variables
141448 l_segment                     VARCHAR2(30);
141449 l_ccid                        NUMBER;
141450 l_adr_transaction_coa_id      NUMBER;
141451 l_adr_accounting_coa_id       NUMBER;
141452 l_adr_flexfield_segment_code  VARCHAR2(30);
141453 l_adr_flex_value_set_id       NUMBER;
141454 l_adr_value_type_code         VARCHAR2(30);
141455 l_adr_value_combination_id    NUMBER;
141456 l_adr_value_segment_code      VARCHAR2(30);
141457 
141458 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
141459 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
141460 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
141461 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
141462 
141463 -- 4262811 Variables ------------------------------------------------------------------------------------------
141464 l_entered_amt_idx             NUMBER;
141465 l_accted_amt_idx              NUMBER;
141466 l_acc_rev_flag                VARCHAR2(1);
141467 l_accrual_line_num            NUMBER;
141468 l_tmp_amt                     NUMBER;
141469 l_acc_rev_natural_side_code   VARCHAR2(1);
141470 
141471 l_num_entries                 NUMBER;
141472 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
141473 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
141474 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
141475 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
141476 l_recog_line_1                NUMBER;
141477 l_recog_line_2                NUMBER;
141478 
141479 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
141480 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
141481 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
141482 
141483 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
141484 
141485 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
141486 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
141487 
141488 ---------------------------------------------------------------------------------------------------------------
141489 
141490 
141491 --
141492 -- bulk performance
141493 --
141494 l_balance_type_code           VARCHAR2(1);
141495 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
141496 l_log_module                  VARCHAR2(240);
141497 
141498 --
141499 -- Upgrade strategy
141500 --
141501 l_actual_upg_option           VARCHAR2(1);
141502 l_enc_upg_option           VARCHAR2(1);
141503 
141504 --
141505 BEGIN
141506 --
141507 IF g_log_enabled THEN
141508       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_256';
141509 END IF;
141510 --
141511 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
141512 
141513       trace
141514          (p_msg      => 'BEGIN of AcctLineType_256'
141515          ,p_level    => C_LEVEL_PROCEDURE
141516          ,p_module   => l_log_module);
141517 
141518 END IF;
141519 --
141520 l_component_type             := 'AMB_JLT';
141521 l_component_code             := 'WIP_VARIANCE';
141522 l_component_type_code        := 'S';
141523 l_component_appl_id          :=  707;
141524 l_amb_context_code           := 'DEFAULT';
141525 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
141526 l_event_class_code           := 'VARIANCE';
141527 l_event_type_code            := 'VARIANCE_ALL';
141528 l_line_definition_owner_code := 'S';
141529 l_line_definition_code       := 'VARIANCE';
141530 --
141531 l_balance_type_code          := 'A';
141532 l_segment                     := NULL;
141533 l_ccid                        := NULL;
141534 l_adr_transaction_coa_id      := NULL;
141535 l_adr_accounting_coa_id       := NULL;
141536 l_adr_flexfield_segment_code  := NULL;
141537 l_adr_flex_value_set_id       := NULL;
141538 l_adr_value_type_code         := NULL;
141539 l_adr_value_combination_id    := NULL;
141540 l_adr_value_segment_code      := NULL;
141541 
141542 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
141543 l_bflow_class_code           := '';    -- 4219869 Business Flow
141544 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
141545 l_budgetary_control_flag     := 'N';
141546 
141547 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
141548 l_bflow_applied_to_amt       := NULL; -- 5132302
141549 l_entered_amt_idx            := NULL;          -- 4262811
141550 l_accted_amt_idx             := NULL;          -- 4262811
141551 l_acc_rev_flag               := NULL;          -- 4262811
141552 l_accrual_line_num           := NULL;          -- 4262811
141553 l_tmp_amt                    := NULL;          -- 4262811
141554 --
141555  
141556 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
141557     l_balance_type_code <> 'B' THEN
141558 IF NVL(p_source_24,9E125) =  8
141559  THEN 
141560 
141561    --
141562    XLA_AE_LINES_PKG.SetNewLine;
141563 
141564    p_balance_type_code          := l_balance_type_code;
141565    -- set the flag so later we will know whether the gain loss line needs to be created
141566    
141567    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
141568      p_actual_flag :='A';
141569    END IF;
141570 
141571    --
141572    -- bulk performance
141573    --
141574    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
141575                                       p_header_num   => 0); -- 4262811
141576    --
141577    -- set accounting line options
141578    --
141579    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
141580            p_natural_side_code          => 'D'
141581          , p_gain_or_loss_flag          => 'N'
141582          , p_gl_transfer_mode_code      => 'S'
141583          , p_acct_entry_type_code       => 'A'
141584          , p_switch_side_flag           => 'Y'
141585          , p_merge_duplicate_code       => 'N'
141586          );
141587    --
141588    l_acc_rev_natural_side_code := 'C';  -- 4262811
141589    -- 
141590    --
141591    -- set accounting line type info
141592    --
141593    xla_ae_lines_pkg.SetAcctLineType
141594       (p_component_type             => l_component_type
141595       ,p_event_type_code            => l_event_type_code
141596       ,p_line_definition_owner_code => l_line_definition_owner_code
141597       ,p_line_definition_code       => l_line_definition_code
141598       ,p_accounting_line_code       => l_component_code
141599       ,p_accounting_line_type_code  => l_component_type_code
141600       ,p_accounting_line_appl_id    => l_component_appl_id
141601       ,p_amb_context_code           => l_amb_context_code
141602       ,p_entity_code                => l_entity_code
141603       ,p_event_class_code           => l_event_class_code);
141604    --
141605    -- set accounting class
141606    --
141607    xla_ae_lines_pkg.SetAcctClass(
141608            p_accounting_class_code  => 'WIP_VARIANCE'
141609          , p_ae_header_id           => l_ae_header_id
141610          );
141611 
141612    --
141613    -- set rounding class
141614    --
141615    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
141616                       'WIP_VARIANCE';
141617 
141618    --
141619    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
141620    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
141621    --
141622    -- bulk performance
141623    --
141624    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
141625 
141626    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
141627       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
141628 
141629    -- 4955764
141630    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
141631       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
141632 
141633    -- 4458381 Public Sector Enh
141634    
141635    --
141636    -- set accounting attributes for the line type
141637    --
141638    l_entered_amt_idx := 3;
141639    l_accted_amt_idx  := 8;
141640    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
141641    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
141642    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
141643    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
141644    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
141645    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
141646    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
141647    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
141648    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
141649    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
141650    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
141651    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
141652    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
141653    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
141654    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
141655    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
141656    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
141657 
141658    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
141659    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
141660 
141661    ---------------------------------------------------------------------------------------------------------------
141662    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
141663    ---------------------------------------------------------------------------------------------------------------
141664    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
141665 
141666    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
141667    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
141668 
141669    IF xla_accounting_cache_pkg.GetValueChar
141670          (p_source_code         => 'LEDGER_CATEGORY_CODE'
141671          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
141672    AND l_bflow_method_code = 'PRIOR_ENTRY'
141673 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
141674    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
141675          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
141676        )
141677    THEN
141678          xla_ae_lines_pkg.BflowUpgEntry
141679            (p_business_method_code    => l_bflow_method_code
141680            ,p_business_class_code     => l_bflow_class_code
141681            ,p_balance_type            => l_balance_type_code);
141682    ELSE
141683       NULL;
141684 -- No business flow processing for business flow method of NONE.
141685    END IF;
141686 
141687    --
141688    -- call analytical criteria
141689    --
141690    
141691    --
141692    -- call description
141693    --
141694    -- No description or it is inherited.
141695    --
141696    -- call ADRs
141697    -- Bug 4922099
141698    --
141699    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
141700         (NVL(l_actual_upg_option, 'N') = 'O') OR
141701         (NVL(l_enc_upg_option, 'N') = 'O')
141702       )
141703    THEN
141704    NULL;
141705    --
141706    --
141707    
141708   l_ccid := AcctDerRule_4(
141709            p_application_id           => p_application_id
141710          , p_ae_header_id             => l_ae_header_id 
141711 , p_source_4 => p_source_4
141712          , x_transaction_coa_id       => l_adr_transaction_coa_id
141713          , x_accounting_coa_id        => l_adr_accounting_coa_id
141714          , x_value_type_code          => l_adr_value_type_code
141715          , p_side                     => 'NA'
141716    );
141717 
141718    xla_ae_lines_pkg.set_ccid(
141719     p_code_combination_id          => l_ccid
141720   , p_value_type_code              => l_adr_value_type_code
141721   , p_transaction_coa_id           => l_adr_transaction_coa_id
141722   , p_accounting_coa_id            => l_adr_accounting_coa_id
141723   , p_adr_code                     => 'CST_DEFAULT'
141724   , p_adr_type_code                => 'S'
141725   , p_component_type               => l_component_type
141726   , p_component_code               => l_component_code
141727   , p_component_type_code          => l_component_type_code
141728   , p_component_appl_id            => l_component_appl_id
141729   , p_amb_context_code             => l_amb_context_code
141730   , p_side                         => 'NA'
141731   );
141732 
141733 
141734    --
141735    --
141736    END IF;
141737    --
141738    -- Bug 4922099
141739    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
141740           (NVL(l_enc_upg_option, 'N') = 'O')
141741         ) AND
141742         (l_bflow_method_code = 'PRIOR_ENTRY')
141743       )
141744    THEN
141745       IF
141746       --
141747       1 = 2
141748       --
141749       THEN
141750       xla_accounting_err_pkg.build_message
141751                                     (p_appli_s_name            => 'XLA'
141752                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
141753                                     ,p_token_1                 => 'LINE_NUMBER'
141754                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
141755                                     ,p_token_2                 => 'LINE_TYPE_NAME'
141756                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
141757                                                                              l_component_type
141758                                                                             ,l_component_code
141759                                                                             ,l_component_type_code
141760                                                                             ,l_component_appl_id
141761                                                                             ,l_amb_context_code
141762                                                                             ,l_entity_code
141763                                                                             ,l_event_class_code
141764                                                                            )
141765                                     ,p_token_3                 => 'OWNER'
141766                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
141767                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
141768                                                                           ,p_lookup_code    => l_component_type_code
141769                                                                          )
141770                                     ,p_token_4                 => 'PRODUCT_NAME'
141771                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
141772                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
141773                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
141774                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
141775                                     ,p_ae_header_id            =>  NULL
141776                                        );
141777 
141778         IF (C_LEVEL_ERROR>= g_log_level) THEN
141779                  trace
141780                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
141781                       ,p_level    => C_LEVEL_ERROR
141782                       ,p_module   => l_log_module);
141783         END IF;
141784       END IF;
141785    END IF;
141786    --
141787    --
141788    ------------------------------------------------------------------------------------------------
141789    -- 4219869 Business Flow
141790    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
141791    -- Prior Entry.  Currently, the following code is always generated.
141792    ------------------------------------------------------------------------------------------------
141793    XLA_AE_LINES_PKG.ValidateCurrentLine;
141794 
141795    ------------------------------------------------------------------------------------
141796    -- 4219869 Business Flow
141797    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
141798    ------------------------------------------------------------------------------------
141799    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
141800 
141801    ----------------------------------------------------------------------------------
141802    -- 4219869 Business Flow
141803    -- Update journal entry status -- Need to generate this within IF <condition>
141804    ----------------------------------------------------------------------------------
141805    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
141806          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
141807          ,p_balance_type_code => l_balance_type_code
141808          );
141809 
141810    -------------------------------------------------------------------------------------------
141811    -- 4262811 - Generate the Accrual Reversal lines
141812    -------------------------------------------------------------------------------------------
141813    BEGIN
141814       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
141815                               (g_array_event(p_event_id).array_value_num('header_index'));
141816       IF l_acc_rev_flag IS NULL THEN
141817          l_acc_rev_flag := 'N';
141818       END IF;
141819    EXCEPTION
141820       WHEN OTHERS THEN
141821          l_acc_rev_flag := 'N';
141822    END;
141823    --
141824    IF (l_acc_rev_flag = 'Y') THEN
141825 
141826        -- 4645092  ------------------------------------------------------------------------------
141827        -- To allow MPA report to determine if it should generate report process
141828        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
141829        ------------------------------------------------------------------------------------------
141830 
141831        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
141832        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
141833    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
141834    -- call ADRs
141835    -- Bug 4922099
141836    --
141837    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
141838         (NVL(l_actual_upg_option, 'N') = 'O') OR
141839         (NVL(l_enc_upg_option, 'N') = 'O')
141840       )
141841    THEN
141842    NULL;
141843    --
141844    --
141845    
141846   l_ccid := AcctDerRule_4(
141847            p_application_id           => p_application_id
141848          , p_ae_header_id             => l_ae_header_id 
141849 , p_source_4 => p_source_4
141850          , x_transaction_coa_id       => l_adr_transaction_coa_id
141851          , x_accounting_coa_id        => l_adr_accounting_coa_id
141852          , x_value_type_code          => l_adr_value_type_code
141853          , p_side                     => 'NA'
141854    );
141855 
141856    xla_ae_lines_pkg.set_ccid(
141857     p_code_combination_id          => l_ccid
141858   , p_value_type_code              => l_adr_value_type_code
141859   , p_transaction_coa_id           => l_adr_transaction_coa_id
141860   , p_accounting_coa_id            => l_adr_accounting_coa_id
141861   , p_adr_code                     => 'CST_DEFAULT'
141862   , p_adr_type_code                => 'S'
141863   , p_component_type               => l_component_type
141864   , p_component_code               => l_component_code
141865   , p_component_type_code          => l_component_type_code
141866   , p_component_appl_id            => l_component_appl_id
141867   , p_amb_context_code             => l_amb_context_code
141868   , p_side                         => 'NA'
141869   );
141870 
141871 
141872    --
141873    --
141874    END IF;
141875 
141876        --
141877        -- Update the line information that should be overwritten
141878        --
141879        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
141880                                          p_header_num   => 1);
141881        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
141882 
141883        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
141884 
141885        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
141886           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
141887        END IF;
141888 
141889       --
141890       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
141891       --
141892       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
141893           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
141894       ELSE
141895           ---------------------------------------------------------------------------------------------------
141896           -- 4262811a Switch Sign
141897           ---------------------------------------------------------------------------------------------------
141898           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
141899           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
141900                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
141901           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
141902                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
141903           -- 5132302
141904           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
141905                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
141906 
141907       END IF;
141908 
141909       -- 4955764
141910       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
141911       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
141912 
141913 
141914       XLA_AE_LINES_PKG.ValidateCurrentLine;
141915       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
141916 
141917       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
141918                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
141919                ,p_balance_type_code => l_balance_type_code);
141920 
141921    END IF;
141922 
141923    -----------------------------------------------------------------------------------------
141924    -- 4262811 Multiperiod Accounting
141925    -----------------------------------------------------------------------------------------
141926      -- No MPA option is assigned.
141927 
141928 
141929 END IF;
141930 END IF;
141931 --
141932 
141933 --
141934 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
141935    trace
141936       (p_msg      => 'END of AcctLineType_256'
141937       ,p_level    => C_LEVEL_PROCEDURE
141938       ,p_module   => l_log_module);
141939 END IF;
141940 --
141941 EXCEPTION
141942   WHEN xla_exceptions_pkg.application_exception THEN
141943       RAISE;
141944   WHEN OTHERS THEN
141945        xla_exceptions_pkg.raise_message
141946            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_256');
141947 END AcctLineType_256;
141948 --
141949 
141950 ---------------------------------------
141951 --
141952 -- PRIVATE FUNCTION
141953 --         AcctLineType_257
141954 --
141955 ---------------------------------------
141956 PROCEDURE AcctLineType_257 (
141957   p_application_id        IN NUMBER
141958  ,p_event_id              IN NUMBER
141959  ,p_calculate_acctd_flag  IN VARCHAR2
141960  ,p_calculate_g_l_flag    IN VARCHAR2
141961  ,p_actual_flag           IN OUT VARCHAR2
141962  ,p_balance_type_code     OUT VARCHAR2
141963  ,p_gain_or_loss_ref      OUT VARCHAR2
141964  
141965 --Write-Off Variance Account
141966  , p_source_2            IN NUMBER
141967 --Distribution Type
141968  , p_source_12            IN VARCHAR2
141969  , p_source_12_meaning    IN VARCHAR2
141970 --Entered Currency Code
141971  , p_source_15            IN VARCHAR2
141972 --Entered Amount
141973  , p_source_18            IN NUMBER
141974 --Currency Conversion Date
141975  , p_source_19            IN DATE
141976 --Currency Conversion Rate
141977  , p_source_20            IN NUMBER
141978 --Currency Conversion Type
141979  , p_source_21            IN VARCHAR2
141980 --Accounted Amount
141981  , p_source_22            IN NUMBER
141982 --Line Number
141983  , p_source_25            IN NUMBER
141984 --WRITE_OFF_ID
141985  , p_source_26            IN NUMBER
141986 )
141987 IS
141988 
141989 l_component_type              VARCHAR2(80);
141990 l_component_code              VARCHAR2(30);
141991 l_component_type_code         VARCHAR2(1);
141992 l_component_appl_id           INTEGER;
141993 l_amb_context_code            VARCHAR2(30);
141994 l_entity_code                 VARCHAR2(30);
141995 l_event_class_code            VARCHAR2(30);
141996 l_ae_header_id                NUMBER;
141997 l_event_type_code             VARCHAR2(30);
141998 l_line_definition_code        VARCHAR2(30);
141999 l_line_definition_owner_code  VARCHAR2(1);
142000 --
142001 -- adr variables
142002 l_segment                     VARCHAR2(30);
142003 l_ccid                        NUMBER;
142004 l_adr_transaction_coa_id      NUMBER;
142005 l_adr_accounting_coa_id       NUMBER;
142006 l_adr_flexfield_segment_code  VARCHAR2(30);
142007 l_adr_flex_value_set_id       NUMBER;
142008 l_adr_value_type_code         VARCHAR2(30);
142009 l_adr_value_combination_id    NUMBER;
142010 l_adr_value_segment_code      VARCHAR2(30);
142011 
142012 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
142013 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
142014 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
142015 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
142016 
142017 -- 4262811 Variables ------------------------------------------------------------------------------------------
142018 l_entered_amt_idx             NUMBER;
142019 l_accted_amt_idx              NUMBER;
142020 l_acc_rev_flag                VARCHAR2(1);
142021 l_accrual_line_num            NUMBER;
142022 l_tmp_amt                     NUMBER;
142023 l_acc_rev_natural_side_code   VARCHAR2(1);
142024 
142025 l_num_entries                 NUMBER;
142026 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
142027 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
142028 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
142029 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
142030 l_recog_line_1                NUMBER;
142031 l_recog_line_2                NUMBER;
142032 
142033 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
142034 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
142035 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
142036 
142037 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
142038 
142039 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
142040 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
142041 
142042 ---------------------------------------------------------------------------------------------------------------
142043 
142044 
142045 --
142046 -- bulk performance
142047 --
142048 l_balance_type_code           VARCHAR2(1);
142049 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
142050 l_log_module                  VARCHAR2(240);
142051 
142052 --
142053 -- Upgrade strategy
142054 --
142055 l_actual_upg_option           VARCHAR2(1);
142056 l_enc_upg_option           VARCHAR2(1);
142057 
142058 --
142059 BEGIN
142060 --
142061 IF g_log_enabled THEN
142062       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_257';
142063 END IF;
142064 --
142065 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
142066 
142067       trace
142068          (p_msg      => 'BEGIN of AcctLineType_257'
142069          ,p_level    => C_LEVEL_PROCEDURE
142070          ,p_module   => l_log_module);
142071 
142072 END IF;
142073 --
142074 l_component_type             := 'AMB_JLT';
142075 l_component_code             := 'WO_VARIANCE';
142076 l_component_type_code        := 'S';
142077 l_component_appl_id          :=  707;
142078 l_amb_context_code           := 'DEFAULT';
142079 l_entity_code                := 'WO_ACCOUNTING_EVENTS';
142080 l_event_class_code           := 'ACCRUAL_WRITE_OFF';
142081 l_event_type_code            := 'ACCRUAL_WRITE_OFF_ALL';
142082 l_line_definition_owner_code := 'S';
142083 l_line_definition_code       := 'ACCRUAL_WRITE_OFF';
142084 --
142085 l_balance_type_code          := 'A';
142086 l_segment                     := NULL;
142087 l_ccid                        := NULL;
142088 l_adr_transaction_coa_id      := NULL;
142089 l_adr_accounting_coa_id       := NULL;
142090 l_adr_flexfield_segment_code  := NULL;
142091 l_adr_flex_value_set_id       := NULL;
142092 l_adr_value_type_code         := NULL;
142093 l_adr_value_combination_id    := NULL;
142094 l_adr_value_segment_code      := NULL;
142095 
142096 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
142097 l_bflow_class_code           := '';    -- 4219869 Business Flow
142098 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
142099 l_budgetary_control_flag     := 'N';
142100 
142101 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
142102 l_bflow_applied_to_amt       := NULL; -- 5132302
142103 l_entered_amt_idx            := NULL;          -- 4262811
142104 l_accted_amt_idx             := NULL;          -- 4262811
142105 l_acc_rev_flag               := NULL;          -- 4262811
142106 l_accrual_line_num           := NULL;          -- 4262811
142107 l_tmp_amt                    := NULL;          -- 4262811
142108 --
142109  
142110 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
142111     l_balance_type_code <> 'B' THEN
142112 IF NVL(p_source_25,9E125) =  2
142113  THEN 
142114 
142115    --
142116    XLA_AE_LINES_PKG.SetNewLine;
142117 
142118    p_balance_type_code          := l_balance_type_code;
142119    -- set the flag so later we will know whether the gain loss line needs to be created
142120    
142121    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
142122      p_actual_flag :='A';
142123    END IF;
142124 
142125    --
142126    -- bulk performance
142127    --
142128    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
142129                                       p_header_num   => 0); -- 4262811
142130    --
142131    -- set accounting line options
142132    --
142133    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
142134            p_natural_side_code          => 'D'
142135          , p_gain_or_loss_flag          => 'N'
142136          , p_gl_transfer_mode_code      => 'S'
142137          , p_acct_entry_type_code       => 'A'
142138          , p_switch_side_flag           => 'Y'
142139          , p_merge_duplicate_code       => 'N'
142140          );
142141    --
142142    l_acc_rev_natural_side_code := 'C';  -- 4262811
142143    -- 
142144    --
142145    -- set accounting line type info
142146    --
142147    xla_ae_lines_pkg.SetAcctLineType
142148       (p_component_type             => l_component_type
142149       ,p_event_type_code            => l_event_type_code
142150       ,p_line_definition_owner_code => l_line_definition_owner_code
142151       ,p_line_definition_code       => l_line_definition_code
142152       ,p_accounting_line_code       => l_component_code
142153       ,p_accounting_line_type_code  => l_component_type_code
142154       ,p_accounting_line_appl_id    => l_component_appl_id
142155       ,p_amb_context_code           => l_amb_context_code
142156       ,p_entity_code                => l_entity_code
142157       ,p_event_class_code           => l_event_class_code);
142158    --
142159    -- set accounting class
142160    --
142161    xla_ae_lines_pkg.SetAcctClass(
142162            p_accounting_class_code  => 'WRITE_OFF_VARIANCE'
142163          , p_ae_header_id           => l_ae_header_id
142164          );
142165 
142166    --
142167    -- set rounding class
142168    --
142169    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
142170                       'WRITE_OFF_VARIANCE';
142171 
142172    --
142173    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
142174    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
142175    --
142176    -- bulk performance
142177    --
142178    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
142179 
142180    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
142181       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
142182 
142183    -- 4955764
142184    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
142185       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
142186 
142187    -- 4458381 Public Sector Enh
142188    
142189    --
142190    -- set accounting attributes for the line type
142191    --
142192    l_entered_amt_idx := 3;
142193    l_accted_amt_idx  := 8;
142194    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
142195    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
142196    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_26);
142197    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
142198    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
142199    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
142200    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
142201    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
142202    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
142203    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
142204    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
142205    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
142206    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
142207    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
142208    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
142209    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
142210    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
142211 
142212    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
142213    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
142214 
142215    ---------------------------------------------------------------------------------------------------------------
142216    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
142217    ---------------------------------------------------------------------------------------------------------------
142218    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
142219 
142220    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
142221    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
142222 
142223    IF xla_accounting_cache_pkg.GetValueChar
142224          (p_source_code         => 'LEDGER_CATEGORY_CODE'
142225          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
142226    AND l_bflow_method_code = 'PRIOR_ENTRY'
142227 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
142228    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
142229          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
142230        )
142231    THEN
142232          xla_ae_lines_pkg.BflowUpgEntry
142233            (p_business_method_code    => l_bflow_method_code
142234            ,p_business_class_code     => l_bflow_class_code
142235            ,p_balance_type            => l_balance_type_code);
142236    ELSE
142237       NULL;
142238 -- No business flow processing for business flow method of NONE.
142239    END IF;
142240 
142241    --
142242    -- call analytical criteria
142243    --
142244    
142245    --
142246    -- call description
142247    --
142248    -- No description or it is inherited.
142249    --
142250    -- call ADRs
142251    -- Bug 4922099
142252    --
142253    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
142254         (NVL(l_actual_upg_option, 'N') = 'O') OR
142255         (NVL(l_enc_upg_option, 'N') = 'O')
142256       )
142257    THEN
142258    NULL;
142259    --
142260    --
142261    
142262   l_ccid := AcctDerRule_2(
142263            p_application_id           => p_application_id
142264          , p_ae_header_id             => l_ae_header_id 
142265 , p_source_2 => p_source_2
142266          , x_transaction_coa_id       => l_adr_transaction_coa_id
142267          , x_accounting_coa_id        => l_adr_accounting_coa_id
142268          , x_value_type_code          => l_adr_value_type_code
142269          , p_side                     => 'NA'
142270    );
142271 
142272    xla_ae_lines_pkg.set_ccid(
142273     p_code_combination_id          => l_ccid
142274   , p_value_type_code              => l_adr_value_type_code
142275   , p_transaction_coa_id           => l_adr_transaction_coa_id
142276   , p_accounting_coa_id            => l_adr_accounting_coa_id
142277   , p_adr_code                     => 'CST_AWO_ERV'
142278   , p_adr_type_code                => 'S'
142279   , p_component_type               => l_component_type
142280   , p_component_code               => l_component_code
142281   , p_component_type_code          => l_component_type_code
142282   , p_component_appl_id            => l_component_appl_id
142283   , p_amb_context_code             => l_amb_context_code
142284   , p_side                         => 'NA'
142285   );
142286 
142287 
142288    --
142289    --
142290    END IF;
142291    --
142292    -- Bug 4922099
142293    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
142294           (NVL(l_enc_upg_option, 'N') = 'O')
142295         ) AND
142296         (l_bflow_method_code = 'PRIOR_ENTRY')
142297       )
142298    THEN
142299       IF
142300       --
142301       1 = 2
142302       --
142303       THEN
142304       xla_accounting_err_pkg.build_message
142305                                     (p_appli_s_name            => 'XLA'
142306                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
142307                                     ,p_token_1                 => 'LINE_NUMBER'
142308                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
142309                                     ,p_token_2                 => 'LINE_TYPE_NAME'
142310                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
142311                                                                              l_component_type
142312                                                                             ,l_component_code
142313                                                                             ,l_component_type_code
142314                                                                             ,l_component_appl_id
142315                                                                             ,l_amb_context_code
142316                                                                             ,l_entity_code
142317                                                                             ,l_event_class_code
142318                                                                            )
142319                                     ,p_token_3                 => 'OWNER'
142320                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
142321                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
142322                                                                           ,p_lookup_code    => l_component_type_code
142323                                                                          )
142324                                     ,p_token_4                 => 'PRODUCT_NAME'
142325                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
142326                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
142327                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
142328                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
142329                                     ,p_ae_header_id            =>  NULL
142330                                        );
142331 
142332         IF (C_LEVEL_ERROR>= g_log_level) THEN
142333                  trace
142334                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
142335                       ,p_level    => C_LEVEL_ERROR
142336                       ,p_module   => l_log_module);
142337         END IF;
142338       END IF;
142339    END IF;
142340    --
142341    --
142342    ------------------------------------------------------------------------------------------------
142343    -- 4219869 Business Flow
142344    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
142345    -- Prior Entry.  Currently, the following code is always generated.
142346    ------------------------------------------------------------------------------------------------
142347    XLA_AE_LINES_PKG.ValidateCurrentLine;
142348 
142349    ------------------------------------------------------------------------------------
142350    -- 4219869 Business Flow
142351    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
142352    ------------------------------------------------------------------------------------
142353    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
142354 
142355    ----------------------------------------------------------------------------------
142356    -- 4219869 Business Flow
142357    -- Update journal entry status -- Need to generate this within IF <condition>
142358    ----------------------------------------------------------------------------------
142359    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
142360          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
142361          ,p_balance_type_code => l_balance_type_code
142362          );
142363 
142364    -------------------------------------------------------------------------------------------
142365    -- 4262811 - Generate the Accrual Reversal lines
142366    -------------------------------------------------------------------------------------------
142367    BEGIN
142368       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
142369                               (g_array_event(p_event_id).array_value_num('header_index'));
142370       IF l_acc_rev_flag IS NULL THEN
142371          l_acc_rev_flag := 'N';
142372       END IF;
142373    EXCEPTION
142374       WHEN OTHERS THEN
142375          l_acc_rev_flag := 'N';
142376    END;
142377    --
142378    IF (l_acc_rev_flag = 'Y') THEN
142379 
142380        -- 4645092  ------------------------------------------------------------------------------
142381        -- To allow MPA report to determine if it should generate report process
142382        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
142383        ------------------------------------------------------------------------------------------
142384 
142385        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
142386        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
142387    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
142388    -- call ADRs
142389    -- Bug 4922099
142390    --
142391    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
142392         (NVL(l_actual_upg_option, 'N') = 'O') OR
142393         (NVL(l_enc_upg_option, 'N') = 'O')
142394       )
142395    THEN
142396    NULL;
142397    --
142398    --
142399    
142400   l_ccid := AcctDerRule_2(
142401            p_application_id           => p_application_id
142402          , p_ae_header_id             => l_ae_header_id 
142403 , p_source_2 => p_source_2
142404          , x_transaction_coa_id       => l_adr_transaction_coa_id
142405          , x_accounting_coa_id        => l_adr_accounting_coa_id
142406          , x_value_type_code          => l_adr_value_type_code
142407          , p_side                     => 'NA'
142408    );
142409 
142410    xla_ae_lines_pkg.set_ccid(
142411     p_code_combination_id          => l_ccid
142412   , p_value_type_code              => l_adr_value_type_code
142413   , p_transaction_coa_id           => l_adr_transaction_coa_id
142414   , p_accounting_coa_id            => l_adr_accounting_coa_id
142415   , p_adr_code                     => 'CST_AWO_ERV'
142416   , p_adr_type_code                => 'S'
142417   , p_component_type               => l_component_type
142418   , p_component_code               => l_component_code
142419   , p_component_type_code          => l_component_type_code
142420   , p_component_appl_id            => l_component_appl_id
142421   , p_amb_context_code             => l_amb_context_code
142422   , p_side                         => 'NA'
142423   );
142424 
142425 
142426    --
142427    --
142428    END IF;
142429 
142430        --
142431        -- Update the line information that should be overwritten
142432        --
142433        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
142434                                          p_header_num   => 1);
142435        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
142436 
142437        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
142438 
142439        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
142440           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
142441        END IF;
142442 
142443       --
142444       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
142445       --
142446       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
142447           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
142448       ELSE
142449           ---------------------------------------------------------------------------------------------------
142450           -- 4262811a Switch Sign
142451           ---------------------------------------------------------------------------------------------------
142452           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
142453           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
142454                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
142455           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
142456                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
142457           -- 5132302
142458           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
142459                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
142460 
142461       END IF;
142462 
142463       -- 4955764
142464       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
142465       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
142466 
142467 
142468       XLA_AE_LINES_PKG.ValidateCurrentLine;
142469       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
142470 
142471       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
142472                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
142473                ,p_balance_type_code => l_balance_type_code);
142474 
142475    END IF;
142476 
142477    -----------------------------------------------------------------------------------------
142478    -- 4262811 Multiperiod Accounting
142479    -----------------------------------------------------------------------------------------
142480      -- No MPA option is assigned.
142481 
142482 
142483 END IF;
142484 END IF;
142485 --
142486 
142487 --
142488 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
142489    trace
142490       (p_msg      => 'END of AcctLineType_257'
142491       ,p_level    => C_LEVEL_PROCEDURE
142492       ,p_module   => l_log_module);
142493 END IF;
142494 --
142495 EXCEPTION
142496   WHEN xla_exceptions_pkg.application_exception THEN
142497       RAISE;
142498   WHEN OTHERS THEN
142499        xla_exceptions_pkg.raise_message
142500            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_257');
142501 END AcctLineType_257;
142502 --
142503 
142504 ---------------------------------------
142505 --
142506 -- PRIVATE FUNCTION
142507 --         AcctLineType_258
142508 --
142509 ---------------------------------------
142510 PROCEDURE AcctLineType_258 (
142511   p_application_id        IN NUMBER
142512  ,p_event_id              IN NUMBER
142513  ,p_calculate_acctd_flag  IN VARCHAR2
142514  ,p_calculate_g_l_flag    IN VARCHAR2
142515  ,p_actual_flag           IN OUT VARCHAR2
142516  ,p_balance_type_code     OUT VARCHAR2
142517  ,p_gain_or_loss_ref      OUT VARCHAR2
142518  
142519 --Accrual Account for the Write Off
142520  , p_source_1            IN NUMBER
142521 --Distribution Type
142522  , p_source_12            IN VARCHAR2
142523  , p_source_12_meaning    IN VARCHAR2
142524 --Entered Currency Code
142525  , p_source_15            IN VARCHAR2
142526 --Entered Amount
142527  , p_source_18            IN NUMBER
142528 --Currency Conversion Date
142529  , p_source_19            IN DATE
142530 --Currency Conversion Rate
142531  , p_source_20            IN NUMBER
142532 --Currency Conversion Type
142533  , p_source_21            IN VARCHAR2
142534 --Accounted Amount
142535  , p_source_22            IN NUMBER
142536 --Line Number
142537  , p_source_25            IN NUMBER
142538 --WRITE_OFF_ID
142539  , p_source_26            IN NUMBER
142540 )
142541 IS
142542 
142543 l_component_type              VARCHAR2(80);
142544 l_component_code              VARCHAR2(30);
142545 l_component_type_code         VARCHAR2(1);
142546 l_component_appl_id           INTEGER;
142547 l_amb_context_code            VARCHAR2(30);
142548 l_entity_code                 VARCHAR2(30);
142549 l_event_class_code            VARCHAR2(30);
142550 l_ae_header_id                NUMBER;
142551 l_event_type_code             VARCHAR2(30);
142552 l_line_definition_code        VARCHAR2(30);
142553 l_line_definition_owner_code  VARCHAR2(1);
142554 --
142555 -- adr variables
142556 l_segment                     VARCHAR2(30);
142557 l_ccid                        NUMBER;
142558 l_adr_transaction_coa_id      NUMBER;
142559 l_adr_accounting_coa_id       NUMBER;
142560 l_adr_flexfield_segment_code  VARCHAR2(30);
142561 l_adr_flex_value_set_id       NUMBER;
142562 l_adr_value_type_code         VARCHAR2(30);
142563 l_adr_value_combination_id    NUMBER;
142564 l_adr_value_segment_code      VARCHAR2(30);
142565 
142566 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
142567 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
142568 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
142569 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
142570 
142571 -- 4262811 Variables ------------------------------------------------------------------------------------------
142572 l_entered_amt_idx             NUMBER;
142573 l_accted_amt_idx              NUMBER;
142574 l_acc_rev_flag                VARCHAR2(1);
142575 l_accrual_line_num            NUMBER;
142576 l_tmp_amt                     NUMBER;
142577 l_acc_rev_natural_side_code   VARCHAR2(1);
142578 
142579 l_num_entries                 NUMBER;
142580 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
142581 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
142582 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
142583 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
142584 l_recog_line_1                NUMBER;
142585 l_recog_line_2                NUMBER;
142586 
142587 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
142588 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
142589 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
142590 
142591 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
142592 
142593 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
142594 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
142595 
142596 ---------------------------------------------------------------------------------------------------------------
142597 
142598 
142599 --
142600 -- bulk performance
142601 --
142602 l_balance_type_code           VARCHAR2(1);
142603 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
142604 l_log_module                  VARCHAR2(240);
142605 
142606 --
142607 -- Upgrade strategy
142608 --
142609 l_actual_upg_option           VARCHAR2(1);
142610 l_enc_upg_option           VARCHAR2(1);
142611 
142612 --
142613 BEGIN
142614 --
142615 IF g_log_enabled THEN
142616       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_258';
142617 END IF;
142618 --
142619 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
142620 
142621       trace
142622          (p_msg      => 'BEGIN of AcctLineType_258'
142623          ,p_level    => C_LEVEL_PROCEDURE
142624          ,p_module   => l_log_module);
142625 
142626 END IF;
142627 --
142628 l_component_type             := 'AMB_JLT';
142629 l_component_code             := 'WO_VAR_OFFSET_ACCRUAL';
142630 l_component_type_code        := 'S';
142631 l_component_appl_id          :=  707;
142632 l_amb_context_code           := 'DEFAULT';
142633 l_entity_code                := 'WO_ACCOUNTING_EVENTS';
142634 l_event_class_code           := 'ACCRUAL_WRITE_OFF';
142635 l_event_type_code            := 'ACCRUAL_WRITE_OFF_ALL';
142636 l_line_definition_owner_code := 'S';
142637 l_line_definition_code       := 'ACCRUAL_WRITE_OFF';
142638 --
142639 l_balance_type_code          := 'A';
142640 l_segment                     := NULL;
142641 l_ccid                        := NULL;
142642 l_adr_transaction_coa_id      := NULL;
142643 l_adr_accounting_coa_id       := NULL;
142644 l_adr_flexfield_segment_code  := NULL;
142645 l_adr_flex_value_set_id       := NULL;
142646 l_adr_value_type_code         := NULL;
142647 l_adr_value_combination_id    := NULL;
142648 l_adr_value_segment_code      := NULL;
142649 
142650 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
142651 l_bflow_class_code           := '';    -- 4219869 Business Flow
142652 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
142653 l_budgetary_control_flag     := 'N';
142654 
142655 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
142656 l_bflow_applied_to_amt       := NULL; -- 5132302
142657 l_entered_amt_idx            := NULL;          -- 4262811
142658 l_accted_amt_idx             := NULL;          -- 4262811
142659 l_acc_rev_flag               := NULL;          -- 4262811
142660 l_accrual_line_num           := NULL;          -- 4262811
142661 l_tmp_amt                    := NULL;          -- 4262811
142662 --
142663  
142664 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
142665     l_balance_type_code <> 'B' THEN
142666 IF NVL(p_source_25,9E125) =  2
142667  THEN 
142668 
142669    --
142670    XLA_AE_LINES_PKG.SetNewLine;
142671 
142672    p_balance_type_code          := l_balance_type_code;
142673    -- set the flag so later we will know whether the gain loss line needs to be created
142674    
142675    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
142676      p_actual_flag :='A';
142677    END IF;
142678 
142679    --
142680    -- bulk performance
142681    --
142682    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
142683                                       p_header_num   => 0); -- 4262811
142684    --
142685    -- set accounting line options
142686    --
142687    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
142688            p_natural_side_code          => 'C'
142689          , p_gain_or_loss_flag          => 'N'
142690          , p_gl_transfer_mode_code      => 'S'
142691          , p_acct_entry_type_code       => 'A'
142692          , p_switch_side_flag           => 'Y'
142693          , p_merge_duplicate_code       => 'N'
142694          );
142695    --
142696    l_acc_rev_natural_side_code := 'D';  -- 4262811
142697    -- 
142698    --
142699    -- set accounting line type info
142700    --
142701    xla_ae_lines_pkg.SetAcctLineType
142702       (p_component_type             => l_component_type
142703       ,p_event_type_code            => l_event_type_code
142704       ,p_line_definition_owner_code => l_line_definition_owner_code
142705       ,p_line_definition_code       => l_line_definition_code
142706       ,p_accounting_line_code       => l_component_code
142707       ,p_accounting_line_type_code  => l_component_type_code
142708       ,p_accounting_line_appl_id    => l_component_appl_id
142709       ,p_amb_context_code           => l_amb_context_code
142710       ,p_entity_code                => l_entity_code
142711       ,p_event_class_code           => l_event_class_code);
142712    --
142713    -- set accounting class
142714    --
142715    xla_ae_lines_pkg.SetAcctClass(
142716            p_accounting_class_code  => 'ACCRUAL'
142717          , p_ae_header_id           => l_ae_header_id
142718          );
142719 
142720    --
142721    -- set rounding class
142722    --
142723    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
142724                       'ACCRUAL';
142725 
142726    --
142727    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
142728    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
142729    --
142730    -- bulk performance
142731    --
142732    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
142733 
142734    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
142735       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
142736 
142737    -- 4955764
142738    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
142739       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
142740 
142741    -- 4458381 Public Sector Enh
142742    
142743    --
142744    -- set accounting attributes for the line type
142745    --
142746    l_entered_amt_idx := 3;
142747    l_accted_amt_idx  := 8;
142748    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
142749    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
142750    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_26);
142751    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
142752    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
142753    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
142754    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
142755    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
142756    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
142757    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
142758    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
142759    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
142760    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
142761    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
142762    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
142763    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
142764    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
142765 
142766    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
142767    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
142768 
142769    ---------------------------------------------------------------------------------------------------------------
142770    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
142771    ---------------------------------------------------------------------------------------------------------------
142772    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
142773 
142774    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
142775    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
142776 
142777    IF xla_accounting_cache_pkg.GetValueChar
142778          (p_source_code         => 'LEDGER_CATEGORY_CODE'
142779          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
142780    AND l_bflow_method_code = 'PRIOR_ENTRY'
142781 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
142782    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
142783          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
142784        )
142785    THEN
142786          xla_ae_lines_pkg.BflowUpgEntry
142787            (p_business_method_code    => l_bflow_method_code
142788            ,p_business_class_code     => l_bflow_class_code
142789            ,p_balance_type            => l_balance_type_code);
142790    ELSE
142791       NULL;
142792 -- No business flow processing for business flow method of NONE.
142793    END IF;
142794 
142795    --
142796    -- call analytical criteria
142797    --
142798    
142799    --
142800    -- call description
142801    --
142802    -- No description or it is inherited.
142803    --
142804    -- call ADRs
142805    -- Bug 4922099
142806    --
142807    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
142808         (NVL(l_actual_upg_option, 'N') = 'O') OR
142809         (NVL(l_enc_upg_option, 'N') = 'O')
142810       )
142811    THEN
142812    NULL;
142813    --
142814    --
142815    
142816   l_ccid := AcctDerRule_1(
142817            p_application_id           => p_application_id
142818          , p_ae_header_id             => l_ae_header_id 
142819 , p_source_1 => p_source_1
142820          , x_transaction_coa_id       => l_adr_transaction_coa_id
142821          , x_accounting_coa_id        => l_adr_accounting_coa_id
142822          , x_value_type_code          => l_adr_value_type_code
142823          , p_side                     => 'NA'
142824    );
142825 
142826    xla_ae_lines_pkg.set_ccid(
142827     p_code_combination_id          => l_ccid
142828   , p_value_type_code              => l_adr_value_type_code
142829   , p_transaction_coa_id           => l_adr_transaction_coa_id
142830   , p_accounting_coa_id            => l_adr_accounting_coa_id
142831   , p_adr_code                     => 'CST_AWO_ACCRUAL'
142832   , p_adr_type_code                => 'S'
142833   , p_component_type               => l_component_type
142834   , p_component_code               => l_component_code
142835   , p_component_type_code          => l_component_type_code
142836   , p_component_appl_id            => l_component_appl_id
142837   , p_amb_context_code             => l_amb_context_code
142838   , p_side                         => 'NA'
142839   );
142840 
142841 
142842    --
142843    --
142844    END IF;
142845    --
142846    -- Bug 4922099
142847    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
142848           (NVL(l_enc_upg_option, 'N') = 'O')
142849         ) AND
142850         (l_bflow_method_code = 'PRIOR_ENTRY')
142851       )
142852    THEN
142853       IF
142854       --
142855       1 = 2
142856       --
142857       THEN
142858       xla_accounting_err_pkg.build_message
142859                                     (p_appli_s_name            => 'XLA'
142860                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
142861                                     ,p_token_1                 => 'LINE_NUMBER'
142862                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
142863                                     ,p_token_2                 => 'LINE_TYPE_NAME'
142864                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
142865                                                                              l_component_type
142866                                                                             ,l_component_code
142867                                                                             ,l_component_type_code
142868                                                                             ,l_component_appl_id
142869                                                                             ,l_amb_context_code
142870                                                                             ,l_entity_code
142871                                                                             ,l_event_class_code
142872                                                                            )
142873                                     ,p_token_3                 => 'OWNER'
142874                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
142875                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
142876                                                                           ,p_lookup_code    => l_component_type_code
142877                                                                          )
142878                                     ,p_token_4                 => 'PRODUCT_NAME'
142879                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
142880                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
142881                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
142882                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
142883                                     ,p_ae_header_id            =>  NULL
142884                                        );
142885 
142886         IF (C_LEVEL_ERROR>= g_log_level) THEN
142887                  trace
142888                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
142889                       ,p_level    => C_LEVEL_ERROR
142890                       ,p_module   => l_log_module);
142891         END IF;
142892       END IF;
142893    END IF;
142894    --
142895    --
142896    ------------------------------------------------------------------------------------------------
142897    -- 4219869 Business Flow
142898    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
142899    -- Prior Entry.  Currently, the following code is always generated.
142900    ------------------------------------------------------------------------------------------------
142901    XLA_AE_LINES_PKG.ValidateCurrentLine;
142902 
142903    ------------------------------------------------------------------------------------
142904    -- 4219869 Business Flow
142905    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
142906    ------------------------------------------------------------------------------------
142907    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
142908 
142909    ----------------------------------------------------------------------------------
142910    -- 4219869 Business Flow
142911    -- Update journal entry status -- Need to generate this within IF <condition>
142912    ----------------------------------------------------------------------------------
142913    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
142914          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
142915          ,p_balance_type_code => l_balance_type_code
142916          );
142917 
142918    -------------------------------------------------------------------------------------------
142919    -- 4262811 - Generate the Accrual Reversal lines
142920    -------------------------------------------------------------------------------------------
142921    BEGIN
142922       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
142923                               (g_array_event(p_event_id).array_value_num('header_index'));
142924       IF l_acc_rev_flag IS NULL THEN
142925          l_acc_rev_flag := 'N';
142926       END IF;
142927    EXCEPTION
142928       WHEN OTHERS THEN
142929          l_acc_rev_flag := 'N';
142930    END;
142931    --
142932    IF (l_acc_rev_flag = 'Y') THEN
142933 
142934        -- 4645092  ------------------------------------------------------------------------------
142935        -- To allow MPA report to determine if it should generate report process
142936        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
142937        ------------------------------------------------------------------------------------------
142938 
142939        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
142940        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
142941    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
142942    -- call ADRs
142943    -- Bug 4922099
142944    --
142945    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
142946         (NVL(l_actual_upg_option, 'N') = 'O') OR
142947         (NVL(l_enc_upg_option, 'N') = 'O')
142948       )
142949    THEN
142950    NULL;
142951    --
142952    --
142953    
142954   l_ccid := AcctDerRule_1(
142955            p_application_id           => p_application_id
142956          , p_ae_header_id             => l_ae_header_id 
142957 , p_source_1 => p_source_1
142958          , x_transaction_coa_id       => l_adr_transaction_coa_id
142959          , x_accounting_coa_id        => l_adr_accounting_coa_id
142960          , x_value_type_code          => l_adr_value_type_code
142961          , p_side                     => 'NA'
142962    );
142963 
142964    xla_ae_lines_pkg.set_ccid(
142965     p_code_combination_id          => l_ccid
142966   , p_value_type_code              => l_adr_value_type_code
142967   , p_transaction_coa_id           => l_adr_transaction_coa_id
142968   , p_accounting_coa_id            => l_adr_accounting_coa_id
142969   , p_adr_code                     => 'CST_AWO_ACCRUAL'
142970   , p_adr_type_code                => 'S'
142971   , p_component_type               => l_component_type
142972   , p_component_code               => l_component_code
142973   , p_component_type_code          => l_component_type_code
142974   , p_component_appl_id            => l_component_appl_id
142975   , p_amb_context_code             => l_amb_context_code
142976   , p_side                         => 'NA'
142977   );
142978 
142979 
142980    --
142981    --
142982    END IF;
142983 
142984        --
142985        -- Update the line information that should be overwritten
142986        --
142987        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
142988                                          p_header_num   => 1);
142989        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
142990 
142991        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
142992 
142993        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
142994           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
142995        END IF;
142996 
142997       --
142998       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
142999       --
143000       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
143001           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
143002       ELSE
143003           ---------------------------------------------------------------------------------------------------
143004           -- 4262811a Switch Sign
143005           ---------------------------------------------------------------------------------------------------
143006           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
143007           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
143008                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
143009           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
143010                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
143011           -- 5132302
143012           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
143013                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
143014 
143015       END IF;
143016 
143017       -- 4955764
143018       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
143019       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
143020 
143021 
143022       XLA_AE_LINES_PKG.ValidateCurrentLine;
143023       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
143024 
143025       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
143026                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
143027                ,p_balance_type_code => l_balance_type_code);
143028 
143029    END IF;
143030 
143031    -----------------------------------------------------------------------------------------
143032    -- 4262811 Multiperiod Accounting
143033    -----------------------------------------------------------------------------------------
143034      -- No MPA option is assigned.
143035 
143036 
143037 END IF;
143038 END IF;
143039 --
143040 
143041 --
143042 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
143043    trace
143044       (p_msg      => 'END of AcctLineType_258'
143045       ,p_level    => C_LEVEL_PROCEDURE
143046       ,p_module   => l_log_module);
143047 END IF;
143048 --
143049 EXCEPTION
143050   WHEN xla_exceptions_pkg.application_exception THEN
143051       RAISE;
143052   WHEN OTHERS THEN
143053        xla_exceptions_pkg.raise_message
143054            (p_location => 'XLA_00707_AAD_S_000002_PKG.AcctLineType_258');
143055 END AcctLineType_258;
143056 --
143057 
143058 ---------------------------------------
143059 --
143060 -- PRIVATE PROCEDURE
143061 --         insert_sources_259
143062 --
143063 ----------------------------------------
143064 --
143065 PROCEDURE insert_sources_259(
143066                                 p_target_ledger_id       IN NUMBER
143067                               , p_language               IN VARCHAR2
143068                               , p_sla_ledger_id          IN NUMBER
143069                               , p_pad_start_date         IN DATE
143070                               , p_pad_end_date           IN DATE
143071                          )
143072 IS
143073 
143074 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'ABSORPTION_ALL';
143075 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'ABSORPTION';
143076 p_apps_owner                   VARCHAR2(30);
143077 l_log_module                   VARCHAR2(240);
143078 BEGIN
143079 IF g_log_enabled THEN
143080       l_log_module := C_DEFAULT_MODULE||'.insert_sources_259';
143081 END IF;
143082 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
143083 
143084       trace
143085          (p_msg      => 'BEGIN of insert_sources_259'
143086          ,p_level    => C_LEVEL_PROCEDURE
143087          ,p_module   => l_log_module);
143088 
143089 END IF;
143090 
143091 -- select APPS owner
143092 SELECT oracle_username
143093   INTO p_apps_owner
143094   FROM fnd_oracle_userid
143095  WHERE read_only_flag = 'U'
143096 ;
143097 
143098 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143099       trace
143100          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
143101                         ' - p_language = '||p_language||
143102                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
143103                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
143104                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
143105                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
143106          ,p_level    => C_LEVEL_STATEMENT
143107          ,p_module   => l_log_module);
143108 END IF;
143109 
143110 
143111 --
143112 INSERT INTO xla_diag_sources --hdr2
143113 (
143114         event_id
143115       , ledger_id
143116       , sla_ledger_id
143117       , description_language
143118       , object_name
143119       , object_type_code
143120       , line_number
143121       , source_application_id
143122       , source_type_code
143123       , source_code
143124       , source_value
143125       , source_meaning
143126       , created_by
143127       , creation_date
143128       , last_update_date
143129       , last_updated_by
143130       , last_update_login
143131       , program_update_date
143132       , program_application_id
143133       , program_id
143134       , request_id
143135 )
143136 SELECT
143137         event_id
143138       , p_target_ledger_id
143139       , p_sla_ledger_id
143140       , p_language
143141       , object_name
143142       , object_type_code
143143       , line_number
143144       , source_application_id
143145       , source_type_code
143146       , source_code
143147       , SUBSTR(source_value ,1,1996)
143148       , SUBSTR(source_meaning ,1,200)
143149       , xla_environment_pkg.g_Usr_Id
143150       , TRUNC(SYSDATE)
143151       , TRUNC(SYSDATE)
143152       , xla_environment_pkg.g_Usr_Id
143153       , xla_environment_pkg.g_Login_Id
143154       , TRUNC(SYSDATE)
143155       , xla_environment_pkg.g_Prog_Appl_Id
143156       , xla_environment_pkg.g_Prog_Id
143157       , xla_environment_pkg.g_Req_Id
143158   FROM (
143159        SELECT xet.event_id                  event_id
143160             , 0                          line_number
143161             , CASE r
143162                WHEN 1 THEN 'CST_XLA_WIP_HEADERS_V' 
143163                 WHEN 2 THEN 'CST_XLA_WIP_HEADERS_V' 
143164                 WHEN 3 THEN 'CST_XLA_WIP_HEADERS_V' 
143165                 WHEN 4 THEN 'CST_XLA_WIP_HEADERS_V' 
143166                 WHEN 5 THEN 'CST_XLA_WIP_HEADERS_V' 
143167                 WHEN 6 THEN 'CST_XLA_WIP_HEADERS_V' 
143168                 
143169                ELSE null
143170               END                           object_name
143171             , CASE r
143172                 WHEN 1 THEN 'HEADER' 
143173                 WHEN 2 THEN 'HEADER' 
143174                 WHEN 3 THEN 'HEADER' 
143175                 WHEN 4 THEN 'HEADER' 
143176                 WHEN 5 THEN 'HEADER' 
143177                 WHEN 6 THEN 'HEADER' 
143178                 
143179                 ELSE null
143180               END                           object_type_code
143181             , CASE r
143182                 WHEN 1 THEN '707' 
143183                 WHEN 2 THEN '707' 
143184                 WHEN 3 THEN '707' 
143185                 WHEN 4 THEN '707' 
143186                 WHEN 5 THEN '707' 
143187                 WHEN 6 THEN '707' 
143188                 
143189                 ELSE null
143190               END                           source_application_id
143191             , 'S'             source_type_code
143192             , CASE r
143193                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
143194                 WHEN 2 THEN 'CURRENCY_CODE' 
143195                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
143196                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
143197                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
143198                 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR' 
143199                 
143200                 ELSE null
143201               END                           source_code
143202             , CASE r
143203                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
143204                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
143205                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
143206                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
143207                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
143208                 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
143209                 
143210                 ELSE null
143211               END                           source_value
143212             , CASE r
143213                 WHEN 1 THEN fvl12.meaning
143214                 WHEN 6 THEN fvl38.meaning
143215                 
143216                 ELSE null
143217               END               source_meaning
143218          FROM xla_events_gt     xet  
143219       , CST_XLA_WIP_HEADERS_V  h1
143220   , fnd_lookup_values    fvl12
143221   , fnd_lookup_values    fvl38
143222              ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
143223          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
143224            AND xet.event_class_code = C_EVENT_CLASS_CODE
143225               AND h1.event_id = xet.event_id
143226    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
143227   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
143228   AND fvl12.view_application_id(+) = 700
143229   AND fvl12.language(+)            = USERENV('LANG')
143230      AND fvl38.lookup_type(+)         = 'YES_NO'
143231   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
143232   AND fvl38.view_application_id(+) = 0
143233   AND fvl38.language(+)            = USERENV('LANG')
143234   
143235 )
143236 ;
143237 --
143238 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143239 
143240       trace
143241          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
143242          ,p_level    => C_LEVEL_STATEMENT
143243          ,p_module   => l_log_module);
143244 
143245 END IF;
143246 --
143247 
143248 
143249 
143250 --
143251 INSERT INTO xla_diag_sources  --line2
143252 (
143253         event_id
143254       , ledger_id
143255       , sla_ledger_id
143256       , description_language
143257       , object_name
143258       , object_type_code
143259       , line_number
143260       , source_application_id
143261       , source_type_code
143262       , source_code
143263       , source_value
143264       , source_meaning
143265       , created_by
143266       , creation_date
143267       , last_update_date
143268       , last_updated_by
143269       , last_update_login
143270       , program_update_date
143271       , program_application_id
143272       , program_id
143273       , request_id
143274 )
143275 SELECT  event_id
143276       , p_target_ledger_id
143277       , p_sla_ledger_id
143278       , p_language
143279       , object_name
143280       , object_type_code
143281       , line_number
143282       , source_application_id
143283       , source_type_code
143284       , source_code
143285       , SUBSTR(source_value,1,1996)
143286       , SUBSTR(source_meaning ,1,200)
143287       , xla_environment_pkg.g_Usr_Id
143288       , TRUNC(SYSDATE)
143289       , TRUNC(SYSDATE)
143290       , xla_environment_pkg.g_Usr_Id
143291       , xla_environment_pkg.g_Login_Id
143292       , TRUNC(SYSDATE)
143293       , xla_environment_pkg.g_Prog_Appl_Id
143294       , xla_environment_pkg.g_Prog_Id
143295       , xla_environment_pkg.g_Req_Id
143296   FROM (
143297        SELECT xet.event_id                  event_id
143298             , l2.line_number                 line_number
143299             , CASE r
143300                WHEN 1 THEN 'CST_XLA_WIP_LINES_V' 
143301                 WHEN 2 THEN 'CST_XLA_WIP_LINES_V' 
143302                 WHEN 3 THEN 'CST_XLA_WIP_LINES_V' 
143303                 WHEN 4 THEN 'CST_XLA_WIP_LINES_V' 
143304                 WHEN 5 THEN 'CST_XLA_WIP_LINES_V' 
143305                 
143306                ELSE null
143307               END                           object_name
143308             , CASE r
143309                 WHEN 1 THEN 'LINE' 
143310                 WHEN 2 THEN 'LINE' 
143311                 WHEN 3 THEN 'LINE' 
143312                 WHEN 4 THEN 'LINE' 
143313                 WHEN 5 THEN 'LINE' 
143314                 
143315                 ELSE null
143316               END                           object_type_code
143317             , CASE r
143318                 WHEN 1 THEN '707' 
143319                 WHEN 2 THEN '707' 
143320                 WHEN 3 THEN '707' 
143321                 WHEN 4 THEN '707' 
143322                 WHEN 5 THEN '707' 
143323                 
143324                 ELSE null
143325               END                           source_application_id
143326             , 'S'             source_type_code
143327             , CASE r
143328                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
143329                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
143330                 WHEN 3 THEN 'ENTERED_AMOUNT' 
143331                 WHEN 4 THEN 'ACCOUNTED_AMOUNT' 
143332                 WHEN 5 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
143333                 
143334                 ELSE null
143335               END                           source_code
143336             , CASE r
143337                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
143338                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
143339                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
143340                 WHEN 4 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
143341                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
143342                 
143343                 ELSE null
143344               END                           source_value
143345             , null              source_meaning
143346          FROM  xla_events_gt     xet  
143347         , CST_XLA_WIP_LINES_V  l2
143348             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
143349         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
143350           AND xet.event_class_code = C_EVENT_CLASS_CODE
143351             AND l2.event_id          = xet.event_id
143352 
143353 )
143354 ;
143355 --
143356 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143357 
143358       trace
143359          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
143360          ,p_level    => C_LEVEL_STATEMENT
143361          ,p_module   => l_log_module);
143362 
143363 END IF;
143364 
143365 
143366 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
143367       trace
143368          (p_msg      => 'END of insert_sources_259'
143369          ,p_level    => C_LEVEL_PROCEDURE
143370          ,p_module   => l_log_module);
143371 END IF;
143372 EXCEPTION
143373   WHEN xla_exceptions_pkg.application_exception THEN
143374       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
143375             trace
143376                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
143377                ,p_level    => C_LEVEL_EXCEPTION
143378                ,p_module   => l_log_module);
143379       END IF;
143380       RAISE;
143381   WHEN OTHERS THEN
143382       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
143383             trace
143384                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
143385                ,p_level    => C_LEVEL_EXCEPTION
143386                ,p_module   => l_log_module);
143387        END IF;
143388        xla_exceptions_pkg.raise_message
143389            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_259');
143390 END insert_sources_259;
143391 --
143392 
143393 ---------------------------------------
143394 --
143395 -- PRIVATE FUNCTION
143396 --         EventClass_259
143397 --
143398 ----------------------------------------
143399 --
143400 FUNCTION EventClass_259
143401        (p_application_id         IN NUMBER
143402        ,p_base_ledger_id         IN NUMBER
143403        ,p_target_ledger_id       IN NUMBER
143404        ,p_language               IN VARCHAR2
143405        ,p_currency_code          IN VARCHAR2
143406        ,p_sla_ledger_id          IN NUMBER
143407        ,p_pad_start_date         IN DATE
143408        ,p_pad_end_date           IN DATE
143409        ,p_primary_ledger_id      IN NUMBER)
143410 RETURN BOOLEAN IS
143411 --
143412 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'ABSORPTION_ALL';
143413 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'ABSORPTION';
143414 
143415 l_calculate_acctd_flag   VARCHAR2(1) :='N';
143416 l_calculate_g_l_flag     VARCHAR2(1) :='N';
143417 --
143418 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143419 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143420 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
143421 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
143422 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143423 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
143424 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
143425 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143426 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143427 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143428 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143429 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143430 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143431 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143432 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
143433 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
143434 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
143435 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
143436 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143437 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143438 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143439 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143440 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
143441 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
143442 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
143443 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
143444 
143445 l_event_id                             NUMBER;
143446 l_previous_event_id                    NUMBER;
143447 l_first_event_id                       NUMBER;
143448 l_last_event_id                        NUMBER;
143449 
143450 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
143451 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
143452 --
143453 --
143454 l_result                    BOOLEAN := TRUE;
143455 l_rows                      NUMBER  := 1000;
143456 l_event_type_name           VARCHAR2(80) := 'All';
143457 l_event_class_name          VARCHAR2(80) := 'WIP Absorption';
143458 l_description               VARCHAR2(4000);
143459 l_transaction_reversal      NUMBER;
143460 l_ae_header_id              NUMBER;
143461 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
143462 l_log_module                VARCHAR2(240);
143463 --
143464 l_acct_reversal_source      VARCHAR2(30);
143465 l_trx_reversal_source       VARCHAR2(30);
143466 
143467 l_continue_with_lines       BOOLEAN := TRUE;
143468 --
143469 l_acc_rev_gl_date_source    DATE;                      -- 4262811
143470 --
143471 type t_array_event_id is table of number index by binary_integer;
143472 
143473 l_rec_array_event                    t_rec_array_event;
143474 l_null_rec_array_event               t_rec_array_event;
143475 l_array_ae_header_id                 xla_number_array_type;
143476 l_actual_flag                        VARCHAR2(1) := NULL;
143477 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
143478 l_balance_type_code                  VARCHAR2(1) :=NULL;
143479 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
143480 
143481 --
143482 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
143483 --
143484 
143485 TYPE t_array_source_12 IS TABLE OF CST_XLA_WIP_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
143486 TYPE t_array_source_15 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
143487 TYPE t_array_source_19 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
143488 TYPE t_array_source_20 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
143489 TYPE t_array_source_21 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
143490 TYPE t_array_source_38 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
143491 
143492 TYPE t_array_source_4 IS TABLE OF CST_XLA_WIP_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
143493 TYPE t_array_source_11 IS TABLE OF CST_XLA_WIP_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
143494 TYPE t_array_source_18 IS TABLE OF CST_XLA_WIP_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
143495 TYPE t_array_source_22 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
143496 TYPE t_array_source_24 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
143497 
143498 l_array_source_12              t_array_source_12;
143499 l_array_source_12_meaning      t_array_lookup_meaning;
143500 l_array_source_15              t_array_source_15;
143501 l_array_source_19              t_array_source_19;
143502 l_array_source_20              t_array_source_20;
143503 l_array_source_21              t_array_source_21;
143504 l_array_source_38              t_array_source_38;
143505 l_array_source_38_meaning      t_array_lookup_meaning;
143506 
143507 l_array_source_4      t_array_source_4;
143508 l_array_source_11      t_array_source_11;
143509 l_array_source_18      t_array_source_18;
143510 l_array_source_22      t_array_source_22;
143511 l_array_source_24      t_array_source_24;
143512 
143513 --
143514 CURSOR header_cur
143515 IS
143516 SELECT /*+ leading(xet) cardinality(xet,1) */
143517 -- Event Class Code: ABSORPTION
143518     xet.entity_id
143519    ,xet.legal_entity_id
143520    ,xet.entity_code
143521    ,xet.transaction_number
143522    ,xet.event_id
143523    ,xet.event_class_code
143524    ,xet.event_type_code
143525    ,xet.event_number
143526    ,xet.event_date
143527    ,xet.transaction_date
143528    ,xet.reference_num_1
143529    ,xet.reference_num_2
143530    ,xet.reference_num_3
143531    ,xet.reference_num_4
143532    ,xet.reference_char_1
143533    ,xet.reference_char_2
143534    ,xet.reference_char_3
143535    ,xet.reference_char_4
143536    ,xet.reference_date_1
143537    ,xet.reference_date_2
143538    ,xet.reference_date_3
143539    ,xet.reference_date_4
143540    ,xet.event_created_by
143541    ,xet.budgetary_control_flag 
143542   , h1.DISTRIBUTION_TYPE    source_12
143543   , fvl12.meaning   source_12_meaning
143544   , h1.CURRENCY_CODE    source_15
143545   , h1.CURRENCY_CONVERSION_DATE    source_19
143546   , h1.CURRENCY_CONVERSION_RATE    source_20
143547   , h1.CURRENCY_CONVERSION_TYPE    source_21
143548   , h1.TRANSFER_TO_GL_INDICATOR    source_38
143549   , fvl38.meaning   source_38_meaning
143550   FROM xla_events_gt     xet 
143551   , CST_XLA_WIP_HEADERS_V  h1
143552   , fnd_lookup_values    fvl12
143553   , fnd_lookup_values    fvl38
143554  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
143555    and xet.event_class_code = C_EVENT_CLASS_CODE
143556    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
143557    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
143558   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
143559   AND fvl12.view_application_id(+) = 700
143560   AND fvl12.language(+)            = USERENV('LANG')
143561      AND fvl38.lookup_type(+)         = 'YES_NO'
143562   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
143563   AND fvl38.view_application_id(+) = 0
143564   AND fvl38.language(+)            = USERENV('LANG')
143565   
143566  ORDER BY event_id
143567 ;
143568 
143569 
143570 --
143571 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
143572 IS
143573 SELECT  /*+ leading(xet) cardinality(xet,1) */
143574 -- Event Class Code: ABSORPTION
143575     xet.entity_id
143576    ,xet.legal_entity_id
143577    ,xet.entity_code
143578    ,xet.transaction_number
143579    ,xet.event_id
143580    ,xet.event_class_code
143581    ,xet.event_type_code
143582    ,xet.event_number
143583    ,xet.event_date
143584    ,xet.transaction_date
143585    ,xet.reference_num_1
143586    ,xet.reference_num_2
143587    ,xet.reference_num_3
143588    ,xet.reference_num_4
143589    ,xet.reference_char_1
143590    ,xet.reference_char_2
143591    ,xet.reference_char_3
143592    ,xet.reference_char_4
143593    ,xet.reference_date_1
143594    ,xet.reference_date_2
143595    ,xet.reference_date_3
143596    ,xet.reference_date_4
143597    ,xet.event_created_by
143598    ,xet.budgetary_control_flag
143599  , l2.LINE_NUMBER  
143600   , l2.CODE_COMBINATION_ID    source_4
143601   , l2.DISTRIBUTION_IDENTIFIER    source_11
143602   , l2.ENTERED_AMOUNT    source_18
143603   , l2.ACCOUNTED_AMOUNT    source_22
143604   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
143605   FROM xla_events_gt     xet 
143606   , CST_XLA_WIP_LINES_V  l2
143607  WHERE xet.event_id between x_first_event_id and x_last_event_id
143608    and xet.event_date between p_pad_start_date and p_pad_end_date
143609    and xet.event_class_code = C_EVENT_CLASS_CODE
143610    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
143611 ;
143612 
143613 --
143614 BEGIN
143615 IF g_log_enabled THEN
143616    l_log_module := C_DEFAULT_MODULE||'.EventClass_259';
143617 END IF;
143618 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
143619    trace
143620       (p_msg      => 'BEGIN of EventClass_259'
143621       ,p_level    => C_LEVEL_PROCEDURE
143622       ,p_module   => l_log_module);
143623 END IF;
143624 
143625 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143626    trace
143627       (p_msg      => 'p_application_id = '||p_application_id||
143628                      ' - p_base_ledger_id = '||p_base_ledger_id||
143629                      ' - p_target_ledger_id  = '||p_target_ledger_id||
143630                      ' - p_language = '||p_language||
143631                      ' - p_currency_code = '||p_currency_code||
143632                      ' - p_sla_ledger_id = '||p_sla_ledger_id
143633       ,p_level    => C_LEVEL_STATEMENT
143634       ,p_module   => l_log_module);
143635 END IF;
143636 --
143637 -- initialze arrays
143638 --
143639 g_array_event.DELETE;
143640 l_rec_array_event := l_null_rec_array_event;
143641 --
143642 --------------------------------------
143643 -- 4262811 Initialze MPA Line Number
143644 --------------------------------------
143645 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
143646 
143647 --
143648 
143649 --
143650 OPEN header_cur;
143651 --
143652 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143653    trace
143654    (p_msg      => 'SQL - FETCH header_cur'
143655    ,p_level    => C_LEVEL_STATEMENT
143656    ,p_module   => l_log_module);
143657 END IF;
143658 --
143659 LOOP
143660 FETCH header_cur BULK COLLECT INTO
143661         l_array_entity_id
143662       , l_array_legal_entity_id
143663       , l_array_entity_code
143664       , l_array_transaction_num
143665       , l_array_event_id
143666       , l_array_class_code
143667       , l_array_event_type
143668       , l_array_event_number
143669       , l_array_event_date
143670       , l_array_transaction_date
143671       , l_array_reference_num_1
143672       , l_array_reference_num_2
143673       , l_array_reference_num_3
143674       , l_array_reference_num_4
143675       , l_array_reference_char_1
143676       , l_array_reference_char_2
143677       , l_array_reference_char_3
143678       , l_array_reference_char_4
143679       , l_array_reference_date_1
143680       , l_array_reference_date_2
143681       , l_array_reference_date_3
143682       , l_array_reference_date_4
143683       , l_array_event_created_by
143684       , l_array_budgetary_control_flag 
143685       , l_array_source_12
143686       , l_array_source_12_meaning
143687       , l_array_source_15
143688       , l_array_source_19
143689       , l_array_source_20
143690       , l_array_source_21
143691       , l_array_source_38
143692       , l_array_source_38_meaning
143693       LIMIT l_rows;
143694 --
143695 IF (C_LEVEL_EVENT >= g_log_level) THEN
143696    trace
143697    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
143698    ,p_level    => C_LEVEL_EVENT
143699    ,p_module   => l_log_module);
143700 END IF;
143701 --
143702 EXIT WHEN l_array_entity_id.COUNT = 0;
143703 
143704 -- initialize arrays
143705 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
143706 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
143707 
143708 --
143709 -- Bug 4458708
143710 --
143711 XLA_AE_LINES_PKG.g_LineNumber := 0;
143712 
143713 
143714 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
143715 g_last_hdr_idx := l_array_event_id.LAST;
143716 --
143717 -- loop for the headers. Each iteration is for each header extract row
143718 -- fetched in header cursor
143719 --
143720 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
143721 
143722 --
143723 -- set event info as cache for other routines to refer event attributes
143724 --
143725 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
143726    (p_application_id           => p_application_id
143727    ,p_primary_ledger_id        => p_primary_ledger_id
143728    ,p_base_ledger_id           => p_base_ledger_id
143729    ,p_target_ledger_id         => p_target_ledger_id
143730    ,p_entity_id                => l_array_entity_id(hdr_idx)
143731    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
143732    ,p_entity_code              => l_array_entity_code(hdr_idx)
143733    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
143734    ,p_event_id                 => l_array_event_id(hdr_idx)
143735    ,p_event_class_code         => l_array_class_code(hdr_idx)
143736    ,p_event_type_code          => l_array_event_type(hdr_idx)
143737    ,p_event_number             => l_array_event_number(hdr_idx)
143738    ,p_event_date               => l_array_event_date(hdr_idx)
143739    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
143740    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
143741    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
143742    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
143743    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
143744    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
143745    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
143746    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
143747    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
143748    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
143749    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
143750    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
143751    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
143752    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
143753    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
143754 
143755 --
143756 -- set the status of entry to C_VALID (0)
143757 --
143758 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
143759 
143760 --
143761 -- initialize a row for ae header
143762 --
143763 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
143764 
143765 l_event_id := l_array_event_id(hdr_idx);
143766 
143767 --
143768 -- storing the hdr_idx for event. May be used by line cursor.
143769 --
143770 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
143771 
143772 --
143773 -- store sources from header extract. This can be improved to
143774 -- store only those sources from header extract that may be used in lines
143775 --
143776 
143777 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
143778 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
143779 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
143780 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
143781 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
143782 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
143783 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
143784 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
143785 
143786 --
143787 -- initilaize the status of ae headers for diffrent balance types
143788 -- the status is initialised to C_NOT_CREATED (2)
143789 --
143790 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
143791 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
143792 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
143793 
143794 --
143795 -- call api to validate and store accounting attributes for header
143796 --
143797 
143798 ------------------------------------------------------------
143799 -- Accrual Reversal : to get date for Standard Source (NONE)
143800 ------------------------------------------------------------
143801 l_acc_rev_gl_date_source := NULL;
143802 
143803      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
143804       l_rec_acct_attrs.array_date_value(1) := 
143805 xla_ae_sources_pkg.GetSystemSourceDate(
143806    p_source_code           => 'XLA_REFERENCE_DATE_1'
143807  , p_source_type_code      => 'Y'
143808  , p_source_application_id =>  602
143809 );
143810      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
143811       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
143812 
143813 
143814 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
143815 
143816 XLA_AE_HEADER_PKG.SetJeCategoryName;
143817 
143818 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
143819 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
143820 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
143821 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
143822 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
143823 
143824 
143825 -- No header level analytical criteria
143826 
143827 --
143828 --accounting attribute enhancement, bug 3612931
143829 --
143830 l_trx_reversal_source := SUBSTR(NULL, 1,30);
143831 
143832 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
143833    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
143834 
143835    xla_accounting_err_pkg.build_message
143836       (p_appli_s_name            => 'XLA'
143837       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
143838       ,p_token_1                 => 'ACCT_ATTR_NAME'
143839       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
143840       ,p_token_2                 => 'PRODUCT_NAME'
143841       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
143842       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
143843       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
143844       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
143845 
143846 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
143847    --
143848    -- following sets the accounting attributes needed to reverse
143849    -- accounting for a distributeion
143850    --
143851    xla_ae_lines_pkg.SetTrxReversalAttrs
143852       (p_event_id              => l_event_id
143853       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
143854       ,p_trx_reversal_source   => l_trx_reversal_source);
143855 
143856 END IF;
143857 
143858 
143859 ----------------------------------------------------------------
143860 -- 4262811 -  update the header statuses to invalid in need be
143861 ----------------------------------------------------------------
143862 --
143863 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
143864 
143865 
143866   -----------------------------------------------
143867   -- No accrual reversal for the event class/type
143868   -----------------------------------------------
143869 ----------------------------------------------------------------
143870 
143871 --
143872 -- this ends the header loop iteration for one bulk fetch
143873 --
143874 END LOOP;
143875 
143876 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
143877 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
143878 
143879 --
143880 -- insert dummy rows into lines gt table that were created due to
143881 -- transaction reversals
143882 --
143883 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
143884    l_result := XLA_AE_LINES_PKG.InsertLines;
143885 END IF;
143886 
143887 --
143888 -- reset the temp_line_num for each set of events fetched from header
143889 -- cursor rather than doing it for each new event in line cursor
143890 -- Bug 3939231
143891 --
143892 xla_ae_lines_pkg.g_temp_line_num := 0;
143893 
143894 
143895 
143896 --
143897 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
143898 --
143899 --
143900 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143901 
143902       trace
143903          (p_msg      => 'SQL - FETCH line_cur'
143904          ,p_level    => C_LEVEL_STATEMENT
143905          ,p_module   => l_log_module);
143906 
143907 END IF;
143908 --
143909 --
143910 LOOP
143911   --
143912   FETCH line_cur BULK COLLECT INTO
143913         l_array_entity_id
143914       , l_array_legal_entity_id
143915       , l_array_entity_code
143916       , l_array_transaction_num
143917       , l_array_event_id
143918       , l_array_class_code
143919       , l_array_event_type
143920       , l_array_event_number
143921       , l_array_event_date
143922       , l_array_transaction_date
143923       , l_array_reference_num_1
143924       , l_array_reference_num_2
143925       , l_array_reference_num_3
143926       , l_array_reference_num_4
143927       , l_array_reference_char_1
143928       , l_array_reference_char_2
143929       , l_array_reference_char_3
143930       , l_array_reference_char_4
143931       , l_array_reference_date_1
143932       , l_array_reference_date_2
143933       , l_array_reference_date_3
143934       , l_array_reference_date_4
143935       , l_array_event_created_by
143936       , l_array_budgetary_control_flag
143937       , l_array_extract_line_num 
143938       , l_array_source_4
143939       , l_array_source_11
143940       , l_array_source_18
143941       , l_array_source_22
143942       , l_array_source_24
143943       LIMIT l_rows;
143944 
143945   --
143946   IF (C_LEVEL_EVENT >= g_log_level) THEN
143947             trace
143948                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
143949                ,p_level    => C_LEVEL_EVENT
143950                ,p_module   => l_log_module);
143951   END IF;
143952   --
143953   EXIT WHEN l_array_entity_id.count = 0;
143954 
143955   XLA_AE_LINES_PKG.g_rec_lines := null;
143956 
143957 --
143958 -- Bug 4458708
143959 --
143960 XLA_AE_LINES_PKG.g_LineNumber := 0;
143961 --
143962 --
143963 
143964 FOR Idx IN 1..l_array_event_id.count LOOP
143965    --
143966    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
143967    --
143968    l_event_id := l_array_event_id(idx);  -- 5648433
143969 
143970    --
143971    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
143972    --
143973 
143974    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
143975              (g_array_event(l_event_id).array_value_num('header_index'))
143976          ,'N'
143977          ) <> 'Y'
143978    THEN
143979       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143980          trace
143981             (p_msg      => 'Trancaction revesal option is not Y '
143982             ,p_level    => C_LEVEL_STATEMENT
143983             ,p_module   => l_log_module);
143984       END IF;
143985 
143986 --
143987 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
143988 --
143989 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
143990 --
143991 -- set event info as cache for other routines to refer event attributes
143992 --
143993 
143994 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
143995    l_previous_event_id := l_event_id;
143996 
143997    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
143998       (p_application_id           => p_application_id
143999       ,p_primary_ledger_id        => p_primary_ledger_id
144000       ,p_base_ledger_id           => p_base_ledger_id
144001       ,p_target_ledger_id         => p_target_ledger_id
144002       ,p_entity_id                => l_array_entity_id(Idx)
144003       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
144004       ,p_entity_code              => l_array_entity_code(Idx)
144005       ,p_transaction_num          => l_array_transaction_num(Idx)
144006       ,p_event_id                 => l_array_event_id(Idx)
144007       ,p_event_class_code         => l_array_class_code(Idx)
144008       ,p_event_type_code          => l_array_event_type(Idx)
144009       ,p_event_number             => l_array_event_number(Idx)
144010       ,p_event_date               => l_array_event_date(Idx)
144011       ,p_transaction_date         => l_array_transaction_date(Idx)
144012       ,p_reference_num_1          => l_array_reference_num_1(Idx)
144013       ,p_reference_num_2          => l_array_reference_num_2(Idx)
144014       ,p_reference_num_3          => l_array_reference_num_3(Idx)
144015       ,p_reference_num_4          => l_array_reference_num_4(Idx)
144016       ,p_reference_char_1         => l_array_reference_char_1(Idx)
144017       ,p_reference_char_2         => l_array_reference_char_2(Idx)
144018       ,p_reference_char_3         => l_array_reference_char_3(Idx)
144019       ,p_reference_char_4         => l_array_reference_char_4(Idx)
144020       ,p_reference_date_1         => l_array_reference_date_1(Idx)
144021       ,p_reference_date_2         => l_array_reference_date_2(Idx)
144022       ,p_reference_date_3         => l_array_reference_date_3(Idx)
144023       ,p_reference_date_4         => l_array_reference_date_4(Idx)
144024       ,p_event_created_by         => l_array_event_created_by(Idx)
144025       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
144026        --
144027 END IF;
144028 
144029 
144030 
144031 --
144032 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
144033 
144034 l_acct_reversal_source := SUBSTR(NULL, 1,30);
144035 
144036 IF l_continue_with_lines THEN
144037    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
144038       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
144039 
144040       xla_accounting_err_pkg.build_message
144041          (p_appli_s_name            => 'XLA'
144042          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
144043          ,p_token_1                 => 'LINE_NUMBER'
144044          ,p_value_1                 => l_array_extract_line_num(Idx)
144045          ,p_token_2                 => 'PRODUCT_NAME'
144046          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
144047          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
144048          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
144049          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
144050 
144051    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
144052       --
144053       -- following sets the accounting attributes needed to reverse
144054       -- accounting for a distributeion
144055       --
144056 
144057       --
144058       -- 5217187
144059       --
144060       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
144061       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
144062                                        g_array_event(l_event_id).array_value_num('header_index'));
144063       --
144064       --
144065 
144066       -- No reversal code generated
144067 
144068       xla_ae_lines_pkg.SetAcctReversalAttrs
144069          (p_event_id             => l_event_id
144070          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
144071          ,p_calculate_acctd_flag => l_calculate_acctd_flag
144072          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
144073    END IF;
144074 
144075    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
144076        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
144077 
144078 --
144079 AcctLineType_49 (
144080  p_application_id  => p_application_id
144081  ,p_event_id     => l_event_id
144082  ,p_calculate_acctd_flag => l_calculate_acctd_flag
144083  ,p_calculate_g_l_flag => l_calculate_g_l_flag
144084  ,p_actual_flag => l_actual_flag
144085  ,p_balance_type_code => l_balance_type_code
144086  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144087  
144088  , p_source_4 => l_array_source_4(Idx)
144089  , p_source_11 => l_array_source_11(Idx)
144090  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
144091  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
144092  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
144093  , p_source_18 => l_array_source_18(Idx)
144094  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
144095  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
144096  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
144097  , p_source_22 => l_array_source_22(Idx)
144098  , p_source_24 => l_array_source_24(Idx)
144099  );
144100 If(l_balance_type_code = 'A') THEN
144101   l_actual_gain_loss_ref := l_gain_or_loss_ref;
144102 END IF;
144103 
144104 --
144105 
144106 
144107 --
144108 AcctLineType_212 (
144109  p_application_id  => p_application_id
144110  ,p_event_id     => l_event_id
144111  ,p_calculate_acctd_flag => l_calculate_acctd_flag
144112  ,p_calculate_g_l_flag => l_calculate_g_l_flag
144113  ,p_actual_flag => l_actual_flag
144114  ,p_balance_type_code => l_balance_type_code
144115  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144116  
144117  , p_source_4 => l_array_source_4(Idx)
144118  , p_source_11 => l_array_source_11(Idx)
144119  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
144120  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
144121  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
144122  , p_source_18 => l_array_source_18(Idx)
144123  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
144124  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
144125  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
144126  , p_source_22 => l_array_source_22(Idx)
144127  , p_source_24 => l_array_source_24(Idx)
144128  );
144129 If(l_balance_type_code = 'A') THEN
144130   l_actual_gain_loss_ref := l_gain_or_loss_ref;
144131 END IF;
144132 
144133 --
144134 
144135 
144136 --
144137 AcctLineType_243 (
144138  p_application_id  => p_application_id
144139  ,p_event_id     => l_event_id
144140  ,p_calculate_acctd_flag => l_calculate_acctd_flag
144141  ,p_calculate_g_l_flag => l_calculate_g_l_flag
144142  ,p_actual_flag => l_actual_flag
144143  ,p_balance_type_code => l_balance_type_code
144144  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144145  
144146  , p_source_4 => l_array_source_4(Idx)
144147  , p_source_11 => l_array_source_11(Idx)
144148  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
144149  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
144150  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
144151  , p_source_18 => l_array_source_18(Idx)
144152  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
144153  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
144154  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
144155  , p_source_22 => l_array_source_22(Idx)
144156  , p_source_24 => l_array_source_24(Idx)
144157  );
144158 If(l_balance_type_code = 'A') THEN
144159   l_actual_gain_loss_ref := l_gain_or_loss_ref;
144160 END IF;
144161 
144162 --
144163 
144164 
144165 --
144166 AcctLineType_244 (
144167  p_application_id  => p_application_id
144168  ,p_event_id     => l_event_id
144169  ,p_calculate_acctd_flag => l_calculate_acctd_flag
144170  ,p_calculate_g_l_flag => l_calculate_g_l_flag
144171  ,p_actual_flag => l_actual_flag
144172  ,p_balance_type_code => l_balance_type_code
144173  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144174  
144175  , p_source_4 => l_array_source_4(Idx)
144176  , p_source_11 => l_array_source_11(Idx)
144177  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
144178  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
144179  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
144180  , p_source_18 => l_array_source_18(Idx)
144181  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
144182  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
144183  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
144184  , p_source_22 => l_array_source_22(Idx)
144185  , p_source_24 => l_array_source_24(Idx)
144186  );
144187 If(l_balance_type_code = 'A') THEN
144188   l_actual_gain_loss_ref := l_gain_or_loss_ref;
144189 END IF;
144190 
144191 --
144192 
144193 
144194 --
144195 AcctLineType_249 (
144196  p_application_id  => p_application_id
144197  ,p_event_id     => l_event_id
144198  ,p_calculate_acctd_flag => l_calculate_acctd_flag
144199  ,p_calculate_g_l_flag => l_calculate_g_l_flag
144200  ,p_actual_flag => l_actual_flag
144201  ,p_balance_type_code => l_balance_type_code
144202  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144203  
144204  , p_source_4 => l_array_source_4(Idx)
144205  , p_source_11 => l_array_source_11(Idx)
144206  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
144207  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
144208  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
144209  , p_source_18 => l_array_source_18(Idx)
144210  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
144211  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
144212  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
144213  , p_source_22 => l_array_source_22(Idx)
144214  , p_source_24 => l_array_source_24(Idx)
144215  );
144216 If(l_balance_type_code = 'A') THEN
144217   l_actual_gain_loss_ref := l_gain_or_loss_ref;
144218 END IF;
144219 
144220 --
144221 
144222       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
144223       -- or secondary ledger that has different currency with primary
144224       -- or alc that is calculated by sla
144225       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
144226             (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'))
144227 
144228 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
144229 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
144230           AND (l_actual_flag = 'A')) THEN
144231         XLA_AE_LINES_PKG.CreateGainOrLossLines(
144232           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
144233          ,p_application_id   => p_application_id
144234          ,p_amb_context_code => 'DEFAULT'
144235          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
144236          ,p_event_class_code => C_EVENT_CLASS_CODE
144237          ,p_event_type_code  => C_EVENT_TYPE_CODE
144238          
144239          ,p_gain_ccid        => -1
144240          ,p_loss_ccid        => -1
144241 
144242          ,p_actual_flag      => l_actual_flag
144243          ,p_enc_flag         => null
144244          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
144245          ,p_enc_g_l_ref      => null
144246          );
144247       END IF;
144248    END IF;
144249 END IF;
144250 
144251    ELSE
144252       --
144253       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
144254       --
144255       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144256          trace
144257             (p_msg      => 'Trancaction revesal option is Y'
144258             ,p_level    => C_LEVEL_STATEMENT
144259             ,p_module   => l_log_module);
144260       END IF;
144261    END IF;
144262 
144263 END LOOP;
144264 l_result := XLA_AE_LINES_PKG.InsertLines ;
144265 end loop;
144266 close line_cur;
144267 
144268 
144269 --
144270 -- insert headers into xla_ae_headers_gt table
144271 --
144272 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
144273 
144274 -- insert into errors table here.
144275 
144276 END LOOP;
144277 
144278 --
144279 -- 4865292
144280 --
144281 -- Compare g_hdr_extract_count with event count in
144282 -- CreateHeadersAndLines.
144283 --
144284 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
144285 
144286 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144287    trace (p_msg     => '# rows extracted from header extract objects '
144288                     || ' (running total): '
144289                     || g_hdr_extract_count
144290          ,p_level   => C_LEVEL_STATEMENT
144291          ,p_module  => l_log_module);
144292 END IF;
144293 
144294 CLOSE header_cur;
144295 --
144296 
144297 --
144298 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
144299    trace
144300       (p_msg      => 'END of EventClass_259'
144301       ,p_level    => C_LEVEL_PROCEDURE
144302       ,p_module   => l_log_module);
144303 END IF;
144304 --
144305 RETURN l_result;
144306 EXCEPTION
144307 WHEN xla_exceptions_pkg.application_exception THEN
144308    
144309 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
144310 
144311    
144312 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
144313 
144314    RAISE;
144315 
144316 WHEN NO_DATA_FOUND THEN
144317 
144318 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
144319 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
144320 
144321 FOR header_record IN header_cur
144322 LOOP
144323     l_array_header_events(header_record.event_id) := header_record.event_id;
144324 END LOOP;
144325 
144326 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
144327 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
144328 
144329 fnd_file.put_line(fnd_file.LOG, '                    ');
144330 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
144331 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
144332 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
144333 
144334 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
144335 LOOP
144336 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
144337 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
144338         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
144339 	END IF;
144340 END LOOP;
144341 
144342 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
144343 fnd_file.put_line(fnd_file.LOG, '                    ');
144344 
144345 
144346 xla_exceptions_pkg.raise_message
144347       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_259');
144348 
144349 
144350 WHEN OTHERS THEN
144351    xla_exceptions_pkg.raise_message
144352       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_259');
144353 END EventClass_259;
144354 --
144355 
144356 ---------------------------------------
144357 --
144358 -- PRIVATE PROCEDURE
144359 --         insert_sources_260
144360 --
144361 ----------------------------------------
144362 --
144363 PROCEDURE insert_sources_260(
144364                                 p_target_ledger_id       IN NUMBER
144365                               , p_language               IN VARCHAR2
144366                               , p_sla_ledger_id          IN NUMBER
144367                               , p_pad_start_date         IN DATE
144368                               , p_pad_end_date           IN DATE
144369                          )
144370 IS
144371 
144372 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'ACCRUAL_WRITE_OFF_ALL';
144373 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'ACCRUAL_WRITE_OFF';
144374 p_apps_owner                   VARCHAR2(30);
144375 l_log_module                   VARCHAR2(240);
144376 BEGIN
144377 IF g_log_enabled THEN
144378       l_log_module := C_DEFAULT_MODULE||'.insert_sources_260';
144379 END IF;
144380 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
144381 
144382       trace
144383          (p_msg      => 'BEGIN of insert_sources_260'
144384          ,p_level    => C_LEVEL_PROCEDURE
144385          ,p_module   => l_log_module);
144386 
144387 END IF;
144388 
144389 -- select APPS owner
144390 SELECT oracle_username
144391   INTO p_apps_owner
144392   FROM fnd_oracle_userid
144393  WHERE read_only_flag = 'U'
144394 ;
144395 
144396 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144397       trace
144398          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
144399                         ' - p_language = '||p_language||
144400                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
144401                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
144402                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
144403                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
144404          ,p_level    => C_LEVEL_STATEMENT
144405          ,p_module   => l_log_module);
144406 END IF;
144407 
144408 
144409 --
144410 INSERT INTO xla_diag_sources --hdr2
144411 (
144412         event_id
144413       , ledger_id
144414       , sla_ledger_id
144415       , description_language
144416       , object_name
144417       , object_type_code
144418       , line_number
144419       , source_application_id
144420       , source_type_code
144421       , source_code
144422       , source_value
144423       , source_meaning
144424       , created_by
144425       , creation_date
144426       , last_update_date
144427       , last_updated_by
144428       , last_update_login
144429       , program_update_date
144430       , program_application_id
144431       , program_id
144432       , request_id
144433 )
144434 SELECT
144435         event_id
144436       , p_target_ledger_id
144437       , p_sla_ledger_id
144438       , p_language
144439       , object_name
144440       , object_type_code
144441       , line_number
144442       , source_application_id
144443       , source_type_code
144444       , source_code
144445       , SUBSTR(source_value ,1,1996)
144446       , SUBSTR(source_meaning ,1,200)
144447       , xla_environment_pkg.g_Usr_Id
144448       , TRUNC(SYSDATE)
144449       , TRUNC(SYSDATE)
144450       , xla_environment_pkg.g_Usr_Id
144451       , xla_environment_pkg.g_Login_Id
144452       , TRUNC(SYSDATE)
144453       , xla_environment_pkg.g_Prog_Appl_Id
144454       , xla_environment_pkg.g_Prog_Id
144455       , xla_environment_pkg.g_Req_Id
144456   FROM (
144457        SELECT xet.event_id                  event_id
144458             , 0                          line_number
144459             , CASE r
144460                WHEN 1 THEN 'CST_XLA_AWO_HEADERS_V' 
144461                 WHEN 2 THEN 'CST_XLA_AWO_HEADERS_V' 
144462                 WHEN 3 THEN 'CST_XLA_AWO_HEADERS_V' 
144463                 WHEN 4 THEN 'CST_XLA_AWO_HEADERS_V' 
144464                 WHEN 5 THEN 'CST_XLA_AWO_HEADERS_V' 
144465                 WHEN 6 THEN 'CST_XLA_AWO_HEADERS_V' 
144466                 
144467                ELSE null
144468               END                           object_name
144469             , CASE r
144470                 WHEN 1 THEN 'HEADER' 
144471                 WHEN 2 THEN 'HEADER' 
144472                 WHEN 3 THEN 'HEADER' 
144473                 WHEN 4 THEN 'HEADER' 
144474                 WHEN 5 THEN 'HEADER' 
144475                 WHEN 6 THEN 'HEADER' 
144476                 
144477                 ELSE null
144478               END                           object_type_code
144479             , CASE r
144480                 WHEN 1 THEN '707' 
144481                 WHEN 2 THEN '707' 
144482                 WHEN 3 THEN '707' 
144483                 WHEN 4 THEN '707' 
144484                 WHEN 5 THEN '707' 
144485                 WHEN 6 THEN '707' 
144486                 
144487                 ELSE null
144488               END                           source_application_id
144489             , 'S'             source_type_code
144490             , CASE r
144491                 WHEN 1 THEN 'WO_ACCRUAL_ACCOUNT_ID' 
144492                 WHEN 2 THEN 'WO_ERV_ACCOUNT_ID' 
144493                 WHEN 3 THEN 'WO_OFFSET_ACCOUNT_ID' 
144494                 WHEN 4 THEN 'DISTRIBUTION_TYPE' 
144495                 WHEN 5 THEN 'WRITE_OFF_ID' 
144496                 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR' 
144497                 
144498                 ELSE null
144499               END                           source_code
144500             , CASE r
144501                 WHEN 1 THEN TO_CHAR(h1.WO_ACCRUAL_ACCOUNT_ID)
144502                 WHEN 2 THEN TO_CHAR(h1.WO_ERV_ACCOUNT_ID)
144503                 WHEN 3 THEN TO_CHAR(h1.WO_OFFSET_ACCOUNT_ID)
144504                 WHEN 4 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
144505                 WHEN 5 THEN TO_CHAR(h1.WRITE_OFF_ID)
144506                 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
144507                 
144508                 ELSE null
144509               END                           source_value
144510             , CASE r
144511                 WHEN 4 THEN fvl12.meaning
144512                 WHEN 6 THEN fvl38.meaning
144513                 
144514                 ELSE null
144515               END               source_meaning
144516          FROM xla_events_gt     xet  
144517       , CST_XLA_AWO_HEADERS_V  h1
144518   , fnd_lookup_values    fvl12
144519   , fnd_lookup_values    fvl38
144520              ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
144521          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
144522            AND xet.event_class_code = C_EVENT_CLASS_CODE
144523               AND h1.event_id = xet.event_id
144524    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
144525   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
144526   AND fvl12.view_application_id(+) = 700
144527   AND fvl12.language(+)            = USERENV('LANG')
144528      AND fvl38.lookup_type(+)         = 'YES_NO'
144529   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
144530   AND fvl38.view_application_id(+) = 0
144531   AND fvl38.language(+)            = USERENV('LANG')
144532   
144533 )
144534 ;
144535 --
144536 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144537 
144538       trace
144539          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
144540          ,p_level    => C_LEVEL_STATEMENT
144541          ,p_module   => l_log_module);
144542 
144543 END IF;
144544 --
144545 
144546 
144547 
144548 --
144549 INSERT INTO xla_diag_sources  --line2
144550 (
144551         event_id
144552       , ledger_id
144553       , sla_ledger_id
144554       , description_language
144555       , object_name
144556       , object_type_code
144557       , line_number
144558       , source_application_id
144559       , source_type_code
144560       , source_code
144561       , source_value
144562       , source_meaning
144563       , created_by
144564       , creation_date
144565       , last_update_date
144566       , last_updated_by
144567       , last_update_login
144568       , program_update_date
144569       , program_application_id
144570       , program_id
144571       , request_id
144572 )
144573 SELECT  event_id
144574       , p_target_ledger_id
144575       , p_sla_ledger_id
144576       , p_language
144577       , object_name
144578       , object_type_code
144579       , line_number
144580       , source_application_id
144581       , source_type_code
144582       , source_code
144583       , SUBSTR(source_value,1,1996)
144584       , SUBSTR(source_meaning ,1,200)
144585       , xla_environment_pkg.g_Usr_Id
144586       , TRUNC(SYSDATE)
144587       , TRUNC(SYSDATE)
144588       , xla_environment_pkg.g_Usr_Id
144589       , xla_environment_pkg.g_Login_Id
144590       , TRUNC(SYSDATE)
144591       , xla_environment_pkg.g_Prog_Appl_Id
144592       , xla_environment_pkg.g_Prog_Id
144593       , xla_environment_pkg.g_Req_Id
144594   FROM (
144595        SELECT xet.event_id                  event_id
144596             , l2.line_number                 line_number
144597             , CASE r
144598                WHEN 1 THEN 'CST_XLA_AWO_LINES_V' 
144599                 WHEN 2 THEN 'CST_XLA_AWO_LINES_V' 
144600                 WHEN 3 THEN 'CST_XLA_AWO_LINES_V' 
144601                 WHEN 4 THEN 'CST_XLA_AWO_LINES_V' 
144602                 WHEN 5 THEN 'CST_XLA_AWO_LINES_V' 
144603                 WHEN 6 THEN 'CST_XLA_AWO_LINES_V' 
144604                 WHEN 7 THEN 'CST_XLA_AWO_LINES_V' 
144605                 
144606                ELSE null
144607               END                           object_name
144608             , CASE r
144609                 WHEN 1 THEN 'LINE' 
144610                 WHEN 2 THEN 'LINE' 
144611                 WHEN 3 THEN 'LINE' 
144612                 WHEN 4 THEN 'LINE' 
144613                 WHEN 5 THEN 'LINE' 
144614                 WHEN 6 THEN 'LINE' 
144615                 WHEN 7 THEN 'LINE' 
144616                 
144617                 ELSE null
144618               END                           object_type_code
144619             , CASE r
144620                 WHEN 1 THEN '707' 
144621                 WHEN 2 THEN '707' 
144622                 WHEN 3 THEN '707' 
144623                 WHEN 4 THEN '707' 
144624                 WHEN 5 THEN '707' 
144625                 WHEN 6 THEN '707' 
144626                 WHEN 7 THEN '707' 
144627                 
144628                 ELSE null
144629               END                           source_application_id
144630             , 'S'             source_type_code
144631             , CASE r
144632                 WHEN 1 THEN 'CURRENCY_CODE' 
144633                 WHEN 2 THEN 'ENTERED_AMOUNT' 
144634                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
144635                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
144636                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
144637                 WHEN 6 THEN 'ACCOUNTED_AMOUNT' 
144638                 WHEN 7 THEN 'LINE_NUMBER' 
144639                 
144640                 ELSE null
144641               END                           source_code
144642             , CASE r
144643                 WHEN 1 THEN TO_CHAR(l2.CURRENCY_CODE)
144644                 WHEN 2 THEN TO_CHAR(l2.ENTERED_AMOUNT)
144645                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
144646                 WHEN 4 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
144647                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
144648                 WHEN 6 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
144649                 WHEN 7 THEN TO_CHAR(l2.LINE_NUMBER)
144650                 
144651                 ELSE null
144652               END                           source_value
144653             , null              source_meaning
144654          FROM  xla_events_gt     xet  
144655         , CST_XLA_AWO_LINES_V  l2
144656             , (select rownum r from all_objects where rownum <= 7 and owner = p_apps_owner)
144657         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
144658           AND xet.event_class_code = C_EVENT_CLASS_CODE
144659             AND l2.event_id          = xet.event_id
144660 
144661 )
144662 ;
144663 --
144664 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144665 
144666       trace
144667          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
144668          ,p_level    => C_LEVEL_STATEMENT
144669          ,p_module   => l_log_module);
144670 
144671 END IF;
144672 
144673 
144674 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
144675       trace
144676          (p_msg      => 'END of insert_sources_260'
144677          ,p_level    => C_LEVEL_PROCEDURE
144678          ,p_module   => l_log_module);
144679 END IF;
144680 EXCEPTION
144681   WHEN xla_exceptions_pkg.application_exception THEN
144682       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
144683             trace
144684                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
144685                ,p_level    => C_LEVEL_EXCEPTION
144686                ,p_module   => l_log_module);
144687       END IF;
144688       RAISE;
144689   WHEN OTHERS THEN
144690       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
144691             trace
144692                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
144693                ,p_level    => C_LEVEL_EXCEPTION
144694                ,p_module   => l_log_module);
144695        END IF;
144696        xla_exceptions_pkg.raise_message
144697            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_260');
144698 END insert_sources_260;
144699 --
144700 
144701 ---------------------------------------
144702 --
144703 -- PRIVATE FUNCTION
144704 --         EventClass_260
144705 --
144706 ----------------------------------------
144707 --
144708 FUNCTION EventClass_260
144709        (p_application_id         IN NUMBER
144710        ,p_base_ledger_id         IN NUMBER
144711        ,p_target_ledger_id       IN NUMBER
144712        ,p_language               IN VARCHAR2
144713        ,p_currency_code          IN VARCHAR2
144714        ,p_sla_ledger_id          IN NUMBER
144715        ,p_pad_start_date         IN DATE
144716        ,p_pad_end_date           IN DATE
144717        ,p_primary_ledger_id      IN NUMBER)
144718 RETURN BOOLEAN IS
144719 --
144720 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'ACCRUAL_WRITE_OFF_ALL';
144721 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'ACCRUAL_WRITE_OFF';
144722 
144723 l_calculate_acctd_flag   VARCHAR2(1) :='N';
144724 l_calculate_g_l_flag     VARCHAR2(1) :='N';
144725 --
144726 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144727 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144728 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
144729 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
144730 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144731 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
144732 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
144733 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144734 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
144735 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
144736 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144737 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144738 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144739 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144740 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
144741 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
144742 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
144743 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
144744 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
144745 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
144746 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
144747 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
144748 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
144749 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
144750 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
144751 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
144752 
144753 l_event_id                             NUMBER;
144754 l_previous_event_id                    NUMBER;
144755 l_first_event_id                       NUMBER;
144756 l_last_event_id                        NUMBER;
144757 
144758 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
144759 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
144760 --
144761 --
144762 l_result                    BOOLEAN := TRUE;
144763 l_rows                      NUMBER  := 1000;
144764 l_event_type_name           VARCHAR2(80) := 'All';
144765 l_event_class_name          VARCHAR2(80) := 'Accrual Write Off';
144766 l_description               VARCHAR2(4000);
144767 l_transaction_reversal      NUMBER;
144768 l_ae_header_id              NUMBER;
144769 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
144770 l_log_module                VARCHAR2(240);
144771 --
144772 l_acct_reversal_source      VARCHAR2(30);
144773 l_trx_reversal_source       VARCHAR2(30);
144774 
144775 l_continue_with_lines       BOOLEAN := TRUE;
144776 --
144777 l_acc_rev_gl_date_source    DATE;                      -- 4262811
144778 --
144779 type t_array_event_id is table of number index by binary_integer;
144780 
144781 l_rec_array_event                    t_rec_array_event;
144782 l_null_rec_array_event               t_rec_array_event;
144783 l_array_ae_header_id                 xla_number_array_type;
144784 l_actual_flag                        VARCHAR2(1) := NULL;
144785 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
144786 l_balance_type_code                  VARCHAR2(1) :=NULL;
144787 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
144788 
144789 --
144790 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
144791 --
144792 
144793 TYPE t_array_source_1 IS TABLE OF CST_XLA_AWO_HEADERS_V.WO_ACCRUAL_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
144794 TYPE t_array_source_2 IS TABLE OF CST_XLA_AWO_HEADERS_V.WO_ERV_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
144795 TYPE t_array_source_3 IS TABLE OF CST_XLA_AWO_HEADERS_V.WO_OFFSET_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
144796 TYPE t_array_source_12 IS TABLE OF CST_XLA_AWO_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
144797 TYPE t_array_source_26 IS TABLE OF CST_XLA_AWO_HEADERS_V.WRITE_OFF_ID%TYPE INDEX BY BINARY_INTEGER;
144798 TYPE t_array_source_38 IS TABLE OF CST_XLA_AWO_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
144799 
144800 TYPE t_array_source_15 IS TABLE OF CST_XLA_AWO_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
144801 TYPE t_array_source_18 IS TABLE OF CST_XLA_AWO_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
144802 TYPE t_array_source_19 IS TABLE OF CST_XLA_AWO_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
144803 TYPE t_array_source_20 IS TABLE OF CST_XLA_AWO_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
144804 TYPE t_array_source_21 IS TABLE OF CST_XLA_AWO_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
144805 TYPE t_array_source_22 IS TABLE OF CST_XLA_AWO_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
144806 TYPE t_array_source_25 IS TABLE OF CST_XLA_AWO_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
144807 
144808 l_array_source_1              t_array_source_1;
144809 l_array_source_2              t_array_source_2;
144810 l_array_source_3              t_array_source_3;
144811 l_array_source_12              t_array_source_12;
144812 l_array_source_12_meaning      t_array_lookup_meaning;
144813 l_array_source_26              t_array_source_26;
144814 l_array_source_38              t_array_source_38;
144815 l_array_source_38_meaning      t_array_lookup_meaning;
144816 
144817 l_array_source_15      t_array_source_15;
144818 l_array_source_18      t_array_source_18;
144819 l_array_source_19      t_array_source_19;
144820 l_array_source_20      t_array_source_20;
144821 l_array_source_21      t_array_source_21;
144822 l_array_source_22      t_array_source_22;
144823 l_array_source_25      t_array_source_25;
144824 
144825 --
144826 CURSOR header_cur
144827 IS
144828 SELECT /*+ leading(xet) cardinality(xet,1) */
144829 -- Event Class Code: ACCRUAL_WRITE_OFF
144830     xet.entity_id
144831    ,xet.legal_entity_id
144832    ,xet.entity_code
144833    ,xet.transaction_number
144834    ,xet.event_id
144835    ,xet.event_class_code
144836    ,xet.event_type_code
144837    ,xet.event_number
144838    ,xet.event_date
144839    ,xet.transaction_date
144840    ,xet.reference_num_1
144841    ,xet.reference_num_2
144842    ,xet.reference_num_3
144843    ,xet.reference_num_4
144844    ,xet.reference_char_1
144845    ,xet.reference_char_2
144846    ,xet.reference_char_3
144847    ,xet.reference_char_4
144848    ,xet.reference_date_1
144849    ,xet.reference_date_2
144850    ,xet.reference_date_3
144851    ,xet.reference_date_4
144852    ,xet.event_created_by
144853    ,xet.budgetary_control_flag 
144854   , h1.WO_ACCRUAL_ACCOUNT_ID    source_1
144855   , h1.WO_ERV_ACCOUNT_ID    source_2
144856   , h1.WO_OFFSET_ACCOUNT_ID    source_3
144857   , h1.DISTRIBUTION_TYPE    source_12
144858   , fvl12.meaning   source_12_meaning
144859   , h1.WRITE_OFF_ID    source_26
144860   , h1.TRANSFER_TO_GL_INDICATOR    source_38
144861   , fvl38.meaning   source_38_meaning
144862   FROM xla_events_gt     xet 
144863   , CST_XLA_AWO_HEADERS_V  h1
144864   , fnd_lookup_values    fvl12
144865   , fnd_lookup_values    fvl38
144866  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
144867    and xet.event_class_code = C_EVENT_CLASS_CODE
144868    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
144869    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
144870   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
144871   AND fvl12.view_application_id(+) = 700
144872   AND fvl12.language(+)            = USERENV('LANG')
144873      AND fvl38.lookup_type(+)         = 'YES_NO'
144874   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
144875   AND fvl38.view_application_id(+) = 0
144876   AND fvl38.language(+)            = USERENV('LANG')
144877   
144878  ORDER BY event_id
144879 ;
144880 
144881 
144882 --
144883 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
144884 IS
144885 SELECT  /*+ leading(xet) cardinality(xet,1) */
144886 -- Event Class Code: ACCRUAL_WRITE_OFF
144887     xet.entity_id
144888    ,xet.legal_entity_id
144889    ,xet.entity_code
144890    ,xet.transaction_number
144891    ,xet.event_id
144892    ,xet.event_class_code
144893    ,xet.event_type_code
144894    ,xet.event_number
144895    ,xet.event_date
144896    ,xet.transaction_date
144897    ,xet.reference_num_1
144898    ,xet.reference_num_2
144899    ,xet.reference_num_3
144900    ,xet.reference_num_4
144901    ,xet.reference_char_1
144902    ,xet.reference_char_2
144903    ,xet.reference_char_3
144904    ,xet.reference_char_4
144905    ,xet.reference_date_1
144906    ,xet.reference_date_2
144907    ,xet.reference_date_3
144908    ,xet.reference_date_4
144909    ,xet.event_created_by
144910    ,xet.budgetary_control_flag
144911  , l2.LINE_NUMBER  
144912   , l2.CURRENCY_CODE    source_15
144913   , l2.ENTERED_AMOUNT    source_18
144914   , l2.CURRENCY_CONVERSION_DATE    source_19
144915   , l2.CURRENCY_CONVERSION_RATE    source_20
144916   , l2.CURRENCY_CONVERSION_TYPE    source_21
144917   , l2.ACCOUNTED_AMOUNT    source_22
144918   , l2.LINE_NUMBER    source_25
144919   FROM xla_events_gt     xet 
144920   , CST_XLA_AWO_LINES_V  l2
144921  WHERE xet.event_id between x_first_event_id and x_last_event_id
144922    and xet.event_date between p_pad_start_date and p_pad_end_date
144923    and xet.event_class_code = C_EVENT_CLASS_CODE
144924    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
144925 ;
144926 
144927 --
144928 BEGIN
144929 IF g_log_enabled THEN
144930    l_log_module := C_DEFAULT_MODULE||'.EventClass_260';
144931 END IF;
144932 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
144933    trace
144934       (p_msg      => 'BEGIN of EventClass_260'
144935       ,p_level    => C_LEVEL_PROCEDURE
144936       ,p_module   => l_log_module);
144937 END IF;
144938 
144939 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144940    trace
144941       (p_msg      => 'p_application_id = '||p_application_id||
144942                      ' - p_base_ledger_id = '||p_base_ledger_id||
144943                      ' - p_target_ledger_id  = '||p_target_ledger_id||
144944                      ' - p_language = '||p_language||
144945                      ' - p_currency_code = '||p_currency_code||
144946                      ' - p_sla_ledger_id = '||p_sla_ledger_id
144947       ,p_level    => C_LEVEL_STATEMENT
144948       ,p_module   => l_log_module);
144949 END IF;
144950 --
144951 -- initialze arrays
144952 --
144953 g_array_event.DELETE;
144954 l_rec_array_event := l_null_rec_array_event;
144955 --
144956 --------------------------------------
144957 -- 4262811 Initialze MPA Line Number
144958 --------------------------------------
144959 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
144960 
144961 --
144962 
144963 --
144964 OPEN header_cur;
144965 --
144966 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144967    trace
144968    (p_msg      => 'SQL - FETCH header_cur'
144969    ,p_level    => C_LEVEL_STATEMENT
144970    ,p_module   => l_log_module);
144971 END IF;
144972 --
144973 LOOP
144974 FETCH header_cur BULK COLLECT INTO
144975         l_array_entity_id
144976       , l_array_legal_entity_id
144977       , l_array_entity_code
144978       , l_array_transaction_num
144979       , l_array_event_id
144980       , l_array_class_code
144981       , l_array_event_type
144982       , l_array_event_number
144983       , l_array_event_date
144984       , l_array_transaction_date
144985       , l_array_reference_num_1
144986       , l_array_reference_num_2
144987       , l_array_reference_num_3
144988       , l_array_reference_num_4
144989       , l_array_reference_char_1
144990       , l_array_reference_char_2
144991       , l_array_reference_char_3
144992       , l_array_reference_char_4
144993       , l_array_reference_date_1
144994       , l_array_reference_date_2
144995       , l_array_reference_date_3
144996       , l_array_reference_date_4
144997       , l_array_event_created_by
144998       , l_array_budgetary_control_flag 
144999       , l_array_source_1
145000       , l_array_source_2
145001       , l_array_source_3
145002       , l_array_source_12
145003       , l_array_source_12_meaning
145004       , l_array_source_26
145005       , l_array_source_38
145006       , l_array_source_38_meaning
145007       LIMIT l_rows;
145008 --
145009 IF (C_LEVEL_EVENT >= g_log_level) THEN
145010    trace
145011    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
145012    ,p_level    => C_LEVEL_EVENT
145013    ,p_module   => l_log_module);
145014 END IF;
145015 --
145016 EXIT WHEN l_array_entity_id.COUNT = 0;
145017 
145018 -- initialize arrays
145019 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
145020 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
145021 
145022 --
145023 -- Bug 4458708
145024 --
145025 XLA_AE_LINES_PKG.g_LineNumber := 0;
145026 
145027 
145028 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
145029 g_last_hdr_idx := l_array_event_id.LAST;
145030 --
145031 -- loop for the headers. Each iteration is for each header extract row
145032 -- fetched in header cursor
145033 --
145034 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
145035 
145036 --
145037 -- set event info as cache for other routines to refer event attributes
145038 --
145039 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
145040    (p_application_id           => p_application_id
145041    ,p_primary_ledger_id        => p_primary_ledger_id
145042    ,p_base_ledger_id           => p_base_ledger_id
145043    ,p_target_ledger_id         => p_target_ledger_id
145044    ,p_entity_id                => l_array_entity_id(hdr_idx)
145045    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
145046    ,p_entity_code              => l_array_entity_code(hdr_idx)
145047    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
145048    ,p_event_id                 => l_array_event_id(hdr_idx)
145049    ,p_event_class_code         => l_array_class_code(hdr_idx)
145050    ,p_event_type_code          => l_array_event_type(hdr_idx)
145051    ,p_event_number             => l_array_event_number(hdr_idx)
145052    ,p_event_date               => l_array_event_date(hdr_idx)
145053    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
145054    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
145055    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
145056    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
145057    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
145058    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
145059    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
145060    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
145061    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
145062    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
145063    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
145064    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
145065    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
145066    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
145067    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
145068 
145069 --
145070 -- set the status of entry to C_VALID (0)
145071 --
145072 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
145073 
145074 --
145075 -- initialize a row for ae header
145076 --
145077 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
145078 
145079 l_event_id := l_array_event_id(hdr_idx);
145080 
145081 --
145082 -- storing the hdr_idx for event. May be used by line cursor.
145083 --
145084 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
145085 
145086 --
145087 -- store sources from header extract. This can be improved to
145088 -- store only those sources from header extract that may be used in lines
145089 --
145090 
145091 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
145092 g_array_event(l_event_id).array_value_num('source_2') := l_array_source_2(hdr_idx);
145093 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
145094 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
145095 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
145096 g_array_event(l_event_id).array_value_num('source_26') := l_array_source_26(hdr_idx);
145097 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
145098 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
145099 
145100 --
145101 -- initilaize the status of ae headers for diffrent balance types
145102 -- the status is initialised to C_NOT_CREATED (2)
145103 --
145104 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
145105 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
145106 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
145107 
145108 --
145109 -- call api to validate and store accounting attributes for header
145110 --
145111 
145112 ------------------------------------------------------------
145113 -- Accrual Reversal : to get date for Standard Source (NONE)
145114 ------------------------------------------------------------
145115 l_acc_rev_gl_date_source := NULL;
145116 
145117      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
145118       l_rec_acct_attrs.array_date_value(1) := 
145119 xla_ae_sources_pkg.GetSystemSourceDate(
145120    p_source_code           => 'XLA_REFERENCE_DATE_1'
145121  , p_source_type_code      => 'Y'
145122  , p_source_application_id =>  602
145123 );
145124      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
145125       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
145126 
145127 
145128 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
145129 
145130 XLA_AE_HEADER_PKG.SetJeCategoryName;
145131 
145132 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
145133 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
145134 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
145135 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
145136 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
145137 
145138 
145139 -- No header level analytical criteria
145140 
145141 --
145142 --accounting attribute enhancement, bug 3612931
145143 --
145144 l_trx_reversal_source := SUBSTR(NULL, 1,30);
145145 
145146 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
145147    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
145148 
145149    xla_accounting_err_pkg.build_message
145150       (p_appli_s_name            => 'XLA'
145151       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
145152       ,p_token_1                 => 'ACCT_ATTR_NAME'
145153       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
145154       ,p_token_2                 => 'PRODUCT_NAME'
145155       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
145156       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
145157       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
145158       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
145159 
145160 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
145161    --
145162    -- following sets the accounting attributes needed to reverse
145163    -- accounting for a distributeion
145164    --
145165    xla_ae_lines_pkg.SetTrxReversalAttrs
145166       (p_event_id              => l_event_id
145167       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
145168       ,p_trx_reversal_source   => l_trx_reversal_source);
145169 
145170 END IF;
145171 
145172 
145173 ----------------------------------------------------------------
145174 -- 4262811 -  update the header statuses to invalid in need be
145175 ----------------------------------------------------------------
145176 --
145177 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
145178 
145179 
145180   -----------------------------------------------
145181   -- No accrual reversal for the event class/type
145182   -----------------------------------------------
145183 ----------------------------------------------------------------
145184 
145185 --
145186 -- this ends the header loop iteration for one bulk fetch
145187 --
145188 END LOOP;
145189 
145190 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
145191 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
145192 
145193 --
145194 -- insert dummy rows into lines gt table that were created due to
145195 -- transaction reversals
145196 --
145197 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
145198    l_result := XLA_AE_LINES_PKG.InsertLines;
145199 END IF;
145200 
145201 --
145202 -- reset the temp_line_num for each set of events fetched from header
145203 -- cursor rather than doing it for each new event in line cursor
145204 -- Bug 3939231
145205 --
145206 xla_ae_lines_pkg.g_temp_line_num := 0;
145207 
145208 
145209 
145210 --
145211 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
145212 --
145213 --
145214 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145215 
145216       trace
145217          (p_msg      => 'SQL - FETCH line_cur'
145218          ,p_level    => C_LEVEL_STATEMENT
145219          ,p_module   => l_log_module);
145220 
145221 END IF;
145222 --
145223 --
145224 LOOP
145225   --
145226   FETCH line_cur BULK COLLECT INTO
145227         l_array_entity_id
145228       , l_array_legal_entity_id
145229       , l_array_entity_code
145230       , l_array_transaction_num
145231       , l_array_event_id
145232       , l_array_class_code
145233       , l_array_event_type
145234       , l_array_event_number
145235       , l_array_event_date
145236       , l_array_transaction_date
145237       , l_array_reference_num_1
145238       , l_array_reference_num_2
145239       , l_array_reference_num_3
145240       , l_array_reference_num_4
145241       , l_array_reference_char_1
145242       , l_array_reference_char_2
145243       , l_array_reference_char_3
145244       , l_array_reference_char_4
145245       , l_array_reference_date_1
145246       , l_array_reference_date_2
145247       , l_array_reference_date_3
145248       , l_array_reference_date_4
145249       , l_array_event_created_by
145250       , l_array_budgetary_control_flag
145251       , l_array_extract_line_num 
145252       , l_array_source_15
145253       , l_array_source_18
145254       , l_array_source_19
145255       , l_array_source_20
145256       , l_array_source_21
145257       , l_array_source_22
145258       , l_array_source_25
145259       LIMIT l_rows;
145260 
145261   --
145262   IF (C_LEVEL_EVENT >= g_log_level) THEN
145263             trace
145264                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
145265                ,p_level    => C_LEVEL_EVENT
145266                ,p_module   => l_log_module);
145267   END IF;
145268   --
145269   EXIT WHEN l_array_entity_id.count = 0;
145270 
145271   XLA_AE_LINES_PKG.g_rec_lines := null;
145272 
145273 --
145274 -- Bug 4458708
145275 --
145276 XLA_AE_LINES_PKG.g_LineNumber := 0;
145277 --
145278 --
145279 
145280 FOR Idx IN 1..l_array_event_id.count LOOP
145281    --
145282    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
145283    --
145284    l_event_id := l_array_event_id(idx);  -- 5648433
145285 
145286    --
145287    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
145288    --
145289 
145290    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
145291              (g_array_event(l_event_id).array_value_num('header_index'))
145292          ,'N'
145293          ) <> 'Y'
145294    THEN
145295       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145296          trace
145297             (p_msg      => 'Trancaction revesal option is not Y '
145298             ,p_level    => C_LEVEL_STATEMENT
145299             ,p_module   => l_log_module);
145300       END IF;
145301 
145302 --
145303 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
145304 --
145305 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
145306 --
145307 -- set event info as cache for other routines to refer event attributes
145308 --
145309 
145310 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
145311    l_previous_event_id := l_event_id;
145312 
145313    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
145314       (p_application_id           => p_application_id
145315       ,p_primary_ledger_id        => p_primary_ledger_id
145316       ,p_base_ledger_id           => p_base_ledger_id
145317       ,p_target_ledger_id         => p_target_ledger_id
145318       ,p_entity_id                => l_array_entity_id(Idx)
145319       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
145320       ,p_entity_code              => l_array_entity_code(Idx)
145321       ,p_transaction_num          => l_array_transaction_num(Idx)
145322       ,p_event_id                 => l_array_event_id(Idx)
145323       ,p_event_class_code         => l_array_class_code(Idx)
145324       ,p_event_type_code          => l_array_event_type(Idx)
145325       ,p_event_number             => l_array_event_number(Idx)
145326       ,p_event_date               => l_array_event_date(Idx)
145327       ,p_transaction_date         => l_array_transaction_date(Idx)
145328       ,p_reference_num_1          => l_array_reference_num_1(Idx)
145329       ,p_reference_num_2          => l_array_reference_num_2(Idx)
145330       ,p_reference_num_3          => l_array_reference_num_3(Idx)
145331       ,p_reference_num_4          => l_array_reference_num_4(Idx)
145332       ,p_reference_char_1         => l_array_reference_char_1(Idx)
145333       ,p_reference_char_2         => l_array_reference_char_2(Idx)
145334       ,p_reference_char_3         => l_array_reference_char_3(Idx)
145335       ,p_reference_char_4         => l_array_reference_char_4(Idx)
145336       ,p_reference_date_1         => l_array_reference_date_1(Idx)
145337       ,p_reference_date_2         => l_array_reference_date_2(Idx)
145338       ,p_reference_date_3         => l_array_reference_date_3(Idx)
145339       ,p_reference_date_4         => l_array_reference_date_4(Idx)
145340       ,p_event_created_by         => l_array_event_created_by(Idx)
145341       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
145342        --
145343 END IF;
145344 
145345 
145346 
145347 --
145348 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
145349 
145350 l_acct_reversal_source := SUBSTR(NULL, 1,30);
145351 
145352 IF l_continue_with_lines THEN
145353    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
145354       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
145355 
145356       xla_accounting_err_pkg.build_message
145357          (p_appli_s_name            => 'XLA'
145358          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
145359          ,p_token_1                 => 'LINE_NUMBER'
145360          ,p_value_1                 => l_array_extract_line_num(Idx)
145361          ,p_token_2                 => 'PRODUCT_NAME'
145362          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
145363          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
145364          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
145365          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
145366 
145367    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
145368       --
145369       -- following sets the accounting attributes needed to reverse
145370       -- accounting for a distributeion
145371       --
145372 
145373       --
145374       -- 5217187
145375       --
145376       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
145377       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
145378                                        g_array_event(l_event_id).array_value_num('header_index'));
145379       --
145380       --
145381 
145382       -- No reversal code generated
145383 
145384       xla_ae_lines_pkg.SetAcctReversalAttrs
145385          (p_event_id             => l_event_id
145386          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
145387          ,p_calculate_acctd_flag => l_calculate_acctd_flag
145388          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
145389    END IF;
145390 
145391    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
145392        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
145393 
145394 --
145395 AcctLineType_7 (
145396  p_application_id  => p_application_id
145397  ,p_event_id     => l_event_id
145398  ,p_calculate_acctd_flag => l_calculate_acctd_flag
145399  ,p_calculate_g_l_flag => l_calculate_g_l_flag
145400  ,p_actual_flag => l_actual_flag
145401  ,p_balance_type_code => l_balance_type_code
145402  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
145403  
145404  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
145405  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
145406  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
145407  , p_source_15 => l_array_source_15(Idx)
145408  , p_source_18 => l_array_source_18(Idx)
145409  , p_source_19 => l_array_source_19(Idx)
145410  , p_source_20 => l_array_source_20(Idx)
145411  , p_source_21 => l_array_source_21(Idx)
145412  , p_source_22 => l_array_source_22(Idx)
145413  , p_source_25 => l_array_source_25(Idx)
145414  , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
145415  );
145416 If(l_balance_type_code = 'A') THEN
145417   l_actual_gain_loss_ref := l_gain_or_loss_ref;
145418 END IF;
145419 
145420 --
145421 
145422 
145423 --
145424 AcctLineType_210 (
145425  p_application_id  => p_application_id
145426  ,p_event_id     => l_event_id
145427  ,p_calculate_acctd_flag => l_calculate_acctd_flag
145428  ,p_calculate_g_l_flag => l_calculate_g_l_flag
145429  ,p_actual_flag => l_actual_flag
145430  ,p_balance_type_code => l_balance_type_code
145431  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
145432  
145433  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
145434  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
145435  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
145436  , p_source_15 => l_array_source_15(Idx)
145437  , p_source_18 => l_array_source_18(Idx)
145438  , p_source_19 => l_array_source_19(Idx)
145439  , p_source_20 => l_array_source_20(Idx)
145440  , p_source_21 => l_array_source_21(Idx)
145441  , p_source_22 => l_array_source_22(Idx)
145442  , p_source_25 => l_array_source_25(Idx)
145443  , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
145444  );
145445 If(l_balance_type_code = 'A') THEN
145446   l_actual_gain_loss_ref := l_gain_or_loss_ref;
145447 END IF;
145448 
145449 --
145450 
145451 
145452 --
145453 AcctLineType_257 (
145454  p_application_id  => p_application_id
145455  ,p_event_id     => l_event_id
145456  ,p_calculate_acctd_flag => l_calculate_acctd_flag
145457  ,p_calculate_g_l_flag => l_calculate_g_l_flag
145458  ,p_actual_flag => l_actual_flag
145459  ,p_balance_type_code => l_balance_type_code
145460  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
145461  
145462  , p_source_2 => g_array_event(l_event_id).array_value_num('source_2')
145463  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
145464  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
145465  , p_source_15 => l_array_source_15(Idx)
145466  , p_source_18 => l_array_source_18(Idx)
145467  , p_source_19 => l_array_source_19(Idx)
145468  , p_source_20 => l_array_source_20(Idx)
145469  , p_source_21 => l_array_source_21(Idx)
145470  , p_source_22 => l_array_source_22(Idx)
145471  , p_source_25 => l_array_source_25(Idx)
145472  , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
145473  );
145474 If(l_balance_type_code = 'A') THEN
145475   l_actual_gain_loss_ref := l_gain_or_loss_ref;
145476 END IF;
145477 
145478 --
145479 
145480 
145481 --
145482 AcctLineType_258 (
145483  p_application_id  => p_application_id
145484  ,p_event_id     => l_event_id
145485  ,p_calculate_acctd_flag => l_calculate_acctd_flag
145486  ,p_calculate_g_l_flag => l_calculate_g_l_flag
145487  ,p_actual_flag => l_actual_flag
145488  ,p_balance_type_code => l_balance_type_code
145489  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
145490  
145491  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
145492  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
145493  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
145494  , p_source_15 => l_array_source_15(Idx)
145495  , p_source_18 => l_array_source_18(Idx)
145496  , p_source_19 => l_array_source_19(Idx)
145497  , p_source_20 => l_array_source_20(Idx)
145498  , p_source_21 => l_array_source_21(Idx)
145499  , p_source_22 => l_array_source_22(Idx)
145500  , p_source_25 => l_array_source_25(Idx)
145501  , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
145502  );
145503 If(l_balance_type_code = 'A') THEN
145504   l_actual_gain_loss_ref := l_gain_or_loss_ref;
145505 END IF;
145506 
145507 --
145508 
145509       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
145510       -- or secondary ledger that has different currency with primary
145511       -- or alc that is calculated by sla
145512       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
145513             (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'))
145514 
145515 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
145516 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
145517           AND (l_actual_flag = 'A')) THEN
145518         XLA_AE_LINES_PKG.CreateGainOrLossLines(
145519           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
145520          ,p_application_id   => p_application_id
145521          ,p_amb_context_code => 'DEFAULT'
145522          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
145523          ,p_event_class_code => C_EVENT_CLASS_CODE
145524          ,p_event_type_code  => C_EVENT_TYPE_CODE
145525          
145526          ,p_gain_ccid        => -1
145527          ,p_loss_ccid        => -1
145528 
145529          ,p_actual_flag      => l_actual_flag
145530          ,p_enc_flag         => null
145531          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
145532          ,p_enc_g_l_ref      => null
145533          );
145534       END IF;
145535    END IF;
145536 END IF;
145537 
145538    ELSE
145539       --
145540       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
145541       --
145542       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145543          trace
145544             (p_msg      => 'Trancaction revesal option is Y'
145545             ,p_level    => C_LEVEL_STATEMENT
145546             ,p_module   => l_log_module);
145547       END IF;
145548    END IF;
145549 
145550 END LOOP;
145551 l_result := XLA_AE_LINES_PKG.InsertLines ;
145552 end loop;
145553 close line_cur;
145554 
145555 
145556 --
145557 -- insert headers into xla_ae_headers_gt table
145558 --
145559 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
145560 
145561 -- insert into errors table here.
145562 
145563 END LOOP;
145564 
145565 --
145566 -- 4865292
145567 --
145568 -- Compare g_hdr_extract_count with event count in
145569 -- CreateHeadersAndLines.
145570 --
145571 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
145572 
145573 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145574    trace (p_msg     => '# rows extracted from header extract objects '
145575                     || ' (running total): '
145576                     || g_hdr_extract_count
145577          ,p_level   => C_LEVEL_STATEMENT
145578          ,p_module  => l_log_module);
145579 END IF;
145580 
145581 CLOSE header_cur;
145582 --
145583 
145584 --
145585 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
145586    trace
145587       (p_msg      => 'END of EventClass_260'
145588       ,p_level    => C_LEVEL_PROCEDURE
145589       ,p_module   => l_log_module);
145590 END IF;
145591 --
145592 RETURN l_result;
145593 EXCEPTION
145594 WHEN xla_exceptions_pkg.application_exception THEN
145595    
145596 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
145597 
145598    
145599 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
145600 
145601    RAISE;
145602 
145603 WHEN NO_DATA_FOUND THEN
145604 
145605 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
145606 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
145607 
145608 FOR header_record IN header_cur
145609 LOOP
145610     l_array_header_events(header_record.event_id) := header_record.event_id;
145611 END LOOP;
145612 
145613 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
145614 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
145615 
145616 fnd_file.put_line(fnd_file.LOG, '                    ');
145617 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
145618 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
145619 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
145620 
145621 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
145622 LOOP
145623 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
145624 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
145625         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
145626 	END IF;
145627 END LOOP;
145628 
145629 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
145630 fnd_file.put_line(fnd_file.LOG, '                    ');
145631 
145632 
145633 xla_exceptions_pkg.raise_message
145634       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_260');
145635 
145636 
145637 WHEN OTHERS THEN
145638    xla_exceptions_pkg.raise_message
145639       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_260');
145640 END EventClass_260;
145641 --
145642 
145643 ---------------------------------------
145644 --
145645 -- PRIVATE PROCEDURE
145646 --         insert_sources_261
145647 --
145648 ----------------------------------------
145649 --
145650 PROCEDURE insert_sources_261(
145651                                 p_target_ledger_id       IN NUMBER
145652                               , p_language               IN VARCHAR2
145653                               , p_sla_ledger_id          IN NUMBER
145654                               , p_pad_start_date         IN DATE
145655                               , p_pad_end_date           IN DATE
145656                          )
145657 IS
145658 
145659 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'CON_INV_OWNR_TXFR_ALL';
145660 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'CON_INV_OWNR_TXFR';
145661 p_apps_owner                   VARCHAR2(30);
145662 l_log_module                   VARCHAR2(240);
145663 BEGIN
145664 IF g_log_enabled THEN
145665       l_log_module := C_DEFAULT_MODULE||'.insert_sources_261';
145666 END IF;
145667 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
145668 
145669       trace
145670          (p_msg      => 'BEGIN of insert_sources_261'
145671          ,p_level    => C_LEVEL_PROCEDURE
145672          ,p_module   => l_log_module);
145673 
145674 END IF;
145675 
145676 -- select APPS owner
145677 SELECT oracle_username
145678   INTO p_apps_owner
145679   FROM fnd_oracle_userid
145680  WHERE read_only_flag = 'U'
145681 ;
145682 
145683 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145684       trace
145685          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
145686                         ' - p_language = '||p_language||
145687                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
145688                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
145689                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
145690                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
145691          ,p_level    => C_LEVEL_STATEMENT
145692          ,p_module   => l_log_module);
145693 END IF;
145694 
145695 
145696 --
145697 INSERT INTO xla_diag_sources --hdr2
145698 (
145699         event_id
145700       , ledger_id
145701       , sla_ledger_id
145702       , description_language
145703       , object_name
145704       , object_type_code
145705       , line_number
145706       , source_application_id
145707       , source_type_code
145708       , source_code
145709       , source_value
145710       , source_meaning
145711       , created_by
145712       , creation_date
145713       , last_update_date
145714       , last_updated_by
145715       , last_update_login
145716       , program_update_date
145717       , program_application_id
145718       , program_id
145719       , request_id
145720 )
145721 SELECT
145722         event_id
145723       , p_target_ledger_id
145724       , p_sla_ledger_id
145725       , p_language
145726       , object_name
145727       , object_type_code
145728       , line_number
145729       , source_application_id
145730       , source_type_code
145731       , source_code
145732       , SUBSTR(source_value ,1,1996)
145733       , SUBSTR(source_meaning ,1,200)
145734       , xla_environment_pkg.g_Usr_Id
145735       , TRUNC(SYSDATE)
145736       , TRUNC(SYSDATE)
145737       , xla_environment_pkg.g_Usr_Id
145738       , xla_environment_pkg.g_Login_Id
145739       , TRUNC(SYSDATE)
145740       , xla_environment_pkg.g_Prog_Appl_Id
145741       , xla_environment_pkg.g_Prog_Id
145742       , xla_environment_pkg.g_Req_Id
145743   FROM (
145744        SELECT xet.event_id                  event_id
145745             , 0                          line_number
145746             , CASE r
145747                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
145748                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
145749                 
145750                ELSE null
145751               END                           object_name
145752             , CASE r
145753                 WHEN 1 THEN 'HEADER' 
145754                 WHEN 2 THEN 'HEADER' 
145755                 
145756                 ELSE null
145757               END                           object_type_code
145758             , CASE r
145759                 WHEN 1 THEN '707' 
145760                 WHEN 2 THEN '707' 
145761                 
145762                 ELSE null
145763               END                           source_application_id
145764             , 'S'             source_type_code
145765             , CASE r
145766                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
145767                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
145768                 
145769                 ELSE null
145770               END                           source_code
145771             , CASE r
145772                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
145773                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
145774                 
145775                 ELSE null
145776               END                           source_value
145777             , CASE r
145778                 WHEN 1 THEN fvl12.meaning
145779                 WHEN 2 THEN fvl38.meaning
145780                 
145781                 ELSE null
145782               END               source_meaning
145783          FROM xla_events_gt     xet  
145784       , CST_XLA_INV_HEADERS_V  h1
145785   , fnd_lookup_values    fvl12
145786   , fnd_lookup_values    fvl38
145787              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
145788          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
145789            AND xet.event_class_code = C_EVENT_CLASS_CODE
145790               AND h1.event_id = xet.event_id
145791    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
145792   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
145793   AND fvl12.view_application_id(+) = 700
145794   AND fvl12.language(+)            = USERENV('LANG')
145795      AND fvl38.lookup_type(+)         = 'YES_NO'
145796   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
145797   AND fvl38.view_application_id(+) = 0
145798   AND fvl38.language(+)            = USERENV('LANG')
145799   
145800 )
145801 ;
145802 --
145803 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145804 
145805       trace
145806          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
145807          ,p_level    => C_LEVEL_STATEMENT
145808          ,p_module   => l_log_module);
145809 
145810 END IF;
145811 --
145812 
145813 
145814 
145815 --
145816 INSERT INTO xla_diag_sources  --line2
145817 (
145818         event_id
145819       , ledger_id
145820       , sla_ledger_id
145821       , description_language
145822       , object_name
145823       , object_type_code
145824       , line_number
145825       , source_application_id
145826       , source_type_code
145827       , source_code
145828       , source_value
145829       , source_meaning
145830       , created_by
145831       , creation_date
145832       , last_update_date
145833       , last_updated_by
145834       , last_update_login
145835       , program_update_date
145836       , program_application_id
145837       , program_id
145838       , request_id
145839 )
145840 SELECT  event_id
145841       , p_target_ledger_id
145842       , p_sla_ledger_id
145843       , p_language
145844       , object_name
145845       , object_type_code
145846       , line_number
145847       , source_application_id
145848       , source_type_code
145849       , source_code
145850       , SUBSTR(source_value,1,1996)
145851       , SUBSTR(source_meaning ,1,200)
145852       , xla_environment_pkg.g_Usr_Id
145853       , TRUNC(SYSDATE)
145854       , TRUNC(SYSDATE)
145855       , xla_environment_pkg.g_Usr_Id
145856       , xla_environment_pkg.g_Login_Id
145857       , TRUNC(SYSDATE)
145858       , xla_environment_pkg.g_Prog_Appl_Id
145859       , xla_environment_pkg.g_Prog_Id
145860       , xla_environment_pkg.g_Req_Id
145861   FROM (
145862        SELECT xet.event_id                  event_id
145863             , l2.line_number                 line_number
145864             , CASE r
145865                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
145866                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
145867                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
145868                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
145869                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
145870                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
145871                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
145872                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
145873                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
145874                 
145875                ELSE null
145876               END                           object_name
145877             , CASE r
145878                 WHEN 1 THEN 'LINE' 
145879                 WHEN 2 THEN 'LINE' 
145880                 WHEN 3 THEN 'LINE' 
145881                 WHEN 4 THEN 'LINE' 
145882                 WHEN 5 THEN 'LINE' 
145883                 WHEN 6 THEN 'LINE' 
145884                 WHEN 7 THEN 'LINE' 
145885                 WHEN 8 THEN 'LINE' 
145886                 WHEN 9 THEN 'LINE' 
145887                 
145888                 ELSE null
145889               END                           object_type_code
145890             , CASE r
145891                 WHEN 1 THEN '707' 
145892                 WHEN 2 THEN '707' 
145893                 WHEN 3 THEN '707' 
145894                 WHEN 4 THEN '707' 
145895                 WHEN 5 THEN '707' 
145896                 WHEN 6 THEN '707' 
145897                 WHEN 7 THEN '707' 
145898                 WHEN 8 THEN '707' 
145899                 WHEN 9 THEN '707' 
145900                 
145901                 ELSE null
145902               END                           source_application_id
145903             , 'S'             source_type_code
145904             , CASE r
145905                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
145906                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
145907                 WHEN 3 THEN 'CURRENCY_CODE' 
145908                 WHEN 4 THEN 'ENTERED_AMOUNT' 
145909                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
145910                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
145911                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
145912                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
145913                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
145914                 
145915                 ELSE null
145916               END                           source_code
145917             , CASE r
145918                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
145919                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
145920                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
145921                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
145922                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
145923                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
145924                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
145925                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
145926                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
145927                 
145928                 ELSE null
145929               END                           source_value
145930             , null              source_meaning
145931          FROM  xla_events_gt     xet  
145932         , CST_XLA_INV_LINES_V  l2
145933             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
145934         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
145935           AND xet.event_class_code = C_EVENT_CLASS_CODE
145936             AND l2.event_id          = xet.event_id
145937 
145938 )
145939 ;
145940 --
145941 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145942 
145943       trace
145944          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
145945          ,p_level    => C_LEVEL_STATEMENT
145946          ,p_module   => l_log_module);
145947 
145948 END IF;
145949 
145950 
145951 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
145952       trace
145953          (p_msg      => 'END of insert_sources_261'
145954          ,p_level    => C_LEVEL_PROCEDURE
145955          ,p_module   => l_log_module);
145956 END IF;
145957 EXCEPTION
145958   WHEN xla_exceptions_pkg.application_exception THEN
145959       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
145960             trace
145961                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
145962                ,p_level    => C_LEVEL_EXCEPTION
145963                ,p_module   => l_log_module);
145964       END IF;
145965       RAISE;
145966   WHEN OTHERS THEN
145967       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
145968             trace
145969                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
145970                ,p_level    => C_LEVEL_EXCEPTION
145971                ,p_module   => l_log_module);
145972        END IF;
145973        xla_exceptions_pkg.raise_message
145974            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_261');
145975 END insert_sources_261;
145976 --
145977 
145978 ---------------------------------------
145979 --
145980 -- PRIVATE FUNCTION
145981 --         EventClass_261
145982 --
145983 ----------------------------------------
145984 --
145985 FUNCTION EventClass_261
145986        (p_application_id         IN NUMBER
145987        ,p_base_ledger_id         IN NUMBER
145988        ,p_target_ledger_id       IN NUMBER
145989        ,p_language               IN VARCHAR2
145990        ,p_currency_code          IN VARCHAR2
145991        ,p_sla_ledger_id          IN NUMBER
145992        ,p_pad_start_date         IN DATE
145993        ,p_pad_end_date           IN DATE
145994        ,p_primary_ledger_id      IN NUMBER)
145995 RETURN BOOLEAN IS
145996 --
145997 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'CON_INV_OWNR_TXFR_ALL';
145998 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'CON_INV_OWNR_TXFR';
145999 
146000 l_calculate_acctd_flag   VARCHAR2(1) :='N';
146001 l_calculate_g_l_flag     VARCHAR2(1) :='N';
146002 --
146003 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146004 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146005 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
146006 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
146007 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146008 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
146009 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
146010 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146011 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146012 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146013 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146014 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146015 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146016 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146017 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
146018 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
146019 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
146020 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
146021 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146022 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146023 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146024 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146025 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
146026 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
146027 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
146028 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
146029 
146030 l_event_id                             NUMBER;
146031 l_previous_event_id                    NUMBER;
146032 l_first_event_id                       NUMBER;
146033 l_last_event_id                        NUMBER;
146034 
146035 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
146036 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
146037 --
146038 --
146039 l_result                    BOOLEAN := TRUE;
146040 l_rows                      NUMBER  := 1000;
146041 l_event_type_name           VARCHAR2(80) := 'All';
146042 l_event_class_name          VARCHAR2(80) := 'Consigned Inventory Ownership Transfer';
146043 l_description               VARCHAR2(4000);
146044 l_transaction_reversal      NUMBER;
146045 l_ae_header_id              NUMBER;
146046 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
146047 l_log_module                VARCHAR2(240);
146048 --
146049 l_acct_reversal_source      VARCHAR2(30);
146050 l_trx_reversal_source       VARCHAR2(30);
146051 
146052 l_continue_with_lines       BOOLEAN := TRUE;
146053 --
146054 l_acc_rev_gl_date_source    DATE;                      -- 4262811
146055 --
146056 type t_array_event_id is table of number index by binary_integer;
146057 
146058 l_rec_array_event                    t_rec_array_event;
146059 l_null_rec_array_event               t_rec_array_event;
146060 l_array_ae_header_id                 xla_number_array_type;
146061 l_actual_flag                        VARCHAR2(1) := NULL;
146062 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
146063 l_balance_type_code                  VARCHAR2(1) :=NULL;
146064 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
146065 
146066 --
146067 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
146068 --
146069 
146070 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
146071 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
146072 
146073 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
146074 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
146075 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
146076 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
146077 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
146078 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
146079 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
146080 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
146081 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
146082 
146083 l_array_source_12              t_array_source_12;
146084 l_array_source_12_meaning      t_array_lookup_meaning;
146085 l_array_source_38              t_array_source_38;
146086 l_array_source_38_meaning      t_array_lookup_meaning;
146087 
146088 l_array_source_4      t_array_source_4;
146089 l_array_source_11      t_array_source_11;
146090 l_array_source_15      t_array_source_15;
146091 l_array_source_18      t_array_source_18;
146092 l_array_source_19      t_array_source_19;
146093 l_array_source_20      t_array_source_20;
146094 l_array_source_21      t_array_source_21;
146095 l_array_source_22      t_array_source_22;
146096 l_array_source_24      t_array_source_24;
146097 
146098 --
146099 CURSOR header_cur
146100 IS
146101 SELECT /*+ leading(xet) cardinality(xet,1) */
146102 -- Event Class Code: CON_INV_OWNR_TXFR
146103     xet.entity_id
146104    ,xet.legal_entity_id
146105    ,xet.entity_code
146106    ,xet.transaction_number
146107    ,xet.event_id
146108    ,xet.event_class_code
146109    ,xet.event_type_code
146110    ,xet.event_number
146111    ,xet.event_date
146112    ,xet.transaction_date
146113    ,xet.reference_num_1
146114    ,xet.reference_num_2
146115    ,xet.reference_num_3
146116    ,xet.reference_num_4
146117    ,xet.reference_char_1
146118    ,xet.reference_char_2
146119    ,xet.reference_char_3
146120    ,xet.reference_char_4
146121    ,xet.reference_date_1
146122    ,xet.reference_date_2
146123    ,xet.reference_date_3
146124    ,xet.reference_date_4
146125    ,xet.event_created_by
146126    ,xet.budgetary_control_flag 
146127   , h1.DISTRIBUTION_TYPE    source_12
146128   , fvl12.meaning   source_12_meaning
146129   , h1.TRANSFER_TO_GL_INDICATOR    source_38
146130   , fvl38.meaning   source_38_meaning
146131   FROM xla_events_gt     xet 
146132   , CST_XLA_INV_HEADERS_V  h1
146133   , fnd_lookup_values    fvl12
146134   , fnd_lookup_values    fvl38
146135  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
146136    and xet.event_class_code = C_EVENT_CLASS_CODE
146137    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
146138    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
146139   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
146140   AND fvl12.view_application_id(+) = 700
146141   AND fvl12.language(+)            = USERENV('LANG')
146142      AND fvl38.lookup_type(+)         = 'YES_NO'
146143   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
146144   AND fvl38.view_application_id(+) = 0
146145   AND fvl38.language(+)            = USERENV('LANG')
146146   
146147  ORDER BY event_id
146148 ;
146149 
146150 
146151 --
146152 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
146153 IS
146154 SELECT  /*+ leading(xet) cardinality(xet,1) */
146155 -- Event Class Code: CON_INV_OWNR_TXFR
146156     xet.entity_id
146157    ,xet.legal_entity_id
146158    ,xet.entity_code
146159    ,xet.transaction_number
146160    ,xet.event_id
146161    ,xet.event_class_code
146162    ,xet.event_type_code
146163    ,xet.event_number
146164    ,xet.event_date
146165    ,xet.transaction_date
146166    ,xet.reference_num_1
146167    ,xet.reference_num_2
146168    ,xet.reference_num_3
146169    ,xet.reference_num_4
146170    ,xet.reference_char_1
146171    ,xet.reference_char_2
146172    ,xet.reference_char_3
146173    ,xet.reference_char_4
146174    ,xet.reference_date_1
146175    ,xet.reference_date_2
146176    ,xet.reference_date_3
146177    ,xet.reference_date_4
146178    ,xet.event_created_by
146179    ,xet.budgetary_control_flag
146180  , l2.LINE_NUMBER  
146181   , l2.CODE_COMBINATION_ID    source_4
146182   , l2.DISTRIBUTION_IDENTIFIER    source_11
146183   , l2.CURRENCY_CODE    source_15
146184   , l2.ENTERED_AMOUNT    source_18
146185   , l2.CURRENCY_CONVERSION_DATE    source_19
146186   , l2.CURRENCY_CONVERSION_RATE    source_20
146187   , l2.CURRENCY_CONVERSION_TYPE    source_21
146188   , l2.ACCOUNTED_AMOUNT    source_22
146189   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
146190   FROM xla_events_gt     xet 
146191   , CST_XLA_INV_LINES_V  l2
146192  WHERE xet.event_id between x_first_event_id and x_last_event_id
146193    and xet.event_date between p_pad_start_date and p_pad_end_date
146194    and xet.event_class_code = C_EVENT_CLASS_CODE
146195    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
146196 ;
146197 
146198 --
146199 BEGIN
146200 IF g_log_enabled THEN
146201    l_log_module := C_DEFAULT_MODULE||'.EventClass_261';
146202 END IF;
146203 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
146204    trace
146205       (p_msg      => 'BEGIN of EventClass_261'
146206       ,p_level    => C_LEVEL_PROCEDURE
146207       ,p_module   => l_log_module);
146208 END IF;
146209 
146210 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146211    trace
146212       (p_msg      => 'p_application_id = '||p_application_id||
146213                      ' - p_base_ledger_id = '||p_base_ledger_id||
146214                      ' - p_target_ledger_id  = '||p_target_ledger_id||
146215                      ' - p_language = '||p_language||
146216                      ' - p_currency_code = '||p_currency_code||
146217                      ' - p_sla_ledger_id = '||p_sla_ledger_id
146218       ,p_level    => C_LEVEL_STATEMENT
146219       ,p_module   => l_log_module);
146220 END IF;
146221 --
146222 -- initialze arrays
146223 --
146224 g_array_event.DELETE;
146225 l_rec_array_event := l_null_rec_array_event;
146226 --
146227 --------------------------------------
146228 -- 4262811 Initialze MPA Line Number
146229 --------------------------------------
146230 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
146231 
146232 --
146233 
146234 --
146235 OPEN header_cur;
146236 --
146237 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146238    trace
146239    (p_msg      => 'SQL - FETCH header_cur'
146240    ,p_level    => C_LEVEL_STATEMENT
146241    ,p_module   => l_log_module);
146242 END IF;
146243 --
146244 LOOP
146245 FETCH header_cur BULK COLLECT INTO
146246         l_array_entity_id
146247       , l_array_legal_entity_id
146248       , l_array_entity_code
146249       , l_array_transaction_num
146250       , l_array_event_id
146251       , l_array_class_code
146252       , l_array_event_type
146253       , l_array_event_number
146254       , l_array_event_date
146255       , l_array_transaction_date
146256       , l_array_reference_num_1
146257       , l_array_reference_num_2
146258       , l_array_reference_num_3
146259       , l_array_reference_num_4
146260       , l_array_reference_char_1
146261       , l_array_reference_char_2
146262       , l_array_reference_char_3
146263       , l_array_reference_char_4
146264       , l_array_reference_date_1
146265       , l_array_reference_date_2
146266       , l_array_reference_date_3
146267       , l_array_reference_date_4
146268       , l_array_event_created_by
146269       , l_array_budgetary_control_flag 
146270       , l_array_source_12
146271       , l_array_source_12_meaning
146272       , l_array_source_38
146273       , l_array_source_38_meaning
146274       LIMIT l_rows;
146275 --
146276 IF (C_LEVEL_EVENT >= g_log_level) THEN
146277    trace
146278    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
146279    ,p_level    => C_LEVEL_EVENT
146280    ,p_module   => l_log_module);
146281 END IF;
146282 --
146283 EXIT WHEN l_array_entity_id.COUNT = 0;
146284 
146285 -- initialize arrays
146286 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
146287 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
146288 
146289 --
146290 -- Bug 4458708
146291 --
146292 XLA_AE_LINES_PKG.g_LineNumber := 0;
146293 
146294 
146295 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
146296 g_last_hdr_idx := l_array_event_id.LAST;
146297 --
146298 -- loop for the headers. Each iteration is for each header extract row
146299 -- fetched in header cursor
146300 --
146301 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
146302 
146303 --
146304 -- set event info as cache for other routines to refer event attributes
146305 --
146306 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
146307    (p_application_id           => p_application_id
146308    ,p_primary_ledger_id        => p_primary_ledger_id
146309    ,p_base_ledger_id           => p_base_ledger_id
146310    ,p_target_ledger_id         => p_target_ledger_id
146311    ,p_entity_id                => l_array_entity_id(hdr_idx)
146312    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
146313    ,p_entity_code              => l_array_entity_code(hdr_idx)
146314    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
146315    ,p_event_id                 => l_array_event_id(hdr_idx)
146316    ,p_event_class_code         => l_array_class_code(hdr_idx)
146317    ,p_event_type_code          => l_array_event_type(hdr_idx)
146318    ,p_event_number             => l_array_event_number(hdr_idx)
146319    ,p_event_date               => l_array_event_date(hdr_idx)
146320    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
146321    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
146322    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
146323    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
146324    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
146325    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
146326    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
146327    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
146328    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
146329    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
146330    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
146331    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
146332    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
146333    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
146334    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
146335 
146336 --
146337 -- set the status of entry to C_VALID (0)
146338 --
146339 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
146340 
146341 --
146342 -- initialize a row for ae header
146343 --
146344 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
146345 
146346 l_event_id := l_array_event_id(hdr_idx);
146347 
146348 --
146349 -- storing the hdr_idx for event. May be used by line cursor.
146350 --
146351 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
146352 
146353 --
146354 -- store sources from header extract. This can be improved to
146355 -- store only those sources from header extract that may be used in lines
146356 --
146357 
146358 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
146359 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
146360 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
146361 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
146362 
146363 --
146364 -- initilaize the status of ae headers for diffrent balance types
146365 -- the status is initialised to C_NOT_CREATED (2)
146366 --
146367 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
146368 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
146369 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
146370 
146371 --
146372 -- call api to validate and store accounting attributes for header
146373 --
146374 
146375 ------------------------------------------------------------
146376 -- Accrual Reversal : to get date for Standard Source (NONE)
146377 ------------------------------------------------------------
146378 l_acc_rev_gl_date_source := NULL;
146379 
146380      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
146381       l_rec_acct_attrs.array_date_value(1) := 
146382 xla_ae_sources_pkg.GetSystemSourceDate(
146383    p_source_code           => 'XLA_REFERENCE_DATE_1'
146384  , p_source_type_code      => 'Y'
146385  , p_source_application_id =>  602
146386 );
146387      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
146388       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
146389 
146390 
146391 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
146392 
146393 XLA_AE_HEADER_PKG.SetJeCategoryName;
146394 
146395 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
146396 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
146397 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
146398 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
146399 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
146400 
146401 
146402 -- No header level analytical criteria
146403 
146404 --
146405 --accounting attribute enhancement, bug 3612931
146406 --
146407 l_trx_reversal_source := SUBSTR(NULL, 1,30);
146408 
146409 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
146410    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
146411 
146412    xla_accounting_err_pkg.build_message
146413       (p_appli_s_name            => 'XLA'
146414       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
146415       ,p_token_1                 => 'ACCT_ATTR_NAME'
146416       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
146417       ,p_token_2                 => 'PRODUCT_NAME'
146418       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
146419       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
146420       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
146421       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
146422 
146423 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
146424    --
146425    -- following sets the accounting attributes needed to reverse
146426    -- accounting for a distributeion
146427    --
146428    xla_ae_lines_pkg.SetTrxReversalAttrs
146429       (p_event_id              => l_event_id
146430       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
146431       ,p_trx_reversal_source   => l_trx_reversal_source);
146432 
146433 END IF;
146434 
146435 
146436 ----------------------------------------------------------------
146437 -- 4262811 -  update the header statuses to invalid in need be
146438 ----------------------------------------------------------------
146439 --
146440 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
146441 
146442 
146443   -----------------------------------------------
146444   -- No accrual reversal for the event class/type
146445   -----------------------------------------------
146446 ----------------------------------------------------------------
146447 
146448 --
146449 -- this ends the header loop iteration for one bulk fetch
146450 --
146451 END LOOP;
146452 
146453 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
146454 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
146455 
146456 --
146457 -- insert dummy rows into lines gt table that were created due to
146458 -- transaction reversals
146459 --
146460 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
146461    l_result := XLA_AE_LINES_PKG.InsertLines;
146462 END IF;
146463 
146464 --
146465 -- reset the temp_line_num for each set of events fetched from header
146466 -- cursor rather than doing it for each new event in line cursor
146467 -- Bug 3939231
146468 --
146469 xla_ae_lines_pkg.g_temp_line_num := 0;
146470 
146471 
146472 
146473 --
146474 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
146475 --
146476 --
146477 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146478 
146479       trace
146480          (p_msg      => 'SQL - FETCH line_cur'
146481          ,p_level    => C_LEVEL_STATEMENT
146482          ,p_module   => l_log_module);
146483 
146484 END IF;
146485 --
146486 --
146487 LOOP
146488   --
146489   FETCH line_cur BULK COLLECT INTO
146490         l_array_entity_id
146491       , l_array_legal_entity_id
146492       , l_array_entity_code
146493       , l_array_transaction_num
146494       , l_array_event_id
146495       , l_array_class_code
146496       , l_array_event_type
146497       , l_array_event_number
146498       , l_array_event_date
146499       , l_array_transaction_date
146500       , l_array_reference_num_1
146501       , l_array_reference_num_2
146502       , l_array_reference_num_3
146503       , l_array_reference_num_4
146504       , l_array_reference_char_1
146505       , l_array_reference_char_2
146506       , l_array_reference_char_3
146507       , l_array_reference_char_4
146508       , l_array_reference_date_1
146509       , l_array_reference_date_2
146510       , l_array_reference_date_3
146511       , l_array_reference_date_4
146512       , l_array_event_created_by
146513       , l_array_budgetary_control_flag
146514       , l_array_extract_line_num 
146515       , l_array_source_4
146516       , l_array_source_11
146517       , l_array_source_15
146518       , l_array_source_18
146519       , l_array_source_19
146520       , l_array_source_20
146521       , l_array_source_21
146522       , l_array_source_22
146523       , l_array_source_24
146524       LIMIT l_rows;
146525 
146526   --
146527   IF (C_LEVEL_EVENT >= g_log_level) THEN
146528             trace
146529                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
146530                ,p_level    => C_LEVEL_EVENT
146531                ,p_module   => l_log_module);
146532   END IF;
146533   --
146534   EXIT WHEN l_array_entity_id.count = 0;
146535 
146536   XLA_AE_LINES_PKG.g_rec_lines := null;
146537 
146538 --
146539 -- Bug 4458708
146540 --
146541 XLA_AE_LINES_PKG.g_LineNumber := 0;
146542 --
146543 --
146544 
146545 FOR Idx IN 1..l_array_event_id.count LOOP
146546    --
146547    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
146548    --
146549    l_event_id := l_array_event_id(idx);  -- 5648433
146550 
146551    --
146552    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
146553    --
146554 
146555    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
146556              (g_array_event(l_event_id).array_value_num('header_index'))
146557          ,'N'
146558          ) <> 'Y'
146559    THEN
146560       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146561          trace
146562             (p_msg      => 'Trancaction revesal option is not Y '
146563             ,p_level    => C_LEVEL_STATEMENT
146564             ,p_module   => l_log_module);
146565       END IF;
146566 
146567 --
146568 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
146569 --
146570 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
146571 --
146572 -- set event info as cache for other routines to refer event attributes
146573 --
146574 
146575 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
146576    l_previous_event_id := l_event_id;
146577 
146578    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
146579       (p_application_id           => p_application_id
146580       ,p_primary_ledger_id        => p_primary_ledger_id
146581       ,p_base_ledger_id           => p_base_ledger_id
146582       ,p_target_ledger_id         => p_target_ledger_id
146583       ,p_entity_id                => l_array_entity_id(Idx)
146584       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
146585       ,p_entity_code              => l_array_entity_code(Idx)
146586       ,p_transaction_num          => l_array_transaction_num(Idx)
146587       ,p_event_id                 => l_array_event_id(Idx)
146588       ,p_event_class_code         => l_array_class_code(Idx)
146589       ,p_event_type_code          => l_array_event_type(Idx)
146590       ,p_event_number             => l_array_event_number(Idx)
146591       ,p_event_date               => l_array_event_date(Idx)
146592       ,p_transaction_date         => l_array_transaction_date(Idx)
146593       ,p_reference_num_1          => l_array_reference_num_1(Idx)
146594       ,p_reference_num_2          => l_array_reference_num_2(Idx)
146595       ,p_reference_num_3          => l_array_reference_num_3(Idx)
146596       ,p_reference_num_4          => l_array_reference_num_4(Idx)
146597       ,p_reference_char_1         => l_array_reference_char_1(Idx)
146598       ,p_reference_char_2         => l_array_reference_char_2(Idx)
146599       ,p_reference_char_3         => l_array_reference_char_3(Idx)
146600       ,p_reference_char_4         => l_array_reference_char_4(Idx)
146601       ,p_reference_date_1         => l_array_reference_date_1(Idx)
146602       ,p_reference_date_2         => l_array_reference_date_2(Idx)
146603       ,p_reference_date_3         => l_array_reference_date_3(Idx)
146604       ,p_reference_date_4         => l_array_reference_date_4(Idx)
146605       ,p_event_created_by         => l_array_event_created_by(Idx)
146606       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
146607        --
146608 END IF;
146609 
146610 
146611 
146612 --
146613 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
146614 
146615 l_acct_reversal_source := SUBSTR(NULL, 1,30);
146616 
146617 IF l_continue_with_lines THEN
146618    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
146619       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
146620 
146621       xla_accounting_err_pkg.build_message
146622          (p_appli_s_name            => 'XLA'
146623          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
146624          ,p_token_1                 => 'LINE_NUMBER'
146625          ,p_value_1                 => l_array_extract_line_num(Idx)
146626          ,p_token_2                 => 'PRODUCT_NAME'
146627          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
146628          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
146629          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
146630          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
146631 
146632    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
146633       --
146634       -- following sets the accounting attributes needed to reverse
146635       -- accounting for a distributeion
146636       --
146637 
146638       --
146639       -- 5217187
146640       --
146641       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
146642       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
146643                                        g_array_event(l_event_id).array_value_num('header_index'));
146644       --
146645       --
146646 
146647       -- No reversal code generated
146648 
146649       xla_ae_lines_pkg.SetAcctReversalAttrs
146650          (p_event_id             => l_event_id
146651          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
146652          ,p_calculate_acctd_flag => l_calculate_acctd_flag
146653          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
146654    END IF;
146655 
146656    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
146657        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
146658 
146659 --
146660 AcctLineType_6 (
146661  p_application_id  => p_application_id
146662  ,p_event_id     => l_event_id
146663  ,p_calculate_acctd_flag => l_calculate_acctd_flag
146664  ,p_calculate_g_l_flag => l_calculate_g_l_flag
146665  ,p_actual_flag => l_actual_flag
146666  ,p_balance_type_code => l_balance_type_code
146667  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
146668  
146669  , p_source_4 => l_array_source_4(Idx)
146670  , p_source_11 => l_array_source_11(Idx)
146671  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
146672  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
146673  , p_source_15 => l_array_source_15(Idx)
146674  , p_source_18 => l_array_source_18(Idx)
146675  , p_source_19 => l_array_source_19(Idx)
146676  , p_source_20 => l_array_source_20(Idx)
146677  , p_source_21 => l_array_source_21(Idx)
146678  , p_source_22 => l_array_source_22(Idx)
146679  , p_source_24 => l_array_source_24(Idx)
146680  );
146681 If(l_balance_type_code = 'A') THEN
146682   l_actual_gain_loss_ref := l_gain_or_loss_ref;
146683 END IF;
146684 
146685 --
146686 
146687 
146688 --
146689 AcctLineType_45 (
146690  p_application_id  => p_application_id
146691  ,p_event_id     => l_event_id
146692  ,p_calculate_acctd_flag => l_calculate_acctd_flag
146693  ,p_calculate_g_l_flag => l_calculate_g_l_flag
146694  ,p_actual_flag => l_actual_flag
146695  ,p_balance_type_code => l_balance_type_code
146696  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
146697  
146698  , p_source_4 => l_array_source_4(Idx)
146699  , p_source_11 => l_array_source_11(Idx)
146700  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
146701  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
146702  , p_source_15 => l_array_source_15(Idx)
146703  , p_source_18 => l_array_source_18(Idx)
146704  , p_source_19 => l_array_source_19(Idx)
146705  , p_source_20 => l_array_source_20(Idx)
146706  , p_source_21 => l_array_source_21(Idx)
146707  , p_source_22 => l_array_source_22(Idx)
146708  , p_source_24 => l_array_source_24(Idx)
146709  );
146710 If(l_balance_type_code = 'A') THEN
146711   l_actual_gain_loss_ref := l_gain_or_loss_ref;
146712 END IF;
146713 
146714 --
146715 
146716 
146717 --
146718 AcctLineType_155 (
146719  p_application_id  => p_application_id
146720  ,p_event_id     => l_event_id
146721  ,p_calculate_acctd_flag => l_calculate_acctd_flag
146722  ,p_calculate_g_l_flag => l_calculate_g_l_flag
146723  ,p_actual_flag => l_actual_flag
146724  ,p_balance_type_code => l_balance_type_code
146725  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
146726  
146727  , p_source_4 => l_array_source_4(Idx)
146728  , p_source_11 => l_array_source_11(Idx)
146729  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
146730  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
146731  , p_source_15 => l_array_source_15(Idx)
146732  , p_source_18 => l_array_source_18(Idx)
146733  , p_source_19 => l_array_source_19(Idx)
146734  , p_source_20 => l_array_source_20(Idx)
146735  , p_source_21 => l_array_source_21(Idx)
146736  , p_source_22 => l_array_source_22(Idx)
146737  , p_source_24 => l_array_source_24(Idx)
146738  );
146739 If(l_balance_type_code = 'A') THEN
146740   l_actual_gain_loss_ref := l_gain_or_loss_ref;
146741 END IF;
146742 
146743 --
146744 
146745 
146746 --
146747 AcctLineType_164 (
146748  p_application_id  => p_application_id
146749  ,p_event_id     => l_event_id
146750  ,p_calculate_acctd_flag => l_calculate_acctd_flag
146751  ,p_calculate_g_l_flag => l_calculate_g_l_flag
146752  ,p_actual_flag => l_actual_flag
146753  ,p_balance_type_code => l_balance_type_code
146754  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
146755  
146756  , p_source_4 => l_array_source_4(Idx)
146757  , p_source_11 => l_array_source_11(Idx)
146758  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
146759  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
146760  , p_source_15 => l_array_source_15(Idx)
146761  , p_source_18 => l_array_source_18(Idx)
146762  , p_source_19 => l_array_source_19(Idx)
146763  , p_source_20 => l_array_source_20(Idx)
146764  , p_source_21 => l_array_source_21(Idx)
146765  , p_source_22 => l_array_source_22(Idx)
146766  , p_source_24 => l_array_source_24(Idx)
146767  );
146768 If(l_balance_type_code = 'A') THEN
146769   l_actual_gain_loss_ref := l_gain_or_loss_ref;
146770 END IF;
146771 
146772 --
146773 
146774 
146775 --
146776 AcctLineType_218 (
146777  p_application_id  => p_application_id
146778  ,p_event_id     => l_event_id
146779  ,p_calculate_acctd_flag => l_calculate_acctd_flag
146780  ,p_calculate_g_l_flag => l_calculate_g_l_flag
146781  ,p_actual_flag => l_actual_flag
146782  ,p_balance_type_code => l_balance_type_code
146783  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
146784  
146785  , p_source_4 => l_array_source_4(Idx)
146786  , p_source_11 => l_array_source_11(Idx)
146787  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
146788  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
146789  , p_source_15 => l_array_source_15(Idx)
146790  , p_source_18 => l_array_source_18(Idx)
146791  , p_source_19 => l_array_source_19(Idx)
146792  , p_source_20 => l_array_source_20(Idx)
146793  , p_source_21 => l_array_source_21(Idx)
146794  , p_source_22 => l_array_source_22(Idx)
146795  , p_source_24 => l_array_source_24(Idx)
146796  );
146797 If(l_balance_type_code = 'A') THEN
146798   l_actual_gain_loss_ref := l_gain_or_loss_ref;
146799 END IF;
146800 
146801 --
146802 
146803       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
146804       -- or secondary ledger that has different currency with primary
146805       -- or alc that is calculated by sla
146806       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
146807             (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'))
146808 
146809 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
146810 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
146811           AND (l_actual_flag = 'A')) THEN
146812         XLA_AE_LINES_PKG.CreateGainOrLossLines(
146813           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
146814          ,p_application_id   => p_application_id
146815          ,p_amb_context_code => 'DEFAULT'
146816          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
146817          ,p_event_class_code => C_EVENT_CLASS_CODE
146818          ,p_event_type_code  => C_EVENT_TYPE_CODE
146819          
146820          ,p_gain_ccid        => -1
146821          ,p_loss_ccid        => -1
146822 
146823          ,p_actual_flag      => l_actual_flag
146824          ,p_enc_flag         => null
146825          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
146826          ,p_enc_g_l_ref      => null
146827          );
146828       END IF;
146829    END IF;
146830 END IF;
146831 
146832    ELSE
146833       --
146834       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
146835       --
146836       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146837          trace
146838             (p_msg      => 'Trancaction revesal option is Y'
146839             ,p_level    => C_LEVEL_STATEMENT
146840             ,p_module   => l_log_module);
146841       END IF;
146842    END IF;
146843 
146844 END LOOP;
146845 l_result := XLA_AE_LINES_PKG.InsertLines ;
146846 end loop;
146847 close line_cur;
146848 
146849 
146850 --
146851 -- insert headers into xla_ae_headers_gt table
146852 --
146853 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
146854 
146855 -- insert into errors table here.
146856 
146857 END LOOP;
146858 
146859 --
146860 -- 4865292
146861 --
146862 -- Compare g_hdr_extract_count with event count in
146863 -- CreateHeadersAndLines.
146864 --
146865 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
146866 
146867 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146868    trace (p_msg     => '# rows extracted from header extract objects '
146869                     || ' (running total): '
146870                     || g_hdr_extract_count
146871          ,p_level   => C_LEVEL_STATEMENT
146872          ,p_module  => l_log_module);
146873 END IF;
146874 
146875 CLOSE header_cur;
146876 --
146877 
146878 --
146879 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
146880    trace
146881       (p_msg      => 'END of EventClass_261'
146882       ,p_level    => C_LEVEL_PROCEDURE
146883       ,p_module   => l_log_module);
146884 END IF;
146885 --
146886 RETURN l_result;
146887 EXCEPTION
146888 WHEN xla_exceptions_pkg.application_exception THEN
146889    
146890 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
146891 
146892    
146893 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
146894 
146895    RAISE;
146896 
146897 WHEN NO_DATA_FOUND THEN
146898 
146899 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
146900 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
146901 
146902 FOR header_record IN header_cur
146903 LOOP
146904     l_array_header_events(header_record.event_id) := header_record.event_id;
146905 END LOOP;
146906 
146907 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
146908 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
146909 
146910 fnd_file.put_line(fnd_file.LOG, '                    ');
146911 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
146912 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
146913 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
146914 
146915 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
146916 LOOP
146917 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
146918 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
146919         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
146920 	END IF;
146921 END LOOP;
146922 
146923 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
146924 fnd_file.put_line(fnd_file.LOG, '                    ');
146925 
146926 
146927 xla_exceptions_pkg.raise_message
146928       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_261');
146929 
146930 
146931 WHEN OTHERS THEN
146932    xla_exceptions_pkg.raise_message
146933       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_261');
146934 END EventClass_261;
146935 --
146936 
146937 ---------------------------------------
146938 --
146939 -- PRIVATE PROCEDURE
146940 --         insert_sources_262
146941 --
146942 ----------------------------------------
146943 --
146944 PROCEDURE insert_sources_262(
146945                                 p_target_ledger_id       IN NUMBER
146946                               , p_language               IN VARCHAR2
146947                               , p_sla_ledger_id          IN NUMBER
146948                               , p_pad_start_date         IN DATE
146949                               , p_pad_end_date           IN DATE
146950                          )
146951 IS
146952 
146953 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DELIVER_EXPENSE_ALL';
146954 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DELIVER_EXPENSE';
146955 p_apps_owner                   VARCHAR2(30);
146956 l_log_module                   VARCHAR2(240);
146957 BEGIN
146958 IF g_log_enabled THEN
146959       l_log_module := C_DEFAULT_MODULE||'.insert_sources_262';
146960 END IF;
146961 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
146962 
146963       trace
146964          (p_msg      => 'BEGIN of insert_sources_262'
146965          ,p_level    => C_LEVEL_PROCEDURE
146966          ,p_module   => l_log_module);
146967 
146968 END IF;
146969 
146970 -- select APPS owner
146971 SELECT oracle_username
146972   INTO p_apps_owner
146973   FROM fnd_oracle_userid
146974  WHERE read_only_flag = 'U'
146975 ;
146976 
146977 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146978       trace
146979          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
146980                         ' - p_language = '||p_language||
146981                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
146982                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
146983                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
146984                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
146985          ,p_level    => C_LEVEL_STATEMENT
146986          ,p_module   => l_log_module);
146987 END IF;
146988 
146989 
146990 --
146991 INSERT INTO xla_diag_sources --hdr2
146992 (
146993         event_id
146994       , ledger_id
146995       , sla_ledger_id
146996       , description_language
146997       , object_name
146998       , object_type_code
146999       , line_number
147000       , source_application_id
147001       , source_type_code
147002       , source_code
147003       , source_value
147004       , source_meaning
147005       , created_by
147006       , creation_date
147007       , last_update_date
147008       , last_updated_by
147009       , last_update_login
147010       , program_update_date
147011       , program_application_id
147012       , program_id
147013       , request_id
147014 )
147015 SELECT
147016         event_id
147017       , p_target_ledger_id
147018       , p_sla_ledger_id
147019       , p_language
147020       , object_name
147021       , object_type_code
147022       , line_number
147023       , source_application_id
147024       , source_type_code
147025       , source_code
147026       , SUBSTR(source_value ,1,1996)
147027       , SUBSTR(source_meaning ,1,200)
147028       , xla_environment_pkg.g_Usr_Id
147029       , TRUNC(SYSDATE)
147030       , TRUNC(SYSDATE)
147031       , xla_environment_pkg.g_Usr_Id
147032       , xla_environment_pkg.g_Login_Id
147033       , TRUNC(SYSDATE)
147034       , xla_environment_pkg.g_Prog_Appl_Id
147035       , xla_environment_pkg.g_Prog_Id
147036       , xla_environment_pkg.g_Req_Id
147037   FROM (
147038        SELECT xet.event_id                  event_id
147039             , 0                          line_number
147040             , CASE r
147041                WHEN 1 THEN 'CST_XLA_RCV_REF_V' 
147042                 WHEN 2 THEN 'CST_XLA_RCV_REF_V' 
147043                 WHEN 3 THEN 'CST_XLA_RCV_REF_V' 
147044                 WHEN 4 THEN 'CST_XLA_RCV_REF_V' 
147045                 WHEN 5 THEN 'CST_XLA_RCV_REF_V' 
147046                 WHEN 6 THEN 'CST_XLA_RCV_HEADERS_V' 
147047                 WHEN 7 THEN 'PO_DISTS_REF_V' 
147048                 WHEN 8 THEN 'CST_XLA_RCV_REF_V' 
147049                 WHEN 9 THEN 'CST_XLA_RCV_HEADERS_V' 
147050                 WHEN 10 THEN 'CST_XLA_RCV_REF_V' 
147051                 WHEN 11 THEN 'CST_XLA_RCV_HEADERS_V' 
147052                 WHEN 12 THEN 'CST_XLA_RCV_HEADERS_V' 
147053                 WHEN 13 THEN 'CST_XLA_RCV_HEADERS_V' 
147054                 WHEN 14 THEN 'PO_HEADERS_REF_V' 
147055                 WHEN 15 THEN 'PSA_CST_XLA_UPG_V' 
147056                 WHEN 16 THEN 'CST_XLA_RCV_HEADERS_V' 
147057                 
147058                ELSE null
147059               END                           object_name
147060             , CASE r
147061                 WHEN 1 THEN 'HEADER' 
147062                 WHEN 2 THEN 'HEADER' 
147063                 WHEN 3 THEN 'HEADER' 
147064                 WHEN 4 THEN 'HEADER' 
147065                 WHEN 5 THEN 'HEADER' 
147066                 WHEN 6 THEN 'HEADER' 
147067                 WHEN 7 THEN 'HEADER' 
147068                 WHEN 8 THEN 'HEADER' 
147069                 WHEN 9 THEN 'HEADER' 
147070                 WHEN 10 THEN 'HEADER' 
147071                 WHEN 11 THEN 'HEADER' 
147072                 WHEN 12 THEN 'HEADER' 
147073                 WHEN 13 THEN 'HEADER' 
147074                 WHEN 14 THEN 'HEADER' 
147075                 WHEN 15 THEN 'HEADER' 
147076                 WHEN 16 THEN 'HEADER' 
147077                 
147078                 ELSE null
147079               END                           object_type_code
147080             , CASE r
147081                 WHEN 1 THEN '707' 
147082                 WHEN 2 THEN '707' 
147083                 WHEN 3 THEN '707' 
147084                 WHEN 4 THEN '707' 
147085                 WHEN 5 THEN '707' 
147086                 WHEN 6 THEN '707' 
147087                 WHEN 7 THEN '201' 
147088                 WHEN 8 THEN '707' 
147089                 WHEN 9 THEN '707' 
147090                 WHEN 10 THEN '707' 
147091                 WHEN 11 THEN '707' 
147092                 WHEN 12 THEN '707' 
147093                 WHEN 13 THEN '707' 
147094                 WHEN 14 THEN '201' 
147095                 WHEN 15 THEN '707' 
147096                 WHEN 16 THEN '707' 
147097                 
147098                 ELSE null
147099               END                           source_application_id
147100             , 'S'             source_type_code
147101             , CASE r
147102                 WHEN 1 THEN 'APPLIED_TO_APPL_ID' 
147103                 WHEN 2 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
147104                 WHEN 3 THEN 'APPLIED_TO_ENTITY_CODE' 
147105                 WHEN 4 THEN 'PO_DISTRIBUTION_ID' 
147106                 WHEN 5 THEN 'APPLIED_TO_PO_DOC_ID' 
147107                 WHEN 6 THEN 'DISTRIBUTION_TYPE' 
147108                 WHEN 7 THEN 'PO_BUDGET_ACCOUNT' 
147109                 WHEN 8 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
147110                 WHEN 9 THEN 'CURRENCY_CODE' 
147111                 WHEN 10 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
147112                 WHEN 11 THEN 'CURRENCY_CONVERSION_DATE' 
147113                 WHEN 12 THEN 'CURRENCY_CONVERSION_RATE' 
147114                 WHEN 13 THEN 'CURRENCY_CONVERSION_TYPE' 
147115                 WHEN 14 THEN 'PURCH_ENCUMBRANCE_TYPE_ID' 
147116                 WHEN 15 THEN 'CST_ENCUM_UPG_OPTION' 
147117                 WHEN 16 THEN 'TRANSFER_TO_GL_INDICATOR' 
147118                 
147119                 ELSE null
147120               END                           source_code
147121             , CASE r
147122                 WHEN 1 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
147123                 WHEN 2 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
147124                 WHEN 3 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
147125                 WHEN 4 THEN TO_CHAR(h3.PO_DISTRIBUTION_ID)
147126                 WHEN 5 THEN TO_CHAR(h3.APPLIED_TO_PO_DOC_ID)
147127                 WHEN 6 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
147128                 WHEN 7 THEN TO_CHAR(h4.PO_BUDGET_ACCOUNT)
147129                 WHEN 8 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
147130                 WHEN 9 THEN TO_CHAR(h1.CURRENCY_CODE)
147131                 WHEN 10 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
147132                 WHEN 11 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
147133                 WHEN 12 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
147134                 WHEN 13 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
147135                 WHEN 14 THEN TO_CHAR(h5.PURCH_ENCUMBRANCE_TYPE_ID)
147136                 WHEN 15 THEN TO_CHAR(h6.CST_ENCUM_UPG_OPTION)
147137                 WHEN 16 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
147138                 
147139                 ELSE null
147140               END                           source_value
147141             , CASE r
147142                 WHEN 6 THEN fvl12.meaning
147143                 WHEN 16 THEN fvl38.meaning
147144                 
147145                 ELSE null
147146               END               source_meaning
147147          FROM xla_events_gt     xet  
147148       , CST_XLA_RCV_HEADERS_V  h1
147149       , CST_XLA_RCV_REF_V  h3
147150       , PO_DISTS_REF_V  h4
147151       , PO_HEADERS_REF_V  h5
147152       , PSA_CST_XLA_UPG_V  h6
147153   , fnd_lookup_values    fvl12
147154   , fnd_lookup_values    fvl38
147155              ,(select rownum r from all_objects where rownum <= 16 and owner = p_apps_owner)
147156          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
147157            AND xet.event_class_code = C_EVENT_CLASS_CODE
147158               AND h1.event_id = xet.event_id
147159  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 fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
147160   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
147161   AND fvl12.view_application_id(+) = 700
147162   AND fvl12.language(+)            = USERENV('LANG')
147163      AND fvl38.lookup_type(+)         = 'YES_NO'
147164   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
147165   AND fvl38.view_application_id(+) = 0
147166   AND fvl38.language(+)            = USERENV('LANG')
147167   
147168 )
147169 ;
147170 --
147171 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147172 
147173       trace
147174          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
147175          ,p_level    => C_LEVEL_STATEMENT
147176          ,p_module   => l_log_module);
147177 
147178 END IF;
147179 --
147180 
147181 
147182 
147183 --
147184 INSERT INTO xla_diag_sources  --line2
147185 (
147186         event_id
147187       , ledger_id
147188       , sla_ledger_id
147189       , description_language
147190       , object_name
147191       , object_type_code
147192       , line_number
147193       , source_application_id
147194       , source_type_code
147195       , source_code
147196       , source_value
147197       , source_meaning
147198       , created_by
147199       , creation_date
147200       , last_update_date
147201       , last_updated_by
147202       , last_update_login
147203       , program_update_date
147204       , program_application_id
147205       , program_id
147206       , request_id
147207 )
147208 SELECT  event_id
147209       , p_target_ledger_id
147210       , p_sla_ledger_id
147211       , p_language
147212       , object_name
147213       , object_type_code
147214       , line_number
147215       , source_application_id
147216       , source_type_code
147217       , source_code
147218       , SUBSTR(source_value,1,1996)
147219       , SUBSTR(source_meaning ,1,200)
147220       , xla_environment_pkg.g_Usr_Id
147221       , TRUNC(SYSDATE)
147222       , TRUNC(SYSDATE)
147223       , xla_environment_pkg.g_Usr_Id
147224       , xla_environment_pkg.g_Login_Id
147225       , TRUNC(SYSDATE)
147226       , xla_environment_pkg.g_Prog_Appl_Id
147227       , xla_environment_pkg.g_Prog_Id
147228       , xla_environment_pkg.g_Req_Id
147229   FROM (
147230        SELECT xet.event_id                  event_id
147231             , l2.line_number                 line_number
147232             , CASE r
147233                WHEN 1 THEN 'CST_XLA_RCV_LINES_V' 
147234                 WHEN 2 THEN 'CST_XLA_RCV_LINES_V' 
147235                 WHEN 3 THEN 'CST_XLA_RCV_LINES_V' 
147236                 WHEN 4 THEN 'CST_XLA_RCV_LINES_V' 
147237                 WHEN 5 THEN 'CST_XLA_RCV_LINES_V' 
147238                 
147239                ELSE null
147240               END                           object_name
147241             , CASE r
147242                 WHEN 1 THEN 'LINE' 
147243                 WHEN 2 THEN 'LINE' 
147244                 WHEN 3 THEN 'LINE' 
147245                 WHEN 4 THEN 'LINE' 
147246                 WHEN 5 THEN 'LINE' 
147247                 
147248                 ELSE null
147249               END                           object_type_code
147250             , CASE r
147251                 WHEN 1 THEN '707' 
147252                 WHEN 2 THEN '707' 
147253                 WHEN 3 THEN '707' 
147254                 WHEN 4 THEN '707' 
147255                 WHEN 5 THEN '707' 
147256                 
147257                 ELSE null
147258               END                           source_application_id
147259             , 'S'             source_type_code
147260             , CASE r
147261                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
147262                 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE' 
147263                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
147264                 WHEN 4 THEN 'ENTERED_AMOUNT' 
147265                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
147266                 
147267                 ELSE null
147268               END                           source_code
147269             , CASE r
147270                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
147271                 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
147272                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
147273                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
147274                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
147275                 
147276                 ELSE null
147277               END                           source_value
147278             , null              source_meaning
147279          FROM  xla_events_gt     xet  
147280         , CST_XLA_RCV_LINES_V  l2
147281             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
147282         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
147283           AND xet.event_class_code = C_EVENT_CLASS_CODE
147284             AND l2.event_id          = xet.event_id
147285 
147286 )
147287 ;
147288 --
147289 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147290 
147291       trace
147292          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
147293          ,p_level    => C_LEVEL_STATEMENT
147294          ,p_module   => l_log_module);
147295 
147296 END IF;
147297 
147298 
147299 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
147300       trace
147301          (p_msg      => 'END of insert_sources_262'
147302          ,p_level    => C_LEVEL_PROCEDURE
147303          ,p_module   => l_log_module);
147304 END IF;
147305 EXCEPTION
147306   WHEN xla_exceptions_pkg.application_exception THEN
147307       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
147308             trace
147309                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
147310                ,p_level    => C_LEVEL_EXCEPTION
147311                ,p_module   => l_log_module);
147312       END IF;
147313       RAISE;
147314   WHEN OTHERS THEN
147315       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
147316             trace
147317                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
147318                ,p_level    => C_LEVEL_EXCEPTION
147319                ,p_module   => l_log_module);
147320        END IF;
147321        xla_exceptions_pkg.raise_message
147322            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_262');
147323 END insert_sources_262;
147324 --
147325 
147326 ---------------------------------------
147327 --
147328 -- PRIVATE FUNCTION
147329 --         EventClass_262
147330 --
147331 ----------------------------------------
147332 --
147333 FUNCTION EventClass_262
147334        (p_application_id         IN NUMBER
147335        ,p_base_ledger_id         IN NUMBER
147336        ,p_target_ledger_id       IN NUMBER
147337        ,p_language               IN VARCHAR2
147338        ,p_currency_code          IN VARCHAR2
147339        ,p_sla_ledger_id          IN NUMBER
147340        ,p_pad_start_date         IN DATE
147341        ,p_pad_end_date           IN DATE
147342        ,p_primary_ledger_id      IN NUMBER)
147343 RETURN BOOLEAN IS
147344 --
147345 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DELIVER_EXPENSE_ALL';
147346 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DELIVER_EXPENSE';
147347 
147348 l_calculate_acctd_flag   VARCHAR2(1) :='N';
147349 l_calculate_g_l_flag     VARCHAR2(1) :='N';
147350 --
147351 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147352 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147353 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
147354 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
147355 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147356 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
147357 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
147358 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147359 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
147360 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
147361 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147362 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147363 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147364 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147365 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
147366 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
147367 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
147368 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
147369 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
147370 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
147371 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
147372 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
147373 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
147374 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
147375 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
147376 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
147377 
147378 l_event_id                             NUMBER;
147379 l_previous_event_id                    NUMBER;
147380 l_first_event_id                       NUMBER;
147381 l_last_event_id                        NUMBER;
147382 
147383 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
147384 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
147385 --
147386 --
147387 l_result                    BOOLEAN := TRUE;
147388 l_rows                      NUMBER  := 1000;
147389 l_event_type_name           VARCHAR2(80) := 'All';
147390 l_event_class_name          VARCHAR2(80) := 'Delivery to Expense Destination';
147391 l_description               VARCHAR2(4000);
147392 l_transaction_reversal      NUMBER;
147393 l_ae_header_id              NUMBER;
147394 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
147395 l_log_module                VARCHAR2(240);
147396 --
147397 l_acct_reversal_source      VARCHAR2(30);
147398 l_trx_reversal_source       VARCHAR2(30);
147399 
147400 l_continue_with_lines       BOOLEAN := TRUE;
147401 --
147402 l_acc_rev_gl_date_source    DATE;                      -- 4262811
147403 --
147404 type t_array_event_id is table of number index by binary_integer;
147405 
147406 l_rec_array_event                    t_rec_array_event;
147407 l_null_rec_array_event               t_rec_array_event;
147408 l_array_ae_header_id                 xla_number_array_type;
147409 l_actual_flag                        VARCHAR2(1) := NULL;
147410 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
147411 l_balance_type_code                  VARCHAR2(1) :=NULL;
147412 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
147413 
147414 --
147415 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
147416 --
147417 
147418 TYPE t_array_source_6 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
147419 TYPE t_array_source_7 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
147420 TYPE t_array_source_8 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
147421 TYPE t_array_source_9 IS TABLE OF CST_XLA_RCV_REF_V.PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
147422 TYPE t_array_source_10 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
147423 TYPE t_array_source_12 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
147424 TYPE t_array_source_13 IS TABLE OF PO_DISTS_REF_V.PO_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
147425 TYPE t_array_source_14 IS TABLE OF CST_XLA_RCV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
147426 TYPE t_array_source_15 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
147427 TYPE t_array_source_16 IS TABLE OF CST_XLA_RCV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
147428 TYPE t_array_source_19 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
147429 TYPE t_array_source_20 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
147430 TYPE t_array_source_21 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
147431 TYPE t_array_source_23 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
147432 TYPE t_array_source_27 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
147433 TYPE t_array_source_38 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
147434 
147435 TYPE t_array_source_4 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
147436 TYPE t_array_source_5 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
147437 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
147438 TYPE t_array_source_18 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
147439 TYPE t_array_source_22 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
147440 
147441 l_array_source_6              t_array_source_6;
147442 l_array_source_7              t_array_source_7;
147443 l_array_source_8              t_array_source_8;
147444 l_array_source_9              t_array_source_9;
147445 l_array_source_10              t_array_source_10;
147446 l_array_source_12              t_array_source_12;
147447 l_array_source_12_meaning      t_array_lookup_meaning;
147448 l_array_source_13              t_array_source_13;
147449 l_array_source_14              t_array_source_14;
147450 l_array_source_15              t_array_source_15;
147451 l_array_source_16              t_array_source_16;
147452 l_array_source_19              t_array_source_19;
147453 l_array_source_20              t_array_source_20;
147454 l_array_source_21              t_array_source_21;
147455 l_array_source_23              t_array_source_23;
147456 l_array_source_27              t_array_source_27;
147457 l_array_source_38              t_array_source_38;
147458 l_array_source_38_meaning      t_array_lookup_meaning;
147459 
147460 l_array_source_4      t_array_source_4;
147461 l_array_source_5      t_array_source_5;
147462 l_array_source_11      t_array_source_11;
147463 l_array_source_18      t_array_source_18;
147464 l_array_source_22      t_array_source_22;
147465 
147466 --
147467 CURSOR header_cur
147468 IS
147469 SELECT /*+ leading(xet) cardinality(xet,1) */
147470 -- Event Class Code: DELIVER_EXPENSE
147471     xet.entity_id
147472    ,xet.legal_entity_id
147473    ,xet.entity_code
147474    ,xet.transaction_number
147475    ,xet.event_id
147476    ,xet.event_class_code
147477    ,xet.event_type_code
147478    ,xet.event_number
147479    ,xet.event_date
147480    ,xet.transaction_date
147481    ,xet.reference_num_1
147482    ,xet.reference_num_2
147483    ,xet.reference_num_3
147484    ,xet.reference_num_4
147485    ,xet.reference_char_1
147486    ,xet.reference_char_2
147487    ,xet.reference_char_3
147488    ,xet.reference_char_4
147489    ,xet.reference_date_1
147490    ,xet.reference_date_2
147491    ,xet.reference_date_3
147492    ,xet.reference_date_4
147493    ,xet.event_created_by
147494    ,xet.budgetary_control_flag 
147495   , h3.APPLIED_TO_APPL_ID    source_6
147496   , h3.APPLIED_TO_DIST_LINK_TYPE    source_7
147497   , h3.APPLIED_TO_ENTITY_CODE    source_8
147498   , h3.PO_DISTRIBUTION_ID    source_9
147499   , h3.APPLIED_TO_PO_DOC_ID    source_10
147500   , h1.DISTRIBUTION_TYPE    source_12
147501   , fvl12.meaning   source_12_meaning
147502   , h4.PO_BUDGET_ACCOUNT    source_13
147503   , h3.ENCUM_REVERSAL_AMOUNT_ENTERED    source_14
147504   , h1.CURRENCY_CODE    source_15
147505   , h3.ENCUMBRANCE_REVERSAL_AMOUNT    source_16
147506   , h1.CURRENCY_CONVERSION_DATE    source_19
147507   , h1.CURRENCY_CONVERSION_RATE    source_20
147508   , h1.CURRENCY_CONVERSION_TYPE    source_21
147509   , h5.PURCH_ENCUMBRANCE_TYPE_ID    source_23
147510   , h6.CST_ENCUM_UPG_OPTION    source_27
147511   , h1.TRANSFER_TO_GL_INDICATOR    source_38
147512   , fvl38.meaning   source_38_meaning
147513   FROM xla_events_gt     xet 
147514   , CST_XLA_RCV_HEADERS_V  h1
147515   , CST_XLA_RCV_REF_V  h3
147516   , PO_DISTS_REF_V  h4
147517   , PO_HEADERS_REF_V  h5
147518   , PSA_CST_XLA_UPG_V  h6
147519   , fnd_lookup_values    fvl12
147520   , fnd_lookup_values    fvl38
147521  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
147522    and xet.event_class_code = C_EVENT_CLASS_CODE
147523    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
147524  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 fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
147525   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
147526   AND fvl12.view_application_id(+) = 700
147527   AND fvl12.language(+)            = USERENV('LANG')
147528      AND fvl38.lookup_type(+)         = 'YES_NO'
147529   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
147530   AND fvl38.view_application_id(+) = 0
147531   AND fvl38.language(+)            = USERENV('LANG')
147532   
147533  ORDER BY event_id
147534 ;
147535 
147536 
147537 --
147538 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
147539 IS
147540 SELECT  /*+ leading(xet) cardinality(xet,1) */
147541 -- Event Class Code: DELIVER_EXPENSE
147542     xet.entity_id
147543    ,xet.legal_entity_id
147544    ,xet.entity_code
147545    ,xet.transaction_number
147546    ,xet.event_id
147547    ,xet.event_class_code
147548    ,xet.event_type_code
147549    ,xet.event_number
147550    ,xet.event_date
147551    ,xet.transaction_date
147552    ,xet.reference_num_1
147553    ,xet.reference_num_2
147554    ,xet.reference_num_3
147555    ,xet.reference_num_4
147556    ,xet.reference_char_1
147557    ,xet.reference_char_2
147558    ,xet.reference_char_3
147559    ,xet.reference_char_4
147560    ,xet.reference_date_1
147561    ,xet.reference_date_2
147562    ,xet.reference_date_3
147563    ,xet.reference_date_4
147564    ,xet.event_created_by
147565    ,xet.budgetary_control_flag
147566  , l2.LINE_NUMBER  
147567   , l2.CODE_COMBINATION_ID    source_4
147568   , l2.RCV_ACCOUNTING_LINE_TYPE    source_5
147569   , l2.DISTRIBUTION_IDENTIFIER    source_11
147570   , l2.ENTERED_AMOUNT    source_18
147571   , l2.ACCOUNTED_AMOUNT    source_22
147572   FROM xla_events_gt     xet 
147573   , CST_XLA_RCV_LINES_V  l2
147574  WHERE xet.event_id between x_first_event_id and x_last_event_id
147575    and xet.event_date between p_pad_start_date and p_pad_end_date
147576    and xet.event_class_code = C_EVENT_CLASS_CODE
147577    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
147578 ;
147579 
147580 --
147581 BEGIN
147582 IF g_log_enabled THEN
147583    l_log_module := C_DEFAULT_MODULE||'.EventClass_262';
147584 END IF;
147585 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
147586    trace
147587       (p_msg      => 'BEGIN of EventClass_262'
147588       ,p_level    => C_LEVEL_PROCEDURE
147589       ,p_module   => l_log_module);
147590 END IF;
147591 
147592 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147593    trace
147594       (p_msg      => 'p_application_id = '||p_application_id||
147595                      ' - p_base_ledger_id = '||p_base_ledger_id||
147596                      ' - p_target_ledger_id  = '||p_target_ledger_id||
147597                      ' - p_language = '||p_language||
147598                      ' - p_currency_code = '||p_currency_code||
147599                      ' - p_sla_ledger_id = '||p_sla_ledger_id
147600       ,p_level    => C_LEVEL_STATEMENT
147601       ,p_module   => l_log_module);
147602 END IF;
147603 --
147604 -- initialze arrays
147605 --
147606 g_array_event.DELETE;
147607 l_rec_array_event := l_null_rec_array_event;
147608 --
147609 --------------------------------------
147610 -- 4262811 Initialze MPA Line Number
147611 --------------------------------------
147612 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
147613 
147614 --
147615 
147616 --
147617 OPEN header_cur;
147618 --
147619 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147620    trace
147621    (p_msg      => 'SQL - FETCH header_cur'
147622    ,p_level    => C_LEVEL_STATEMENT
147623    ,p_module   => l_log_module);
147624 END IF;
147625 --
147626 LOOP
147627 FETCH header_cur BULK COLLECT INTO
147628         l_array_entity_id
147629       , l_array_legal_entity_id
147630       , l_array_entity_code
147631       , l_array_transaction_num
147632       , l_array_event_id
147633       , l_array_class_code
147634       , l_array_event_type
147635       , l_array_event_number
147636       , l_array_event_date
147637       , l_array_transaction_date
147638       , l_array_reference_num_1
147639       , l_array_reference_num_2
147640       , l_array_reference_num_3
147641       , l_array_reference_num_4
147642       , l_array_reference_char_1
147643       , l_array_reference_char_2
147644       , l_array_reference_char_3
147645       , l_array_reference_char_4
147646       , l_array_reference_date_1
147647       , l_array_reference_date_2
147648       , l_array_reference_date_3
147649       , l_array_reference_date_4
147650       , l_array_event_created_by
147651       , l_array_budgetary_control_flag 
147652       , l_array_source_6
147653       , l_array_source_7
147654       , l_array_source_8
147655       , l_array_source_9
147656       , l_array_source_10
147657       , l_array_source_12
147658       , l_array_source_12_meaning
147659       , l_array_source_13
147660       , l_array_source_14
147661       , l_array_source_15
147662       , l_array_source_16
147663       , l_array_source_19
147664       , l_array_source_20
147665       , l_array_source_21
147666       , l_array_source_23
147667       , l_array_source_27
147668       , l_array_source_38
147669       , l_array_source_38_meaning
147670       LIMIT l_rows;
147671 --
147672 IF (C_LEVEL_EVENT >= g_log_level) THEN
147673    trace
147674    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
147675    ,p_level    => C_LEVEL_EVENT
147676    ,p_module   => l_log_module);
147677 END IF;
147678 --
147679 EXIT WHEN l_array_entity_id.COUNT = 0;
147680 
147681 -- initialize arrays
147682 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
147683 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
147684 
147685 --
147686 -- Bug 4458708
147687 --
147688 XLA_AE_LINES_PKG.g_LineNumber := 0;
147689 
147690 
147691 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
147692 g_last_hdr_idx := l_array_event_id.LAST;
147693 --
147694 -- loop for the headers. Each iteration is for each header extract row
147695 -- fetched in header cursor
147696 --
147697 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
147698 
147699 --
147700 -- set event info as cache for other routines to refer event attributes
147701 --
147702 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
147703    (p_application_id           => p_application_id
147704    ,p_primary_ledger_id        => p_primary_ledger_id
147705    ,p_base_ledger_id           => p_base_ledger_id
147706    ,p_target_ledger_id         => p_target_ledger_id
147707    ,p_entity_id                => l_array_entity_id(hdr_idx)
147708    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
147709    ,p_entity_code              => l_array_entity_code(hdr_idx)
147710    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
147711    ,p_event_id                 => l_array_event_id(hdr_idx)
147712    ,p_event_class_code         => l_array_class_code(hdr_idx)
147713    ,p_event_type_code          => l_array_event_type(hdr_idx)
147714    ,p_event_number             => l_array_event_number(hdr_idx)
147715    ,p_event_date               => l_array_event_date(hdr_idx)
147716    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
147717    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
147718    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
147719    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
147720    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
147721    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
147722    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
147723    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
147724    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
147725    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
147726    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
147727    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
147728    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
147729    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
147730    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
147731 
147732 --
147733 -- set the status of entry to C_VALID (0)
147734 --
147735 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
147736 
147737 --
147738 -- initialize a row for ae header
147739 --
147740 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
147741 
147742 l_event_id := l_array_event_id(hdr_idx);
147743 
147744 --
147745 -- storing the hdr_idx for event. May be used by line cursor.
147746 --
147747 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
147748 
147749 --
147750 -- store sources from header extract. This can be improved to
147751 -- store only those sources from header extract that may be used in lines
147752 --
147753 
147754 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
147755 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
147756 g_array_event(l_event_id).array_value_char('source_8') := l_array_source_8(hdr_idx);
147757 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
147758 g_array_event(l_event_id).array_value_num('source_10') := l_array_source_10(hdr_idx);
147759 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
147760 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
147761 g_array_event(l_event_id).array_value_num('source_13') := l_array_source_13(hdr_idx);
147762 g_array_event(l_event_id).array_value_num('source_14') := l_array_source_14(hdr_idx);
147763 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
147764 g_array_event(l_event_id).array_value_num('source_16') := l_array_source_16(hdr_idx);
147765 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
147766 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
147767 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
147768 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
147769 g_array_event(l_event_id).array_value_char('source_27') := l_array_source_27(hdr_idx);
147770 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
147771 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
147772 
147773 --
147774 -- initilaize the status of ae headers for diffrent balance types
147775 -- the status is initialised to C_NOT_CREATED (2)
147776 --
147777 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
147778 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
147779 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
147780 
147781 --
147782 -- call api to validate and store accounting attributes for header
147783 --
147784 
147785 ------------------------------------------------------------
147786 -- Accrual Reversal : to get date for Standard Source (NONE)
147787 ------------------------------------------------------------
147788 l_acc_rev_gl_date_source := NULL;
147789 
147790      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
147791       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_23');
147792      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
147793       l_rec_acct_attrs.array_date_value(2) := 
147794 xla_ae_sources_pkg.GetSystemSourceDate(
147795    p_source_code           => 'XLA_REFERENCE_DATE_1'
147796  , p_source_type_code      => 'Y'
147797  , p_source_application_id =>  602
147798 );
147799      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
147800       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_38');
147801 
147802 
147803 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
147804 
147805 XLA_AE_HEADER_PKG.SetJeCategoryName;
147806 
147807 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
147808 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
147809 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
147810 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
147811 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
147812 
147813 
147814 -- No header level analytical criteria
147815 
147816 --
147817 --accounting attribute enhancement, bug 3612931
147818 --
147819 l_trx_reversal_source := SUBSTR(NULL, 1,30);
147820 
147821 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
147822    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
147823 
147824    xla_accounting_err_pkg.build_message
147825       (p_appli_s_name            => 'XLA'
147826       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
147827       ,p_token_1                 => 'ACCT_ATTR_NAME'
147828       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
147829       ,p_token_2                 => 'PRODUCT_NAME'
147830       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
147831       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
147832       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
147833       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
147834 
147835 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
147836    --
147837    -- following sets the accounting attributes needed to reverse
147838    -- accounting for a distributeion
147839    --
147840    xla_ae_lines_pkg.SetTrxReversalAttrs
147841       (p_event_id              => l_event_id
147842       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
147843       ,p_trx_reversal_source   => l_trx_reversal_source);
147844 
147845 END IF;
147846 
147847 
147848 ----------------------------------------------------------------
147849 -- 4262811 -  update the header statuses to invalid in need be
147850 ----------------------------------------------------------------
147851 --
147852 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
147853 
147854 
147855   -----------------------------------------------
147856   -- No accrual reversal for the event class/type
147857   -----------------------------------------------
147858 ----------------------------------------------------------------
147859 
147860 --
147861 -- this ends the header loop iteration for one bulk fetch
147862 --
147863 END LOOP;
147864 
147865 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
147866 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
147867 
147868 --
147869 -- insert dummy rows into lines gt table that were created due to
147870 -- transaction reversals
147871 --
147872 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
147873    l_result := XLA_AE_LINES_PKG.InsertLines;
147874 END IF;
147875 
147876 --
147877 -- reset the temp_line_num for each set of events fetched from header
147878 -- cursor rather than doing it for each new event in line cursor
147879 -- Bug 3939231
147880 --
147881 xla_ae_lines_pkg.g_temp_line_num := 0;
147882 
147883 
147884 
147885 --
147886 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
147887 --
147888 --
147889 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147890 
147891       trace
147892          (p_msg      => 'SQL - FETCH line_cur'
147893          ,p_level    => C_LEVEL_STATEMENT
147894          ,p_module   => l_log_module);
147895 
147896 END IF;
147897 --
147898 --
147899 LOOP
147900   --
147901   FETCH line_cur BULK COLLECT INTO
147902         l_array_entity_id
147903       , l_array_legal_entity_id
147904       , l_array_entity_code
147905       , l_array_transaction_num
147906       , l_array_event_id
147907       , l_array_class_code
147908       , l_array_event_type
147909       , l_array_event_number
147910       , l_array_event_date
147911       , l_array_transaction_date
147912       , l_array_reference_num_1
147913       , l_array_reference_num_2
147914       , l_array_reference_num_3
147915       , l_array_reference_num_4
147916       , l_array_reference_char_1
147917       , l_array_reference_char_2
147918       , l_array_reference_char_3
147919       , l_array_reference_char_4
147920       , l_array_reference_date_1
147921       , l_array_reference_date_2
147922       , l_array_reference_date_3
147923       , l_array_reference_date_4
147924       , l_array_event_created_by
147925       , l_array_budgetary_control_flag
147926       , l_array_extract_line_num 
147927       , l_array_source_4
147928       , l_array_source_5
147929       , l_array_source_11
147930       , l_array_source_18
147931       , l_array_source_22
147932       LIMIT l_rows;
147933 
147934   --
147935   IF (C_LEVEL_EVENT >= g_log_level) THEN
147936             trace
147937                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
147938                ,p_level    => C_LEVEL_EVENT
147939                ,p_module   => l_log_module);
147940   END IF;
147941   --
147942   EXIT WHEN l_array_entity_id.count = 0;
147943 
147944   XLA_AE_LINES_PKG.g_rec_lines := null;
147945 
147946 --
147947 -- Bug 4458708
147948 --
147949 XLA_AE_LINES_PKG.g_LineNumber := 0;
147950 --
147951 --
147952 
147953 FOR Idx IN 1..l_array_event_id.count LOOP
147954    --
147955    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
147956    --
147957    l_event_id := l_array_event_id(idx);  -- 5648433
147958 
147959    --
147960    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
147961    --
147962 
147963    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
147964              (g_array_event(l_event_id).array_value_num('header_index'))
147965          ,'N'
147966          ) <> 'Y'
147967    THEN
147968       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147969          trace
147970             (p_msg      => 'Trancaction revesal option is not Y '
147971             ,p_level    => C_LEVEL_STATEMENT
147972             ,p_module   => l_log_module);
147973       END IF;
147974 
147975 --
147976 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
147977 --
147978 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
147979 --
147980 -- set event info as cache for other routines to refer event attributes
147981 --
147982 
147983 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
147984    l_previous_event_id := l_event_id;
147985 
147986    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
147987       (p_application_id           => p_application_id
147988       ,p_primary_ledger_id        => p_primary_ledger_id
147989       ,p_base_ledger_id           => p_base_ledger_id
147990       ,p_target_ledger_id         => p_target_ledger_id
147991       ,p_entity_id                => l_array_entity_id(Idx)
147992       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
147993       ,p_entity_code              => l_array_entity_code(Idx)
147994       ,p_transaction_num          => l_array_transaction_num(Idx)
147995       ,p_event_id                 => l_array_event_id(Idx)
147996       ,p_event_class_code         => l_array_class_code(Idx)
147997       ,p_event_type_code          => l_array_event_type(Idx)
147998       ,p_event_number             => l_array_event_number(Idx)
147999       ,p_event_date               => l_array_event_date(Idx)
148000       ,p_transaction_date         => l_array_transaction_date(Idx)
148001       ,p_reference_num_1          => l_array_reference_num_1(Idx)
148002       ,p_reference_num_2          => l_array_reference_num_2(Idx)
148003       ,p_reference_num_3          => l_array_reference_num_3(Idx)
148004       ,p_reference_num_4          => l_array_reference_num_4(Idx)
148005       ,p_reference_char_1         => l_array_reference_char_1(Idx)
148006       ,p_reference_char_2         => l_array_reference_char_2(Idx)
148007       ,p_reference_char_3         => l_array_reference_char_3(Idx)
148008       ,p_reference_char_4         => l_array_reference_char_4(Idx)
148009       ,p_reference_date_1         => l_array_reference_date_1(Idx)
148010       ,p_reference_date_2         => l_array_reference_date_2(Idx)
148011       ,p_reference_date_3         => l_array_reference_date_3(Idx)
148012       ,p_reference_date_4         => l_array_reference_date_4(Idx)
148013       ,p_event_created_by         => l_array_event_created_by(Idx)
148014       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
148015        --
148016 END IF;
148017 
148018 
148019 
148020 --
148021 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
148022 
148023 l_acct_reversal_source := SUBSTR(NULL, 1,30);
148024 
148025 IF l_continue_with_lines THEN
148026    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
148027       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
148028 
148029       xla_accounting_err_pkg.build_message
148030          (p_appli_s_name            => 'XLA'
148031          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
148032          ,p_token_1                 => 'LINE_NUMBER'
148033          ,p_value_1                 => l_array_extract_line_num(Idx)
148034          ,p_token_2                 => 'PRODUCT_NAME'
148035          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
148036          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
148037          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
148038          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
148039 
148040    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
148041       --
148042       -- following sets the accounting attributes needed to reverse
148043       -- accounting for a distributeion
148044       --
148045 
148046       --
148047       -- 5217187
148048       --
148049       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
148050       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
148051                                        g_array_event(l_event_id).array_value_num('header_index'));
148052       --
148053       --
148054 
148055       -- No reversal code generated
148056 
148057       xla_ae_lines_pkg.SetAcctReversalAttrs
148058          (p_event_id             => l_event_id
148059          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
148060          ,p_calculate_acctd_flag => l_calculate_acctd_flag
148061          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
148062    END IF;
148063 
148064    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
148065        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
148066 
148067 --
148068 AcctLineType_12 (
148069  p_application_id  => p_application_id
148070  ,p_event_id     => l_event_id
148071  ,p_calculate_acctd_flag => l_calculate_acctd_flag
148072  ,p_calculate_g_l_flag => l_calculate_g_l_flag
148073  ,p_actual_flag => l_actual_flag
148074  ,p_balance_type_code => l_balance_type_code
148075  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
148076  
148077  , p_source_4 => l_array_source_4(Idx)
148078  , p_source_5 => l_array_source_5(Idx)
148079  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
148080  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
148081  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
148082  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
148083  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
148084  , p_source_11 => l_array_source_11(Idx)
148085  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
148086  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
148087  , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
148088  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
148089  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
148090  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
148091  , p_source_18 => l_array_source_18(Idx)
148092  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
148093  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
148094  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
148095  , p_source_22 => l_array_source_22(Idx)
148096  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
148097  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
148098  );
148099 If(l_balance_type_code = 'A') THEN
148100   l_actual_gain_loss_ref := l_gain_or_loss_ref;
148101 END IF;
148102 
148103 --
148104 
148105 
148106 --
148107 AcctLineType_241 (
148108  p_application_id  => p_application_id
148109  ,p_event_id     => l_event_id
148110  ,p_calculate_acctd_flag => l_calculate_acctd_flag
148111  ,p_calculate_g_l_flag => l_calculate_g_l_flag
148112  ,p_actual_flag => l_actual_flag
148113  ,p_balance_type_code => l_balance_type_code
148114  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
148115  
148116  , p_source_4 => l_array_source_4(Idx)
148117  , p_source_5 => l_array_source_5(Idx)
148118  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
148119  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
148120  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
148121  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
148122  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
148123  , p_source_11 => l_array_source_11(Idx)
148124  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
148125  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
148126  , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
148127  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
148128  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
148129  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
148130  , p_source_18 => l_array_source_18(Idx)
148131  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
148132  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
148133  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
148134  , p_source_22 => l_array_source_22(Idx)
148135  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
148136  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
148137  );
148138 If(l_balance_type_code = 'A') THEN
148139   l_actual_gain_loss_ref := l_gain_or_loss_ref;
148140 END IF;
148141 
148142 --
148143 
148144       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
148145       -- or secondary ledger that has different currency with primary
148146       -- or alc that is calculated by sla
148147       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
148148             (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'))
148149 
148150 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
148151 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
148152           AND (l_actual_flag = 'A')) THEN
148153         XLA_AE_LINES_PKG.CreateGainOrLossLines(
148154           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
148155          ,p_application_id   => p_application_id
148156          ,p_amb_context_code => 'DEFAULT'
148157          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
148158          ,p_event_class_code => C_EVENT_CLASS_CODE
148159          ,p_event_type_code  => C_EVENT_TYPE_CODE
148160          
148161          ,p_gain_ccid        => -1
148162          ,p_loss_ccid        => -1
148163 
148164          ,p_actual_flag      => l_actual_flag
148165          ,p_enc_flag         => null
148166          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
148167          ,p_enc_g_l_ref      => null
148168          );
148169       END IF;
148170    END IF;
148171 END IF;
148172 
148173    ELSE
148174       --
148175       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
148176       --
148177       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148178          trace
148179             (p_msg      => 'Trancaction revesal option is Y'
148180             ,p_level    => C_LEVEL_STATEMENT
148181             ,p_module   => l_log_module);
148182       END IF;
148183    END IF;
148184 
148185 END LOOP;
148186 l_result := XLA_AE_LINES_PKG.InsertLines ;
148187 end loop;
148188 close line_cur;
148189 
148190 
148191 --
148192 -- insert headers into xla_ae_headers_gt table
148193 --
148194 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
148195 
148196 -- insert into errors table here.
148197 
148198 END LOOP;
148199 
148200 --
148201 -- 4865292
148202 --
148203 -- Compare g_hdr_extract_count with event count in
148204 -- CreateHeadersAndLines.
148205 --
148206 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
148207 
148208 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148209    trace (p_msg     => '# rows extracted from header extract objects '
148210                     || ' (running total): '
148211                     || g_hdr_extract_count
148212          ,p_level   => C_LEVEL_STATEMENT
148213          ,p_module  => l_log_module);
148214 END IF;
148215 
148216 CLOSE header_cur;
148217 --
148218 
148219 --
148220 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
148221    trace
148222       (p_msg      => 'END of EventClass_262'
148223       ,p_level    => C_LEVEL_PROCEDURE
148224       ,p_module   => l_log_module);
148225 END IF;
148226 --
148227 RETURN l_result;
148228 EXCEPTION
148229 WHEN xla_exceptions_pkg.application_exception THEN
148230    
148231 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
148232 
148233    
148234 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
148235 
148236    RAISE;
148237 
148238 WHEN NO_DATA_FOUND THEN
148239 
148240 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
148241 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
148242 
148243 FOR header_record IN header_cur
148244 LOOP
148245     l_array_header_events(header_record.event_id) := header_record.event_id;
148246 END LOOP;
148247 
148248 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
148249 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
148250 
148251 fnd_file.put_line(fnd_file.LOG, '                    ');
148252 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
148253 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
148254 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
148255 
148256 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
148257 LOOP
148258 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
148259 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
148260         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
148261 	END IF;
148262 END LOOP;
148263 
148264 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
148265 fnd_file.put_line(fnd_file.LOG, '                    ');
148266 
148267 
148268 xla_exceptions_pkg.raise_message
148269       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_262');
148270 
148271 
148272 WHEN OTHERS THEN
148273    xla_exceptions_pkg.raise_message
148274       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_262');
148275 END EventClass_262;
148276 --
148277 
148278 ---------------------------------------
148279 --
148280 -- PRIVATE PROCEDURE
148281 --         insert_sources_263
148282 --
148283 ----------------------------------------
148284 --
148285 PROCEDURE insert_sources_263(
148286                                 p_target_ledger_id       IN NUMBER
148287                               , p_language               IN VARCHAR2
148288                               , p_sla_ledger_id          IN NUMBER
148289                               , p_pad_start_date         IN DATE
148290                               , p_pad_end_date           IN DATE
148291                          )
148292 IS
148293 
148294 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DIR_INTERORG_RCPT_ALL';
148295 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DIR_INTERORG_RCPT';
148296 p_apps_owner                   VARCHAR2(30);
148297 l_log_module                   VARCHAR2(240);
148298 BEGIN
148299 IF g_log_enabled THEN
148300       l_log_module := C_DEFAULT_MODULE||'.insert_sources_263';
148301 END IF;
148302 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
148303 
148304       trace
148305          (p_msg      => 'BEGIN of insert_sources_263'
148306          ,p_level    => C_LEVEL_PROCEDURE
148307          ,p_module   => l_log_module);
148308 
148309 END IF;
148310 
148311 -- select APPS owner
148312 SELECT oracle_username
148313   INTO p_apps_owner
148314   FROM fnd_oracle_userid
148315  WHERE read_only_flag = 'U'
148316 ;
148317 
148318 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148319       trace
148320          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
148321                         ' - p_language = '||p_language||
148322                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
148323                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
148324                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
148325                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
148326          ,p_level    => C_LEVEL_STATEMENT
148327          ,p_module   => l_log_module);
148328 END IF;
148329 
148330 
148331 --
148332 INSERT INTO xla_diag_sources --hdr2
148333 (
148334         event_id
148335       , ledger_id
148336       , sla_ledger_id
148337       , description_language
148338       , object_name
148339       , object_type_code
148340       , line_number
148341       , source_application_id
148342       , source_type_code
148343       , source_code
148344       , source_value
148345       , source_meaning
148346       , created_by
148347       , creation_date
148348       , last_update_date
148349       , last_updated_by
148350       , last_update_login
148351       , program_update_date
148352       , program_application_id
148353       , program_id
148354       , request_id
148355 )
148356 SELECT
148357         event_id
148358       , p_target_ledger_id
148359       , p_sla_ledger_id
148360       , p_language
148361       , object_name
148362       , object_type_code
148363       , line_number
148364       , source_application_id
148365       , source_type_code
148366       , source_code
148367       , SUBSTR(source_value ,1,1996)
148368       , SUBSTR(source_meaning ,1,200)
148369       , xla_environment_pkg.g_Usr_Id
148370       , TRUNC(SYSDATE)
148371       , TRUNC(SYSDATE)
148372       , xla_environment_pkg.g_Usr_Id
148373       , xla_environment_pkg.g_Login_Id
148374       , TRUNC(SYSDATE)
148375       , xla_environment_pkg.g_Prog_Appl_Id
148376       , xla_environment_pkg.g_Prog_Id
148377       , xla_environment_pkg.g_Req_Id
148378   FROM (
148379        SELECT xet.event_id                  event_id
148380             , 0                          line_number
148381             , CASE r
148382                WHEN 1 THEN 'CST_XLA_INV_REF_V' 
148383                 WHEN 2 THEN 'CST_XLA_INV_REF_V' 
148384                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
148385                 WHEN 4 THEN 'CST_XLA_INV_HEADERS_V' 
148386                 WHEN 5 THEN 'CST_XLA_INV_REF_V' 
148387                 WHEN 6 THEN 'CST_XLA_INV_REF_V' 
148388                 WHEN 7 THEN 'PSA_CST_XLA_UPG_V' 
148389                 WHEN 8 THEN 'CST_XLA_INV_REF_V' 
148390                 WHEN 9 THEN 'CST_XLA_INV_REF_V' 
148391                 WHEN 10 THEN 'PO_REQ_DISTS_REF_V' 
148392                 WHEN 11 THEN 'PO_REQ_HEADERS_REF_V' 
148393                 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V' 
148394                 
148395                ELSE null
148396               END                           object_name
148397             , CASE r
148398                 WHEN 1 THEN 'HEADER' 
148399                 WHEN 2 THEN 'HEADER' 
148400                 WHEN 3 THEN 'HEADER' 
148401                 WHEN 4 THEN 'HEADER' 
148402                 WHEN 5 THEN 'HEADER' 
148403                 WHEN 6 THEN 'HEADER' 
148404                 WHEN 7 THEN 'HEADER' 
148405                 WHEN 8 THEN 'HEADER' 
148406                 WHEN 9 THEN 'HEADER' 
148407                 WHEN 10 THEN 'HEADER' 
148408                 WHEN 11 THEN 'HEADER' 
148409                 WHEN 12 THEN 'HEADER' 
148410                 
148411                 ELSE null
148412               END                           object_type_code
148413             , CASE r
148414                 WHEN 1 THEN '707' 
148415                 WHEN 2 THEN '707' 
148416                 WHEN 3 THEN '707' 
148417                 WHEN 4 THEN '707' 
148418                 WHEN 5 THEN '707' 
148419                 WHEN 6 THEN '707' 
148420                 WHEN 7 THEN '707' 
148421                 WHEN 8 THEN '707' 
148422                 WHEN 9 THEN '707' 
148423                 WHEN 10 THEN '201' 
148424                 WHEN 11 THEN '201' 
148425                 WHEN 12 THEN '707' 
148426                 
148427                 ELSE null
148428               END                           source_application_id
148429             , 'S'             source_type_code
148430             , CASE r
148431                 WHEN 1 THEN 'APPLIED_TO_APPL_ID' 
148432                 WHEN 2 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
148433                 WHEN 3 THEN 'APPLIED_TO_ENTITY_CODE' 
148434                 WHEN 4 THEN 'DISTRIBUTION_TYPE' 
148435                 WHEN 5 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
148436                 WHEN 6 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
148437                 WHEN 7 THEN 'CST_ENCUM_UPG_OPTION' 
148438                 WHEN 8 THEN 'TXN_PO_DISTRIBUTION_ID' 
148439                 WHEN 9 THEN 'TXN_PO_HEADER_ID' 
148440                 WHEN 10 THEN 'REQ_BUDGET_ACCOUNT' 
148441                 WHEN 11 THEN 'REQ_ENCUMBRANCE_TYPE_ID' 
148442                 WHEN 12 THEN 'TRANSFER_TO_GL_INDICATOR' 
148443                 
148444                 ELSE null
148445               END                           source_code
148446             , CASE r
148447                 WHEN 1 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
148448                 WHEN 2 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
148449                 WHEN 3 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
148450                 WHEN 4 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
148451                 WHEN 5 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
148452                 WHEN 6 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
148453                 WHEN 7 THEN TO_CHAR(h6.CST_ENCUM_UPG_OPTION)
148454                 WHEN 8 THEN TO_CHAR(h3.TXN_PO_DISTRIBUTION_ID)
148455                 WHEN 9 THEN TO_CHAR(h3.TXN_PO_HEADER_ID)
148456                 WHEN 10 THEN TO_CHAR(h4.REQ_BUDGET_ACCOUNT)
148457                 WHEN 11 THEN TO_CHAR(h5.REQ_ENCUMBRANCE_TYPE_ID)
148458                 WHEN 12 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
148459                 
148460                 ELSE null
148461               END                           source_value
148462             , CASE r
148463                 WHEN 4 THEN fvl12.meaning
148464                 WHEN 12 THEN fvl38.meaning
148465                 
148466                 ELSE null
148467               END               source_meaning
148468          FROM xla_events_gt     xet  
148469       , CST_XLA_INV_HEADERS_V  h1
148470       , CST_XLA_INV_REF_V  h3
148471       , PO_REQ_DISTS_REF_V  h4
148472       , PO_REQ_HEADERS_REF_V  h5
148473       , PSA_CST_XLA_UPG_V  h6
148474   , fnd_lookup_values    fvl12
148475   , fnd_lookup_values    fvl38
148476              ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
148477          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
148478            AND xet.event_class_code = C_EVENT_CLASS_CODE
148479               AND h1.event_id = xet.event_id
148480  AND h3.ref_transaction_id = h1.transaction_id AND h3.bus_flow_req_dist_id=h4.req_distribution_id (+)  AND h3.bus_flow_req_id = h5.req_id (+)  AND h3.rcv_transaction_id = h6.transaction_id (+)    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
148481   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
148482   AND fvl12.view_application_id(+) = 700
148483   AND fvl12.language(+)            = USERENV('LANG')
148484      AND fvl38.lookup_type(+)         = 'YES_NO'
148485   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
148486   AND fvl38.view_application_id(+) = 0
148487   AND fvl38.language(+)            = USERENV('LANG')
148488   
148489 )
148490 ;
148491 --
148492 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148493 
148494       trace
148495          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
148496          ,p_level    => C_LEVEL_STATEMENT
148497          ,p_module   => l_log_module);
148498 
148499 END IF;
148500 --
148501 
148502 
148503 
148504 --
148505 INSERT INTO xla_diag_sources  --line2
148506 (
148507         event_id
148508       , ledger_id
148509       , sla_ledger_id
148510       , description_language
148511       , object_name
148512       , object_type_code
148513       , line_number
148514       , source_application_id
148515       , source_type_code
148516       , source_code
148517       , source_value
148518       , source_meaning
148519       , created_by
148520       , creation_date
148521       , last_update_date
148522       , last_updated_by
148523       , last_update_login
148524       , program_update_date
148525       , program_application_id
148526       , program_id
148527       , request_id
148528 )
148529 SELECT  event_id
148530       , p_target_ledger_id
148531       , p_sla_ledger_id
148532       , p_language
148533       , object_name
148534       , object_type_code
148535       , line_number
148536       , source_application_id
148537       , source_type_code
148538       , source_code
148539       , SUBSTR(source_value,1,1996)
148540       , SUBSTR(source_meaning ,1,200)
148541       , xla_environment_pkg.g_Usr_Id
148542       , TRUNC(SYSDATE)
148543       , TRUNC(SYSDATE)
148544       , xla_environment_pkg.g_Usr_Id
148545       , xla_environment_pkg.g_Login_Id
148546       , TRUNC(SYSDATE)
148547       , xla_environment_pkg.g_Prog_Appl_Id
148548       , xla_environment_pkg.g_Prog_Id
148549       , xla_environment_pkg.g_Req_Id
148550   FROM (
148551        SELECT xet.event_id                  event_id
148552             , l2.line_number                 line_number
148553             , CASE r
148554                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
148555                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
148556                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
148557                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
148558                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
148559                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
148560                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
148561                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
148562                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
148563                 
148564                ELSE null
148565               END                           object_name
148566             , CASE r
148567                 WHEN 1 THEN 'LINE' 
148568                 WHEN 2 THEN 'LINE' 
148569                 WHEN 3 THEN 'LINE' 
148570                 WHEN 4 THEN 'LINE' 
148571                 WHEN 5 THEN 'LINE' 
148572                 WHEN 6 THEN 'LINE' 
148573                 WHEN 7 THEN 'LINE' 
148574                 WHEN 8 THEN 'LINE' 
148575                 WHEN 9 THEN 'LINE' 
148576                 
148577                 ELSE null
148578               END                           object_type_code
148579             , CASE r
148580                 WHEN 1 THEN '707' 
148581                 WHEN 2 THEN '707' 
148582                 WHEN 3 THEN '707' 
148583                 WHEN 4 THEN '707' 
148584                 WHEN 5 THEN '707' 
148585                 WHEN 6 THEN '707' 
148586                 WHEN 7 THEN '707' 
148587                 WHEN 8 THEN '707' 
148588                 WHEN 9 THEN '707' 
148589                 
148590                 ELSE null
148591               END                           source_application_id
148592             , 'S'             source_type_code
148593             , CASE r
148594                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
148595                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
148596                 WHEN 3 THEN 'CURRENCY_CODE' 
148597                 WHEN 4 THEN 'ENTERED_AMOUNT' 
148598                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
148599                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
148600                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
148601                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
148602                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
148603                 
148604                 ELSE null
148605               END                           source_code
148606             , CASE r
148607                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
148608                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
148609                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
148610                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
148611                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
148612                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
148613                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
148614                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
148615                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
148616                 
148617                 ELSE null
148618               END                           source_value
148619             , null              source_meaning
148620          FROM  xla_events_gt     xet  
148621         , CST_XLA_INV_LINES_V  l2
148622             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
148623         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
148624           AND xet.event_class_code = C_EVENT_CLASS_CODE
148625             AND l2.event_id          = xet.event_id
148626 
148627 )
148628 ;
148629 --
148630 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148631 
148632       trace
148633          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
148634          ,p_level    => C_LEVEL_STATEMENT
148635          ,p_module   => l_log_module);
148636 
148637 END IF;
148638 
148639 
148640 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
148641       trace
148642          (p_msg      => 'END of insert_sources_263'
148643          ,p_level    => C_LEVEL_PROCEDURE
148644          ,p_module   => l_log_module);
148645 END IF;
148646 EXCEPTION
148647   WHEN xla_exceptions_pkg.application_exception THEN
148648       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
148649             trace
148650                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
148651                ,p_level    => C_LEVEL_EXCEPTION
148652                ,p_module   => l_log_module);
148653       END IF;
148654       RAISE;
148655   WHEN OTHERS THEN
148656       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
148657             trace
148658                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
148659                ,p_level    => C_LEVEL_EXCEPTION
148660                ,p_module   => l_log_module);
148661        END IF;
148662        xla_exceptions_pkg.raise_message
148663            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_263');
148664 END insert_sources_263;
148665 --
148666 
148667 ---------------------------------------
148668 --
148669 -- PRIVATE FUNCTION
148670 --         EventClass_263
148671 --
148672 ----------------------------------------
148673 --
148674 FUNCTION EventClass_263
148675        (p_application_id         IN NUMBER
148676        ,p_base_ledger_id         IN NUMBER
148677        ,p_target_ledger_id       IN NUMBER
148678        ,p_language               IN VARCHAR2
148679        ,p_currency_code          IN VARCHAR2
148680        ,p_sla_ledger_id          IN NUMBER
148681        ,p_pad_start_date         IN DATE
148682        ,p_pad_end_date           IN DATE
148683        ,p_primary_ledger_id      IN NUMBER)
148684 RETURN BOOLEAN IS
148685 --
148686 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DIR_INTERORG_RCPT_ALL';
148687 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DIR_INTERORG_RCPT';
148688 
148689 l_calculate_acctd_flag   VARCHAR2(1) :='N';
148690 l_calculate_g_l_flag     VARCHAR2(1) :='N';
148691 --
148692 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148693 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148694 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
148695 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
148696 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148697 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
148698 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
148699 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148700 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
148701 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
148702 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148703 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148704 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148705 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148706 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
148707 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
148708 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
148709 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
148710 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
148711 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
148712 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
148713 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
148714 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
148715 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
148716 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
148717 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
148718 
148719 l_event_id                             NUMBER;
148720 l_previous_event_id                    NUMBER;
148721 l_first_event_id                       NUMBER;
148722 l_last_event_id                        NUMBER;
148723 
148724 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
148725 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
148726 --
148727 --
148728 l_result                    BOOLEAN := TRUE;
148729 l_rows                      NUMBER  := 1000;
148730 l_event_type_name           VARCHAR2(80) := 'All';
148731 l_event_class_name          VARCHAR2(80) := 'Direct Interorg Receipt';
148732 l_description               VARCHAR2(4000);
148733 l_transaction_reversal      NUMBER;
148734 l_ae_header_id              NUMBER;
148735 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
148736 l_log_module                VARCHAR2(240);
148737 --
148738 l_acct_reversal_source      VARCHAR2(30);
148739 l_trx_reversal_source       VARCHAR2(30);
148740 
148741 l_continue_with_lines       BOOLEAN := TRUE;
148742 --
148743 l_acc_rev_gl_date_source    DATE;                      -- 4262811
148744 --
148745 type t_array_event_id is table of number index by binary_integer;
148746 
148747 l_rec_array_event                    t_rec_array_event;
148748 l_null_rec_array_event               t_rec_array_event;
148749 l_array_ae_header_id                 xla_number_array_type;
148750 l_actual_flag                        VARCHAR2(1) := NULL;
148751 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
148752 l_balance_type_code                  VARCHAR2(1) :=NULL;
148753 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
148754 
148755 --
148756 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
148757 --
148758 
148759 TYPE t_array_source_6 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
148760 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
148761 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
148762 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
148763 TYPE t_array_source_14 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
148764 TYPE t_array_source_16 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
148765 TYPE t_array_source_27 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
148766 TYPE t_array_source_28 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
148767 TYPE t_array_source_29 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_HEADER_ID%TYPE INDEX BY BINARY_INTEGER;
148768 TYPE t_array_source_30 IS TABLE OF PO_REQ_DISTS_REF_V.REQ_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
148769 TYPE t_array_source_31 IS TABLE OF PO_REQ_HEADERS_REF_V.REQ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
148770 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
148771 
148772 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
148773 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
148774 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
148775 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
148776 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
148777 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
148778 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
148779 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
148780 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
148781 
148782 l_array_source_6              t_array_source_6;
148783 l_array_source_7              t_array_source_7;
148784 l_array_source_8              t_array_source_8;
148785 l_array_source_12              t_array_source_12;
148786 l_array_source_12_meaning      t_array_lookup_meaning;
148787 l_array_source_14              t_array_source_14;
148788 l_array_source_16              t_array_source_16;
148789 l_array_source_27              t_array_source_27;
148790 l_array_source_28              t_array_source_28;
148791 l_array_source_29              t_array_source_29;
148792 l_array_source_30              t_array_source_30;
148793 l_array_source_31              t_array_source_31;
148794 l_array_source_38              t_array_source_38;
148795 l_array_source_38_meaning      t_array_lookup_meaning;
148796 
148797 l_array_source_4      t_array_source_4;
148798 l_array_source_11      t_array_source_11;
148799 l_array_source_15      t_array_source_15;
148800 l_array_source_18      t_array_source_18;
148801 l_array_source_19      t_array_source_19;
148802 l_array_source_20      t_array_source_20;
148803 l_array_source_21      t_array_source_21;
148804 l_array_source_22      t_array_source_22;
148805 l_array_source_24      t_array_source_24;
148806 
148807 --
148808 CURSOR header_cur
148809 IS
148810 SELECT /*+ leading(xet) cardinality(xet,1) */
148811 -- Event Class Code: DIR_INTERORG_RCPT
148812     xet.entity_id
148813    ,xet.legal_entity_id
148814    ,xet.entity_code
148815    ,xet.transaction_number
148816    ,xet.event_id
148817    ,xet.event_class_code
148818    ,xet.event_type_code
148819    ,xet.event_number
148820    ,xet.event_date
148821    ,xet.transaction_date
148822    ,xet.reference_num_1
148823    ,xet.reference_num_2
148824    ,xet.reference_num_3
148825    ,xet.reference_num_4
148826    ,xet.reference_char_1
148827    ,xet.reference_char_2
148828    ,xet.reference_char_3
148829    ,xet.reference_char_4
148830    ,xet.reference_date_1
148831    ,xet.reference_date_2
148832    ,xet.reference_date_3
148833    ,xet.reference_date_4
148834    ,xet.event_created_by
148835    ,xet.budgetary_control_flag 
148836   , h3.APPLIED_TO_APPL_ID    source_6
148837   , h3.APPLIED_TO_DIST_LINK_TYPE    source_7
148838   , h3.APPLIED_TO_ENTITY_CODE    source_8
148839   , h1.DISTRIBUTION_TYPE    source_12
148840   , fvl12.meaning   source_12_meaning
148841   , h3.ENCUM_REVERSAL_AMOUNT_ENTERED    source_14
148842   , h3.ENCUMBRANCE_REVERSAL_AMOUNT    source_16
148843   , h6.CST_ENCUM_UPG_OPTION    source_27
148844   , h3.TXN_PO_DISTRIBUTION_ID    source_28
148845   , h3.TXN_PO_HEADER_ID    source_29
148846   , h4.REQ_BUDGET_ACCOUNT    source_30
148847   , h5.REQ_ENCUMBRANCE_TYPE_ID    source_31
148848   , h1.TRANSFER_TO_GL_INDICATOR    source_38
148849   , fvl38.meaning   source_38_meaning
148850   FROM xla_events_gt     xet 
148851   , CST_XLA_INV_HEADERS_V  h1
148852   , CST_XLA_INV_REF_V  h3
148853   , PO_REQ_DISTS_REF_V  h4
148854   , PO_REQ_HEADERS_REF_V  h5
148855   , PSA_CST_XLA_UPG_V  h6
148856   , fnd_lookup_values    fvl12
148857   , fnd_lookup_values    fvl38
148858  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
148859    and xet.event_class_code = C_EVENT_CLASS_CODE
148860    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
148861  AND h3.ref_transaction_id = h1.transaction_id AND h3.BUS_FLOW_REQ_DIST_ID=h4.REQ_DISTRIBUTION_ID (+)  AND h3.BUS_FLOW_REQ_ID = h5.REQ_ID (+)  AND h3.rcv_transaction_id = h6.transaction_id (+)    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
148862   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
148863   AND fvl12.view_application_id(+) = 700
148864   AND fvl12.language(+)            = USERENV('LANG')
148865      AND fvl38.lookup_type(+)         = 'YES_NO'
148866   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
148867   AND fvl38.view_application_id(+) = 0
148868   AND fvl38.language(+)            = USERENV('LANG')
148869   
148870  ORDER BY event_id
148871 ;
148872 
148873 
148874 --
148875 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
148876 IS
148877 SELECT  /*+ leading(xet) cardinality(xet,1) */
148878 -- Event Class Code: DIR_INTERORG_RCPT
148879     xet.entity_id
148880    ,xet.legal_entity_id
148881    ,xet.entity_code
148882    ,xet.transaction_number
148883    ,xet.event_id
148884    ,xet.event_class_code
148885    ,xet.event_type_code
148886    ,xet.event_number
148887    ,xet.event_date
148888    ,xet.transaction_date
148889    ,xet.reference_num_1
148890    ,xet.reference_num_2
148891    ,xet.reference_num_3
148892    ,xet.reference_num_4
148893    ,xet.reference_char_1
148894    ,xet.reference_char_2
148895    ,xet.reference_char_3
148896    ,xet.reference_char_4
148897    ,xet.reference_date_1
148898    ,xet.reference_date_2
148899    ,xet.reference_date_3
148900    ,xet.reference_date_4
148901    ,xet.event_created_by
148902    ,xet.budgetary_control_flag
148903  , l2.LINE_NUMBER  
148904   , l2.CODE_COMBINATION_ID    source_4
148905   , l2.DISTRIBUTION_IDENTIFIER    source_11
148906   , l2.CURRENCY_CODE    source_15
148907   , l2.ENTERED_AMOUNT    source_18
148908   , l2.CURRENCY_CONVERSION_DATE    source_19
148909   , l2.CURRENCY_CONVERSION_RATE    source_20
148910   , l2.CURRENCY_CONVERSION_TYPE    source_21
148911   , l2.ACCOUNTED_AMOUNT    source_22
148912   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
148913   FROM xla_events_gt     xet 
148914   , CST_XLA_INV_LINES_V  l2
148915  WHERE xet.event_id between x_first_event_id and x_last_event_id
148916    and xet.event_date between p_pad_start_date and p_pad_end_date
148917    and xet.event_class_code = C_EVENT_CLASS_CODE
148918    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
148919 ;
148920 
148921 --
148922 BEGIN
148923 IF g_log_enabled THEN
148924    l_log_module := C_DEFAULT_MODULE||'.EventClass_263';
148925 END IF;
148926 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
148927    trace
148928       (p_msg      => 'BEGIN of EventClass_263'
148929       ,p_level    => C_LEVEL_PROCEDURE
148930       ,p_module   => l_log_module);
148931 END IF;
148932 
148933 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148934    trace
148935       (p_msg      => 'p_application_id = '||p_application_id||
148936                      ' - p_base_ledger_id = '||p_base_ledger_id||
148937                      ' - p_target_ledger_id  = '||p_target_ledger_id||
148938                      ' - p_language = '||p_language||
148939                      ' - p_currency_code = '||p_currency_code||
148940                      ' - p_sla_ledger_id = '||p_sla_ledger_id
148941       ,p_level    => C_LEVEL_STATEMENT
148942       ,p_module   => l_log_module);
148943 END IF;
148944 --
148945 -- initialze arrays
148946 --
148947 g_array_event.DELETE;
148948 l_rec_array_event := l_null_rec_array_event;
148949 --
148950 --------------------------------------
148951 -- 4262811 Initialze MPA Line Number
148952 --------------------------------------
148953 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
148954 
148955 --
148956 
148957 --
148958 OPEN header_cur;
148959 --
148960 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148961    trace
148962    (p_msg      => 'SQL - FETCH header_cur'
148963    ,p_level    => C_LEVEL_STATEMENT
148964    ,p_module   => l_log_module);
148965 END IF;
148966 --
148967 LOOP
148968 FETCH header_cur BULK COLLECT INTO
148969         l_array_entity_id
148970       , l_array_legal_entity_id
148971       , l_array_entity_code
148972       , l_array_transaction_num
148973       , l_array_event_id
148974       , l_array_class_code
148975       , l_array_event_type
148976       , l_array_event_number
148977       , l_array_event_date
148978       , l_array_transaction_date
148979       , l_array_reference_num_1
148980       , l_array_reference_num_2
148981       , l_array_reference_num_3
148982       , l_array_reference_num_4
148983       , l_array_reference_char_1
148984       , l_array_reference_char_2
148985       , l_array_reference_char_3
148986       , l_array_reference_char_4
148987       , l_array_reference_date_1
148988       , l_array_reference_date_2
148989       , l_array_reference_date_3
148990       , l_array_reference_date_4
148991       , l_array_event_created_by
148992       , l_array_budgetary_control_flag 
148993       , l_array_source_6
148994       , l_array_source_7
148995       , l_array_source_8
148996       , l_array_source_12
148997       , l_array_source_12_meaning
148998       , l_array_source_14
148999       , l_array_source_16
149000       , l_array_source_27
149001       , l_array_source_28
149002       , l_array_source_29
149003       , l_array_source_30
149004       , l_array_source_31
149005       , l_array_source_38
149006       , l_array_source_38_meaning
149007       LIMIT l_rows;
149008 --
149009 IF (C_LEVEL_EVENT >= g_log_level) THEN
149010    trace
149011    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
149012    ,p_level    => C_LEVEL_EVENT
149013    ,p_module   => l_log_module);
149014 END IF;
149015 --
149016 EXIT WHEN l_array_entity_id.COUNT = 0;
149017 
149018 -- initialize arrays
149019 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
149020 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
149021 
149022 --
149023 -- Bug 4458708
149024 --
149025 XLA_AE_LINES_PKG.g_LineNumber := 0;
149026 
149027 
149028 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
149029 g_last_hdr_idx := l_array_event_id.LAST;
149030 --
149031 -- loop for the headers. Each iteration is for each header extract row
149032 -- fetched in header cursor
149033 --
149034 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
149035 
149036 --
149037 -- set event info as cache for other routines to refer event attributes
149038 --
149039 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
149040    (p_application_id           => p_application_id
149041    ,p_primary_ledger_id        => p_primary_ledger_id
149042    ,p_base_ledger_id           => p_base_ledger_id
149043    ,p_target_ledger_id         => p_target_ledger_id
149044    ,p_entity_id                => l_array_entity_id(hdr_idx)
149045    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
149046    ,p_entity_code              => l_array_entity_code(hdr_idx)
149047    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
149048    ,p_event_id                 => l_array_event_id(hdr_idx)
149049    ,p_event_class_code         => l_array_class_code(hdr_idx)
149050    ,p_event_type_code          => l_array_event_type(hdr_idx)
149051    ,p_event_number             => l_array_event_number(hdr_idx)
149052    ,p_event_date               => l_array_event_date(hdr_idx)
149053    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
149054    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
149055    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
149056    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
149057    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
149058    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
149059    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
149060    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
149061    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
149062    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
149063    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
149064    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
149065    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
149066    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
149067    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
149068 
149069 --
149070 -- set the status of entry to C_VALID (0)
149071 --
149072 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
149073 
149074 --
149075 -- initialize a row for ae header
149076 --
149077 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
149078 
149079 l_event_id := l_array_event_id(hdr_idx);
149080 
149081 --
149082 -- storing the hdr_idx for event. May be used by line cursor.
149083 --
149084 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
149085 
149086 --
149087 -- store sources from header extract. This can be improved to
149088 -- store only those sources from header extract that may be used in lines
149089 --
149090 
149091 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
149092 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
149093 g_array_event(l_event_id).array_value_char('source_8') := l_array_source_8(hdr_idx);
149094 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
149095 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
149096 g_array_event(l_event_id).array_value_num('source_14') := l_array_source_14(hdr_idx);
149097 g_array_event(l_event_id).array_value_num('source_16') := l_array_source_16(hdr_idx);
149098 g_array_event(l_event_id).array_value_char('source_27') := l_array_source_27(hdr_idx);
149099 g_array_event(l_event_id).array_value_num('source_28') := l_array_source_28(hdr_idx);
149100 g_array_event(l_event_id).array_value_num('source_29') := l_array_source_29(hdr_idx);
149101 g_array_event(l_event_id).array_value_num('source_30') := l_array_source_30(hdr_idx);
149102 g_array_event(l_event_id).array_value_num('source_31') := l_array_source_31(hdr_idx);
149103 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
149104 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
149105 
149106 --
149107 -- initilaize the status of ae headers for diffrent balance types
149108 -- the status is initialised to C_NOT_CREATED (2)
149109 --
149110 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
149111 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
149112 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
149113 
149114 --
149115 -- call api to validate and store accounting attributes for header
149116 --
149117 
149118 ------------------------------------------------------------
149119 -- Accrual Reversal : to get date for Standard Source (NONE)
149120 ------------------------------------------------------------
149121 l_acc_rev_gl_date_source := NULL;
149122 
149123      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
149124       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_31');
149125      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
149126       l_rec_acct_attrs.array_date_value(2) := 
149127 xla_ae_sources_pkg.GetSystemSourceDate(
149128    p_source_code           => 'XLA_REFERENCE_DATE_1'
149129  , p_source_type_code      => 'Y'
149130  , p_source_application_id =>  602
149131 );
149132      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
149133       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_38');
149134 
149135 
149136 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
149137 
149138 XLA_AE_HEADER_PKG.SetJeCategoryName;
149139 
149140 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
149141 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
149142 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
149143 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
149144 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
149145 
149146 
149147 -- No header level analytical criteria
149148 
149149 --
149150 --accounting attribute enhancement, bug 3612931
149151 --
149152 l_trx_reversal_source := SUBSTR(NULL, 1,30);
149153 
149154 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
149155    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
149156 
149157    xla_accounting_err_pkg.build_message
149158       (p_appli_s_name            => 'XLA'
149159       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
149160       ,p_token_1                 => 'ACCT_ATTR_NAME'
149161       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
149162       ,p_token_2                 => 'PRODUCT_NAME'
149163       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
149164       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
149165       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
149166       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
149167 
149168 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
149169    --
149170    -- following sets the accounting attributes needed to reverse
149171    -- accounting for a distributeion
149172    --
149173    xla_ae_lines_pkg.SetTrxReversalAttrs
149174       (p_event_id              => l_event_id
149175       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
149176       ,p_trx_reversal_source   => l_trx_reversal_source);
149177 
149178 END IF;
149179 
149180 
149181 ----------------------------------------------------------------
149182 -- 4262811 -  update the header statuses to invalid in need be
149183 ----------------------------------------------------------------
149184 --
149185 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
149186 
149187 
149188   -----------------------------------------------
149189   -- No accrual reversal for the event class/type
149190   -----------------------------------------------
149191 ----------------------------------------------------------------
149192 
149193 --
149194 -- this ends the header loop iteration for one bulk fetch
149195 --
149196 END LOOP;
149197 
149198 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
149199 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
149200 
149201 --
149202 -- insert dummy rows into lines gt table that were created due to
149203 -- transaction reversals
149204 --
149205 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
149206    l_result := XLA_AE_LINES_PKG.InsertLines;
149207 END IF;
149208 
149209 --
149210 -- reset the temp_line_num for each set of events fetched from header
149211 -- cursor rather than doing it for each new event in line cursor
149212 -- Bug 3939231
149213 --
149214 xla_ae_lines_pkg.g_temp_line_num := 0;
149215 
149216 
149217 
149218 --
149219 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
149220 --
149221 --
149222 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149223 
149224       trace
149225          (p_msg      => 'SQL - FETCH line_cur'
149226          ,p_level    => C_LEVEL_STATEMENT
149227          ,p_module   => l_log_module);
149228 
149229 END IF;
149230 --
149231 --
149232 LOOP
149233   --
149234   FETCH line_cur BULK COLLECT INTO
149235         l_array_entity_id
149236       , l_array_legal_entity_id
149237       , l_array_entity_code
149238       , l_array_transaction_num
149239       , l_array_event_id
149240       , l_array_class_code
149241       , l_array_event_type
149242       , l_array_event_number
149243       , l_array_event_date
149244       , l_array_transaction_date
149245       , l_array_reference_num_1
149246       , l_array_reference_num_2
149247       , l_array_reference_num_3
149248       , l_array_reference_num_4
149249       , l_array_reference_char_1
149250       , l_array_reference_char_2
149251       , l_array_reference_char_3
149252       , l_array_reference_char_4
149253       , l_array_reference_date_1
149254       , l_array_reference_date_2
149255       , l_array_reference_date_3
149256       , l_array_reference_date_4
149257       , l_array_event_created_by
149258       , l_array_budgetary_control_flag
149259       , l_array_extract_line_num 
149260       , l_array_source_4
149261       , l_array_source_11
149262       , l_array_source_15
149263       , l_array_source_18
149264       , l_array_source_19
149265       , l_array_source_20
149266       , l_array_source_21
149267       , l_array_source_22
149268       , l_array_source_24
149269       LIMIT l_rows;
149270 
149271   --
149272   IF (C_LEVEL_EVENT >= g_log_level) THEN
149273             trace
149274                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
149275                ,p_level    => C_LEVEL_EVENT
149276                ,p_module   => l_log_module);
149277   END IF;
149278   --
149279   EXIT WHEN l_array_entity_id.count = 0;
149280 
149281   XLA_AE_LINES_PKG.g_rec_lines := null;
149282 
149283 --
149284 -- Bug 4458708
149285 --
149286 XLA_AE_LINES_PKG.g_LineNumber := 0;
149287 --
149288 --
149289 
149290 FOR Idx IN 1..l_array_event_id.count LOOP
149291    --
149292    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
149293    --
149294    l_event_id := l_array_event_id(idx);  -- 5648433
149295 
149296    --
149297    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
149298    --
149299 
149300    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
149301              (g_array_event(l_event_id).array_value_num('header_index'))
149302          ,'N'
149303          ) <> 'Y'
149304    THEN
149305       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149306          trace
149307             (p_msg      => 'Trancaction revesal option is not Y '
149308             ,p_level    => C_LEVEL_STATEMENT
149309             ,p_module   => l_log_module);
149310       END IF;
149311 
149312 --
149313 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
149314 --
149315 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
149316 --
149317 -- set event info as cache for other routines to refer event attributes
149318 --
149319 
149320 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
149321    l_previous_event_id := l_event_id;
149322 
149323    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
149324       (p_application_id           => p_application_id
149325       ,p_primary_ledger_id        => p_primary_ledger_id
149326       ,p_base_ledger_id           => p_base_ledger_id
149327       ,p_target_ledger_id         => p_target_ledger_id
149328       ,p_entity_id                => l_array_entity_id(Idx)
149329       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
149330       ,p_entity_code              => l_array_entity_code(Idx)
149331       ,p_transaction_num          => l_array_transaction_num(Idx)
149332       ,p_event_id                 => l_array_event_id(Idx)
149333       ,p_event_class_code         => l_array_class_code(Idx)
149334       ,p_event_type_code          => l_array_event_type(Idx)
149335       ,p_event_number             => l_array_event_number(Idx)
149336       ,p_event_date               => l_array_event_date(Idx)
149337       ,p_transaction_date         => l_array_transaction_date(Idx)
149338       ,p_reference_num_1          => l_array_reference_num_1(Idx)
149339       ,p_reference_num_2          => l_array_reference_num_2(Idx)
149340       ,p_reference_num_3          => l_array_reference_num_3(Idx)
149341       ,p_reference_num_4          => l_array_reference_num_4(Idx)
149342       ,p_reference_char_1         => l_array_reference_char_1(Idx)
149343       ,p_reference_char_2         => l_array_reference_char_2(Idx)
149344       ,p_reference_char_3         => l_array_reference_char_3(Idx)
149345       ,p_reference_char_4         => l_array_reference_char_4(Idx)
149346       ,p_reference_date_1         => l_array_reference_date_1(Idx)
149347       ,p_reference_date_2         => l_array_reference_date_2(Idx)
149348       ,p_reference_date_3         => l_array_reference_date_3(Idx)
149349       ,p_reference_date_4         => l_array_reference_date_4(Idx)
149350       ,p_event_created_by         => l_array_event_created_by(Idx)
149351       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
149352        --
149353 END IF;
149354 
149355 
149356 
149357 --
149358 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
149359 
149360 l_acct_reversal_source := SUBSTR(NULL, 1,30);
149361 
149362 IF l_continue_with_lines THEN
149363    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
149364       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
149365 
149366       xla_accounting_err_pkg.build_message
149367          (p_appli_s_name            => 'XLA'
149368          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
149369          ,p_token_1                 => 'LINE_NUMBER'
149370          ,p_value_1                 => l_array_extract_line_num(Idx)
149371          ,p_token_2                 => 'PRODUCT_NAME'
149372          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
149373          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
149374          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
149375          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
149376 
149377    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
149378       --
149379       -- following sets the accounting attributes needed to reverse
149380       -- accounting for a distributeion
149381       --
149382 
149383       --
149384       -- 5217187
149385       --
149386       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
149387       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
149388                                        g_array_event(l_event_id).array_value_num('header_index'));
149389       --
149390       --
149391 
149392       -- No reversal code generated
149393 
149394       xla_ae_lines_pkg.SetAcctReversalAttrs
149395          (p_event_id             => l_event_id
149396          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
149397          ,p_calculate_acctd_flag => l_calculate_acctd_flag
149398          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
149399    END IF;
149400 
149401    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
149402        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
149403 
149404 --
149405 AcctLineType_29 (
149406  p_application_id  => p_application_id
149407  ,p_event_id     => l_event_id
149408  ,p_calculate_acctd_flag => l_calculate_acctd_flag
149409  ,p_calculate_g_l_flag => l_calculate_g_l_flag
149410  ,p_actual_flag => l_actual_flag
149411  ,p_balance_type_code => l_balance_type_code
149412  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149413  
149414  , p_source_4 => l_array_source_4(Idx)
149415  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
149416  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
149417  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
149418  , p_source_11 => l_array_source_11(Idx)
149419  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
149420  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
149421  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
149422  , p_source_15 => l_array_source_15(Idx)
149423  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
149424  , p_source_18 => l_array_source_18(Idx)
149425  , p_source_19 => l_array_source_19(Idx)
149426  , p_source_20 => l_array_source_20(Idx)
149427  , p_source_21 => l_array_source_21(Idx)
149428  , p_source_22 => l_array_source_22(Idx)
149429  , p_source_24 => l_array_source_24(Idx)
149430  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
149431  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
149432  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
149433  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
149434  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
149435  );
149436 If(l_balance_type_code = 'A') THEN
149437   l_actual_gain_loss_ref := l_gain_or_loss_ref;
149438 END IF;
149439 
149440 --
149441 
149442 
149443 --
149444 AcctLineType_65 (
149445  p_application_id  => p_application_id
149446  ,p_event_id     => l_event_id
149447  ,p_calculate_acctd_flag => l_calculate_acctd_flag
149448  ,p_calculate_g_l_flag => l_calculate_g_l_flag
149449  ,p_actual_flag => l_actual_flag
149450  ,p_balance_type_code => l_balance_type_code
149451  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149452  
149453  , p_source_4 => l_array_source_4(Idx)
149454  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
149455  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
149456  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
149457  , p_source_11 => l_array_source_11(Idx)
149458  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
149459  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
149460  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
149461  , p_source_15 => l_array_source_15(Idx)
149462  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
149463  , p_source_18 => l_array_source_18(Idx)
149464  , p_source_19 => l_array_source_19(Idx)
149465  , p_source_20 => l_array_source_20(Idx)
149466  , p_source_21 => l_array_source_21(Idx)
149467  , p_source_22 => l_array_source_22(Idx)
149468  , p_source_24 => l_array_source_24(Idx)
149469  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
149470  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
149471  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
149472  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
149473  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
149474  );
149475 If(l_balance_type_code = 'A') THEN
149476   l_actual_gain_loss_ref := l_gain_or_loss_ref;
149477 END IF;
149478 
149479 --
149480 
149481 
149482 --
149483 AcctLineType_86 (
149484  p_application_id  => p_application_id
149485  ,p_event_id     => l_event_id
149486  ,p_calculate_acctd_flag => l_calculate_acctd_flag
149487  ,p_calculate_g_l_flag => l_calculate_g_l_flag
149488  ,p_actual_flag => l_actual_flag
149489  ,p_balance_type_code => l_balance_type_code
149490  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149491  
149492  , p_source_4 => l_array_source_4(Idx)
149493  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
149494  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
149495  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
149496  , p_source_11 => l_array_source_11(Idx)
149497  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
149498  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
149499  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
149500  , p_source_15 => l_array_source_15(Idx)
149501  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
149502  , p_source_18 => l_array_source_18(Idx)
149503  , p_source_19 => l_array_source_19(Idx)
149504  , p_source_20 => l_array_source_20(Idx)
149505  , p_source_21 => l_array_source_21(Idx)
149506  , p_source_22 => l_array_source_22(Idx)
149507  , p_source_24 => l_array_source_24(Idx)
149508  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
149509  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
149510  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
149511  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
149512  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
149513  );
149514 If(l_balance_type_code = 'A') THEN
149515   l_actual_gain_loss_ref := l_gain_or_loss_ref;
149516 END IF;
149517 
149518 --
149519 
149520 
149521 --
149522 AcctLineType_103 (
149523  p_application_id  => p_application_id
149524  ,p_event_id     => l_event_id
149525  ,p_calculate_acctd_flag => l_calculate_acctd_flag
149526  ,p_calculate_g_l_flag => l_calculate_g_l_flag
149527  ,p_actual_flag => l_actual_flag
149528  ,p_balance_type_code => l_balance_type_code
149529  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149530  
149531  , p_source_4 => l_array_source_4(Idx)
149532  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
149533  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
149534  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
149535  , p_source_11 => l_array_source_11(Idx)
149536  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
149537  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
149538  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
149539  , p_source_15 => l_array_source_15(Idx)
149540  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
149541  , p_source_18 => l_array_source_18(Idx)
149542  , p_source_19 => l_array_source_19(Idx)
149543  , p_source_20 => l_array_source_20(Idx)
149544  , p_source_21 => l_array_source_21(Idx)
149545  , p_source_22 => l_array_source_22(Idx)
149546  , p_source_24 => l_array_source_24(Idx)
149547  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
149548  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
149549  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
149550  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
149551  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
149552  );
149553 If(l_balance_type_code = 'A') THEN
149554   l_actual_gain_loss_ref := l_gain_or_loss_ref;
149555 END IF;
149556 
149557 --
149558 
149559 
149560 --
149561 AcctLineType_119 (
149562  p_application_id  => p_application_id
149563  ,p_event_id     => l_event_id
149564  ,p_calculate_acctd_flag => l_calculate_acctd_flag
149565  ,p_calculate_g_l_flag => l_calculate_g_l_flag
149566  ,p_actual_flag => l_actual_flag
149567  ,p_balance_type_code => l_balance_type_code
149568  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149569  
149570  , p_source_4 => l_array_source_4(Idx)
149571  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
149572  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
149573  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
149574  , p_source_11 => l_array_source_11(Idx)
149575  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
149576  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
149577  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
149578  , p_source_15 => l_array_source_15(Idx)
149579  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
149580  , p_source_18 => l_array_source_18(Idx)
149581  , p_source_19 => l_array_source_19(Idx)
149582  , p_source_20 => l_array_source_20(Idx)
149583  , p_source_21 => l_array_source_21(Idx)
149584  , p_source_22 => l_array_source_22(Idx)
149585  , p_source_24 => l_array_source_24(Idx)
149586  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
149587  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
149588  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
149589  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
149590  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
149591  );
149592 If(l_balance_type_code = 'A') THEN
149593   l_actual_gain_loss_ref := l_gain_or_loss_ref;
149594 END IF;
149595 
149596 --
149597 
149598 
149599 --
149600 AcctLineType_147 (
149601  p_application_id  => p_application_id
149602  ,p_event_id     => l_event_id
149603  ,p_calculate_acctd_flag => l_calculate_acctd_flag
149604  ,p_calculate_g_l_flag => l_calculate_g_l_flag
149605  ,p_actual_flag => l_actual_flag
149606  ,p_balance_type_code => l_balance_type_code
149607  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149608  
149609  , p_source_4 => l_array_source_4(Idx)
149610  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
149611  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
149612  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
149613  , p_source_11 => l_array_source_11(Idx)
149614  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
149615  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
149616  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
149617  , p_source_15 => l_array_source_15(Idx)
149618  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
149619  , p_source_18 => l_array_source_18(Idx)
149620  , p_source_19 => l_array_source_19(Idx)
149621  , p_source_20 => l_array_source_20(Idx)
149622  , p_source_21 => l_array_source_21(Idx)
149623  , p_source_22 => l_array_source_22(Idx)
149624  , p_source_24 => l_array_source_24(Idx)
149625  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
149626  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
149627  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
149628  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
149629  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
149630  );
149631 If(l_balance_type_code = 'A') THEN
149632   l_actual_gain_loss_ref := l_gain_or_loss_ref;
149633 END IF;
149634 
149635 --
149636 
149637 
149638 --
149639 AcctLineType_166 (
149640  p_application_id  => p_application_id
149641  ,p_event_id     => l_event_id
149642  ,p_calculate_acctd_flag => l_calculate_acctd_flag
149643  ,p_calculate_g_l_flag => l_calculate_g_l_flag
149644  ,p_actual_flag => l_actual_flag
149645  ,p_balance_type_code => l_balance_type_code
149646  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149647  
149648  , p_source_4 => l_array_source_4(Idx)
149649  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
149650  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
149651  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
149652  , p_source_11 => l_array_source_11(Idx)
149653  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
149654  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
149655  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
149656  , p_source_15 => l_array_source_15(Idx)
149657  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
149658  , p_source_18 => l_array_source_18(Idx)
149659  , p_source_19 => l_array_source_19(Idx)
149660  , p_source_20 => l_array_source_20(Idx)
149661  , p_source_21 => l_array_source_21(Idx)
149662  , p_source_22 => l_array_source_22(Idx)
149663  , p_source_24 => l_array_source_24(Idx)
149664  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
149665  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
149666  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
149667  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
149668  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
149669  );
149670 If(l_balance_type_code = 'A') THEN
149671   l_actual_gain_loss_ref := l_gain_or_loss_ref;
149672 END IF;
149673 
149674 --
149675 
149676 
149677 --
149678 AcctLineType_211 (
149679  p_application_id  => p_application_id
149680  ,p_event_id     => l_event_id
149681  ,p_calculate_acctd_flag => l_calculate_acctd_flag
149682  ,p_calculate_g_l_flag => l_calculate_g_l_flag
149683  ,p_actual_flag => l_actual_flag
149684  ,p_balance_type_code => l_balance_type_code
149685  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149686  
149687  , p_source_4 => l_array_source_4(Idx)
149688  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
149689  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
149690  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
149691  , p_source_11 => l_array_source_11(Idx)
149692  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
149693  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
149694  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
149695  , p_source_15 => l_array_source_15(Idx)
149696  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
149697  , p_source_18 => l_array_source_18(Idx)
149698  , p_source_19 => l_array_source_19(Idx)
149699  , p_source_20 => l_array_source_20(Idx)
149700  , p_source_21 => l_array_source_21(Idx)
149701  , p_source_22 => l_array_source_22(Idx)
149702  , p_source_24 => l_array_source_24(Idx)
149703  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
149704  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
149705  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
149706  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
149707  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
149708  );
149709 If(l_balance_type_code = 'A') THEN
149710   l_actual_gain_loss_ref := l_gain_or_loss_ref;
149711 END IF;
149712 
149713 --
149714 
149715 
149716 --
149717 AcctLineType_230 (
149718  p_application_id  => p_application_id
149719  ,p_event_id     => l_event_id
149720  ,p_calculate_acctd_flag => l_calculate_acctd_flag
149721  ,p_calculate_g_l_flag => l_calculate_g_l_flag
149722  ,p_actual_flag => l_actual_flag
149723  ,p_balance_type_code => l_balance_type_code
149724  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149725  
149726  , p_source_4 => l_array_source_4(Idx)
149727  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
149728  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
149729  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
149730  , p_source_11 => l_array_source_11(Idx)
149731  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
149732  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
149733  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
149734  , p_source_15 => l_array_source_15(Idx)
149735  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
149736  , p_source_18 => l_array_source_18(Idx)
149737  , p_source_19 => l_array_source_19(Idx)
149738  , p_source_20 => l_array_source_20(Idx)
149739  , p_source_21 => l_array_source_21(Idx)
149740  , p_source_22 => l_array_source_22(Idx)
149741  , p_source_24 => l_array_source_24(Idx)
149742  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
149743  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
149744  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
149745  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
149746  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
149747  );
149748 If(l_balance_type_code = 'A') THEN
149749   l_actual_gain_loss_ref := l_gain_or_loss_ref;
149750 END IF;
149751 
149752 --
149753 
149754       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
149755       -- or secondary ledger that has different currency with primary
149756       -- or alc that is calculated by sla
149757       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
149758             (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'))
149759 
149760 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
149761 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
149762           AND (l_actual_flag = 'A')) THEN
149763         XLA_AE_LINES_PKG.CreateGainOrLossLines(
149764           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
149765          ,p_application_id   => p_application_id
149766          ,p_amb_context_code => 'DEFAULT'
149767          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
149768          ,p_event_class_code => C_EVENT_CLASS_CODE
149769          ,p_event_type_code  => C_EVENT_TYPE_CODE
149770          
149771          ,p_gain_ccid        => -1
149772          ,p_loss_ccid        => -1
149773 
149774          ,p_actual_flag      => l_actual_flag
149775          ,p_enc_flag         => null
149776          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
149777          ,p_enc_g_l_ref      => null
149778          );
149779       END IF;
149780    END IF;
149781 END IF;
149782 
149783    ELSE
149784       --
149785       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
149786       --
149787       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149788          trace
149789             (p_msg      => 'Trancaction revesal option is Y'
149790             ,p_level    => C_LEVEL_STATEMENT
149791             ,p_module   => l_log_module);
149792       END IF;
149793    END IF;
149794 
149795 END LOOP;
149796 l_result := XLA_AE_LINES_PKG.InsertLines ;
149797 end loop;
149798 close line_cur;
149799 
149800 
149801 --
149802 -- insert headers into xla_ae_headers_gt table
149803 --
149804 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
149805 
149806 -- insert into errors table here.
149807 
149808 END LOOP;
149809 
149810 --
149811 -- 4865292
149812 --
149813 -- Compare g_hdr_extract_count with event count in
149814 -- CreateHeadersAndLines.
149815 --
149816 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
149817 
149818 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149819    trace (p_msg     => '# rows extracted from header extract objects '
149820                     || ' (running total): '
149821                     || g_hdr_extract_count
149822          ,p_level   => C_LEVEL_STATEMENT
149823          ,p_module  => l_log_module);
149824 END IF;
149825 
149826 CLOSE header_cur;
149827 --
149828 
149829 --
149830 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
149831    trace
149832       (p_msg      => 'END of EventClass_263'
149833       ,p_level    => C_LEVEL_PROCEDURE
149834       ,p_module   => l_log_module);
149835 END IF;
149836 --
149837 RETURN l_result;
149838 EXCEPTION
149839 WHEN xla_exceptions_pkg.application_exception THEN
149840    
149841 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
149842 
149843    
149844 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
149845 
149846    RAISE;
149847 
149848 WHEN NO_DATA_FOUND THEN
149849 
149850 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
149851 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
149852 
149853 FOR header_record IN header_cur
149854 LOOP
149855     l_array_header_events(header_record.event_id) := header_record.event_id;
149856 END LOOP;
149857 
149858 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
149859 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
149860 
149861 fnd_file.put_line(fnd_file.LOG, '                    ');
149862 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
149863 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
149864 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
149865 
149866 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
149867 LOOP
149868 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
149869 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
149870         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
149871 	END IF;
149872 END LOOP;
149873 
149874 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
149875 fnd_file.put_line(fnd_file.LOG, '                    ');
149876 
149877 
149878 xla_exceptions_pkg.raise_message
149879       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_263');
149880 
149881 
149882 WHEN OTHERS THEN
149883    xla_exceptions_pkg.raise_message
149884       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_263');
149885 END EventClass_263;
149886 --
149887 
149888 ---------------------------------------
149889 --
149890 -- PRIVATE PROCEDURE
149891 --         insert_sources_264
149892 --
149893 ----------------------------------------
149894 --
149895 PROCEDURE insert_sources_264(
149896                                 p_target_ledger_id       IN NUMBER
149897                               , p_language               IN VARCHAR2
149898                               , p_sla_ledger_id          IN NUMBER
149899                               , p_pad_start_date         IN DATE
149900                               , p_pad_end_date           IN DATE
149901                          )
149902 IS
149903 
149904 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DIR_INTERORG_SHIP_ALL';
149905 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DIR_INTERORG_SHIP';
149906 p_apps_owner                   VARCHAR2(30);
149907 l_log_module                   VARCHAR2(240);
149908 BEGIN
149909 IF g_log_enabled THEN
149910       l_log_module := C_DEFAULT_MODULE||'.insert_sources_264';
149911 END IF;
149912 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
149913 
149914       trace
149915          (p_msg      => 'BEGIN of insert_sources_264'
149916          ,p_level    => C_LEVEL_PROCEDURE
149917          ,p_module   => l_log_module);
149918 
149919 END IF;
149920 
149921 -- select APPS owner
149922 SELECT oracle_username
149923   INTO p_apps_owner
149924   FROM fnd_oracle_userid
149925  WHERE read_only_flag = 'U'
149926 ;
149927 
149928 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149929       trace
149930          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
149931                         ' - p_language = '||p_language||
149932                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
149933                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
149934                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
149935                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
149936          ,p_level    => C_LEVEL_STATEMENT
149937          ,p_module   => l_log_module);
149938 END IF;
149939 
149940 
149941 --
149942 INSERT INTO xla_diag_sources --hdr2
149943 (
149944         event_id
149945       , ledger_id
149946       , sla_ledger_id
149947       , description_language
149948       , object_name
149949       , object_type_code
149950       , line_number
149951       , source_application_id
149952       , source_type_code
149953       , source_code
149954       , source_value
149955       , source_meaning
149956       , created_by
149957       , creation_date
149958       , last_update_date
149959       , last_updated_by
149960       , last_update_login
149961       , program_update_date
149962       , program_application_id
149963       , program_id
149964       , request_id
149965 )
149966 SELECT
149967         event_id
149968       , p_target_ledger_id
149969       , p_sla_ledger_id
149970       , p_language
149971       , object_name
149972       , object_type_code
149973       , line_number
149974       , source_application_id
149975       , source_type_code
149976       , source_code
149977       , SUBSTR(source_value ,1,1996)
149978       , SUBSTR(source_meaning ,1,200)
149979       , xla_environment_pkg.g_Usr_Id
149980       , TRUNC(SYSDATE)
149981       , TRUNC(SYSDATE)
149982       , xla_environment_pkg.g_Usr_Id
149983       , xla_environment_pkg.g_Login_Id
149984       , TRUNC(SYSDATE)
149985       , xla_environment_pkg.g_Prog_Appl_Id
149986       , xla_environment_pkg.g_Prog_Id
149987       , xla_environment_pkg.g_Req_Id
149988   FROM (
149989        SELECT xet.event_id                  event_id
149990             , 0                          line_number
149991             , CASE r
149992                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
149993                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
149994                 
149995                ELSE null
149996               END                           object_name
149997             , CASE r
149998                 WHEN 1 THEN 'HEADER' 
149999                 WHEN 2 THEN 'HEADER' 
150000                 
150001                 ELSE null
150002               END                           object_type_code
150003             , CASE r
150004                 WHEN 1 THEN '707' 
150005                 WHEN 2 THEN '707' 
150006                 
150007                 ELSE null
150008               END                           source_application_id
150009             , 'S'             source_type_code
150010             , CASE r
150011                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
150012                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
150013                 
150014                 ELSE null
150015               END                           source_code
150016             , CASE r
150017                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
150018                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
150019                 
150020                 ELSE null
150021               END                           source_value
150022             , CASE r
150023                 WHEN 1 THEN fvl12.meaning
150024                 WHEN 2 THEN fvl38.meaning
150025                 
150026                 ELSE null
150027               END               source_meaning
150028          FROM xla_events_gt     xet  
150029       , CST_XLA_INV_HEADERS_V  h1
150030   , fnd_lookup_values    fvl12
150031   , fnd_lookup_values    fvl38
150032              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
150033          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
150034            AND xet.event_class_code = C_EVENT_CLASS_CODE
150035               AND h1.event_id = xet.event_id
150036    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
150037   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
150038   AND fvl12.view_application_id(+) = 700
150039   AND fvl12.language(+)            = USERENV('LANG')
150040      AND fvl38.lookup_type(+)         = 'YES_NO'
150041   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
150042   AND fvl38.view_application_id(+) = 0
150043   AND fvl38.language(+)            = USERENV('LANG')
150044   
150045 )
150046 ;
150047 --
150048 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150049 
150050       trace
150051          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
150052          ,p_level    => C_LEVEL_STATEMENT
150053          ,p_module   => l_log_module);
150054 
150055 END IF;
150056 --
150057 
150058 
150059 
150060 --
150061 INSERT INTO xla_diag_sources  --line2
150062 (
150063         event_id
150064       , ledger_id
150065       , sla_ledger_id
150066       , description_language
150067       , object_name
150068       , object_type_code
150069       , line_number
150070       , source_application_id
150071       , source_type_code
150072       , source_code
150073       , source_value
150074       , source_meaning
150075       , created_by
150076       , creation_date
150077       , last_update_date
150078       , last_updated_by
150079       , last_update_login
150080       , program_update_date
150081       , program_application_id
150082       , program_id
150083       , request_id
150084 )
150085 SELECT  event_id
150086       , p_target_ledger_id
150087       , p_sla_ledger_id
150088       , p_language
150089       , object_name
150090       , object_type_code
150091       , line_number
150092       , source_application_id
150093       , source_type_code
150094       , source_code
150095       , SUBSTR(source_value,1,1996)
150096       , SUBSTR(source_meaning ,1,200)
150097       , xla_environment_pkg.g_Usr_Id
150098       , TRUNC(SYSDATE)
150099       , TRUNC(SYSDATE)
150100       , xla_environment_pkg.g_Usr_Id
150101       , xla_environment_pkg.g_Login_Id
150102       , TRUNC(SYSDATE)
150103       , xla_environment_pkg.g_Prog_Appl_Id
150104       , xla_environment_pkg.g_Prog_Id
150105       , xla_environment_pkg.g_Req_Id
150106   FROM (
150107        SELECT xet.event_id                  event_id
150108             , l2.line_number                 line_number
150109             , CASE r
150110                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
150111                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
150112                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
150113                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
150114                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
150115                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
150116                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
150117                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
150118                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
150119                 
150120                ELSE null
150121               END                           object_name
150122             , CASE r
150123                 WHEN 1 THEN 'LINE' 
150124                 WHEN 2 THEN 'LINE' 
150125                 WHEN 3 THEN 'LINE' 
150126                 WHEN 4 THEN 'LINE' 
150127                 WHEN 5 THEN 'LINE' 
150128                 WHEN 6 THEN 'LINE' 
150129                 WHEN 7 THEN 'LINE' 
150130                 WHEN 8 THEN 'LINE' 
150131                 WHEN 9 THEN 'LINE' 
150132                 
150133                 ELSE null
150134               END                           object_type_code
150135             , CASE r
150136                 WHEN 1 THEN '707' 
150137                 WHEN 2 THEN '707' 
150138                 WHEN 3 THEN '707' 
150139                 WHEN 4 THEN '707' 
150140                 WHEN 5 THEN '707' 
150141                 WHEN 6 THEN '707' 
150142                 WHEN 7 THEN '707' 
150143                 WHEN 8 THEN '707' 
150144                 WHEN 9 THEN '707' 
150145                 
150146                 ELSE null
150147               END                           source_application_id
150148             , 'S'             source_type_code
150149             , CASE r
150150                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
150151                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
150152                 WHEN 3 THEN 'CURRENCY_CODE' 
150153                 WHEN 4 THEN 'ENTERED_AMOUNT' 
150154                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
150155                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
150156                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
150157                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
150158                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
150159                 
150160                 ELSE null
150161               END                           source_code
150162             , CASE r
150163                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
150164                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
150165                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
150166                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
150167                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
150168                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
150169                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
150170                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
150171                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
150172                 
150173                 ELSE null
150174               END                           source_value
150175             , null              source_meaning
150176          FROM  xla_events_gt     xet  
150177         , CST_XLA_INV_LINES_V  l2
150178             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
150179         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
150180           AND xet.event_class_code = C_EVENT_CLASS_CODE
150181             AND l2.event_id          = xet.event_id
150182 
150183 )
150184 ;
150185 --
150186 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150187 
150188       trace
150189          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
150190          ,p_level    => C_LEVEL_STATEMENT
150191          ,p_module   => l_log_module);
150192 
150193 END IF;
150194 
150195 
150196 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
150197       trace
150198          (p_msg      => 'END of insert_sources_264'
150199          ,p_level    => C_LEVEL_PROCEDURE
150200          ,p_module   => l_log_module);
150201 END IF;
150202 EXCEPTION
150203   WHEN xla_exceptions_pkg.application_exception THEN
150204       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
150205             trace
150206                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
150207                ,p_level    => C_LEVEL_EXCEPTION
150208                ,p_module   => l_log_module);
150209       END IF;
150210       RAISE;
150211   WHEN OTHERS THEN
150212       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
150213             trace
150214                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
150215                ,p_level    => C_LEVEL_EXCEPTION
150216                ,p_module   => l_log_module);
150217        END IF;
150218        xla_exceptions_pkg.raise_message
150219            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_264');
150220 END insert_sources_264;
150221 --
150222 
150223 ---------------------------------------
150224 --
150225 -- PRIVATE FUNCTION
150226 --         EventClass_264
150227 --
150228 ----------------------------------------
150229 --
150230 FUNCTION EventClass_264
150231        (p_application_id         IN NUMBER
150232        ,p_base_ledger_id         IN NUMBER
150233        ,p_target_ledger_id       IN NUMBER
150234        ,p_language               IN VARCHAR2
150235        ,p_currency_code          IN VARCHAR2
150236        ,p_sla_ledger_id          IN NUMBER
150237        ,p_pad_start_date         IN DATE
150238        ,p_pad_end_date           IN DATE
150239        ,p_primary_ledger_id      IN NUMBER)
150240 RETURN BOOLEAN IS
150241 --
150242 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DIR_INTERORG_SHIP_ALL';
150243 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DIR_INTERORG_SHIP';
150244 
150245 l_calculate_acctd_flag   VARCHAR2(1) :='N';
150246 l_calculate_g_l_flag     VARCHAR2(1) :='N';
150247 --
150248 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150249 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150250 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
150251 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
150252 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150253 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
150254 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
150255 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150256 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150257 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150258 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150259 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150260 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150261 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150262 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
150263 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
150264 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
150265 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
150266 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150267 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150268 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150269 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150270 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
150271 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
150272 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
150273 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
150274 
150275 l_event_id                             NUMBER;
150276 l_previous_event_id                    NUMBER;
150277 l_first_event_id                       NUMBER;
150278 l_last_event_id                        NUMBER;
150279 
150280 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
150281 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
150282 --
150283 --
150284 l_result                    BOOLEAN := TRUE;
150285 l_rows                      NUMBER  := 1000;
150286 l_event_type_name           VARCHAR2(80) := 'All';
150287 l_event_class_name          VARCHAR2(80) := 'Direct Interorg Shipment';
150288 l_description               VARCHAR2(4000);
150289 l_transaction_reversal      NUMBER;
150290 l_ae_header_id              NUMBER;
150291 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
150292 l_log_module                VARCHAR2(240);
150293 --
150294 l_acct_reversal_source      VARCHAR2(30);
150295 l_trx_reversal_source       VARCHAR2(30);
150296 
150297 l_continue_with_lines       BOOLEAN := TRUE;
150298 --
150299 l_acc_rev_gl_date_source    DATE;                      -- 4262811
150300 --
150301 type t_array_event_id is table of number index by binary_integer;
150302 
150303 l_rec_array_event                    t_rec_array_event;
150304 l_null_rec_array_event               t_rec_array_event;
150305 l_array_ae_header_id                 xla_number_array_type;
150306 l_actual_flag                        VARCHAR2(1) := NULL;
150307 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
150308 l_balance_type_code                  VARCHAR2(1) :=NULL;
150309 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
150310 
150311 --
150312 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
150313 --
150314 
150315 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
150316 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
150317 
150318 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
150319 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
150320 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
150321 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
150322 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
150323 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
150324 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
150325 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
150326 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
150327 
150328 l_array_source_12              t_array_source_12;
150329 l_array_source_12_meaning      t_array_lookup_meaning;
150330 l_array_source_38              t_array_source_38;
150331 l_array_source_38_meaning      t_array_lookup_meaning;
150332 
150333 l_array_source_4      t_array_source_4;
150334 l_array_source_11      t_array_source_11;
150335 l_array_source_15      t_array_source_15;
150336 l_array_source_18      t_array_source_18;
150337 l_array_source_19      t_array_source_19;
150338 l_array_source_20      t_array_source_20;
150339 l_array_source_21      t_array_source_21;
150340 l_array_source_22      t_array_source_22;
150341 l_array_source_24      t_array_source_24;
150342 
150343 --
150344 CURSOR header_cur
150345 IS
150346 SELECT /*+ leading(xet) cardinality(xet,1) */
150347 -- Event Class Code: DIR_INTERORG_SHIP
150348     xet.entity_id
150349    ,xet.legal_entity_id
150350    ,xet.entity_code
150351    ,xet.transaction_number
150352    ,xet.event_id
150353    ,xet.event_class_code
150354    ,xet.event_type_code
150355    ,xet.event_number
150356    ,xet.event_date
150357    ,xet.transaction_date
150358    ,xet.reference_num_1
150359    ,xet.reference_num_2
150360    ,xet.reference_num_3
150361    ,xet.reference_num_4
150362    ,xet.reference_char_1
150363    ,xet.reference_char_2
150364    ,xet.reference_char_3
150365    ,xet.reference_char_4
150366    ,xet.reference_date_1
150367    ,xet.reference_date_2
150368    ,xet.reference_date_3
150369    ,xet.reference_date_4
150370    ,xet.event_created_by
150371    ,xet.budgetary_control_flag 
150372   , h1.DISTRIBUTION_TYPE    source_12
150373   , fvl12.meaning   source_12_meaning
150374   , h1.TRANSFER_TO_GL_INDICATOR    source_38
150375   , fvl38.meaning   source_38_meaning
150376   FROM xla_events_gt     xet 
150377   , CST_XLA_INV_HEADERS_V  h1
150378   , fnd_lookup_values    fvl12
150379   , fnd_lookup_values    fvl38
150380  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
150381    and xet.event_class_code = C_EVENT_CLASS_CODE
150382    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
150383    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
150384   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
150385   AND fvl12.view_application_id(+) = 700
150386   AND fvl12.language(+)            = USERENV('LANG')
150387      AND fvl38.lookup_type(+)         = 'YES_NO'
150388   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
150389   AND fvl38.view_application_id(+) = 0
150390   AND fvl38.language(+)            = USERENV('LANG')
150391   
150392  ORDER BY event_id
150393 ;
150394 
150395 
150396 --
150397 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
150398 IS
150399 SELECT  /*+ leading(xet) cardinality(xet,1) */
150400 -- Event Class Code: DIR_INTERORG_SHIP
150401     xet.entity_id
150402    ,xet.legal_entity_id
150403    ,xet.entity_code
150404    ,xet.transaction_number
150405    ,xet.event_id
150406    ,xet.event_class_code
150407    ,xet.event_type_code
150408    ,xet.event_number
150409    ,xet.event_date
150410    ,xet.transaction_date
150411    ,xet.reference_num_1
150412    ,xet.reference_num_2
150413    ,xet.reference_num_3
150414    ,xet.reference_num_4
150415    ,xet.reference_char_1
150416    ,xet.reference_char_2
150417    ,xet.reference_char_3
150418    ,xet.reference_char_4
150419    ,xet.reference_date_1
150420    ,xet.reference_date_2
150421    ,xet.reference_date_3
150422    ,xet.reference_date_4
150423    ,xet.event_created_by
150424    ,xet.budgetary_control_flag
150425  , l2.LINE_NUMBER  
150426   , l2.CODE_COMBINATION_ID    source_4
150427   , l2.DISTRIBUTION_IDENTIFIER    source_11
150428   , l2.CURRENCY_CODE    source_15
150429   , l2.ENTERED_AMOUNT    source_18
150430   , l2.CURRENCY_CONVERSION_DATE    source_19
150431   , l2.CURRENCY_CONVERSION_RATE    source_20
150432   , l2.CURRENCY_CONVERSION_TYPE    source_21
150433   , l2.ACCOUNTED_AMOUNT    source_22
150434   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
150435   FROM xla_events_gt     xet 
150436   , CST_XLA_INV_LINES_V  l2
150437  WHERE xet.event_id between x_first_event_id and x_last_event_id
150438    and xet.event_date between p_pad_start_date and p_pad_end_date
150439    and xet.event_class_code = C_EVENT_CLASS_CODE
150440    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
150441 ;
150442 
150443 --
150444 BEGIN
150445 IF g_log_enabled THEN
150446    l_log_module := C_DEFAULT_MODULE||'.EventClass_264';
150447 END IF;
150448 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
150449    trace
150450       (p_msg      => 'BEGIN of EventClass_264'
150451       ,p_level    => C_LEVEL_PROCEDURE
150452       ,p_module   => l_log_module);
150453 END IF;
150454 
150455 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150456    trace
150457       (p_msg      => 'p_application_id = '||p_application_id||
150458                      ' - p_base_ledger_id = '||p_base_ledger_id||
150459                      ' - p_target_ledger_id  = '||p_target_ledger_id||
150460                      ' - p_language = '||p_language||
150461                      ' - p_currency_code = '||p_currency_code||
150462                      ' - p_sla_ledger_id = '||p_sla_ledger_id
150463       ,p_level    => C_LEVEL_STATEMENT
150464       ,p_module   => l_log_module);
150465 END IF;
150466 --
150467 -- initialze arrays
150468 --
150469 g_array_event.DELETE;
150470 l_rec_array_event := l_null_rec_array_event;
150471 --
150472 --------------------------------------
150473 -- 4262811 Initialze MPA Line Number
150474 --------------------------------------
150475 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
150476 
150477 --
150478 
150479 --
150480 OPEN header_cur;
150481 --
150482 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150483    trace
150484    (p_msg      => 'SQL - FETCH header_cur'
150485    ,p_level    => C_LEVEL_STATEMENT
150486    ,p_module   => l_log_module);
150487 END IF;
150488 --
150489 LOOP
150490 FETCH header_cur BULK COLLECT INTO
150491         l_array_entity_id
150492       , l_array_legal_entity_id
150493       , l_array_entity_code
150494       , l_array_transaction_num
150495       , l_array_event_id
150496       , l_array_class_code
150497       , l_array_event_type
150498       , l_array_event_number
150499       , l_array_event_date
150500       , l_array_transaction_date
150501       , l_array_reference_num_1
150502       , l_array_reference_num_2
150503       , l_array_reference_num_3
150504       , l_array_reference_num_4
150505       , l_array_reference_char_1
150506       , l_array_reference_char_2
150507       , l_array_reference_char_3
150508       , l_array_reference_char_4
150509       , l_array_reference_date_1
150510       , l_array_reference_date_2
150511       , l_array_reference_date_3
150512       , l_array_reference_date_4
150513       , l_array_event_created_by
150514       , l_array_budgetary_control_flag 
150515       , l_array_source_12
150516       , l_array_source_12_meaning
150517       , l_array_source_38
150518       , l_array_source_38_meaning
150519       LIMIT l_rows;
150520 --
150521 IF (C_LEVEL_EVENT >= g_log_level) THEN
150522    trace
150523    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
150524    ,p_level    => C_LEVEL_EVENT
150525    ,p_module   => l_log_module);
150526 END IF;
150527 --
150528 EXIT WHEN l_array_entity_id.COUNT = 0;
150529 
150530 -- initialize arrays
150531 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
150532 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
150533 
150534 --
150535 -- Bug 4458708
150536 --
150537 XLA_AE_LINES_PKG.g_LineNumber := 0;
150538 
150539 
150540 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
150541 g_last_hdr_idx := l_array_event_id.LAST;
150542 --
150543 -- loop for the headers. Each iteration is for each header extract row
150544 -- fetched in header cursor
150545 --
150546 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
150547 
150548 --
150549 -- set event info as cache for other routines to refer event attributes
150550 --
150551 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
150552    (p_application_id           => p_application_id
150553    ,p_primary_ledger_id        => p_primary_ledger_id
150554    ,p_base_ledger_id           => p_base_ledger_id
150555    ,p_target_ledger_id         => p_target_ledger_id
150556    ,p_entity_id                => l_array_entity_id(hdr_idx)
150557    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
150558    ,p_entity_code              => l_array_entity_code(hdr_idx)
150559    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
150560    ,p_event_id                 => l_array_event_id(hdr_idx)
150561    ,p_event_class_code         => l_array_class_code(hdr_idx)
150562    ,p_event_type_code          => l_array_event_type(hdr_idx)
150563    ,p_event_number             => l_array_event_number(hdr_idx)
150564    ,p_event_date               => l_array_event_date(hdr_idx)
150565    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
150566    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
150567    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
150568    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
150569    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
150570    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
150571    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
150572    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
150573    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
150574    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
150575    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
150576    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
150577    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
150578    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
150579    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
150580 
150581 --
150582 -- set the status of entry to C_VALID (0)
150583 --
150584 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
150585 
150586 --
150587 -- initialize a row for ae header
150588 --
150589 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
150590 
150591 l_event_id := l_array_event_id(hdr_idx);
150592 
150593 --
150594 -- storing the hdr_idx for event. May be used by line cursor.
150595 --
150596 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
150597 
150598 --
150599 -- store sources from header extract. This can be improved to
150600 -- store only those sources from header extract that may be used in lines
150601 --
150602 
150603 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
150604 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
150605 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
150606 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
150607 
150608 --
150609 -- initilaize the status of ae headers for diffrent balance types
150610 -- the status is initialised to C_NOT_CREATED (2)
150611 --
150612 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
150613 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
150614 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
150615 
150616 --
150617 -- call api to validate and store accounting attributes for header
150618 --
150619 
150620 ------------------------------------------------------------
150621 -- Accrual Reversal : to get date for Standard Source (NONE)
150622 ------------------------------------------------------------
150623 l_acc_rev_gl_date_source := NULL;
150624 
150625      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
150626       l_rec_acct_attrs.array_date_value(1) := 
150627 xla_ae_sources_pkg.GetSystemSourceDate(
150628    p_source_code           => 'XLA_REFERENCE_DATE_1'
150629  , p_source_type_code      => 'Y'
150630  , p_source_application_id =>  602
150631 );
150632      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
150633       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
150634 
150635 
150636 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
150637 
150638 XLA_AE_HEADER_PKG.SetJeCategoryName;
150639 
150640 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
150641 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
150642 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
150643 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
150644 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
150645 
150646 
150647 -- No header level analytical criteria
150648 
150649 --
150650 --accounting attribute enhancement, bug 3612931
150651 --
150652 l_trx_reversal_source := SUBSTR(NULL, 1,30);
150653 
150654 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
150655    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
150656 
150657    xla_accounting_err_pkg.build_message
150658       (p_appli_s_name            => 'XLA'
150659       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
150660       ,p_token_1                 => 'ACCT_ATTR_NAME'
150661       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
150662       ,p_token_2                 => 'PRODUCT_NAME'
150663       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
150664       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
150665       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
150666       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
150667 
150668 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
150669    --
150670    -- following sets the accounting attributes needed to reverse
150671    -- accounting for a distributeion
150672    --
150673    xla_ae_lines_pkg.SetTrxReversalAttrs
150674       (p_event_id              => l_event_id
150675       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
150676       ,p_trx_reversal_source   => l_trx_reversal_source);
150677 
150678 END IF;
150679 
150680 
150681 ----------------------------------------------------------------
150682 -- 4262811 -  update the header statuses to invalid in need be
150683 ----------------------------------------------------------------
150684 --
150685 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
150686 
150687 
150688   -----------------------------------------------
150689   -- No accrual reversal for the event class/type
150690   -----------------------------------------------
150691 ----------------------------------------------------------------
150692 
150693 --
150694 -- this ends the header loop iteration for one bulk fetch
150695 --
150696 END LOOP;
150697 
150698 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
150699 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
150700 
150701 --
150702 -- insert dummy rows into lines gt table that were created due to
150703 -- transaction reversals
150704 --
150705 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
150706    l_result := XLA_AE_LINES_PKG.InsertLines;
150707 END IF;
150708 
150709 --
150710 -- reset the temp_line_num for each set of events fetched from header
150711 -- cursor rather than doing it for each new event in line cursor
150712 -- Bug 3939231
150713 --
150714 xla_ae_lines_pkg.g_temp_line_num := 0;
150715 
150716 
150717 
150718 --
150719 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
150720 --
150721 --
150722 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150723 
150724       trace
150725          (p_msg      => 'SQL - FETCH line_cur'
150726          ,p_level    => C_LEVEL_STATEMENT
150727          ,p_module   => l_log_module);
150728 
150729 END IF;
150730 --
150731 --
150732 LOOP
150733   --
150734   FETCH line_cur BULK COLLECT INTO
150735         l_array_entity_id
150736       , l_array_legal_entity_id
150737       , l_array_entity_code
150738       , l_array_transaction_num
150739       , l_array_event_id
150740       , l_array_class_code
150741       , l_array_event_type
150742       , l_array_event_number
150743       , l_array_event_date
150744       , l_array_transaction_date
150745       , l_array_reference_num_1
150746       , l_array_reference_num_2
150747       , l_array_reference_num_3
150748       , l_array_reference_num_4
150749       , l_array_reference_char_1
150750       , l_array_reference_char_2
150751       , l_array_reference_char_3
150752       , l_array_reference_char_4
150753       , l_array_reference_date_1
150754       , l_array_reference_date_2
150755       , l_array_reference_date_3
150756       , l_array_reference_date_4
150757       , l_array_event_created_by
150758       , l_array_budgetary_control_flag
150759       , l_array_extract_line_num 
150760       , l_array_source_4
150761       , l_array_source_11
150762       , l_array_source_15
150763       , l_array_source_18
150764       , l_array_source_19
150765       , l_array_source_20
150766       , l_array_source_21
150767       , l_array_source_22
150768       , l_array_source_24
150769       LIMIT l_rows;
150770 
150771   --
150772   IF (C_LEVEL_EVENT >= g_log_level) THEN
150773             trace
150774                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
150775                ,p_level    => C_LEVEL_EVENT
150776                ,p_module   => l_log_module);
150777   END IF;
150778   --
150779   EXIT WHEN l_array_entity_id.count = 0;
150780 
150781   XLA_AE_LINES_PKG.g_rec_lines := null;
150782 
150783 --
150784 -- Bug 4458708
150785 --
150786 XLA_AE_LINES_PKG.g_LineNumber := 0;
150787 --
150788 --
150789 
150790 FOR Idx IN 1..l_array_event_id.count LOOP
150791    --
150792    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
150793    --
150794    l_event_id := l_array_event_id(idx);  -- 5648433
150795 
150796    --
150797    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
150798    --
150799 
150800    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
150801              (g_array_event(l_event_id).array_value_num('header_index'))
150802          ,'N'
150803          ) <> 'Y'
150804    THEN
150805       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150806          trace
150807             (p_msg      => 'Trancaction revesal option is not Y '
150808             ,p_level    => C_LEVEL_STATEMENT
150809             ,p_module   => l_log_module);
150810       END IF;
150811 
150812 --
150813 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
150814 --
150815 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
150816 --
150817 -- set event info as cache for other routines to refer event attributes
150818 --
150819 
150820 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
150821    l_previous_event_id := l_event_id;
150822 
150823    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
150824       (p_application_id           => p_application_id
150825       ,p_primary_ledger_id        => p_primary_ledger_id
150826       ,p_base_ledger_id           => p_base_ledger_id
150827       ,p_target_ledger_id         => p_target_ledger_id
150828       ,p_entity_id                => l_array_entity_id(Idx)
150829       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
150830       ,p_entity_code              => l_array_entity_code(Idx)
150831       ,p_transaction_num          => l_array_transaction_num(Idx)
150832       ,p_event_id                 => l_array_event_id(Idx)
150833       ,p_event_class_code         => l_array_class_code(Idx)
150834       ,p_event_type_code          => l_array_event_type(Idx)
150835       ,p_event_number             => l_array_event_number(Idx)
150836       ,p_event_date               => l_array_event_date(Idx)
150837       ,p_transaction_date         => l_array_transaction_date(Idx)
150838       ,p_reference_num_1          => l_array_reference_num_1(Idx)
150839       ,p_reference_num_2          => l_array_reference_num_2(Idx)
150840       ,p_reference_num_3          => l_array_reference_num_3(Idx)
150841       ,p_reference_num_4          => l_array_reference_num_4(Idx)
150842       ,p_reference_char_1         => l_array_reference_char_1(Idx)
150843       ,p_reference_char_2         => l_array_reference_char_2(Idx)
150844       ,p_reference_char_3         => l_array_reference_char_3(Idx)
150845       ,p_reference_char_4         => l_array_reference_char_4(Idx)
150846       ,p_reference_date_1         => l_array_reference_date_1(Idx)
150847       ,p_reference_date_2         => l_array_reference_date_2(Idx)
150848       ,p_reference_date_3         => l_array_reference_date_3(Idx)
150849       ,p_reference_date_4         => l_array_reference_date_4(Idx)
150850       ,p_event_created_by         => l_array_event_created_by(Idx)
150851       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
150852        --
150853 END IF;
150854 
150855 
150856 
150857 --
150858 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
150859 
150860 l_acct_reversal_source := SUBSTR(NULL, 1,30);
150861 
150862 IF l_continue_with_lines THEN
150863    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
150864       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
150865 
150866       xla_accounting_err_pkg.build_message
150867          (p_appli_s_name            => 'XLA'
150868          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
150869          ,p_token_1                 => 'LINE_NUMBER'
150870          ,p_value_1                 => l_array_extract_line_num(Idx)
150871          ,p_token_2                 => 'PRODUCT_NAME'
150872          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
150873          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
150874          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
150875          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
150876 
150877    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
150878       --
150879       -- following sets the accounting attributes needed to reverse
150880       -- accounting for a distributeion
150881       --
150882 
150883       --
150884       -- 5217187
150885       --
150886       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
150887       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
150888                                        g_array_event(l_event_id).array_value_num('header_index'));
150889       --
150890       --
150891 
150892       -- No reversal code generated
150893 
150894       xla_ae_lines_pkg.SetAcctReversalAttrs
150895          (p_event_id             => l_event_id
150896          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
150897          ,p_calculate_acctd_flag => l_calculate_acctd_flag
150898          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
150899    END IF;
150900 
150901    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
150902        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
150903 
150904 --
150905 AcctLineType_68 (
150906  p_application_id  => p_application_id
150907  ,p_event_id     => l_event_id
150908  ,p_calculate_acctd_flag => l_calculate_acctd_flag
150909  ,p_calculate_g_l_flag => l_calculate_g_l_flag
150910  ,p_actual_flag => l_actual_flag
150911  ,p_balance_type_code => l_balance_type_code
150912  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
150913  
150914  , p_source_4 => l_array_source_4(Idx)
150915  , p_source_11 => l_array_source_11(Idx)
150916  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
150917  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
150918  , p_source_15 => l_array_source_15(Idx)
150919  , p_source_18 => l_array_source_18(Idx)
150920  , p_source_19 => l_array_source_19(Idx)
150921  , p_source_20 => l_array_source_20(Idx)
150922  , p_source_21 => l_array_source_21(Idx)
150923  , p_source_22 => l_array_source_22(Idx)
150924  , p_source_24 => l_array_source_24(Idx)
150925  );
150926 If(l_balance_type_code = 'A') THEN
150927   l_actual_gain_loss_ref := l_gain_or_loss_ref;
150928 END IF;
150929 
150930 --
150931 
150932 
150933 --
150934 AcctLineType_76 (
150935  p_application_id  => p_application_id
150936  ,p_event_id     => l_event_id
150937  ,p_calculate_acctd_flag => l_calculate_acctd_flag
150938  ,p_calculate_g_l_flag => l_calculate_g_l_flag
150939  ,p_actual_flag => l_actual_flag
150940  ,p_balance_type_code => l_balance_type_code
150941  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
150942  
150943  , p_source_4 => l_array_source_4(Idx)
150944  , p_source_11 => l_array_source_11(Idx)
150945  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
150946  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
150947  , p_source_15 => l_array_source_15(Idx)
150948  , p_source_18 => l_array_source_18(Idx)
150949  , p_source_19 => l_array_source_19(Idx)
150950  , p_source_20 => l_array_source_20(Idx)
150951  , p_source_21 => l_array_source_21(Idx)
150952  , p_source_22 => l_array_source_22(Idx)
150953  , p_source_24 => l_array_source_24(Idx)
150954  );
150955 If(l_balance_type_code = 'A') THEN
150956   l_actual_gain_loss_ref := l_gain_or_loss_ref;
150957 END IF;
150958 
150959 --
150960 
150961 
150962 --
150963 AcctLineType_95 (
150964  p_application_id  => p_application_id
150965  ,p_event_id     => l_event_id
150966  ,p_calculate_acctd_flag => l_calculate_acctd_flag
150967  ,p_calculate_g_l_flag => l_calculate_g_l_flag
150968  ,p_actual_flag => l_actual_flag
150969  ,p_balance_type_code => l_balance_type_code
150970  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
150971  
150972  , p_source_4 => l_array_source_4(Idx)
150973  , p_source_11 => l_array_source_11(Idx)
150974  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
150975  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
150976  , p_source_15 => l_array_source_15(Idx)
150977  , p_source_18 => l_array_source_18(Idx)
150978  , p_source_19 => l_array_source_19(Idx)
150979  , p_source_20 => l_array_source_20(Idx)
150980  , p_source_21 => l_array_source_21(Idx)
150981  , p_source_22 => l_array_source_22(Idx)
150982  , p_source_24 => l_array_source_24(Idx)
150983  );
150984 If(l_balance_type_code = 'A') THEN
150985   l_actual_gain_loss_ref := l_gain_or_loss_ref;
150986 END IF;
150987 
150988 --
150989 
150990 
150991 --
150992 AcctLineType_105 (
150993  p_application_id  => p_application_id
150994  ,p_event_id     => l_event_id
150995  ,p_calculate_acctd_flag => l_calculate_acctd_flag
150996  ,p_calculate_g_l_flag => l_calculate_g_l_flag
150997  ,p_actual_flag => l_actual_flag
150998  ,p_balance_type_code => l_balance_type_code
150999  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
151000  
151001  , p_source_4 => l_array_source_4(Idx)
151002  , p_source_11 => l_array_source_11(Idx)
151003  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
151004  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
151005  , p_source_15 => l_array_source_15(Idx)
151006  , p_source_18 => l_array_source_18(Idx)
151007  , p_source_19 => l_array_source_19(Idx)
151008  , p_source_20 => l_array_source_20(Idx)
151009  , p_source_21 => l_array_source_21(Idx)
151010  , p_source_22 => l_array_source_22(Idx)
151011  , p_source_24 => l_array_source_24(Idx)
151012  );
151013 If(l_balance_type_code = 'A') THEN
151014   l_actual_gain_loss_ref := l_gain_or_loss_ref;
151015 END IF;
151016 
151017 --
151018 
151019 
151020 --
151021 AcctLineType_116 (
151022  p_application_id  => p_application_id
151023  ,p_event_id     => l_event_id
151024  ,p_calculate_acctd_flag => l_calculate_acctd_flag
151025  ,p_calculate_g_l_flag => l_calculate_g_l_flag
151026  ,p_actual_flag => l_actual_flag
151027  ,p_balance_type_code => l_balance_type_code
151028  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
151029  
151030  , p_source_4 => l_array_source_4(Idx)
151031  , p_source_11 => l_array_source_11(Idx)
151032  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
151033  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
151034  , p_source_15 => l_array_source_15(Idx)
151035  , p_source_18 => l_array_source_18(Idx)
151036  , p_source_19 => l_array_source_19(Idx)
151037  , p_source_20 => l_array_source_20(Idx)
151038  , p_source_21 => l_array_source_21(Idx)
151039  , p_source_22 => l_array_source_22(Idx)
151040  , p_source_24 => l_array_source_24(Idx)
151041  );
151042 If(l_balance_type_code = 'A') THEN
151043   l_actual_gain_loss_ref := l_gain_or_loss_ref;
151044 END IF;
151045 
151046 --
151047 
151048 
151049 --
151050 AcctLineType_156 (
151051  p_application_id  => p_application_id
151052  ,p_event_id     => l_event_id
151053  ,p_calculate_acctd_flag => l_calculate_acctd_flag
151054  ,p_calculate_g_l_flag => l_calculate_g_l_flag
151055  ,p_actual_flag => l_actual_flag
151056  ,p_balance_type_code => l_balance_type_code
151057  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
151058  
151059  , p_source_4 => l_array_source_4(Idx)
151060  , p_source_11 => l_array_source_11(Idx)
151061  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
151062  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
151063  , p_source_15 => l_array_source_15(Idx)
151064  , p_source_18 => l_array_source_18(Idx)
151065  , p_source_19 => l_array_source_19(Idx)
151066  , p_source_20 => l_array_source_20(Idx)
151067  , p_source_21 => l_array_source_21(Idx)
151068  , p_source_22 => l_array_source_22(Idx)
151069  , p_source_24 => l_array_source_24(Idx)
151070  );
151071 If(l_balance_type_code = 'A') THEN
151072   l_actual_gain_loss_ref := l_gain_or_loss_ref;
151073 END IF;
151074 
151075 --
151076 
151077 
151078 --
151079 AcctLineType_170 (
151080  p_application_id  => p_application_id
151081  ,p_event_id     => l_event_id
151082  ,p_calculate_acctd_flag => l_calculate_acctd_flag
151083  ,p_calculate_g_l_flag => l_calculate_g_l_flag
151084  ,p_actual_flag => l_actual_flag
151085  ,p_balance_type_code => l_balance_type_code
151086  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
151087  
151088  , p_source_4 => l_array_source_4(Idx)
151089  , p_source_11 => l_array_source_11(Idx)
151090  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
151091  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
151092  , p_source_15 => l_array_source_15(Idx)
151093  , p_source_18 => l_array_source_18(Idx)
151094  , p_source_19 => l_array_source_19(Idx)
151095  , p_source_20 => l_array_source_20(Idx)
151096  , p_source_21 => l_array_source_21(Idx)
151097  , p_source_22 => l_array_source_22(Idx)
151098  , p_source_24 => l_array_source_24(Idx)
151099  );
151100 If(l_balance_type_code = 'A') THEN
151101   l_actual_gain_loss_ref := l_gain_or_loss_ref;
151102 END IF;
151103 
151104 --
151105 
151106 
151107 --
151108 AcctLineType_184 (
151109  p_application_id  => p_application_id
151110  ,p_event_id     => l_event_id
151111  ,p_calculate_acctd_flag => l_calculate_acctd_flag
151112  ,p_calculate_g_l_flag => l_calculate_g_l_flag
151113  ,p_actual_flag => l_actual_flag
151114  ,p_balance_type_code => l_balance_type_code
151115  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
151116  
151117  , p_source_4 => l_array_source_4(Idx)
151118  , p_source_11 => l_array_source_11(Idx)
151119  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
151120  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
151121  , p_source_15 => l_array_source_15(Idx)
151122  , p_source_18 => l_array_source_18(Idx)
151123  , p_source_19 => l_array_source_19(Idx)
151124  , p_source_20 => l_array_source_20(Idx)
151125  , p_source_21 => l_array_source_21(Idx)
151126  , p_source_22 => l_array_source_22(Idx)
151127  , p_source_24 => l_array_source_24(Idx)
151128  );
151129 If(l_balance_type_code = 'A') THEN
151130   l_actual_gain_loss_ref := l_gain_or_loss_ref;
151131 END IF;
151132 
151133 --
151134 
151135 
151136 --
151137 AcctLineType_225 (
151138  p_application_id  => p_application_id
151139  ,p_event_id     => l_event_id
151140  ,p_calculate_acctd_flag => l_calculate_acctd_flag
151141  ,p_calculate_g_l_flag => l_calculate_g_l_flag
151142  ,p_actual_flag => l_actual_flag
151143  ,p_balance_type_code => l_balance_type_code
151144  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
151145  
151146  , p_source_4 => l_array_source_4(Idx)
151147  , p_source_11 => l_array_source_11(Idx)
151148  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
151149  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
151150  , p_source_15 => l_array_source_15(Idx)
151151  , p_source_18 => l_array_source_18(Idx)
151152  , p_source_19 => l_array_source_19(Idx)
151153  , p_source_20 => l_array_source_20(Idx)
151154  , p_source_21 => l_array_source_21(Idx)
151155  , p_source_22 => l_array_source_22(Idx)
151156  , p_source_24 => l_array_source_24(Idx)
151157  );
151158 If(l_balance_type_code = 'A') THEN
151159   l_actual_gain_loss_ref := l_gain_or_loss_ref;
151160 END IF;
151161 
151162 --
151163 
151164       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
151165       -- or secondary ledger that has different currency with primary
151166       -- or alc that is calculated by sla
151167       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
151168             (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'))
151169 
151170 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
151171 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
151172           AND (l_actual_flag = 'A')) THEN
151173         XLA_AE_LINES_PKG.CreateGainOrLossLines(
151174           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
151175          ,p_application_id   => p_application_id
151176          ,p_amb_context_code => 'DEFAULT'
151177          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
151178          ,p_event_class_code => C_EVENT_CLASS_CODE
151179          ,p_event_type_code  => C_EVENT_TYPE_CODE
151180          
151181          ,p_gain_ccid        => -1
151182          ,p_loss_ccid        => -1
151183 
151184          ,p_actual_flag      => l_actual_flag
151185          ,p_enc_flag         => null
151186          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
151187          ,p_enc_g_l_ref      => null
151188          );
151189       END IF;
151190    END IF;
151191 END IF;
151192 
151193    ELSE
151194       --
151195       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
151196       --
151197       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151198          trace
151199             (p_msg      => 'Trancaction revesal option is Y'
151200             ,p_level    => C_LEVEL_STATEMENT
151201             ,p_module   => l_log_module);
151202       END IF;
151203    END IF;
151204 
151205 END LOOP;
151206 l_result := XLA_AE_LINES_PKG.InsertLines ;
151207 end loop;
151208 close line_cur;
151209 
151210 
151211 --
151212 -- insert headers into xla_ae_headers_gt table
151213 --
151214 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
151215 
151216 -- insert into errors table here.
151217 
151218 END LOOP;
151219 
151220 --
151221 -- 4865292
151222 --
151223 -- Compare g_hdr_extract_count with event count in
151224 -- CreateHeadersAndLines.
151225 --
151226 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
151227 
151228 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151229    trace (p_msg     => '# rows extracted from header extract objects '
151230                     || ' (running total): '
151231                     || g_hdr_extract_count
151232          ,p_level   => C_LEVEL_STATEMENT
151233          ,p_module  => l_log_module);
151234 END IF;
151235 
151236 CLOSE header_cur;
151237 --
151238 
151239 --
151240 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
151241    trace
151242       (p_msg      => 'END of EventClass_264'
151243       ,p_level    => C_LEVEL_PROCEDURE
151244       ,p_module   => l_log_module);
151245 END IF;
151246 --
151247 RETURN l_result;
151248 EXCEPTION
151249 WHEN xla_exceptions_pkg.application_exception THEN
151250    
151251 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
151252 
151253    
151254 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
151255 
151256    RAISE;
151257 
151258 WHEN NO_DATA_FOUND THEN
151259 
151260 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
151261 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
151262 
151263 FOR header_record IN header_cur
151264 LOOP
151265     l_array_header_events(header_record.event_id) := header_record.event_id;
151266 END LOOP;
151267 
151268 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
151269 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
151270 
151271 fnd_file.put_line(fnd_file.LOG, '                    ');
151272 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
151273 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
151274 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
151275 
151276 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
151277 LOOP
151278 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
151279 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
151280         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
151281 	END IF;
151282 END LOOP;
151283 
151284 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
151285 fnd_file.put_line(fnd_file.LOG, '                    ');
151286 
151287 
151288 xla_exceptions_pkg.raise_message
151289       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_264');
151290 
151291 
151292 WHEN OTHERS THEN
151293    xla_exceptions_pkg.raise_message
151294       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_264');
151295 END EventClass_264;
151296 --
151297 
151298 ---------------------------------------
151299 --
151300 -- PRIVATE PROCEDURE
151301 --         insert_sources_265
151302 --
151303 ----------------------------------------
151304 --
151305 PROCEDURE insert_sources_265(
151306                                 p_target_ledger_id       IN NUMBER
151307                               , p_language               IN VARCHAR2
151308                               , p_sla_ledger_id          IN NUMBER
151309                               , p_pad_start_date         IN DATE
151310                               , p_pad_end_date           IN DATE
151311                          )
151312 IS
151313 
151314 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
151315 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT';
151316 p_apps_owner                   VARCHAR2(30);
151317 l_log_module                   VARCHAR2(240);
151318 BEGIN
151319 IF g_log_enabled THEN
151320       l_log_module := C_DEFAULT_MODULE||'.insert_sources_265';
151321 END IF;
151322 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
151323 
151324       trace
151325          (p_msg      => 'BEGIN of insert_sources_265'
151326          ,p_level    => C_LEVEL_PROCEDURE
151327          ,p_module   => l_log_module);
151328 
151329 END IF;
151330 
151331 -- select APPS owner
151332 SELECT oracle_username
151333   INTO p_apps_owner
151334   FROM fnd_oracle_userid
151335  WHERE read_only_flag = 'U'
151336 ;
151337 
151338 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151339       trace
151340          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
151341                         ' - p_language = '||p_language||
151342                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
151343                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
151344                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
151345                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
151346          ,p_level    => C_LEVEL_STATEMENT
151347          ,p_module   => l_log_module);
151348 END IF;
151349 
151350 
151351 --
151352 INSERT INTO xla_diag_sources --hdr2
151353 (
151354         event_id
151355       , ledger_id
151356       , sla_ledger_id
151357       , description_language
151358       , object_name
151359       , object_type_code
151360       , line_number
151361       , source_application_id
151362       , source_type_code
151363       , source_code
151364       , source_value
151365       , source_meaning
151366       , created_by
151367       , creation_date
151368       , last_update_date
151369       , last_updated_by
151370       , last_update_login
151371       , program_update_date
151372       , program_application_id
151373       , program_id
151374       , request_id
151375 )
151376 SELECT
151377         event_id
151378       , p_target_ledger_id
151379       , p_sla_ledger_id
151380       , p_language
151381       , object_name
151382       , object_type_code
151383       , line_number
151384       , source_application_id
151385       , source_type_code
151386       , source_code
151387       , SUBSTR(source_value ,1,1996)
151388       , SUBSTR(source_meaning ,1,200)
151389       , xla_environment_pkg.g_Usr_Id
151390       , TRUNC(SYSDATE)
151391       , TRUNC(SYSDATE)
151392       , xla_environment_pkg.g_Usr_Id
151393       , xla_environment_pkg.g_Login_Id
151394       , TRUNC(SYSDATE)
151395       , xla_environment_pkg.g_Prog_Appl_Id
151396       , xla_environment_pkg.g_Prog_Id
151397       , xla_environment_pkg.g_Req_Id
151398   FROM (
151399        SELECT xet.event_id                  event_id
151400             , 0                          line_number
151401             , CASE r
151402                WHEN 1 THEN 'CST_XLA_INV_REF_V' 
151403                 WHEN 2 THEN 'CST_XLA_INV_REF_V' 
151404                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
151405                 WHEN 4 THEN 'CST_XLA_INV_HEADERS_V' 
151406                 WHEN 5 THEN 'CST_XLA_INV_REF_V' 
151407                 WHEN 6 THEN 'CST_XLA_INV_REF_V' 
151408                 WHEN 7 THEN 'PSA_CST_XLA_UPG_V' 
151409                 WHEN 8 THEN 'CST_XLA_INV_REF_V' 
151410                 WHEN 9 THEN 'CST_XLA_INV_REF_V' 
151411                 WHEN 10 THEN 'PO_REQ_DISTS_REF_V' 
151412                 WHEN 11 THEN 'PO_REQ_HEADERS_REF_V' 
151413                 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V' 
151414                 
151415                ELSE null
151416               END                           object_name
151417             , CASE r
151418                 WHEN 1 THEN 'HEADER' 
151419                 WHEN 2 THEN 'HEADER' 
151420                 WHEN 3 THEN 'HEADER' 
151421                 WHEN 4 THEN 'HEADER' 
151422                 WHEN 5 THEN 'HEADER' 
151423                 WHEN 6 THEN 'HEADER' 
151424                 WHEN 7 THEN 'HEADER' 
151425                 WHEN 8 THEN 'HEADER' 
151426                 WHEN 9 THEN 'HEADER' 
151427                 WHEN 10 THEN 'HEADER' 
151428                 WHEN 11 THEN 'HEADER' 
151429                 WHEN 12 THEN 'HEADER' 
151430                 
151431                 ELSE null
151432               END                           object_type_code
151433             , CASE r
151434                 WHEN 1 THEN '707' 
151435                 WHEN 2 THEN '707' 
151436                 WHEN 3 THEN '707' 
151437                 WHEN 4 THEN '707' 
151438                 WHEN 5 THEN '707' 
151439                 WHEN 6 THEN '707' 
151440                 WHEN 7 THEN '707' 
151441                 WHEN 8 THEN '707' 
151442                 WHEN 9 THEN '707' 
151443                 WHEN 10 THEN '201' 
151444                 WHEN 11 THEN '201' 
151445                 WHEN 12 THEN '707' 
151446                 
151447                 ELSE null
151448               END                           source_application_id
151449             , 'S'             source_type_code
151450             , CASE r
151451                 WHEN 1 THEN 'APPLIED_TO_APPL_ID' 
151452                 WHEN 2 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
151453                 WHEN 3 THEN 'APPLIED_TO_ENTITY_CODE' 
151454                 WHEN 4 THEN 'DISTRIBUTION_TYPE' 
151455                 WHEN 5 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
151456                 WHEN 6 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
151457                 WHEN 7 THEN 'CST_ENCUM_UPG_OPTION' 
151458                 WHEN 8 THEN 'TXN_PO_DISTRIBUTION_ID' 
151459                 WHEN 9 THEN 'TXN_PO_HEADER_ID' 
151460                 WHEN 10 THEN 'REQ_BUDGET_ACCOUNT' 
151461                 WHEN 11 THEN 'REQ_ENCUMBRANCE_TYPE_ID' 
151462                 WHEN 12 THEN 'TRANSFER_TO_GL_INDICATOR' 
151463                 
151464                 ELSE null
151465               END                           source_code
151466             , CASE r
151467                 WHEN 1 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
151468                 WHEN 2 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
151469                 WHEN 3 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
151470                 WHEN 4 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
151471                 WHEN 5 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
151472                 WHEN 6 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
151473                 WHEN 7 THEN TO_CHAR(h6.CST_ENCUM_UPG_OPTION)
151474                 WHEN 8 THEN TO_CHAR(h3.TXN_PO_DISTRIBUTION_ID)
151475                 WHEN 9 THEN TO_CHAR(h3.TXN_PO_HEADER_ID)
151476                 WHEN 10 THEN TO_CHAR(h4.REQ_BUDGET_ACCOUNT)
151477                 WHEN 11 THEN TO_CHAR(h5.REQ_ENCUMBRANCE_TYPE_ID)
151478                 WHEN 12 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
151479                 
151480                 ELSE null
151481               END                           source_value
151482             , CASE r
151483                 WHEN 4 THEN fvl12.meaning
151484                 WHEN 12 THEN fvl38.meaning
151485                 
151486                 ELSE null
151487               END               source_meaning
151488          FROM xla_events_gt     xet  
151489       , CST_XLA_INV_HEADERS_V  h1
151490       , CST_XLA_INV_REF_V  h3
151491       , PO_REQ_DISTS_REF_V  h4
151492       , PO_REQ_HEADERS_REF_V  h5
151493       , PSA_CST_XLA_UPG_V  h6
151494   , fnd_lookup_values    fvl12
151495   , fnd_lookup_values    fvl38
151496              ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
151497          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
151498            AND xet.event_class_code = C_EVENT_CLASS_CODE
151499               AND h1.event_id = xet.event_id
151500  AND h3.ref_transaction_id = h1.transaction_id AND h3.bus_flow_req_dist_id=h4.req_distribution_id (+)  AND h3.bus_flow_req_id = h5.req_id (+)  AND h3.rcv_transaction_id = h6.transaction_id (+)    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
151501   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
151502   AND fvl12.view_application_id(+) = 700
151503   AND fvl12.language(+)            = USERENV('LANG')
151504      AND fvl38.lookup_type(+)         = 'YES_NO'
151505   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
151506   AND fvl38.view_application_id(+) = 0
151507   AND fvl38.language(+)            = USERENV('LANG')
151508   
151509 )
151510 ;
151511 --
151512 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151513 
151514       trace
151515          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
151516          ,p_level    => C_LEVEL_STATEMENT
151517          ,p_module   => l_log_module);
151518 
151519 END IF;
151520 --
151521 
151522 
151523 
151524 --
151525 INSERT INTO xla_diag_sources  --line2
151526 (
151527         event_id
151528       , ledger_id
151529       , sla_ledger_id
151530       , description_language
151531       , object_name
151532       , object_type_code
151533       , line_number
151534       , source_application_id
151535       , source_type_code
151536       , source_code
151537       , source_value
151538       , source_meaning
151539       , created_by
151540       , creation_date
151541       , last_update_date
151542       , last_updated_by
151543       , last_update_login
151544       , program_update_date
151545       , program_application_id
151546       , program_id
151547       , request_id
151548 )
151549 SELECT  event_id
151550       , p_target_ledger_id
151551       , p_sla_ledger_id
151552       , p_language
151553       , object_name
151554       , object_type_code
151555       , line_number
151556       , source_application_id
151557       , source_type_code
151558       , source_code
151559       , SUBSTR(source_value,1,1996)
151560       , SUBSTR(source_meaning ,1,200)
151561       , xla_environment_pkg.g_Usr_Id
151562       , TRUNC(SYSDATE)
151563       , TRUNC(SYSDATE)
151564       , xla_environment_pkg.g_Usr_Id
151565       , xla_environment_pkg.g_Login_Id
151566       , TRUNC(SYSDATE)
151567       , xla_environment_pkg.g_Prog_Appl_Id
151568       , xla_environment_pkg.g_Prog_Id
151569       , xla_environment_pkg.g_Req_Id
151570   FROM (
151571        SELECT xet.event_id                  event_id
151572             , l2.line_number                 line_number
151573             , CASE r
151574                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
151575                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
151576                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
151577                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
151578                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
151579                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
151580                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
151581                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
151582                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
151583                 
151584                ELSE null
151585               END                           object_name
151586             , CASE r
151587                 WHEN 1 THEN 'LINE' 
151588                 WHEN 2 THEN 'LINE' 
151589                 WHEN 3 THEN 'LINE' 
151590                 WHEN 4 THEN 'LINE' 
151591                 WHEN 5 THEN 'LINE' 
151592                 WHEN 6 THEN 'LINE' 
151593                 WHEN 7 THEN 'LINE' 
151594                 WHEN 8 THEN 'LINE' 
151595                 WHEN 9 THEN 'LINE' 
151596                 
151597                 ELSE null
151598               END                           object_type_code
151599             , CASE r
151600                 WHEN 1 THEN '707' 
151601                 WHEN 2 THEN '707' 
151602                 WHEN 3 THEN '707' 
151603                 WHEN 4 THEN '707' 
151604                 WHEN 5 THEN '707' 
151605                 WHEN 6 THEN '707' 
151606                 WHEN 7 THEN '707' 
151607                 WHEN 8 THEN '707' 
151608                 WHEN 9 THEN '707' 
151609                 
151610                 ELSE null
151611               END                           source_application_id
151612             , 'S'             source_type_code
151613             , CASE r
151614                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
151615                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
151616                 WHEN 3 THEN 'CURRENCY_CODE' 
151617                 WHEN 4 THEN 'ENTERED_AMOUNT' 
151618                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
151619                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
151620                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
151621                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
151622                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
151623                 
151624                 ELSE null
151625               END                           source_code
151626             , CASE r
151627                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
151628                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
151629                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
151630                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
151631                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
151632                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
151633                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
151634                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
151635                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
151636                 
151637                 ELSE null
151638               END                           source_value
151639             , null              source_meaning
151640          FROM  xla_events_gt     xet  
151641         , CST_XLA_INV_LINES_V  l2
151642             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
151643         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
151644           AND xet.event_class_code = C_EVENT_CLASS_CODE
151645             AND l2.event_id          = xet.event_id
151646 
151647 )
151648 ;
151649 --
151650 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151651 
151652       trace
151653          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
151654          ,p_level    => C_LEVEL_STATEMENT
151655          ,p_module   => l_log_module);
151656 
151657 END IF;
151658 
151659 
151660 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
151661       trace
151662          (p_msg      => 'END of insert_sources_265'
151663          ,p_level    => C_LEVEL_PROCEDURE
151664          ,p_module   => l_log_module);
151665 END IF;
151666 EXCEPTION
151667   WHEN xla_exceptions_pkg.application_exception THEN
151668       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
151669             trace
151670                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
151671                ,p_level    => C_LEVEL_EXCEPTION
151672                ,p_module   => l_log_module);
151673       END IF;
151674       RAISE;
151675   WHEN OTHERS THEN
151676       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
151677             trace
151678                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
151679                ,p_level    => C_LEVEL_EXCEPTION
151680                ,p_module   => l_log_module);
151681        END IF;
151682        xla_exceptions_pkg.raise_message
151683            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_265');
151684 END insert_sources_265;
151685 --
151686 
151687 ---------------------------------------
151688 --
151689 -- PRIVATE FUNCTION
151690 --         EventClass_265
151691 --
151692 ----------------------------------------
151693 --
151694 FUNCTION EventClass_265
151695        (p_application_id         IN NUMBER
151696        ,p_base_ledger_id         IN NUMBER
151697        ,p_target_ledger_id       IN NUMBER
151698        ,p_language               IN VARCHAR2
151699        ,p_currency_code          IN VARCHAR2
151700        ,p_sla_ledger_id          IN NUMBER
151701        ,p_pad_start_date         IN DATE
151702        ,p_pad_end_date           IN DATE
151703        ,p_primary_ledger_id      IN NUMBER)
151704 RETURN BOOLEAN IS
151705 --
151706 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
151707 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT';
151708 
151709 l_calculate_acctd_flag   VARCHAR2(1) :='N';
151710 l_calculate_g_l_flag     VARCHAR2(1) :='N';
151711 --
151712 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151713 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151714 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
151715 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
151716 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151717 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
151718 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
151719 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151720 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
151721 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
151722 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151723 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151724 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151725 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151726 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
151727 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
151728 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
151729 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
151730 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
151731 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
151732 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
151733 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
151734 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
151735 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
151736 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
151737 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
151738 
151739 l_event_id                             NUMBER;
151740 l_previous_event_id                    NUMBER;
151741 l_first_event_id                       NUMBER;
151742 l_last_event_id                        NUMBER;
151743 
151744 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
151745 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
151746 --
151747 --
151748 l_result                    BOOLEAN := TRUE;
151749 l_rows                      NUMBER  := 1000;
151750 l_event_type_name           VARCHAR2(80) := 'All';
151751 l_event_class_name          VARCHAR2(80) := 'Recipient-side Intransit Interorg Receipt for FOB Receipt';
151752 l_description               VARCHAR2(4000);
151753 l_transaction_reversal      NUMBER;
151754 l_ae_header_id              NUMBER;
151755 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
151756 l_log_module                VARCHAR2(240);
151757 --
151758 l_acct_reversal_source      VARCHAR2(30);
151759 l_trx_reversal_source       VARCHAR2(30);
151760 
151761 l_continue_with_lines       BOOLEAN := TRUE;
151762 --
151763 l_acc_rev_gl_date_source    DATE;                      -- 4262811
151764 --
151765 type t_array_event_id is table of number index by binary_integer;
151766 
151767 l_rec_array_event                    t_rec_array_event;
151768 l_null_rec_array_event               t_rec_array_event;
151769 l_array_ae_header_id                 xla_number_array_type;
151770 l_actual_flag                        VARCHAR2(1) := NULL;
151771 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
151772 l_balance_type_code                  VARCHAR2(1) :=NULL;
151773 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
151774 
151775 --
151776 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
151777 --
151778 
151779 TYPE t_array_source_6 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
151780 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
151781 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
151782 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
151783 TYPE t_array_source_14 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
151784 TYPE t_array_source_16 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
151785 TYPE t_array_source_27 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
151786 TYPE t_array_source_28 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
151787 TYPE t_array_source_29 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_HEADER_ID%TYPE INDEX BY BINARY_INTEGER;
151788 TYPE t_array_source_30 IS TABLE OF PO_REQ_DISTS_REF_V.REQ_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
151789 TYPE t_array_source_31 IS TABLE OF PO_REQ_HEADERS_REF_V.REQ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
151790 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
151791 
151792 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
151793 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
151794 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
151795 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
151796 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
151797 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
151798 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
151799 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
151800 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
151801 
151802 l_array_source_6              t_array_source_6;
151803 l_array_source_7              t_array_source_7;
151804 l_array_source_8              t_array_source_8;
151805 l_array_source_12              t_array_source_12;
151806 l_array_source_12_meaning      t_array_lookup_meaning;
151807 l_array_source_14              t_array_source_14;
151808 l_array_source_16              t_array_source_16;
151809 l_array_source_27              t_array_source_27;
151810 l_array_source_28              t_array_source_28;
151811 l_array_source_29              t_array_source_29;
151812 l_array_source_30              t_array_source_30;
151813 l_array_source_31              t_array_source_31;
151814 l_array_source_38              t_array_source_38;
151815 l_array_source_38_meaning      t_array_lookup_meaning;
151816 
151817 l_array_source_4      t_array_source_4;
151818 l_array_source_11      t_array_source_11;
151819 l_array_source_15      t_array_source_15;
151820 l_array_source_18      t_array_source_18;
151821 l_array_source_19      t_array_source_19;
151822 l_array_source_20      t_array_source_20;
151823 l_array_source_21      t_array_source_21;
151824 l_array_source_22      t_array_source_22;
151825 l_array_source_24      t_array_source_24;
151826 
151827 --
151828 CURSOR header_cur
151829 IS
151830 SELECT /*+ leading(xet) cardinality(xet,1) */
151831 -- Event Class Code: FOB_RCPT_RECIPIENT_RCPT
151832     xet.entity_id
151833    ,xet.legal_entity_id
151834    ,xet.entity_code
151835    ,xet.transaction_number
151836    ,xet.event_id
151837    ,xet.event_class_code
151838    ,xet.event_type_code
151839    ,xet.event_number
151840    ,xet.event_date
151841    ,xet.transaction_date
151842    ,xet.reference_num_1
151843    ,xet.reference_num_2
151844    ,xet.reference_num_3
151845    ,xet.reference_num_4
151846    ,xet.reference_char_1
151847    ,xet.reference_char_2
151848    ,xet.reference_char_3
151849    ,xet.reference_char_4
151850    ,xet.reference_date_1
151851    ,xet.reference_date_2
151852    ,xet.reference_date_3
151853    ,xet.reference_date_4
151854    ,xet.event_created_by
151855    ,xet.budgetary_control_flag 
151856   , h3.APPLIED_TO_APPL_ID    source_6
151857   , h3.APPLIED_TO_DIST_LINK_TYPE    source_7
151858   , h3.APPLIED_TO_ENTITY_CODE    source_8
151859   , h1.DISTRIBUTION_TYPE    source_12
151860   , fvl12.meaning   source_12_meaning
151861   , h3.ENCUM_REVERSAL_AMOUNT_ENTERED    source_14
151862   , h3.ENCUMBRANCE_REVERSAL_AMOUNT    source_16
151863   , h6.CST_ENCUM_UPG_OPTION    source_27
151864   , h3.TXN_PO_DISTRIBUTION_ID    source_28
151865   , h3.TXN_PO_HEADER_ID    source_29
151866   , h4.REQ_BUDGET_ACCOUNT    source_30
151867   , h5.REQ_ENCUMBRANCE_TYPE_ID    source_31
151868   , h1.TRANSFER_TO_GL_INDICATOR    source_38
151869   , fvl38.meaning   source_38_meaning
151870   FROM xla_events_gt     xet 
151871   , CST_XLA_INV_HEADERS_V  h1
151872   , CST_XLA_INV_REF_V  h3
151873   , PO_REQ_DISTS_REF_V  h4
151874   , PO_REQ_HEADERS_REF_V  h5
151875   , PSA_CST_XLA_UPG_V  h6
151876   , fnd_lookup_values    fvl12
151877   , fnd_lookup_values    fvl38
151878  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
151879    and xet.event_class_code = C_EVENT_CLASS_CODE
151880    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
151881  AND h3.ref_transaction_id = h1.transaction_id AND h3.BUS_FLOW_REQ_DIST_ID=h4.REQ_DISTRIBUTION_ID (+)  AND h3.BUS_FLOW_REQ_ID = h5.REQ_ID (+)  AND h3.rcv_transaction_id = h6.transaction_id (+)    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
151882   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
151883   AND fvl12.view_application_id(+) = 700
151884   AND fvl12.language(+)            = USERENV('LANG')
151885      AND fvl38.lookup_type(+)         = 'YES_NO'
151886   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
151887   AND fvl38.view_application_id(+) = 0
151888   AND fvl38.language(+)            = USERENV('LANG')
151889   
151890  ORDER BY event_id
151891 ;
151892 
151893 
151894 --
151895 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
151896 IS
151897 SELECT  /*+ leading(xet) cardinality(xet,1) */
151898 -- Event Class Code: FOB_RCPT_RECIPIENT_RCPT
151899     xet.entity_id
151900    ,xet.legal_entity_id
151901    ,xet.entity_code
151902    ,xet.transaction_number
151903    ,xet.event_id
151904    ,xet.event_class_code
151905    ,xet.event_type_code
151906    ,xet.event_number
151907    ,xet.event_date
151908    ,xet.transaction_date
151909    ,xet.reference_num_1
151910    ,xet.reference_num_2
151911    ,xet.reference_num_3
151912    ,xet.reference_num_4
151913    ,xet.reference_char_1
151914    ,xet.reference_char_2
151915    ,xet.reference_char_3
151916    ,xet.reference_char_4
151917    ,xet.reference_date_1
151918    ,xet.reference_date_2
151919    ,xet.reference_date_3
151920    ,xet.reference_date_4
151921    ,xet.event_created_by
151922    ,xet.budgetary_control_flag
151923  , l2.LINE_NUMBER  
151924   , l2.CODE_COMBINATION_ID    source_4
151925   , l2.DISTRIBUTION_IDENTIFIER    source_11
151926   , l2.CURRENCY_CODE    source_15
151927   , l2.ENTERED_AMOUNT    source_18
151928   , l2.CURRENCY_CONVERSION_DATE    source_19
151929   , l2.CURRENCY_CONVERSION_RATE    source_20
151930   , l2.CURRENCY_CONVERSION_TYPE    source_21
151931   , l2.ACCOUNTED_AMOUNT    source_22
151932   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
151933   FROM xla_events_gt     xet 
151934   , CST_XLA_INV_LINES_V  l2
151935  WHERE xet.event_id between x_first_event_id and x_last_event_id
151936    and xet.event_date between p_pad_start_date and p_pad_end_date
151937    and xet.event_class_code = C_EVENT_CLASS_CODE
151938    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
151939 ;
151940 
151941 --
151942 BEGIN
151943 IF g_log_enabled THEN
151944    l_log_module := C_DEFAULT_MODULE||'.EventClass_265';
151945 END IF;
151946 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
151947    trace
151948       (p_msg      => 'BEGIN of EventClass_265'
151949       ,p_level    => C_LEVEL_PROCEDURE
151950       ,p_module   => l_log_module);
151951 END IF;
151952 
151953 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151954    trace
151955       (p_msg      => 'p_application_id = '||p_application_id||
151956                      ' - p_base_ledger_id = '||p_base_ledger_id||
151957                      ' - p_target_ledger_id  = '||p_target_ledger_id||
151958                      ' - p_language = '||p_language||
151959                      ' - p_currency_code = '||p_currency_code||
151960                      ' - p_sla_ledger_id = '||p_sla_ledger_id
151961       ,p_level    => C_LEVEL_STATEMENT
151962       ,p_module   => l_log_module);
151963 END IF;
151964 --
151965 -- initialze arrays
151966 --
151967 g_array_event.DELETE;
151968 l_rec_array_event := l_null_rec_array_event;
151969 --
151970 --------------------------------------
151971 -- 4262811 Initialze MPA Line Number
151972 --------------------------------------
151973 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
151974 
151975 --
151976 
151977 --
151978 OPEN header_cur;
151979 --
151980 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151981    trace
151982    (p_msg      => 'SQL - FETCH header_cur'
151983    ,p_level    => C_LEVEL_STATEMENT
151984    ,p_module   => l_log_module);
151985 END IF;
151986 --
151987 LOOP
151988 FETCH header_cur BULK COLLECT INTO
151989         l_array_entity_id
151990       , l_array_legal_entity_id
151991       , l_array_entity_code
151992       , l_array_transaction_num
151993       , l_array_event_id
151994       , l_array_class_code
151995       , l_array_event_type
151996       , l_array_event_number
151997       , l_array_event_date
151998       , l_array_transaction_date
151999       , l_array_reference_num_1
152000       , l_array_reference_num_2
152001       , l_array_reference_num_3
152002       , l_array_reference_num_4
152003       , l_array_reference_char_1
152004       , l_array_reference_char_2
152005       , l_array_reference_char_3
152006       , l_array_reference_char_4
152007       , l_array_reference_date_1
152008       , l_array_reference_date_2
152009       , l_array_reference_date_3
152010       , l_array_reference_date_4
152011       , l_array_event_created_by
152012       , l_array_budgetary_control_flag 
152013       , l_array_source_6
152014       , l_array_source_7
152015       , l_array_source_8
152016       , l_array_source_12
152017       , l_array_source_12_meaning
152018       , l_array_source_14
152019       , l_array_source_16
152020       , l_array_source_27
152021       , l_array_source_28
152022       , l_array_source_29
152023       , l_array_source_30
152024       , l_array_source_31
152025       , l_array_source_38
152026       , l_array_source_38_meaning
152027       LIMIT l_rows;
152028 --
152029 IF (C_LEVEL_EVENT >= g_log_level) THEN
152030    trace
152031    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
152032    ,p_level    => C_LEVEL_EVENT
152033    ,p_module   => l_log_module);
152034 END IF;
152035 --
152036 EXIT WHEN l_array_entity_id.COUNT = 0;
152037 
152038 -- initialize arrays
152039 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
152040 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
152041 
152042 --
152043 -- Bug 4458708
152044 --
152045 XLA_AE_LINES_PKG.g_LineNumber := 0;
152046 
152047 
152048 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
152049 g_last_hdr_idx := l_array_event_id.LAST;
152050 --
152051 -- loop for the headers. Each iteration is for each header extract row
152052 -- fetched in header cursor
152053 --
152054 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
152055 
152056 --
152057 -- set event info as cache for other routines to refer event attributes
152058 --
152059 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
152060    (p_application_id           => p_application_id
152061    ,p_primary_ledger_id        => p_primary_ledger_id
152062    ,p_base_ledger_id           => p_base_ledger_id
152063    ,p_target_ledger_id         => p_target_ledger_id
152064    ,p_entity_id                => l_array_entity_id(hdr_idx)
152065    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
152066    ,p_entity_code              => l_array_entity_code(hdr_idx)
152067    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
152068    ,p_event_id                 => l_array_event_id(hdr_idx)
152069    ,p_event_class_code         => l_array_class_code(hdr_idx)
152070    ,p_event_type_code          => l_array_event_type(hdr_idx)
152071    ,p_event_number             => l_array_event_number(hdr_idx)
152072    ,p_event_date               => l_array_event_date(hdr_idx)
152073    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
152074    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
152075    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
152076    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
152077    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
152078    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
152079    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
152080    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
152081    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
152082    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
152083    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
152084    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
152085    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
152086    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
152087    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
152088 
152089 --
152090 -- set the status of entry to C_VALID (0)
152091 --
152092 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
152093 
152094 --
152095 -- initialize a row for ae header
152096 --
152097 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
152098 
152099 l_event_id := l_array_event_id(hdr_idx);
152100 
152101 --
152102 -- storing the hdr_idx for event. May be used by line cursor.
152103 --
152104 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
152105 
152106 --
152107 -- store sources from header extract. This can be improved to
152108 -- store only those sources from header extract that may be used in lines
152109 --
152110 
152111 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
152112 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
152113 g_array_event(l_event_id).array_value_char('source_8') := l_array_source_8(hdr_idx);
152114 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
152115 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
152116 g_array_event(l_event_id).array_value_num('source_14') := l_array_source_14(hdr_idx);
152117 g_array_event(l_event_id).array_value_num('source_16') := l_array_source_16(hdr_idx);
152118 g_array_event(l_event_id).array_value_char('source_27') := l_array_source_27(hdr_idx);
152119 g_array_event(l_event_id).array_value_num('source_28') := l_array_source_28(hdr_idx);
152120 g_array_event(l_event_id).array_value_num('source_29') := l_array_source_29(hdr_idx);
152121 g_array_event(l_event_id).array_value_num('source_30') := l_array_source_30(hdr_idx);
152122 g_array_event(l_event_id).array_value_num('source_31') := l_array_source_31(hdr_idx);
152123 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
152124 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
152125 
152126 --
152127 -- initilaize the status of ae headers for diffrent balance types
152128 -- the status is initialised to C_NOT_CREATED (2)
152129 --
152130 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
152131 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
152132 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
152133 
152134 --
152135 -- call api to validate and store accounting attributes for header
152136 --
152137 
152138 ------------------------------------------------------------
152139 -- Accrual Reversal : to get date for Standard Source (NONE)
152140 ------------------------------------------------------------
152141 l_acc_rev_gl_date_source := NULL;
152142 
152143      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
152144       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_31');
152145      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
152146       l_rec_acct_attrs.array_date_value(2) := 
152147 xla_ae_sources_pkg.GetSystemSourceDate(
152148    p_source_code           => 'XLA_REFERENCE_DATE_1'
152149  , p_source_type_code      => 'Y'
152150  , p_source_application_id =>  602
152151 );
152152      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
152153       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_38');
152154 
152155 
152156 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
152157 
152158 XLA_AE_HEADER_PKG.SetJeCategoryName;
152159 
152160 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
152161 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
152162 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
152163 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
152164 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
152165 
152166 
152167 -- No header level analytical criteria
152168 
152169 --
152170 --accounting attribute enhancement, bug 3612931
152171 --
152172 l_trx_reversal_source := SUBSTR(NULL, 1,30);
152173 
152174 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
152175    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
152176 
152177    xla_accounting_err_pkg.build_message
152178       (p_appli_s_name            => 'XLA'
152179       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
152180       ,p_token_1                 => 'ACCT_ATTR_NAME'
152181       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
152182       ,p_token_2                 => 'PRODUCT_NAME'
152183       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
152184       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
152185       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
152186       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
152187 
152188 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
152189    --
152190    -- following sets the accounting attributes needed to reverse
152191    -- accounting for a distributeion
152192    --
152193    xla_ae_lines_pkg.SetTrxReversalAttrs
152194       (p_event_id              => l_event_id
152195       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
152196       ,p_trx_reversal_source   => l_trx_reversal_source);
152197 
152198 END IF;
152199 
152200 
152201 ----------------------------------------------------------------
152202 -- 4262811 -  update the header statuses to invalid in need be
152203 ----------------------------------------------------------------
152204 --
152205 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
152206 
152207 
152208   -----------------------------------------------
152209   -- No accrual reversal for the event class/type
152210   -----------------------------------------------
152211 ----------------------------------------------------------------
152212 
152213 --
152214 -- this ends the header loop iteration for one bulk fetch
152215 --
152216 END LOOP;
152217 
152218 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
152219 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
152220 
152221 --
152222 -- insert dummy rows into lines gt table that were created due to
152223 -- transaction reversals
152224 --
152225 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
152226    l_result := XLA_AE_LINES_PKG.InsertLines;
152227 END IF;
152228 
152229 --
152230 -- reset the temp_line_num for each set of events fetched from header
152231 -- cursor rather than doing it for each new event in line cursor
152232 -- Bug 3939231
152233 --
152234 xla_ae_lines_pkg.g_temp_line_num := 0;
152235 
152236 
152237 
152238 --
152239 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
152240 --
152241 --
152242 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152243 
152244       trace
152245          (p_msg      => 'SQL - FETCH line_cur'
152246          ,p_level    => C_LEVEL_STATEMENT
152247          ,p_module   => l_log_module);
152248 
152249 END IF;
152250 --
152251 --
152252 LOOP
152253   --
152254   FETCH line_cur BULK COLLECT INTO
152255         l_array_entity_id
152256       , l_array_legal_entity_id
152257       , l_array_entity_code
152258       , l_array_transaction_num
152259       , l_array_event_id
152260       , l_array_class_code
152261       , l_array_event_type
152262       , l_array_event_number
152263       , l_array_event_date
152264       , l_array_transaction_date
152265       , l_array_reference_num_1
152266       , l_array_reference_num_2
152267       , l_array_reference_num_3
152268       , l_array_reference_num_4
152269       , l_array_reference_char_1
152270       , l_array_reference_char_2
152271       , l_array_reference_char_3
152272       , l_array_reference_char_4
152273       , l_array_reference_date_1
152274       , l_array_reference_date_2
152275       , l_array_reference_date_3
152276       , l_array_reference_date_4
152277       , l_array_event_created_by
152278       , l_array_budgetary_control_flag
152279       , l_array_extract_line_num 
152280       , l_array_source_4
152281       , l_array_source_11
152282       , l_array_source_15
152283       , l_array_source_18
152284       , l_array_source_19
152285       , l_array_source_20
152286       , l_array_source_21
152287       , l_array_source_22
152288       , l_array_source_24
152289       LIMIT l_rows;
152290 
152291   --
152292   IF (C_LEVEL_EVENT >= g_log_level) THEN
152293             trace
152294                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
152295                ,p_level    => C_LEVEL_EVENT
152296                ,p_module   => l_log_module);
152297   END IF;
152298   --
152299   EXIT WHEN l_array_entity_id.count = 0;
152300 
152301   XLA_AE_LINES_PKG.g_rec_lines := null;
152302 
152303 --
152304 -- Bug 4458708
152305 --
152306 XLA_AE_LINES_PKG.g_LineNumber := 0;
152307 --
152308 --
152309 
152310 FOR Idx IN 1..l_array_event_id.count LOOP
152311    --
152312    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
152313    --
152314    l_event_id := l_array_event_id(idx);  -- 5648433
152315 
152316    --
152317    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
152318    --
152319 
152320    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
152321              (g_array_event(l_event_id).array_value_num('header_index'))
152322          ,'N'
152323          ) <> 'Y'
152324    THEN
152325       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152326          trace
152327             (p_msg      => 'Trancaction revesal option is not Y '
152328             ,p_level    => C_LEVEL_STATEMENT
152329             ,p_module   => l_log_module);
152330       END IF;
152331 
152332 --
152333 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
152334 --
152335 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
152336 --
152337 -- set event info as cache for other routines to refer event attributes
152338 --
152339 
152340 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
152341    l_previous_event_id := l_event_id;
152342 
152343    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
152344       (p_application_id           => p_application_id
152345       ,p_primary_ledger_id        => p_primary_ledger_id
152346       ,p_base_ledger_id           => p_base_ledger_id
152347       ,p_target_ledger_id         => p_target_ledger_id
152348       ,p_entity_id                => l_array_entity_id(Idx)
152349       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
152350       ,p_entity_code              => l_array_entity_code(Idx)
152351       ,p_transaction_num          => l_array_transaction_num(Idx)
152352       ,p_event_id                 => l_array_event_id(Idx)
152353       ,p_event_class_code         => l_array_class_code(Idx)
152354       ,p_event_type_code          => l_array_event_type(Idx)
152355       ,p_event_number             => l_array_event_number(Idx)
152356       ,p_event_date               => l_array_event_date(Idx)
152357       ,p_transaction_date         => l_array_transaction_date(Idx)
152358       ,p_reference_num_1          => l_array_reference_num_1(Idx)
152359       ,p_reference_num_2          => l_array_reference_num_2(Idx)
152360       ,p_reference_num_3          => l_array_reference_num_3(Idx)
152361       ,p_reference_num_4          => l_array_reference_num_4(Idx)
152362       ,p_reference_char_1         => l_array_reference_char_1(Idx)
152363       ,p_reference_char_2         => l_array_reference_char_2(Idx)
152364       ,p_reference_char_3         => l_array_reference_char_3(Idx)
152365       ,p_reference_char_4         => l_array_reference_char_4(Idx)
152366       ,p_reference_date_1         => l_array_reference_date_1(Idx)
152367       ,p_reference_date_2         => l_array_reference_date_2(Idx)
152368       ,p_reference_date_3         => l_array_reference_date_3(Idx)
152369       ,p_reference_date_4         => l_array_reference_date_4(Idx)
152370       ,p_event_created_by         => l_array_event_created_by(Idx)
152371       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
152372        --
152373 END IF;
152374 
152375 
152376 
152377 --
152378 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
152379 
152380 l_acct_reversal_source := SUBSTR(NULL, 1,30);
152381 
152382 IF l_continue_with_lines THEN
152383    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
152384       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
152385 
152386       xla_accounting_err_pkg.build_message
152387          (p_appli_s_name            => 'XLA'
152388          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
152389          ,p_token_1                 => 'LINE_NUMBER'
152390          ,p_value_1                 => l_array_extract_line_num(Idx)
152391          ,p_token_2                 => 'PRODUCT_NAME'
152392          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
152393          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
152394          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
152395          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
152396 
152397    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
152398       --
152399       -- following sets the accounting attributes needed to reverse
152400       -- accounting for a distributeion
152401       --
152402 
152403       --
152404       -- 5217187
152405       --
152406       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
152407       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
152408                                        g_array_event(l_event_id).array_value_num('header_index'));
152409       --
152410       --
152411 
152412       -- No reversal code generated
152413 
152414       xla_ae_lines_pkg.SetAcctReversalAttrs
152415          (p_event_id             => l_event_id
152416          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
152417          ,p_calculate_acctd_flag => l_calculate_acctd_flag
152418          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
152419    END IF;
152420 
152421    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
152422        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
152423 
152424 --
152425 AcctLineType_36 (
152426  p_application_id  => p_application_id
152427  ,p_event_id     => l_event_id
152428  ,p_calculate_acctd_flag => l_calculate_acctd_flag
152429  ,p_calculate_g_l_flag => l_calculate_g_l_flag
152430  ,p_actual_flag => l_actual_flag
152431  ,p_balance_type_code => l_balance_type_code
152432  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152433  
152434  , p_source_4 => l_array_source_4(Idx)
152435  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
152436  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
152437  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
152438  , p_source_11 => l_array_source_11(Idx)
152439  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
152440  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
152441  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
152442  , p_source_15 => l_array_source_15(Idx)
152443  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
152444  , p_source_18 => l_array_source_18(Idx)
152445  , p_source_19 => l_array_source_19(Idx)
152446  , p_source_20 => l_array_source_20(Idx)
152447  , p_source_21 => l_array_source_21(Idx)
152448  , p_source_22 => l_array_source_22(Idx)
152449  , p_source_24 => l_array_source_24(Idx)
152450  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
152451  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
152452  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
152453  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
152454  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
152455  );
152456 If(l_balance_type_code = 'A') THEN
152457   l_actual_gain_loss_ref := l_gain_or_loss_ref;
152458 END IF;
152459 
152460 --
152461 
152462 
152463 --
152464 AcctLineType_53 (
152465  p_application_id  => p_application_id
152466  ,p_event_id     => l_event_id
152467  ,p_calculate_acctd_flag => l_calculate_acctd_flag
152468  ,p_calculate_g_l_flag => l_calculate_g_l_flag
152469  ,p_actual_flag => l_actual_flag
152470  ,p_balance_type_code => l_balance_type_code
152471  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152472  
152473  , p_source_4 => l_array_source_4(Idx)
152474  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
152475  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
152476  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
152477  , p_source_11 => l_array_source_11(Idx)
152478  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
152479  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
152480  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
152481  , p_source_15 => l_array_source_15(Idx)
152482  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
152483  , p_source_18 => l_array_source_18(Idx)
152484  , p_source_19 => l_array_source_19(Idx)
152485  , p_source_20 => l_array_source_20(Idx)
152486  , p_source_21 => l_array_source_21(Idx)
152487  , p_source_22 => l_array_source_22(Idx)
152488  , p_source_24 => l_array_source_24(Idx)
152489  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
152490  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
152491  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
152492  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
152493  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
152494  );
152495 If(l_balance_type_code = 'A') THEN
152496   l_actual_gain_loss_ref := l_gain_or_loss_ref;
152497 END IF;
152498 
152499 --
152500 
152501 
152502 --
152503 AcctLineType_82 (
152504  p_application_id  => p_application_id
152505  ,p_event_id     => l_event_id
152506  ,p_calculate_acctd_flag => l_calculate_acctd_flag
152507  ,p_calculate_g_l_flag => l_calculate_g_l_flag
152508  ,p_actual_flag => l_actual_flag
152509  ,p_balance_type_code => l_balance_type_code
152510  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152511  
152512  , p_source_4 => l_array_source_4(Idx)
152513  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
152514  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
152515  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
152516  , p_source_11 => l_array_source_11(Idx)
152517  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
152518  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
152519  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
152520  , p_source_15 => l_array_source_15(Idx)
152521  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
152522  , p_source_18 => l_array_source_18(Idx)
152523  , p_source_19 => l_array_source_19(Idx)
152524  , p_source_20 => l_array_source_20(Idx)
152525  , p_source_21 => l_array_source_21(Idx)
152526  , p_source_22 => l_array_source_22(Idx)
152527  , p_source_24 => l_array_source_24(Idx)
152528  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
152529  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
152530  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
152531  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
152532  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
152533  );
152534 If(l_balance_type_code = 'A') THEN
152535   l_actual_gain_loss_ref := l_gain_or_loss_ref;
152536 END IF;
152537 
152538 --
152539 
152540 
152541 --
152542 AcctLineType_148 (
152543  p_application_id  => p_application_id
152544  ,p_event_id     => l_event_id
152545  ,p_calculate_acctd_flag => l_calculate_acctd_flag
152546  ,p_calculate_g_l_flag => l_calculate_g_l_flag
152547  ,p_actual_flag => l_actual_flag
152548  ,p_balance_type_code => l_balance_type_code
152549  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152550  
152551  , p_source_4 => l_array_source_4(Idx)
152552  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
152553  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
152554  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
152555  , p_source_11 => l_array_source_11(Idx)
152556  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
152557  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
152558  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
152559  , p_source_15 => l_array_source_15(Idx)
152560  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
152561  , p_source_18 => l_array_source_18(Idx)
152562  , p_source_19 => l_array_source_19(Idx)
152563  , p_source_20 => l_array_source_20(Idx)
152564  , p_source_21 => l_array_source_21(Idx)
152565  , p_source_22 => l_array_source_22(Idx)
152566  , p_source_24 => l_array_source_24(Idx)
152567  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
152568  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
152569  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
152570  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
152571  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
152572  );
152573 If(l_balance_type_code = 'A') THEN
152574   l_actual_gain_loss_ref := l_gain_or_loss_ref;
152575 END IF;
152576 
152577 --
152578 
152579 
152580 --
152581 AcctLineType_177 (
152582  p_application_id  => p_application_id
152583  ,p_event_id     => l_event_id
152584  ,p_calculate_acctd_flag => l_calculate_acctd_flag
152585  ,p_calculate_g_l_flag => l_calculate_g_l_flag
152586  ,p_actual_flag => l_actual_flag
152587  ,p_balance_type_code => l_balance_type_code
152588  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152589  
152590  , p_source_4 => l_array_source_4(Idx)
152591  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
152592  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
152593  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
152594  , p_source_11 => l_array_source_11(Idx)
152595  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
152596  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
152597  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
152598  , p_source_15 => l_array_source_15(Idx)
152599  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
152600  , p_source_18 => l_array_source_18(Idx)
152601  , p_source_19 => l_array_source_19(Idx)
152602  , p_source_20 => l_array_source_20(Idx)
152603  , p_source_21 => l_array_source_21(Idx)
152604  , p_source_22 => l_array_source_22(Idx)
152605  , p_source_24 => l_array_source_24(Idx)
152606  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
152607  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
152608  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
152609  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
152610  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
152611  );
152612 If(l_balance_type_code = 'A') THEN
152613   l_actual_gain_loss_ref := l_gain_or_loss_ref;
152614 END IF;
152615 
152616 --
152617 
152618 
152619 --
152620 AcctLineType_190 (
152621  p_application_id  => p_application_id
152622  ,p_event_id     => l_event_id
152623  ,p_calculate_acctd_flag => l_calculate_acctd_flag
152624  ,p_calculate_g_l_flag => l_calculate_g_l_flag
152625  ,p_actual_flag => l_actual_flag
152626  ,p_balance_type_code => l_balance_type_code
152627  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152628  
152629  , p_source_4 => l_array_source_4(Idx)
152630  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
152631  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
152632  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
152633  , p_source_11 => l_array_source_11(Idx)
152634  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
152635  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
152636  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
152637  , p_source_15 => l_array_source_15(Idx)
152638  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
152639  , p_source_18 => l_array_source_18(Idx)
152640  , p_source_19 => l_array_source_19(Idx)
152641  , p_source_20 => l_array_source_20(Idx)
152642  , p_source_21 => l_array_source_21(Idx)
152643  , p_source_22 => l_array_source_22(Idx)
152644  , p_source_24 => l_array_source_24(Idx)
152645  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
152646  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
152647  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
152648  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
152649  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
152650  );
152651 If(l_balance_type_code = 'A') THEN
152652   l_actual_gain_loss_ref := l_gain_or_loss_ref;
152653 END IF;
152654 
152655 --
152656 
152657 
152658 --
152659 AcctLineType_216 (
152660  p_application_id  => p_application_id
152661  ,p_event_id     => l_event_id
152662  ,p_calculate_acctd_flag => l_calculate_acctd_flag
152663  ,p_calculate_g_l_flag => l_calculate_g_l_flag
152664  ,p_actual_flag => l_actual_flag
152665  ,p_balance_type_code => l_balance_type_code
152666  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152667  
152668  , p_source_4 => l_array_source_4(Idx)
152669  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
152670  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
152671  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
152672  , p_source_11 => l_array_source_11(Idx)
152673  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
152674  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
152675  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
152676  , p_source_15 => l_array_source_15(Idx)
152677  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
152678  , p_source_18 => l_array_source_18(Idx)
152679  , p_source_19 => l_array_source_19(Idx)
152680  , p_source_20 => l_array_source_20(Idx)
152681  , p_source_21 => l_array_source_21(Idx)
152682  , p_source_22 => l_array_source_22(Idx)
152683  , p_source_24 => l_array_source_24(Idx)
152684  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
152685  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
152686  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
152687  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
152688  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
152689  );
152690 If(l_balance_type_code = 'A') THEN
152691   l_actual_gain_loss_ref := l_gain_or_loss_ref;
152692 END IF;
152693 
152694 --
152695 
152696 
152697 --
152698 AcctLineType_223 (
152699  p_application_id  => p_application_id
152700  ,p_event_id     => l_event_id
152701  ,p_calculate_acctd_flag => l_calculate_acctd_flag
152702  ,p_calculate_g_l_flag => l_calculate_g_l_flag
152703  ,p_actual_flag => l_actual_flag
152704  ,p_balance_type_code => l_balance_type_code
152705  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152706  
152707  , p_source_4 => l_array_source_4(Idx)
152708  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
152709  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
152710  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
152711  , p_source_11 => l_array_source_11(Idx)
152712  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
152713  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
152714  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
152715  , p_source_15 => l_array_source_15(Idx)
152716  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
152717  , p_source_18 => l_array_source_18(Idx)
152718  , p_source_19 => l_array_source_19(Idx)
152719  , p_source_20 => l_array_source_20(Idx)
152720  , p_source_21 => l_array_source_21(Idx)
152721  , p_source_22 => l_array_source_22(Idx)
152722  , p_source_24 => l_array_source_24(Idx)
152723  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
152724  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
152725  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
152726  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
152727  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
152728  );
152729 If(l_balance_type_code = 'A') THEN
152730   l_actual_gain_loss_ref := l_gain_or_loss_ref;
152731 END IF;
152732 
152733 --
152734 
152735       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
152736       -- or secondary ledger that has different currency with primary
152737       -- or alc that is calculated by sla
152738       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
152739             (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'))
152740 
152741 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
152742 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
152743           AND (l_actual_flag = 'A')) THEN
152744         XLA_AE_LINES_PKG.CreateGainOrLossLines(
152745           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
152746          ,p_application_id   => p_application_id
152747          ,p_amb_context_code => 'DEFAULT'
152748          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
152749          ,p_event_class_code => C_EVENT_CLASS_CODE
152750          ,p_event_type_code  => C_EVENT_TYPE_CODE
152751          
152752          ,p_gain_ccid        => -1
152753          ,p_loss_ccid        => -1
152754 
152755          ,p_actual_flag      => l_actual_flag
152756          ,p_enc_flag         => null
152757          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
152758          ,p_enc_g_l_ref      => null
152759          );
152760       END IF;
152761    END IF;
152762 END IF;
152763 
152764    ELSE
152765       --
152766       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
152767       --
152768       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152769          trace
152770             (p_msg      => 'Trancaction revesal option is Y'
152771             ,p_level    => C_LEVEL_STATEMENT
152772             ,p_module   => l_log_module);
152773       END IF;
152774    END IF;
152775 
152776 END LOOP;
152777 l_result := XLA_AE_LINES_PKG.InsertLines ;
152778 end loop;
152779 close line_cur;
152780 
152781 
152782 --
152783 -- insert headers into xla_ae_headers_gt table
152784 --
152785 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
152786 
152787 -- insert into errors table here.
152788 
152789 END LOOP;
152790 
152791 --
152792 -- 4865292
152793 --
152794 -- Compare g_hdr_extract_count with event count in
152795 -- CreateHeadersAndLines.
152796 --
152797 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
152798 
152799 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152800    trace (p_msg     => '# rows extracted from header extract objects '
152801                     || ' (running total): '
152802                     || g_hdr_extract_count
152803          ,p_level   => C_LEVEL_STATEMENT
152804          ,p_module  => l_log_module);
152805 END IF;
152806 
152807 CLOSE header_cur;
152808 --
152809 
152810 --
152811 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
152812    trace
152813       (p_msg      => 'END of EventClass_265'
152814       ,p_level    => C_LEVEL_PROCEDURE
152815       ,p_module   => l_log_module);
152816 END IF;
152817 --
152818 RETURN l_result;
152819 EXCEPTION
152820 WHEN xla_exceptions_pkg.application_exception THEN
152821    
152822 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
152823 
152824    
152825 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
152826 
152827    RAISE;
152828 
152829 WHEN NO_DATA_FOUND THEN
152830 
152831 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
152832 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
152833 
152834 FOR header_record IN header_cur
152835 LOOP
152836     l_array_header_events(header_record.event_id) := header_record.event_id;
152837 END LOOP;
152838 
152839 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
152840 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
152841 
152842 fnd_file.put_line(fnd_file.LOG, '                    ');
152843 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
152844 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
152845 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
152846 
152847 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
152848 LOOP
152849 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
152850 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
152851         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
152852 	END IF;
152853 END LOOP;
152854 
152855 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
152856 fnd_file.put_line(fnd_file.LOG, '                    ');
152857 
152858 
152859 xla_exceptions_pkg.raise_message
152860       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_265');
152861 
152862 
152863 WHEN OTHERS THEN
152864    xla_exceptions_pkg.raise_message
152865       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_265');
152866 END EventClass_265;
152867 --
152868 
152869 ---------------------------------------
152870 --
152871 -- PRIVATE PROCEDURE
152872 --         insert_sources_266
152873 --
152874 ----------------------------------------
152875 --
152876 PROCEDURE insert_sources_266(
152877                                 p_target_ledger_id       IN NUMBER
152878                               , p_language               IN VARCHAR2
152879                               , p_sla_ledger_id          IN NUMBER
152880                               , p_pad_start_date         IN DATE
152881                               , p_pad_end_date           IN DATE
152882                          )
152883 IS
152884 
152885 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_SENDER_RCPT_ALL';
152886 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_RCPT_SENDER_RCPT';
152887 p_apps_owner                   VARCHAR2(30);
152888 l_log_module                   VARCHAR2(240);
152889 BEGIN
152890 IF g_log_enabled THEN
152891       l_log_module := C_DEFAULT_MODULE||'.insert_sources_266';
152892 END IF;
152893 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
152894 
152895       trace
152896          (p_msg      => 'BEGIN of insert_sources_266'
152897          ,p_level    => C_LEVEL_PROCEDURE
152898          ,p_module   => l_log_module);
152899 
152900 END IF;
152901 
152902 -- select APPS owner
152903 SELECT oracle_username
152904   INTO p_apps_owner
152905   FROM fnd_oracle_userid
152906  WHERE read_only_flag = 'U'
152907 ;
152908 
152909 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152910       trace
152911          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
152912                         ' - p_language = '||p_language||
152913                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
152914                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
152915                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
152916                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
152917          ,p_level    => C_LEVEL_STATEMENT
152918          ,p_module   => l_log_module);
152919 END IF;
152920 
152921 
152922 --
152923 INSERT INTO xla_diag_sources --hdr2
152924 (
152925         event_id
152926       , ledger_id
152927       , sla_ledger_id
152928       , description_language
152929       , object_name
152930       , object_type_code
152931       , line_number
152932       , source_application_id
152933       , source_type_code
152934       , source_code
152935       , source_value
152936       , source_meaning
152937       , created_by
152938       , creation_date
152939       , last_update_date
152940       , last_updated_by
152941       , last_update_login
152942       , program_update_date
152943       , program_application_id
152944       , program_id
152945       , request_id
152946 )
152947 SELECT
152948         event_id
152949       , p_target_ledger_id
152950       , p_sla_ledger_id
152951       , p_language
152952       , object_name
152953       , object_type_code
152954       , line_number
152955       , source_application_id
152956       , source_type_code
152957       , source_code
152958       , SUBSTR(source_value ,1,1996)
152959       , SUBSTR(source_meaning ,1,200)
152960       , xla_environment_pkg.g_Usr_Id
152961       , TRUNC(SYSDATE)
152962       , TRUNC(SYSDATE)
152963       , xla_environment_pkg.g_Usr_Id
152964       , xla_environment_pkg.g_Login_Id
152965       , TRUNC(SYSDATE)
152966       , xla_environment_pkg.g_Prog_Appl_Id
152967       , xla_environment_pkg.g_Prog_Id
152968       , xla_environment_pkg.g_Req_Id
152969   FROM (
152970        SELECT xet.event_id                  event_id
152971             , 0                          line_number
152972             , CASE r
152973                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
152974                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
152975                 
152976                ELSE null
152977               END                           object_name
152978             , CASE r
152979                 WHEN 1 THEN 'HEADER' 
152980                 WHEN 2 THEN 'HEADER' 
152981                 
152982                 ELSE null
152983               END                           object_type_code
152984             , CASE r
152985                 WHEN 1 THEN '707' 
152986                 WHEN 2 THEN '707' 
152987                 
152988                 ELSE null
152989               END                           source_application_id
152990             , 'S'             source_type_code
152991             , CASE r
152992                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
152993                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
152994                 
152995                 ELSE null
152996               END                           source_code
152997             , CASE r
152998                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
152999                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
153000                 
153001                 ELSE null
153002               END                           source_value
153003             , CASE r
153004                 WHEN 1 THEN fvl12.meaning
153005                 WHEN 2 THEN fvl38.meaning
153006                 
153007                 ELSE null
153008               END               source_meaning
153009          FROM xla_events_gt     xet  
153010       , CST_XLA_INV_HEADERS_V  h1
153011   , fnd_lookup_values    fvl12
153012   , fnd_lookup_values    fvl38
153013              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
153014          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
153015            AND xet.event_class_code = C_EVENT_CLASS_CODE
153016               AND h1.event_id = xet.event_id
153017    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
153018   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
153019   AND fvl12.view_application_id(+) = 700
153020   AND fvl12.language(+)            = USERENV('LANG')
153021      AND fvl38.lookup_type(+)         = 'YES_NO'
153022   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
153023   AND fvl38.view_application_id(+) = 0
153024   AND fvl38.language(+)            = USERENV('LANG')
153025   
153026 )
153027 ;
153028 --
153029 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153030 
153031       trace
153032          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
153033          ,p_level    => C_LEVEL_STATEMENT
153034          ,p_module   => l_log_module);
153035 
153036 END IF;
153037 --
153038 
153039 
153040 
153041 --
153042 INSERT INTO xla_diag_sources  --line2
153043 (
153044         event_id
153045       , ledger_id
153046       , sla_ledger_id
153047       , description_language
153048       , object_name
153049       , object_type_code
153050       , line_number
153051       , source_application_id
153052       , source_type_code
153053       , source_code
153054       , source_value
153055       , source_meaning
153056       , created_by
153057       , creation_date
153058       , last_update_date
153059       , last_updated_by
153060       , last_update_login
153061       , program_update_date
153062       , program_application_id
153063       , program_id
153064       , request_id
153065 )
153066 SELECT  event_id
153067       , p_target_ledger_id
153068       , p_sla_ledger_id
153069       , p_language
153070       , object_name
153071       , object_type_code
153072       , line_number
153073       , source_application_id
153074       , source_type_code
153075       , source_code
153076       , SUBSTR(source_value,1,1996)
153077       , SUBSTR(source_meaning ,1,200)
153078       , xla_environment_pkg.g_Usr_Id
153079       , TRUNC(SYSDATE)
153080       , TRUNC(SYSDATE)
153081       , xla_environment_pkg.g_Usr_Id
153082       , xla_environment_pkg.g_Login_Id
153083       , TRUNC(SYSDATE)
153084       , xla_environment_pkg.g_Prog_Appl_Id
153085       , xla_environment_pkg.g_Prog_Id
153086       , xla_environment_pkg.g_Req_Id
153087   FROM (
153088        SELECT xet.event_id                  event_id
153089             , l2.line_number                 line_number
153090             , CASE r
153091                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
153092                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
153093                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
153094                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
153095                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
153096                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
153097                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
153098                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
153099                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
153100                 
153101                ELSE null
153102               END                           object_name
153103             , CASE r
153104                 WHEN 1 THEN 'LINE' 
153105                 WHEN 2 THEN 'LINE' 
153106                 WHEN 3 THEN 'LINE' 
153107                 WHEN 4 THEN 'LINE' 
153108                 WHEN 5 THEN 'LINE' 
153109                 WHEN 6 THEN 'LINE' 
153110                 WHEN 7 THEN 'LINE' 
153111                 WHEN 8 THEN 'LINE' 
153112                 WHEN 9 THEN 'LINE' 
153113                 
153114                 ELSE null
153115               END                           object_type_code
153116             , CASE r
153117                 WHEN 1 THEN '707' 
153118                 WHEN 2 THEN '707' 
153119                 WHEN 3 THEN '707' 
153120                 WHEN 4 THEN '707' 
153121                 WHEN 5 THEN '707' 
153122                 WHEN 6 THEN '707' 
153123                 WHEN 7 THEN '707' 
153124                 WHEN 8 THEN '707' 
153125                 WHEN 9 THEN '707' 
153126                 
153127                 ELSE null
153128               END                           source_application_id
153129             , 'S'             source_type_code
153130             , CASE r
153131                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
153132                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
153133                 WHEN 3 THEN 'CURRENCY_CODE' 
153134                 WHEN 4 THEN 'ENTERED_AMOUNT' 
153135                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
153136                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
153137                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
153138                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
153139                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
153140                 
153141                 ELSE null
153142               END                           source_code
153143             , CASE r
153144                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
153145                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
153146                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
153147                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
153148                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
153149                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
153150                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
153151                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
153152                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
153153                 
153154                 ELSE null
153155               END                           source_value
153156             , null              source_meaning
153157          FROM  xla_events_gt     xet  
153158         , CST_XLA_INV_LINES_V  l2
153159             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
153160         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
153161           AND xet.event_class_code = C_EVENT_CLASS_CODE
153162             AND l2.event_id          = xet.event_id
153163 
153164 )
153165 ;
153166 --
153167 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153168 
153169       trace
153170          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
153171          ,p_level    => C_LEVEL_STATEMENT
153172          ,p_module   => l_log_module);
153173 
153174 END IF;
153175 
153176 
153177 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
153178       trace
153179          (p_msg      => 'END of insert_sources_266'
153180          ,p_level    => C_LEVEL_PROCEDURE
153181          ,p_module   => l_log_module);
153182 END IF;
153183 EXCEPTION
153184   WHEN xla_exceptions_pkg.application_exception THEN
153185       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
153186             trace
153187                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
153188                ,p_level    => C_LEVEL_EXCEPTION
153189                ,p_module   => l_log_module);
153190       END IF;
153191       RAISE;
153192   WHEN OTHERS THEN
153193       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
153194             trace
153195                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
153196                ,p_level    => C_LEVEL_EXCEPTION
153197                ,p_module   => l_log_module);
153198        END IF;
153199        xla_exceptions_pkg.raise_message
153200            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_266');
153201 END insert_sources_266;
153202 --
153203 
153204 ---------------------------------------
153205 --
153206 -- PRIVATE FUNCTION
153207 --         EventClass_266
153208 --
153209 ----------------------------------------
153210 --
153211 FUNCTION EventClass_266
153212        (p_application_id         IN NUMBER
153213        ,p_base_ledger_id         IN NUMBER
153214        ,p_target_ledger_id       IN NUMBER
153215        ,p_language               IN VARCHAR2
153216        ,p_currency_code          IN VARCHAR2
153217        ,p_sla_ledger_id          IN NUMBER
153218        ,p_pad_start_date         IN DATE
153219        ,p_pad_end_date           IN DATE
153220        ,p_primary_ledger_id      IN NUMBER)
153221 RETURN BOOLEAN IS
153222 --
153223 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_SENDER_RCPT_ALL';
153224 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_RCPT_SENDER_RCPT';
153225 
153226 l_calculate_acctd_flag   VARCHAR2(1) :='N';
153227 l_calculate_g_l_flag     VARCHAR2(1) :='N';
153228 --
153229 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153230 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153231 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
153232 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
153233 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153234 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
153235 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
153236 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153237 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153238 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153239 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153240 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153241 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153242 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153243 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
153244 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
153245 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
153246 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
153247 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153248 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153249 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153250 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153251 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
153252 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
153253 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
153254 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
153255 
153256 l_event_id                             NUMBER;
153257 l_previous_event_id                    NUMBER;
153258 l_first_event_id                       NUMBER;
153259 l_last_event_id                        NUMBER;
153260 
153261 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
153262 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
153263 --
153264 --
153265 l_result                    BOOLEAN := TRUE;
153266 l_rows                      NUMBER  := 1000;
153267 l_event_type_name           VARCHAR2(80) := 'All';
153268 l_event_class_name          VARCHAR2(80) := 'Sender-side Intransit Interorg Receipt for FOB Receipt';
153269 l_description               VARCHAR2(4000);
153270 l_transaction_reversal      NUMBER;
153271 l_ae_header_id              NUMBER;
153272 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
153273 l_log_module                VARCHAR2(240);
153274 --
153275 l_acct_reversal_source      VARCHAR2(30);
153276 l_trx_reversal_source       VARCHAR2(30);
153277 
153278 l_continue_with_lines       BOOLEAN := TRUE;
153279 --
153280 l_acc_rev_gl_date_source    DATE;                      -- 4262811
153281 --
153282 type t_array_event_id is table of number index by binary_integer;
153283 
153284 l_rec_array_event                    t_rec_array_event;
153285 l_null_rec_array_event               t_rec_array_event;
153286 l_array_ae_header_id                 xla_number_array_type;
153287 l_actual_flag                        VARCHAR2(1) := NULL;
153288 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
153289 l_balance_type_code                  VARCHAR2(1) :=NULL;
153290 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
153291 
153292 --
153293 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
153294 --
153295 
153296 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
153297 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
153298 
153299 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
153300 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
153301 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
153302 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
153303 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
153304 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
153305 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
153306 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
153307 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
153308 
153309 l_array_source_12              t_array_source_12;
153310 l_array_source_12_meaning      t_array_lookup_meaning;
153311 l_array_source_38              t_array_source_38;
153312 l_array_source_38_meaning      t_array_lookup_meaning;
153313 
153314 l_array_source_4      t_array_source_4;
153315 l_array_source_11      t_array_source_11;
153316 l_array_source_15      t_array_source_15;
153317 l_array_source_18      t_array_source_18;
153318 l_array_source_19      t_array_source_19;
153319 l_array_source_20      t_array_source_20;
153320 l_array_source_21      t_array_source_21;
153321 l_array_source_22      t_array_source_22;
153322 l_array_source_24      t_array_source_24;
153323 
153324 --
153325 CURSOR header_cur
153326 IS
153327 SELECT /*+ leading(xet) cardinality(xet,1) */
153328 -- Event Class Code: FOB_RCPT_SENDER_RCPT
153329     xet.entity_id
153330    ,xet.legal_entity_id
153331    ,xet.entity_code
153332    ,xet.transaction_number
153333    ,xet.event_id
153334    ,xet.event_class_code
153335    ,xet.event_type_code
153336    ,xet.event_number
153337    ,xet.event_date
153338    ,xet.transaction_date
153339    ,xet.reference_num_1
153340    ,xet.reference_num_2
153341    ,xet.reference_num_3
153342    ,xet.reference_num_4
153343    ,xet.reference_char_1
153344    ,xet.reference_char_2
153345    ,xet.reference_char_3
153346    ,xet.reference_char_4
153347    ,xet.reference_date_1
153348    ,xet.reference_date_2
153349    ,xet.reference_date_3
153350    ,xet.reference_date_4
153351    ,xet.event_created_by
153352    ,xet.budgetary_control_flag 
153353   , h1.DISTRIBUTION_TYPE    source_12
153354   , fvl12.meaning   source_12_meaning
153355   , h1.TRANSFER_TO_GL_INDICATOR    source_38
153356   , fvl38.meaning   source_38_meaning
153357   FROM xla_events_gt     xet 
153358   , CST_XLA_INV_HEADERS_V  h1
153359   , fnd_lookup_values    fvl12
153360   , fnd_lookup_values    fvl38
153361  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
153362    and xet.event_class_code = C_EVENT_CLASS_CODE
153363    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
153364    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
153365   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
153366   AND fvl12.view_application_id(+) = 700
153367   AND fvl12.language(+)            = USERENV('LANG')
153368      AND fvl38.lookup_type(+)         = 'YES_NO'
153369   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
153370   AND fvl38.view_application_id(+) = 0
153371   AND fvl38.language(+)            = USERENV('LANG')
153372   
153373  ORDER BY event_id
153374 ;
153375 
153376 
153377 --
153378 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
153379 IS
153380 SELECT  /*+ leading(xet) cardinality(xet,1) */
153381 -- Event Class Code: FOB_RCPT_SENDER_RCPT
153382     xet.entity_id
153383    ,xet.legal_entity_id
153384    ,xet.entity_code
153385    ,xet.transaction_number
153386    ,xet.event_id
153387    ,xet.event_class_code
153388    ,xet.event_type_code
153389    ,xet.event_number
153390    ,xet.event_date
153391    ,xet.transaction_date
153392    ,xet.reference_num_1
153393    ,xet.reference_num_2
153394    ,xet.reference_num_3
153395    ,xet.reference_num_4
153396    ,xet.reference_char_1
153397    ,xet.reference_char_2
153398    ,xet.reference_char_3
153399    ,xet.reference_char_4
153400    ,xet.reference_date_1
153401    ,xet.reference_date_2
153402    ,xet.reference_date_3
153403    ,xet.reference_date_4
153404    ,xet.event_created_by
153405    ,xet.budgetary_control_flag
153406  , l2.LINE_NUMBER  
153407   , l2.CODE_COMBINATION_ID    source_4
153408   , l2.DISTRIBUTION_IDENTIFIER    source_11
153409   , l2.CURRENCY_CODE    source_15
153410   , l2.ENTERED_AMOUNT    source_18
153411   , l2.CURRENCY_CONVERSION_DATE    source_19
153412   , l2.CURRENCY_CONVERSION_RATE    source_20
153413   , l2.CURRENCY_CONVERSION_TYPE    source_21
153414   , l2.ACCOUNTED_AMOUNT    source_22
153415   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
153416   FROM xla_events_gt     xet 
153417   , CST_XLA_INV_LINES_V  l2
153418  WHERE xet.event_id between x_first_event_id and x_last_event_id
153419    and xet.event_date between p_pad_start_date and p_pad_end_date
153420    and xet.event_class_code = C_EVENT_CLASS_CODE
153421    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
153422 ;
153423 
153424 --
153425 BEGIN
153426 IF g_log_enabled THEN
153427    l_log_module := C_DEFAULT_MODULE||'.EventClass_266';
153428 END IF;
153429 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
153430    trace
153431       (p_msg      => 'BEGIN of EventClass_266'
153432       ,p_level    => C_LEVEL_PROCEDURE
153433       ,p_module   => l_log_module);
153434 END IF;
153435 
153436 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153437    trace
153438       (p_msg      => 'p_application_id = '||p_application_id||
153439                      ' - p_base_ledger_id = '||p_base_ledger_id||
153440                      ' - p_target_ledger_id  = '||p_target_ledger_id||
153441                      ' - p_language = '||p_language||
153442                      ' - p_currency_code = '||p_currency_code||
153443                      ' - p_sla_ledger_id = '||p_sla_ledger_id
153444       ,p_level    => C_LEVEL_STATEMENT
153445       ,p_module   => l_log_module);
153446 END IF;
153447 --
153448 -- initialze arrays
153449 --
153450 g_array_event.DELETE;
153451 l_rec_array_event := l_null_rec_array_event;
153452 --
153453 --------------------------------------
153454 -- 4262811 Initialze MPA Line Number
153455 --------------------------------------
153456 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
153457 
153458 --
153459 
153460 --
153461 OPEN header_cur;
153462 --
153463 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153464    trace
153465    (p_msg      => 'SQL - FETCH header_cur'
153466    ,p_level    => C_LEVEL_STATEMENT
153467    ,p_module   => l_log_module);
153468 END IF;
153469 --
153470 LOOP
153471 FETCH header_cur BULK COLLECT INTO
153472         l_array_entity_id
153473       , l_array_legal_entity_id
153474       , l_array_entity_code
153475       , l_array_transaction_num
153476       , l_array_event_id
153477       , l_array_class_code
153478       , l_array_event_type
153479       , l_array_event_number
153480       , l_array_event_date
153481       , l_array_transaction_date
153482       , l_array_reference_num_1
153483       , l_array_reference_num_2
153484       , l_array_reference_num_3
153485       , l_array_reference_num_4
153486       , l_array_reference_char_1
153487       , l_array_reference_char_2
153488       , l_array_reference_char_3
153489       , l_array_reference_char_4
153490       , l_array_reference_date_1
153491       , l_array_reference_date_2
153492       , l_array_reference_date_3
153493       , l_array_reference_date_4
153494       , l_array_event_created_by
153495       , l_array_budgetary_control_flag 
153496       , l_array_source_12
153497       , l_array_source_12_meaning
153498       , l_array_source_38
153499       , l_array_source_38_meaning
153500       LIMIT l_rows;
153501 --
153502 IF (C_LEVEL_EVENT >= g_log_level) THEN
153503    trace
153504    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
153505    ,p_level    => C_LEVEL_EVENT
153506    ,p_module   => l_log_module);
153507 END IF;
153508 --
153509 EXIT WHEN l_array_entity_id.COUNT = 0;
153510 
153511 -- initialize arrays
153512 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
153513 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
153514 
153515 --
153516 -- Bug 4458708
153517 --
153518 XLA_AE_LINES_PKG.g_LineNumber := 0;
153519 
153520 
153521 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
153522 g_last_hdr_idx := l_array_event_id.LAST;
153523 --
153524 -- loop for the headers. Each iteration is for each header extract row
153525 -- fetched in header cursor
153526 --
153527 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
153528 
153529 --
153530 -- set event info as cache for other routines to refer event attributes
153531 --
153532 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
153533    (p_application_id           => p_application_id
153534    ,p_primary_ledger_id        => p_primary_ledger_id
153535    ,p_base_ledger_id           => p_base_ledger_id
153536    ,p_target_ledger_id         => p_target_ledger_id
153537    ,p_entity_id                => l_array_entity_id(hdr_idx)
153538    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
153539    ,p_entity_code              => l_array_entity_code(hdr_idx)
153540    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
153541    ,p_event_id                 => l_array_event_id(hdr_idx)
153542    ,p_event_class_code         => l_array_class_code(hdr_idx)
153543    ,p_event_type_code          => l_array_event_type(hdr_idx)
153544    ,p_event_number             => l_array_event_number(hdr_idx)
153545    ,p_event_date               => l_array_event_date(hdr_idx)
153546    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
153547    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
153548    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
153549    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
153550    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
153551    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
153552    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
153553    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
153554    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
153555    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
153556    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
153557    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
153558    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
153559    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
153560    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
153561 
153562 --
153563 -- set the status of entry to C_VALID (0)
153564 --
153565 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
153566 
153567 --
153568 -- initialize a row for ae header
153569 --
153570 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
153571 
153572 l_event_id := l_array_event_id(hdr_idx);
153573 
153574 --
153575 -- storing the hdr_idx for event. May be used by line cursor.
153576 --
153577 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
153578 
153579 --
153580 -- store sources from header extract. This can be improved to
153581 -- store only those sources from header extract that may be used in lines
153582 --
153583 
153584 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
153585 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
153586 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
153587 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
153588 
153589 --
153590 -- initilaize the status of ae headers for diffrent balance types
153591 -- the status is initialised to C_NOT_CREATED (2)
153592 --
153593 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
153594 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
153595 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
153596 
153597 --
153598 -- call api to validate and store accounting attributes for header
153599 --
153600 
153601 ------------------------------------------------------------
153602 -- Accrual Reversal : to get date for Standard Source (NONE)
153603 ------------------------------------------------------------
153604 l_acc_rev_gl_date_source := NULL;
153605 
153606      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
153607       l_rec_acct_attrs.array_date_value(1) := 
153608 xla_ae_sources_pkg.GetSystemSourceDate(
153609    p_source_code           => 'XLA_REFERENCE_DATE_1'
153610  , p_source_type_code      => 'Y'
153611  , p_source_application_id =>  602
153612 );
153613      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
153614       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
153615 
153616 
153617 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
153618 
153619 XLA_AE_HEADER_PKG.SetJeCategoryName;
153620 
153621 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
153622 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
153623 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
153624 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
153625 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
153626 
153627 
153628 -- No header level analytical criteria
153629 
153630 --
153631 --accounting attribute enhancement, bug 3612931
153632 --
153633 l_trx_reversal_source := SUBSTR(NULL, 1,30);
153634 
153635 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
153636    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
153637 
153638    xla_accounting_err_pkg.build_message
153639       (p_appli_s_name            => 'XLA'
153640       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
153641       ,p_token_1                 => 'ACCT_ATTR_NAME'
153642       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
153643       ,p_token_2                 => 'PRODUCT_NAME'
153644       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
153645       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
153646       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
153647       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
153648 
153649 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
153650    --
153651    -- following sets the accounting attributes needed to reverse
153652    -- accounting for a distributeion
153653    --
153654    xla_ae_lines_pkg.SetTrxReversalAttrs
153655       (p_event_id              => l_event_id
153656       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
153657       ,p_trx_reversal_source   => l_trx_reversal_source);
153658 
153659 END IF;
153660 
153661 
153662 ----------------------------------------------------------------
153663 -- 4262811 -  update the header statuses to invalid in need be
153664 ----------------------------------------------------------------
153665 --
153666 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
153667 
153668 
153669   -----------------------------------------------
153670   -- No accrual reversal for the event class/type
153671   -----------------------------------------------
153672 ----------------------------------------------------------------
153673 
153674 --
153675 -- this ends the header loop iteration for one bulk fetch
153676 --
153677 END LOOP;
153678 
153679 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
153680 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
153681 
153682 --
153683 -- insert dummy rows into lines gt table that were created due to
153684 -- transaction reversals
153685 --
153686 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
153687    l_result := XLA_AE_LINES_PKG.InsertLines;
153688 END IF;
153689 
153690 --
153691 -- reset the temp_line_num for each set of events fetched from header
153692 -- cursor rather than doing it for each new event in line cursor
153693 -- Bug 3939231
153694 --
153695 xla_ae_lines_pkg.g_temp_line_num := 0;
153696 
153697 
153698 
153699 --
153700 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
153701 --
153702 --
153703 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153704 
153705       trace
153706          (p_msg      => 'SQL - FETCH line_cur'
153707          ,p_level    => C_LEVEL_STATEMENT
153708          ,p_module   => l_log_module);
153709 
153710 END IF;
153711 --
153712 --
153713 LOOP
153714   --
153715   FETCH line_cur BULK COLLECT INTO
153716         l_array_entity_id
153717       , l_array_legal_entity_id
153718       , l_array_entity_code
153719       , l_array_transaction_num
153720       , l_array_event_id
153721       , l_array_class_code
153722       , l_array_event_type
153723       , l_array_event_number
153724       , l_array_event_date
153725       , l_array_transaction_date
153726       , l_array_reference_num_1
153727       , l_array_reference_num_2
153728       , l_array_reference_num_3
153729       , l_array_reference_num_4
153730       , l_array_reference_char_1
153731       , l_array_reference_char_2
153732       , l_array_reference_char_3
153733       , l_array_reference_char_4
153734       , l_array_reference_date_1
153735       , l_array_reference_date_2
153736       , l_array_reference_date_3
153737       , l_array_reference_date_4
153738       , l_array_event_created_by
153739       , l_array_budgetary_control_flag
153740       , l_array_extract_line_num 
153741       , l_array_source_4
153742       , l_array_source_11
153743       , l_array_source_15
153744       , l_array_source_18
153745       , l_array_source_19
153746       , l_array_source_20
153747       , l_array_source_21
153748       , l_array_source_22
153749       , l_array_source_24
153750       LIMIT l_rows;
153751 
153752   --
153753   IF (C_LEVEL_EVENT >= g_log_level) THEN
153754             trace
153755                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
153756                ,p_level    => C_LEVEL_EVENT
153757                ,p_module   => l_log_module);
153758   END IF;
153759   --
153760   EXIT WHEN l_array_entity_id.count = 0;
153761 
153762   XLA_AE_LINES_PKG.g_rec_lines := null;
153763 
153764 --
153765 -- Bug 4458708
153766 --
153767 XLA_AE_LINES_PKG.g_LineNumber := 0;
153768 --
153769 --
153770 
153771 FOR Idx IN 1..l_array_event_id.count LOOP
153772    --
153773    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
153774    --
153775    l_event_id := l_array_event_id(idx);  -- 5648433
153776 
153777    --
153778    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
153779    --
153780 
153781    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
153782              (g_array_event(l_event_id).array_value_num('header_index'))
153783          ,'N'
153784          ) <> 'Y'
153785    THEN
153786       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153787          trace
153788             (p_msg      => 'Trancaction revesal option is not Y '
153789             ,p_level    => C_LEVEL_STATEMENT
153790             ,p_module   => l_log_module);
153791       END IF;
153792 
153793 --
153794 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
153795 --
153796 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
153797 --
153798 -- set event info as cache for other routines to refer event attributes
153799 --
153800 
153801 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
153802    l_previous_event_id := l_event_id;
153803 
153804    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
153805       (p_application_id           => p_application_id
153806       ,p_primary_ledger_id        => p_primary_ledger_id
153807       ,p_base_ledger_id           => p_base_ledger_id
153808       ,p_target_ledger_id         => p_target_ledger_id
153809       ,p_entity_id                => l_array_entity_id(Idx)
153810       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
153811       ,p_entity_code              => l_array_entity_code(Idx)
153812       ,p_transaction_num          => l_array_transaction_num(Idx)
153813       ,p_event_id                 => l_array_event_id(Idx)
153814       ,p_event_class_code         => l_array_class_code(Idx)
153815       ,p_event_type_code          => l_array_event_type(Idx)
153816       ,p_event_number             => l_array_event_number(Idx)
153817       ,p_event_date               => l_array_event_date(Idx)
153818       ,p_transaction_date         => l_array_transaction_date(Idx)
153819       ,p_reference_num_1          => l_array_reference_num_1(Idx)
153820       ,p_reference_num_2          => l_array_reference_num_2(Idx)
153821       ,p_reference_num_3          => l_array_reference_num_3(Idx)
153822       ,p_reference_num_4          => l_array_reference_num_4(Idx)
153823       ,p_reference_char_1         => l_array_reference_char_1(Idx)
153824       ,p_reference_char_2         => l_array_reference_char_2(Idx)
153825       ,p_reference_char_3         => l_array_reference_char_3(Idx)
153826       ,p_reference_char_4         => l_array_reference_char_4(Idx)
153827       ,p_reference_date_1         => l_array_reference_date_1(Idx)
153828       ,p_reference_date_2         => l_array_reference_date_2(Idx)
153829       ,p_reference_date_3         => l_array_reference_date_3(Idx)
153830       ,p_reference_date_4         => l_array_reference_date_4(Idx)
153831       ,p_event_created_by         => l_array_event_created_by(Idx)
153832       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
153833        --
153834 END IF;
153835 
153836 
153837 
153838 --
153839 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
153840 
153841 l_acct_reversal_source := SUBSTR(NULL, 1,30);
153842 
153843 IF l_continue_with_lines THEN
153844    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
153845       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
153846 
153847       xla_accounting_err_pkg.build_message
153848          (p_appli_s_name            => 'XLA'
153849          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
153850          ,p_token_1                 => 'LINE_NUMBER'
153851          ,p_value_1                 => l_array_extract_line_num(Idx)
153852          ,p_token_2                 => 'PRODUCT_NAME'
153853          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
153854          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
153855          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
153856          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
153857 
153858    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
153859       --
153860       -- following sets the accounting attributes needed to reverse
153861       -- accounting for a distributeion
153862       --
153863 
153864       --
153865       -- 5217187
153866       --
153867       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
153868       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
153869                                        g_array_event(l_event_id).array_value_num('header_index'));
153870       --
153871       --
153872 
153873       -- No reversal code generated
153874 
153875       xla_ae_lines_pkg.SetAcctReversalAttrs
153876          (p_event_id             => l_event_id
153877          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
153878          ,p_calculate_acctd_flag => l_calculate_acctd_flag
153879          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
153880    END IF;
153881 
153882    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
153883        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
153884 
153885 --
153886 AcctLineType_19 (
153887  p_application_id  => p_application_id
153888  ,p_event_id     => l_event_id
153889  ,p_calculate_acctd_flag => l_calculate_acctd_flag
153890  ,p_calculate_g_l_flag => l_calculate_g_l_flag
153891  ,p_actual_flag => l_actual_flag
153892  ,p_balance_type_code => l_balance_type_code
153893  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
153894  
153895  , p_source_4 => l_array_source_4(Idx)
153896  , p_source_11 => l_array_source_11(Idx)
153897  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
153898  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
153899  , p_source_15 => l_array_source_15(Idx)
153900  , p_source_18 => l_array_source_18(Idx)
153901  , p_source_19 => l_array_source_19(Idx)
153902  , p_source_20 => l_array_source_20(Idx)
153903  , p_source_21 => l_array_source_21(Idx)
153904  , p_source_22 => l_array_source_22(Idx)
153905  , p_source_24 => l_array_source_24(Idx)
153906  );
153907 If(l_balance_type_code = 'A') THEN
153908   l_actual_gain_loss_ref := l_gain_or_loss_ref;
153909 END IF;
153910 
153911 --
153912 
153913 
153914 --
153915 AcctLineType_70 (
153916  p_application_id  => p_application_id
153917  ,p_event_id     => l_event_id
153918  ,p_calculate_acctd_flag => l_calculate_acctd_flag
153919  ,p_calculate_g_l_flag => l_calculate_g_l_flag
153920  ,p_actual_flag => l_actual_flag
153921  ,p_balance_type_code => l_balance_type_code
153922  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
153923  
153924  , p_source_4 => l_array_source_4(Idx)
153925  , p_source_11 => l_array_source_11(Idx)
153926  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
153927  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
153928  , p_source_15 => l_array_source_15(Idx)
153929  , p_source_18 => l_array_source_18(Idx)
153930  , p_source_19 => l_array_source_19(Idx)
153931  , p_source_20 => l_array_source_20(Idx)
153932  , p_source_21 => l_array_source_21(Idx)
153933  , p_source_22 => l_array_source_22(Idx)
153934  , p_source_24 => l_array_source_24(Idx)
153935  );
153936 If(l_balance_type_code = 'A') THEN
153937   l_actual_gain_loss_ref := l_gain_or_loss_ref;
153938 END IF;
153939 
153940 --
153941 
153942 
153943 --
153944 AcctLineType_88 (
153945  p_application_id  => p_application_id
153946  ,p_event_id     => l_event_id
153947  ,p_calculate_acctd_flag => l_calculate_acctd_flag
153948  ,p_calculate_g_l_flag => l_calculate_g_l_flag
153949  ,p_actual_flag => l_actual_flag
153950  ,p_balance_type_code => l_balance_type_code
153951  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
153952  
153953  , p_source_4 => l_array_source_4(Idx)
153954  , p_source_11 => l_array_source_11(Idx)
153955  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
153956  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
153957  , p_source_15 => l_array_source_15(Idx)
153958  , p_source_18 => l_array_source_18(Idx)
153959  , p_source_19 => l_array_source_19(Idx)
153960  , p_source_20 => l_array_source_20(Idx)
153961  , p_source_21 => l_array_source_21(Idx)
153962  , p_source_22 => l_array_source_22(Idx)
153963  , p_source_24 => l_array_source_24(Idx)
153964  );
153965 If(l_balance_type_code = 'A') THEN
153966   l_actual_gain_loss_ref := l_gain_or_loss_ref;
153967 END IF;
153968 
153969 --
153970 
153971 
153972 --
153973 AcctLineType_99 (
153974  p_application_id  => p_application_id
153975  ,p_event_id     => l_event_id
153976  ,p_calculate_acctd_flag => l_calculate_acctd_flag
153977  ,p_calculate_g_l_flag => l_calculate_g_l_flag
153978  ,p_actual_flag => l_actual_flag
153979  ,p_balance_type_code => l_balance_type_code
153980  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
153981  
153982  , p_source_4 => l_array_source_4(Idx)
153983  , p_source_11 => l_array_source_11(Idx)
153984  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
153985  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
153986  , p_source_15 => l_array_source_15(Idx)
153987  , p_source_18 => l_array_source_18(Idx)
153988  , p_source_19 => l_array_source_19(Idx)
153989  , p_source_20 => l_array_source_20(Idx)
153990  , p_source_21 => l_array_source_21(Idx)
153991  , p_source_22 => l_array_source_22(Idx)
153992  , p_source_24 => l_array_source_24(Idx)
153993  );
153994 If(l_balance_type_code = 'A') THEN
153995   l_actual_gain_loss_ref := l_gain_or_loss_ref;
153996 END IF;
153997 
153998 --
153999 
154000 
154001 --
154002 AcctLineType_120 (
154003  p_application_id  => p_application_id
154004  ,p_event_id     => l_event_id
154005  ,p_calculate_acctd_flag => l_calculate_acctd_flag
154006  ,p_calculate_g_l_flag => l_calculate_g_l_flag
154007  ,p_actual_flag => l_actual_flag
154008  ,p_balance_type_code => l_balance_type_code
154009  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
154010  
154011  , p_source_4 => l_array_source_4(Idx)
154012  , p_source_11 => l_array_source_11(Idx)
154013  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
154014  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
154015  , p_source_15 => l_array_source_15(Idx)
154016  , p_source_18 => l_array_source_18(Idx)
154017  , p_source_19 => l_array_source_19(Idx)
154018  , p_source_20 => l_array_source_20(Idx)
154019  , p_source_21 => l_array_source_21(Idx)
154020  , p_source_22 => l_array_source_22(Idx)
154021  , p_source_24 => l_array_source_24(Idx)
154022  );
154023 If(l_balance_type_code = 'A') THEN
154024   l_actual_gain_loss_ref := l_gain_or_loss_ref;
154025 END IF;
154026 
154027 --
154028 
154029 
154030 --
154031 AcctLineType_126 (
154032  p_application_id  => p_application_id
154033  ,p_event_id     => l_event_id
154034  ,p_calculate_acctd_flag => l_calculate_acctd_flag
154035  ,p_calculate_g_l_flag => l_calculate_g_l_flag
154036  ,p_actual_flag => l_actual_flag
154037  ,p_balance_type_code => l_balance_type_code
154038  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
154039  
154040  , p_source_4 => l_array_source_4(Idx)
154041  , p_source_11 => l_array_source_11(Idx)
154042  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
154043  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
154044  , p_source_15 => l_array_source_15(Idx)
154045  , p_source_18 => l_array_source_18(Idx)
154046  , p_source_19 => l_array_source_19(Idx)
154047  , p_source_20 => l_array_source_20(Idx)
154048  , p_source_21 => l_array_source_21(Idx)
154049  , p_source_22 => l_array_source_22(Idx)
154050  , p_source_24 => l_array_source_24(Idx)
154051  );
154052 If(l_balance_type_code = 'A') THEN
154053   l_actual_gain_loss_ref := l_gain_or_loss_ref;
154054 END IF;
154055 
154056 --
154057 
154058 
154059 --
154060 AcctLineType_196 (
154061  p_application_id  => p_application_id
154062  ,p_event_id     => l_event_id
154063  ,p_calculate_acctd_flag => l_calculate_acctd_flag
154064  ,p_calculate_g_l_flag => l_calculate_g_l_flag
154065  ,p_actual_flag => l_actual_flag
154066  ,p_balance_type_code => l_balance_type_code
154067  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
154068  
154069  , p_source_4 => l_array_source_4(Idx)
154070  , p_source_11 => l_array_source_11(Idx)
154071  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
154072  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
154073  , p_source_15 => l_array_source_15(Idx)
154074  , p_source_18 => l_array_source_18(Idx)
154075  , p_source_19 => l_array_source_19(Idx)
154076  , p_source_20 => l_array_source_20(Idx)
154077  , p_source_21 => l_array_source_21(Idx)
154078  , p_source_22 => l_array_source_22(Idx)
154079  , p_source_24 => l_array_source_24(Idx)
154080  );
154081 If(l_balance_type_code = 'A') THEN
154082   l_actual_gain_loss_ref := l_gain_or_loss_ref;
154083 END IF;
154084 
154085 --
154086 
154087       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
154088       -- or secondary ledger that has different currency with primary
154089       -- or alc that is calculated by sla
154090       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
154091             (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'))
154092 
154093 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
154094 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
154095           AND (l_actual_flag = 'A')) THEN
154096         XLA_AE_LINES_PKG.CreateGainOrLossLines(
154097           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
154098          ,p_application_id   => p_application_id
154099          ,p_amb_context_code => 'DEFAULT'
154100          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
154101          ,p_event_class_code => C_EVENT_CLASS_CODE
154102          ,p_event_type_code  => C_EVENT_TYPE_CODE
154103          
154104          ,p_gain_ccid        => -1
154105          ,p_loss_ccid        => -1
154106 
154107          ,p_actual_flag      => l_actual_flag
154108          ,p_enc_flag         => null
154109          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
154110          ,p_enc_g_l_ref      => null
154111          );
154112       END IF;
154113    END IF;
154114 END IF;
154115 
154116    ELSE
154117       --
154118       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
154119       --
154120       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154121          trace
154122             (p_msg      => 'Trancaction revesal option is Y'
154123             ,p_level    => C_LEVEL_STATEMENT
154124             ,p_module   => l_log_module);
154125       END IF;
154126    END IF;
154127 
154128 END LOOP;
154129 l_result := XLA_AE_LINES_PKG.InsertLines ;
154130 end loop;
154131 close line_cur;
154132 
154133 
154134 --
154135 -- insert headers into xla_ae_headers_gt table
154136 --
154137 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
154138 
154139 -- insert into errors table here.
154140 
154141 END LOOP;
154142 
154143 --
154144 -- 4865292
154145 --
154146 -- Compare g_hdr_extract_count with event count in
154147 -- CreateHeadersAndLines.
154148 --
154149 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
154150 
154151 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154152    trace (p_msg     => '# rows extracted from header extract objects '
154153                     || ' (running total): '
154154                     || g_hdr_extract_count
154155          ,p_level   => C_LEVEL_STATEMENT
154156          ,p_module  => l_log_module);
154157 END IF;
154158 
154159 CLOSE header_cur;
154160 --
154161 
154162 --
154163 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
154164    trace
154165       (p_msg      => 'END of EventClass_266'
154166       ,p_level    => C_LEVEL_PROCEDURE
154167       ,p_module   => l_log_module);
154168 END IF;
154169 --
154170 RETURN l_result;
154171 EXCEPTION
154172 WHEN xla_exceptions_pkg.application_exception THEN
154173    
154174 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
154175 
154176    
154177 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
154178 
154179    RAISE;
154180 
154181 WHEN NO_DATA_FOUND THEN
154182 
154183 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
154184 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
154185 
154186 FOR header_record IN header_cur
154187 LOOP
154188     l_array_header_events(header_record.event_id) := header_record.event_id;
154189 END LOOP;
154190 
154191 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
154192 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
154193 
154194 fnd_file.put_line(fnd_file.LOG, '                    ');
154195 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
154196 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
154197 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
154198 
154199 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
154200 LOOP
154201 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
154202 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
154203         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
154204 	END IF;
154205 END LOOP;
154206 
154207 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
154208 fnd_file.put_line(fnd_file.LOG, '                    ');
154209 
154210 
154211 xla_exceptions_pkg.raise_message
154212       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_266');
154213 
154214 
154215 WHEN OTHERS THEN
154216    xla_exceptions_pkg.raise_message
154217       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_266');
154218 END EventClass_266;
154219 --
154220 
154221 ---------------------------------------
154222 --
154223 -- PRIVATE PROCEDURE
154224 --         insert_sources_267
154225 --
154226 ----------------------------------------
154227 --
154228 PROCEDURE insert_sources_267(
154229                                 p_target_ledger_id       IN NUMBER
154230                               , p_language               IN VARCHAR2
154231                               , p_sla_ledger_id          IN NUMBER
154232                               , p_pad_start_date         IN DATE
154233                               , p_pad_end_date           IN DATE
154234                          )
154235 IS
154236 
154237 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_SENDER_SHIP_ALL';
154238 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_RCPT_SENDER_SHIP';
154239 p_apps_owner                   VARCHAR2(30);
154240 l_log_module                   VARCHAR2(240);
154241 BEGIN
154242 IF g_log_enabled THEN
154243       l_log_module := C_DEFAULT_MODULE||'.insert_sources_267';
154244 END IF;
154245 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
154246 
154247       trace
154248          (p_msg      => 'BEGIN of insert_sources_267'
154249          ,p_level    => C_LEVEL_PROCEDURE
154250          ,p_module   => l_log_module);
154251 
154252 END IF;
154253 
154254 -- select APPS owner
154255 SELECT oracle_username
154256   INTO p_apps_owner
154257   FROM fnd_oracle_userid
154258  WHERE read_only_flag = 'U'
154259 ;
154260 
154261 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154262       trace
154263          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
154264                         ' - p_language = '||p_language||
154265                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
154266                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
154267                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
154268                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
154269          ,p_level    => C_LEVEL_STATEMENT
154270          ,p_module   => l_log_module);
154271 END IF;
154272 
154273 
154274 --
154275 INSERT INTO xla_diag_sources --hdr2
154276 (
154277         event_id
154278       , ledger_id
154279       , sla_ledger_id
154280       , description_language
154281       , object_name
154282       , object_type_code
154283       , line_number
154284       , source_application_id
154285       , source_type_code
154286       , source_code
154287       , source_value
154288       , source_meaning
154289       , created_by
154290       , creation_date
154291       , last_update_date
154292       , last_updated_by
154293       , last_update_login
154294       , program_update_date
154295       , program_application_id
154296       , program_id
154297       , request_id
154298 )
154299 SELECT
154300         event_id
154301       , p_target_ledger_id
154302       , p_sla_ledger_id
154303       , p_language
154304       , object_name
154305       , object_type_code
154306       , line_number
154307       , source_application_id
154308       , source_type_code
154309       , source_code
154310       , SUBSTR(source_value ,1,1996)
154311       , SUBSTR(source_meaning ,1,200)
154312       , xla_environment_pkg.g_Usr_Id
154313       , TRUNC(SYSDATE)
154314       , TRUNC(SYSDATE)
154315       , xla_environment_pkg.g_Usr_Id
154316       , xla_environment_pkg.g_Login_Id
154317       , TRUNC(SYSDATE)
154318       , xla_environment_pkg.g_Prog_Appl_Id
154319       , xla_environment_pkg.g_Prog_Id
154320       , xla_environment_pkg.g_Req_Id
154321   FROM (
154322        SELECT xet.event_id                  event_id
154323             , 0                          line_number
154324             , CASE r
154325                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
154326                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
154327                 
154328                ELSE null
154329               END                           object_name
154330             , CASE r
154331                 WHEN 1 THEN 'HEADER' 
154332                 WHEN 2 THEN 'HEADER' 
154333                 
154334                 ELSE null
154335               END                           object_type_code
154336             , CASE r
154337                 WHEN 1 THEN '707' 
154338                 WHEN 2 THEN '707' 
154339                 
154340                 ELSE null
154341               END                           source_application_id
154342             , 'S'             source_type_code
154343             , CASE r
154344                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
154345                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
154346                 
154347                 ELSE null
154348               END                           source_code
154349             , CASE r
154350                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
154351                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
154352                 
154353                 ELSE null
154354               END                           source_value
154355             , CASE r
154356                 WHEN 1 THEN fvl12.meaning
154357                 WHEN 2 THEN fvl38.meaning
154358                 
154359                 ELSE null
154360               END               source_meaning
154361          FROM xla_events_gt     xet  
154362       , CST_XLA_INV_HEADERS_V  h1
154363   , fnd_lookup_values    fvl12
154364   , fnd_lookup_values    fvl38
154365              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
154366          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
154367            AND xet.event_class_code = C_EVENT_CLASS_CODE
154368               AND h1.event_id = xet.event_id
154369    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
154370   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
154371   AND fvl12.view_application_id(+) = 700
154372   AND fvl12.language(+)            = USERENV('LANG')
154373      AND fvl38.lookup_type(+)         = 'YES_NO'
154374   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
154375   AND fvl38.view_application_id(+) = 0
154376   AND fvl38.language(+)            = USERENV('LANG')
154377   
154378 )
154379 ;
154380 --
154381 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154382 
154383       trace
154384          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
154385          ,p_level    => C_LEVEL_STATEMENT
154386          ,p_module   => l_log_module);
154387 
154388 END IF;
154389 --
154390 
154391 
154392 
154393 --
154394 INSERT INTO xla_diag_sources  --line2
154395 (
154396         event_id
154397       , ledger_id
154398       , sla_ledger_id
154399       , description_language
154400       , object_name
154401       , object_type_code
154402       , line_number
154403       , source_application_id
154404       , source_type_code
154405       , source_code
154406       , source_value
154407       , source_meaning
154408       , created_by
154409       , creation_date
154410       , last_update_date
154411       , last_updated_by
154412       , last_update_login
154413       , program_update_date
154414       , program_application_id
154415       , program_id
154416       , request_id
154417 )
154418 SELECT  event_id
154419       , p_target_ledger_id
154420       , p_sla_ledger_id
154421       , p_language
154422       , object_name
154423       , object_type_code
154424       , line_number
154425       , source_application_id
154426       , source_type_code
154427       , source_code
154428       , SUBSTR(source_value,1,1996)
154429       , SUBSTR(source_meaning ,1,200)
154430       , xla_environment_pkg.g_Usr_Id
154431       , TRUNC(SYSDATE)
154432       , TRUNC(SYSDATE)
154433       , xla_environment_pkg.g_Usr_Id
154434       , xla_environment_pkg.g_Login_Id
154435       , TRUNC(SYSDATE)
154436       , xla_environment_pkg.g_Prog_Appl_Id
154437       , xla_environment_pkg.g_Prog_Id
154438       , xla_environment_pkg.g_Req_Id
154439   FROM (
154440        SELECT xet.event_id                  event_id
154441             , l2.line_number                 line_number
154442             , CASE r
154443                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
154444                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
154445                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
154446                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
154447                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
154448                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
154449                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
154450                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
154451                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
154452                 
154453                ELSE null
154454               END                           object_name
154455             , CASE r
154456                 WHEN 1 THEN 'LINE' 
154457                 WHEN 2 THEN 'LINE' 
154458                 WHEN 3 THEN 'LINE' 
154459                 WHEN 4 THEN 'LINE' 
154460                 WHEN 5 THEN 'LINE' 
154461                 WHEN 6 THEN 'LINE' 
154462                 WHEN 7 THEN 'LINE' 
154463                 WHEN 8 THEN 'LINE' 
154464                 WHEN 9 THEN 'LINE' 
154465                 
154466                 ELSE null
154467               END                           object_type_code
154468             , CASE r
154469                 WHEN 1 THEN '707' 
154470                 WHEN 2 THEN '707' 
154471                 WHEN 3 THEN '707' 
154472                 WHEN 4 THEN '707' 
154473                 WHEN 5 THEN '707' 
154474                 WHEN 6 THEN '707' 
154475                 WHEN 7 THEN '707' 
154476                 WHEN 8 THEN '707' 
154477                 WHEN 9 THEN '707' 
154478                 
154479                 ELSE null
154480               END                           source_application_id
154481             , 'S'             source_type_code
154482             , CASE r
154483                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
154484                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
154485                 WHEN 3 THEN 'CURRENCY_CODE' 
154486                 WHEN 4 THEN 'ENTERED_AMOUNT' 
154487                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
154488                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
154489                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
154490                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
154491                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
154492                 
154493                 ELSE null
154494               END                           source_code
154495             , CASE r
154496                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
154497                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
154498                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
154499                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
154500                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
154501                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
154502                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
154503                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
154504                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
154505                 
154506                 ELSE null
154507               END                           source_value
154508             , null              source_meaning
154509          FROM  xla_events_gt     xet  
154510         , CST_XLA_INV_LINES_V  l2
154511             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
154512         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
154513           AND xet.event_class_code = C_EVENT_CLASS_CODE
154514             AND l2.event_id          = xet.event_id
154515 
154516 )
154517 ;
154518 --
154519 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154520 
154521       trace
154522          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
154523          ,p_level    => C_LEVEL_STATEMENT
154524          ,p_module   => l_log_module);
154525 
154526 END IF;
154527 
154528 
154529 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
154530       trace
154531          (p_msg      => 'END of insert_sources_267'
154532          ,p_level    => C_LEVEL_PROCEDURE
154533          ,p_module   => l_log_module);
154534 END IF;
154535 EXCEPTION
154536   WHEN xla_exceptions_pkg.application_exception THEN
154537       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
154538             trace
154539                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
154540                ,p_level    => C_LEVEL_EXCEPTION
154541                ,p_module   => l_log_module);
154542       END IF;
154543       RAISE;
154544   WHEN OTHERS THEN
154545       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
154546             trace
154547                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
154548                ,p_level    => C_LEVEL_EXCEPTION
154549                ,p_module   => l_log_module);
154550        END IF;
154551        xla_exceptions_pkg.raise_message
154552            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_267');
154553 END insert_sources_267;
154554 --
154555 
154556 ---------------------------------------
154557 --
154558 -- PRIVATE FUNCTION
154559 --         EventClass_267
154560 --
154561 ----------------------------------------
154562 --
154563 FUNCTION EventClass_267
154564        (p_application_id         IN NUMBER
154565        ,p_base_ledger_id         IN NUMBER
154566        ,p_target_ledger_id       IN NUMBER
154567        ,p_language               IN VARCHAR2
154568        ,p_currency_code          IN VARCHAR2
154569        ,p_sla_ledger_id          IN NUMBER
154570        ,p_pad_start_date         IN DATE
154571        ,p_pad_end_date           IN DATE
154572        ,p_primary_ledger_id      IN NUMBER)
154573 RETURN BOOLEAN IS
154574 --
154575 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_SENDER_SHIP_ALL';
154576 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_RCPT_SENDER_SHIP';
154577 
154578 l_calculate_acctd_flag   VARCHAR2(1) :='N';
154579 l_calculate_g_l_flag     VARCHAR2(1) :='N';
154580 --
154581 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154582 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154583 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
154584 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
154585 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154586 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
154587 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
154588 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154589 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154590 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154591 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154592 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154593 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154594 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154595 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
154596 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
154597 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
154598 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
154599 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154600 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154601 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154602 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154603 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
154604 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
154605 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
154606 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
154607 
154608 l_event_id                             NUMBER;
154609 l_previous_event_id                    NUMBER;
154610 l_first_event_id                       NUMBER;
154611 l_last_event_id                        NUMBER;
154612 
154613 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
154614 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
154615 --
154616 --
154617 l_result                    BOOLEAN := TRUE;
154618 l_rows                      NUMBER  := 1000;
154619 l_event_type_name           VARCHAR2(80) := 'All';
154620 l_event_class_name          VARCHAR2(80) := 'Intransit Interorg Shipment for FOB Receipt';
154621 l_description               VARCHAR2(4000);
154622 l_transaction_reversal      NUMBER;
154623 l_ae_header_id              NUMBER;
154624 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
154625 l_log_module                VARCHAR2(240);
154626 --
154627 l_acct_reversal_source      VARCHAR2(30);
154628 l_trx_reversal_source       VARCHAR2(30);
154629 
154630 l_continue_with_lines       BOOLEAN := TRUE;
154631 --
154632 l_acc_rev_gl_date_source    DATE;                      -- 4262811
154633 --
154634 type t_array_event_id is table of number index by binary_integer;
154635 
154636 l_rec_array_event                    t_rec_array_event;
154637 l_null_rec_array_event               t_rec_array_event;
154638 l_array_ae_header_id                 xla_number_array_type;
154639 l_actual_flag                        VARCHAR2(1) := NULL;
154640 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
154641 l_balance_type_code                  VARCHAR2(1) :=NULL;
154642 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
154643 
154644 --
154645 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
154646 --
154647 
154648 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
154649 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
154650 
154651 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
154652 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
154653 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
154654 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
154655 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
154656 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
154657 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
154658 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
154659 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
154660 
154661 l_array_source_12              t_array_source_12;
154662 l_array_source_12_meaning      t_array_lookup_meaning;
154663 l_array_source_38              t_array_source_38;
154664 l_array_source_38_meaning      t_array_lookup_meaning;
154665 
154666 l_array_source_4      t_array_source_4;
154667 l_array_source_11      t_array_source_11;
154668 l_array_source_15      t_array_source_15;
154669 l_array_source_18      t_array_source_18;
154670 l_array_source_19      t_array_source_19;
154671 l_array_source_20      t_array_source_20;
154672 l_array_source_21      t_array_source_21;
154673 l_array_source_22      t_array_source_22;
154674 l_array_source_24      t_array_source_24;
154675 
154676 --
154677 CURSOR header_cur
154678 IS
154679 SELECT /*+ leading(xet) cardinality(xet,1) */
154680 -- Event Class Code: FOB_RCPT_SENDER_SHIP
154681     xet.entity_id
154682    ,xet.legal_entity_id
154683    ,xet.entity_code
154684    ,xet.transaction_number
154685    ,xet.event_id
154686    ,xet.event_class_code
154687    ,xet.event_type_code
154688    ,xet.event_number
154689    ,xet.event_date
154690    ,xet.transaction_date
154691    ,xet.reference_num_1
154692    ,xet.reference_num_2
154693    ,xet.reference_num_3
154694    ,xet.reference_num_4
154695    ,xet.reference_char_1
154696    ,xet.reference_char_2
154697    ,xet.reference_char_3
154698    ,xet.reference_char_4
154699    ,xet.reference_date_1
154700    ,xet.reference_date_2
154701    ,xet.reference_date_3
154702    ,xet.reference_date_4
154703    ,xet.event_created_by
154704    ,xet.budgetary_control_flag 
154705   , h1.DISTRIBUTION_TYPE    source_12
154706   , fvl12.meaning   source_12_meaning
154707   , h1.TRANSFER_TO_GL_INDICATOR    source_38
154708   , fvl38.meaning   source_38_meaning
154709   FROM xla_events_gt     xet 
154710   , CST_XLA_INV_HEADERS_V  h1
154711   , fnd_lookup_values    fvl12
154712   , fnd_lookup_values    fvl38
154713  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
154714    and xet.event_class_code = C_EVENT_CLASS_CODE
154715    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
154716    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
154717   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
154718   AND fvl12.view_application_id(+) = 700
154719   AND fvl12.language(+)            = USERENV('LANG')
154720      AND fvl38.lookup_type(+)         = 'YES_NO'
154721   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
154722   AND fvl38.view_application_id(+) = 0
154723   AND fvl38.language(+)            = USERENV('LANG')
154724   
154725  ORDER BY event_id
154726 ;
154727 
154728 
154729 --
154730 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
154731 IS
154732 SELECT  /*+ leading(xet) cardinality(xet,1) */
154733 -- Event Class Code: FOB_RCPT_SENDER_SHIP
154734     xet.entity_id
154735    ,xet.legal_entity_id
154736    ,xet.entity_code
154737    ,xet.transaction_number
154738    ,xet.event_id
154739    ,xet.event_class_code
154740    ,xet.event_type_code
154741    ,xet.event_number
154742    ,xet.event_date
154743    ,xet.transaction_date
154744    ,xet.reference_num_1
154745    ,xet.reference_num_2
154746    ,xet.reference_num_3
154747    ,xet.reference_num_4
154748    ,xet.reference_char_1
154749    ,xet.reference_char_2
154750    ,xet.reference_char_3
154751    ,xet.reference_char_4
154752    ,xet.reference_date_1
154753    ,xet.reference_date_2
154754    ,xet.reference_date_3
154755    ,xet.reference_date_4
154756    ,xet.event_created_by
154757    ,xet.budgetary_control_flag
154758  , l2.LINE_NUMBER  
154759   , l2.CODE_COMBINATION_ID    source_4
154760   , l2.DISTRIBUTION_IDENTIFIER    source_11
154761   , l2.CURRENCY_CODE    source_15
154762   , l2.ENTERED_AMOUNT    source_18
154763   , l2.CURRENCY_CONVERSION_DATE    source_19
154764   , l2.CURRENCY_CONVERSION_RATE    source_20
154765   , l2.CURRENCY_CONVERSION_TYPE    source_21
154766   , l2.ACCOUNTED_AMOUNT    source_22
154767   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
154768   FROM xla_events_gt     xet 
154769   , CST_XLA_INV_LINES_V  l2
154770  WHERE xet.event_id between x_first_event_id and x_last_event_id
154771    and xet.event_date between p_pad_start_date and p_pad_end_date
154772    and xet.event_class_code = C_EVENT_CLASS_CODE
154773    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
154774 ;
154775 
154776 --
154777 BEGIN
154778 IF g_log_enabled THEN
154779    l_log_module := C_DEFAULT_MODULE||'.EventClass_267';
154780 END IF;
154781 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
154782    trace
154783       (p_msg      => 'BEGIN of EventClass_267'
154784       ,p_level    => C_LEVEL_PROCEDURE
154785       ,p_module   => l_log_module);
154786 END IF;
154787 
154788 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154789    trace
154790       (p_msg      => 'p_application_id = '||p_application_id||
154791                      ' - p_base_ledger_id = '||p_base_ledger_id||
154792                      ' - p_target_ledger_id  = '||p_target_ledger_id||
154793                      ' - p_language = '||p_language||
154794                      ' - p_currency_code = '||p_currency_code||
154795                      ' - p_sla_ledger_id = '||p_sla_ledger_id
154796       ,p_level    => C_LEVEL_STATEMENT
154797       ,p_module   => l_log_module);
154798 END IF;
154799 --
154800 -- initialze arrays
154801 --
154802 g_array_event.DELETE;
154803 l_rec_array_event := l_null_rec_array_event;
154804 --
154805 --------------------------------------
154806 -- 4262811 Initialze MPA Line Number
154807 --------------------------------------
154808 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
154809 
154810 --
154811 
154812 --
154813 OPEN header_cur;
154814 --
154815 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154816    trace
154817    (p_msg      => 'SQL - FETCH header_cur'
154818    ,p_level    => C_LEVEL_STATEMENT
154819    ,p_module   => l_log_module);
154820 END IF;
154821 --
154822 LOOP
154823 FETCH header_cur BULK COLLECT INTO
154824         l_array_entity_id
154825       , l_array_legal_entity_id
154826       , l_array_entity_code
154827       , l_array_transaction_num
154828       , l_array_event_id
154829       , l_array_class_code
154830       , l_array_event_type
154831       , l_array_event_number
154832       , l_array_event_date
154833       , l_array_transaction_date
154834       , l_array_reference_num_1
154835       , l_array_reference_num_2
154836       , l_array_reference_num_3
154837       , l_array_reference_num_4
154838       , l_array_reference_char_1
154839       , l_array_reference_char_2
154840       , l_array_reference_char_3
154841       , l_array_reference_char_4
154842       , l_array_reference_date_1
154843       , l_array_reference_date_2
154844       , l_array_reference_date_3
154845       , l_array_reference_date_4
154846       , l_array_event_created_by
154847       , l_array_budgetary_control_flag 
154848       , l_array_source_12
154849       , l_array_source_12_meaning
154850       , l_array_source_38
154851       , l_array_source_38_meaning
154852       LIMIT l_rows;
154853 --
154854 IF (C_LEVEL_EVENT >= g_log_level) THEN
154855    trace
154856    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
154857    ,p_level    => C_LEVEL_EVENT
154858    ,p_module   => l_log_module);
154859 END IF;
154860 --
154861 EXIT WHEN l_array_entity_id.COUNT = 0;
154862 
154863 -- initialize arrays
154864 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
154865 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
154866 
154867 --
154868 -- Bug 4458708
154869 --
154870 XLA_AE_LINES_PKG.g_LineNumber := 0;
154871 
154872 
154873 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
154874 g_last_hdr_idx := l_array_event_id.LAST;
154875 --
154876 -- loop for the headers. Each iteration is for each header extract row
154877 -- fetched in header cursor
154878 --
154879 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
154880 
154881 --
154882 -- set event info as cache for other routines to refer event attributes
154883 --
154884 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
154885    (p_application_id           => p_application_id
154886    ,p_primary_ledger_id        => p_primary_ledger_id
154887    ,p_base_ledger_id           => p_base_ledger_id
154888    ,p_target_ledger_id         => p_target_ledger_id
154889    ,p_entity_id                => l_array_entity_id(hdr_idx)
154890    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
154891    ,p_entity_code              => l_array_entity_code(hdr_idx)
154892    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
154893    ,p_event_id                 => l_array_event_id(hdr_idx)
154894    ,p_event_class_code         => l_array_class_code(hdr_idx)
154895    ,p_event_type_code          => l_array_event_type(hdr_idx)
154896    ,p_event_number             => l_array_event_number(hdr_idx)
154897    ,p_event_date               => l_array_event_date(hdr_idx)
154898    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
154899    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
154900    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
154901    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
154902    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
154903    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
154904    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
154905    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
154906    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
154907    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
154908    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
154909    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
154910    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
154911    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
154912    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
154913 
154914 --
154915 -- set the status of entry to C_VALID (0)
154916 --
154917 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
154918 
154919 --
154920 -- initialize a row for ae header
154921 --
154922 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
154923 
154924 l_event_id := l_array_event_id(hdr_idx);
154925 
154926 --
154927 -- storing the hdr_idx for event. May be used by line cursor.
154928 --
154929 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
154930 
154931 --
154932 -- store sources from header extract. This can be improved to
154933 -- store only those sources from header extract that may be used in lines
154934 --
154935 
154936 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
154937 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
154938 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
154939 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
154940 
154941 --
154942 -- initilaize the status of ae headers for diffrent balance types
154943 -- the status is initialised to C_NOT_CREATED (2)
154944 --
154945 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
154946 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
154947 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
154948 
154949 --
154950 -- call api to validate and store accounting attributes for header
154951 --
154952 
154953 ------------------------------------------------------------
154954 -- Accrual Reversal : to get date for Standard Source (NONE)
154955 ------------------------------------------------------------
154956 l_acc_rev_gl_date_source := NULL;
154957 
154958      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
154959       l_rec_acct_attrs.array_date_value(1) := 
154960 xla_ae_sources_pkg.GetSystemSourceDate(
154961    p_source_code           => 'XLA_REFERENCE_DATE_1'
154962  , p_source_type_code      => 'Y'
154963  , p_source_application_id =>  602
154964 );
154965      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
154966       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
154967 
154968 
154969 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
154970 
154971 XLA_AE_HEADER_PKG.SetJeCategoryName;
154972 
154973 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
154974 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
154975 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
154976 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
154977 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
154978 
154979 
154980 -- No header level analytical criteria
154981 
154982 --
154983 --accounting attribute enhancement, bug 3612931
154984 --
154985 l_trx_reversal_source := SUBSTR(NULL, 1,30);
154986 
154987 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
154988    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
154989 
154990    xla_accounting_err_pkg.build_message
154991       (p_appli_s_name            => 'XLA'
154992       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
154993       ,p_token_1                 => 'ACCT_ATTR_NAME'
154994       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
154995       ,p_token_2                 => 'PRODUCT_NAME'
154996       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
154997       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
154998       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
154999       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
155000 
155001 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
155002    --
155003    -- following sets the accounting attributes needed to reverse
155004    -- accounting for a distributeion
155005    --
155006    xla_ae_lines_pkg.SetTrxReversalAttrs
155007       (p_event_id              => l_event_id
155008       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
155009       ,p_trx_reversal_source   => l_trx_reversal_source);
155010 
155011 END IF;
155012 
155013 
155014 ----------------------------------------------------------------
155015 -- 4262811 -  update the header statuses to invalid in need be
155016 ----------------------------------------------------------------
155017 --
155018 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
155019 
155020 
155021   -----------------------------------------------
155022   -- No accrual reversal for the event class/type
155023   -----------------------------------------------
155024 ----------------------------------------------------------------
155025 
155026 --
155027 -- this ends the header loop iteration for one bulk fetch
155028 --
155029 END LOOP;
155030 
155031 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
155032 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
155033 
155034 --
155035 -- insert dummy rows into lines gt table that were created due to
155036 -- transaction reversals
155037 --
155038 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
155039    l_result := XLA_AE_LINES_PKG.InsertLines;
155040 END IF;
155041 
155042 --
155043 -- reset the temp_line_num for each set of events fetched from header
155044 -- cursor rather than doing it for each new event in line cursor
155045 -- Bug 3939231
155046 --
155047 xla_ae_lines_pkg.g_temp_line_num := 0;
155048 
155049 
155050 
155051 --
155052 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
155053 --
155054 --
155055 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155056 
155057       trace
155058          (p_msg      => 'SQL - FETCH line_cur'
155059          ,p_level    => C_LEVEL_STATEMENT
155060          ,p_module   => l_log_module);
155061 
155062 END IF;
155063 --
155064 --
155065 LOOP
155066   --
155067   FETCH line_cur BULK COLLECT INTO
155068         l_array_entity_id
155069       , l_array_legal_entity_id
155070       , l_array_entity_code
155071       , l_array_transaction_num
155072       , l_array_event_id
155073       , l_array_class_code
155074       , l_array_event_type
155075       , l_array_event_number
155076       , l_array_event_date
155077       , l_array_transaction_date
155078       , l_array_reference_num_1
155079       , l_array_reference_num_2
155080       , l_array_reference_num_3
155081       , l_array_reference_num_4
155082       , l_array_reference_char_1
155083       , l_array_reference_char_2
155084       , l_array_reference_char_3
155085       , l_array_reference_char_4
155086       , l_array_reference_date_1
155087       , l_array_reference_date_2
155088       , l_array_reference_date_3
155089       , l_array_reference_date_4
155090       , l_array_event_created_by
155091       , l_array_budgetary_control_flag
155092       , l_array_extract_line_num 
155093       , l_array_source_4
155094       , l_array_source_11
155095       , l_array_source_15
155096       , l_array_source_18
155097       , l_array_source_19
155098       , l_array_source_20
155099       , l_array_source_21
155100       , l_array_source_22
155101       , l_array_source_24
155102       LIMIT l_rows;
155103 
155104   --
155105   IF (C_LEVEL_EVENT >= g_log_level) THEN
155106             trace
155107                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
155108                ,p_level    => C_LEVEL_EVENT
155109                ,p_module   => l_log_module);
155110   END IF;
155111   --
155112   EXIT WHEN l_array_entity_id.count = 0;
155113 
155114   XLA_AE_LINES_PKG.g_rec_lines := null;
155115 
155116 --
155117 -- Bug 4458708
155118 --
155119 XLA_AE_LINES_PKG.g_LineNumber := 0;
155120 --
155121 --
155122 
155123 FOR Idx IN 1..l_array_event_id.count LOOP
155124    --
155125    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
155126    --
155127    l_event_id := l_array_event_id(idx);  -- 5648433
155128 
155129    --
155130    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
155131    --
155132 
155133    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
155134              (g_array_event(l_event_id).array_value_num('header_index'))
155135          ,'N'
155136          ) <> 'Y'
155137    THEN
155138       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155139          trace
155140             (p_msg      => 'Trancaction revesal option is not Y '
155141             ,p_level    => C_LEVEL_STATEMENT
155142             ,p_module   => l_log_module);
155143       END IF;
155144 
155145 --
155146 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
155147 --
155148 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
155149 --
155150 -- set event info as cache for other routines to refer event attributes
155151 --
155152 
155153 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
155154    l_previous_event_id := l_event_id;
155155 
155156    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
155157       (p_application_id           => p_application_id
155158       ,p_primary_ledger_id        => p_primary_ledger_id
155159       ,p_base_ledger_id           => p_base_ledger_id
155160       ,p_target_ledger_id         => p_target_ledger_id
155161       ,p_entity_id                => l_array_entity_id(Idx)
155162       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
155163       ,p_entity_code              => l_array_entity_code(Idx)
155164       ,p_transaction_num          => l_array_transaction_num(Idx)
155165       ,p_event_id                 => l_array_event_id(Idx)
155166       ,p_event_class_code         => l_array_class_code(Idx)
155167       ,p_event_type_code          => l_array_event_type(Idx)
155168       ,p_event_number             => l_array_event_number(Idx)
155169       ,p_event_date               => l_array_event_date(Idx)
155170       ,p_transaction_date         => l_array_transaction_date(Idx)
155171       ,p_reference_num_1          => l_array_reference_num_1(Idx)
155172       ,p_reference_num_2          => l_array_reference_num_2(Idx)
155173       ,p_reference_num_3          => l_array_reference_num_3(Idx)
155174       ,p_reference_num_4          => l_array_reference_num_4(Idx)
155175       ,p_reference_char_1         => l_array_reference_char_1(Idx)
155176       ,p_reference_char_2         => l_array_reference_char_2(Idx)
155177       ,p_reference_char_3         => l_array_reference_char_3(Idx)
155178       ,p_reference_char_4         => l_array_reference_char_4(Idx)
155179       ,p_reference_date_1         => l_array_reference_date_1(Idx)
155180       ,p_reference_date_2         => l_array_reference_date_2(Idx)
155181       ,p_reference_date_3         => l_array_reference_date_3(Idx)
155182       ,p_reference_date_4         => l_array_reference_date_4(Idx)
155183       ,p_event_created_by         => l_array_event_created_by(Idx)
155184       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
155185        --
155186 END IF;
155187 
155188 
155189 
155190 --
155191 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
155192 
155193 l_acct_reversal_source := SUBSTR(NULL, 1,30);
155194 
155195 IF l_continue_with_lines THEN
155196    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
155197       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
155198 
155199       xla_accounting_err_pkg.build_message
155200          (p_appli_s_name            => 'XLA'
155201          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
155202          ,p_token_1                 => 'LINE_NUMBER'
155203          ,p_value_1                 => l_array_extract_line_num(Idx)
155204          ,p_token_2                 => 'PRODUCT_NAME'
155205          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
155206          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
155207          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
155208          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
155209 
155210    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
155211       --
155212       -- following sets the accounting attributes needed to reverse
155213       -- accounting for a distributeion
155214       --
155215 
155216       --
155217       -- 5217187
155218       --
155219       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
155220       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
155221                                        g_array_event(l_event_id).array_value_num('header_index'));
155222       --
155223       --
155224 
155225       -- No reversal code generated
155226 
155227       xla_ae_lines_pkg.SetAcctReversalAttrs
155228          (p_event_id             => l_event_id
155229          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
155230          ,p_calculate_acctd_flag => l_calculate_acctd_flag
155231          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
155232    END IF;
155233 
155234    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
155235        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
155236 
155237 --
155238 AcctLineType_128 (
155239  p_application_id  => p_application_id
155240  ,p_event_id     => l_event_id
155241  ,p_calculate_acctd_flag => l_calculate_acctd_flag
155242  ,p_calculate_g_l_flag => l_calculate_g_l_flag
155243  ,p_actual_flag => l_actual_flag
155244  ,p_balance_type_code => l_balance_type_code
155245  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
155246  
155247  , p_source_4 => l_array_source_4(Idx)
155248  , p_source_11 => l_array_source_11(Idx)
155249  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
155250  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
155251  , p_source_15 => l_array_source_15(Idx)
155252  , p_source_18 => l_array_source_18(Idx)
155253  , p_source_19 => l_array_source_19(Idx)
155254  , p_source_20 => l_array_source_20(Idx)
155255  , p_source_21 => l_array_source_21(Idx)
155256  , p_source_22 => l_array_source_22(Idx)
155257  , p_source_24 => l_array_source_24(Idx)
155258  );
155259 If(l_balance_type_code = 'A') THEN
155260   l_actual_gain_loss_ref := l_gain_or_loss_ref;
155261 END IF;
155262 
155263 --
155264 
155265 
155266 --
155267 AcctLineType_149 (
155268  p_application_id  => p_application_id
155269  ,p_event_id     => l_event_id
155270  ,p_calculate_acctd_flag => l_calculate_acctd_flag
155271  ,p_calculate_g_l_flag => l_calculate_g_l_flag
155272  ,p_actual_flag => l_actual_flag
155273  ,p_balance_type_code => l_balance_type_code
155274  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
155275  
155276  , p_source_4 => l_array_source_4(Idx)
155277  , p_source_11 => l_array_source_11(Idx)
155278  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
155279  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
155280  , p_source_15 => l_array_source_15(Idx)
155281  , p_source_18 => l_array_source_18(Idx)
155282  , p_source_19 => l_array_source_19(Idx)
155283  , p_source_20 => l_array_source_20(Idx)
155284  , p_source_21 => l_array_source_21(Idx)
155285  , p_source_22 => l_array_source_22(Idx)
155286  , p_source_24 => l_array_source_24(Idx)
155287  );
155288 If(l_balance_type_code = 'A') THEN
155289   l_actual_gain_loss_ref := l_gain_or_loss_ref;
155290 END IF;
155291 
155292 --
155293 
155294 
155295 --
155296 AcctLineType_197 (
155297  p_application_id  => p_application_id
155298  ,p_event_id     => l_event_id
155299  ,p_calculate_acctd_flag => l_calculate_acctd_flag
155300  ,p_calculate_g_l_flag => l_calculate_g_l_flag
155301  ,p_actual_flag => l_actual_flag
155302  ,p_balance_type_code => l_balance_type_code
155303  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
155304  
155305  , p_source_4 => l_array_source_4(Idx)
155306  , p_source_11 => l_array_source_11(Idx)
155307  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
155308  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
155309  , p_source_15 => l_array_source_15(Idx)
155310  , p_source_18 => l_array_source_18(Idx)
155311  , p_source_19 => l_array_source_19(Idx)
155312  , p_source_20 => l_array_source_20(Idx)
155313  , p_source_21 => l_array_source_21(Idx)
155314  , p_source_22 => l_array_source_22(Idx)
155315  , p_source_24 => l_array_source_24(Idx)
155316  );
155317 If(l_balance_type_code = 'A') THEN
155318   l_actual_gain_loss_ref := l_gain_or_loss_ref;
155319 END IF;
155320 
155321 --
155322 
155323       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
155324       -- or secondary ledger that has different currency with primary
155325       -- or alc that is calculated by sla
155326       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
155327             (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'))
155328 
155329 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
155330 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
155331           AND (l_actual_flag = 'A')) THEN
155332         XLA_AE_LINES_PKG.CreateGainOrLossLines(
155333           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
155334          ,p_application_id   => p_application_id
155335          ,p_amb_context_code => 'DEFAULT'
155336          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
155337          ,p_event_class_code => C_EVENT_CLASS_CODE
155338          ,p_event_type_code  => C_EVENT_TYPE_CODE
155339          
155340          ,p_gain_ccid        => -1
155341          ,p_loss_ccid        => -1
155342 
155343          ,p_actual_flag      => l_actual_flag
155344          ,p_enc_flag         => null
155345          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
155346          ,p_enc_g_l_ref      => null
155347          );
155348       END IF;
155349    END IF;
155350 END IF;
155351 
155352    ELSE
155353       --
155354       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
155355       --
155356       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155357          trace
155358             (p_msg      => 'Trancaction revesal option is Y'
155359             ,p_level    => C_LEVEL_STATEMENT
155360             ,p_module   => l_log_module);
155361       END IF;
155362    END IF;
155363 
155364 END LOOP;
155365 l_result := XLA_AE_LINES_PKG.InsertLines ;
155366 end loop;
155367 close line_cur;
155368 
155369 
155370 --
155371 -- insert headers into xla_ae_headers_gt table
155372 --
155373 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
155374 
155375 -- insert into errors table here.
155376 
155377 END LOOP;
155378 
155379 --
155380 -- 4865292
155381 --
155382 -- Compare g_hdr_extract_count with event count in
155383 -- CreateHeadersAndLines.
155384 --
155385 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
155386 
155387 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155388    trace (p_msg     => '# rows extracted from header extract objects '
155389                     || ' (running total): '
155390                     || g_hdr_extract_count
155391          ,p_level   => C_LEVEL_STATEMENT
155392          ,p_module  => l_log_module);
155393 END IF;
155394 
155395 CLOSE header_cur;
155396 --
155397 
155398 --
155399 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
155400    trace
155401       (p_msg      => 'END of EventClass_267'
155402       ,p_level    => C_LEVEL_PROCEDURE
155403       ,p_module   => l_log_module);
155404 END IF;
155405 --
155406 RETURN l_result;
155407 EXCEPTION
155408 WHEN xla_exceptions_pkg.application_exception THEN
155409    
155410 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
155411 
155412    
155413 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
155414 
155415    RAISE;
155416 
155417 WHEN NO_DATA_FOUND THEN
155418 
155419 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
155420 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
155421 
155422 FOR header_record IN header_cur
155423 LOOP
155424     l_array_header_events(header_record.event_id) := header_record.event_id;
155425 END LOOP;
155426 
155427 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
155428 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
155429 
155430 fnd_file.put_line(fnd_file.LOG, '                    ');
155431 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
155432 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
155433 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
155434 
155435 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
155436 LOOP
155437 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
155438 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
155439         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
155440 	END IF;
155441 END LOOP;
155442 
155443 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
155444 fnd_file.put_line(fnd_file.LOG, '                    ');
155445 
155446 
155447 xla_exceptions_pkg.raise_message
155448       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_267');
155449 
155450 
155451 WHEN OTHERS THEN
155452    xla_exceptions_pkg.raise_message
155453       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_267');
155454 END EventClass_267;
155455 --
155456 
155457 ---------------------------------------
155458 --
155459 -- PRIVATE PROCEDURE
155460 --         insert_sources_268
155461 --
155462 ----------------------------------------
155463 --
155464 PROCEDURE insert_sources_268(
155465                                 p_target_ledger_id       IN NUMBER
155466                               , p_language               IN VARCHAR2
155467                               , p_sla_ledger_id          IN NUMBER
155468                               , p_pad_start_date         IN DATE
155469                               , p_pad_end_date           IN DATE
155470                          )
155471 IS
155472 
155473 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_RECIPIENT_RCPT_ALL';
155474 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_RCPT';
155475 p_apps_owner                   VARCHAR2(30);
155476 l_log_module                   VARCHAR2(240);
155477 BEGIN
155478 IF g_log_enabled THEN
155479       l_log_module := C_DEFAULT_MODULE||'.insert_sources_268';
155480 END IF;
155481 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
155482 
155483       trace
155484          (p_msg      => 'BEGIN of insert_sources_268'
155485          ,p_level    => C_LEVEL_PROCEDURE
155486          ,p_module   => l_log_module);
155487 
155488 END IF;
155489 
155490 -- select APPS owner
155491 SELECT oracle_username
155492   INTO p_apps_owner
155493   FROM fnd_oracle_userid
155494  WHERE read_only_flag = 'U'
155495 ;
155496 
155497 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155498       trace
155499          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
155500                         ' - p_language = '||p_language||
155501                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
155502                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
155503                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
155504                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
155505          ,p_level    => C_LEVEL_STATEMENT
155506          ,p_module   => l_log_module);
155507 END IF;
155508 
155509 
155510 --
155511 INSERT INTO xla_diag_sources --hdr2
155512 (
155513         event_id
155514       , ledger_id
155515       , sla_ledger_id
155516       , description_language
155517       , object_name
155518       , object_type_code
155519       , line_number
155520       , source_application_id
155521       , source_type_code
155522       , source_code
155523       , source_value
155524       , source_meaning
155525       , created_by
155526       , creation_date
155527       , last_update_date
155528       , last_updated_by
155529       , last_update_login
155530       , program_update_date
155531       , program_application_id
155532       , program_id
155533       , request_id
155534 )
155535 SELECT
155536         event_id
155537       , p_target_ledger_id
155538       , p_sla_ledger_id
155539       , p_language
155540       , object_name
155541       , object_type_code
155542       , line_number
155543       , source_application_id
155544       , source_type_code
155545       , source_code
155546       , SUBSTR(source_value ,1,1996)
155547       , SUBSTR(source_meaning ,1,200)
155548       , xla_environment_pkg.g_Usr_Id
155549       , TRUNC(SYSDATE)
155550       , TRUNC(SYSDATE)
155551       , xla_environment_pkg.g_Usr_Id
155552       , xla_environment_pkg.g_Login_Id
155553       , TRUNC(SYSDATE)
155554       , xla_environment_pkg.g_Prog_Appl_Id
155555       , xla_environment_pkg.g_Prog_Id
155556       , xla_environment_pkg.g_Req_Id
155557   FROM (
155558        SELECT xet.event_id                  event_id
155559             , 0                          line_number
155560             , CASE r
155561                WHEN 1 THEN 'CST_XLA_INV_REF_V' 
155562                 WHEN 2 THEN 'CST_XLA_INV_REF_V' 
155563                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
155564                 WHEN 4 THEN 'CST_XLA_INV_HEADERS_V' 
155565                 WHEN 5 THEN 'CST_XLA_INV_REF_V' 
155566                 WHEN 6 THEN 'CST_XLA_INV_REF_V' 
155567                 WHEN 7 THEN 'PSA_CST_XLA_UPG_V' 
155568                 WHEN 8 THEN 'CST_XLA_INV_REF_V' 
155569                 WHEN 9 THEN 'CST_XLA_INV_REF_V' 
155570                 WHEN 10 THEN 'PO_REQ_DISTS_REF_V' 
155571                 WHEN 11 THEN 'PO_REQ_HEADERS_REF_V' 
155572                 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V' 
155573                 
155574                ELSE null
155575               END                           object_name
155576             , CASE r
155577                 WHEN 1 THEN 'HEADER' 
155578                 WHEN 2 THEN 'HEADER' 
155579                 WHEN 3 THEN 'HEADER' 
155580                 WHEN 4 THEN 'HEADER' 
155581                 WHEN 5 THEN 'HEADER' 
155582                 WHEN 6 THEN 'HEADER' 
155583                 WHEN 7 THEN 'HEADER' 
155584                 WHEN 8 THEN 'HEADER' 
155585                 WHEN 9 THEN 'HEADER' 
155586                 WHEN 10 THEN 'HEADER' 
155587                 WHEN 11 THEN 'HEADER' 
155588                 WHEN 12 THEN 'HEADER' 
155589                 
155590                 ELSE null
155591               END                           object_type_code
155592             , CASE r
155593                 WHEN 1 THEN '707' 
155594                 WHEN 2 THEN '707' 
155595                 WHEN 3 THEN '707' 
155596                 WHEN 4 THEN '707' 
155597                 WHEN 5 THEN '707' 
155598                 WHEN 6 THEN '707' 
155599                 WHEN 7 THEN '707' 
155600                 WHEN 8 THEN '707' 
155601                 WHEN 9 THEN '707' 
155602                 WHEN 10 THEN '201' 
155603                 WHEN 11 THEN '201' 
155604                 WHEN 12 THEN '707' 
155605                 
155606                 ELSE null
155607               END                           source_application_id
155608             , 'S'             source_type_code
155609             , CASE r
155610                 WHEN 1 THEN 'APPLIED_TO_APPL_ID' 
155611                 WHEN 2 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
155612                 WHEN 3 THEN 'APPLIED_TO_ENTITY_CODE' 
155613                 WHEN 4 THEN 'DISTRIBUTION_TYPE' 
155614                 WHEN 5 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
155615                 WHEN 6 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
155616                 WHEN 7 THEN 'CST_ENCUM_UPG_OPTION' 
155617                 WHEN 8 THEN 'TXN_PO_DISTRIBUTION_ID' 
155618                 WHEN 9 THEN 'TXN_PO_HEADER_ID' 
155619                 WHEN 10 THEN 'REQ_BUDGET_ACCOUNT' 
155620                 WHEN 11 THEN 'REQ_ENCUMBRANCE_TYPE_ID' 
155621                 WHEN 12 THEN 'TRANSFER_TO_GL_INDICATOR' 
155622                 
155623                 ELSE null
155624               END                           source_code
155625             , CASE r
155626                 WHEN 1 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
155627                 WHEN 2 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
155628                 WHEN 3 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
155629                 WHEN 4 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
155630                 WHEN 5 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
155631                 WHEN 6 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
155632                 WHEN 7 THEN TO_CHAR(h6.CST_ENCUM_UPG_OPTION)
155633                 WHEN 8 THEN TO_CHAR(h3.TXN_PO_DISTRIBUTION_ID)
155634                 WHEN 9 THEN TO_CHAR(h3.TXN_PO_HEADER_ID)
155635                 WHEN 10 THEN TO_CHAR(h4.REQ_BUDGET_ACCOUNT)
155636                 WHEN 11 THEN TO_CHAR(h5.REQ_ENCUMBRANCE_TYPE_ID)
155637                 WHEN 12 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
155638                 
155639                 ELSE null
155640               END                           source_value
155641             , CASE r
155642                 WHEN 4 THEN fvl12.meaning
155643                 WHEN 12 THEN fvl38.meaning
155644                 
155645                 ELSE null
155646               END               source_meaning
155647          FROM xla_events_gt     xet  
155648       , CST_XLA_INV_HEADERS_V  h1
155649       , CST_XLA_INV_REF_V  h3
155650       , PO_REQ_DISTS_REF_V  h4
155651       , PO_REQ_HEADERS_REF_V  h5
155652       , PSA_CST_XLA_UPG_V  h6
155653   , fnd_lookup_values    fvl12
155654   , fnd_lookup_values    fvl38
155655              ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
155656          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
155657            AND xet.event_class_code = C_EVENT_CLASS_CODE
155658               AND h1.event_id = xet.event_id
155659  AND h3.ref_transaction_id = h1.transaction_id AND h3.bus_flow_req_dist_id=h4.req_distribution_id (+)  AND h3.bus_flow_req_id = h5.req_id (+)  AND h3.rcv_transaction_id = h6.transaction_id (+)    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
155660   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
155661   AND fvl12.view_application_id(+) = 700
155662   AND fvl12.language(+)            = USERENV('LANG')
155663      AND fvl38.lookup_type(+)         = 'YES_NO'
155664   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
155665   AND fvl38.view_application_id(+) = 0
155666   AND fvl38.language(+)            = USERENV('LANG')
155667   
155668 )
155669 ;
155670 --
155671 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155672 
155673       trace
155674          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
155675          ,p_level    => C_LEVEL_STATEMENT
155676          ,p_module   => l_log_module);
155677 
155678 END IF;
155679 --
155680 
155681 
155682 
155683 --
155684 INSERT INTO xla_diag_sources  --line2
155685 (
155686         event_id
155687       , ledger_id
155688       , sla_ledger_id
155689       , description_language
155690       , object_name
155691       , object_type_code
155692       , line_number
155693       , source_application_id
155694       , source_type_code
155695       , source_code
155696       , source_value
155697       , source_meaning
155698       , created_by
155699       , creation_date
155700       , last_update_date
155701       , last_updated_by
155702       , last_update_login
155703       , program_update_date
155704       , program_application_id
155705       , program_id
155706       , request_id
155707 )
155708 SELECT  event_id
155709       , p_target_ledger_id
155710       , p_sla_ledger_id
155711       , p_language
155712       , object_name
155713       , object_type_code
155714       , line_number
155715       , source_application_id
155716       , source_type_code
155717       , source_code
155718       , SUBSTR(source_value,1,1996)
155719       , SUBSTR(source_meaning ,1,200)
155720       , xla_environment_pkg.g_Usr_Id
155721       , TRUNC(SYSDATE)
155722       , TRUNC(SYSDATE)
155723       , xla_environment_pkg.g_Usr_Id
155724       , xla_environment_pkg.g_Login_Id
155725       , TRUNC(SYSDATE)
155726       , xla_environment_pkg.g_Prog_Appl_Id
155727       , xla_environment_pkg.g_Prog_Id
155728       , xla_environment_pkg.g_Req_Id
155729   FROM (
155730        SELECT xet.event_id                  event_id
155731             , l2.line_number                 line_number
155732             , CASE r
155733                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
155734                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
155735                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
155736                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
155737                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
155738                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
155739                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
155740                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
155741                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
155742                 
155743                ELSE null
155744               END                           object_name
155745             , CASE r
155746                 WHEN 1 THEN 'LINE' 
155747                 WHEN 2 THEN 'LINE' 
155748                 WHEN 3 THEN 'LINE' 
155749                 WHEN 4 THEN 'LINE' 
155750                 WHEN 5 THEN 'LINE' 
155751                 WHEN 6 THEN 'LINE' 
155752                 WHEN 7 THEN 'LINE' 
155753                 WHEN 8 THEN 'LINE' 
155754                 WHEN 9 THEN 'LINE' 
155755                 
155756                 ELSE null
155757               END                           object_type_code
155758             , CASE r
155759                 WHEN 1 THEN '707' 
155760                 WHEN 2 THEN '707' 
155761                 WHEN 3 THEN '707' 
155762                 WHEN 4 THEN '707' 
155763                 WHEN 5 THEN '707' 
155764                 WHEN 6 THEN '707' 
155765                 WHEN 7 THEN '707' 
155766                 WHEN 8 THEN '707' 
155767                 WHEN 9 THEN '707' 
155768                 
155769                 ELSE null
155770               END                           source_application_id
155771             , 'S'             source_type_code
155772             , CASE r
155773                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
155774                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
155775                 WHEN 3 THEN 'CURRENCY_CODE' 
155776                 WHEN 4 THEN 'ENTERED_AMOUNT' 
155777                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
155778                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
155779                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
155780                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
155781                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
155782                 
155783                 ELSE null
155784               END                           source_code
155785             , CASE r
155786                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
155787                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
155788                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
155789                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
155790                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
155791                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
155792                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
155793                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
155794                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
155795                 
155796                 ELSE null
155797               END                           source_value
155798             , null              source_meaning
155799          FROM  xla_events_gt     xet  
155800         , CST_XLA_INV_LINES_V  l2
155801             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
155802         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
155803           AND xet.event_class_code = C_EVENT_CLASS_CODE
155804             AND l2.event_id          = xet.event_id
155805 
155806 )
155807 ;
155808 --
155809 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155810 
155811       trace
155812          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
155813          ,p_level    => C_LEVEL_STATEMENT
155814          ,p_module   => l_log_module);
155815 
155816 END IF;
155817 
155818 
155819 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
155820       trace
155821          (p_msg      => 'END of insert_sources_268'
155822          ,p_level    => C_LEVEL_PROCEDURE
155823          ,p_module   => l_log_module);
155824 END IF;
155825 EXCEPTION
155826   WHEN xla_exceptions_pkg.application_exception THEN
155827       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
155828             trace
155829                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
155830                ,p_level    => C_LEVEL_EXCEPTION
155831                ,p_module   => l_log_module);
155832       END IF;
155833       RAISE;
155834   WHEN OTHERS THEN
155835       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
155836             trace
155837                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
155838                ,p_level    => C_LEVEL_EXCEPTION
155839                ,p_module   => l_log_module);
155840        END IF;
155841        xla_exceptions_pkg.raise_message
155842            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_268');
155843 END insert_sources_268;
155844 --
155845 
155846 ---------------------------------------
155847 --
155848 -- PRIVATE FUNCTION
155849 --         EventClass_268
155850 --
155851 ----------------------------------------
155852 --
155853 FUNCTION EventClass_268
155854        (p_application_id         IN NUMBER
155855        ,p_base_ledger_id         IN NUMBER
155856        ,p_target_ledger_id       IN NUMBER
155857        ,p_language               IN VARCHAR2
155858        ,p_currency_code          IN VARCHAR2
155859        ,p_sla_ledger_id          IN NUMBER
155860        ,p_pad_start_date         IN DATE
155861        ,p_pad_end_date           IN DATE
155862        ,p_primary_ledger_id      IN NUMBER)
155863 RETURN BOOLEAN IS
155864 --
155865 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_RECIPIENT_RCPT_ALL';
155866 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_RCPT';
155867 
155868 l_calculate_acctd_flag   VARCHAR2(1) :='N';
155869 l_calculate_g_l_flag     VARCHAR2(1) :='N';
155870 --
155871 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155872 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155873 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
155874 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
155875 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155876 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
155877 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
155878 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155879 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
155880 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
155881 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155882 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155883 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155884 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155885 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
155886 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
155887 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
155888 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
155889 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
155890 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
155891 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
155892 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
155893 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
155894 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
155895 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
155896 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
155897 
155898 l_event_id                             NUMBER;
155899 l_previous_event_id                    NUMBER;
155900 l_first_event_id                       NUMBER;
155901 l_last_event_id                        NUMBER;
155902 
155903 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
155904 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
155905 --
155906 --
155907 l_result                    BOOLEAN := TRUE;
155908 l_rows                      NUMBER  := 1000;
155909 l_event_type_name           VARCHAR2(80) := 'All';
155910 l_event_class_name          VARCHAR2(80) := 'Intransit Interorg Receipt for FOB Shipment';
155911 l_description               VARCHAR2(4000);
155912 l_transaction_reversal      NUMBER;
155913 l_ae_header_id              NUMBER;
155914 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
155915 l_log_module                VARCHAR2(240);
155916 --
155917 l_acct_reversal_source      VARCHAR2(30);
155918 l_trx_reversal_source       VARCHAR2(30);
155919 
155920 l_continue_with_lines       BOOLEAN := TRUE;
155921 --
155922 l_acc_rev_gl_date_source    DATE;                      -- 4262811
155923 --
155924 type t_array_event_id is table of number index by binary_integer;
155925 
155926 l_rec_array_event                    t_rec_array_event;
155927 l_null_rec_array_event               t_rec_array_event;
155928 l_array_ae_header_id                 xla_number_array_type;
155929 l_actual_flag                        VARCHAR2(1) := NULL;
155930 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
155931 l_balance_type_code                  VARCHAR2(1) :=NULL;
155932 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
155933 
155934 --
155935 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
155936 --
155937 
155938 TYPE t_array_source_6 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
155939 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
155940 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
155941 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
155942 TYPE t_array_source_14 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
155943 TYPE t_array_source_16 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
155944 TYPE t_array_source_27 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
155945 TYPE t_array_source_28 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
155946 TYPE t_array_source_29 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_HEADER_ID%TYPE INDEX BY BINARY_INTEGER;
155947 TYPE t_array_source_30 IS TABLE OF PO_REQ_DISTS_REF_V.REQ_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
155948 TYPE t_array_source_31 IS TABLE OF PO_REQ_HEADERS_REF_V.REQ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
155949 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
155950 
155951 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
155952 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
155953 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
155954 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
155955 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
155956 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
155957 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
155958 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
155959 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
155960 
155961 l_array_source_6              t_array_source_6;
155962 l_array_source_7              t_array_source_7;
155963 l_array_source_8              t_array_source_8;
155964 l_array_source_12              t_array_source_12;
155965 l_array_source_12_meaning      t_array_lookup_meaning;
155966 l_array_source_14              t_array_source_14;
155967 l_array_source_16              t_array_source_16;
155968 l_array_source_27              t_array_source_27;
155969 l_array_source_28              t_array_source_28;
155970 l_array_source_29              t_array_source_29;
155971 l_array_source_30              t_array_source_30;
155972 l_array_source_31              t_array_source_31;
155973 l_array_source_38              t_array_source_38;
155974 l_array_source_38_meaning      t_array_lookup_meaning;
155975 
155976 l_array_source_4      t_array_source_4;
155977 l_array_source_11      t_array_source_11;
155978 l_array_source_15      t_array_source_15;
155979 l_array_source_18      t_array_source_18;
155980 l_array_source_19      t_array_source_19;
155981 l_array_source_20      t_array_source_20;
155982 l_array_source_21      t_array_source_21;
155983 l_array_source_22      t_array_source_22;
155984 l_array_source_24      t_array_source_24;
155985 
155986 --
155987 CURSOR header_cur
155988 IS
155989 SELECT /*+ leading(xet) cardinality(xet,1) */
155990 -- Event Class Code: FOB_SHIP_RECIPIENT_RCPT
155991     xet.entity_id
155992    ,xet.legal_entity_id
155993    ,xet.entity_code
155994    ,xet.transaction_number
155995    ,xet.event_id
155996    ,xet.event_class_code
155997    ,xet.event_type_code
155998    ,xet.event_number
155999    ,xet.event_date
156000    ,xet.transaction_date
156001    ,xet.reference_num_1
156002    ,xet.reference_num_2
156003    ,xet.reference_num_3
156004    ,xet.reference_num_4
156005    ,xet.reference_char_1
156006    ,xet.reference_char_2
156007    ,xet.reference_char_3
156008    ,xet.reference_char_4
156009    ,xet.reference_date_1
156010    ,xet.reference_date_2
156011    ,xet.reference_date_3
156012    ,xet.reference_date_4
156013    ,xet.event_created_by
156014    ,xet.budgetary_control_flag 
156015   , h3.APPLIED_TO_APPL_ID    source_6
156016   , h3.APPLIED_TO_DIST_LINK_TYPE    source_7
156017   , h3.APPLIED_TO_ENTITY_CODE    source_8
156018   , h1.DISTRIBUTION_TYPE    source_12
156019   , fvl12.meaning   source_12_meaning
156020   , h3.ENCUM_REVERSAL_AMOUNT_ENTERED    source_14
156021   , h3.ENCUMBRANCE_REVERSAL_AMOUNT    source_16
156022   , h6.CST_ENCUM_UPG_OPTION    source_27
156023   , h3.TXN_PO_DISTRIBUTION_ID    source_28
156024   , h3.TXN_PO_HEADER_ID    source_29
156025   , h4.REQ_BUDGET_ACCOUNT    source_30
156026   , h5.REQ_ENCUMBRANCE_TYPE_ID    source_31
156027   , h1.TRANSFER_TO_GL_INDICATOR    source_38
156028   , fvl38.meaning   source_38_meaning
156029   FROM xla_events_gt     xet 
156030   , CST_XLA_INV_HEADERS_V  h1
156031   , CST_XLA_INV_REF_V  h3
156032   , PO_REQ_DISTS_REF_V  h4
156033   , PO_REQ_HEADERS_REF_V  h5
156034   , PSA_CST_XLA_UPG_V  h6
156035   , fnd_lookup_values    fvl12
156036   , fnd_lookup_values    fvl38
156037  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
156038    and xet.event_class_code = C_EVENT_CLASS_CODE
156039    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
156040  AND h3.ref_transaction_id = h1.transaction_id AND h3.BUS_FLOW_REQ_DIST_ID=h4.REQ_DISTRIBUTION_ID (+)  AND h3.BUS_FLOW_REQ_ID = h5.REQ_ID (+)  AND h3.rcv_transaction_id = h6.transaction_id (+)    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
156041   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
156042   AND fvl12.view_application_id(+) = 700
156043   AND fvl12.language(+)            = USERENV('LANG')
156044      AND fvl38.lookup_type(+)         = 'YES_NO'
156045   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
156046   AND fvl38.view_application_id(+) = 0
156047   AND fvl38.language(+)            = USERENV('LANG')
156048   
156049  ORDER BY event_id
156050 ;
156051 
156052 
156053 --
156054 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
156055 IS
156056 SELECT  /*+ leading(xet) cardinality(xet,1) */
156057 -- Event Class Code: FOB_SHIP_RECIPIENT_RCPT
156058     xet.entity_id
156059    ,xet.legal_entity_id
156060    ,xet.entity_code
156061    ,xet.transaction_number
156062    ,xet.event_id
156063    ,xet.event_class_code
156064    ,xet.event_type_code
156065    ,xet.event_number
156066    ,xet.event_date
156067    ,xet.transaction_date
156068    ,xet.reference_num_1
156069    ,xet.reference_num_2
156070    ,xet.reference_num_3
156071    ,xet.reference_num_4
156072    ,xet.reference_char_1
156073    ,xet.reference_char_2
156074    ,xet.reference_char_3
156075    ,xet.reference_char_4
156076    ,xet.reference_date_1
156077    ,xet.reference_date_2
156078    ,xet.reference_date_3
156079    ,xet.reference_date_4
156080    ,xet.event_created_by
156081    ,xet.budgetary_control_flag
156082  , l2.LINE_NUMBER  
156083   , l2.CODE_COMBINATION_ID    source_4
156084   , l2.DISTRIBUTION_IDENTIFIER    source_11
156085   , l2.CURRENCY_CODE    source_15
156086   , l2.ENTERED_AMOUNT    source_18
156087   , l2.CURRENCY_CONVERSION_DATE    source_19
156088   , l2.CURRENCY_CONVERSION_RATE    source_20
156089   , l2.CURRENCY_CONVERSION_TYPE    source_21
156090   , l2.ACCOUNTED_AMOUNT    source_22
156091   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
156092   FROM xla_events_gt     xet 
156093   , CST_XLA_INV_LINES_V  l2
156094  WHERE xet.event_id between x_first_event_id and x_last_event_id
156095    and xet.event_date between p_pad_start_date and p_pad_end_date
156096    and xet.event_class_code = C_EVENT_CLASS_CODE
156097    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
156098 ;
156099 
156100 --
156101 BEGIN
156102 IF g_log_enabled THEN
156103    l_log_module := C_DEFAULT_MODULE||'.EventClass_268';
156104 END IF;
156105 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
156106    trace
156107       (p_msg      => 'BEGIN of EventClass_268'
156108       ,p_level    => C_LEVEL_PROCEDURE
156109       ,p_module   => l_log_module);
156110 END IF;
156111 
156112 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156113    trace
156114       (p_msg      => 'p_application_id = '||p_application_id||
156115                      ' - p_base_ledger_id = '||p_base_ledger_id||
156116                      ' - p_target_ledger_id  = '||p_target_ledger_id||
156117                      ' - p_language = '||p_language||
156118                      ' - p_currency_code = '||p_currency_code||
156119                      ' - p_sla_ledger_id = '||p_sla_ledger_id
156120       ,p_level    => C_LEVEL_STATEMENT
156121       ,p_module   => l_log_module);
156122 END IF;
156123 --
156124 -- initialze arrays
156125 --
156126 g_array_event.DELETE;
156127 l_rec_array_event := l_null_rec_array_event;
156128 --
156129 --------------------------------------
156130 -- 4262811 Initialze MPA Line Number
156131 --------------------------------------
156132 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
156133 
156134 --
156135 
156136 --
156137 OPEN header_cur;
156138 --
156139 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156140    trace
156141    (p_msg      => 'SQL - FETCH header_cur'
156142    ,p_level    => C_LEVEL_STATEMENT
156143    ,p_module   => l_log_module);
156144 END IF;
156145 --
156146 LOOP
156147 FETCH header_cur BULK COLLECT INTO
156148         l_array_entity_id
156149       , l_array_legal_entity_id
156150       , l_array_entity_code
156151       , l_array_transaction_num
156152       , l_array_event_id
156153       , l_array_class_code
156154       , l_array_event_type
156155       , l_array_event_number
156156       , l_array_event_date
156157       , l_array_transaction_date
156158       , l_array_reference_num_1
156159       , l_array_reference_num_2
156160       , l_array_reference_num_3
156161       , l_array_reference_num_4
156162       , l_array_reference_char_1
156163       , l_array_reference_char_2
156164       , l_array_reference_char_3
156165       , l_array_reference_char_4
156166       , l_array_reference_date_1
156167       , l_array_reference_date_2
156168       , l_array_reference_date_3
156169       , l_array_reference_date_4
156170       , l_array_event_created_by
156171       , l_array_budgetary_control_flag 
156172       , l_array_source_6
156173       , l_array_source_7
156174       , l_array_source_8
156175       , l_array_source_12
156176       , l_array_source_12_meaning
156177       , l_array_source_14
156178       , l_array_source_16
156179       , l_array_source_27
156180       , l_array_source_28
156181       , l_array_source_29
156182       , l_array_source_30
156183       , l_array_source_31
156184       , l_array_source_38
156185       , l_array_source_38_meaning
156186       LIMIT l_rows;
156187 --
156188 IF (C_LEVEL_EVENT >= g_log_level) THEN
156189    trace
156190    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
156191    ,p_level    => C_LEVEL_EVENT
156192    ,p_module   => l_log_module);
156193 END IF;
156194 --
156195 EXIT WHEN l_array_entity_id.COUNT = 0;
156196 
156197 -- initialize arrays
156198 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
156199 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
156200 
156201 --
156202 -- Bug 4458708
156203 --
156204 XLA_AE_LINES_PKG.g_LineNumber := 0;
156205 
156206 
156207 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
156208 g_last_hdr_idx := l_array_event_id.LAST;
156209 --
156210 -- loop for the headers. Each iteration is for each header extract row
156211 -- fetched in header cursor
156212 --
156213 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
156214 
156215 --
156216 -- set event info as cache for other routines to refer event attributes
156217 --
156218 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
156219    (p_application_id           => p_application_id
156220    ,p_primary_ledger_id        => p_primary_ledger_id
156221    ,p_base_ledger_id           => p_base_ledger_id
156222    ,p_target_ledger_id         => p_target_ledger_id
156223    ,p_entity_id                => l_array_entity_id(hdr_idx)
156224    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
156225    ,p_entity_code              => l_array_entity_code(hdr_idx)
156226    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
156227    ,p_event_id                 => l_array_event_id(hdr_idx)
156228    ,p_event_class_code         => l_array_class_code(hdr_idx)
156229    ,p_event_type_code          => l_array_event_type(hdr_idx)
156230    ,p_event_number             => l_array_event_number(hdr_idx)
156231    ,p_event_date               => l_array_event_date(hdr_idx)
156232    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
156233    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
156234    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
156235    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
156236    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
156237    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
156238    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
156239    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
156240    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
156241    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
156242    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
156243    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
156244    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
156245    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
156246    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
156247 
156248 --
156249 -- set the status of entry to C_VALID (0)
156250 --
156251 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
156252 
156253 --
156254 -- initialize a row for ae header
156255 --
156256 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
156257 
156258 l_event_id := l_array_event_id(hdr_idx);
156259 
156260 --
156261 -- storing the hdr_idx for event. May be used by line cursor.
156262 --
156263 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
156264 
156265 --
156266 -- store sources from header extract. This can be improved to
156267 -- store only those sources from header extract that may be used in lines
156268 --
156269 
156270 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
156271 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
156272 g_array_event(l_event_id).array_value_char('source_8') := l_array_source_8(hdr_idx);
156273 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
156274 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
156275 g_array_event(l_event_id).array_value_num('source_14') := l_array_source_14(hdr_idx);
156276 g_array_event(l_event_id).array_value_num('source_16') := l_array_source_16(hdr_idx);
156277 g_array_event(l_event_id).array_value_char('source_27') := l_array_source_27(hdr_idx);
156278 g_array_event(l_event_id).array_value_num('source_28') := l_array_source_28(hdr_idx);
156279 g_array_event(l_event_id).array_value_num('source_29') := l_array_source_29(hdr_idx);
156280 g_array_event(l_event_id).array_value_num('source_30') := l_array_source_30(hdr_idx);
156281 g_array_event(l_event_id).array_value_num('source_31') := l_array_source_31(hdr_idx);
156282 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
156283 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
156284 
156285 --
156286 -- initilaize the status of ae headers for diffrent balance types
156287 -- the status is initialised to C_NOT_CREATED (2)
156288 --
156289 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
156290 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
156291 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
156292 
156293 --
156294 -- call api to validate and store accounting attributes for header
156295 --
156296 
156297 ------------------------------------------------------------
156298 -- Accrual Reversal : to get date for Standard Source (NONE)
156299 ------------------------------------------------------------
156300 l_acc_rev_gl_date_source := NULL;
156301 
156302      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
156303       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_31');
156304      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
156305       l_rec_acct_attrs.array_date_value(2) := 
156306 xla_ae_sources_pkg.GetSystemSourceDate(
156307    p_source_code           => 'XLA_REFERENCE_DATE_1'
156308  , p_source_type_code      => 'Y'
156309  , p_source_application_id =>  602
156310 );
156311      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
156312       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_38');
156313 
156314 
156315 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
156316 
156317 XLA_AE_HEADER_PKG.SetJeCategoryName;
156318 
156319 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
156320 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
156321 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
156322 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
156323 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
156324 
156325 
156326 -- No header level analytical criteria
156327 
156328 --
156329 --accounting attribute enhancement, bug 3612931
156330 --
156331 l_trx_reversal_source := SUBSTR(NULL, 1,30);
156332 
156333 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
156334    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
156335 
156336    xla_accounting_err_pkg.build_message
156337       (p_appli_s_name            => 'XLA'
156338       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
156339       ,p_token_1                 => 'ACCT_ATTR_NAME'
156340       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
156341       ,p_token_2                 => 'PRODUCT_NAME'
156342       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
156343       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
156344       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
156345       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
156346 
156347 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
156348    --
156349    -- following sets the accounting attributes needed to reverse
156350    -- accounting for a distributeion
156351    --
156352    xla_ae_lines_pkg.SetTrxReversalAttrs
156353       (p_event_id              => l_event_id
156354       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
156355       ,p_trx_reversal_source   => l_trx_reversal_source);
156356 
156357 END IF;
156358 
156359 
156360 ----------------------------------------------------------------
156361 -- 4262811 -  update the header statuses to invalid in need be
156362 ----------------------------------------------------------------
156363 --
156364 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
156365 
156366 
156367   -----------------------------------------------
156368   -- No accrual reversal for the event class/type
156369   -----------------------------------------------
156370 ----------------------------------------------------------------
156371 
156372 --
156373 -- this ends the header loop iteration for one bulk fetch
156374 --
156375 END LOOP;
156376 
156377 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
156378 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
156379 
156380 --
156381 -- insert dummy rows into lines gt table that were created due to
156382 -- transaction reversals
156383 --
156384 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
156385    l_result := XLA_AE_LINES_PKG.InsertLines;
156386 END IF;
156387 
156388 --
156389 -- reset the temp_line_num for each set of events fetched from header
156390 -- cursor rather than doing it for each new event in line cursor
156391 -- Bug 3939231
156392 --
156393 xla_ae_lines_pkg.g_temp_line_num := 0;
156394 
156395 
156396 
156397 --
156398 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
156399 --
156400 --
156401 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156402 
156403       trace
156404          (p_msg      => 'SQL - FETCH line_cur'
156405          ,p_level    => C_LEVEL_STATEMENT
156406          ,p_module   => l_log_module);
156407 
156408 END IF;
156409 --
156410 --
156411 LOOP
156412   --
156413   FETCH line_cur BULK COLLECT INTO
156414         l_array_entity_id
156415       , l_array_legal_entity_id
156416       , l_array_entity_code
156417       , l_array_transaction_num
156418       , l_array_event_id
156419       , l_array_class_code
156420       , l_array_event_type
156421       , l_array_event_number
156422       , l_array_event_date
156423       , l_array_transaction_date
156424       , l_array_reference_num_1
156425       , l_array_reference_num_2
156426       , l_array_reference_num_3
156427       , l_array_reference_num_4
156428       , l_array_reference_char_1
156429       , l_array_reference_char_2
156430       , l_array_reference_char_3
156431       , l_array_reference_char_4
156432       , l_array_reference_date_1
156433       , l_array_reference_date_2
156434       , l_array_reference_date_3
156435       , l_array_reference_date_4
156436       , l_array_event_created_by
156437       , l_array_budgetary_control_flag
156438       , l_array_extract_line_num 
156439       , l_array_source_4
156440       , l_array_source_11
156441       , l_array_source_15
156442       , l_array_source_18
156443       , l_array_source_19
156444       , l_array_source_20
156445       , l_array_source_21
156446       , l_array_source_22
156447       , l_array_source_24
156448       LIMIT l_rows;
156449 
156450   --
156451   IF (C_LEVEL_EVENT >= g_log_level) THEN
156452             trace
156453                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
156454                ,p_level    => C_LEVEL_EVENT
156455                ,p_module   => l_log_module);
156456   END IF;
156457   --
156458   EXIT WHEN l_array_entity_id.count = 0;
156459 
156460   XLA_AE_LINES_PKG.g_rec_lines := null;
156461 
156462 --
156463 -- Bug 4458708
156464 --
156465 XLA_AE_LINES_PKG.g_LineNumber := 0;
156466 --
156467 --
156468 
156469 FOR Idx IN 1..l_array_event_id.count LOOP
156470    --
156471    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
156472    --
156473    l_event_id := l_array_event_id(idx);  -- 5648433
156474 
156475    --
156476    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
156477    --
156478 
156479    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
156480              (g_array_event(l_event_id).array_value_num('header_index'))
156481          ,'N'
156482          ) <> 'Y'
156483    THEN
156484       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156485          trace
156486             (p_msg      => 'Trancaction revesal option is not Y '
156487             ,p_level    => C_LEVEL_STATEMENT
156488             ,p_module   => l_log_module);
156489       END IF;
156490 
156491 --
156492 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
156493 --
156494 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
156495 --
156496 -- set event info as cache for other routines to refer event attributes
156497 --
156498 
156499 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
156500    l_previous_event_id := l_event_id;
156501 
156502    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
156503       (p_application_id           => p_application_id
156504       ,p_primary_ledger_id        => p_primary_ledger_id
156505       ,p_base_ledger_id           => p_base_ledger_id
156506       ,p_target_ledger_id         => p_target_ledger_id
156507       ,p_entity_id                => l_array_entity_id(Idx)
156508       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
156509       ,p_entity_code              => l_array_entity_code(Idx)
156510       ,p_transaction_num          => l_array_transaction_num(Idx)
156511       ,p_event_id                 => l_array_event_id(Idx)
156512       ,p_event_class_code         => l_array_class_code(Idx)
156513       ,p_event_type_code          => l_array_event_type(Idx)
156514       ,p_event_number             => l_array_event_number(Idx)
156515       ,p_event_date               => l_array_event_date(Idx)
156516       ,p_transaction_date         => l_array_transaction_date(Idx)
156517       ,p_reference_num_1          => l_array_reference_num_1(Idx)
156518       ,p_reference_num_2          => l_array_reference_num_2(Idx)
156519       ,p_reference_num_3          => l_array_reference_num_3(Idx)
156520       ,p_reference_num_4          => l_array_reference_num_4(Idx)
156521       ,p_reference_char_1         => l_array_reference_char_1(Idx)
156522       ,p_reference_char_2         => l_array_reference_char_2(Idx)
156523       ,p_reference_char_3         => l_array_reference_char_3(Idx)
156524       ,p_reference_char_4         => l_array_reference_char_4(Idx)
156525       ,p_reference_date_1         => l_array_reference_date_1(Idx)
156526       ,p_reference_date_2         => l_array_reference_date_2(Idx)
156527       ,p_reference_date_3         => l_array_reference_date_3(Idx)
156528       ,p_reference_date_4         => l_array_reference_date_4(Idx)
156529       ,p_event_created_by         => l_array_event_created_by(Idx)
156530       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
156531        --
156532 END IF;
156533 
156534 
156535 
156536 --
156537 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
156538 
156539 l_acct_reversal_source := SUBSTR(NULL, 1,30);
156540 
156541 IF l_continue_with_lines THEN
156542    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
156543       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
156544 
156545       xla_accounting_err_pkg.build_message
156546          (p_appli_s_name            => 'XLA'
156547          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
156548          ,p_token_1                 => 'LINE_NUMBER'
156549          ,p_value_1                 => l_array_extract_line_num(Idx)
156550          ,p_token_2                 => 'PRODUCT_NAME'
156551          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
156552          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
156553          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
156554          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
156555 
156556    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
156557       --
156558       -- following sets the accounting attributes needed to reverse
156559       -- accounting for a distributeion
156560       --
156561 
156562       --
156563       -- 5217187
156564       --
156565       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
156566       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
156567                                        g_array_event(l_event_id).array_value_num('header_index'));
156568       --
156569       --
156570 
156571       -- No reversal code generated
156572 
156573       xla_ae_lines_pkg.SetAcctReversalAttrs
156574          (p_event_id             => l_event_id
156575          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
156576          ,p_calculate_acctd_flag => l_calculate_acctd_flag
156577          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
156578    END IF;
156579 
156580    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
156581        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
156582 
156583 --
156584 AcctLineType_129 (
156585  p_application_id  => p_application_id
156586  ,p_event_id     => l_event_id
156587  ,p_calculate_acctd_flag => l_calculate_acctd_flag
156588  ,p_calculate_g_l_flag => l_calculate_g_l_flag
156589  ,p_actual_flag => l_actual_flag
156590  ,p_balance_type_code => l_balance_type_code
156591  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
156592  
156593  , p_source_4 => l_array_source_4(Idx)
156594  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
156595  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
156596  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
156597  , p_source_11 => l_array_source_11(Idx)
156598  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
156599  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
156600  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
156601  , p_source_15 => l_array_source_15(Idx)
156602  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
156603  , p_source_18 => l_array_source_18(Idx)
156604  , p_source_19 => l_array_source_19(Idx)
156605  , p_source_20 => l_array_source_20(Idx)
156606  , p_source_21 => l_array_source_21(Idx)
156607  , p_source_22 => l_array_source_22(Idx)
156608  , p_source_24 => l_array_source_24(Idx)
156609  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
156610  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
156611  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
156612  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
156613  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
156614  );
156615 If(l_balance_type_code = 'A') THEN
156616   l_actual_gain_loss_ref := l_gain_or_loss_ref;
156617 END IF;
156618 
156619 --
156620 
156621 
156622 --
156623 AcctLineType_141 (
156624  p_application_id  => p_application_id
156625  ,p_event_id     => l_event_id
156626  ,p_calculate_acctd_flag => l_calculate_acctd_flag
156627  ,p_calculate_g_l_flag => l_calculate_g_l_flag
156628  ,p_actual_flag => l_actual_flag
156629  ,p_balance_type_code => l_balance_type_code
156630  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
156631  
156632  , p_source_4 => l_array_source_4(Idx)
156633  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
156634  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
156635  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
156636  , p_source_11 => l_array_source_11(Idx)
156637  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
156638  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
156639  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
156640  , p_source_15 => l_array_source_15(Idx)
156641  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
156642  , p_source_18 => l_array_source_18(Idx)
156643  , p_source_19 => l_array_source_19(Idx)
156644  , p_source_20 => l_array_source_20(Idx)
156645  , p_source_21 => l_array_source_21(Idx)
156646  , p_source_22 => l_array_source_22(Idx)
156647  , p_source_24 => l_array_source_24(Idx)
156648  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
156649  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
156650  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
156651  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
156652  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
156653  );
156654 If(l_balance_type_code = 'A') THEN
156655   l_actual_gain_loss_ref := l_gain_or_loss_ref;
156656 END IF;
156657 
156658 --
156659 
156660 
156661 --
156662 AcctLineType_209 (
156663  p_application_id  => p_application_id
156664  ,p_event_id     => l_event_id
156665  ,p_calculate_acctd_flag => l_calculate_acctd_flag
156666  ,p_calculate_g_l_flag => l_calculate_g_l_flag
156667  ,p_actual_flag => l_actual_flag
156668  ,p_balance_type_code => l_balance_type_code
156669  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
156670  
156671  , p_source_4 => l_array_source_4(Idx)
156672  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
156673  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
156674  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
156675  , p_source_11 => l_array_source_11(Idx)
156676  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
156677  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
156678  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
156679  , p_source_15 => l_array_source_15(Idx)
156680  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
156681  , p_source_18 => l_array_source_18(Idx)
156682  , p_source_19 => l_array_source_19(Idx)
156683  , p_source_20 => l_array_source_20(Idx)
156684  , p_source_21 => l_array_source_21(Idx)
156685  , p_source_22 => l_array_source_22(Idx)
156686  , p_source_24 => l_array_source_24(Idx)
156687  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
156688  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
156689  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
156690  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
156691  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
156692  );
156693 If(l_balance_type_code = 'A') THEN
156694   l_actual_gain_loss_ref := l_gain_or_loss_ref;
156695 END IF;
156696 
156697 --
156698 
156699       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
156700       -- or secondary ledger that has different currency with primary
156701       -- or alc that is calculated by sla
156702       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
156703             (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'))
156704 
156705 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
156706 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
156707           AND (l_actual_flag = 'A')) THEN
156708         XLA_AE_LINES_PKG.CreateGainOrLossLines(
156709           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
156710          ,p_application_id   => p_application_id
156711          ,p_amb_context_code => 'DEFAULT'
156712          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
156713          ,p_event_class_code => C_EVENT_CLASS_CODE
156714          ,p_event_type_code  => C_EVENT_TYPE_CODE
156715          
156716          ,p_gain_ccid        => -1
156717          ,p_loss_ccid        => -1
156718 
156719          ,p_actual_flag      => l_actual_flag
156720          ,p_enc_flag         => null
156721          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
156722          ,p_enc_g_l_ref      => null
156723          );
156724       END IF;
156725    END IF;
156726 END IF;
156727 
156728    ELSE
156729       --
156730       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
156731       --
156732       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156733          trace
156734             (p_msg      => 'Trancaction revesal option is Y'
156735             ,p_level    => C_LEVEL_STATEMENT
156736             ,p_module   => l_log_module);
156737       END IF;
156738    END IF;
156739 
156740 END LOOP;
156741 l_result := XLA_AE_LINES_PKG.InsertLines ;
156742 end loop;
156743 close line_cur;
156744 
156745 
156746 --
156747 -- insert headers into xla_ae_headers_gt table
156748 --
156749 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
156750 
156751 -- insert into errors table here.
156752 
156753 END LOOP;
156754 
156755 --
156756 -- 4865292
156757 --
156758 -- Compare g_hdr_extract_count with event count in
156759 -- CreateHeadersAndLines.
156760 --
156761 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
156762 
156763 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156764    trace (p_msg     => '# rows extracted from header extract objects '
156765                     || ' (running total): '
156766                     || g_hdr_extract_count
156767          ,p_level   => C_LEVEL_STATEMENT
156768          ,p_module  => l_log_module);
156769 END IF;
156770 
156771 CLOSE header_cur;
156772 --
156773 
156774 --
156775 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
156776    trace
156777       (p_msg      => 'END of EventClass_268'
156778       ,p_level    => C_LEVEL_PROCEDURE
156779       ,p_module   => l_log_module);
156780 END IF;
156781 --
156782 RETURN l_result;
156783 EXCEPTION
156784 WHEN xla_exceptions_pkg.application_exception THEN
156785    
156786 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
156787 
156788    
156789 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
156790 
156791    RAISE;
156792 
156793 WHEN NO_DATA_FOUND THEN
156794 
156795 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
156796 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
156797 
156798 FOR header_record IN header_cur
156799 LOOP
156800     l_array_header_events(header_record.event_id) := header_record.event_id;
156801 END LOOP;
156802 
156803 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
156804 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
156805 
156806 fnd_file.put_line(fnd_file.LOG, '                    ');
156807 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
156808 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
156809 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
156810 
156811 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
156812 LOOP
156813 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
156814 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
156815         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
156816 	END IF;
156817 END LOOP;
156818 
156819 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
156820 fnd_file.put_line(fnd_file.LOG, '                    ');
156821 
156822 
156823 xla_exceptions_pkg.raise_message
156824       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_268');
156825 
156826 
156827 WHEN OTHERS THEN
156828    xla_exceptions_pkg.raise_message
156829       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_268');
156830 END EventClass_268;
156831 --
156832 
156833 ---------------------------------------
156834 --
156835 -- PRIVATE PROCEDURE
156836 --         insert_sources_269
156837 --
156838 ----------------------------------------
156839 --
156840 PROCEDURE insert_sources_269(
156841                                 p_target_ledger_id       IN NUMBER
156842                               , p_language               IN VARCHAR2
156843                               , p_sla_ledger_id          IN NUMBER
156844                               , p_pad_start_date         IN DATE
156845                               , p_pad_end_date           IN DATE
156846                          )
156847 IS
156848 
156849 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
156850 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_SHIP';
156851 p_apps_owner                   VARCHAR2(30);
156852 l_log_module                   VARCHAR2(240);
156853 BEGIN
156854 IF g_log_enabled THEN
156855       l_log_module := C_DEFAULT_MODULE||'.insert_sources_269';
156856 END IF;
156857 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
156858 
156859       trace
156860          (p_msg      => 'BEGIN of insert_sources_269'
156861          ,p_level    => C_LEVEL_PROCEDURE
156862          ,p_module   => l_log_module);
156863 
156864 END IF;
156865 
156866 -- select APPS owner
156867 SELECT oracle_username
156868   INTO p_apps_owner
156869   FROM fnd_oracle_userid
156870  WHERE read_only_flag = 'U'
156871 ;
156872 
156873 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156874       trace
156875          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
156876                         ' - p_language = '||p_language||
156877                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
156878                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
156879                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
156880                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
156881          ,p_level    => C_LEVEL_STATEMENT
156882          ,p_module   => l_log_module);
156883 END IF;
156884 
156885 
156886 --
156887 INSERT INTO xla_diag_sources --hdr2
156888 (
156889         event_id
156890       , ledger_id
156891       , sla_ledger_id
156892       , description_language
156893       , object_name
156894       , object_type_code
156895       , line_number
156896       , source_application_id
156897       , source_type_code
156898       , source_code
156899       , source_value
156900       , source_meaning
156901       , created_by
156902       , creation_date
156903       , last_update_date
156904       , last_updated_by
156905       , last_update_login
156906       , program_update_date
156907       , program_application_id
156908       , program_id
156909       , request_id
156910 )
156911 SELECT
156912         event_id
156913       , p_target_ledger_id
156914       , p_sla_ledger_id
156915       , p_language
156916       , object_name
156917       , object_type_code
156918       , line_number
156919       , source_application_id
156920       , source_type_code
156921       , source_code
156922       , SUBSTR(source_value ,1,1996)
156923       , SUBSTR(source_meaning ,1,200)
156924       , xla_environment_pkg.g_Usr_Id
156925       , TRUNC(SYSDATE)
156926       , TRUNC(SYSDATE)
156927       , xla_environment_pkg.g_Usr_Id
156928       , xla_environment_pkg.g_Login_Id
156929       , TRUNC(SYSDATE)
156930       , xla_environment_pkg.g_Prog_Appl_Id
156931       , xla_environment_pkg.g_Prog_Id
156932       , xla_environment_pkg.g_Req_Id
156933   FROM (
156934        SELECT xet.event_id                  event_id
156935             , 0                          line_number
156936             , CASE r
156937                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
156938                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
156939                 
156940                ELSE null
156941               END                           object_name
156942             , CASE r
156943                 WHEN 1 THEN 'HEADER' 
156944                 WHEN 2 THEN 'HEADER' 
156945                 
156946                 ELSE null
156947               END                           object_type_code
156948             , CASE r
156949                 WHEN 1 THEN '707' 
156950                 WHEN 2 THEN '707' 
156951                 
156952                 ELSE null
156953               END                           source_application_id
156954             , 'S'             source_type_code
156955             , CASE r
156956                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
156957                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
156958                 
156959                 ELSE null
156960               END                           source_code
156961             , CASE r
156962                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
156963                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
156964                 
156965                 ELSE null
156966               END                           source_value
156967             , CASE r
156968                 WHEN 1 THEN fvl12.meaning
156969                 WHEN 2 THEN fvl38.meaning
156970                 
156971                 ELSE null
156972               END               source_meaning
156973          FROM xla_events_gt     xet  
156974       , CST_XLA_INV_HEADERS_V  h1
156975   , fnd_lookup_values    fvl12
156976   , fnd_lookup_values    fvl38
156977              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
156978          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
156979            AND xet.event_class_code = C_EVENT_CLASS_CODE
156980               AND h1.event_id = xet.event_id
156981    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
156982   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
156983   AND fvl12.view_application_id(+) = 700
156984   AND fvl12.language(+)            = USERENV('LANG')
156985      AND fvl38.lookup_type(+)         = 'YES_NO'
156986   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
156987   AND fvl38.view_application_id(+) = 0
156988   AND fvl38.language(+)            = USERENV('LANG')
156989   
156990 )
156991 ;
156992 --
156993 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156994 
156995       trace
156996          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
156997          ,p_level    => C_LEVEL_STATEMENT
156998          ,p_module   => l_log_module);
156999 
157000 END IF;
157001 --
157002 
157003 
157004 
157005 --
157006 INSERT INTO xla_diag_sources  --line2
157007 (
157008         event_id
157009       , ledger_id
157010       , sla_ledger_id
157011       , description_language
157012       , object_name
157013       , object_type_code
157014       , line_number
157015       , source_application_id
157016       , source_type_code
157017       , source_code
157018       , source_value
157019       , source_meaning
157020       , created_by
157021       , creation_date
157022       , last_update_date
157023       , last_updated_by
157024       , last_update_login
157025       , program_update_date
157026       , program_application_id
157027       , program_id
157028       , request_id
157029 )
157030 SELECT  event_id
157031       , p_target_ledger_id
157032       , p_sla_ledger_id
157033       , p_language
157034       , object_name
157035       , object_type_code
157036       , line_number
157037       , source_application_id
157038       , source_type_code
157039       , source_code
157040       , SUBSTR(source_value,1,1996)
157041       , SUBSTR(source_meaning ,1,200)
157042       , xla_environment_pkg.g_Usr_Id
157043       , TRUNC(SYSDATE)
157044       , TRUNC(SYSDATE)
157045       , xla_environment_pkg.g_Usr_Id
157046       , xla_environment_pkg.g_Login_Id
157047       , TRUNC(SYSDATE)
157048       , xla_environment_pkg.g_Prog_Appl_Id
157049       , xla_environment_pkg.g_Prog_Id
157050       , xla_environment_pkg.g_Req_Id
157051   FROM (
157052        SELECT xet.event_id                  event_id
157053             , l2.line_number                 line_number
157054             , CASE r
157055                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
157056                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
157057                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
157058                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
157059                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
157060                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
157061                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
157062                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
157063                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
157064                 
157065                ELSE null
157066               END                           object_name
157067             , CASE r
157068                 WHEN 1 THEN 'LINE' 
157069                 WHEN 2 THEN 'LINE' 
157070                 WHEN 3 THEN 'LINE' 
157071                 WHEN 4 THEN 'LINE' 
157072                 WHEN 5 THEN 'LINE' 
157073                 WHEN 6 THEN 'LINE' 
157074                 WHEN 7 THEN 'LINE' 
157075                 WHEN 8 THEN 'LINE' 
157076                 WHEN 9 THEN 'LINE' 
157077                 
157078                 ELSE null
157079               END                           object_type_code
157080             , CASE r
157081                 WHEN 1 THEN '707' 
157082                 WHEN 2 THEN '707' 
157083                 WHEN 3 THEN '707' 
157084                 WHEN 4 THEN '707' 
157085                 WHEN 5 THEN '707' 
157086                 WHEN 6 THEN '707' 
157087                 WHEN 7 THEN '707' 
157088                 WHEN 8 THEN '707' 
157089                 WHEN 9 THEN '707' 
157090                 
157091                 ELSE null
157092               END                           source_application_id
157093             , 'S'             source_type_code
157094             , CASE r
157095                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
157096                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
157097                 WHEN 3 THEN 'CURRENCY_CODE' 
157098                 WHEN 4 THEN 'ENTERED_AMOUNT' 
157099                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
157100                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
157101                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
157102                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
157103                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
157104                 
157105                 ELSE null
157106               END                           source_code
157107             , CASE r
157108                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
157109                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
157110                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
157111                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
157112                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
157113                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
157114                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
157115                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
157116                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
157117                 
157118                 ELSE null
157119               END                           source_value
157120             , null              source_meaning
157121          FROM  xla_events_gt     xet  
157122         , CST_XLA_INV_LINES_V  l2
157123             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
157124         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
157125           AND xet.event_class_code = C_EVENT_CLASS_CODE
157126             AND l2.event_id          = xet.event_id
157127 
157128 )
157129 ;
157130 --
157131 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157132 
157133       trace
157134          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
157135          ,p_level    => C_LEVEL_STATEMENT
157136          ,p_module   => l_log_module);
157137 
157138 END IF;
157139 
157140 
157141 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
157142       trace
157143          (p_msg      => 'END of insert_sources_269'
157144          ,p_level    => C_LEVEL_PROCEDURE
157145          ,p_module   => l_log_module);
157146 END IF;
157147 EXCEPTION
157148   WHEN xla_exceptions_pkg.application_exception THEN
157149       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
157150             trace
157151                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
157152                ,p_level    => C_LEVEL_EXCEPTION
157153                ,p_module   => l_log_module);
157154       END IF;
157155       RAISE;
157156   WHEN OTHERS THEN
157157       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
157158             trace
157159                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
157160                ,p_level    => C_LEVEL_EXCEPTION
157161                ,p_module   => l_log_module);
157162        END IF;
157163        xla_exceptions_pkg.raise_message
157164            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_269');
157165 END insert_sources_269;
157166 --
157167 
157168 ---------------------------------------
157169 --
157170 -- PRIVATE FUNCTION
157171 --         EventClass_269
157172 --
157173 ----------------------------------------
157174 --
157175 FUNCTION EventClass_269
157176        (p_application_id         IN NUMBER
157177        ,p_base_ledger_id         IN NUMBER
157178        ,p_target_ledger_id       IN NUMBER
157179        ,p_language               IN VARCHAR2
157180        ,p_currency_code          IN VARCHAR2
157181        ,p_sla_ledger_id          IN NUMBER
157182        ,p_pad_start_date         IN DATE
157183        ,p_pad_end_date           IN DATE
157184        ,p_primary_ledger_id      IN NUMBER)
157185 RETURN BOOLEAN IS
157186 --
157187 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
157188 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_SHIP';
157189 
157190 l_calculate_acctd_flag   VARCHAR2(1) :='N';
157191 l_calculate_g_l_flag     VARCHAR2(1) :='N';
157192 --
157193 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157194 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157195 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
157196 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
157197 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157198 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
157199 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
157200 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157201 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157202 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157203 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157204 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157205 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157206 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157207 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
157208 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
157209 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
157210 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
157211 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157212 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157213 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157214 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157215 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
157216 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
157217 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
157218 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
157219 
157220 l_event_id                             NUMBER;
157221 l_previous_event_id                    NUMBER;
157222 l_first_event_id                       NUMBER;
157223 l_last_event_id                        NUMBER;
157224 
157225 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
157226 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
157227 --
157228 --
157229 l_result                    BOOLEAN := TRUE;
157230 l_rows                      NUMBER  := 1000;
157231 l_event_type_name           VARCHAR2(80) := 'All';
157232 l_event_class_name          VARCHAR2(80) := 'Recipient-side Intransit Interorg Shipment for FOB Shipment';
157233 l_description               VARCHAR2(4000);
157234 l_transaction_reversal      NUMBER;
157235 l_ae_header_id              NUMBER;
157236 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
157237 l_log_module                VARCHAR2(240);
157238 --
157239 l_acct_reversal_source      VARCHAR2(30);
157240 l_trx_reversal_source       VARCHAR2(30);
157241 
157242 l_continue_with_lines       BOOLEAN := TRUE;
157243 --
157244 l_acc_rev_gl_date_source    DATE;                      -- 4262811
157245 --
157246 type t_array_event_id is table of number index by binary_integer;
157247 
157248 l_rec_array_event                    t_rec_array_event;
157249 l_null_rec_array_event               t_rec_array_event;
157250 l_array_ae_header_id                 xla_number_array_type;
157251 l_actual_flag                        VARCHAR2(1) := NULL;
157252 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
157253 l_balance_type_code                  VARCHAR2(1) :=NULL;
157254 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
157255 
157256 --
157257 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
157258 --
157259 
157260 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
157261 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
157262 
157263 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
157264 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
157265 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
157266 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
157267 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
157268 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
157269 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
157270 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
157271 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
157272 
157273 l_array_source_12              t_array_source_12;
157274 l_array_source_12_meaning      t_array_lookup_meaning;
157275 l_array_source_38              t_array_source_38;
157276 l_array_source_38_meaning      t_array_lookup_meaning;
157277 
157278 l_array_source_4      t_array_source_4;
157279 l_array_source_11      t_array_source_11;
157280 l_array_source_15      t_array_source_15;
157281 l_array_source_18      t_array_source_18;
157282 l_array_source_19      t_array_source_19;
157283 l_array_source_20      t_array_source_20;
157284 l_array_source_21      t_array_source_21;
157285 l_array_source_22      t_array_source_22;
157286 l_array_source_24      t_array_source_24;
157287 
157288 --
157289 CURSOR header_cur
157290 IS
157291 SELECT /*+ leading(xet) cardinality(xet,1) */
157292 -- Event Class Code: FOB_SHIP_RECIPIENT_SHIP
157293     xet.entity_id
157294    ,xet.legal_entity_id
157295    ,xet.entity_code
157296    ,xet.transaction_number
157297    ,xet.event_id
157298    ,xet.event_class_code
157299    ,xet.event_type_code
157300    ,xet.event_number
157301    ,xet.event_date
157302    ,xet.transaction_date
157303    ,xet.reference_num_1
157304    ,xet.reference_num_2
157305    ,xet.reference_num_3
157306    ,xet.reference_num_4
157307    ,xet.reference_char_1
157308    ,xet.reference_char_2
157309    ,xet.reference_char_3
157310    ,xet.reference_char_4
157311    ,xet.reference_date_1
157312    ,xet.reference_date_2
157313    ,xet.reference_date_3
157314    ,xet.reference_date_4
157315    ,xet.event_created_by
157316    ,xet.budgetary_control_flag 
157317   , h1.DISTRIBUTION_TYPE    source_12
157318   , fvl12.meaning   source_12_meaning
157319   , h1.TRANSFER_TO_GL_INDICATOR    source_38
157320   , fvl38.meaning   source_38_meaning
157321   FROM xla_events_gt     xet 
157322   , CST_XLA_INV_HEADERS_V  h1
157323   , fnd_lookup_values    fvl12
157324   , fnd_lookup_values    fvl38
157325  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
157326    and xet.event_class_code = C_EVENT_CLASS_CODE
157327    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
157328    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
157329   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
157330   AND fvl12.view_application_id(+) = 700
157331   AND fvl12.language(+)            = USERENV('LANG')
157332      AND fvl38.lookup_type(+)         = 'YES_NO'
157333   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
157334   AND fvl38.view_application_id(+) = 0
157335   AND fvl38.language(+)            = USERENV('LANG')
157336   
157337  ORDER BY event_id
157338 ;
157339 
157340 
157341 --
157342 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
157343 IS
157344 SELECT  /*+ leading(xet) cardinality(xet,1) */
157345 -- Event Class Code: FOB_SHIP_RECIPIENT_SHIP
157346     xet.entity_id
157347    ,xet.legal_entity_id
157348    ,xet.entity_code
157349    ,xet.transaction_number
157350    ,xet.event_id
157351    ,xet.event_class_code
157352    ,xet.event_type_code
157353    ,xet.event_number
157354    ,xet.event_date
157355    ,xet.transaction_date
157356    ,xet.reference_num_1
157357    ,xet.reference_num_2
157358    ,xet.reference_num_3
157359    ,xet.reference_num_4
157360    ,xet.reference_char_1
157361    ,xet.reference_char_2
157362    ,xet.reference_char_3
157363    ,xet.reference_char_4
157364    ,xet.reference_date_1
157365    ,xet.reference_date_2
157366    ,xet.reference_date_3
157367    ,xet.reference_date_4
157368    ,xet.event_created_by
157369    ,xet.budgetary_control_flag
157370  , l2.LINE_NUMBER  
157371   , l2.CODE_COMBINATION_ID    source_4
157372   , l2.DISTRIBUTION_IDENTIFIER    source_11
157373   , l2.CURRENCY_CODE    source_15
157374   , l2.ENTERED_AMOUNT    source_18
157375   , l2.CURRENCY_CONVERSION_DATE    source_19
157376   , l2.CURRENCY_CONVERSION_RATE    source_20
157377   , l2.CURRENCY_CONVERSION_TYPE    source_21
157378   , l2.ACCOUNTED_AMOUNT    source_22
157379   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
157380   FROM xla_events_gt     xet 
157381   , CST_XLA_INV_LINES_V  l2
157382  WHERE xet.event_id between x_first_event_id and x_last_event_id
157383    and xet.event_date between p_pad_start_date and p_pad_end_date
157384    and xet.event_class_code = C_EVENT_CLASS_CODE
157385    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
157386 ;
157387 
157388 --
157389 BEGIN
157390 IF g_log_enabled THEN
157391    l_log_module := C_DEFAULT_MODULE||'.EventClass_269';
157392 END IF;
157393 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
157394    trace
157395       (p_msg      => 'BEGIN of EventClass_269'
157396       ,p_level    => C_LEVEL_PROCEDURE
157397       ,p_module   => l_log_module);
157398 END IF;
157399 
157400 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157401    trace
157402       (p_msg      => 'p_application_id = '||p_application_id||
157403                      ' - p_base_ledger_id = '||p_base_ledger_id||
157404                      ' - p_target_ledger_id  = '||p_target_ledger_id||
157405                      ' - p_language = '||p_language||
157406                      ' - p_currency_code = '||p_currency_code||
157407                      ' - p_sla_ledger_id = '||p_sla_ledger_id
157408       ,p_level    => C_LEVEL_STATEMENT
157409       ,p_module   => l_log_module);
157410 END IF;
157411 --
157412 -- initialze arrays
157413 --
157414 g_array_event.DELETE;
157415 l_rec_array_event := l_null_rec_array_event;
157416 --
157417 --------------------------------------
157418 -- 4262811 Initialze MPA Line Number
157419 --------------------------------------
157420 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
157421 
157422 --
157423 
157424 --
157425 OPEN header_cur;
157426 --
157427 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157428    trace
157429    (p_msg      => 'SQL - FETCH header_cur'
157430    ,p_level    => C_LEVEL_STATEMENT
157431    ,p_module   => l_log_module);
157432 END IF;
157433 --
157434 LOOP
157435 FETCH header_cur BULK COLLECT INTO
157436         l_array_entity_id
157437       , l_array_legal_entity_id
157438       , l_array_entity_code
157439       , l_array_transaction_num
157440       , l_array_event_id
157441       , l_array_class_code
157442       , l_array_event_type
157443       , l_array_event_number
157444       , l_array_event_date
157445       , l_array_transaction_date
157446       , l_array_reference_num_1
157447       , l_array_reference_num_2
157448       , l_array_reference_num_3
157449       , l_array_reference_num_4
157450       , l_array_reference_char_1
157451       , l_array_reference_char_2
157452       , l_array_reference_char_3
157453       , l_array_reference_char_4
157454       , l_array_reference_date_1
157455       , l_array_reference_date_2
157456       , l_array_reference_date_3
157457       , l_array_reference_date_4
157458       , l_array_event_created_by
157459       , l_array_budgetary_control_flag 
157460       , l_array_source_12
157461       , l_array_source_12_meaning
157462       , l_array_source_38
157463       , l_array_source_38_meaning
157464       LIMIT l_rows;
157465 --
157466 IF (C_LEVEL_EVENT >= g_log_level) THEN
157467    trace
157468    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
157469    ,p_level    => C_LEVEL_EVENT
157470    ,p_module   => l_log_module);
157471 END IF;
157472 --
157473 EXIT WHEN l_array_entity_id.COUNT = 0;
157474 
157475 -- initialize arrays
157476 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
157477 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
157478 
157479 --
157480 -- Bug 4458708
157481 --
157482 XLA_AE_LINES_PKG.g_LineNumber := 0;
157483 
157484 
157485 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
157486 g_last_hdr_idx := l_array_event_id.LAST;
157487 --
157488 -- loop for the headers. Each iteration is for each header extract row
157489 -- fetched in header cursor
157490 --
157491 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
157492 
157493 --
157494 -- set event info as cache for other routines to refer event attributes
157495 --
157496 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
157497    (p_application_id           => p_application_id
157498    ,p_primary_ledger_id        => p_primary_ledger_id
157499    ,p_base_ledger_id           => p_base_ledger_id
157500    ,p_target_ledger_id         => p_target_ledger_id
157501    ,p_entity_id                => l_array_entity_id(hdr_idx)
157502    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
157503    ,p_entity_code              => l_array_entity_code(hdr_idx)
157504    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
157505    ,p_event_id                 => l_array_event_id(hdr_idx)
157506    ,p_event_class_code         => l_array_class_code(hdr_idx)
157507    ,p_event_type_code          => l_array_event_type(hdr_idx)
157508    ,p_event_number             => l_array_event_number(hdr_idx)
157509    ,p_event_date               => l_array_event_date(hdr_idx)
157510    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
157511    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
157512    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
157513    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
157514    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
157515    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
157516    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
157517    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
157518    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
157519    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
157520    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
157521    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
157522    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
157523    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
157524    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
157525 
157526 --
157527 -- set the status of entry to C_VALID (0)
157528 --
157529 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
157530 
157531 --
157532 -- initialize a row for ae header
157533 --
157534 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
157535 
157536 l_event_id := l_array_event_id(hdr_idx);
157537 
157538 --
157539 -- storing the hdr_idx for event. May be used by line cursor.
157540 --
157541 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
157542 
157543 --
157544 -- store sources from header extract. This can be improved to
157545 -- store only those sources from header extract that may be used in lines
157546 --
157547 
157548 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
157549 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
157550 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
157551 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
157552 
157553 --
157554 -- initilaize the status of ae headers for diffrent balance types
157555 -- the status is initialised to C_NOT_CREATED (2)
157556 --
157557 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
157558 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
157559 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
157560 
157561 --
157562 -- call api to validate and store accounting attributes for header
157563 --
157564 
157565 ------------------------------------------------------------
157566 -- Accrual Reversal : to get date for Standard Source (NONE)
157567 ------------------------------------------------------------
157568 l_acc_rev_gl_date_source := NULL;
157569 
157570      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
157571       l_rec_acct_attrs.array_date_value(1) := 
157572 xla_ae_sources_pkg.GetSystemSourceDate(
157573    p_source_code           => 'XLA_REFERENCE_DATE_1'
157574  , p_source_type_code      => 'Y'
157575  , p_source_application_id =>  602
157576 );
157577      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
157578       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
157579 
157580 
157581 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
157582 
157583 XLA_AE_HEADER_PKG.SetJeCategoryName;
157584 
157585 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
157586 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
157587 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
157588 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
157589 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
157590 
157591 
157592 -- No header level analytical criteria
157593 
157594 --
157595 --accounting attribute enhancement, bug 3612931
157596 --
157597 l_trx_reversal_source := SUBSTR(NULL, 1,30);
157598 
157599 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
157600    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
157601 
157602    xla_accounting_err_pkg.build_message
157603       (p_appli_s_name            => 'XLA'
157604       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
157605       ,p_token_1                 => 'ACCT_ATTR_NAME'
157606       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
157607       ,p_token_2                 => 'PRODUCT_NAME'
157608       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
157609       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
157610       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
157611       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
157612 
157613 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
157614    --
157615    -- following sets the accounting attributes needed to reverse
157616    -- accounting for a distributeion
157617    --
157618    xla_ae_lines_pkg.SetTrxReversalAttrs
157619       (p_event_id              => l_event_id
157620       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
157621       ,p_trx_reversal_source   => l_trx_reversal_source);
157622 
157623 END IF;
157624 
157625 
157626 ----------------------------------------------------------------
157627 -- 4262811 -  update the header statuses to invalid in need be
157628 ----------------------------------------------------------------
157629 --
157630 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
157631 
157632 
157633   -----------------------------------------------
157634   -- No accrual reversal for the event class/type
157635   -----------------------------------------------
157636 ----------------------------------------------------------------
157637 
157638 --
157639 -- this ends the header loop iteration for one bulk fetch
157640 --
157641 END LOOP;
157642 
157643 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
157644 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
157645 
157646 --
157647 -- insert dummy rows into lines gt table that were created due to
157648 -- transaction reversals
157649 --
157650 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
157651    l_result := XLA_AE_LINES_PKG.InsertLines;
157652 END IF;
157653 
157654 --
157655 -- reset the temp_line_num for each set of events fetched from header
157656 -- cursor rather than doing it for each new event in line cursor
157657 -- Bug 3939231
157658 --
157659 xla_ae_lines_pkg.g_temp_line_num := 0;
157660 
157661 
157662 
157663 --
157664 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
157665 --
157666 --
157667 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157668 
157669       trace
157670          (p_msg      => 'SQL - FETCH line_cur'
157671          ,p_level    => C_LEVEL_STATEMENT
157672          ,p_module   => l_log_module);
157673 
157674 END IF;
157675 --
157676 --
157677 LOOP
157678   --
157679   FETCH line_cur BULK COLLECT INTO
157680         l_array_entity_id
157681       , l_array_legal_entity_id
157682       , l_array_entity_code
157683       , l_array_transaction_num
157684       , l_array_event_id
157685       , l_array_class_code
157686       , l_array_event_type
157687       , l_array_event_number
157688       , l_array_event_date
157689       , l_array_transaction_date
157690       , l_array_reference_num_1
157691       , l_array_reference_num_2
157692       , l_array_reference_num_3
157693       , l_array_reference_num_4
157694       , l_array_reference_char_1
157695       , l_array_reference_char_2
157696       , l_array_reference_char_3
157697       , l_array_reference_char_4
157698       , l_array_reference_date_1
157699       , l_array_reference_date_2
157700       , l_array_reference_date_3
157701       , l_array_reference_date_4
157702       , l_array_event_created_by
157703       , l_array_budgetary_control_flag
157704       , l_array_extract_line_num 
157705       , l_array_source_4
157706       , l_array_source_11
157707       , l_array_source_15
157708       , l_array_source_18
157709       , l_array_source_19
157710       , l_array_source_20
157711       , l_array_source_21
157712       , l_array_source_22
157713       , l_array_source_24
157714       LIMIT l_rows;
157715 
157716   --
157717   IF (C_LEVEL_EVENT >= g_log_level) THEN
157718             trace
157719                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
157720                ,p_level    => C_LEVEL_EVENT
157721                ,p_module   => l_log_module);
157722   END IF;
157723   --
157724   EXIT WHEN l_array_entity_id.count = 0;
157725 
157726   XLA_AE_LINES_PKG.g_rec_lines := null;
157727 
157728 --
157729 -- Bug 4458708
157730 --
157731 XLA_AE_LINES_PKG.g_LineNumber := 0;
157732 --
157733 --
157734 
157735 FOR Idx IN 1..l_array_event_id.count LOOP
157736    --
157737    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
157738    --
157739    l_event_id := l_array_event_id(idx);  -- 5648433
157740 
157741    --
157742    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
157743    --
157744 
157745    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
157746              (g_array_event(l_event_id).array_value_num('header_index'))
157747          ,'N'
157748          ) <> 'Y'
157749    THEN
157750       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157751          trace
157752             (p_msg      => 'Trancaction revesal option is not Y '
157753             ,p_level    => C_LEVEL_STATEMENT
157754             ,p_module   => l_log_module);
157755       END IF;
157756 
157757 --
157758 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
157759 --
157760 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
157761 --
157762 -- set event info as cache for other routines to refer event attributes
157763 --
157764 
157765 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
157766    l_previous_event_id := l_event_id;
157767 
157768    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
157769       (p_application_id           => p_application_id
157770       ,p_primary_ledger_id        => p_primary_ledger_id
157771       ,p_base_ledger_id           => p_base_ledger_id
157772       ,p_target_ledger_id         => p_target_ledger_id
157773       ,p_entity_id                => l_array_entity_id(Idx)
157774       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
157775       ,p_entity_code              => l_array_entity_code(Idx)
157776       ,p_transaction_num          => l_array_transaction_num(Idx)
157777       ,p_event_id                 => l_array_event_id(Idx)
157778       ,p_event_class_code         => l_array_class_code(Idx)
157779       ,p_event_type_code          => l_array_event_type(Idx)
157780       ,p_event_number             => l_array_event_number(Idx)
157781       ,p_event_date               => l_array_event_date(Idx)
157782       ,p_transaction_date         => l_array_transaction_date(Idx)
157783       ,p_reference_num_1          => l_array_reference_num_1(Idx)
157784       ,p_reference_num_2          => l_array_reference_num_2(Idx)
157785       ,p_reference_num_3          => l_array_reference_num_3(Idx)
157786       ,p_reference_num_4          => l_array_reference_num_4(Idx)
157787       ,p_reference_char_1         => l_array_reference_char_1(Idx)
157788       ,p_reference_char_2         => l_array_reference_char_2(Idx)
157789       ,p_reference_char_3         => l_array_reference_char_3(Idx)
157790       ,p_reference_char_4         => l_array_reference_char_4(Idx)
157791       ,p_reference_date_1         => l_array_reference_date_1(Idx)
157792       ,p_reference_date_2         => l_array_reference_date_2(Idx)
157793       ,p_reference_date_3         => l_array_reference_date_3(Idx)
157794       ,p_reference_date_4         => l_array_reference_date_4(Idx)
157795       ,p_event_created_by         => l_array_event_created_by(Idx)
157796       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
157797        --
157798 END IF;
157799 
157800 
157801 
157802 --
157803 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
157804 
157805 l_acct_reversal_source := SUBSTR(NULL, 1,30);
157806 
157807 IF l_continue_with_lines THEN
157808    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
157809       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
157810 
157811       xla_accounting_err_pkg.build_message
157812          (p_appli_s_name            => 'XLA'
157813          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
157814          ,p_token_1                 => 'LINE_NUMBER'
157815          ,p_value_1                 => l_array_extract_line_num(Idx)
157816          ,p_token_2                 => 'PRODUCT_NAME'
157817          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
157818          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
157819          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
157820          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
157821 
157822    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
157823       --
157824       -- following sets the accounting attributes needed to reverse
157825       -- accounting for a distributeion
157826       --
157827 
157828       --
157829       -- 5217187
157830       --
157831       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
157832       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
157833                                        g_array_event(l_event_id).array_value_num('header_index'));
157834       --
157835       --
157836 
157837       -- No reversal code generated
157838 
157839       xla_ae_lines_pkg.SetAcctReversalAttrs
157840          (p_event_id             => l_event_id
157841          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
157842          ,p_calculate_acctd_flag => l_calculate_acctd_flag
157843          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
157844    END IF;
157845 
157846    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
157847        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
157848 
157849 --
157850 AcctLineType_30 (
157851  p_application_id  => p_application_id
157852  ,p_event_id     => l_event_id
157853  ,p_calculate_acctd_flag => l_calculate_acctd_flag
157854  ,p_calculate_g_l_flag => l_calculate_g_l_flag
157855  ,p_actual_flag => l_actual_flag
157856  ,p_balance_type_code => l_balance_type_code
157857  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
157858  
157859  , p_source_4 => l_array_source_4(Idx)
157860  , p_source_11 => l_array_source_11(Idx)
157861  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
157862  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
157863  , p_source_15 => l_array_source_15(Idx)
157864  , p_source_18 => l_array_source_18(Idx)
157865  , p_source_19 => l_array_source_19(Idx)
157866  , p_source_20 => l_array_source_20(Idx)
157867  , p_source_21 => l_array_source_21(Idx)
157868  , p_source_22 => l_array_source_22(Idx)
157869  , p_source_24 => l_array_source_24(Idx)
157870  );
157871 If(l_balance_type_code = 'A') THEN
157872   l_actual_gain_loss_ref := l_gain_or_loss_ref;
157873 END IF;
157874 
157875 --
157876 
157877 
157878 --
157879 AcctLineType_56 (
157880  p_application_id  => p_application_id
157881  ,p_event_id     => l_event_id
157882  ,p_calculate_acctd_flag => l_calculate_acctd_flag
157883  ,p_calculate_g_l_flag => l_calculate_g_l_flag
157884  ,p_actual_flag => l_actual_flag
157885  ,p_balance_type_code => l_balance_type_code
157886  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
157887  
157888  , p_source_4 => l_array_source_4(Idx)
157889  , p_source_11 => l_array_source_11(Idx)
157890  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
157891  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
157892  , p_source_15 => l_array_source_15(Idx)
157893  , p_source_18 => l_array_source_18(Idx)
157894  , p_source_19 => l_array_source_19(Idx)
157895  , p_source_20 => l_array_source_20(Idx)
157896  , p_source_21 => l_array_source_21(Idx)
157897  , p_source_22 => l_array_source_22(Idx)
157898  , p_source_24 => l_array_source_24(Idx)
157899  );
157900 If(l_balance_type_code = 'A') THEN
157901   l_actual_gain_loss_ref := l_gain_or_loss_ref;
157902 END IF;
157903 
157904 --
157905 
157906 
157907 --
157908 AcctLineType_73 (
157909  p_application_id  => p_application_id
157910  ,p_event_id     => l_event_id
157911  ,p_calculate_acctd_flag => l_calculate_acctd_flag
157912  ,p_calculate_g_l_flag => l_calculate_g_l_flag
157913  ,p_actual_flag => l_actual_flag
157914  ,p_balance_type_code => l_balance_type_code
157915  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
157916  
157917  , p_source_4 => l_array_source_4(Idx)
157918  , p_source_11 => l_array_source_11(Idx)
157919  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
157920  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
157921  , p_source_15 => l_array_source_15(Idx)
157922  , p_source_18 => l_array_source_18(Idx)
157923  , p_source_19 => l_array_source_19(Idx)
157924  , p_source_20 => l_array_source_20(Idx)
157925  , p_source_21 => l_array_source_21(Idx)
157926  , p_source_22 => l_array_source_22(Idx)
157927  , p_source_24 => l_array_source_24(Idx)
157928  );
157929 If(l_balance_type_code = 'A') THEN
157930   l_actual_gain_loss_ref := l_gain_or_loss_ref;
157931 END IF;
157932 
157933 --
157934 
157935 
157936 --
157937 AcctLineType_75 (
157938  p_application_id  => p_application_id
157939  ,p_event_id     => l_event_id
157940  ,p_calculate_acctd_flag => l_calculate_acctd_flag
157941  ,p_calculate_g_l_flag => l_calculate_g_l_flag
157942  ,p_actual_flag => l_actual_flag
157943  ,p_balance_type_code => l_balance_type_code
157944  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
157945  
157946  , p_source_4 => l_array_source_4(Idx)
157947  , p_source_11 => l_array_source_11(Idx)
157948  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
157949  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
157950  , p_source_15 => l_array_source_15(Idx)
157951  , p_source_18 => l_array_source_18(Idx)
157952  , p_source_19 => l_array_source_19(Idx)
157953  , p_source_20 => l_array_source_20(Idx)
157954  , p_source_21 => l_array_source_21(Idx)
157955  , p_source_22 => l_array_source_22(Idx)
157956  , p_source_24 => l_array_source_24(Idx)
157957  );
157958 If(l_balance_type_code = 'A') THEN
157959   l_actual_gain_loss_ref := l_gain_or_loss_ref;
157960 END IF;
157961 
157962 --
157963 
157964 
157965 --
157966 AcctLineType_124 (
157967  p_application_id  => p_application_id
157968  ,p_event_id     => l_event_id
157969  ,p_calculate_acctd_flag => l_calculate_acctd_flag
157970  ,p_calculate_g_l_flag => l_calculate_g_l_flag
157971  ,p_actual_flag => l_actual_flag
157972  ,p_balance_type_code => l_balance_type_code
157973  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
157974  
157975  , p_source_4 => l_array_source_4(Idx)
157976  , p_source_11 => l_array_source_11(Idx)
157977  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
157978  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
157979  , p_source_15 => l_array_source_15(Idx)
157980  , p_source_18 => l_array_source_18(Idx)
157981  , p_source_19 => l_array_source_19(Idx)
157982  , p_source_20 => l_array_source_20(Idx)
157983  , p_source_21 => l_array_source_21(Idx)
157984  , p_source_22 => l_array_source_22(Idx)
157985  , p_source_24 => l_array_source_24(Idx)
157986  );
157987 If(l_balance_type_code = 'A') THEN
157988   l_actual_gain_loss_ref := l_gain_or_loss_ref;
157989 END IF;
157990 
157991 --
157992 
157993 
157994 --
157995 AcctLineType_167 (
157996  p_application_id  => p_application_id
157997  ,p_event_id     => l_event_id
157998  ,p_calculate_acctd_flag => l_calculate_acctd_flag
157999  ,p_calculate_g_l_flag => l_calculate_g_l_flag
158000  ,p_actual_flag => l_actual_flag
158001  ,p_balance_type_code => l_balance_type_code
158002  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
158003  
158004  , p_source_4 => l_array_source_4(Idx)
158005  , p_source_11 => l_array_source_11(Idx)
158006  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
158007  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
158008  , p_source_15 => l_array_source_15(Idx)
158009  , p_source_18 => l_array_source_18(Idx)
158010  , p_source_19 => l_array_source_19(Idx)
158011  , p_source_20 => l_array_source_20(Idx)
158012  , p_source_21 => l_array_source_21(Idx)
158013  , p_source_22 => l_array_source_22(Idx)
158014  , p_source_24 => l_array_source_24(Idx)
158015  );
158016 If(l_balance_type_code = 'A') THEN
158017   l_actual_gain_loss_ref := l_gain_or_loss_ref;
158018 END IF;
158019 
158020 --
158021 
158022 
158023 --
158024 AcctLineType_203 (
158025  p_application_id  => p_application_id
158026  ,p_event_id     => l_event_id
158027  ,p_calculate_acctd_flag => l_calculate_acctd_flag
158028  ,p_calculate_g_l_flag => l_calculate_g_l_flag
158029  ,p_actual_flag => l_actual_flag
158030  ,p_balance_type_code => l_balance_type_code
158031  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
158032  
158033  , p_source_4 => l_array_source_4(Idx)
158034  , p_source_11 => l_array_source_11(Idx)
158035  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
158036  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
158037  , p_source_15 => l_array_source_15(Idx)
158038  , p_source_18 => l_array_source_18(Idx)
158039  , p_source_19 => l_array_source_19(Idx)
158040  , p_source_20 => l_array_source_20(Idx)
158041  , p_source_21 => l_array_source_21(Idx)
158042  , p_source_22 => l_array_source_22(Idx)
158043  , p_source_24 => l_array_source_24(Idx)
158044  );
158045 If(l_balance_type_code = 'A') THEN
158046   l_actual_gain_loss_ref := l_gain_or_loss_ref;
158047 END IF;
158048 
158049 --
158050 
158051 
158052 --
158053 AcctLineType_214 (
158054  p_application_id  => p_application_id
158055  ,p_event_id     => l_event_id
158056  ,p_calculate_acctd_flag => l_calculate_acctd_flag
158057  ,p_calculate_g_l_flag => l_calculate_g_l_flag
158058  ,p_actual_flag => l_actual_flag
158059  ,p_balance_type_code => l_balance_type_code
158060  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
158061  
158062  , p_source_4 => l_array_source_4(Idx)
158063  , p_source_11 => l_array_source_11(Idx)
158064  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
158065  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
158066  , p_source_15 => l_array_source_15(Idx)
158067  , p_source_18 => l_array_source_18(Idx)
158068  , p_source_19 => l_array_source_19(Idx)
158069  , p_source_20 => l_array_source_20(Idx)
158070  , p_source_21 => l_array_source_21(Idx)
158071  , p_source_22 => l_array_source_22(Idx)
158072  , p_source_24 => l_array_source_24(Idx)
158073  );
158074 If(l_balance_type_code = 'A') THEN
158075   l_actual_gain_loss_ref := l_gain_or_loss_ref;
158076 END IF;
158077 
158078 --
158079 
158080 
158081 --
158082 AcctLineType_226 (
158083  p_application_id  => p_application_id
158084  ,p_event_id     => l_event_id
158085  ,p_calculate_acctd_flag => l_calculate_acctd_flag
158086  ,p_calculate_g_l_flag => l_calculate_g_l_flag
158087  ,p_actual_flag => l_actual_flag
158088  ,p_balance_type_code => l_balance_type_code
158089  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
158090  
158091  , p_source_4 => l_array_source_4(Idx)
158092  , p_source_11 => l_array_source_11(Idx)
158093  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
158094  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
158095  , p_source_15 => l_array_source_15(Idx)
158096  , p_source_18 => l_array_source_18(Idx)
158097  , p_source_19 => l_array_source_19(Idx)
158098  , p_source_20 => l_array_source_20(Idx)
158099  , p_source_21 => l_array_source_21(Idx)
158100  , p_source_22 => l_array_source_22(Idx)
158101  , p_source_24 => l_array_source_24(Idx)
158102  );
158103 If(l_balance_type_code = 'A') THEN
158104   l_actual_gain_loss_ref := l_gain_or_loss_ref;
158105 END IF;
158106 
158107 --
158108 
158109       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
158110       -- or secondary ledger that has different currency with primary
158111       -- or alc that is calculated by sla
158112       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
158113             (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'))
158114 
158115 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
158116 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
158117           AND (l_actual_flag = 'A')) THEN
158118         XLA_AE_LINES_PKG.CreateGainOrLossLines(
158119           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
158120          ,p_application_id   => p_application_id
158121          ,p_amb_context_code => 'DEFAULT'
158122          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
158123          ,p_event_class_code => C_EVENT_CLASS_CODE
158124          ,p_event_type_code  => C_EVENT_TYPE_CODE
158125          
158126          ,p_gain_ccid        => -1
158127          ,p_loss_ccid        => -1
158128 
158129          ,p_actual_flag      => l_actual_flag
158130          ,p_enc_flag         => null
158131          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
158132          ,p_enc_g_l_ref      => null
158133          );
158134       END IF;
158135    END IF;
158136 END IF;
158137 
158138    ELSE
158139       --
158140       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
158141       --
158142       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158143          trace
158144             (p_msg      => 'Trancaction revesal option is Y'
158145             ,p_level    => C_LEVEL_STATEMENT
158146             ,p_module   => l_log_module);
158147       END IF;
158148    END IF;
158149 
158150 END LOOP;
158151 l_result := XLA_AE_LINES_PKG.InsertLines ;
158152 end loop;
158153 close line_cur;
158154 
158155 
158156 --
158157 -- insert headers into xla_ae_headers_gt table
158158 --
158159 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
158160 
158161 -- insert into errors table here.
158162 
158163 END LOOP;
158164 
158165 --
158166 -- 4865292
158167 --
158168 -- Compare g_hdr_extract_count with event count in
158169 -- CreateHeadersAndLines.
158170 --
158171 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
158172 
158173 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158174    trace (p_msg     => '# rows extracted from header extract objects '
158175                     || ' (running total): '
158176                     || g_hdr_extract_count
158177          ,p_level   => C_LEVEL_STATEMENT
158178          ,p_module  => l_log_module);
158179 END IF;
158180 
158181 CLOSE header_cur;
158182 --
158183 
158184 --
158185 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
158186    trace
158187       (p_msg      => 'END of EventClass_269'
158188       ,p_level    => C_LEVEL_PROCEDURE
158189       ,p_module   => l_log_module);
158190 END IF;
158191 --
158192 RETURN l_result;
158193 EXCEPTION
158194 WHEN xla_exceptions_pkg.application_exception THEN
158195    
158196 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
158197 
158198    
158199 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
158200 
158201    RAISE;
158202 
158203 WHEN NO_DATA_FOUND THEN
158204 
158205 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
158206 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
158207 
158208 FOR header_record IN header_cur
158209 LOOP
158210     l_array_header_events(header_record.event_id) := header_record.event_id;
158211 END LOOP;
158212 
158213 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
158214 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
158215 
158216 fnd_file.put_line(fnd_file.LOG, '                    ');
158217 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
158218 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
158219 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
158220 
158221 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
158222 LOOP
158223 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
158224 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
158225         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
158226 	END IF;
158227 END LOOP;
158228 
158229 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
158230 fnd_file.put_line(fnd_file.LOG, '                    ');
158231 
158232 
158233 xla_exceptions_pkg.raise_message
158234       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_269');
158235 
158236 
158237 WHEN OTHERS THEN
158238    xla_exceptions_pkg.raise_message
158239       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_269');
158240 END EventClass_269;
158241 --
158242 
158243 ---------------------------------------
158244 --
158245 -- PRIVATE PROCEDURE
158246 --         insert_sources_270
158247 --
158248 ----------------------------------------
158249 --
158250 PROCEDURE insert_sources_270(
158251                                 p_target_ledger_id       IN NUMBER
158252                               , p_language               IN VARCHAR2
158253                               , p_sla_ledger_id          IN NUMBER
158254                               , p_pad_start_date         IN DATE
158255                               , p_pad_end_date           IN DATE
158256                          )
158257 IS
158258 
158259 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_SENDER_SHIP_ALL';
158260 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP';
158261 p_apps_owner                   VARCHAR2(30);
158262 l_log_module                   VARCHAR2(240);
158263 BEGIN
158264 IF g_log_enabled THEN
158265       l_log_module := C_DEFAULT_MODULE||'.insert_sources_270';
158266 END IF;
158267 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
158268 
158269       trace
158270          (p_msg      => 'BEGIN of insert_sources_270'
158271          ,p_level    => C_LEVEL_PROCEDURE
158272          ,p_module   => l_log_module);
158273 
158274 END IF;
158275 
158276 -- select APPS owner
158277 SELECT oracle_username
158278   INTO p_apps_owner
158279   FROM fnd_oracle_userid
158280  WHERE read_only_flag = 'U'
158281 ;
158282 
158283 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158284       trace
158285          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
158286                         ' - p_language = '||p_language||
158287                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
158288                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
158289                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
158290                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
158291          ,p_level    => C_LEVEL_STATEMENT
158292          ,p_module   => l_log_module);
158293 END IF;
158294 
158295 
158296 --
158297 INSERT INTO xla_diag_sources --hdr2
158298 (
158299         event_id
158300       , ledger_id
158301       , sla_ledger_id
158302       , description_language
158303       , object_name
158304       , object_type_code
158305       , line_number
158306       , source_application_id
158307       , source_type_code
158308       , source_code
158309       , source_value
158310       , source_meaning
158311       , created_by
158312       , creation_date
158313       , last_update_date
158314       , last_updated_by
158315       , last_update_login
158316       , program_update_date
158317       , program_application_id
158318       , program_id
158319       , request_id
158320 )
158321 SELECT
158322         event_id
158323       , p_target_ledger_id
158324       , p_sla_ledger_id
158325       , p_language
158326       , object_name
158327       , object_type_code
158328       , line_number
158329       , source_application_id
158330       , source_type_code
158331       , source_code
158332       , SUBSTR(source_value ,1,1996)
158333       , SUBSTR(source_meaning ,1,200)
158334       , xla_environment_pkg.g_Usr_Id
158335       , TRUNC(SYSDATE)
158336       , TRUNC(SYSDATE)
158337       , xla_environment_pkg.g_Usr_Id
158338       , xla_environment_pkg.g_Login_Id
158339       , TRUNC(SYSDATE)
158340       , xla_environment_pkg.g_Prog_Appl_Id
158341       , xla_environment_pkg.g_Prog_Id
158342       , xla_environment_pkg.g_Req_Id
158343   FROM (
158344        SELECT xet.event_id                  event_id
158345             , 0                          line_number
158346             , CASE r
158347                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
158348                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
158349                 
158350                ELSE null
158351               END                           object_name
158352             , CASE r
158353                 WHEN 1 THEN 'HEADER' 
158354                 WHEN 2 THEN 'HEADER' 
158355                 
158356                 ELSE null
158357               END                           object_type_code
158358             , CASE r
158359                 WHEN 1 THEN '707' 
158360                 WHEN 2 THEN '707' 
158361                 
158362                 ELSE null
158363               END                           source_application_id
158364             , 'S'             source_type_code
158365             , CASE r
158366                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
158367                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
158368                 
158369                 ELSE null
158370               END                           source_code
158371             , CASE r
158372                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
158373                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
158374                 
158375                 ELSE null
158376               END                           source_value
158377             , CASE r
158378                 WHEN 1 THEN fvl12.meaning
158379                 WHEN 2 THEN fvl38.meaning
158380                 
158381                 ELSE null
158382               END               source_meaning
158383          FROM xla_events_gt     xet  
158384       , CST_XLA_INV_HEADERS_V  h1
158385   , fnd_lookup_values    fvl12
158386   , fnd_lookup_values    fvl38
158387              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
158388          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
158389            AND xet.event_class_code = C_EVENT_CLASS_CODE
158390               AND h1.event_id = xet.event_id
158391    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
158392   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
158393   AND fvl12.view_application_id(+) = 700
158394   AND fvl12.language(+)            = USERENV('LANG')
158395      AND fvl38.lookup_type(+)         = 'YES_NO'
158396   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
158397   AND fvl38.view_application_id(+) = 0
158398   AND fvl38.language(+)            = USERENV('LANG')
158399   
158400 )
158401 ;
158402 --
158403 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158404 
158405       trace
158406          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
158407          ,p_level    => C_LEVEL_STATEMENT
158408          ,p_module   => l_log_module);
158409 
158410 END IF;
158411 --
158412 
158413 
158414 
158415 --
158416 INSERT INTO xla_diag_sources  --line2
158417 (
158418         event_id
158419       , ledger_id
158420       , sla_ledger_id
158421       , description_language
158422       , object_name
158423       , object_type_code
158424       , line_number
158425       , source_application_id
158426       , source_type_code
158427       , source_code
158428       , source_value
158429       , source_meaning
158430       , created_by
158431       , creation_date
158432       , last_update_date
158433       , last_updated_by
158434       , last_update_login
158435       , program_update_date
158436       , program_application_id
158437       , program_id
158438       , request_id
158439 )
158440 SELECT  event_id
158441       , p_target_ledger_id
158442       , p_sla_ledger_id
158443       , p_language
158444       , object_name
158445       , object_type_code
158446       , line_number
158447       , source_application_id
158448       , source_type_code
158449       , source_code
158450       , SUBSTR(source_value,1,1996)
158451       , SUBSTR(source_meaning ,1,200)
158452       , xla_environment_pkg.g_Usr_Id
158453       , TRUNC(SYSDATE)
158454       , TRUNC(SYSDATE)
158455       , xla_environment_pkg.g_Usr_Id
158456       , xla_environment_pkg.g_Login_Id
158457       , TRUNC(SYSDATE)
158458       , xla_environment_pkg.g_Prog_Appl_Id
158459       , xla_environment_pkg.g_Prog_Id
158460       , xla_environment_pkg.g_Req_Id
158461   FROM (
158462        SELECT xet.event_id                  event_id
158463             , l2.line_number                 line_number
158464             , CASE r
158465                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
158466                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
158467                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
158468                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
158469                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
158470                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
158471                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
158472                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
158473                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
158474                 
158475                ELSE null
158476               END                           object_name
158477             , CASE r
158478                 WHEN 1 THEN 'LINE' 
158479                 WHEN 2 THEN 'LINE' 
158480                 WHEN 3 THEN 'LINE' 
158481                 WHEN 4 THEN 'LINE' 
158482                 WHEN 5 THEN 'LINE' 
158483                 WHEN 6 THEN 'LINE' 
158484                 WHEN 7 THEN 'LINE' 
158485                 WHEN 8 THEN 'LINE' 
158486                 WHEN 9 THEN 'LINE' 
158487                 
158488                 ELSE null
158489               END                           object_type_code
158490             , CASE r
158491                 WHEN 1 THEN '707' 
158492                 WHEN 2 THEN '707' 
158493                 WHEN 3 THEN '707' 
158494                 WHEN 4 THEN '707' 
158495                 WHEN 5 THEN '707' 
158496                 WHEN 6 THEN '707' 
158497                 WHEN 7 THEN '707' 
158498                 WHEN 8 THEN '707' 
158499                 WHEN 9 THEN '707' 
158500                 
158501                 ELSE null
158502               END                           source_application_id
158503             , 'S'             source_type_code
158504             , CASE r
158505                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
158506                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
158507                 WHEN 3 THEN 'CURRENCY_CODE' 
158508                 WHEN 4 THEN 'ENTERED_AMOUNT' 
158509                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
158510                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
158511                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
158512                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
158513                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
158514                 
158515                 ELSE null
158516               END                           source_code
158517             , CASE r
158518                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
158519                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
158520                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
158521                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
158522                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
158523                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
158524                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
158525                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
158526                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
158527                 
158528                 ELSE null
158529               END                           source_value
158530             , null              source_meaning
158531          FROM  xla_events_gt     xet  
158532         , CST_XLA_INV_LINES_V  l2
158533             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
158534         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
158535           AND xet.event_class_code = C_EVENT_CLASS_CODE
158536             AND l2.event_id          = xet.event_id
158537 
158538 )
158539 ;
158540 --
158541 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158542 
158543       trace
158544          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
158545          ,p_level    => C_LEVEL_STATEMENT
158546          ,p_module   => l_log_module);
158547 
158548 END IF;
158549 
158550 
158551 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
158552       trace
158553          (p_msg      => 'END of insert_sources_270'
158554          ,p_level    => C_LEVEL_PROCEDURE
158555          ,p_module   => l_log_module);
158556 END IF;
158557 EXCEPTION
158558   WHEN xla_exceptions_pkg.application_exception THEN
158559       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
158560             trace
158561                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
158562                ,p_level    => C_LEVEL_EXCEPTION
158563                ,p_module   => l_log_module);
158564       END IF;
158565       RAISE;
158566   WHEN OTHERS THEN
158567       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
158568             trace
158569                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
158570                ,p_level    => C_LEVEL_EXCEPTION
158571                ,p_module   => l_log_module);
158572        END IF;
158573        xla_exceptions_pkg.raise_message
158574            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_270');
158575 END insert_sources_270;
158576 --
158577 
158578 ---------------------------------------
158579 --
158580 -- PRIVATE FUNCTION
158581 --         EventClass_270
158582 --
158583 ----------------------------------------
158584 --
158585 FUNCTION EventClass_270
158586        (p_application_id         IN NUMBER
158587        ,p_base_ledger_id         IN NUMBER
158588        ,p_target_ledger_id       IN NUMBER
158589        ,p_language               IN VARCHAR2
158590        ,p_currency_code          IN VARCHAR2
158591        ,p_sla_ledger_id          IN NUMBER
158592        ,p_pad_start_date         IN DATE
158593        ,p_pad_end_date           IN DATE
158594        ,p_primary_ledger_id      IN NUMBER)
158595 RETURN BOOLEAN IS
158596 --
158597 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_SENDER_SHIP_ALL';
158598 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP';
158599 
158600 l_calculate_acctd_flag   VARCHAR2(1) :='N';
158601 l_calculate_g_l_flag     VARCHAR2(1) :='N';
158602 --
158603 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158604 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158605 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
158606 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
158607 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158608 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
158609 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
158610 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158611 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
158612 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
158613 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158614 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158615 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158616 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158617 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
158618 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
158619 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
158620 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
158621 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
158622 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
158623 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
158624 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
158625 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
158626 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
158627 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
158628 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
158629 
158630 l_event_id                             NUMBER;
158631 l_previous_event_id                    NUMBER;
158632 l_first_event_id                       NUMBER;
158633 l_last_event_id                        NUMBER;
158634 
158635 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
158636 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
158637 --
158638 --
158639 l_result                    BOOLEAN := TRUE;
158640 l_rows                      NUMBER  := 1000;
158641 l_event_type_name           VARCHAR2(80) := 'All';
158642 l_event_class_name          VARCHAR2(80) := 'Sender-side Intransit Interorg Shipment for FOB Shipment';
158643 l_description               VARCHAR2(4000);
158644 l_transaction_reversal      NUMBER;
158645 l_ae_header_id              NUMBER;
158646 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
158647 l_log_module                VARCHAR2(240);
158648 --
158649 l_acct_reversal_source      VARCHAR2(30);
158650 l_trx_reversal_source       VARCHAR2(30);
158651 
158652 l_continue_with_lines       BOOLEAN := TRUE;
158653 --
158654 l_acc_rev_gl_date_source    DATE;                      -- 4262811
158655 --
158656 type t_array_event_id is table of number index by binary_integer;
158657 
158658 l_rec_array_event                    t_rec_array_event;
158659 l_null_rec_array_event               t_rec_array_event;
158660 l_array_ae_header_id                 xla_number_array_type;
158661 l_actual_flag                        VARCHAR2(1) := NULL;
158662 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
158663 l_balance_type_code                  VARCHAR2(1) :=NULL;
158664 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
158665 
158666 --
158667 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
158668 --
158669 
158670 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
158671 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
158672 
158673 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
158674 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
158675 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
158676 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
158677 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
158678 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
158679 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
158680 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
158681 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
158682 
158683 l_array_source_12              t_array_source_12;
158684 l_array_source_12_meaning      t_array_lookup_meaning;
158685 l_array_source_38              t_array_source_38;
158686 l_array_source_38_meaning      t_array_lookup_meaning;
158687 
158688 l_array_source_4      t_array_source_4;
158689 l_array_source_11      t_array_source_11;
158690 l_array_source_15      t_array_source_15;
158691 l_array_source_18      t_array_source_18;
158692 l_array_source_19      t_array_source_19;
158693 l_array_source_20      t_array_source_20;
158694 l_array_source_21      t_array_source_21;
158695 l_array_source_22      t_array_source_22;
158696 l_array_source_24      t_array_source_24;
158697 
158698 --
158699 CURSOR header_cur
158700 IS
158701 SELECT /*+ leading(xet) cardinality(xet,1) */
158702 -- Event Class Code: FOB_SHIP_SENDER_SHIP
158703     xet.entity_id
158704    ,xet.legal_entity_id
158705    ,xet.entity_code
158706    ,xet.transaction_number
158707    ,xet.event_id
158708    ,xet.event_class_code
158709    ,xet.event_type_code
158710    ,xet.event_number
158711    ,xet.event_date
158712    ,xet.transaction_date
158713    ,xet.reference_num_1
158714    ,xet.reference_num_2
158715    ,xet.reference_num_3
158716    ,xet.reference_num_4
158717    ,xet.reference_char_1
158718    ,xet.reference_char_2
158719    ,xet.reference_char_3
158720    ,xet.reference_char_4
158721    ,xet.reference_date_1
158722    ,xet.reference_date_2
158723    ,xet.reference_date_3
158724    ,xet.reference_date_4
158725    ,xet.event_created_by
158726    ,xet.budgetary_control_flag 
158727   , h1.DISTRIBUTION_TYPE    source_12
158728   , fvl12.meaning   source_12_meaning
158729   , h1.TRANSFER_TO_GL_INDICATOR    source_38
158730   , fvl38.meaning   source_38_meaning
158731   FROM xla_events_gt     xet 
158732   , CST_XLA_INV_HEADERS_V  h1
158733   , fnd_lookup_values    fvl12
158734   , fnd_lookup_values    fvl38
158735  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
158736    and xet.event_class_code = C_EVENT_CLASS_CODE
158737    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
158738    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
158739   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
158740   AND fvl12.view_application_id(+) = 700
158741   AND fvl12.language(+)            = USERENV('LANG')
158742      AND fvl38.lookup_type(+)         = 'YES_NO'
158743   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
158744   AND fvl38.view_application_id(+) = 0
158745   AND fvl38.language(+)            = USERENV('LANG')
158746   
158747  ORDER BY event_id
158748 ;
158749 
158750 
158751 --
158752 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
158753 IS
158754 SELECT  /*+ leading(xet) cardinality(xet,1) */
158755 -- Event Class Code: FOB_SHIP_SENDER_SHIP
158756     xet.entity_id
158757    ,xet.legal_entity_id
158758    ,xet.entity_code
158759    ,xet.transaction_number
158760    ,xet.event_id
158761    ,xet.event_class_code
158762    ,xet.event_type_code
158763    ,xet.event_number
158764    ,xet.event_date
158765    ,xet.transaction_date
158766    ,xet.reference_num_1
158767    ,xet.reference_num_2
158768    ,xet.reference_num_3
158769    ,xet.reference_num_4
158770    ,xet.reference_char_1
158771    ,xet.reference_char_2
158772    ,xet.reference_char_3
158773    ,xet.reference_char_4
158774    ,xet.reference_date_1
158775    ,xet.reference_date_2
158776    ,xet.reference_date_3
158777    ,xet.reference_date_4
158778    ,xet.event_created_by
158779    ,xet.budgetary_control_flag
158780  , l2.LINE_NUMBER  
158781   , l2.CODE_COMBINATION_ID    source_4
158782   , l2.DISTRIBUTION_IDENTIFIER    source_11
158783   , l2.CURRENCY_CODE    source_15
158784   , l2.ENTERED_AMOUNT    source_18
158785   , l2.CURRENCY_CONVERSION_DATE    source_19
158786   , l2.CURRENCY_CONVERSION_RATE    source_20
158787   , l2.CURRENCY_CONVERSION_TYPE    source_21
158788   , l2.ACCOUNTED_AMOUNT    source_22
158789   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
158790   FROM xla_events_gt     xet 
158791   , CST_XLA_INV_LINES_V  l2
158792  WHERE xet.event_id between x_first_event_id and x_last_event_id
158793    and xet.event_date between p_pad_start_date and p_pad_end_date
158794    and xet.event_class_code = C_EVENT_CLASS_CODE
158795    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
158796 ;
158797 
158798 --
158799 BEGIN
158800 IF g_log_enabled THEN
158801    l_log_module := C_DEFAULT_MODULE||'.EventClass_270';
158802 END IF;
158803 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
158804    trace
158805       (p_msg      => 'BEGIN of EventClass_270'
158806       ,p_level    => C_LEVEL_PROCEDURE
158807       ,p_module   => l_log_module);
158808 END IF;
158809 
158810 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158811    trace
158812       (p_msg      => 'p_application_id = '||p_application_id||
158813                      ' - p_base_ledger_id = '||p_base_ledger_id||
158814                      ' - p_target_ledger_id  = '||p_target_ledger_id||
158815                      ' - p_language = '||p_language||
158816                      ' - p_currency_code = '||p_currency_code||
158817                      ' - p_sla_ledger_id = '||p_sla_ledger_id
158818       ,p_level    => C_LEVEL_STATEMENT
158819       ,p_module   => l_log_module);
158820 END IF;
158821 --
158822 -- initialze arrays
158823 --
158824 g_array_event.DELETE;
158825 l_rec_array_event := l_null_rec_array_event;
158826 --
158827 --------------------------------------
158828 -- 4262811 Initialze MPA Line Number
158829 --------------------------------------
158830 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
158831 
158832 --
158833 
158834 --
158835 OPEN header_cur;
158836 --
158837 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158838    trace
158839    (p_msg      => 'SQL - FETCH header_cur'
158840    ,p_level    => C_LEVEL_STATEMENT
158841    ,p_module   => l_log_module);
158842 END IF;
158843 --
158844 LOOP
158845 FETCH header_cur BULK COLLECT INTO
158846         l_array_entity_id
158847       , l_array_legal_entity_id
158848       , l_array_entity_code
158849       , l_array_transaction_num
158850       , l_array_event_id
158851       , l_array_class_code
158852       , l_array_event_type
158853       , l_array_event_number
158854       , l_array_event_date
158855       , l_array_transaction_date
158856       , l_array_reference_num_1
158857       , l_array_reference_num_2
158858       , l_array_reference_num_3
158859       , l_array_reference_num_4
158860       , l_array_reference_char_1
158861       , l_array_reference_char_2
158862       , l_array_reference_char_3
158863       , l_array_reference_char_4
158864       , l_array_reference_date_1
158865       , l_array_reference_date_2
158866       , l_array_reference_date_3
158867       , l_array_reference_date_4
158868       , l_array_event_created_by
158869       , l_array_budgetary_control_flag 
158870       , l_array_source_12
158871       , l_array_source_12_meaning
158872       , l_array_source_38
158873       , l_array_source_38_meaning
158874       LIMIT l_rows;
158875 --
158876 IF (C_LEVEL_EVENT >= g_log_level) THEN
158877    trace
158878    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
158879    ,p_level    => C_LEVEL_EVENT
158880    ,p_module   => l_log_module);
158881 END IF;
158882 --
158883 EXIT WHEN l_array_entity_id.COUNT = 0;
158884 
158885 -- initialize arrays
158886 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
158887 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
158888 
158889 --
158890 -- Bug 4458708
158891 --
158892 XLA_AE_LINES_PKG.g_LineNumber := 0;
158893 
158894 
158895 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
158896 g_last_hdr_idx := l_array_event_id.LAST;
158897 --
158898 -- loop for the headers. Each iteration is for each header extract row
158899 -- fetched in header cursor
158900 --
158901 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
158902 
158903 --
158904 -- set event info as cache for other routines to refer event attributes
158905 --
158906 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
158907    (p_application_id           => p_application_id
158908    ,p_primary_ledger_id        => p_primary_ledger_id
158909    ,p_base_ledger_id           => p_base_ledger_id
158910    ,p_target_ledger_id         => p_target_ledger_id
158911    ,p_entity_id                => l_array_entity_id(hdr_idx)
158912    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
158913    ,p_entity_code              => l_array_entity_code(hdr_idx)
158914    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
158915    ,p_event_id                 => l_array_event_id(hdr_idx)
158916    ,p_event_class_code         => l_array_class_code(hdr_idx)
158917    ,p_event_type_code          => l_array_event_type(hdr_idx)
158918    ,p_event_number             => l_array_event_number(hdr_idx)
158919    ,p_event_date               => l_array_event_date(hdr_idx)
158920    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
158921    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
158922    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
158923    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
158924    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
158925    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
158926    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
158927    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
158928    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
158929    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
158930    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
158931    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
158932    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
158933    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
158934    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
158935 
158936 --
158937 -- set the status of entry to C_VALID (0)
158938 --
158939 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
158940 
158941 --
158942 -- initialize a row for ae header
158943 --
158944 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
158945 
158946 l_event_id := l_array_event_id(hdr_idx);
158947 
158948 --
158949 -- storing the hdr_idx for event. May be used by line cursor.
158950 --
158951 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
158952 
158953 --
158954 -- store sources from header extract. This can be improved to
158955 -- store only those sources from header extract that may be used in lines
158956 --
158957 
158958 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
158959 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
158960 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
158961 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
158962 
158963 --
158964 -- initilaize the status of ae headers for diffrent balance types
158965 -- the status is initialised to C_NOT_CREATED (2)
158966 --
158967 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
158968 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
158969 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
158970 
158971 --
158972 -- call api to validate and store accounting attributes for header
158973 --
158974 
158975 ------------------------------------------------------------
158976 -- Accrual Reversal : to get date for Standard Source (NONE)
158977 ------------------------------------------------------------
158978 l_acc_rev_gl_date_source := NULL;
158979 
158980      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
158981       l_rec_acct_attrs.array_date_value(1) := 
158982 xla_ae_sources_pkg.GetSystemSourceDate(
158983    p_source_code           => 'XLA_REFERENCE_DATE_1'
158984  , p_source_type_code      => 'Y'
158985  , p_source_application_id =>  602
158986 );
158987      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
158988       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
158989 
158990 
158991 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
158992 
158993 XLA_AE_HEADER_PKG.SetJeCategoryName;
158994 
158995 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
158996 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
158997 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
158998 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
158999 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
159000 
159001 
159002 -- No header level analytical criteria
159003 
159004 --
159005 --accounting attribute enhancement, bug 3612931
159006 --
159007 l_trx_reversal_source := SUBSTR(NULL, 1,30);
159008 
159009 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
159010    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
159011 
159012    xla_accounting_err_pkg.build_message
159013       (p_appli_s_name            => 'XLA'
159014       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
159015       ,p_token_1                 => 'ACCT_ATTR_NAME'
159016       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
159017       ,p_token_2                 => 'PRODUCT_NAME'
159018       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
159019       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
159020       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
159021       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
159022 
159023 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
159024    --
159025    -- following sets the accounting attributes needed to reverse
159026    -- accounting for a distributeion
159027    --
159028    xla_ae_lines_pkg.SetTrxReversalAttrs
159029       (p_event_id              => l_event_id
159030       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
159031       ,p_trx_reversal_source   => l_trx_reversal_source);
159032 
159033 END IF;
159034 
159035 
159036 ----------------------------------------------------------------
159037 -- 4262811 -  update the header statuses to invalid in need be
159038 ----------------------------------------------------------------
159039 --
159040 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
159041 
159042 
159043   -----------------------------------------------
159044   -- No accrual reversal for the event class/type
159045   -----------------------------------------------
159046 ----------------------------------------------------------------
159047 
159048 --
159049 -- this ends the header loop iteration for one bulk fetch
159050 --
159051 END LOOP;
159052 
159053 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
159054 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
159055 
159056 --
159057 -- insert dummy rows into lines gt table that were created due to
159058 -- transaction reversals
159059 --
159060 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
159061    l_result := XLA_AE_LINES_PKG.InsertLines;
159062 END IF;
159063 
159064 --
159065 -- reset the temp_line_num for each set of events fetched from header
159066 -- cursor rather than doing it for each new event in line cursor
159067 -- Bug 3939231
159068 --
159069 xla_ae_lines_pkg.g_temp_line_num := 0;
159070 
159071 
159072 
159073 --
159074 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
159075 --
159076 --
159077 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159078 
159079       trace
159080          (p_msg      => 'SQL - FETCH line_cur'
159081          ,p_level    => C_LEVEL_STATEMENT
159082          ,p_module   => l_log_module);
159083 
159084 END IF;
159085 --
159086 --
159087 LOOP
159088   --
159089   FETCH line_cur BULK COLLECT INTO
159090         l_array_entity_id
159091       , l_array_legal_entity_id
159092       , l_array_entity_code
159093       , l_array_transaction_num
159094       , l_array_event_id
159095       , l_array_class_code
159096       , l_array_event_type
159097       , l_array_event_number
159098       , l_array_event_date
159099       , l_array_transaction_date
159100       , l_array_reference_num_1
159101       , l_array_reference_num_2
159102       , l_array_reference_num_3
159103       , l_array_reference_num_4
159104       , l_array_reference_char_1
159105       , l_array_reference_char_2
159106       , l_array_reference_char_3
159107       , l_array_reference_char_4
159108       , l_array_reference_date_1
159109       , l_array_reference_date_2
159110       , l_array_reference_date_3
159111       , l_array_reference_date_4
159112       , l_array_event_created_by
159113       , l_array_budgetary_control_flag
159114       , l_array_extract_line_num 
159115       , l_array_source_4
159116       , l_array_source_11
159117       , l_array_source_15
159118       , l_array_source_18
159119       , l_array_source_19
159120       , l_array_source_20
159121       , l_array_source_21
159122       , l_array_source_22
159123       , l_array_source_24
159124       LIMIT l_rows;
159125 
159126   --
159127   IF (C_LEVEL_EVENT >= g_log_level) THEN
159128             trace
159129                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
159130                ,p_level    => C_LEVEL_EVENT
159131                ,p_module   => l_log_module);
159132   END IF;
159133   --
159134   EXIT WHEN l_array_entity_id.count = 0;
159135 
159136   XLA_AE_LINES_PKG.g_rec_lines := null;
159137 
159138 --
159139 -- Bug 4458708
159140 --
159141 XLA_AE_LINES_PKG.g_LineNumber := 0;
159142 --
159143 --
159144 
159145 FOR Idx IN 1..l_array_event_id.count LOOP
159146    --
159147    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
159148    --
159149    l_event_id := l_array_event_id(idx);  -- 5648433
159150 
159151    --
159152    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
159153    --
159154 
159155    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
159156              (g_array_event(l_event_id).array_value_num('header_index'))
159157          ,'N'
159158          ) <> 'Y'
159159    THEN
159160       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159161          trace
159162             (p_msg      => 'Trancaction revesal option is not Y '
159163             ,p_level    => C_LEVEL_STATEMENT
159164             ,p_module   => l_log_module);
159165       END IF;
159166 
159167 --
159168 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
159169 --
159170 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
159171 --
159172 -- set event info as cache for other routines to refer event attributes
159173 --
159174 
159175 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
159176    l_previous_event_id := l_event_id;
159177 
159178    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
159179       (p_application_id           => p_application_id
159180       ,p_primary_ledger_id        => p_primary_ledger_id
159181       ,p_base_ledger_id           => p_base_ledger_id
159182       ,p_target_ledger_id         => p_target_ledger_id
159183       ,p_entity_id                => l_array_entity_id(Idx)
159184       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
159185       ,p_entity_code              => l_array_entity_code(Idx)
159186       ,p_transaction_num          => l_array_transaction_num(Idx)
159187       ,p_event_id                 => l_array_event_id(Idx)
159188       ,p_event_class_code         => l_array_class_code(Idx)
159189       ,p_event_type_code          => l_array_event_type(Idx)
159190       ,p_event_number             => l_array_event_number(Idx)
159191       ,p_event_date               => l_array_event_date(Idx)
159192       ,p_transaction_date         => l_array_transaction_date(Idx)
159193       ,p_reference_num_1          => l_array_reference_num_1(Idx)
159194       ,p_reference_num_2          => l_array_reference_num_2(Idx)
159195       ,p_reference_num_3          => l_array_reference_num_3(Idx)
159196       ,p_reference_num_4          => l_array_reference_num_4(Idx)
159197       ,p_reference_char_1         => l_array_reference_char_1(Idx)
159198       ,p_reference_char_2         => l_array_reference_char_2(Idx)
159199       ,p_reference_char_3         => l_array_reference_char_3(Idx)
159200       ,p_reference_char_4         => l_array_reference_char_4(Idx)
159201       ,p_reference_date_1         => l_array_reference_date_1(Idx)
159202       ,p_reference_date_2         => l_array_reference_date_2(Idx)
159203       ,p_reference_date_3         => l_array_reference_date_3(Idx)
159204       ,p_reference_date_4         => l_array_reference_date_4(Idx)
159205       ,p_event_created_by         => l_array_event_created_by(Idx)
159206       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
159207        --
159208 END IF;
159209 
159210 
159211 
159212 --
159213 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
159214 
159215 l_acct_reversal_source := SUBSTR(NULL, 1,30);
159216 
159217 IF l_continue_with_lines THEN
159218    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
159219       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
159220 
159221       xla_accounting_err_pkg.build_message
159222          (p_appli_s_name            => 'XLA'
159223          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
159224          ,p_token_1                 => 'LINE_NUMBER'
159225          ,p_value_1                 => l_array_extract_line_num(Idx)
159226          ,p_token_2                 => 'PRODUCT_NAME'
159227          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
159228          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
159229          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
159230          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
159231 
159232    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
159233       --
159234       -- following sets the accounting attributes needed to reverse
159235       -- accounting for a distributeion
159236       --
159237 
159238       --
159239       -- 5217187
159240       --
159241       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
159242       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
159243                                        g_array_event(l_event_id).array_value_num('header_index'));
159244       --
159245       --
159246 
159247       -- No reversal code generated
159248 
159249       xla_ae_lines_pkg.SetAcctReversalAttrs
159250          (p_event_id             => l_event_id
159251          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
159252          ,p_calculate_acctd_flag => l_calculate_acctd_flag
159253          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
159254    END IF;
159255 
159256    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
159257        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
159258 
159259 --
159260 AcctLineType_17 (
159261  p_application_id  => p_application_id
159262  ,p_event_id     => l_event_id
159263  ,p_calculate_acctd_flag => l_calculate_acctd_flag
159264  ,p_calculate_g_l_flag => l_calculate_g_l_flag
159265  ,p_actual_flag => l_actual_flag
159266  ,p_balance_type_code => l_balance_type_code
159267  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
159268  
159269  , p_source_4 => l_array_source_4(Idx)
159270  , p_source_11 => l_array_source_11(Idx)
159271  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
159272  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
159273  , p_source_15 => l_array_source_15(Idx)
159274  , p_source_18 => l_array_source_18(Idx)
159275  , p_source_19 => l_array_source_19(Idx)
159276  , p_source_20 => l_array_source_20(Idx)
159277  , p_source_21 => l_array_source_21(Idx)
159278  , p_source_22 => l_array_source_22(Idx)
159279  , p_source_24 => l_array_source_24(Idx)
159280  );
159281 If(l_balance_type_code = 'A') THEN
159282   l_actual_gain_loss_ref := l_gain_or_loss_ref;
159283 END IF;
159284 
159285 --
159286 
159287 
159288 --
159289 AcctLineType_92 (
159290  p_application_id  => p_application_id
159291  ,p_event_id     => l_event_id
159292  ,p_calculate_acctd_flag => l_calculate_acctd_flag
159293  ,p_calculate_g_l_flag => l_calculate_g_l_flag
159294  ,p_actual_flag => l_actual_flag
159295  ,p_balance_type_code => l_balance_type_code
159296  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
159297  
159298  , p_source_4 => l_array_source_4(Idx)
159299  , p_source_11 => l_array_source_11(Idx)
159300  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
159301  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
159302  , p_source_15 => l_array_source_15(Idx)
159303  , p_source_18 => l_array_source_18(Idx)
159304  , p_source_19 => l_array_source_19(Idx)
159305  , p_source_20 => l_array_source_20(Idx)
159306  , p_source_21 => l_array_source_21(Idx)
159307  , p_source_22 => l_array_source_22(Idx)
159308  , p_source_24 => l_array_source_24(Idx)
159309  );
159310 If(l_balance_type_code = 'A') THEN
159311   l_actual_gain_loss_ref := l_gain_or_loss_ref;
159312 END IF;
159313 
159314 --
159315 
159316 
159317 --
159318 AcctLineType_104 (
159319  p_application_id  => p_application_id
159320  ,p_event_id     => l_event_id
159321  ,p_calculate_acctd_flag => l_calculate_acctd_flag
159322  ,p_calculate_g_l_flag => l_calculate_g_l_flag
159323  ,p_actual_flag => l_actual_flag
159324  ,p_balance_type_code => l_balance_type_code
159325  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
159326  
159327  , p_source_4 => l_array_source_4(Idx)
159328  , p_source_11 => l_array_source_11(Idx)
159329  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
159330  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
159331  , p_source_15 => l_array_source_15(Idx)
159332  , p_source_18 => l_array_source_18(Idx)
159333  , p_source_19 => l_array_source_19(Idx)
159334  , p_source_20 => l_array_source_20(Idx)
159335  , p_source_21 => l_array_source_21(Idx)
159336  , p_source_22 => l_array_source_22(Idx)
159337  , p_source_24 => l_array_source_24(Idx)
159338  );
159339 If(l_balance_type_code = 'A') THEN
159340   l_actual_gain_loss_ref := l_gain_or_loss_ref;
159341 END IF;
159342 
159343 --
159344 
159345 
159346 --
159347 AcctLineType_115 (
159348  p_application_id  => p_application_id
159349  ,p_event_id     => l_event_id
159350  ,p_calculate_acctd_flag => l_calculate_acctd_flag
159351  ,p_calculate_g_l_flag => l_calculate_g_l_flag
159352  ,p_actual_flag => l_actual_flag
159353  ,p_balance_type_code => l_balance_type_code
159354  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
159355  
159356  , p_source_4 => l_array_source_4(Idx)
159357  , p_source_11 => l_array_source_11(Idx)
159358  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
159359  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
159360  , p_source_15 => l_array_source_15(Idx)
159361  , p_source_18 => l_array_source_18(Idx)
159362  , p_source_19 => l_array_source_19(Idx)
159363  , p_source_20 => l_array_source_20(Idx)
159364  , p_source_21 => l_array_source_21(Idx)
159365  , p_source_22 => l_array_source_22(Idx)
159366  , p_source_24 => l_array_source_24(Idx)
159367  );
159368 If(l_balance_type_code = 'A') THEN
159369   l_actual_gain_loss_ref := l_gain_or_loss_ref;
159370 END IF;
159371 
159372 --
159373 
159374 
159375 --
159376 AcctLineType_150 (
159377  p_application_id  => p_application_id
159378  ,p_event_id     => l_event_id
159379  ,p_calculate_acctd_flag => l_calculate_acctd_flag
159380  ,p_calculate_g_l_flag => l_calculate_g_l_flag
159381  ,p_actual_flag => l_actual_flag
159382  ,p_balance_type_code => l_balance_type_code
159383  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
159384  
159385  , p_source_4 => l_array_source_4(Idx)
159386  , p_source_11 => l_array_source_11(Idx)
159387  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
159388  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
159389  , p_source_15 => l_array_source_15(Idx)
159390  , p_source_18 => l_array_source_18(Idx)
159391  , p_source_19 => l_array_source_19(Idx)
159392  , p_source_20 => l_array_source_20(Idx)
159393  , p_source_21 => l_array_source_21(Idx)
159394  , p_source_22 => l_array_source_22(Idx)
159395  , p_source_24 => l_array_source_24(Idx)
159396  );
159397 If(l_balance_type_code = 'A') THEN
159398   l_actual_gain_loss_ref := l_gain_or_loss_ref;
159399 END IF;
159400 
159401 --
159402 
159403 
159404 --
159405 AcctLineType_185 (
159406  p_application_id  => p_application_id
159407  ,p_event_id     => l_event_id
159408  ,p_calculate_acctd_flag => l_calculate_acctd_flag
159409  ,p_calculate_g_l_flag => l_calculate_g_l_flag
159410  ,p_actual_flag => l_actual_flag
159411  ,p_balance_type_code => l_balance_type_code
159412  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
159413  
159414  , p_source_4 => l_array_source_4(Idx)
159415  , p_source_11 => l_array_source_11(Idx)
159416  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
159417  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
159418  , p_source_15 => l_array_source_15(Idx)
159419  , p_source_18 => l_array_source_18(Idx)
159420  , p_source_19 => l_array_source_19(Idx)
159421  , p_source_20 => l_array_source_20(Idx)
159422  , p_source_21 => l_array_source_21(Idx)
159423  , p_source_22 => l_array_source_22(Idx)
159424  , p_source_24 => l_array_source_24(Idx)
159425  );
159426 If(l_balance_type_code = 'A') THEN
159427   l_actual_gain_loss_ref := l_gain_or_loss_ref;
159428 END IF;
159429 
159430 --
159431 
159432       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
159433       -- or secondary ledger that has different currency with primary
159434       -- or alc that is calculated by sla
159435       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
159436             (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'))
159437 
159438 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
159439 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
159440           AND (l_actual_flag = 'A')) THEN
159441         XLA_AE_LINES_PKG.CreateGainOrLossLines(
159442           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
159443          ,p_application_id   => p_application_id
159444          ,p_amb_context_code => 'DEFAULT'
159445          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
159446          ,p_event_class_code => C_EVENT_CLASS_CODE
159447          ,p_event_type_code  => C_EVENT_TYPE_CODE
159448          
159449          ,p_gain_ccid        => -1
159450          ,p_loss_ccid        => -1
159451 
159452          ,p_actual_flag      => l_actual_flag
159453          ,p_enc_flag         => null
159454          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
159455          ,p_enc_g_l_ref      => null
159456          );
159457       END IF;
159458    END IF;
159459 END IF;
159460 
159461    ELSE
159462       --
159463       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
159464       --
159465       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159466          trace
159467             (p_msg      => 'Trancaction revesal option is Y'
159468             ,p_level    => C_LEVEL_STATEMENT
159469             ,p_module   => l_log_module);
159470       END IF;
159471    END IF;
159472 
159473 END LOOP;
159474 l_result := XLA_AE_LINES_PKG.InsertLines ;
159475 end loop;
159476 close line_cur;
159477 
159478 
159479 --
159480 -- insert headers into xla_ae_headers_gt table
159481 --
159482 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
159483 
159484 -- insert into errors table here.
159485 
159486 END LOOP;
159487 
159488 --
159489 -- 4865292
159490 --
159491 -- Compare g_hdr_extract_count with event count in
159492 -- CreateHeadersAndLines.
159493 --
159494 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
159495 
159496 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159497    trace (p_msg     => '# rows extracted from header extract objects '
159498                     || ' (running total): '
159499                     || g_hdr_extract_count
159500          ,p_level   => C_LEVEL_STATEMENT
159501          ,p_module  => l_log_module);
159502 END IF;
159503 
159504 CLOSE header_cur;
159505 --
159506 
159507 --
159508 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
159509    trace
159510       (p_msg      => 'END of EventClass_270'
159511       ,p_level    => C_LEVEL_PROCEDURE
159512       ,p_module   => l_log_module);
159513 END IF;
159514 --
159515 RETURN l_result;
159516 EXCEPTION
159517 WHEN xla_exceptions_pkg.application_exception THEN
159518    
159519 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
159520 
159521    
159522 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
159523 
159524    RAISE;
159525 
159526 WHEN NO_DATA_FOUND THEN
159527 
159528 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
159529 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
159530 
159531 FOR header_record IN header_cur
159532 LOOP
159533     l_array_header_events(header_record.event_id) := header_record.event_id;
159534 END LOOP;
159535 
159536 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
159537 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
159538 
159539 fnd_file.put_line(fnd_file.LOG, '                    ');
159540 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
159541 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
159542 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
159543 
159544 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
159545 LOOP
159546 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
159547 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
159548         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
159549 	END IF;
159550 END LOOP;
159551 
159552 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
159553 fnd_file.put_line(fnd_file.LOG, '                    ');
159554 
159555 
159556 xla_exceptions_pkg.raise_message
159557       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_270');
159558 
159559 
159560 WHEN OTHERS THEN
159561    xla_exceptions_pkg.raise_message
159562       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_270');
159563 END EventClass_270;
159564 --
159565 
159566 ---------------------------------------
159567 --
159568 -- PRIVATE PROCEDURE
159569 --         insert_sources_271
159570 --
159571 ----------------------------------------
159572 --
159573 PROCEDURE insert_sources_271(
159574                                 p_target_ledger_id       IN NUMBER
159575                               , p_language               IN VARCHAR2
159576                               , p_sla_ledger_id          IN NUMBER
159577                               , p_pad_start_date         IN DATE
159578                               , p_pad_end_date           IN DATE
159579                          )
159580 IS
159581 
159582 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INTRAORG_TXFR_ALL';
159583 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'INTRAORG_TXFR';
159584 p_apps_owner                   VARCHAR2(30);
159585 l_log_module                   VARCHAR2(240);
159586 BEGIN
159587 IF g_log_enabled THEN
159588       l_log_module := C_DEFAULT_MODULE||'.insert_sources_271';
159589 END IF;
159590 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
159591 
159592       trace
159593          (p_msg      => 'BEGIN of insert_sources_271'
159594          ,p_level    => C_LEVEL_PROCEDURE
159595          ,p_module   => l_log_module);
159596 
159597 END IF;
159598 
159599 -- select APPS owner
159600 SELECT oracle_username
159601   INTO p_apps_owner
159602   FROM fnd_oracle_userid
159603  WHERE read_only_flag = 'U'
159604 ;
159605 
159606 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159607       trace
159608          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
159609                         ' - p_language = '||p_language||
159610                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
159611                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
159612                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
159613                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
159614          ,p_level    => C_LEVEL_STATEMENT
159615          ,p_module   => l_log_module);
159616 END IF;
159617 
159618 
159619 --
159620 INSERT INTO xla_diag_sources --hdr2
159621 (
159622         event_id
159623       , ledger_id
159624       , sla_ledger_id
159625       , description_language
159626       , object_name
159627       , object_type_code
159628       , line_number
159629       , source_application_id
159630       , source_type_code
159631       , source_code
159632       , source_value
159633       , source_meaning
159634       , created_by
159635       , creation_date
159636       , last_update_date
159637       , last_updated_by
159638       , last_update_login
159639       , program_update_date
159640       , program_application_id
159641       , program_id
159642       , request_id
159643 )
159644 SELECT
159645         event_id
159646       , p_target_ledger_id
159647       , p_sla_ledger_id
159648       , p_language
159649       , object_name
159650       , object_type_code
159651       , line_number
159652       , source_application_id
159653       , source_type_code
159654       , source_code
159655       , SUBSTR(source_value ,1,1996)
159656       , SUBSTR(source_meaning ,1,200)
159657       , xla_environment_pkg.g_Usr_Id
159658       , TRUNC(SYSDATE)
159659       , TRUNC(SYSDATE)
159660       , xla_environment_pkg.g_Usr_Id
159661       , xla_environment_pkg.g_Login_Id
159662       , TRUNC(SYSDATE)
159663       , xla_environment_pkg.g_Prog_Appl_Id
159664       , xla_environment_pkg.g_Prog_Id
159665       , xla_environment_pkg.g_Req_Id
159666   FROM (
159667        SELECT xet.event_id                  event_id
159668             , 0                          line_number
159669             , CASE r
159670                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
159671                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
159672                 
159673                ELSE null
159674               END                           object_name
159675             , CASE r
159676                 WHEN 1 THEN 'HEADER' 
159677                 WHEN 2 THEN 'HEADER' 
159678                 
159679                 ELSE null
159680               END                           object_type_code
159681             , CASE r
159682                 WHEN 1 THEN '707' 
159683                 WHEN 2 THEN '707' 
159684                 
159685                 ELSE null
159686               END                           source_application_id
159687             , 'S'             source_type_code
159688             , CASE r
159689                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
159690                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
159691                 
159692                 ELSE null
159693               END                           source_code
159694             , CASE r
159695                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
159696                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
159697                 
159698                 ELSE null
159699               END                           source_value
159700             , CASE r
159701                 WHEN 1 THEN fvl12.meaning
159702                 WHEN 2 THEN fvl38.meaning
159703                 
159704                 ELSE null
159705               END               source_meaning
159706          FROM xla_events_gt     xet  
159707       , CST_XLA_INV_HEADERS_V  h1
159708   , fnd_lookup_values    fvl12
159709   , fnd_lookup_values    fvl38
159710              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
159711          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
159712            AND xet.event_class_code = C_EVENT_CLASS_CODE
159713               AND h1.event_id = xet.event_id
159714    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
159715   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
159716   AND fvl12.view_application_id(+) = 700
159717   AND fvl12.language(+)            = USERENV('LANG')
159718      AND fvl38.lookup_type(+)         = 'YES_NO'
159719   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
159720   AND fvl38.view_application_id(+) = 0
159721   AND fvl38.language(+)            = USERENV('LANG')
159722   
159723 )
159724 ;
159725 --
159726 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159727 
159728       trace
159729          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
159730          ,p_level    => C_LEVEL_STATEMENT
159731          ,p_module   => l_log_module);
159732 
159733 END IF;
159734 --
159735 
159736 
159737 
159738 --
159739 INSERT INTO xla_diag_sources  --line2
159740 (
159741         event_id
159742       , ledger_id
159743       , sla_ledger_id
159744       , description_language
159745       , object_name
159746       , object_type_code
159747       , line_number
159748       , source_application_id
159749       , source_type_code
159750       , source_code
159751       , source_value
159752       , source_meaning
159753       , created_by
159754       , creation_date
159755       , last_update_date
159756       , last_updated_by
159757       , last_update_login
159758       , program_update_date
159759       , program_application_id
159760       , program_id
159761       , request_id
159762 )
159763 SELECT  event_id
159764       , p_target_ledger_id
159765       , p_sla_ledger_id
159766       , p_language
159767       , object_name
159768       , object_type_code
159769       , line_number
159770       , source_application_id
159771       , source_type_code
159772       , source_code
159773       , SUBSTR(source_value,1,1996)
159774       , SUBSTR(source_meaning ,1,200)
159775       , xla_environment_pkg.g_Usr_Id
159776       , TRUNC(SYSDATE)
159777       , TRUNC(SYSDATE)
159778       , xla_environment_pkg.g_Usr_Id
159779       , xla_environment_pkg.g_Login_Id
159780       , TRUNC(SYSDATE)
159781       , xla_environment_pkg.g_Prog_Appl_Id
159782       , xla_environment_pkg.g_Prog_Id
159783       , xla_environment_pkg.g_Req_Id
159784   FROM (
159785        SELECT xet.event_id                  event_id
159786             , l2.line_number                 line_number
159787             , CASE r
159788                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
159789                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
159790                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
159791                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
159792                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
159793                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
159794                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
159795                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
159796                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
159797                 
159798                ELSE null
159799               END                           object_name
159800             , CASE r
159801                 WHEN 1 THEN 'LINE' 
159802                 WHEN 2 THEN 'LINE' 
159803                 WHEN 3 THEN 'LINE' 
159804                 WHEN 4 THEN 'LINE' 
159805                 WHEN 5 THEN 'LINE' 
159806                 WHEN 6 THEN 'LINE' 
159807                 WHEN 7 THEN 'LINE' 
159808                 WHEN 8 THEN 'LINE' 
159809                 WHEN 9 THEN 'LINE' 
159810                 
159811                 ELSE null
159812               END                           object_type_code
159813             , CASE r
159814                 WHEN 1 THEN '707' 
159815                 WHEN 2 THEN '707' 
159816                 WHEN 3 THEN '707' 
159817                 WHEN 4 THEN '707' 
159818                 WHEN 5 THEN '707' 
159819                 WHEN 6 THEN '707' 
159820                 WHEN 7 THEN '707' 
159821                 WHEN 8 THEN '707' 
159822                 WHEN 9 THEN '707' 
159823                 
159824                 ELSE null
159825               END                           source_application_id
159826             , 'S'             source_type_code
159827             , CASE r
159828                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
159829                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
159830                 WHEN 3 THEN 'CURRENCY_CODE' 
159831                 WHEN 4 THEN 'ENTERED_AMOUNT' 
159832                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
159833                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
159834                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
159835                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
159836                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
159837                 
159838                 ELSE null
159839               END                           source_code
159840             , CASE r
159841                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
159842                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
159843                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
159844                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
159845                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
159846                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
159847                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
159848                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
159849                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
159850                 
159851                 ELSE null
159852               END                           source_value
159853             , null              source_meaning
159854          FROM  xla_events_gt     xet  
159855         , CST_XLA_INV_LINES_V  l2
159856             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
159857         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
159858           AND xet.event_class_code = C_EVENT_CLASS_CODE
159859             AND l2.event_id          = xet.event_id
159860 
159861 )
159862 ;
159863 --
159864 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159865 
159866       trace
159867          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
159868          ,p_level    => C_LEVEL_STATEMENT
159869          ,p_module   => l_log_module);
159870 
159871 END IF;
159872 
159873 
159874 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
159875       trace
159876          (p_msg      => 'END of insert_sources_271'
159877          ,p_level    => C_LEVEL_PROCEDURE
159878          ,p_module   => l_log_module);
159879 END IF;
159880 EXCEPTION
159881   WHEN xla_exceptions_pkg.application_exception THEN
159882       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
159883             trace
159884                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
159885                ,p_level    => C_LEVEL_EXCEPTION
159886                ,p_module   => l_log_module);
159887       END IF;
159888       RAISE;
159889   WHEN OTHERS THEN
159890       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
159891             trace
159892                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
159893                ,p_level    => C_LEVEL_EXCEPTION
159894                ,p_module   => l_log_module);
159895        END IF;
159896        xla_exceptions_pkg.raise_message
159897            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_271');
159898 END insert_sources_271;
159899 --
159900 
159901 ---------------------------------------
159902 --
159903 -- PRIVATE FUNCTION
159904 --         EventClass_271
159905 --
159906 ----------------------------------------
159907 --
159908 FUNCTION EventClass_271
159909        (p_application_id         IN NUMBER
159910        ,p_base_ledger_id         IN NUMBER
159911        ,p_target_ledger_id       IN NUMBER
159912        ,p_language               IN VARCHAR2
159913        ,p_currency_code          IN VARCHAR2
159914        ,p_sla_ledger_id          IN NUMBER
159915        ,p_pad_start_date         IN DATE
159916        ,p_pad_end_date           IN DATE
159917        ,p_primary_ledger_id      IN NUMBER)
159918 RETURN BOOLEAN IS
159919 --
159920 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INTRAORG_TXFR_ALL';
159921 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'INTRAORG_TXFR';
159922 
159923 l_calculate_acctd_flag   VARCHAR2(1) :='N';
159924 l_calculate_g_l_flag     VARCHAR2(1) :='N';
159925 --
159926 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159927 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159928 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
159929 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
159930 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159931 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
159932 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
159933 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159934 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159935 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159936 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159937 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159938 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159939 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159940 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
159941 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
159942 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
159943 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
159944 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159945 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159946 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159947 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159948 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
159949 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
159950 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
159951 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
159952 
159953 l_event_id                             NUMBER;
159954 l_previous_event_id                    NUMBER;
159955 l_first_event_id                       NUMBER;
159956 l_last_event_id                        NUMBER;
159957 
159958 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
159959 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
159960 --
159961 --
159962 l_result                    BOOLEAN := TRUE;
159963 l_rows                      NUMBER  := 1000;
159964 l_event_type_name           VARCHAR2(80) := 'All';
159965 l_event_class_name          VARCHAR2(80) := 'Intraorg Transfer';
159966 l_description               VARCHAR2(4000);
159967 l_transaction_reversal      NUMBER;
159968 l_ae_header_id              NUMBER;
159969 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
159970 l_log_module                VARCHAR2(240);
159971 --
159972 l_acct_reversal_source      VARCHAR2(30);
159973 l_trx_reversal_source       VARCHAR2(30);
159974 
159975 l_continue_with_lines       BOOLEAN := TRUE;
159976 --
159977 l_acc_rev_gl_date_source    DATE;                      -- 4262811
159978 --
159979 type t_array_event_id is table of number index by binary_integer;
159980 
159981 l_rec_array_event                    t_rec_array_event;
159982 l_null_rec_array_event               t_rec_array_event;
159983 l_array_ae_header_id                 xla_number_array_type;
159984 l_actual_flag                        VARCHAR2(1) := NULL;
159985 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
159986 l_balance_type_code                  VARCHAR2(1) :=NULL;
159987 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
159988 
159989 --
159990 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
159991 --
159992 
159993 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
159994 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
159995 
159996 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
159997 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
159998 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
159999 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
160000 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
160001 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
160002 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
160003 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
160004 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
160005 
160006 l_array_source_12              t_array_source_12;
160007 l_array_source_12_meaning      t_array_lookup_meaning;
160008 l_array_source_38              t_array_source_38;
160009 l_array_source_38_meaning      t_array_lookup_meaning;
160010 
160011 l_array_source_4      t_array_source_4;
160012 l_array_source_11      t_array_source_11;
160013 l_array_source_15      t_array_source_15;
160014 l_array_source_18      t_array_source_18;
160015 l_array_source_19      t_array_source_19;
160016 l_array_source_20      t_array_source_20;
160017 l_array_source_21      t_array_source_21;
160018 l_array_source_22      t_array_source_22;
160019 l_array_source_24      t_array_source_24;
160020 
160021 --
160022 CURSOR header_cur
160023 IS
160024 SELECT /*+ leading(xet) cardinality(xet,1) */
160025 -- Event Class Code: INTRAORG_TXFR
160026     xet.entity_id
160027    ,xet.legal_entity_id
160028    ,xet.entity_code
160029    ,xet.transaction_number
160030    ,xet.event_id
160031    ,xet.event_class_code
160032    ,xet.event_type_code
160033    ,xet.event_number
160034    ,xet.event_date
160035    ,xet.transaction_date
160036    ,xet.reference_num_1
160037    ,xet.reference_num_2
160038    ,xet.reference_num_3
160039    ,xet.reference_num_4
160040    ,xet.reference_char_1
160041    ,xet.reference_char_2
160042    ,xet.reference_char_3
160043    ,xet.reference_char_4
160044    ,xet.reference_date_1
160045    ,xet.reference_date_2
160046    ,xet.reference_date_3
160047    ,xet.reference_date_4
160048    ,xet.event_created_by
160049    ,xet.budgetary_control_flag 
160050   , h1.DISTRIBUTION_TYPE    source_12
160051   , fvl12.meaning   source_12_meaning
160052   , h1.TRANSFER_TO_GL_INDICATOR    source_38
160053   , fvl38.meaning   source_38_meaning
160054   FROM xla_events_gt     xet 
160055   , CST_XLA_INV_HEADERS_V  h1
160056   , fnd_lookup_values    fvl12
160057   , fnd_lookup_values    fvl38
160058  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
160059    and xet.event_class_code = C_EVENT_CLASS_CODE
160060    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
160061    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
160062   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
160063   AND fvl12.view_application_id(+) = 700
160064   AND fvl12.language(+)            = USERENV('LANG')
160065      AND fvl38.lookup_type(+)         = 'YES_NO'
160066   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
160067   AND fvl38.view_application_id(+) = 0
160068   AND fvl38.language(+)            = USERENV('LANG')
160069   
160070  ORDER BY event_id
160071 ;
160072 
160073 
160074 --
160075 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
160076 IS
160077 SELECT  /*+ leading(xet) cardinality(xet,1) */
160078 -- Event Class Code: INTRAORG_TXFR
160079     xet.entity_id
160080    ,xet.legal_entity_id
160081    ,xet.entity_code
160082    ,xet.transaction_number
160083    ,xet.event_id
160084    ,xet.event_class_code
160085    ,xet.event_type_code
160086    ,xet.event_number
160087    ,xet.event_date
160088    ,xet.transaction_date
160089    ,xet.reference_num_1
160090    ,xet.reference_num_2
160091    ,xet.reference_num_3
160092    ,xet.reference_num_4
160093    ,xet.reference_char_1
160094    ,xet.reference_char_2
160095    ,xet.reference_char_3
160096    ,xet.reference_char_4
160097    ,xet.reference_date_1
160098    ,xet.reference_date_2
160099    ,xet.reference_date_3
160100    ,xet.reference_date_4
160101    ,xet.event_created_by
160102    ,xet.budgetary_control_flag
160103  , l2.LINE_NUMBER  
160104   , l2.CODE_COMBINATION_ID    source_4
160105   , l2.DISTRIBUTION_IDENTIFIER    source_11
160106   , l2.CURRENCY_CODE    source_15
160107   , l2.ENTERED_AMOUNT    source_18
160108   , l2.CURRENCY_CONVERSION_DATE    source_19
160109   , l2.CURRENCY_CONVERSION_RATE    source_20
160110   , l2.CURRENCY_CONVERSION_TYPE    source_21
160111   , l2.ACCOUNTED_AMOUNT    source_22
160112   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
160113   FROM xla_events_gt     xet 
160114   , CST_XLA_INV_LINES_V  l2
160115  WHERE xet.event_id between x_first_event_id and x_last_event_id
160116    and xet.event_date between p_pad_start_date and p_pad_end_date
160117    and xet.event_class_code = C_EVENT_CLASS_CODE
160118    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
160119 ;
160120 
160121 --
160122 BEGIN
160123 IF g_log_enabled THEN
160124    l_log_module := C_DEFAULT_MODULE||'.EventClass_271';
160125 END IF;
160126 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
160127    trace
160128       (p_msg      => 'BEGIN of EventClass_271'
160129       ,p_level    => C_LEVEL_PROCEDURE
160130       ,p_module   => l_log_module);
160131 END IF;
160132 
160133 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160134    trace
160135       (p_msg      => 'p_application_id = '||p_application_id||
160136                      ' - p_base_ledger_id = '||p_base_ledger_id||
160137                      ' - p_target_ledger_id  = '||p_target_ledger_id||
160138                      ' - p_language = '||p_language||
160139                      ' - p_currency_code = '||p_currency_code||
160140                      ' - p_sla_ledger_id = '||p_sla_ledger_id
160141       ,p_level    => C_LEVEL_STATEMENT
160142       ,p_module   => l_log_module);
160143 END IF;
160144 --
160145 -- initialze arrays
160146 --
160147 g_array_event.DELETE;
160148 l_rec_array_event := l_null_rec_array_event;
160149 --
160150 --------------------------------------
160151 -- 4262811 Initialze MPA Line Number
160152 --------------------------------------
160153 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
160154 
160155 --
160156 
160157 --
160158 OPEN header_cur;
160159 --
160160 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160161    trace
160162    (p_msg      => 'SQL - FETCH header_cur'
160163    ,p_level    => C_LEVEL_STATEMENT
160164    ,p_module   => l_log_module);
160165 END IF;
160166 --
160167 LOOP
160168 FETCH header_cur BULK COLLECT INTO
160169         l_array_entity_id
160170       , l_array_legal_entity_id
160171       , l_array_entity_code
160172       , l_array_transaction_num
160173       , l_array_event_id
160174       , l_array_class_code
160175       , l_array_event_type
160176       , l_array_event_number
160177       , l_array_event_date
160178       , l_array_transaction_date
160179       , l_array_reference_num_1
160180       , l_array_reference_num_2
160181       , l_array_reference_num_3
160182       , l_array_reference_num_4
160183       , l_array_reference_char_1
160184       , l_array_reference_char_2
160185       , l_array_reference_char_3
160186       , l_array_reference_char_4
160187       , l_array_reference_date_1
160188       , l_array_reference_date_2
160189       , l_array_reference_date_3
160190       , l_array_reference_date_4
160191       , l_array_event_created_by
160192       , l_array_budgetary_control_flag 
160193       , l_array_source_12
160194       , l_array_source_12_meaning
160195       , l_array_source_38
160196       , l_array_source_38_meaning
160197       LIMIT l_rows;
160198 --
160199 IF (C_LEVEL_EVENT >= g_log_level) THEN
160200    trace
160201    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
160202    ,p_level    => C_LEVEL_EVENT
160203    ,p_module   => l_log_module);
160204 END IF;
160205 --
160206 EXIT WHEN l_array_entity_id.COUNT = 0;
160207 
160208 -- initialize arrays
160209 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
160210 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
160211 
160212 --
160213 -- Bug 4458708
160214 --
160215 XLA_AE_LINES_PKG.g_LineNumber := 0;
160216 
160217 
160218 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
160219 g_last_hdr_idx := l_array_event_id.LAST;
160220 --
160221 -- loop for the headers. Each iteration is for each header extract row
160222 -- fetched in header cursor
160223 --
160224 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
160225 
160226 --
160227 -- set event info as cache for other routines to refer event attributes
160228 --
160229 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
160230    (p_application_id           => p_application_id
160231    ,p_primary_ledger_id        => p_primary_ledger_id
160232    ,p_base_ledger_id           => p_base_ledger_id
160233    ,p_target_ledger_id         => p_target_ledger_id
160234    ,p_entity_id                => l_array_entity_id(hdr_idx)
160235    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
160236    ,p_entity_code              => l_array_entity_code(hdr_idx)
160237    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
160238    ,p_event_id                 => l_array_event_id(hdr_idx)
160239    ,p_event_class_code         => l_array_class_code(hdr_idx)
160240    ,p_event_type_code          => l_array_event_type(hdr_idx)
160241    ,p_event_number             => l_array_event_number(hdr_idx)
160242    ,p_event_date               => l_array_event_date(hdr_idx)
160243    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
160244    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
160245    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
160246    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
160247    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
160248    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
160249    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
160250    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
160251    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
160252    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
160253    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
160254    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
160255    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
160256    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
160257    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
160258 
160259 --
160260 -- set the status of entry to C_VALID (0)
160261 --
160262 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
160263 
160264 --
160265 -- initialize a row for ae header
160266 --
160267 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
160268 
160269 l_event_id := l_array_event_id(hdr_idx);
160270 
160271 --
160272 -- storing the hdr_idx for event. May be used by line cursor.
160273 --
160274 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
160275 
160276 --
160277 -- store sources from header extract. This can be improved to
160278 -- store only those sources from header extract that may be used in lines
160279 --
160280 
160281 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
160282 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
160283 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
160284 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
160285 
160286 --
160287 -- initilaize the status of ae headers for diffrent balance types
160288 -- the status is initialised to C_NOT_CREATED (2)
160289 --
160290 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
160291 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
160292 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
160293 
160294 --
160295 -- call api to validate and store accounting attributes for header
160296 --
160297 
160298 ------------------------------------------------------------
160299 -- Accrual Reversal : to get date for Standard Source (NONE)
160300 ------------------------------------------------------------
160301 l_acc_rev_gl_date_source := NULL;
160302 
160303      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
160304       l_rec_acct_attrs.array_date_value(1) := 
160305 xla_ae_sources_pkg.GetSystemSourceDate(
160306    p_source_code           => 'XLA_REFERENCE_DATE_1'
160307  , p_source_type_code      => 'Y'
160308  , p_source_application_id =>  602
160309 );
160310      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
160311       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
160312 
160313 
160314 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
160315 
160316 XLA_AE_HEADER_PKG.SetJeCategoryName;
160317 
160318 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
160319 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
160320 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
160321 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
160322 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
160323 
160324 
160325 -- No header level analytical criteria
160326 
160327 --
160328 --accounting attribute enhancement, bug 3612931
160329 --
160330 l_trx_reversal_source := SUBSTR(NULL, 1,30);
160331 
160332 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
160333    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
160334 
160335    xla_accounting_err_pkg.build_message
160336       (p_appli_s_name            => 'XLA'
160337       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
160338       ,p_token_1                 => 'ACCT_ATTR_NAME'
160339       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
160340       ,p_token_2                 => 'PRODUCT_NAME'
160341       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
160342       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
160343       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
160344       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
160345 
160346 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
160347    --
160348    -- following sets the accounting attributes needed to reverse
160349    -- accounting for a distributeion
160350    --
160351    xla_ae_lines_pkg.SetTrxReversalAttrs
160352       (p_event_id              => l_event_id
160353       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
160354       ,p_trx_reversal_source   => l_trx_reversal_source);
160355 
160356 END IF;
160357 
160358 
160359 ----------------------------------------------------------------
160360 -- 4262811 -  update the header statuses to invalid in need be
160361 ----------------------------------------------------------------
160362 --
160363 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
160364 
160365 
160366   -----------------------------------------------
160367   -- No accrual reversal for the event class/type
160368   -----------------------------------------------
160369 ----------------------------------------------------------------
160370 
160371 --
160372 -- this ends the header loop iteration for one bulk fetch
160373 --
160374 END LOOP;
160375 
160376 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
160377 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
160378 
160379 --
160380 -- insert dummy rows into lines gt table that were created due to
160381 -- transaction reversals
160382 --
160383 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
160384    l_result := XLA_AE_LINES_PKG.InsertLines;
160385 END IF;
160386 
160387 --
160388 -- reset the temp_line_num for each set of events fetched from header
160389 -- cursor rather than doing it for each new event in line cursor
160390 -- Bug 3939231
160391 --
160392 xla_ae_lines_pkg.g_temp_line_num := 0;
160393 
160394 
160395 
160396 --
160397 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
160398 --
160399 --
160400 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160401 
160402       trace
160403          (p_msg      => 'SQL - FETCH line_cur'
160404          ,p_level    => C_LEVEL_STATEMENT
160405          ,p_module   => l_log_module);
160406 
160407 END IF;
160408 --
160409 --
160410 LOOP
160411   --
160412   FETCH line_cur BULK COLLECT INTO
160413         l_array_entity_id
160414       , l_array_legal_entity_id
160415       , l_array_entity_code
160416       , l_array_transaction_num
160417       , l_array_event_id
160418       , l_array_class_code
160419       , l_array_event_type
160420       , l_array_event_number
160421       , l_array_event_date
160422       , l_array_transaction_date
160423       , l_array_reference_num_1
160424       , l_array_reference_num_2
160425       , l_array_reference_num_3
160426       , l_array_reference_num_4
160427       , l_array_reference_char_1
160428       , l_array_reference_char_2
160429       , l_array_reference_char_3
160430       , l_array_reference_char_4
160431       , l_array_reference_date_1
160432       , l_array_reference_date_2
160433       , l_array_reference_date_3
160434       , l_array_reference_date_4
160435       , l_array_event_created_by
160436       , l_array_budgetary_control_flag
160437       , l_array_extract_line_num 
160438       , l_array_source_4
160439       , l_array_source_11
160440       , l_array_source_15
160441       , l_array_source_18
160442       , l_array_source_19
160443       , l_array_source_20
160444       , l_array_source_21
160445       , l_array_source_22
160446       , l_array_source_24
160447       LIMIT l_rows;
160448 
160449   --
160450   IF (C_LEVEL_EVENT >= g_log_level) THEN
160451             trace
160452                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
160453                ,p_level    => C_LEVEL_EVENT
160454                ,p_module   => l_log_module);
160455   END IF;
160456   --
160457   EXIT WHEN l_array_entity_id.count = 0;
160458 
160459   XLA_AE_LINES_PKG.g_rec_lines := null;
160460 
160461 --
160462 -- Bug 4458708
160463 --
160464 XLA_AE_LINES_PKG.g_LineNumber := 0;
160465 --
160466 --
160467 
160468 FOR Idx IN 1..l_array_event_id.count LOOP
160469    --
160470    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
160471    --
160472    l_event_id := l_array_event_id(idx);  -- 5648433
160473 
160474    --
160475    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
160476    --
160477 
160478    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
160479              (g_array_event(l_event_id).array_value_num('header_index'))
160480          ,'N'
160481          ) <> 'Y'
160482    THEN
160483       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160484          trace
160485             (p_msg      => 'Trancaction revesal option is not Y '
160486             ,p_level    => C_LEVEL_STATEMENT
160487             ,p_module   => l_log_module);
160488       END IF;
160489 
160490 --
160491 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
160492 --
160493 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
160494 --
160495 -- set event info as cache for other routines to refer event attributes
160496 --
160497 
160498 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
160499    l_previous_event_id := l_event_id;
160500 
160501    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
160502       (p_application_id           => p_application_id
160503       ,p_primary_ledger_id        => p_primary_ledger_id
160504       ,p_base_ledger_id           => p_base_ledger_id
160505       ,p_target_ledger_id         => p_target_ledger_id
160506       ,p_entity_id                => l_array_entity_id(Idx)
160507       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
160508       ,p_entity_code              => l_array_entity_code(Idx)
160509       ,p_transaction_num          => l_array_transaction_num(Idx)
160510       ,p_event_id                 => l_array_event_id(Idx)
160511       ,p_event_class_code         => l_array_class_code(Idx)
160512       ,p_event_type_code          => l_array_event_type(Idx)
160513       ,p_event_number             => l_array_event_number(Idx)
160514       ,p_event_date               => l_array_event_date(Idx)
160515       ,p_transaction_date         => l_array_transaction_date(Idx)
160516       ,p_reference_num_1          => l_array_reference_num_1(Idx)
160517       ,p_reference_num_2          => l_array_reference_num_2(Idx)
160518       ,p_reference_num_3          => l_array_reference_num_3(Idx)
160519       ,p_reference_num_4          => l_array_reference_num_4(Idx)
160520       ,p_reference_char_1         => l_array_reference_char_1(Idx)
160521       ,p_reference_char_2         => l_array_reference_char_2(Idx)
160522       ,p_reference_char_3         => l_array_reference_char_3(Idx)
160523       ,p_reference_char_4         => l_array_reference_char_4(Idx)
160524       ,p_reference_date_1         => l_array_reference_date_1(Idx)
160525       ,p_reference_date_2         => l_array_reference_date_2(Idx)
160526       ,p_reference_date_3         => l_array_reference_date_3(Idx)
160527       ,p_reference_date_4         => l_array_reference_date_4(Idx)
160528       ,p_event_created_by         => l_array_event_created_by(Idx)
160529       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
160530        --
160531 END IF;
160532 
160533 
160534 
160535 --
160536 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
160537 
160538 l_acct_reversal_source := SUBSTR(NULL, 1,30);
160539 
160540 IF l_continue_with_lines THEN
160541    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
160542       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
160543 
160544       xla_accounting_err_pkg.build_message
160545          (p_appli_s_name            => 'XLA'
160546          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
160547          ,p_token_1                 => 'LINE_NUMBER'
160548          ,p_value_1                 => l_array_extract_line_num(Idx)
160549          ,p_token_2                 => 'PRODUCT_NAME'
160550          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
160551          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
160552          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
160553          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
160554 
160555    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
160556       --
160557       -- following sets the accounting attributes needed to reverse
160558       -- accounting for a distributeion
160559       --
160560 
160561       --
160562       -- 5217187
160563       --
160564       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
160565       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
160566                                        g_array_event(l_event_id).array_value_num('header_index'));
160567       --
160568       --
160569 
160570       -- No reversal code generated
160571 
160572       xla_ae_lines_pkg.SetAcctReversalAttrs
160573          (p_event_id             => l_event_id
160574          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
160575          ,p_calculate_acctd_flag => l_calculate_acctd_flag
160576          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
160577    END IF;
160578 
160579    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
160580        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
160581 
160582 --
160583 AcctLineType_31 (
160584  p_application_id  => p_application_id
160585  ,p_event_id     => l_event_id
160586  ,p_calculate_acctd_flag => l_calculate_acctd_flag
160587  ,p_calculate_g_l_flag => l_calculate_g_l_flag
160588  ,p_actual_flag => l_actual_flag
160589  ,p_balance_type_code => l_balance_type_code
160590  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
160591  
160592  , p_source_4 => l_array_source_4(Idx)
160593  , p_source_11 => l_array_source_11(Idx)
160594  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
160595  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
160596  , p_source_15 => l_array_source_15(Idx)
160597  , p_source_18 => l_array_source_18(Idx)
160598  , p_source_19 => l_array_source_19(Idx)
160599  , p_source_20 => l_array_source_20(Idx)
160600  , p_source_21 => l_array_source_21(Idx)
160601  , p_source_22 => l_array_source_22(Idx)
160602  , p_source_24 => l_array_source_24(Idx)
160603  );
160604 If(l_balance_type_code = 'A') THEN
160605   l_actual_gain_loss_ref := l_gain_or_loss_ref;
160606 END IF;
160607 
160608 --
160609 
160610 
160611 --
160612 AcctLineType_142 (
160613  p_application_id  => p_application_id
160614  ,p_event_id     => l_event_id
160615  ,p_calculate_acctd_flag => l_calculate_acctd_flag
160616  ,p_calculate_g_l_flag => l_calculate_g_l_flag
160617  ,p_actual_flag => l_actual_flag
160618  ,p_balance_type_code => l_balance_type_code
160619  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
160620  
160621  , p_source_4 => l_array_source_4(Idx)
160622  , p_source_11 => l_array_source_11(Idx)
160623  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
160624  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
160625  , p_source_15 => l_array_source_15(Idx)
160626  , p_source_18 => l_array_source_18(Idx)
160627  , p_source_19 => l_array_source_19(Idx)
160628  , p_source_20 => l_array_source_20(Idx)
160629  , p_source_21 => l_array_source_21(Idx)
160630  , p_source_22 => l_array_source_22(Idx)
160631  , p_source_24 => l_array_source_24(Idx)
160632  );
160633 If(l_balance_type_code = 'A') THEN
160634   l_actual_gain_loss_ref := l_gain_or_loss_ref;
160635 END IF;
160636 
160637 --
160638 
160639 
160640 --
160641 AcctLineType_198 (
160642  p_application_id  => p_application_id
160643  ,p_event_id     => l_event_id
160644  ,p_calculate_acctd_flag => l_calculate_acctd_flag
160645  ,p_calculate_g_l_flag => l_calculate_g_l_flag
160646  ,p_actual_flag => l_actual_flag
160647  ,p_balance_type_code => l_balance_type_code
160648  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
160649  
160650  , p_source_4 => l_array_source_4(Idx)
160651  , p_source_11 => l_array_source_11(Idx)
160652  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
160653  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
160654  , p_source_15 => l_array_source_15(Idx)
160655  , p_source_18 => l_array_source_18(Idx)
160656  , p_source_19 => l_array_source_19(Idx)
160657  , p_source_20 => l_array_source_20(Idx)
160658  , p_source_21 => l_array_source_21(Idx)
160659  , p_source_22 => l_array_source_22(Idx)
160660  , p_source_24 => l_array_source_24(Idx)
160661  );
160662 If(l_balance_type_code = 'A') THEN
160663   l_actual_gain_loss_ref := l_gain_or_loss_ref;
160664 END IF;
160665 
160666 --
160667 
160668       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
160669       -- or secondary ledger that has different currency with primary
160670       -- or alc that is calculated by sla
160671       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
160672             (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'))
160673 
160674 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
160675 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
160676           AND (l_actual_flag = 'A')) THEN
160677         XLA_AE_LINES_PKG.CreateGainOrLossLines(
160678           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
160679          ,p_application_id   => p_application_id
160680          ,p_amb_context_code => 'DEFAULT'
160681          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
160682          ,p_event_class_code => C_EVENT_CLASS_CODE
160683          ,p_event_type_code  => C_EVENT_TYPE_CODE
160684          
160685          ,p_gain_ccid        => -1
160686          ,p_loss_ccid        => -1
160687 
160688          ,p_actual_flag      => l_actual_flag
160689          ,p_enc_flag         => null
160690          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
160691          ,p_enc_g_l_ref      => null
160692          );
160693       END IF;
160694    END IF;
160695 END IF;
160696 
160697    ELSE
160698       --
160699       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
160700       --
160701       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160702          trace
160703             (p_msg      => 'Trancaction revesal option is Y'
160704             ,p_level    => C_LEVEL_STATEMENT
160705             ,p_module   => l_log_module);
160706       END IF;
160707    END IF;
160708 
160709 END LOOP;
160710 l_result := XLA_AE_LINES_PKG.InsertLines ;
160711 end loop;
160712 close line_cur;
160713 
160714 
160715 --
160716 -- insert headers into xla_ae_headers_gt table
160717 --
160718 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
160719 
160720 -- insert into errors table here.
160721 
160722 END LOOP;
160723 
160724 --
160725 -- 4865292
160726 --
160727 -- Compare g_hdr_extract_count with event count in
160728 -- CreateHeadersAndLines.
160729 --
160730 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
160731 
160732 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160733    trace (p_msg     => '# rows extracted from header extract objects '
160734                     || ' (running total): '
160735                     || g_hdr_extract_count
160736          ,p_level   => C_LEVEL_STATEMENT
160737          ,p_module  => l_log_module);
160738 END IF;
160739 
160740 CLOSE header_cur;
160741 --
160742 
160743 --
160744 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
160745    trace
160746       (p_msg      => 'END of EventClass_271'
160747       ,p_level    => C_LEVEL_PROCEDURE
160748       ,p_module   => l_log_module);
160749 END IF;
160750 --
160751 RETURN l_result;
160752 EXCEPTION
160753 WHEN xla_exceptions_pkg.application_exception THEN
160754    
160755 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
160756 
160757    
160758 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
160759 
160760    RAISE;
160761 
160762 WHEN NO_DATA_FOUND THEN
160763 
160764 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
160765 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
160766 
160767 FOR header_record IN header_cur
160768 LOOP
160769     l_array_header_events(header_record.event_id) := header_record.event_id;
160770 END LOOP;
160771 
160772 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
160773 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
160774 
160775 fnd_file.put_line(fnd_file.LOG, '                    ');
160776 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
160777 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
160778 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
160779 
160780 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
160781 LOOP
160782 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
160783 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
160784         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
160785 	END IF;
160786 END LOOP;
160787 
160788 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
160789 fnd_file.put_line(fnd_file.LOG, '                    ');
160790 
160791 
160792 xla_exceptions_pkg.raise_message
160793       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_271');
160794 
160795 
160796 WHEN OTHERS THEN
160797    xla_exceptions_pkg.raise_message
160798       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_271');
160799 END EventClass_271;
160800 --
160801 
160802 ---------------------------------------
160803 --
160804 -- PRIVATE PROCEDURE
160805 --         insert_sources_272
160806 --
160807 ----------------------------------------
160808 --
160809 PROCEDURE insert_sources_272(
160810                                 p_target_ledger_id       IN NUMBER
160811                               , p_language               IN VARCHAR2
160812                               , p_sla_ledger_id          IN NUMBER
160813                               , p_pad_start_date         IN DATE
160814                               , p_pad_end_date           IN DATE
160815                          )
160816 IS
160817 
160818 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INT_ORDER_TO_EXP_ALL';
160819 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'INT_ORDER_TO_EXP';
160820 p_apps_owner                   VARCHAR2(30);
160821 l_log_module                   VARCHAR2(240);
160822 BEGIN
160823 IF g_log_enabled THEN
160824       l_log_module := C_DEFAULT_MODULE||'.insert_sources_272';
160825 END IF;
160826 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
160827 
160828       trace
160829          (p_msg      => 'BEGIN of insert_sources_272'
160830          ,p_level    => C_LEVEL_PROCEDURE
160831          ,p_module   => l_log_module);
160832 
160833 END IF;
160834 
160835 -- select APPS owner
160836 SELECT oracle_username
160837   INTO p_apps_owner
160838   FROM fnd_oracle_userid
160839  WHERE read_only_flag = 'U'
160840 ;
160841 
160842 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160843       trace
160844          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
160845                         ' - p_language = '||p_language||
160846                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
160847                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
160848                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
160849                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
160850          ,p_level    => C_LEVEL_STATEMENT
160851          ,p_module   => l_log_module);
160852 END IF;
160853 
160854 
160855 --
160856 INSERT INTO xla_diag_sources --hdr2
160857 (
160858         event_id
160859       , ledger_id
160860       , sla_ledger_id
160861       , description_language
160862       , object_name
160863       , object_type_code
160864       , line_number
160865       , source_application_id
160866       , source_type_code
160867       , source_code
160868       , source_value
160869       , source_meaning
160870       , created_by
160871       , creation_date
160872       , last_update_date
160873       , last_updated_by
160874       , last_update_login
160875       , program_update_date
160876       , program_application_id
160877       , program_id
160878       , request_id
160879 )
160880 SELECT
160881         event_id
160882       , p_target_ledger_id
160883       , p_sla_ledger_id
160884       , p_language
160885       , object_name
160886       , object_type_code
160887       , line_number
160888       , source_application_id
160889       , source_type_code
160890       , source_code
160891       , SUBSTR(source_value ,1,1996)
160892       , SUBSTR(source_meaning ,1,200)
160893       , xla_environment_pkg.g_Usr_Id
160894       , TRUNC(SYSDATE)
160895       , TRUNC(SYSDATE)
160896       , xla_environment_pkg.g_Usr_Id
160897       , xla_environment_pkg.g_Login_Id
160898       , TRUNC(SYSDATE)
160899       , xla_environment_pkg.g_Prog_Appl_Id
160900       , xla_environment_pkg.g_Prog_Id
160901       , xla_environment_pkg.g_Req_Id
160902   FROM (
160903        SELECT xet.event_id                  event_id
160904             , 0                          line_number
160905             , CASE r
160906                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
160907                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
160908                 
160909                ELSE null
160910               END                           object_name
160911             , CASE r
160912                 WHEN 1 THEN 'HEADER' 
160913                 WHEN 2 THEN 'HEADER' 
160914                 
160915                 ELSE null
160916               END                           object_type_code
160917             , CASE r
160918                 WHEN 1 THEN '707' 
160919                 WHEN 2 THEN '707' 
160920                 
160921                 ELSE null
160922               END                           source_application_id
160923             , 'S'             source_type_code
160924             , CASE r
160925                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
160926                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
160927                 
160928                 ELSE null
160929               END                           source_code
160930             , CASE r
160931                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
160932                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
160933                 
160934                 ELSE null
160935               END                           source_value
160936             , CASE r
160937                 WHEN 1 THEN fvl12.meaning
160938                 WHEN 2 THEN fvl38.meaning
160939                 
160940                 ELSE null
160941               END               source_meaning
160942          FROM xla_events_gt     xet  
160943       , CST_XLA_INV_HEADERS_V  h1
160944   , fnd_lookup_values    fvl12
160945   , fnd_lookup_values    fvl38
160946              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
160947          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
160948            AND xet.event_class_code = C_EVENT_CLASS_CODE
160949               AND h1.event_id = xet.event_id
160950    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
160951   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
160952   AND fvl12.view_application_id(+) = 700
160953   AND fvl12.language(+)            = USERENV('LANG')
160954      AND fvl38.lookup_type(+)         = 'YES_NO'
160955   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
160956   AND fvl38.view_application_id(+) = 0
160957   AND fvl38.language(+)            = USERENV('LANG')
160958   
160959 )
160960 ;
160961 --
160962 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160963 
160964       trace
160965          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
160966          ,p_level    => C_LEVEL_STATEMENT
160967          ,p_module   => l_log_module);
160968 
160969 END IF;
160970 --
160971 
160972 
160973 
160974 --
160975 INSERT INTO xla_diag_sources  --line2
160976 (
160977         event_id
160978       , ledger_id
160979       , sla_ledger_id
160980       , description_language
160981       , object_name
160982       , object_type_code
160983       , line_number
160984       , source_application_id
160985       , source_type_code
160986       , source_code
160987       , source_value
160988       , source_meaning
160989       , created_by
160990       , creation_date
160991       , last_update_date
160992       , last_updated_by
160993       , last_update_login
160994       , program_update_date
160995       , program_application_id
160996       , program_id
160997       , request_id
160998 )
160999 SELECT  event_id
161000       , p_target_ledger_id
161001       , p_sla_ledger_id
161002       , p_language
161003       , object_name
161004       , object_type_code
161005       , line_number
161006       , source_application_id
161007       , source_type_code
161008       , source_code
161009       , SUBSTR(source_value,1,1996)
161010       , SUBSTR(source_meaning ,1,200)
161011       , xla_environment_pkg.g_Usr_Id
161012       , TRUNC(SYSDATE)
161013       , TRUNC(SYSDATE)
161014       , xla_environment_pkg.g_Usr_Id
161015       , xla_environment_pkg.g_Login_Id
161016       , TRUNC(SYSDATE)
161017       , xla_environment_pkg.g_Prog_Appl_Id
161018       , xla_environment_pkg.g_Prog_Id
161019       , xla_environment_pkg.g_Req_Id
161020   FROM (
161021        SELECT xet.event_id                  event_id
161022             , l2.line_number                 line_number
161023             , CASE r
161024                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
161025                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
161026                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
161027                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
161028                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
161029                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
161030                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
161031                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
161032                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
161033                 
161034                ELSE null
161035               END                           object_name
161036             , CASE r
161037                 WHEN 1 THEN 'LINE' 
161038                 WHEN 2 THEN 'LINE' 
161039                 WHEN 3 THEN 'LINE' 
161040                 WHEN 4 THEN 'LINE' 
161041                 WHEN 5 THEN 'LINE' 
161042                 WHEN 6 THEN 'LINE' 
161043                 WHEN 7 THEN 'LINE' 
161044                 WHEN 8 THEN 'LINE' 
161045                 WHEN 9 THEN 'LINE' 
161046                 
161047                 ELSE null
161048               END                           object_type_code
161049             , CASE r
161050                 WHEN 1 THEN '707' 
161051                 WHEN 2 THEN '707' 
161052                 WHEN 3 THEN '707' 
161053                 WHEN 4 THEN '707' 
161054                 WHEN 5 THEN '707' 
161055                 WHEN 6 THEN '707' 
161056                 WHEN 7 THEN '707' 
161057                 WHEN 8 THEN '707' 
161058                 WHEN 9 THEN '707' 
161059                 
161060                 ELSE null
161061               END                           source_application_id
161062             , 'S'             source_type_code
161063             , CASE r
161064                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
161065                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
161066                 WHEN 3 THEN 'CURRENCY_CODE' 
161067                 WHEN 4 THEN 'ENTERED_AMOUNT' 
161068                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
161069                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
161070                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
161071                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
161072                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
161073                 
161074                 ELSE null
161075               END                           source_code
161076             , CASE r
161077                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
161078                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
161079                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
161080                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
161081                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
161082                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
161083                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
161084                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
161085                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
161086                 
161087                 ELSE null
161088               END                           source_value
161089             , null              source_meaning
161090          FROM  xla_events_gt     xet  
161091         , CST_XLA_INV_LINES_V  l2
161092             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
161093         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
161094           AND xet.event_class_code = C_EVENT_CLASS_CODE
161095             AND l2.event_id          = xet.event_id
161096 
161097 )
161098 ;
161099 --
161100 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161101 
161102       trace
161103          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
161104          ,p_level    => C_LEVEL_STATEMENT
161105          ,p_module   => l_log_module);
161106 
161107 END IF;
161108 
161109 
161110 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
161111       trace
161112          (p_msg      => 'END of insert_sources_272'
161113          ,p_level    => C_LEVEL_PROCEDURE
161114          ,p_module   => l_log_module);
161115 END IF;
161116 EXCEPTION
161117   WHEN xla_exceptions_pkg.application_exception THEN
161118       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
161119             trace
161120                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
161121                ,p_level    => C_LEVEL_EXCEPTION
161122                ,p_module   => l_log_module);
161123       END IF;
161124       RAISE;
161125   WHEN OTHERS THEN
161126       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
161127             trace
161128                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
161129                ,p_level    => C_LEVEL_EXCEPTION
161130                ,p_module   => l_log_module);
161131        END IF;
161132        xla_exceptions_pkg.raise_message
161133            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_272');
161134 END insert_sources_272;
161135 --
161136 
161137 ---------------------------------------
161138 --
161139 -- PRIVATE FUNCTION
161140 --         EventClass_272
161141 --
161142 ----------------------------------------
161143 --
161144 FUNCTION EventClass_272
161145        (p_application_id         IN NUMBER
161146        ,p_base_ledger_id         IN NUMBER
161147        ,p_target_ledger_id       IN NUMBER
161148        ,p_language               IN VARCHAR2
161149        ,p_currency_code          IN VARCHAR2
161150        ,p_sla_ledger_id          IN NUMBER
161151        ,p_pad_start_date         IN DATE
161152        ,p_pad_end_date           IN DATE
161153        ,p_primary_ledger_id      IN NUMBER)
161154 RETURN BOOLEAN IS
161155 --
161156 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INT_ORDER_TO_EXP_ALL';
161157 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'INT_ORDER_TO_EXP';
161158 
161159 l_calculate_acctd_flag   VARCHAR2(1) :='N';
161160 l_calculate_g_l_flag     VARCHAR2(1) :='N';
161161 --
161162 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161163 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161164 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
161165 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
161166 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161167 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
161168 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
161169 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161170 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161171 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161172 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161173 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161174 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161175 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161176 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
161177 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
161178 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
161179 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
161180 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161181 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161182 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161183 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161184 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
161185 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
161186 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
161187 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
161188 
161189 l_event_id                             NUMBER;
161190 l_previous_event_id                    NUMBER;
161191 l_first_event_id                       NUMBER;
161192 l_last_event_id                        NUMBER;
161193 
161194 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
161195 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
161196 --
161197 --
161198 l_result                    BOOLEAN := TRUE;
161199 l_rows                      NUMBER  := 1000;
161200 l_event_type_name           VARCHAR2(80) := 'All';
161201 l_event_class_name          VARCHAR2(80) := 'Internal Order to Expense';
161202 l_description               VARCHAR2(4000);
161203 l_transaction_reversal      NUMBER;
161204 l_ae_header_id              NUMBER;
161205 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
161206 l_log_module                VARCHAR2(240);
161207 --
161208 l_acct_reversal_source      VARCHAR2(30);
161209 l_trx_reversal_source       VARCHAR2(30);
161210 
161211 l_continue_with_lines       BOOLEAN := TRUE;
161212 --
161213 l_acc_rev_gl_date_source    DATE;                      -- 4262811
161214 --
161215 type t_array_event_id is table of number index by binary_integer;
161216 
161217 l_rec_array_event                    t_rec_array_event;
161218 l_null_rec_array_event               t_rec_array_event;
161219 l_array_ae_header_id                 xla_number_array_type;
161220 l_actual_flag                        VARCHAR2(1) := NULL;
161221 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
161222 l_balance_type_code                  VARCHAR2(1) :=NULL;
161223 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
161224 
161225 --
161226 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
161227 --
161228 
161229 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
161230 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
161231 
161232 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
161233 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
161234 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
161235 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
161236 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
161237 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
161238 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
161239 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
161240 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
161241 
161242 l_array_source_12              t_array_source_12;
161243 l_array_source_12_meaning      t_array_lookup_meaning;
161244 l_array_source_38              t_array_source_38;
161245 l_array_source_38_meaning      t_array_lookup_meaning;
161246 
161247 l_array_source_4      t_array_source_4;
161248 l_array_source_11      t_array_source_11;
161249 l_array_source_15      t_array_source_15;
161250 l_array_source_18      t_array_source_18;
161251 l_array_source_19      t_array_source_19;
161252 l_array_source_20      t_array_source_20;
161253 l_array_source_21      t_array_source_21;
161254 l_array_source_22      t_array_source_22;
161255 l_array_source_24      t_array_source_24;
161256 
161257 --
161258 CURSOR header_cur
161259 IS
161260 SELECT /*+ leading(xet) cardinality(xet,1) */
161261 -- Event Class Code: INT_ORDER_TO_EXP
161262     xet.entity_id
161263    ,xet.legal_entity_id
161264    ,xet.entity_code
161265    ,xet.transaction_number
161266    ,xet.event_id
161267    ,xet.event_class_code
161268    ,xet.event_type_code
161269    ,xet.event_number
161270    ,xet.event_date
161271    ,xet.transaction_date
161272    ,xet.reference_num_1
161273    ,xet.reference_num_2
161274    ,xet.reference_num_3
161275    ,xet.reference_num_4
161276    ,xet.reference_char_1
161277    ,xet.reference_char_2
161278    ,xet.reference_char_3
161279    ,xet.reference_char_4
161280    ,xet.reference_date_1
161281    ,xet.reference_date_2
161282    ,xet.reference_date_3
161283    ,xet.reference_date_4
161284    ,xet.event_created_by
161285    ,xet.budgetary_control_flag 
161286   , h1.DISTRIBUTION_TYPE    source_12
161287   , fvl12.meaning   source_12_meaning
161288   , h1.TRANSFER_TO_GL_INDICATOR    source_38
161289   , fvl38.meaning   source_38_meaning
161290   FROM xla_events_gt     xet 
161291   , CST_XLA_INV_HEADERS_V  h1
161292   , fnd_lookup_values    fvl12
161293   , fnd_lookup_values    fvl38
161294  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
161295    and xet.event_class_code = C_EVENT_CLASS_CODE
161296    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
161297    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
161298   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
161299   AND fvl12.view_application_id(+) = 700
161300   AND fvl12.language(+)            = USERENV('LANG')
161301      AND fvl38.lookup_type(+)         = 'YES_NO'
161302   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
161303   AND fvl38.view_application_id(+) = 0
161304   AND fvl38.language(+)            = USERENV('LANG')
161305   
161306  ORDER BY event_id
161307 ;
161308 
161309 
161310 --
161311 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
161312 IS
161313 SELECT  /*+ leading(xet) cardinality(xet,1) */
161314 -- Event Class Code: INT_ORDER_TO_EXP
161315     xet.entity_id
161316    ,xet.legal_entity_id
161317    ,xet.entity_code
161318    ,xet.transaction_number
161319    ,xet.event_id
161320    ,xet.event_class_code
161321    ,xet.event_type_code
161322    ,xet.event_number
161323    ,xet.event_date
161324    ,xet.transaction_date
161325    ,xet.reference_num_1
161326    ,xet.reference_num_2
161327    ,xet.reference_num_3
161328    ,xet.reference_num_4
161329    ,xet.reference_char_1
161330    ,xet.reference_char_2
161331    ,xet.reference_char_3
161332    ,xet.reference_char_4
161333    ,xet.reference_date_1
161334    ,xet.reference_date_2
161335    ,xet.reference_date_3
161336    ,xet.reference_date_4
161337    ,xet.event_created_by
161338    ,xet.budgetary_control_flag
161339  , l2.LINE_NUMBER  
161340   , l2.CODE_COMBINATION_ID    source_4
161341   , l2.DISTRIBUTION_IDENTIFIER    source_11
161342   , l2.CURRENCY_CODE    source_15
161343   , l2.ENTERED_AMOUNT    source_18
161344   , l2.CURRENCY_CONVERSION_DATE    source_19
161345   , l2.CURRENCY_CONVERSION_RATE    source_20
161346   , l2.CURRENCY_CONVERSION_TYPE    source_21
161347   , l2.ACCOUNTED_AMOUNT    source_22
161348   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
161349   FROM xla_events_gt     xet 
161350   , CST_XLA_INV_LINES_V  l2
161351  WHERE xet.event_id between x_first_event_id and x_last_event_id
161352    and xet.event_date between p_pad_start_date and p_pad_end_date
161353    and xet.event_class_code = C_EVENT_CLASS_CODE
161354    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
161355 ;
161356 
161357 --
161358 BEGIN
161359 IF g_log_enabled THEN
161360    l_log_module := C_DEFAULT_MODULE||'.EventClass_272';
161361 END IF;
161362 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
161363    trace
161364       (p_msg      => 'BEGIN of EventClass_272'
161365       ,p_level    => C_LEVEL_PROCEDURE
161366       ,p_module   => l_log_module);
161367 END IF;
161368 
161369 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161370    trace
161371       (p_msg      => 'p_application_id = '||p_application_id||
161372                      ' - p_base_ledger_id = '||p_base_ledger_id||
161373                      ' - p_target_ledger_id  = '||p_target_ledger_id||
161374                      ' - p_language = '||p_language||
161375                      ' - p_currency_code = '||p_currency_code||
161376                      ' - p_sla_ledger_id = '||p_sla_ledger_id
161377       ,p_level    => C_LEVEL_STATEMENT
161378       ,p_module   => l_log_module);
161379 END IF;
161380 --
161381 -- initialze arrays
161382 --
161383 g_array_event.DELETE;
161384 l_rec_array_event := l_null_rec_array_event;
161385 --
161386 --------------------------------------
161387 -- 4262811 Initialze MPA Line Number
161388 --------------------------------------
161389 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
161390 
161391 --
161392 
161393 --
161394 OPEN header_cur;
161395 --
161396 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161397    trace
161398    (p_msg      => 'SQL - FETCH header_cur'
161399    ,p_level    => C_LEVEL_STATEMENT
161400    ,p_module   => l_log_module);
161401 END IF;
161402 --
161403 LOOP
161404 FETCH header_cur BULK COLLECT INTO
161405         l_array_entity_id
161406       , l_array_legal_entity_id
161407       , l_array_entity_code
161408       , l_array_transaction_num
161409       , l_array_event_id
161410       , l_array_class_code
161411       , l_array_event_type
161412       , l_array_event_number
161413       , l_array_event_date
161414       , l_array_transaction_date
161415       , l_array_reference_num_1
161416       , l_array_reference_num_2
161417       , l_array_reference_num_3
161418       , l_array_reference_num_4
161419       , l_array_reference_char_1
161420       , l_array_reference_char_2
161421       , l_array_reference_char_3
161422       , l_array_reference_char_4
161423       , l_array_reference_date_1
161424       , l_array_reference_date_2
161425       , l_array_reference_date_3
161426       , l_array_reference_date_4
161427       , l_array_event_created_by
161428       , l_array_budgetary_control_flag 
161429       , l_array_source_12
161430       , l_array_source_12_meaning
161431       , l_array_source_38
161432       , l_array_source_38_meaning
161433       LIMIT l_rows;
161434 --
161435 IF (C_LEVEL_EVENT >= g_log_level) THEN
161436    trace
161437    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
161438    ,p_level    => C_LEVEL_EVENT
161439    ,p_module   => l_log_module);
161440 END IF;
161441 --
161442 EXIT WHEN l_array_entity_id.COUNT = 0;
161443 
161444 -- initialize arrays
161445 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
161446 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
161447 
161448 --
161449 -- Bug 4458708
161450 --
161451 XLA_AE_LINES_PKG.g_LineNumber := 0;
161452 
161453 
161454 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
161455 g_last_hdr_idx := l_array_event_id.LAST;
161456 --
161457 -- loop for the headers. Each iteration is for each header extract row
161458 -- fetched in header cursor
161459 --
161460 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
161461 
161462 --
161463 -- set event info as cache for other routines to refer event attributes
161464 --
161465 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
161466    (p_application_id           => p_application_id
161467    ,p_primary_ledger_id        => p_primary_ledger_id
161468    ,p_base_ledger_id           => p_base_ledger_id
161469    ,p_target_ledger_id         => p_target_ledger_id
161470    ,p_entity_id                => l_array_entity_id(hdr_idx)
161471    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
161472    ,p_entity_code              => l_array_entity_code(hdr_idx)
161473    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
161474    ,p_event_id                 => l_array_event_id(hdr_idx)
161475    ,p_event_class_code         => l_array_class_code(hdr_idx)
161476    ,p_event_type_code          => l_array_event_type(hdr_idx)
161477    ,p_event_number             => l_array_event_number(hdr_idx)
161478    ,p_event_date               => l_array_event_date(hdr_idx)
161479    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
161480    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
161481    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
161482    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
161483    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
161484    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
161485    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
161486    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
161487    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
161488    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
161489    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
161490    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
161491    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
161492    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
161493    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
161494 
161495 --
161496 -- set the status of entry to C_VALID (0)
161497 --
161498 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
161499 
161500 --
161501 -- initialize a row for ae header
161502 --
161503 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
161504 
161505 l_event_id := l_array_event_id(hdr_idx);
161506 
161507 --
161508 -- storing the hdr_idx for event. May be used by line cursor.
161509 --
161510 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
161511 
161512 --
161513 -- store sources from header extract. This can be improved to
161514 -- store only those sources from header extract that may be used in lines
161515 --
161516 
161517 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
161518 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
161519 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
161520 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
161521 
161522 --
161523 -- initilaize the status of ae headers for diffrent balance types
161524 -- the status is initialised to C_NOT_CREATED (2)
161525 --
161526 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
161527 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
161528 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
161529 
161530 --
161531 -- call api to validate and store accounting attributes for header
161532 --
161533 
161534 ------------------------------------------------------------
161535 -- Accrual Reversal : to get date for Standard Source (NONE)
161536 ------------------------------------------------------------
161537 l_acc_rev_gl_date_source := NULL;
161538 
161539      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
161540       l_rec_acct_attrs.array_date_value(1) := 
161541 xla_ae_sources_pkg.GetSystemSourceDate(
161542    p_source_code           => 'XLA_REFERENCE_DATE_1'
161543  , p_source_type_code      => 'Y'
161544  , p_source_application_id =>  602
161545 );
161546      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
161547       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
161548 
161549 
161550 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
161551 
161552 XLA_AE_HEADER_PKG.SetJeCategoryName;
161553 
161554 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
161555 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
161556 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
161557 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
161558 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
161559 
161560 
161561 -- No header level analytical criteria
161562 
161563 --
161564 --accounting attribute enhancement, bug 3612931
161565 --
161566 l_trx_reversal_source := SUBSTR(NULL, 1,30);
161567 
161568 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
161569    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
161570 
161571    xla_accounting_err_pkg.build_message
161572       (p_appli_s_name            => 'XLA'
161573       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
161574       ,p_token_1                 => 'ACCT_ATTR_NAME'
161575       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
161576       ,p_token_2                 => 'PRODUCT_NAME'
161577       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
161578       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
161579       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
161580       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
161581 
161582 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
161583    --
161584    -- following sets the accounting attributes needed to reverse
161585    -- accounting for a distributeion
161586    --
161587    xla_ae_lines_pkg.SetTrxReversalAttrs
161588       (p_event_id              => l_event_id
161589       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
161590       ,p_trx_reversal_source   => l_trx_reversal_source);
161591 
161592 END IF;
161593 
161594 
161595 ----------------------------------------------------------------
161596 -- 4262811 -  update the header statuses to invalid in need be
161597 ----------------------------------------------------------------
161598 --
161599 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
161600 
161601 
161602   -----------------------------------------------
161603   -- No accrual reversal for the event class/type
161604   -----------------------------------------------
161605 ----------------------------------------------------------------
161606 
161607 --
161608 -- this ends the header loop iteration for one bulk fetch
161609 --
161610 END LOOP;
161611 
161612 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
161613 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
161614 
161615 --
161616 -- insert dummy rows into lines gt table that were created due to
161617 -- transaction reversals
161618 --
161619 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
161620    l_result := XLA_AE_LINES_PKG.InsertLines;
161621 END IF;
161622 
161623 --
161624 -- reset the temp_line_num for each set of events fetched from header
161625 -- cursor rather than doing it for each new event in line cursor
161626 -- Bug 3939231
161627 --
161628 xla_ae_lines_pkg.g_temp_line_num := 0;
161629 
161630 
161631 
161632 --
161633 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
161634 --
161635 --
161636 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161637 
161638       trace
161639          (p_msg      => 'SQL - FETCH line_cur'
161640          ,p_level    => C_LEVEL_STATEMENT
161641          ,p_module   => l_log_module);
161642 
161643 END IF;
161644 --
161645 --
161646 LOOP
161647   --
161648   FETCH line_cur BULK COLLECT INTO
161649         l_array_entity_id
161650       , l_array_legal_entity_id
161651       , l_array_entity_code
161652       , l_array_transaction_num
161653       , l_array_event_id
161654       , l_array_class_code
161655       , l_array_event_type
161656       , l_array_event_number
161657       , l_array_event_date
161658       , l_array_transaction_date
161659       , l_array_reference_num_1
161660       , l_array_reference_num_2
161661       , l_array_reference_num_3
161662       , l_array_reference_num_4
161663       , l_array_reference_char_1
161664       , l_array_reference_char_2
161665       , l_array_reference_char_3
161666       , l_array_reference_char_4
161667       , l_array_reference_date_1
161668       , l_array_reference_date_2
161669       , l_array_reference_date_3
161670       , l_array_reference_date_4
161671       , l_array_event_created_by
161672       , l_array_budgetary_control_flag
161673       , l_array_extract_line_num 
161674       , l_array_source_4
161675       , l_array_source_11
161676       , l_array_source_15
161677       , l_array_source_18
161678       , l_array_source_19
161679       , l_array_source_20
161680       , l_array_source_21
161681       , l_array_source_22
161682       , l_array_source_24
161683       LIMIT l_rows;
161684 
161685   --
161686   IF (C_LEVEL_EVENT >= g_log_level) THEN
161687             trace
161688                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
161689                ,p_level    => C_LEVEL_EVENT
161690                ,p_module   => l_log_module);
161691   END IF;
161692   --
161693   EXIT WHEN l_array_entity_id.count = 0;
161694 
161695   XLA_AE_LINES_PKG.g_rec_lines := null;
161696 
161697 --
161698 -- Bug 4458708
161699 --
161700 XLA_AE_LINES_PKG.g_LineNumber := 0;
161701 --
161702 --
161703 
161704 FOR Idx IN 1..l_array_event_id.count LOOP
161705    --
161706    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
161707    --
161708    l_event_id := l_array_event_id(idx);  -- 5648433
161709 
161710    --
161711    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
161712    --
161713 
161714    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
161715              (g_array_event(l_event_id).array_value_num('header_index'))
161716          ,'N'
161717          ) <> 'Y'
161718    THEN
161719       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161720          trace
161721             (p_msg      => 'Trancaction revesal option is not Y '
161722             ,p_level    => C_LEVEL_STATEMENT
161723             ,p_module   => l_log_module);
161724       END IF;
161725 
161726 --
161727 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
161728 --
161729 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
161730 --
161731 -- set event info as cache for other routines to refer event attributes
161732 --
161733 
161734 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
161735    l_previous_event_id := l_event_id;
161736 
161737    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
161738       (p_application_id           => p_application_id
161739       ,p_primary_ledger_id        => p_primary_ledger_id
161740       ,p_base_ledger_id           => p_base_ledger_id
161741       ,p_target_ledger_id         => p_target_ledger_id
161742       ,p_entity_id                => l_array_entity_id(Idx)
161743       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
161744       ,p_entity_code              => l_array_entity_code(Idx)
161745       ,p_transaction_num          => l_array_transaction_num(Idx)
161746       ,p_event_id                 => l_array_event_id(Idx)
161747       ,p_event_class_code         => l_array_class_code(Idx)
161748       ,p_event_type_code          => l_array_event_type(Idx)
161749       ,p_event_number             => l_array_event_number(Idx)
161750       ,p_event_date               => l_array_event_date(Idx)
161751       ,p_transaction_date         => l_array_transaction_date(Idx)
161752       ,p_reference_num_1          => l_array_reference_num_1(Idx)
161753       ,p_reference_num_2          => l_array_reference_num_2(Idx)
161754       ,p_reference_num_3          => l_array_reference_num_3(Idx)
161755       ,p_reference_num_4          => l_array_reference_num_4(Idx)
161756       ,p_reference_char_1         => l_array_reference_char_1(Idx)
161757       ,p_reference_char_2         => l_array_reference_char_2(Idx)
161758       ,p_reference_char_3         => l_array_reference_char_3(Idx)
161759       ,p_reference_char_4         => l_array_reference_char_4(Idx)
161760       ,p_reference_date_1         => l_array_reference_date_1(Idx)
161761       ,p_reference_date_2         => l_array_reference_date_2(Idx)
161762       ,p_reference_date_3         => l_array_reference_date_3(Idx)
161763       ,p_reference_date_4         => l_array_reference_date_4(Idx)
161764       ,p_event_created_by         => l_array_event_created_by(Idx)
161765       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
161766        --
161767 END IF;
161768 
161769 
161770 
161771 --
161772 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
161773 
161774 l_acct_reversal_source := SUBSTR(NULL, 1,30);
161775 
161776 IF l_continue_with_lines THEN
161777    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
161778       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
161779 
161780       xla_accounting_err_pkg.build_message
161781          (p_appli_s_name            => 'XLA'
161782          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
161783          ,p_token_1                 => 'LINE_NUMBER'
161784          ,p_value_1                 => l_array_extract_line_num(Idx)
161785          ,p_token_2                 => 'PRODUCT_NAME'
161786          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
161787          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
161788          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
161789          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
161790 
161791    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
161792       --
161793       -- following sets the accounting attributes needed to reverse
161794       -- accounting for a distributeion
161795       --
161796 
161797       --
161798       -- 5217187
161799       --
161800       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
161801       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
161802                                        g_array_event(l_event_id).array_value_num('header_index'));
161803       --
161804       --
161805 
161806       -- No reversal code generated
161807 
161808       xla_ae_lines_pkg.SetAcctReversalAttrs
161809          (p_event_id             => l_event_id
161810          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
161811          ,p_calculate_acctd_flag => l_calculate_acctd_flag
161812          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
161813    END IF;
161814 
161815    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
161816        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
161817 
161818 --
161819 AcctLineType_77 (
161820  p_application_id  => p_application_id
161821  ,p_event_id     => l_event_id
161822  ,p_calculate_acctd_flag => l_calculate_acctd_flag
161823  ,p_calculate_g_l_flag => l_calculate_g_l_flag
161824  ,p_actual_flag => l_actual_flag
161825  ,p_balance_type_code => l_balance_type_code
161826  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
161827  
161828  , p_source_4 => l_array_source_4(Idx)
161829  , p_source_11 => l_array_source_11(Idx)
161830  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
161831  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
161832  , p_source_15 => l_array_source_15(Idx)
161833  , p_source_18 => l_array_source_18(Idx)
161834  , p_source_19 => l_array_source_19(Idx)
161835  , p_source_20 => l_array_source_20(Idx)
161836  , p_source_21 => l_array_source_21(Idx)
161837  , p_source_22 => l_array_source_22(Idx)
161838  , p_source_24 => l_array_source_24(Idx)
161839  );
161840 If(l_balance_type_code = 'A') THEN
161841   l_actual_gain_loss_ref := l_gain_or_loss_ref;
161842 END IF;
161843 
161844 --
161845 
161846 
161847 --
161848 AcctLineType_94 (
161849  p_application_id  => p_application_id
161850  ,p_event_id     => l_event_id
161851  ,p_calculate_acctd_flag => l_calculate_acctd_flag
161852  ,p_calculate_g_l_flag => l_calculate_g_l_flag
161853  ,p_actual_flag => l_actual_flag
161854  ,p_balance_type_code => l_balance_type_code
161855  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
161856  
161857  , p_source_4 => l_array_source_4(Idx)
161858  , p_source_11 => l_array_source_11(Idx)
161859  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
161860  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
161861  , p_source_15 => l_array_source_15(Idx)
161862  , p_source_18 => l_array_source_18(Idx)
161863  , p_source_19 => l_array_source_19(Idx)
161864  , p_source_20 => l_array_source_20(Idx)
161865  , p_source_21 => l_array_source_21(Idx)
161866  , p_source_22 => l_array_source_22(Idx)
161867  , p_source_24 => l_array_source_24(Idx)
161868  );
161869 If(l_balance_type_code = 'A') THEN
161870   l_actual_gain_loss_ref := l_gain_or_loss_ref;
161871 END IF;
161872 
161873 --
161874 
161875 
161876 --
161877 AcctLineType_97 (
161878  p_application_id  => p_application_id
161879  ,p_event_id     => l_event_id
161880  ,p_calculate_acctd_flag => l_calculate_acctd_flag
161881  ,p_calculate_g_l_flag => l_calculate_g_l_flag
161882  ,p_actual_flag => l_actual_flag
161883  ,p_balance_type_code => l_balance_type_code
161884  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
161885  
161886  , p_source_4 => l_array_source_4(Idx)
161887  , p_source_11 => l_array_source_11(Idx)
161888  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
161889  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
161890  , p_source_15 => l_array_source_15(Idx)
161891  , p_source_18 => l_array_source_18(Idx)
161892  , p_source_19 => l_array_source_19(Idx)
161893  , p_source_20 => l_array_source_20(Idx)
161894  , p_source_21 => l_array_source_21(Idx)
161895  , p_source_22 => l_array_source_22(Idx)
161896  , p_source_24 => l_array_source_24(Idx)
161897  );
161898 If(l_balance_type_code = 'A') THEN
161899   l_actual_gain_loss_ref := l_gain_or_loss_ref;
161900 END IF;
161901 
161902 --
161903 
161904 
161905 --
161906 AcctLineType_137 (
161907  p_application_id  => p_application_id
161908  ,p_event_id     => l_event_id
161909  ,p_calculate_acctd_flag => l_calculate_acctd_flag
161910  ,p_calculate_g_l_flag => l_calculate_g_l_flag
161911  ,p_actual_flag => l_actual_flag
161912  ,p_balance_type_code => l_balance_type_code
161913  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
161914  
161915  , p_source_4 => l_array_source_4(Idx)
161916  , p_source_11 => l_array_source_11(Idx)
161917  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
161918  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
161919  , p_source_15 => l_array_source_15(Idx)
161920  , p_source_18 => l_array_source_18(Idx)
161921  , p_source_19 => l_array_source_19(Idx)
161922  , p_source_20 => l_array_source_20(Idx)
161923  , p_source_21 => l_array_source_21(Idx)
161924  , p_source_22 => l_array_source_22(Idx)
161925  , p_source_24 => l_array_source_24(Idx)
161926  );
161927 If(l_balance_type_code = 'A') THEN
161928   l_actual_gain_loss_ref := l_gain_or_loss_ref;
161929 END IF;
161930 
161931 --
161932 
161933 
161934 --
161935 AcctLineType_199 (
161936  p_application_id  => p_application_id
161937  ,p_event_id     => l_event_id
161938  ,p_calculate_acctd_flag => l_calculate_acctd_flag
161939  ,p_calculate_g_l_flag => l_calculate_g_l_flag
161940  ,p_actual_flag => l_actual_flag
161941  ,p_balance_type_code => l_balance_type_code
161942  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
161943  
161944  , p_source_4 => l_array_source_4(Idx)
161945  , p_source_11 => l_array_source_11(Idx)
161946  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
161947  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
161948  , p_source_15 => l_array_source_15(Idx)
161949  , p_source_18 => l_array_source_18(Idx)
161950  , p_source_19 => l_array_source_19(Idx)
161951  , p_source_20 => l_array_source_20(Idx)
161952  , p_source_21 => l_array_source_21(Idx)
161953  , p_source_22 => l_array_source_22(Idx)
161954  , p_source_24 => l_array_source_24(Idx)
161955  );
161956 If(l_balance_type_code = 'A') THEN
161957   l_actual_gain_loss_ref := l_gain_or_loss_ref;
161958 END IF;
161959 
161960 --
161961 
161962       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
161963       -- or secondary ledger that has different currency with primary
161964       -- or alc that is calculated by sla
161965       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
161966             (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'))
161967 
161968 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
161969 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
161970           AND (l_actual_flag = 'A')) THEN
161971         XLA_AE_LINES_PKG.CreateGainOrLossLines(
161972           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
161973          ,p_application_id   => p_application_id
161974          ,p_amb_context_code => 'DEFAULT'
161975          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
161976          ,p_event_class_code => C_EVENT_CLASS_CODE
161977          ,p_event_type_code  => C_EVENT_TYPE_CODE
161978          
161979          ,p_gain_ccid        => -1
161980          ,p_loss_ccid        => -1
161981 
161982          ,p_actual_flag      => l_actual_flag
161983          ,p_enc_flag         => null
161984          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
161985          ,p_enc_g_l_ref      => null
161986          );
161987       END IF;
161988    END IF;
161989 END IF;
161990 
161991    ELSE
161992       --
161993       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
161994       --
161995       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161996          trace
161997             (p_msg      => 'Trancaction revesal option is Y'
161998             ,p_level    => C_LEVEL_STATEMENT
161999             ,p_module   => l_log_module);
162000       END IF;
162001    END IF;
162002 
162003 END LOOP;
162004 l_result := XLA_AE_LINES_PKG.InsertLines ;
162005 end loop;
162006 close line_cur;
162007 
162008 
162009 --
162010 -- insert headers into xla_ae_headers_gt table
162011 --
162012 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
162013 
162014 -- insert into errors table here.
162015 
162016 END LOOP;
162017 
162018 --
162019 -- 4865292
162020 --
162021 -- Compare g_hdr_extract_count with event count in
162022 -- CreateHeadersAndLines.
162023 --
162024 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
162025 
162026 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162027    trace (p_msg     => '# rows extracted from header extract objects '
162028                     || ' (running total): '
162029                     || g_hdr_extract_count
162030          ,p_level   => C_LEVEL_STATEMENT
162031          ,p_module  => l_log_module);
162032 END IF;
162033 
162034 CLOSE header_cur;
162035 --
162036 
162037 --
162038 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
162039    trace
162040       (p_msg      => 'END of EventClass_272'
162041       ,p_level    => C_LEVEL_PROCEDURE
162042       ,p_module   => l_log_module);
162043 END IF;
162044 --
162045 RETURN l_result;
162046 EXCEPTION
162047 WHEN xla_exceptions_pkg.application_exception THEN
162048    
162049 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
162050 
162051    
162052 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
162053 
162054    RAISE;
162055 
162056 WHEN NO_DATA_FOUND THEN
162057 
162058 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
162059 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
162060 
162061 FOR header_record IN header_cur
162062 LOOP
162063     l_array_header_events(header_record.event_id) := header_record.event_id;
162064 END LOOP;
162065 
162066 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
162067 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
162068 
162069 fnd_file.put_line(fnd_file.LOG, '                    ');
162070 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
162071 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
162072 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
162073 
162074 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
162075 LOOP
162076 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
162077 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
162078         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
162079 	END IF;
162080 END LOOP;
162081 
162082 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
162083 fnd_file.put_line(fnd_file.LOG, '                    ');
162084 
162085 
162086 xla_exceptions_pkg.raise_message
162087       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_272');
162088 
162089 
162090 WHEN OTHERS THEN
162091    xla_exceptions_pkg.raise_message
162092       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_272');
162093 END EventClass_272;
162094 --
162095 
162096 ---------------------------------------
162097 --
162098 -- PRIVATE PROCEDURE
162099 --         insert_sources_273
162100 --
162101 ----------------------------------------
162102 --
162103 PROCEDURE insert_sources_273(
162104                                 p_target_ledger_id       IN NUMBER
162105                               , p_language               IN VARCHAR2
162106                               , p_sla_ledger_id          IN NUMBER
162107                               , p_pad_start_date         IN DATE
162108                               , p_pad_end_date           IN DATE
162109                          )
162110 IS
162111 
162112 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LDD_COST_ADJ_DEL_ALL';
162113 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'LDD_COST_ADJ_DEL';
162114 p_apps_owner                   VARCHAR2(30);
162115 l_log_module                   VARCHAR2(240);
162116 BEGIN
162117 IF g_log_enabled THEN
162118       l_log_module := C_DEFAULT_MODULE||'.insert_sources_273';
162119 END IF;
162120 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
162121 
162122       trace
162123          (p_msg      => 'BEGIN of insert_sources_273'
162124          ,p_level    => C_LEVEL_PROCEDURE
162125          ,p_module   => l_log_module);
162126 
162127 END IF;
162128 
162129 -- select APPS owner
162130 SELECT oracle_username
162131   INTO p_apps_owner
162132   FROM fnd_oracle_userid
162133  WHERE read_only_flag = 'U'
162134 ;
162135 
162136 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162137       trace
162138          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
162139                         ' - p_language = '||p_language||
162140                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
162141                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
162142                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
162143                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
162144          ,p_level    => C_LEVEL_STATEMENT
162145          ,p_module   => l_log_module);
162146 END IF;
162147 
162148 
162149 --
162150 INSERT INTO xla_diag_sources --hdr2
162151 (
162152         event_id
162153       , ledger_id
162154       , sla_ledger_id
162155       , description_language
162156       , object_name
162157       , object_type_code
162158       , line_number
162159       , source_application_id
162160       , source_type_code
162161       , source_code
162162       , source_value
162163       , source_meaning
162164       , created_by
162165       , creation_date
162166       , last_update_date
162167       , last_updated_by
162168       , last_update_login
162169       , program_update_date
162170       , program_application_id
162171       , program_id
162172       , request_id
162173 )
162174 SELECT
162175         event_id
162176       , p_target_ledger_id
162177       , p_sla_ledger_id
162178       , p_language
162179       , object_name
162180       , object_type_code
162181       , line_number
162182       , source_application_id
162183       , source_type_code
162184       , source_code
162185       , SUBSTR(source_value ,1,1996)
162186       , SUBSTR(source_meaning ,1,200)
162187       , xla_environment_pkg.g_Usr_Id
162188       , TRUNC(SYSDATE)
162189       , TRUNC(SYSDATE)
162190       , xla_environment_pkg.g_Usr_Id
162191       , xla_environment_pkg.g_Login_Id
162192       , TRUNC(SYSDATE)
162193       , xla_environment_pkg.g_Prog_Appl_Id
162194       , xla_environment_pkg.g_Prog_Id
162195       , xla_environment_pkg.g_Req_Id
162196   FROM (
162197        SELECT xet.event_id                  event_id
162198             , 0                          line_number
162199             , CASE r
162200                WHEN 1 THEN 'CST_XLA_RCV_HEADERS_V' 
162201                 WHEN 2 THEN 'PO_DISTS_REF_V' 
162202                 WHEN 3 THEN 'PO_DISTS_REF_V' 
162203                 WHEN 4 THEN 'PO_DISTS_REF_V' 
162204                 WHEN 5 THEN 'CST_XLA_RCV_HEADERS_V' 
162205                 
162206                ELSE null
162207               END                           object_name
162208             , CASE r
162209                 WHEN 1 THEN 'HEADER' 
162210                 WHEN 2 THEN 'HEADER' 
162211                 WHEN 3 THEN 'HEADER' 
162212                 WHEN 4 THEN 'HEADER' 
162213                 WHEN 5 THEN 'HEADER' 
162214                 
162215                 ELSE null
162216               END                           object_type_code
162217             , CASE r
162218                 WHEN 1 THEN '707' 
162219                 WHEN 2 THEN '201' 
162220                 WHEN 3 THEN '201' 
162221                 WHEN 4 THEN '201' 
162222                 WHEN 5 THEN '707' 
162223                 
162224                 ELSE null
162225               END                           source_application_id
162226             , 'S'             source_type_code
162227             , CASE r
162228                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
162229                 WHEN 2 THEN 'ENTERED_CURRENCY_CODE' 
162230                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
162231                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
162232                 WHEN 5 THEN 'TRANSFER_TO_GL_INDICATOR' 
162233                 
162234                 ELSE null
162235               END                           source_code
162236             , CASE r
162237                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
162238                 WHEN 2 THEN TO_CHAR(h4.ENTERED_CURRENCY_CODE)
162239                 WHEN 3 THEN TO_CHAR(h4.CURRENCY_CONVERSION_DATE)
162240                 WHEN 4 THEN TO_CHAR(h4.CURRENCY_CONVERSION_RATE)
162241                 WHEN 5 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
162242                 
162243                 ELSE null
162244               END                           source_value
162245             , CASE r
162246                 WHEN 1 THEN fvl12.meaning
162247                 WHEN 5 THEN fvl38.meaning
162248                 
162249                 ELSE null
162250               END               source_meaning
162251          FROM xla_events_gt     xet  
162252       , CST_XLA_RCV_HEADERS_V  h1
162253       , CST_XLA_RCV_REF_V  h3
162254       , PO_DISTS_REF_V  h4
162255   , fnd_lookup_values    fvl12
162256   , fnd_lookup_values    fvl38
162257              ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
162258          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
162259            AND xet.event_class_code = C_EVENT_CLASS_CODE
162260               AND h1.event_id = xet.event_id
162261  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 fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
162262   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
162263   AND fvl12.view_application_id(+) = 700
162264   AND fvl12.language(+)            = USERENV('LANG')
162265      AND fvl38.lookup_type(+)         = 'YES_NO'
162266   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
162267   AND fvl38.view_application_id(+) = 0
162268   AND fvl38.language(+)            = USERENV('LANG')
162269   
162270 )
162271 ;
162272 --
162273 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162274 
162275       trace
162276          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
162277          ,p_level    => C_LEVEL_STATEMENT
162278          ,p_module   => l_log_module);
162279 
162280 END IF;
162281 --
162282 
162283 
162284 
162285 --
162286 INSERT INTO xla_diag_sources  --line2
162287 (
162288         event_id
162289       , ledger_id
162290       , sla_ledger_id
162291       , description_language
162292       , object_name
162293       , object_type_code
162294       , line_number
162295       , source_application_id
162296       , source_type_code
162297       , source_code
162298       , source_value
162299       , source_meaning
162300       , created_by
162301       , creation_date
162302       , last_update_date
162303       , last_updated_by
162304       , last_update_login
162305       , program_update_date
162306       , program_application_id
162307       , program_id
162308       , request_id
162309 )
162310 SELECT  event_id
162311       , p_target_ledger_id
162312       , p_sla_ledger_id
162313       , p_language
162314       , object_name
162315       , object_type_code
162316       , line_number
162317       , source_application_id
162318       , source_type_code
162319       , source_code
162320       , SUBSTR(source_value,1,1996)
162321       , SUBSTR(source_meaning ,1,200)
162322       , xla_environment_pkg.g_Usr_Id
162323       , TRUNC(SYSDATE)
162324       , TRUNC(SYSDATE)
162325       , xla_environment_pkg.g_Usr_Id
162326       , xla_environment_pkg.g_Login_Id
162327       , TRUNC(SYSDATE)
162328       , xla_environment_pkg.g_Prog_Appl_Id
162329       , xla_environment_pkg.g_Prog_Id
162330       , xla_environment_pkg.g_Req_Id
162331   FROM (
162332        SELECT xet.event_id                  event_id
162333             , l2.line_number                 line_number
162334             , CASE r
162335                WHEN 1 THEN 'CST_XLA_RCV_LINES_V' 
162336                 WHEN 2 THEN 'CST_XLA_RCV_LINES_V' 
162337                 WHEN 3 THEN 'CST_XLA_RCV_LINES_V' 
162338                 WHEN 4 THEN 'CST_XLA_RCV_LINES_V' 
162339                 WHEN 5 THEN 'CST_XLA_RCV_LINES_V' 
162340                 
162341                ELSE null
162342               END                           object_name
162343             , CASE r
162344                 WHEN 1 THEN 'LINE' 
162345                 WHEN 2 THEN 'LINE' 
162346                 WHEN 3 THEN 'LINE' 
162347                 WHEN 4 THEN 'LINE' 
162348                 WHEN 5 THEN 'LINE' 
162349                 
162350                 ELSE null
162351               END                           object_type_code
162352             , CASE r
162353                 WHEN 1 THEN '707' 
162354                 WHEN 2 THEN '707' 
162355                 WHEN 3 THEN '707' 
162356                 WHEN 4 THEN '707' 
162357                 WHEN 5 THEN '707' 
162358                 
162359                 ELSE null
162360               END                           source_application_id
162361             , 'S'             source_type_code
162362             , CASE r
162363                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
162364                 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE' 
162365                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
162366                 WHEN 4 THEN 'ENTERED_AMOUNT' 
162367                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
162368                 
162369                 ELSE null
162370               END                           source_code
162371             , CASE r
162372                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
162373                 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
162374                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
162375                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
162376                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
162377                 
162378                 ELSE null
162379               END                           source_value
162380             , null              source_meaning
162381          FROM  xla_events_gt     xet  
162382         , CST_XLA_RCV_LINES_V  l2
162383             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
162384         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
162385           AND xet.event_class_code = C_EVENT_CLASS_CODE
162386             AND l2.event_id          = xet.event_id
162387 
162388 )
162389 ;
162390 --
162391 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162392 
162393       trace
162394          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
162395          ,p_level    => C_LEVEL_STATEMENT
162396          ,p_module   => l_log_module);
162397 
162398 END IF;
162399 
162400 
162401 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
162402       trace
162403          (p_msg      => 'END of insert_sources_273'
162404          ,p_level    => C_LEVEL_PROCEDURE
162405          ,p_module   => l_log_module);
162406 END IF;
162407 EXCEPTION
162408   WHEN xla_exceptions_pkg.application_exception THEN
162409       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
162410             trace
162411                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
162412                ,p_level    => C_LEVEL_EXCEPTION
162413                ,p_module   => l_log_module);
162414       END IF;
162415       RAISE;
162416   WHEN OTHERS THEN
162417       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
162418             trace
162419                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
162420                ,p_level    => C_LEVEL_EXCEPTION
162421                ,p_module   => l_log_module);
162422        END IF;
162423        xla_exceptions_pkg.raise_message
162424            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_273');
162425 END insert_sources_273;
162426 --
162427 
162428 ---------------------------------------
162429 --
162430 -- PRIVATE FUNCTION
162431 --         EventClass_273
162432 --
162433 ----------------------------------------
162434 --
162435 FUNCTION EventClass_273
162436        (p_application_id         IN NUMBER
162437        ,p_base_ledger_id         IN NUMBER
162438        ,p_target_ledger_id       IN NUMBER
162439        ,p_language               IN VARCHAR2
162440        ,p_currency_code          IN VARCHAR2
162441        ,p_sla_ledger_id          IN NUMBER
162442        ,p_pad_start_date         IN DATE
162443        ,p_pad_end_date           IN DATE
162444        ,p_primary_ledger_id      IN NUMBER)
162445 RETURN BOOLEAN IS
162446 --
162447 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LDD_COST_ADJ_DEL_ALL';
162448 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'LDD_COST_ADJ_DEL';
162449 
162450 l_calculate_acctd_flag   VARCHAR2(1) :='N';
162451 l_calculate_g_l_flag     VARCHAR2(1) :='N';
162452 --
162453 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162454 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162455 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
162456 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
162457 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162458 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
162459 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
162460 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162461 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162462 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162463 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162464 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162465 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162466 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162467 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
162468 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
162469 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
162470 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
162471 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162472 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162473 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162474 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162475 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
162476 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
162477 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
162478 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
162479 
162480 l_event_id                             NUMBER;
162481 l_previous_event_id                    NUMBER;
162482 l_first_event_id                       NUMBER;
162483 l_last_event_id                        NUMBER;
162484 
162485 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
162486 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
162487 --
162488 --
162489 l_result                    BOOLEAN := TRUE;
162490 l_rows                      NUMBER  := 1000;
162491 l_event_type_name           VARCHAR2(80) := 'All';
162492 l_event_class_name          VARCHAR2(80) := 'Landed Cost Adjustment to Delivery';
162493 l_description               VARCHAR2(4000);
162494 l_transaction_reversal      NUMBER;
162495 l_ae_header_id              NUMBER;
162496 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
162497 l_log_module                VARCHAR2(240);
162498 --
162499 l_acct_reversal_source      VARCHAR2(30);
162500 l_trx_reversal_source       VARCHAR2(30);
162501 
162502 l_continue_with_lines       BOOLEAN := TRUE;
162503 --
162504 l_acc_rev_gl_date_source    DATE;                      -- 4262811
162505 --
162506 type t_array_event_id is table of number index by binary_integer;
162507 
162508 l_rec_array_event                    t_rec_array_event;
162509 l_null_rec_array_event               t_rec_array_event;
162510 l_array_ae_header_id                 xla_number_array_type;
162511 l_actual_flag                        VARCHAR2(1) := NULL;
162512 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
162513 l_balance_type_code                  VARCHAR2(1) :=NULL;
162514 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
162515 
162516 --
162517 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
162518 --
162519 
162520 TYPE t_array_source_12 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
162521 TYPE t_array_source_32 IS TABLE OF PO_DISTS_REF_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
162522 TYPE t_array_source_33 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
162523 TYPE t_array_source_34 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
162524 TYPE t_array_source_38 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
162525 
162526 TYPE t_array_source_4 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
162527 TYPE t_array_source_5 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
162528 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
162529 TYPE t_array_source_18 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
162530 TYPE t_array_source_22 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
162531 
162532 l_array_source_12              t_array_source_12;
162533 l_array_source_12_meaning      t_array_lookup_meaning;
162534 l_array_source_32              t_array_source_32;
162535 l_array_source_33              t_array_source_33;
162536 l_array_source_34              t_array_source_34;
162537 l_array_source_38              t_array_source_38;
162538 l_array_source_38_meaning      t_array_lookup_meaning;
162539 
162540 l_array_source_4      t_array_source_4;
162541 l_array_source_5      t_array_source_5;
162542 l_array_source_11      t_array_source_11;
162543 l_array_source_18      t_array_source_18;
162544 l_array_source_22      t_array_source_22;
162545 
162546 --
162547 CURSOR header_cur
162548 IS
162549 SELECT /*+ leading(xet) cardinality(xet,1) */
162550 -- Event Class Code: LDD_COST_ADJ_DEL
162551     xet.entity_id
162552    ,xet.legal_entity_id
162553    ,xet.entity_code
162554    ,xet.transaction_number
162555    ,xet.event_id
162556    ,xet.event_class_code
162557    ,xet.event_type_code
162558    ,xet.event_number
162559    ,xet.event_date
162560    ,xet.transaction_date
162561    ,xet.reference_num_1
162562    ,xet.reference_num_2
162563    ,xet.reference_num_3
162564    ,xet.reference_num_4
162565    ,xet.reference_char_1
162566    ,xet.reference_char_2
162567    ,xet.reference_char_3
162568    ,xet.reference_char_4
162569    ,xet.reference_date_1
162570    ,xet.reference_date_2
162571    ,xet.reference_date_3
162572    ,xet.reference_date_4
162573    ,xet.event_created_by
162574    ,xet.budgetary_control_flag 
162575   , h1.DISTRIBUTION_TYPE    source_12
162576   , fvl12.meaning   source_12_meaning
162577   , h4.ENTERED_CURRENCY_CODE    source_32
162578   , h4.CURRENCY_CONVERSION_DATE    source_33
162579   , h4.CURRENCY_CONVERSION_RATE    source_34
162580   , h1.TRANSFER_TO_GL_INDICATOR    source_38
162581   , fvl38.meaning   source_38_meaning
162582   FROM xla_events_gt     xet 
162583   , CST_XLA_RCV_HEADERS_V  h1
162584   , CST_XLA_RCV_REF_V  h3
162585   , PO_DISTS_REF_V  h4
162586   , fnd_lookup_values    fvl12
162587   , fnd_lookup_values    fvl38
162588  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
162589    and xet.event_class_code = C_EVENT_CLASS_CODE
162590    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
162591  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 fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
162592   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
162593   AND fvl12.view_application_id(+) = 700
162594   AND fvl12.language(+)            = USERENV('LANG')
162595      AND fvl38.lookup_type(+)         = 'YES_NO'
162596   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
162597   AND fvl38.view_application_id(+) = 0
162598   AND fvl38.language(+)            = USERENV('LANG')
162599   
162600  ORDER BY event_id
162601 ;
162602 
162603 
162604 --
162605 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
162606 IS
162607 SELECT  /*+ leading(xet) cardinality(xet,1) */
162608 -- Event Class Code: LDD_COST_ADJ_DEL
162609     xet.entity_id
162610    ,xet.legal_entity_id
162611    ,xet.entity_code
162612    ,xet.transaction_number
162613    ,xet.event_id
162614    ,xet.event_class_code
162615    ,xet.event_type_code
162616    ,xet.event_number
162617    ,xet.event_date
162618    ,xet.transaction_date
162619    ,xet.reference_num_1
162620    ,xet.reference_num_2
162621    ,xet.reference_num_3
162622    ,xet.reference_num_4
162623    ,xet.reference_char_1
162624    ,xet.reference_char_2
162625    ,xet.reference_char_3
162626    ,xet.reference_char_4
162627    ,xet.reference_date_1
162628    ,xet.reference_date_2
162629    ,xet.reference_date_3
162630    ,xet.reference_date_4
162631    ,xet.event_created_by
162632    ,xet.budgetary_control_flag
162633  , l2.LINE_NUMBER  
162634   , l2.CODE_COMBINATION_ID    source_4
162635   , l2.RCV_ACCOUNTING_LINE_TYPE    source_5
162636   , l2.DISTRIBUTION_IDENTIFIER    source_11
162637   , l2.ENTERED_AMOUNT    source_18
162638   , l2.ACCOUNTED_AMOUNT    source_22
162639   FROM xla_events_gt     xet 
162640   , CST_XLA_RCV_LINES_V  l2
162641  WHERE xet.event_id between x_first_event_id and x_last_event_id
162642    and xet.event_date between p_pad_start_date and p_pad_end_date
162643    and xet.event_class_code = C_EVENT_CLASS_CODE
162644    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
162645 ;
162646 
162647 --
162648 BEGIN
162649 IF g_log_enabled THEN
162650    l_log_module := C_DEFAULT_MODULE||'.EventClass_273';
162651 END IF;
162652 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
162653    trace
162654       (p_msg      => 'BEGIN of EventClass_273'
162655       ,p_level    => C_LEVEL_PROCEDURE
162656       ,p_module   => l_log_module);
162657 END IF;
162658 
162659 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162660    trace
162661       (p_msg      => 'p_application_id = '||p_application_id||
162662                      ' - p_base_ledger_id = '||p_base_ledger_id||
162663                      ' - p_target_ledger_id  = '||p_target_ledger_id||
162664                      ' - p_language = '||p_language||
162665                      ' - p_currency_code = '||p_currency_code||
162666                      ' - p_sla_ledger_id = '||p_sla_ledger_id
162667       ,p_level    => C_LEVEL_STATEMENT
162668       ,p_module   => l_log_module);
162669 END IF;
162670 --
162671 -- initialze arrays
162672 --
162673 g_array_event.DELETE;
162674 l_rec_array_event := l_null_rec_array_event;
162675 --
162676 --------------------------------------
162677 -- 4262811 Initialze MPA Line Number
162678 --------------------------------------
162679 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
162680 
162681 --
162682 
162683 --
162684 OPEN header_cur;
162685 --
162686 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162687    trace
162688    (p_msg      => 'SQL - FETCH header_cur'
162689    ,p_level    => C_LEVEL_STATEMENT
162690    ,p_module   => l_log_module);
162691 END IF;
162692 --
162693 LOOP
162694 FETCH header_cur BULK COLLECT INTO
162695         l_array_entity_id
162696       , l_array_legal_entity_id
162697       , l_array_entity_code
162698       , l_array_transaction_num
162699       , l_array_event_id
162700       , l_array_class_code
162701       , l_array_event_type
162702       , l_array_event_number
162703       , l_array_event_date
162704       , l_array_transaction_date
162705       , l_array_reference_num_1
162706       , l_array_reference_num_2
162707       , l_array_reference_num_3
162708       , l_array_reference_num_4
162709       , l_array_reference_char_1
162710       , l_array_reference_char_2
162711       , l_array_reference_char_3
162712       , l_array_reference_char_4
162713       , l_array_reference_date_1
162714       , l_array_reference_date_2
162715       , l_array_reference_date_3
162716       , l_array_reference_date_4
162717       , l_array_event_created_by
162718       , l_array_budgetary_control_flag 
162719       , l_array_source_12
162720       , l_array_source_12_meaning
162721       , l_array_source_32
162722       , l_array_source_33
162723       , l_array_source_34
162724       , l_array_source_38
162725       , l_array_source_38_meaning
162726       LIMIT l_rows;
162727 --
162728 IF (C_LEVEL_EVENT >= g_log_level) THEN
162729    trace
162730    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
162731    ,p_level    => C_LEVEL_EVENT
162732    ,p_module   => l_log_module);
162733 END IF;
162734 --
162735 EXIT WHEN l_array_entity_id.COUNT = 0;
162736 
162737 -- initialize arrays
162738 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
162739 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
162740 
162741 --
162742 -- Bug 4458708
162743 --
162744 XLA_AE_LINES_PKG.g_LineNumber := 0;
162745 
162746 
162747 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
162748 g_last_hdr_idx := l_array_event_id.LAST;
162749 --
162750 -- loop for the headers. Each iteration is for each header extract row
162751 -- fetched in header cursor
162752 --
162753 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
162754 
162755 --
162756 -- set event info as cache for other routines to refer event attributes
162757 --
162758 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
162759    (p_application_id           => p_application_id
162760    ,p_primary_ledger_id        => p_primary_ledger_id
162761    ,p_base_ledger_id           => p_base_ledger_id
162762    ,p_target_ledger_id         => p_target_ledger_id
162763    ,p_entity_id                => l_array_entity_id(hdr_idx)
162764    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
162765    ,p_entity_code              => l_array_entity_code(hdr_idx)
162766    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
162767    ,p_event_id                 => l_array_event_id(hdr_idx)
162768    ,p_event_class_code         => l_array_class_code(hdr_idx)
162769    ,p_event_type_code          => l_array_event_type(hdr_idx)
162770    ,p_event_number             => l_array_event_number(hdr_idx)
162771    ,p_event_date               => l_array_event_date(hdr_idx)
162772    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
162773    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
162774    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
162775    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
162776    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
162777    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
162778    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
162779    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
162780    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
162781    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
162782    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
162783    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
162784    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
162785    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
162786    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
162787 
162788 --
162789 -- set the status of entry to C_VALID (0)
162790 --
162791 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
162792 
162793 --
162794 -- initialize a row for ae header
162795 --
162796 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
162797 
162798 l_event_id := l_array_event_id(hdr_idx);
162799 
162800 --
162801 -- storing the hdr_idx for event. May be used by line cursor.
162802 --
162803 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
162804 
162805 --
162806 -- store sources from header extract. This can be improved to
162807 -- store only those sources from header extract that may be used in lines
162808 --
162809 
162810 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
162811 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
162812 g_array_event(l_event_id).array_value_char('source_32') := l_array_source_32(hdr_idx);
162813 g_array_event(l_event_id).array_value_date('source_33') := l_array_source_33(hdr_idx);
162814 g_array_event(l_event_id).array_value_num('source_34') := l_array_source_34(hdr_idx);
162815 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
162816 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
162817 
162818 --
162819 -- initilaize the status of ae headers for diffrent balance types
162820 -- the status is initialised to C_NOT_CREATED (2)
162821 --
162822 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
162823 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
162824 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
162825 
162826 --
162827 -- call api to validate and store accounting attributes for header
162828 --
162829 
162830 ------------------------------------------------------------
162831 -- Accrual Reversal : to get date for Standard Source (NONE)
162832 ------------------------------------------------------------
162833 l_acc_rev_gl_date_source := NULL;
162834 
162835      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
162836       l_rec_acct_attrs.array_date_value(1) := 
162837 xla_ae_sources_pkg.GetSystemSourceDate(
162838    p_source_code           => 'XLA_REFERENCE_DATE_1'
162839  , p_source_type_code      => 'Y'
162840  , p_source_application_id =>  602
162841 );
162842      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
162843       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
162844 
162845 
162846 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
162847 
162848 XLA_AE_HEADER_PKG.SetJeCategoryName;
162849 
162850 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
162851 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
162852 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
162853 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
162854 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
162855 
162856 
162857 -- No header level analytical criteria
162858 
162859 --
162860 --accounting attribute enhancement, bug 3612931
162861 --
162862 l_trx_reversal_source := SUBSTR(NULL, 1,30);
162863 
162864 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
162865    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
162866 
162867    xla_accounting_err_pkg.build_message
162868       (p_appli_s_name            => 'XLA'
162869       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
162870       ,p_token_1                 => 'ACCT_ATTR_NAME'
162871       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
162872       ,p_token_2                 => 'PRODUCT_NAME'
162873       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
162874       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
162875       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
162876       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
162877 
162878 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
162879    --
162880    -- following sets the accounting attributes needed to reverse
162881    -- accounting for a distributeion
162882    --
162883    xla_ae_lines_pkg.SetTrxReversalAttrs
162884       (p_event_id              => l_event_id
162885       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
162886       ,p_trx_reversal_source   => l_trx_reversal_source);
162887 
162888 END IF;
162889 
162890 
162891 ----------------------------------------------------------------
162892 -- 4262811 -  update the header statuses to invalid in need be
162893 ----------------------------------------------------------------
162894 --
162895 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
162896 
162897 
162898   -----------------------------------------------
162899   -- No accrual reversal for the event class/type
162900   -----------------------------------------------
162901 ----------------------------------------------------------------
162902 
162903 --
162904 -- this ends the header loop iteration for one bulk fetch
162905 --
162906 END LOOP;
162907 
162908 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
162909 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
162910 
162911 --
162912 -- insert dummy rows into lines gt table that were created due to
162913 -- transaction reversals
162914 --
162915 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
162916    l_result := XLA_AE_LINES_PKG.InsertLines;
162917 END IF;
162918 
162919 --
162920 -- reset the temp_line_num for each set of events fetched from header
162921 -- cursor rather than doing it for each new event in line cursor
162922 -- Bug 3939231
162923 --
162924 xla_ae_lines_pkg.g_temp_line_num := 0;
162925 
162926 
162927 
162928 --
162929 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
162930 --
162931 --
162932 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162933 
162934       trace
162935          (p_msg      => 'SQL - FETCH line_cur'
162936          ,p_level    => C_LEVEL_STATEMENT
162937          ,p_module   => l_log_module);
162938 
162939 END IF;
162940 --
162941 --
162942 LOOP
162943   --
162944   FETCH line_cur BULK COLLECT INTO
162945         l_array_entity_id
162946       , l_array_legal_entity_id
162947       , l_array_entity_code
162948       , l_array_transaction_num
162949       , l_array_event_id
162950       , l_array_class_code
162951       , l_array_event_type
162952       , l_array_event_number
162953       , l_array_event_date
162954       , l_array_transaction_date
162955       , l_array_reference_num_1
162956       , l_array_reference_num_2
162957       , l_array_reference_num_3
162958       , l_array_reference_num_4
162959       , l_array_reference_char_1
162960       , l_array_reference_char_2
162961       , l_array_reference_char_3
162962       , l_array_reference_char_4
162963       , l_array_reference_date_1
162964       , l_array_reference_date_2
162965       , l_array_reference_date_3
162966       , l_array_reference_date_4
162967       , l_array_event_created_by
162968       , l_array_budgetary_control_flag
162969       , l_array_extract_line_num 
162970       , l_array_source_4
162971       , l_array_source_5
162972       , l_array_source_11
162973       , l_array_source_18
162974       , l_array_source_22
162975       LIMIT l_rows;
162976 
162977   --
162978   IF (C_LEVEL_EVENT >= g_log_level) THEN
162979             trace
162980                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
162981                ,p_level    => C_LEVEL_EVENT
162982                ,p_module   => l_log_module);
162983   END IF;
162984   --
162985   EXIT WHEN l_array_entity_id.count = 0;
162986 
162987   XLA_AE_LINES_PKG.g_rec_lines := null;
162988 
162989 --
162990 -- Bug 4458708
162991 --
162992 XLA_AE_LINES_PKG.g_LineNumber := 0;
162993 --
162994 --
162995 
162996 FOR Idx IN 1..l_array_event_id.count LOOP
162997    --
162998    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
162999    --
163000    l_event_id := l_array_event_id(idx);  -- 5648433
163001 
163002    --
163003    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
163004    --
163005 
163006    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
163007              (g_array_event(l_event_id).array_value_num('header_index'))
163008          ,'N'
163009          ) <> 'Y'
163010    THEN
163011       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163012          trace
163013             (p_msg      => 'Trancaction revesal option is not Y '
163014             ,p_level    => C_LEVEL_STATEMENT
163015             ,p_module   => l_log_module);
163016       END IF;
163017 
163018 --
163019 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
163020 --
163021 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
163022 --
163023 -- set event info as cache for other routines to refer event attributes
163024 --
163025 
163026 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
163027    l_previous_event_id := l_event_id;
163028 
163029    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
163030       (p_application_id           => p_application_id
163031       ,p_primary_ledger_id        => p_primary_ledger_id
163032       ,p_base_ledger_id           => p_base_ledger_id
163033       ,p_target_ledger_id         => p_target_ledger_id
163034       ,p_entity_id                => l_array_entity_id(Idx)
163035       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
163036       ,p_entity_code              => l_array_entity_code(Idx)
163037       ,p_transaction_num          => l_array_transaction_num(Idx)
163038       ,p_event_id                 => l_array_event_id(Idx)
163039       ,p_event_class_code         => l_array_class_code(Idx)
163040       ,p_event_type_code          => l_array_event_type(Idx)
163041       ,p_event_number             => l_array_event_number(Idx)
163042       ,p_event_date               => l_array_event_date(Idx)
163043       ,p_transaction_date         => l_array_transaction_date(Idx)
163044       ,p_reference_num_1          => l_array_reference_num_1(Idx)
163045       ,p_reference_num_2          => l_array_reference_num_2(Idx)
163046       ,p_reference_num_3          => l_array_reference_num_3(Idx)
163047       ,p_reference_num_4          => l_array_reference_num_4(Idx)
163048       ,p_reference_char_1         => l_array_reference_char_1(Idx)
163049       ,p_reference_char_2         => l_array_reference_char_2(Idx)
163050       ,p_reference_char_3         => l_array_reference_char_3(Idx)
163051       ,p_reference_char_4         => l_array_reference_char_4(Idx)
163052       ,p_reference_date_1         => l_array_reference_date_1(Idx)
163053       ,p_reference_date_2         => l_array_reference_date_2(Idx)
163054       ,p_reference_date_3         => l_array_reference_date_3(Idx)
163055       ,p_reference_date_4         => l_array_reference_date_4(Idx)
163056       ,p_event_created_by         => l_array_event_created_by(Idx)
163057       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
163058        --
163059 END IF;
163060 
163061 
163062 
163063 --
163064 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
163065 
163066 l_acct_reversal_source := SUBSTR(NULL, 1,30);
163067 
163068 IF l_continue_with_lines THEN
163069    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
163070       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
163071 
163072       xla_accounting_err_pkg.build_message
163073          (p_appli_s_name            => 'XLA'
163074          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
163075          ,p_token_1                 => 'LINE_NUMBER'
163076          ,p_value_1                 => l_array_extract_line_num(Idx)
163077          ,p_token_2                 => 'PRODUCT_NAME'
163078          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
163079          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
163080          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
163081          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
163082 
163083    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
163084       --
163085       -- following sets the accounting attributes needed to reverse
163086       -- accounting for a distributeion
163087       --
163088 
163089       --
163090       -- 5217187
163091       --
163092       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
163093       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
163094                                        g_array_event(l_event_id).array_value_num('header_index'));
163095       --
163096       --
163097 
163098       -- No reversal code generated
163099 
163100       xla_ae_lines_pkg.SetAcctReversalAttrs
163101          (p_event_id             => l_event_id
163102          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
163103          ,p_calculate_acctd_flag => l_calculate_acctd_flag
163104          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
163105    END IF;
163106 
163107    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
163108        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
163109 
163110 --
163111 AcctLineType_50 (
163112  p_application_id  => p_application_id
163113  ,p_event_id     => l_event_id
163114  ,p_calculate_acctd_flag => l_calculate_acctd_flag
163115  ,p_calculate_g_l_flag => l_calculate_g_l_flag
163116  ,p_actual_flag => l_actual_flag
163117  ,p_balance_type_code => l_balance_type_code
163118  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
163119  
163120  , p_source_4 => l_array_source_4(Idx)
163121  , p_source_5 => l_array_source_5(Idx)
163122  , p_source_11 => l_array_source_11(Idx)
163123  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
163124  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
163125  , p_source_18 => l_array_source_18(Idx)
163126  , p_source_22 => l_array_source_22(Idx)
163127  , p_source_32 => g_array_event(l_event_id).array_value_char('source_32')
163128  , p_source_33 => g_array_event(l_event_id).array_value_date('source_33')
163129  , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
163130  );
163131 If(l_balance_type_code = 'A') THEN
163132   l_actual_gain_loss_ref := l_gain_or_loss_ref;
163133 END IF;
163134 
163135 --
163136 
163137 
163138 --
163139 AcctLineType_163 (
163140  p_application_id  => p_application_id
163141  ,p_event_id     => l_event_id
163142  ,p_calculate_acctd_flag => l_calculate_acctd_flag
163143  ,p_calculate_g_l_flag => l_calculate_g_l_flag
163144  ,p_actual_flag => l_actual_flag
163145  ,p_balance_type_code => l_balance_type_code
163146  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
163147  
163148  , p_source_4 => l_array_source_4(Idx)
163149  , p_source_5 => l_array_source_5(Idx)
163150  , p_source_11 => l_array_source_11(Idx)
163151  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
163152  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
163153  , p_source_18 => l_array_source_18(Idx)
163154  , p_source_22 => l_array_source_22(Idx)
163155  , p_source_32 => g_array_event(l_event_id).array_value_char('source_32')
163156  , p_source_33 => g_array_event(l_event_id).array_value_date('source_33')
163157  , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
163158  );
163159 If(l_balance_type_code = 'A') THEN
163160   l_actual_gain_loss_ref := l_gain_or_loss_ref;
163161 END IF;
163162 
163163 --
163164 
163165 
163166 --
163167 AcctLineType_231 (
163168  p_application_id  => p_application_id
163169  ,p_event_id     => l_event_id
163170  ,p_calculate_acctd_flag => l_calculate_acctd_flag
163171  ,p_calculate_g_l_flag => l_calculate_g_l_flag
163172  ,p_actual_flag => l_actual_flag
163173  ,p_balance_type_code => l_balance_type_code
163174  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
163175  
163176  , p_source_4 => l_array_source_4(Idx)
163177  , p_source_5 => l_array_source_5(Idx)
163178  , p_source_11 => l_array_source_11(Idx)
163179  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
163180  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
163181  , p_source_18 => l_array_source_18(Idx)
163182  , p_source_22 => l_array_source_22(Idx)
163183  , p_source_32 => g_array_event(l_event_id).array_value_char('source_32')
163184  , p_source_33 => g_array_event(l_event_id).array_value_date('source_33')
163185  , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
163186  );
163187 If(l_balance_type_code = 'A') THEN
163188   l_actual_gain_loss_ref := l_gain_or_loss_ref;
163189 END IF;
163190 
163191 --
163192 
163193 
163194 --
163195 AcctLineType_236 (
163196  p_application_id  => p_application_id
163197  ,p_event_id     => l_event_id
163198  ,p_calculate_acctd_flag => l_calculate_acctd_flag
163199  ,p_calculate_g_l_flag => l_calculate_g_l_flag
163200  ,p_actual_flag => l_actual_flag
163201  ,p_balance_type_code => l_balance_type_code
163202  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
163203  
163204  , p_source_4 => l_array_source_4(Idx)
163205  , p_source_5 => l_array_source_5(Idx)
163206  , p_source_11 => l_array_source_11(Idx)
163207  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
163208  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
163209  , p_source_18 => l_array_source_18(Idx)
163210  , p_source_22 => l_array_source_22(Idx)
163211  , p_source_32 => g_array_event(l_event_id).array_value_char('source_32')
163212  , p_source_33 => g_array_event(l_event_id).array_value_date('source_33')
163213  , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
163214  );
163215 If(l_balance_type_code = 'A') THEN
163216   l_actual_gain_loss_ref := l_gain_or_loss_ref;
163217 END IF;
163218 
163219 --
163220 
163221       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
163222       -- or secondary ledger that has different currency with primary
163223       -- or alc that is calculated by sla
163224       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
163225             (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'))
163226 
163227 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
163228 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
163229           AND (l_actual_flag = 'A')) THEN
163230         XLA_AE_LINES_PKG.CreateGainOrLossLines(
163231           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
163232          ,p_application_id   => p_application_id
163233          ,p_amb_context_code => 'DEFAULT'
163234          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
163235          ,p_event_class_code => C_EVENT_CLASS_CODE
163236          ,p_event_type_code  => C_EVENT_TYPE_CODE
163237          
163238          ,p_gain_ccid        => -1
163239          ,p_loss_ccid        => -1
163240 
163241          ,p_actual_flag      => l_actual_flag
163242          ,p_enc_flag         => null
163243          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
163244          ,p_enc_g_l_ref      => null
163245          );
163246       END IF;
163247    END IF;
163248 END IF;
163249 
163250    ELSE
163251       --
163252       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
163253       --
163254       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163255          trace
163256             (p_msg      => 'Trancaction revesal option is Y'
163257             ,p_level    => C_LEVEL_STATEMENT
163258             ,p_module   => l_log_module);
163259       END IF;
163260    END IF;
163261 
163262 END LOOP;
163263 l_result := XLA_AE_LINES_PKG.InsertLines ;
163264 end loop;
163265 close line_cur;
163266 
163267 
163268 --
163269 -- insert headers into xla_ae_headers_gt table
163270 --
163271 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
163272 
163273 -- insert into errors table here.
163274 
163275 END LOOP;
163276 
163277 --
163278 -- 4865292
163279 --
163280 -- Compare g_hdr_extract_count with event count in
163281 -- CreateHeadersAndLines.
163282 --
163283 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
163284 
163285 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163286    trace (p_msg     => '# rows extracted from header extract objects '
163287                     || ' (running total): '
163288                     || g_hdr_extract_count
163289          ,p_level   => C_LEVEL_STATEMENT
163290          ,p_module  => l_log_module);
163291 END IF;
163292 
163293 CLOSE header_cur;
163294 --
163295 
163296 --
163297 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
163298    trace
163299       (p_msg      => 'END of EventClass_273'
163300       ,p_level    => C_LEVEL_PROCEDURE
163301       ,p_module   => l_log_module);
163302 END IF;
163303 --
163304 RETURN l_result;
163305 EXCEPTION
163306 WHEN xla_exceptions_pkg.application_exception THEN
163307    
163308 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
163309 
163310    
163311 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
163312 
163313    RAISE;
163314 
163315 WHEN NO_DATA_FOUND THEN
163316 
163317 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
163318 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
163319 
163320 FOR header_record IN header_cur
163321 LOOP
163322     l_array_header_events(header_record.event_id) := header_record.event_id;
163323 END LOOP;
163324 
163325 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
163326 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
163327 
163328 fnd_file.put_line(fnd_file.LOG, '                    ');
163329 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
163330 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
163331 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
163332 
163333 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
163334 LOOP
163335 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
163336 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
163337         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
163338 	END IF;
163339 END LOOP;
163340 
163341 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
163342 fnd_file.put_line(fnd_file.LOG, '                    ');
163343 
163344 
163345 xla_exceptions_pkg.raise_message
163346       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_273');
163347 
163348 
163349 WHEN OTHERS THEN
163350    xla_exceptions_pkg.raise_message
163351       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_273');
163352 END EventClass_273;
163353 --
163354 
163355 ---------------------------------------
163356 --
163357 -- PRIVATE PROCEDURE
163358 --         insert_sources_274
163359 --
163360 ----------------------------------------
163361 --
163362 PROCEDURE insert_sources_274(
163363                                 p_target_ledger_id       IN NUMBER
163364                               , p_language               IN VARCHAR2
163365                               , p_sla_ledger_id          IN NUMBER
163366                               , p_pad_start_date         IN DATE
163367                               , p_pad_end_date           IN DATE
163368                          )
163369 IS
163370 
163371 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LDD_COST_ADJ_RCV_ALL';
163372 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'LDD_COST_ADJ_RCV';
163373 p_apps_owner                   VARCHAR2(30);
163374 l_log_module                   VARCHAR2(240);
163375 BEGIN
163376 IF g_log_enabled THEN
163377       l_log_module := C_DEFAULT_MODULE||'.insert_sources_274';
163378 END IF;
163379 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
163380 
163381       trace
163382          (p_msg      => 'BEGIN of insert_sources_274'
163383          ,p_level    => C_LEVEL_PROCEDURE
163384          ,p_module   => l_log_module);
163385 
163386 END IF;
163387 
163388 -- select APPS owner
163389 SELECT oracle_username
163390   INTO p_apps_owner
163391   FROM fnd_oracle_userid
163392  WHERE read_only_flag = 'U'
163393 ;
163394 
163395 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163396       trace
163397          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
163398                         ' - p_language = '||p_language||
163399                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
163400                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
163401                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
163402                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
163403          ,p_level    => C_LEVEL_STATEMENT
163404          ,p_module   => l_log_module);
163405 END IF;
163406 
163407 
163408 --
163409 INSERT INTO xla_diag_sources --hdr2
163410 (
163411         event_id
163412       , ledger_id
163413       , sla_ledger_id
163414       , description_language
163415       , object_name
163416       , object_type_code
163417       , line_number
163418       , source_application_id
163419       , source_type_code
163420       , source_code
163421       , source_value
163422       , source_meaning
163423       , created_by
163424       , creation_date
163425       , last_update_date
163426       , last_updated_by
163427       , last_update_login
163428       , program_update_date
163429       , program_application_id
163430       , program_id
163431       , request_id
163432 )
163433 SELECT
163434         event_id
163435       , p_target_ledger_id
163436       , p_sla_ledger_id
163437       , p_language
163438       , object_name
163439       , object_type_code
163440       , line_number
163441       , source_application_id
163442       , source_type_code
163443       , source_code
163444       , SUBSTR(source_value ,1,1996)
163445       , SUBSTR(source_meaning ,1,200)
163446       , xla_environment_pkg.g_Usr_Id
163447       , TRUNC(SYSDATE)
163448       , TRUNC(SYSDATE)
163449       , xla_environment_pkg.g_Usr_Id
163450       , xla_environment_pkg.g_Login_Id
163451       , TRUNC(SYSDATE)
163452       , xla_environment_pkg.g_Prog_Appl_Id
163453       , xla_environment_pkg.g_Prog_Id
163454       , xla_environment_pkg.g_Req_Id
163455   FROM (
163456        SELECT xet.event_id                  event_id
163457             , 0                          line_number
163458             , CASE r
163459                WHEN 1 THEN 'CST_XLA_RCV_HEADERS_V' 
163460                 WHEN 2 THEN 'PO_DISTS_REF_V' 
163461                 WHEN 3 THEN 'PO_DISTS_REF_V' 
163462                 WHEN 4 THEN 'PO_DISTS_REF_V' 
163463                 WHEN 5 THEN 'PO_DISTS_REF_V' 
163464                 WHEN 6 THEN 'CST_XLA_RCV_HEADERS_V' 
163465                 
163466                ELSE null
163467               END                           object_name
163468             , CASE r
163469                 WHEN 1 THEN 'HEADER' 
163470                 WHEN 2 THEN 'HEADER' 
163471                 WHEN 3 THEN 'HEADER' 
163472                 WHEN 4 THEN 'HEADER' 
163473                 WHEN 5 THEN 'HEADER' 
163474                 WHEN 6 THEN 'HEADER' 
163475                 
163476                 ELSE null
163477               END                           object_type_code
163478             , CASE r
163479                 WHEN 1 THEN '707' 
163480                 WHEN 2 THEN '201' 
163481                 WHEN 3 THEN '201' 
163482                 WHEN 4 THEN '201' 
163483                 WHEN 5 THEN '201' 
163484                 WHEN 6 THEN '707' 
163485                 
163486                 ELSE null
163487               END                           source_application_id
163488             , 'S'             source_type_code
163489             , CASE r
163490                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
163491                 WHEN 2 THEN 'ENTERED_CURRENCY_CODE' 
163492                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
163493                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
163494                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
163495                 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR' 
163496                 
163497                 ELSE null
163498               END                           source_code
163499             , CASE r
163500                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
163501                 WHEN 2 THEN TO_CHAR(h4.ENTERED_CURRENCY_CODE)
163502                 WHEN 3 THEN TO_CHAR(h4.CURRENCY_CONVERSION_DATE)
163503                 WHEN 4 THEN TO_CHAR(h4.CURRENCY_CONVERSION_RATE)
163504                 WHEN 5 THEN TO_CHAR(h4.CURRENCY_CONVERSION_TYPE)
163505                 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
163506                 
163507                 ELSE null
163508               END                           source_value
163509             , CASE r
163510                 WHEN 1 THEN fvl12.meaning
163511                 WHEN 6 THEN fvl38.meaning
163512                 
163513                 ELSE null
163514               END               source_meaning
163515          FROM xla_events_gt     xet  
163516       , CST_XLA_RCV_HEADERS_V  h1
163517       , CST_XLA_RCV_REF_V  h3
163518       , PO_DISTS_REF_V  h4
163519   , fnd_lookup_values    fvl12
163520   , fnd_lookup_values    fvl38
163521              ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
163522          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
163523            AND xet.event_class_code = C_EVENT_CLASS_CODE
163524               AND h1.event_id = xet.event_id
163525  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 fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
163526   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
163527   AND fvl12.view_application_id(+) = 700
163528   AND fvl12.language(+)            = USERENV('LANG')
163529      AND fvl38.lookup_type(+)         = 'YES_NO'
163530   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
163531   AND fvl38.view_application_id(+) = 0
163532   AND fvl38.language(+)            = USERENV('LANG')
163533   
163534 )
163535 ;
163536 --
163537 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163538 
163539       trace
163540          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
163541          ,p_level    => C_LEVEL_STATEMENT
163542          ,p_module   => l_log_module);
163543 
163544 END IF;
163545 --
163546 
163547 
163548 
163549 --
163550 INSERT INTO xla_diag_sources  --line2
163551 (
163552         event_id
163553       , ledger_id
163554       , sla_ledger_id
163555       , description_language
163556       , object_name
163557       , object_type_code
163558       , line_number
163559       , source_application_id
163560       , source_type_code
163561       , source_code
163562       , source_value
163563       , source_meaning
163564       , created_by
163565       , creation_date
163566       , last_update_date
163567       , last_updated_by
163568       , last_update_login
163569       , program_update_date
163570       , program_application_id
163571       , program_id
163572       , request_id
163573 )
163574 SELECT  event_id
163575       , p_target_ledger_id
163576       , p_sla_ledger_id
163577       , p_language
163578       , object_name
163579       , object_type_code
163580       , line_number
163581       , source_application_id
163582       , source_type_code
163583       , source_code
163584       , SUBSTR(source_value,1,1996)
163585       , SUBSTR(source_meaning ,1,200)
163586       , xla_environment_pkg.g_Usr_Id
163587       , TRUNC(SYSDATE)
163588       , TRUNC(SYSDATE)
163589       , xla_environment_pkg.g_Usr_Id
163590       , xla_environment_pkg.g_Login_Id
163591       , TRUNC(SYSDATE)
163592       , xla_environment_pkg.g_Prog_Appl_Id
163593       , xla_environment_pkg.g_Prog_Id
163594       , xla_environment_pkg.g_Req_Id
163595   FROM (
163596        SELECT xet.event_id                  event_id
163597             , l2.line_number                 line_number
163598             , CASE r
163599                WHEN 1 THEN 'CST_XLA_RCV_LINES_V' 
163600                 WHEN 2 THEN 'CST_XLA_RCV_LINES_V' 
163601                 WHEN 3 THEN 'CST_XLA_RCV_LINES_V' 
163602                 WHEN 4 THEN 'CST_XLA_RCV_LINES_V' 
163603                 WHEN 5 THEN 'CST_XLA_RCV_LINES_V' 
163604                 
163605                ELSE null
163606               END                           object_name
163607             , CASE r
163608                 WHEN 1 THEN 'LINE' 
163609                 WHEN 2 THEN 'LINE' 
163610                 WHEN 3 THEN 'LINE' 
163611                 WHEN 4 THEN 'LINE' 
163612                 WHEN 5 THEN 'LINE' 
163613                 
163614                 ELSE null
163615               END                           object_type_code
163616             , CASE r
163617                 WHEN 1 THEN '707' 
163618                 WHEN 2 THEN '707' 
163619                 WHEN 3 THEN '707' 
163620                 WHEN 4 THEN '707' 
163621                 WHEN 5 THEN '707' 
163622                 
163623                 ELSE null
163624               END                           source_application_id
163625             , 'S'             source_type_code
163626             , CASE r
163627                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
163628                 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE' 
163629                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
163630                 WHEN 4 THEN 'ENTERED_AMOUNT' 
163631                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
163632                 
163633                 ELSE null
163634               END                           source_code
163635             , CASE r
163636                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
163637                 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
163638                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
163639                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
163640                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
163641                 
163642                 ELSE null
163643               END                           source_value
163644             , null              source_meaning
163645          FROM  xla_events_gt     xet  
163646         , CST_XLA_RCV_LINES_V  l2
163647             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
163648         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
163649           AND xet.event_class_code = C_EVENT_CLASS_CODE
163650             AND l2.event_id          = xet.event_id
163651 
163652 )
163653 ;
163654 --
163655 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163656 
163657       trace
163658          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
163659          ,p_level    => C_LEVEL_STATEMENT
163660          ,p_module   => l_log_module);
163661 
163662 END IF;
163663 
163664 
163665 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
163666       trace
163667          (p_msg      => 'END of insert_sources_274'
163668          ,p_level    => C_LEVEL_PROCEDURE
163669          ,p_module   => l_log_module);
163670 END IF;
163671 EXCEPTION
163672   WHEN xla_exceptions_pkg.application_exception THEN
163673       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
163674             trace
163675                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
163676                ,p_level    => C_LEVEL_EXCEPTION
163677                ,p_module   => l_log_module);
163678       END IF;
163679       RAISE;
163680   WHEN OTHERS THEN
163681       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
163682             trace
163683                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
163684                ,p_level    => C_LEVEL_EXCEPTION
163685                ,p_module   => l_log_module);
163686        END IF;
163687        xla_exceptions_pkg.raise_message
163688            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_274');
163689 END insert_sources_274;
163690 --
163691 
163692 ---------------------------------------
163693 --
163694 -- PRIVATE FUNCTION
163695 --         EventClass_274
163696 --
163697 ----------------------------------------
163698 --
163699 FUNCTION EventClass_274
163700        (p_application_id         IN NUMBER
163701        ,p_base_ledger_id         IN NUMBER
163702        ,p_target_ledger_id       IN NUMBER
163703        ,p_language               IN VARCHAR2
163704        ,p_currency_code          IN VARCHAR2
163705        ,p_sla_ledger_id          IN NUMBER
163706        ,p_pad_start_date         IN DATE
163707        ,p_pad_end_date           IN DATE
163708        ,p_primary_ledger_id      IN NUMBER)
163709 RETURN BOOLEAN IS
163710 --
163711 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LDD_COST_ADJ_RCV_ALL';
163712 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'LDD_COST_ADJ_RCV';
163713 
163714 l_calculate_acctd_flag   VARCHAR2(1) :='N';
163715 l_calculate_g_l_flag     VARCHAR2(1) :='N';
163716 --
163717 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163718 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163719 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
163720 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
163721 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163722 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
163723 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
163724 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163725 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163726 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163727 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163728 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163729 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163730 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163731 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
163732 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
163733 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
163734 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
163735 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163736 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163737 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163738 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163739 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
163740 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
163741 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
163742 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
163743 
163744 l_event_id                             NUMBER;
163745 l_previous_event_id                    NUMBER;
163746 l_first_event_id                       NUMBER;
163747 l_last_event_id                        NUMBER;
163748 
163749 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
163750 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
163751 --
163752 --
163753 l_result                    BOOLEAN := TRUE;
163754 l_rows                      NUMBER  := 1000;
163755 l_event_type_name           VARCHAR2(80) := 'All';
163756 l_event_class_name          VARCHAR2(80) := 'Landed Cost Adjustment to Receipt';
163757 l_description               VARCHAR2(4000);
163758 l_transaction_reversal      NUMBER;
163759 l_ae_header_id              NUMBER;
163760 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
163761 l_log_module                VARCHAR2(240);
163762 --
163763 l_acct_reversal_source      VARCHAR2(30);
163764 l_trx_reversal_source       VARCHAR2(30);
163765 
163766 l_continue_with_lines       BOOLEAN := TRUE;
163767 --
163768 l_acc_rev_gl_date_source    DATE;                      -- 4262811
163769 --
163770 type t_array_event_id is table of number index by binary_integer;
163771 
163772 l_rec_array_event                    t_rec_array_event;
163773 l_null_rec_array_event               t_rec_array_event;
163774 l_array_ae_header_id                 xla_number_array_type;
163775 l_actual_flag                        VARCHAR2(1) := NULL;
163776 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
163777 l_balance_type_code                  VARCHAR2(1) :=NULL;
163778 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
163779 
163780 --
163781 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
163782 --
163783 
163784 TYPE t_array_source_12 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
163785 TYPE t_array_source_32 IS TABLE OF PO_DISTS_REF_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
163786 TYPE t_array_source_33 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
163787 TYPE t_array_source_34 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
163788 TYPE t_array_source_36 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
163789 TYPE t_array_source_38 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
163790 
163791 TYPE t_array_source_4 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
163792 TYPE t_array_source_5 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
163793 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
163794 TYPE t_array_source_18 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
163795 TYPE t_array_source_22 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
163796 
163797 l_array_source_12              t_array_source_12;
163798 l_array_source_12_meaning      t_array_lookup_meaning;
163799 l_array_source_32              t_array_source_32;
163800 l_array_source_33              t_array_source_33;
163801 l_array_source_34              t_array_source_34;
163802 l_array_source_36              t_array_source_36;
163803 l_array_source_38              t_array_source_38;
163804 l_array_source_38_meaning      t_array_lookup_meaning;
163805 
163806 l_array_source_4      t_array_source_4;
163807 l_array_source_5      t_array_source_5;
163808 l_array_source_11      t_array_source_11;
163809 l_array_source_18      t_array_source_18;
163810 l_array_source_22      t_array_source_22;
163811 
163812 --
163813 CURSOR header_cur
163814 IS
163815 SELECT /*+ leading(xet) cardinality(xet,1) */
163816 -- Event Class Code: LDD_COST_ADJ_RCV
163817     xet.entity_id
163818    ,xet.legal_entity_id
163819    ,xet.entity_code
163820    ,xet.transaction_number
163821    ,xet.event_id
163822    ,xet.event_class_code
163823    ,xet.event_type_code
163824    ,xet.event_number
163825    ,xet.event_date
163826    ,xet.transaction_date
163827    ,xet.reference_num_1
163828    ,xet.reference_num_2
163829    ,xet.reference_num_3
163830    ,xet.reference_num_4
163831    ,xet.reference_char_1
163832    ,xet.reference_char_2
163833    ,xet.reference_char_3
163834    ,xet.reference_char_4
163835    ,xet.reference_date_1
163836    ,xet.reference_date_2
163837    ,xet.reference_date_3
163838    ,xet.reference_date_4
163839    ,xet.event_created_by
163840    ,xet.budgetary_control_flag 
163841   , h1.DISTRIBUTION_TYPE    source_12
163842   , fvl12.meaning   source_12_meaning
163843   , h4.ENTERED_CURRENCY_CODE    source_32
163844   , h4.CURRENCY_CONVERSION_DATE    source_33
163845   , h4.CURRENCY_CONVERSION_RATE    source_34
163846   , h4.CURRENCY_CONVERSION_TYPE    source_36
163847   , h1.TRANSFER_TO_GL_INDICATOR    source_38
163848   , fvl38.meaning   source_38_meaning
163849   FROM xla_events_gt     xet 
163850   , CST_XLA_RCV_HEADERS_V  h1
163851   , CST_XLA_RCV_REF_V  h3
163852   , PO_DISTS_REF_V  h4
163853   , fnd_lookup_values    fvl12
163854   , fnd_lookup_values    fvl38
163855  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
163856    and xet.event_class_code = C_EVENT_CLASS_CODE
163857    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
163858  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 fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
163859   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
163860   AND fvl12.view_application_id(+) = 700
163861   AND fvl12.language(+)            = USERENV('LANG')
163862      AND fvl38.lookup_type(+)         = 'YES_NO'
163863   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
163864   AND fvl38.view_application_id(+) = 0
163865   AND fvl38.language(+)            = USERENV('LANG')
163866   
163867  ORDER BY event_id
163868 ;
163869 
163870 
163871 --
163872 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
163873 IS
163874 SELECT  /*+ leading(xet) cardinality(xet,1) */
163875 -- Event Class Code: LDD_COST_ADJ_RCV
163876     xet.entity_id
163877    ,xet.legal_entity_id
163878    ,xet.entity_code
163879    ,xet.transaction_number
163880    ,xet.event_id
163881    ,xet.event_class_code
163882    ,xet.event_type_code
163883    ,xet.event_number
163884    ,xet.event_date
163885    ,xet.transaction_date
163886    ,xet.reference_num_1
163887    ,xet.reference_num_2
163888    ,xet.reference_num_3
163889    ,xet.reference_num_4
163890    ,xet.reference_char_1
163891    ,xet.reference_char_2
163892    ,xet.reference_char_3
163893    ,xet.reference_char_4
163894    ,xet.reference_date_1
163895    ,xet.reference_date_2
163896    ,xet.reference_date_3
163897    ,xet.reference_date_4
163898    ,xet.event_created_by
163899    ,xet.budgetary_control_flag
163900  , l2.LINE_NUMBER  
163901   , l2.CODE_COMBINATION_ID    source_4
163902   , l2.RCV_ACCOUNTING_LINE_TYPE    source_5
163903   , l2.DISTRIBUTION_IDENTIFIER    source_11
163904   , l2.ENTERED_AMOUNT    source_18
163905   , l2.ACCOUNTED_AMOUNT    source_22
163906   FROM xla_events_gt     xet 
163907   , CST_XLA_RCV_LINES_V  l2
163908  WHERE xet.event_id between x_first_event_id and x_last_event_id
163909    and xet.event_date between p_pad_start_date and p_pad_end_date
163910    and xet.event_class_code = C_EVENT_CLASS_CODE
163911    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
163912 ;
163913 
163914 --
163915 BEGIN
163916 IF g_log_enabled THEN
163917    l_log_module := C_DEFAULT_MODULE||'.EventClass_274';
163918 END IF;
163919 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
163920    trace
163921       (p_msg      => 'BEGIN of EventClass_274'
163922       ,p_level    => C_LEVEL_PROCEDURE
163923       ,p_module   => l_log_module);
163924 END IF;
163925 
163926 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163927    trace
163928       (p_msg      => 'p_application_id = '||p_application_id||
163929                      ' - p_base_ledger_id = '||p_base_ledger_id||
163930                      ' - p_target_ledger_id  = '||p_target_ledger_id||
163931                      ' - p_language = '||p_language||
163932                      ' - p_currency_code = '||p_currency_code||
163933                      ' - p_sla_ledger_id = '||p_sla_ledger_id
163934       ,p_level    => C_LEVEL_STATEMENT
163935       ,p_module   => l_log_module);
163936 END IF;
163937 --
163938 -- initialze arrays
163939 --
163940 g_array_event.DELETE;
163941 l_rec_array_event := l_null_rec_array_event;
163942 --
163943 --------------------------------------
163944 -- 4262811 Initialze MPA Line Number
163945 --------------------------------------
163946 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
163947 
163948 --
163949 
163950 --
163951 OPEN header_cur;
163952 --
163953 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163954    trace
163955    (p_msg      => 'SQL - FETCH header_cur'
163956    ,p_level    => C_LEVEL_STATEMENT
163957    ,p_module   => l_log_module);
163958 END IF;
163959 --
163960 LOOP
163961 FETCH header_cur BULK COLLECT INTO
163962         l_array_entity_id
163963       , l_array_legal_entity_id
163964       , l_array_entity_code
163965       , l_array_transaction_num
163966       , l_array_event_id
163967       , l_array_class_code
163968       , l_array_event_type
163969       , l_array_event_number
163970       , l_array_event_date
163971       , l_array_transaction_date
163972       , l_array_reference_num_1
163973       , l_array_reference_num_2
163974       , l_array_reference_num_3
163975       , l_array_reference_num_4
163976       , l_array_reference_char_1
163977       , l_array_reference_char_2
163978       , l_array_reference_char_3
163979       , l_array_reference_char_4
163980       , l_array_reference_date_1
163981       , l_array_reference_date_2
163982       , l_array_reference_date_3
163983       , l_array_reference_date_4
163984       , l_array_event_created_by
163985       , l_array_budgetary_control_flag 
163986       , l_array_source_12
163987       , l_array_source_12_meaning
163988       , l_array_source_32
163989       , l_array_source_33
163990       , l_array_source_34
163991       , l_array_source_36
163992       , l_array_source_38
163993       , l_array_source_38_meaning
163994       LIMIT l_rows;
163995 --
163996 IF (C_LEVEL_EVENT >= g_log_level) THEN
163997    trace
163998    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
163999    ,p_level    => C_LEVEL_EVENT
164000    ,p_module   => l_log_module);
164001 END IF;
164002 --
164003 EXIT WHEN l_array_entity_id.COUNT = 0;
164004 
164005 -- initialize arrays
164006 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
164007 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
164008 
164009 --
164010 -- Bug 4458708
164011 --
164012 XLA_AE_LINES_PKG.g_LineNumber := 0;
164013 
164014 
164015 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
164016 g_last_hdr_idx := l_array_event_id.LAST;
164017 --
164018 -- loop for the headers. Each iteration is for each header extract row
164019 -- fetched in header cursor
164020 --
164021 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
164022 
164023 --
164024 -- set event info as cache for other routines to refer event attributes
164025 --
164026 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
164027    (p_application_id           => p_application_id
164028    ,p_primary_ledger_id        => p_primary_ledger_id
164029    ,p_base_ledger_id           => p_base_ledger_id
164030    ,p_target_ledger_id         => p_target_ledger_id
164031    ,p_entity_id                => l_array_entity_id(hdr_idx)
164032    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
164033    ,p_entity_code              => l_array_entity_code(hdr_idx)
164034    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
164035    ,p_event_id                 => l_array_event_id(hdr_idx)
164036    ,p_event_class_code         => l_array_class_code(hdr_idx)
164037    ,p_event_type_code          => l_array_event_type(hdr_idx)
164038    ,p_event_number             => l_array_event_number(hdr_idx)
164039    ,p_event_date               => l_array_event_date(hdr_idx)
164040    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
164041    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
164042    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
164043    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
164044    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
164045    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
164046    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
164047    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
164048    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
164049    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
164050    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
164051    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
164052    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
164053    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
164054    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
164055 
164056 --
164057 -- set the status of entry to C_VALID (0)
164058 --
164059 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
164060 
164061 --
164062 -- initialize a row for ae header
164063 --
164064 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
164065 
164066 l_event_id := l_array_event_id(hdr_idx);
164067 
164068 --
164069 -- storing the hdr_idx for event. May be used by line cursor.
164070 --
164071 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
164072 
164073 --
164074 -- store sources from header extract. This can be improved to
164075 -- store only those sources from header extract that may be used in lines
164076 --
164077 
164078 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
164079 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
164080 g_array_event(l_event_id).array_value_char('source_32') := l_array_source_32(hdr_idx);
164081 g_array_event(l_event_id).array_value_date('source_33') := l_array_source_33(hdr_idx);
164082 g_array_event(l_event_id).array_value_num('source_34') := l_array_source_34(hdr_idx);
164083 g_array_event(l_event_id).array_value_char('source_36') := l_array_source_36(hdr_idx);
164084 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
164085 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
164086 
164087 --
164088 -- initilaize the status of ae headers for diffrent balance types
164089 -- the status is initialised to C_NOT_CREATED (2)
164090 --
164091 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
164092 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
164093 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
164094 
164095 --
164096 -- call api to validate and store accounting attributes for header
164097 --
164098 
164099 ------------------------------------------------------------
164100 -- Accrual Reversal : to get date for Standard Source (NONE)
164101 ------------------------------------------------------------
164102 l_acc_rev_gl_date_source := NULL;
164103 
164104      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
164105       l_rec_acct_attrs.array_date_value(1) := 
164106 xla_ae_sources_pkg.GetSystemSourceDate(
164107    p_source_code           => 'XLA_REFERENCE_DATE_1'
164108  , p_source_type_code      => 'Y'
164109  , p_source_application_id =>  602
164110 );
164111      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
164112       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
164113 
164114 
164115 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
164116 
164117 XLA_AE_HEADER_PKG.SetJeCategoryName;
164118 
164119 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
164120 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
164121 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
164122 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
164123 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
164124 
164125 
164126 -- No header level analytical criteria
164127 
164128 --
164129 --accounting attribute enhancement, bug 3612931
164130 --
164131 l_trx_reversal_source := SUBSTR(NULL, 1,30);
164132 
164133 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
164134    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
164135 
164136    xla_accounting_err_pkg.build_message
164137       (p_appli_s_name            => 'XLA'
164138       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
164139       ,p_token_1                 => 'ACCT_ATTR_NAME'
164140       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
164141       ,p_token_2                 => 'PRODUCT_NAME'
164142       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
164143       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
164144       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
164145       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
164146 
164147 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
164148    --
164149    -- following sets the accounting attributes needed to reverse
164150    -- accounting for a distributeion
164151    --
164152    xla_ae_lines_pkg.SetTrxReversalAttrs
164153       (p_event_id              => l_event_id
164154       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
164155       ,p_trx_reversal_source   => l_trx_reversal_source);
164156 
164157 END IF;
164158 
164159 
164160 ----------------------------------------------------------------
164161 -- 4262811 -  update the header statuses to invalid in need be
164162 ----------------------------------------------------------------
164163 --
164164 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
164165 
164166 
164167   -----------------------------------------------
164168   -- No accrual reversal for the event class/type
164169   -----------------------------------------------
164170 ----------------------------------------------------------------
164171 
164172 --
164173 -- this ends the header loop iteration for one bulk fetch
164174 --
164175 END LOOP;
164176 
164177 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
164178 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
164179 
164180 --
164181 -- insert dummy rows into lines gt table that were created due to
164182 -- transaction reversals
164183 --
164184 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
164185    l_result := XLA_AE_LINES_PKG.InsertLines;
164186 END IF;
164187 
164188 --
164189 -- reset the temp_line_num for each set of events fetched from header
164190 -- cursor rather than doing it for each new event in line cursor
164191 -- Bug 3939231
164192 --
164193 xla_ae_lines_pkg.g_temp_line_num := 0;
164194 
164195 
164196 
164197 --
164198 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
164199 --
164200 --
164201 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164202 
164203       trace
164204          (p_msg      => 'SQL - FETCH line_cur'
164205          ,p_level    => C_LEVEL_STATEMENT
164206          ,p_module   => l_log_module);
164207 
164208 END IF;
164209 --
164210 --
164211 LOOP
164212   --
164213   FETCH line_cur BULK COLLECT INTO
164214         l_array_entity_id
164215       , l_array_legal_entity_id
164216       , l_array_entity_code
164217       , l_array_transaction_num
164218       , l_array_event_id
164219       , l_array_class_code
164220       , l_array_event_type
164221       , l_array_event_number
164222       , l_array_event_date
164223       , l_array_transaction_date
164224       , l_array_reference_num_1
164225       , l_array_reference_num_2
164226       , l_array_reference_num_3
164227       , l_array_reference_num_4
164228       , l_array_reference_char_1
164229       , l_array_reference_char_2
164230       , l_array_reference_char_3
164231       , l_array_reference_char_4
164232       , l_array_reference_date_1
164233       , l_array_reference_date_2
164234       , l_array_reference_date_3
164235       , l_array_reference_date_4
164236       , l_array_event_created_by
164237       , l_array_budgetary_control_flag
164238       , l_array_extract_line_num 
164239       , l_array_source_4
164240       , l_array_source_5
164241       , l_array_source_11
164242       , l_array_source_18
164243       , l_array_source_22
164244       LIMIT l_rows;
164245 
164246   --
164247   IF (C_LEVEL_EVENT >= g_log_level) THEN
164248             trace
164249                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
164250                ,p_level    => C_LEVEL_EVENT
164251                ,p_module   => l_log_module);
164252   END IF;
164253   --
164254   EXIT WHEN l_array_entity_id.count = 0;
164255 
164256   XLA_AE_LINES_PKG.g_rec_lines := null;
164257 
164258 --
164259 -- Bug 4458708
164260 --
164261 XLA_AE_LINES_PKG.g_LineNumber := 0;
164262 --
164263 --
164264 
164265 FOR Idx IN 1..l_array_event_id.count LOOP
164266    --
164267    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
164268    --
164269    l_event_id := l_array_event_id(idx);  -- 5648433
164270 
164271    --
164272    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
164273    --
164274 
164275    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
164276              (g_array_event(l_event_id).array_value_num('header_index'))
164277          ,'N'
164278          ) <> 'Y'
164279    THEN
164280       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164281          trace
164282             (p_msg      => 'Trancaction revesal option is not Y '
164283             ,p_level    => C_LEVEL_STATEMENT
164284             ,p_module   => l_log_module);
164285       END IF;
164286 
164287 --
164288 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
164289 --
164290 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
164291 --
164292 -- set event info as cache for other routines to refer event attributes
164293 --
164294 
164295 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
164296    l_previous_event_id := l_event_id;
164297 
164298    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
164299       (p_application_id           => p_application_id
164300       ,p_primary_ledger_id        => p_primary_ledger_id
164301       ,p_base_ledger_id           => p_base_ledger_id
164302       ,p_target_ledger_id         => p_target_ledger_id
164303       ,p_entity_id                => l_array_entity_id(Idx)
164304       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
164305       ,p_entity_code              => l_array_entity_code(Idx)
164306       ,p_transaction_num          => l_array_transaction_num(Idx)
164307       ,p_event_id                 => l_array_event_id(Idx)
164308       ,p_event_class_code         => l_array_class_code(Idx)
164309       ,p_event_type_code          => l_array_event_type(Idx)
164310       ,p_event_number             => l_array_event_number(Idx)
164311       ,p_event_date               => l_array_event_date(Idx)
164312       ,p_transaction_date         => l_array_transaction_date(Idx)
164313       ,p_reference_num_1          => l_array_reference_num_1(Idx)
164314       ,p_reference_num_2          => l_array_reference_num_2(Idx)
164315       ,p_reference_num_3          => l_array_reference_num_3(Idx)
164316       ,p_reference_num_4          => l_array_reference_num_4(Idx)
164317       ,p_reference_char_1         => l_array_reference_char_1(Idx)
164318       ,p_reference_char_2         => l_array_reference_char_2(Idx)
164319       ,p_reference_char_3         => l_array_reference_char_3(Idx)
164320       ,p_reference_char_4         => l_array_reference_char_4(Idx)
164321       ,p_reference_date_1         => l_array_reference_date_1(Idx)
164322       ,p_reference_date_2         => l_array_reference_date_2(Idx)
164323       ,p_reference_date_3         => l_array_reference_date_3(Idx)
164324       ,p_reference_date_4         => l_array_reference_date_4(Idx)
164325       ,p_event_created_by         => l_array_event_created_by(Idx)
164326       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
164327        --
164328 END IF;
164329 
164330 
164331 
164332 --
164333 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
164334 
164335 l_acct_reversal_source := SUBSTR(NULL, 1,30);
164336 
164337 IF l_continue_with_lines THEN
164338    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
164339       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
164340 
164341       xla_accounting_err_pkg.build_message
164342          (p_appli_s_name            => 'XLA'
164343          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
164344          ,p_token_1                 => 'LINE_NUMBER'
164345          ,p_value_1                 => l_array_extract_line_num(Idx)
164346          ,p_token_2                 => 'PRODUCT_NAME'
164347          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
164348          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
164349          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
164350          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
164351 
164352    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
164353       --
164354       -- following sets the accounting attributes needed to reverse
164355       -- accounting for a distributeion
164356       --
164357 
164358       --
164359       -- 5217187
164360       --
164361       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
164362       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
164363                                        g_array_event(l_event_id).array_value_num('header_index'));
164364       --
164365       --
164366 
164367       -- No reversal code generated
164368 
164369       xla_ae_lines_pkg.SetAcctReversalAttrs
164370          (p_event_id             => l_event_id
164371          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
164372          ,p_calculate_acctd_flag => l_calculate_acctd_flag
164373          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
164374    END IF;
164375 
164376    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
164377        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
164378 
164379 --
164380 AcctLineType_161 (
164381  p_application_id  => p_application_id
164382  ,p_event_id     => l_event_id
164383  ,p_calculate_acctd_flag => l_calculate_acctd_flag
164384  ,p_calculate_g_l_flag => l_calculate_g_l_flag
164385  ,p_actual_flag => l_actual_flag
164386  ,p_balance_type_code => l_balance_type_code
164387  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
164388  
164389  , p_source_4 => l_array_source_4(Idx)
164390  , p_source_5 => l_array_source_5(Idx)
164391  , p_source_11 => l_array_source_11(Idx)
164392  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
164393  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
164394  , p_source_18 => l_array_source_18(Idx)
164395  , p_source_22 => l_array_source_22(Idx)
164396  , p_source_32 => g_array_event(l_event_id).array_value_char('source_32')
164397  , p_source_33 => g_array_event(l_event_id).array_value_date('source_33')
164398  , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
164399  , p_source_36 => g_array_event(l_event_id).array_value_char('source_36')
164400  );
164401 If(l_balance_type_code = 'A') THEN
164402   l_actual_gain_loss_ref := l_gain_or_loss_ref;
164403 END IF;
164404 
164405 --
164406 
164407 
164408 --
164409 AcctLineType_237 (
164410  p_application_id  => p_application_id
164411  ,p_event_id     => l_event_id
164412  ,p_calculate_acctd_flag => l_calculate_acctd_flag
164413  ,p_calculate_g_l_flag => l_calculate_g_l_flag
164414  ,p_actual_flag => l_actual_flag
164415  ,p_balance_type_code => l_balance_type_code
164416  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
164417  
164418  , p_source_4 => l_array_source_4(Idx)
164419  , p_source_5 => l_array_source_5(Idx)
164420  , p_source_11 => l_array_source_11(Idx)
164421  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
164422  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
164423  , p_source_18 => l_array_source_18(Idx)
164424  , p_source_22 => l_array_source_22(Idx)
164425  , p_source_32 => g_array_event(l_event_id).array_value_char('source_32')
164426  , p_source_33 => g_array_event(l_event_id).array_value_date('source_33')
164427  , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
164428  , p_source_36 => g_array_event(l_event_id).array_value_char('source_36')
164429  );
164430 If(l_balance_type_code = 'A') THEN
164431   l_actual_gain_loss_ref := l_gain_or_loss_ref;
164432 END IF;
164433 
164434 --
164435 
164436       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
164437       -- or secondary ledger that has different currency with primary
164438       -- or alc that is calculated by sla
164439       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
164440             (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'))
164441 
164442 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
164443 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
164444           AND (l_actual_flag = 'A')) THEN
164445         XLA_AE_LINES_PKG.CreateGainOrLossLines(
164446           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
164447          ,p_application_id   => p_application_id
164448          ,p_amb_context_code => 'DEFAULT'
164449          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
164450          ,p_event_class_code => C_EVENT_CLASS_CODE
164451          ,p_event_type_code  => C_EVENT_TYPE_CODE
164452          
164453          ,p_gain_ccid        => -1
164454          ,p_loss_ccid        => -1
164455 
164456          ,p_actual_flag      => l_actual_flag
164457          ,p_enc_flag         => null
164458          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
164459          ,p_enc_g_l_ref      => null
164460          );
164461       END IF;
164462    END IF;
164463 END IF;
164464 
164465    ELSE
164466       --
164467       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
164468       --
164469       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164470          trace
164471             (p_msg      => 'Trancaction revesal option is Y'
164472             ,p_level    => C_LEVEL_STATEMENT
164473             ,p_module   => l_log_module);
164474       END IF;
164475    END IF;
164476 
164477 END LOOP;
164478 l_result := XLA_AE_LINES_PKG.InsertLines ;
164479 end loop;
164480 close line_cur;
164481 
164482 
164483 --
164484 -- insert headers into xla_ae_headers_gt table
164485 --
164486 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
164487 
164488 -- insert into errors table here.
164489 
164490 END LOOP;
164491 
164492 --
164493 -- 4865292
164494 --
164495 -- Compare g_hdr_extract_count with event count in
164496 -- CreateHeadersAndLines.
164497 --
164498 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
164499 
164500 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164501    trace (p_msg     => '# rows extracted from header extract objects '
164502                     || ' (running total): '
164503                     || g_hdr_extract_count
164504          ,p_level   => C_LEVEL_STATEMENT
164505          ,p_module  => l_log_module);
164506 END IF;
164507 
164508 CLOSE header_cur;
164509 --
164510 
164511 --
164512 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
164513    trace
164514       (p_msg      => 'END of EventClass_274'
164515       ,p_level    => C_LEVEL_PROCEDURE
164516       ,p_module   => l_log_module);
164517 END IF;
164518 --
164519 RETURN l_result;
164520 EXCEPTION
164521 WHEN xla_exceptions_pkg.application_exception THEN
164522    
164523 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
164524 
164525    
164526 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
164527 
164528    RAISE;
164529 
164530 WHEN NO_DATA_FOUND THEN
164531 
164532 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
164533 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
164534 
164535 FOR header_record IN header_cur
164536 LOOP
164537     l_array_header_events(header_record.event_id) := header_record.event_id;
164538 END LOOP;
164539 
164540 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
164541 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
164542 
164543 fnd_file.put_line(fnd_file.LOG, '                    ');
164544 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
164545 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
164546 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
164547 
164548 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
164549 LOOP
164550 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
164551 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
164552         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
164553 	END IF;
164554 END LOOP;
164555 
164556 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
164557 fnd_file.put_line(fnd_file.LOG, '                    ');
164558 
164559 
164560 xla_exceptions_pkg.raise_message
164561       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_274');
164562 
164563 
164564 WHEN OTHERS THEN
164565    xla_exceptions_pkg.raise_message
164566       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_274');
164567 END EventClass_274;
164568 --
164569 
164570 ---------------------------------------
164571 --
164572 -- PRIVATE PROCEDURE
164573 --         insert_sources_275
164574 --
164575 ----------------------------------------
164576 --
164577 PROCEDURE insert_sources_275(
164578                                 p_target_ledger_id       IN NUMBER
164579                               , p_language               IN VARCHAR2
164580                               , p_sla_ledger_id          IN NUMBER
164581                               , p_pad_start_date         IN DATE
164582                               , p_pad_end_date           IN DATE
164583                          )
164584 IS
164585 
164586 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_INTERCOMPANY_ALL';
164587 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'LOG_INTERCOMPANY';
164588 p_apps_owner                   VARCHAR2(30);
164589 l_log_module                   VARCHAR2(240);
164590 BEGIN
164591 IF g_log_enabled THEN
164592       l_log_module := C_DEFAULT_MODULE||'.insert_sources_275';
164593 END IF;
164594 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
164595 
164596       trace
164597          (p_msg      => 'BEGIN of insert_sources_275'
164598          ,p_level    => C_LEVEL_PROCEDURE
164599          ,p_module   => l_log_module);
164600 
164601 END IF;
164602 
164603 -- select APPS owner
164604 SELECT oracle_username
164605   INTO p_apps_owner
164606   FROM fnd_oracle_userid
164607  WHERE read_only_flag = 'U'
164608 ;
164609 
164610 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164611       trace
164612          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
164613                         ' - p_language = '||p_language||
164614                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
164615                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
164616                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
164617                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
164618          ,p_level    => C_LEVEL_STATEMENT
164619          ,p_module   => l_log_module);
164620 END IF;
164621 
164622 
164623 --
164624 INSERT INTO xla_diag_sources --hdr2
164625 (
164626         event_id
164627       , ledger_id
164628       , sla_ledger_id
164629       , description_language
164630       , object_name
164631       , object_type_code
164632       , line_number
164633       , source_application_id
164634       , source_type_code
164635       , source_code
164636       , source_value
164637       , source_meaning
164638       , created_by
164639       , creation_date
164640       , last_update_date
164641       , last_updated_by
164642       , last_update_login
164643       , program_update_date
164644       , program_application_id
164645       , program_id
164646       , request_id
164647 )
164648 SELECT
164649         event_id
164650       , p_target_ledger_id
164651       , p_sla_ledger_id
164652       , p_language
164653       , object_name
164654       , object_type_code
164655       , line_number
164656       , source_application_id
164657       , source_type_code
164658       , source_code
164659       , SUBSTR(source_value ,1,1996)
164660       , SUBSTR(source_meaning ,1,200)
164661       , xla_environment_pkg.g_Usr_Id
164662       , TRUNC(SYSDATE)
164663       , TRUNC(SYSDATE)
164664       , xla_environment_pkg.g_Usr_Id
164665       , xla_environment_pkg.g_Login_Id
164666       , TRUNC(SYSDATE)
164667       , xla_environment_pkg.g_Prog_Appl_Id
164668       , xla_environment_pkg.g_Prog_Id
164669       , xla_environment_pkg.g_Req_Id
164670   FROM (
164671        SELECT xet.event_id                  event_id
164672             , 0                          line_number
164673             , CASE r
164674                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
164675                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
164676                 WHEN 3 THEN 'CST_XLA_INV_HEADERS_V' 
164677                 
164678                ELSE null
164679               END                           object_name
164680             , CASE r
164681                 WHEN 1 THEN 'HEADER' 
164682                 WHEN 2 THEN 'HEADER' 
164683                 WHEN 3 THEN 'HEADER' 
164684                 
164685                 ELSE null
164686               END                           object_type_code
164687             , CASE r
164688                 WHEN 1 THEN '707' 
164689                 WHEN 2 THEN '707' 
164690                 WHEN 3 THEN '707' 
164691                 
164692                 ELSE null
164693               END                           source_application_id
164694             , 'S'             source_type_code
164695             , CASE r
164696                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
164697                 WHEN 2 THEN 'TRANSACTION_ACTION_ID' 
164698                 WHEN 3 THEN 'TRANSFER_TO_GL_INDICATOR' 
164699                 
164700                 ELSE null
164701               END                           source_code
164702             , CASE r
164703                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
164704                 WHEN 2 THEN TO_CHAR(h1.TRANSACTION_ACTION_ID)
164705                 WHEN 3 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
164706                 
164707                 ELSE null
164708               END                           source_value
164709             , CASE r
164710                 WHEN 1 THEN fvl12.meaning
164711                 WHEN 2 THEN fvl35.meaning
164712                 WHEN 3 THEN fvl38.meaning
164713                 
164714                 ELSE null
164715               END               source_meaning
164716          FROM xla_events_gt     xet  
164717       , CST_XLA_INV_HEADERS_V  h1
164718   , fnd_lookup_values    fvl12
164719   , fnd_lookup_values    fvl35
164720   , fnd_lookup_values    fvl38
164721              ,(select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
164722          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
164723            AND xet.event_class_code = C_EVENT_CLASS_CODE
164724               AND h1.event_id = xet.event_id
164725    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
164726   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
164727   AND fvl12.view_application_id(+) = 700
164728   AND fvl12.language(+)            = USERENV('LANG')
164729      AND fvl35.lookup_type(+)         = 'MTL_TRANSACTION_ACTION'
164730   AND fvl35.lookup_code(+)         = h1.TRANSACTION_ACTION_ID
164731   AND fvl35.view_application_id(+) = 700
164732   AND fvl35.language(+)            = USERENV('LANG')
164733      AND fvl38.lookup_type(+)         = 'YES_NO'
164734   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
164735   AND fvl38.view_application_id(+) = 0
164736   AND fvl38.language(+)            = USERENV('LANG')
164737   
164738 )
164739 ;
164740 --
164741 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164742 
164743       trace
164744          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
164745          ,p_level    => C_LEVEL_STATEMENT
164746          ,p_module   => l_log_module);
164747 
164748 END IF;
164749 --
164750 
164751 
164752 
164753 --
164754 INSERT INTO xla_diag_sources  --line2
164755 (
164756         event_id
164757       , ledger_id
164758       , sla_ledger_id
164759       , description_language
164760       , object_name
164761       , object_type_code
164762       , line_number
164763       , source_application_id
164764       , source_type_code
164765       , source_code
164766       , source_value
164767       , source_meaning
164768       , created_by
164769       , creation_date
164770       , last_update_date
164771       , last_updated_by
164772       , last_update_login
164773       , program_update_date
164774       , program_application_id
164775       , program_id
164776       , request_id
164777 )
164778 SELECT  event_id
164779       , p_target_ledger_id
164780       , p_sla_ledger_id
164781       , p_language
164782       , object_name
164783       , object_type_code
164784       , line_number
164785       , source_application_id
164786       , source_type_code
164787       , source_code
164788       , SUBSTR(source_value,1,1996)
164789       , SUBSTR(source_meaning ,1,200)
164790       , xla_environment_pkg.g_Usr_Id
164791       , TRUNC(SYSDATE)
164792       , TRUNC(SYSDATE)
164793       , xla_environment_pkg.g_Usr_Id
164794       , xla_environment_pkg.g_Login_Id
164795       , TRUNC(SYSDATE)
164796       , xla_environment_pkg.g_Prog_Appl_Id
164797       , xla_environment_pkg.g_Prog_Id
164798       , xla_environment_pkg.g_Req_Id
164799   FROM (
164800        SELECT xet.event_id                  event_id
164801             , l2.line_number                 line_number
164802             , CASE r
164803                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
164804                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
164805                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
164806                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
164807                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
164808                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
164809                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
164810                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
164811                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
164812                 
164813                ELSE null
164814               END                           object_name
164815             , CASE r
164816                 WHEN 1 THEN 'LINE' 
164817                 WHEN 2 THEN 'LINE' 
164818                 WHEN 3 THEN 'LINE' 
164819                 WHEN 4 THEN 'LINE' 
164820                 WHEN 5 THEN 'LINE' 
164821                 WHEN 6 THEN 'LINE' 
164822                 WHEN 7 THEN 'LINE' 
164823                 WHEN 8 THEN 'LINE' 
164824                 WHEN 9 THEN 'LINE' 
164825                 
164826                 ELSE null
164827               END                           object_type_code
164828             , CASE r
164829                 WHEN 1 THEN '707' 
164830                 WHEN 2 THEN '707' 
164831                 WHEN 3 THEN '707' 
164832                 WHEN 4 THEN '707' 
164833                 WHEN 5 THEN '707' 
164834                 WHEN 6 THEN '707' 
164835                 WHEN 7 THEN '707' 
164836                 WHEN 8 THEN '707' 
164837                 WHEN 9 THEN '707' 
164838                 
164839                 ELSE null
164840               END                           source_application_id
164841             , 'S'             source_type_code
164842             , CASE r
164843                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
164844                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
164845                 WHEN 3 THEN 'CURRENCY_CODE' 
164846                 WHEN 4 THEN 'ENTERED_AMOUNT' 
164847                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
164848                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
164849                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
164850                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
164851                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
164852                 
164853                 ELSE null
164854               END                           source_code
164855             , CASE r
164856                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
164857                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
164858                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
164859                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
164860                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
164861                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
164862                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
164863                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
164864                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
164865                 
164866                 ELSE null
164867               END                           source_value
164868             , null              source_meaning
164869          FROM  xla_events_gt     xet  
164870         , CST_XLA_INV_LINES_V  l2
164871             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
164872         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
164873           AND xet.event_class_code = C_EVENT_CLASS_CODE
164874             AND l2.event_id          = xet.event_id
164875 
164876 )
164877 ;
164878 --
164879 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164880 
164881       trace
164882          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
164883          ,p_level    => C_LEVEL_STATEMENT
164884          ,p_module   => l_log_module);
164885 
164886 END IF;
164887 
164888 
164889 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
164890       trace
164891          (p_msg      => 'END of insert_sources_275'
164892          ,p_level    => C_LEVEL_PROCEDURE
164893          ,p_module   => l_log_module);
164894 END IF;
164895 EXCEPTION
164896   WHEN xla_exceptions_pkg.application_exception THEN
164897       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
164898             trace
164899                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
164900                ,p_level    => C_LEVEL_EXCEPTION
164901                ,p_module   => l_log_module);
164902       END IF;
164903       RAISE;
164904   WHEN OTHERS THEN
164905       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
164906             trace
164907                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
164908                ,p_level    => C_LEVEL_EXCEPTION
164909                ,p_module   => l_log_module);
164910        END IF;
164911        xla_exceptions_pkg.raise_message
164912            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_275');
164913 END insert_sources_275;
164914 --
164915 
164916 ---------------------------------------
164917 --
164918 -- PRIVATE FUNCTION
164919 --         EventClass_275
164920 --
164921 ----------------------------------------
164922 --
164923 FUNCTION EventClass_275
164924        (p_application_id         IN NUMBER
164925        ,p_base_ledger_id         IN NUMBER
164926        ,p_target_ledger_id       IN NUMBER
164927        ,p_language               IN VARCHAR2
164928        ,p_currency_code          IN VARCHAR2
164929        ,p_sla_ledger_id          IN NUMBER
164930        ,p_pad_start_date         IN DATE
164931        ,p_pad_end_date           IN DATE
164932        ,p_primary_ledger_id      IN NUMBER)
164933 RETURN BOOLEAN IS
164934 --
164935 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_INTERCOMPANY_ALL';
164936 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'LOG_INTERCOMPANY';
164937 
164938 l_calculate_acctd_flag   VARCHAR2(1) :='N';
164939 l_calculate_g_l_flag     VARCHAR2(1) :='N';
164940 --
164941 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
164942 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
164943 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
164944 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
164945 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
164946 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
164947 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
164948 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
164949 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
164950 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
164951 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
164952 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
164953 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
164954 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
164955 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
164956 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
164957 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
164958 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
164959 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
164960 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
164961 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
164962 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
164963 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
164964 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
164965 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
164966 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
164967 
164968 l_event_id                             NUMBER;
164969 l_previous_event_id                    NUMBER;
164970 l_first_event_id                       NUMBER;
164971 l_last_event_id                        NUMBER;
164972 
164973 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
164974 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
164975 --
164976 --
164977 l_result                    BOOLEAN := TRUE;
164978 l_rows                      NUMBER  := 1000;
164979 l_event_type_name           VARCHAR2(80) := 'All';
164980 l_event_class_name          VARCHAR2(80) := 'Logical Intercompany';
164981 l_description               VARCHAR2(4000);
164982 l_transaction_reversal      NUMBER;
164983 l_ae_header_id              NUMBER;
164984 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
164985 l_log_module                VARCHAR2(240);
164986 --
164987 l_acct_reversal_source      VARCHAR2(30);
164988 l_trx_reversal_source       VARCHAR2(30);
164989 
164990 l_continue_with_lines       BOOLEAN := TRUE;
164991 --
164992 l_acc_rev_gl_date_source    DATE;                      -- 4262811
164993 --
164994 type t_array_event_id is table of number index by binary_integer;
164995 
164996 l_rec_array_event                    t_rec_array_event;
164997 l_null_rec_array_event               t_rec_array_event;
164998 l_array_ae_header_id                 xla_number_array_type;
164999 l_actual_flag                        VARCHAR2(1) := NULL;
165000 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
165001 l_balance_type_code                  VARCHAR2(1) :=NULL;
165002 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
165003 
165004 --
165005 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
165006 --
165007 
165008 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
165009 TYPE t_array_source_35 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ACTION_ID%TYPE INDEX BY BINARY_INTEGER;
165010 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
165011 
165012 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
165013 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
165014 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
165015 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
165016 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
165017 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
165018 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
165019 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
165020 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
165021 
165022 l_array_source_12              t_array_source_12;
165023 l_array_source_12_meaning      t_array_lookup_meaning;
165024 l_array_source_35              t_array_source_35;
165025 l_array_source_35_meaning      t_array_lookup_meaning;
165026 l_array_source_38              t_array_source_38;
165027 l_array_source_38_meaning      t_array_lookup_meaning;
165028 
165029 l_array_source_4      t_array_source_4;
165030 l_array_source_11      t_array_source_11;
165031 l_array_source_15      t_array_source_15;
165032 l_array_source_18      t_array_source_18;
165033 l_array_source_19      t_array_source_19;
165034 l_array_source_20      t_array_source_20;
165035 l_array_source_21      t_array_source_21;
165036 l_array_source_22      t_array_source_22;
165037 l_array_source_24      t_array_source_24;
165038 
165039 --
165040 CURSOR header_cur
165041 IS
165042 SELECT /*+ leading(xet) cardinality(xet,1) */
165043 -- Event Class Code: LOG_INTERCOMPANY
165044     xet.entity_id
165045    ,xet.legal_entity_id
165046    ,xet.entity_code
165047    ,xet.transaction_number
165048    ,xet.event_id
165049    ,xet.event_class_code
165050    ,xet.event_type_code
165051    ,xet.event_number
165052    ,xet.event_date
165053    ,xet.transaction_date
165054    ,xet.reference_num_1
165055    ,xet.reference_num_2
165056    ,xet.reference_num_3
165057    ,xet.reference_num_4
165058    ,xet.reference_char_1
165059    ,xet.reference_char_2
165060    ,xet.reference_char_3
165061    ,xet.reference_char_4
165062    ,xet.reference_date_1
165063    ,xet.reference_date_2
165064    ,xet.reference_date_3
165065    ,xet.reference_date_4
165066    ,xet.event_created_by
165067    ,xet.budgetary_control_flag 
165068   , h1.DISTRIBUTION_TYPE    source_12
165069   , fvl12.meaning   source_12_meaning
165070   , h1.TRANSACTION_ACTION_ID    source_35
165071   , fvl35.meaning   source_35_meaning
165072   , h1.TRANSFER_TO_GL_INDICATOR    source_38
165073   , fvl38.meaning   source_38_meaning
165074   FROM xla_events_gt     xet 
165075   , CST_XLA_INV_HEADERS_V  h1
165076   , fnd_lookup_values    fvl12
165077   , fnd_lookup_values    fvl35
165078   , fnd_lookup_values    fvl38
165079  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
165080    and xet.event_class_code = C_EVENT_CLASS_CODE
165081    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
165082    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
165083   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
165084   AND fvl12.view_application_id(+) = 700
165085   AND fvl12.language(+)            = USERENV('LANG')
165086      AND fvl35.lookup_type(+)         = 'MTL_TRANSACTION_ACTION'
165087   AND fvl35.lookup_code(+)         = h1.TRANSACTION_ACTION_ID
165088   AND fvl35.view_application_id(+) = 700
165089   AND fvl35.language(+)            = USERENV('LANG')
165090      AND fvl38.lookup_type(+)         = 'YES_NO'
165091   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
165092   AND fvl38.view_application_id(+) = 0
165093   AND fvl38.language(+)            = USERENV('LANG')
165094   
165095  ORDER BY event_id
165096 ;
165097 
165098 
165099 --
165100 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
165101 IS
165102 SELECT  /*+ leading(xet) cardinality(xet,1) */
165103 -- Event Class Code: LOG_INTERCOMPANY
165104     xet.entity_id
165105    ,xet.legal_entity_id
165106    ,xet.entity_code
165107    ,xet.transaction_number
165108    ,xet.event_id
165109    ,xet.event_class_code
165110    ,xet.event_type_code
165111    ,xet.event_number
165112    ,xet.event_date
165113    ,xet.transaction_date
165114    ,xet.reference_num_1
165115    ,xet.reference_num_2
165116    ,xet.reference_num_3
165117    ,xet.reference_num_4
165118    ,xet.reference_char_1
165119    ,xet.reference_char_2
165120    ,xet.reference_char_3
165121    ,xet.reference_char_4
165122    ,xet.reference_date_1
165123    ,xet.reference_date_2
165124    ,xet.reference_date_3
165125    ,xet.reference_date_4
165126    ,xet.event_created_by
165127    ,xet.budgetary_control_flag
165128  , l2.LINE_NUMBER  
165129   , l2.CODE_COMBINATION_ID    source_4
165130   , l2.DISTRIBUTION_IDENTIFIER    source_11
165131   , l2.CURRENCY_CODE    source_15
165132   , l2.ENTERED_AMOUNT    source_18
165133   , l2.CURRENCY_CONVERSION_DATE    source_19
165134   , l2.CURRENCY_CONVERSION_RATE    source_20
165135   , l2.CURRENCY_CONVERSION_TYPE    source_21
165136   , l2.ACCOUNTED_AMOUNT    source_22
165137   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
165138   FROM xla_events_gt     xet 
165139   , CST_XLA_INV_LINES_V  l2
165140  WHERE xet.event_id between x_first_event_id and x_last_event_id
165141    and xet.event_date between p_pad_start_date and p_pad_end_date
165142    and xet.event_class_code = C_EVENT_CLASS_CODE
165143    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
165144 ;
165145 
165146 --
165147 BEGIN
165148 IF g_log_enabled THEN
165149    l_log_module := C_DEFAULT_MODULE||'.EventClass_275';
165150 END IF;
165151 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
165152    trace
165153       (p_msg      => 'BEGIN of EventClass_275'
165154       ,p_level    => C_LEVEL_PROCEDURE
165155       ,p_module   => l_log_module);
165156 END IF;
165157 
165158 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165159    trace
165160       (p_msg      => 'p_application_id = '||p_application_id||
165161                      ' - p_base_ledger_id = '||p_base_ledger_id||
165162                      ' - p_target_ledger_id  = '||p_target_ledger_id||
165163                      ' - p_language = '||p_language||
165164                      ' - p_currency_code = '||p_currency_code||
165165                      ' - p_sla_ledger_id = '||p_sla_ledger_id
165166       ,p_level    => C_LEVEL_STATEMENT
165167       ,p_module   => l_log_module);
165168 END IF;
165169 --
165170 -- initialze arrays
165171 --
165172 g_array_event.DELETE;
165173 l_rec_array_event := l_null_rec_array_event;
165174 --
165175 --------------------------------------
165176 -- 4262811 Initialze MPA Line Number
165177 --------------------------------------
165178 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
165179 
165180 --
165181 
165182 --
165183 OPEN header_cur;
165184 --
165185 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165186    trace
165187    (p_msg      => 'SQL - FETCH header_cur'
165188    ,p_level    => C_LEVEL_STATEMENT
165189    ,p_module   => l_log_module);
165190 END IF;
165191 --
165192 LOOP
165193 FETCH header_cur BULK COLLECT INTO
165194         l_array_entity_id
165195       , l_array_legal_entity_id
165196       , l_array_entity_code
165197       , l_array_transaction_num
165198       , l_array_event_id
165199       , l_array_class_code
165200       , l_array_event_type
165201       , l_array_event_number
165202       , l_array_event_date
165203       , l_array_transaction_date
165204       , l_array_reference_num_1
165205       , l_array_reference_num_2
165206       , l_array_reference_num_3
165207       , l_array_reference_num_4
165208       , l_array_reference_char_1
165209       , l_array_reference_char_2
165210       , l_array_reference_char_3
165211       , l_array_reference_char_4
165212       , l_array_reference_date_1
165213       , l_array_reference_date_2
165214       , l_array_reference_date_3
165215       , l_array_reference_date_4
165216       , l_array_event_created_by
165217       , l_array_budgetary_control_flag 
165218       , l_array_source_12
165219       , l_array_source_12_meaning
165220       , l_array_source_35
165221       , l_array_source_35_meaning
165222       , l_array_source_38
165223       , l_array_source_38_meaning
165224       LIMIT l_rows;
165225 --
165226 IF (C_LEVEL_EVENT >= g_log_level) THEN
165227    trace
165228    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
165229    ,p_level    => C_LEVEL_EVENT
165230    ,p_module   => l_log_module);
165231 END IF;
165232 --
165233 EXIT WHEN l_array_entity_id.COUNT = 0;
165234 
165235 -- initialize arrays
165236 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
165237 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
165238 
165239 --
165240 -- Bug 4458708
165241 --
165242 XLA_AE_LINES_PKG.g_LineNumber := 0;
165243 
165244 
165245 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
165246 g_last_hdr_idx := l_array_event_id.LAST;
165247 --
165248 -- loop for the headers. Each iteration is for each header extract row
165249 -- fetched in header cursor
165250 --
165251 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
165252 
165253 --
165254 -- set event info as cache for other routines to refer event attributes
165255 --
165256 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
165257    (p_application_id           => p_application_id
165258    ,p_primary_ledger_id        => p_primary_ledger_id
165259    ,p_base_ledger_id           => p_base_ledger_id
165260    ,p_target_ledger_id         => p_target_ledger_id
165261    ,p_entity_id                => l_array_entity_id(hdr_idx)
165262    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
165263    ,p_entity_code              => l_array_entity_code(hdr_idx)
165264    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
165265    ,p_event_id                 => l_array_event_id(hdr_idx)
165266    ,p_event_class_code         => l_array_class_code(hdr_idx)
165267    ,p_event_type_code          => l_array_event_type(hdr_idx)
165268    ,p_event_number             => l_array_event_number(hdr_idx)
165269    ,p_event_date               => l_array_event_date(hdr_idx)
165270    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
165271    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
165272    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
165273    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
165274    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
165275    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
165276    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
165277    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
165278    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
165279    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
165280    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
165281    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
165282    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
165283    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
165284    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
165285 
165286 --
165287 -- set the status of entry to C_VALID (0)
165288 --
165289 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
165290 
165291 --
165292 -- initialize a row for ae header
165293 --
165294 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
165295 
165296 l_event_id := l_array_event_id(hdr_idx);
165297 
165298 --
165299 -- storing the hdr_idx for event. May be used by line cursor.
165300 --
165301 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
165302 
165303 --
165304 -- store sources from header extract. This can be improved to
165305 -- store only those sources from header extract that may be used in lines
165306 --
165307 
165308 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
165309 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
165310 g_array_event(l_event_id).array_value_num('source_35') := l_array_source_35(hdr_idx);
165311 g_array_event(l_event_id).array_value_char('source_35_meaning') := l_array_source_35_meaning(hdr_idx);
165312 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
165313 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
165314 
165315 --
165316 -- initilaize the status of ae headers for diffrent balance types
165317 -- the status is initialised to C_NOT_CREATED (2)
165318 --
165319 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
165320 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
165321 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
165322 
165323 --
165324 -- call api to validate and store accounting attributes for header
165325 --
165326 
165327 ------------------------------------------------------------
165328 -- Accrual Reversal : to get date for Standard Source (NONE)
165329 ------------------------------------------------------------
165330 l_acc_rev_gl_date_source := NULL;
165331 
165332      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
165333       l_rec_acct_attrs.array_date_value(1) := 
165334 xla_ae_sources_pkg.GetSystemSourceDate(
165335    p_source_code           => 'XLA_REFERENCE_DATE_1'
165336  , p_source_type_code      => 'Y'
165337  , p_source_application_id =>  602
165338 );
165339      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
165340       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
165341 
165342 
165343 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
165344 
165345 XLA_AE_HEADER_PKG.SetJeCategoryName;
165346 
165347 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
165348 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
165349 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
165350 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
165351 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
165352 
165353 
165354 -- No header level analytical criteria
165355 
165356 --
165357 --accounting attribute enhancement, bug 3612931
165358 --
165359 l_trx_reversal_source := SUBSTR(NULL, 1,30);
165360 
165361 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
165362    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
165363 
165364    xla_accounting_err_pkg.build_message
165365       (p_appli_s_name            => 'XLA'
165366       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
165367       ,p_token_1                 => 'ACCT_ATTR_NAME'
165368       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
165369       ,p_token_2                 => 'PRODUCT_NAME'
165370       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
165371       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
165372       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
165373       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
165374 
165375 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
165376    --
165377    -- following sets the accounting attributes needed to reverse
165378    -- accounting for a distributeion
165379    --
165380    xla_ae_lines_pkg.SetTrxReversalAttrs
165381       (p_event_id              => l_event_id
165382       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
165383       ,p_trx_reversal_source   => l_trx_reversal_source);
165384 
165385 END IF;
165386 
165387 
165388 ----------------------------------------------------------------
165389 -- 4262811 -  update the header statuses to invalid in need be
165390 ----------------------------------------------------------------
165391 --
165392 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
165393 
165394 
165395   -----------------------------------------------
165396   -- No accrual reversal for the event class/type
165397   -----------------------------------------------
165398 ----------------------------------------------------------------
165399 
165400 --
165401 -- this ends the header loop iteration for one bulk fetch
165402 --
165403 END LOOP;
165404 
165405 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
165406 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
165407 
165408 --
165409 -- insert dummy rows into lines gt table that were created due to
165410 -- transaction reversals
165411 --
165412 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
165413    l_result := XLA_AE_LINES_PKG.InsertLines;
165414 END IF;
165415 
165416 --
165417 -- reset the temp_line_num for each set of events fetched from header
165418 -- cursor rather than doing it for each new event in line cursor
165419 -- Bug 3939231
165420 --
165421 xla_ae_lines_pkg.g_temp_line_num := 0;
165422 
165423 
165424 
165425 --
165426 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
165427 --
165428 --
165429 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165430 
165431       trace
165432          (p_msg      => 'SQL - FETCH line_cur'
165433          ,p_level    => C_LEVEL_STATEMENT
165434          ,p_module   => l_log_module);
165435 
165436 END IF;
165437 --
165438 --
165439 LOOP
165440   --
165441   FETCH line_cur BULK COLLECT INTO
165442         l_array_entity_id
165443       , l_array_legal_entity_id
165444       , l_array_entity_code
165445       , l_array_transaction_num
165446       , l_array_event_id
165447       , l_array_class_code
165448       , l_array_event_type
165449       , l_array_event_number
165450       , l_array_event_date
165451       , l_array_transaction_date
165452       , l_array_reference_num_1
165453       , l_array_reference_num_2
165454       , l_array_reference_num_3
165455       , l_array_reference_num_4
165456       , l_array_reference_char_1
165457       , l_array_reference_char_2
165458       , l_array_reference_char_3
165459       , l_array_reference_char_4
165460       , l_array_reference_date_1
165461       , l_array_reference_date_2
165462       , l_array_reference_date_3
165463       , l_array_reference_date_4
165464       , l_array_event_created_by
165465       , l_array_budgetary_control_flag
165466       , l_array_extract_line_num 
165467       , l_array_source_4
165468       , l_array_source_11
165469       , l_array_source_15
165470       , l_array_source_18
165471       , l_array_source_19
165472       , l_array_source_20
165473       , l_array_source_21
165474       , l_array_source_22
165475       , l_array_source_24
165476       LIMIT l_rows;
165477 
165478   --
165479   IF (C_LEVEL_EVENT >= g_log_level) THEN
165480             trace
165481                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
165482                ,p_level    => C_LEVEL_EVENT
165483                ,p_module   => l_log_module);
165484   END IF;
165485   --
165486   EXIT WHEN l_array_entity_id.count = 0;
165487 
165488   XLA_AE_LINES_PKG.g_rec_lines := null;
165489 
165490 --
165491 -- Bug 4458708
165492 --
165493 XLA_AE_LINES_PKG.g_LineNumber := 0;
165494 --
165495 --
165496 
165497 FOR Idx IN 1..l_array_event_id.count LOOP
165498    --
165499    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
165500    --
165501    l_event_id := l_array_event_id(idx);  -- 5648433
165502 
165503    --
165504    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
165505    --
165506 
165507    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
165508              (g_array_event(l_event_id).array_value_num('header_index'))
165509          ,'N'
165510          ) <> 'Y'
165511    THEN
165512       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165513          trace
165514             (p_msg      => 'Trancaction revesal option is not Y '
165515             ,p_level    => C_LEVEL_STATEMENT
165516             ,p_module   => l_log_module);
165517       END IF;
165518 
165519 --
165520 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
165521 --
165522 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
165523 --
165524 -- set event info as cache for other routines to refer event attributes
165525 --
165526 
165527 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
165528    l_previous_event_id := l_event_id;
165529 
165530    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
165531       (p_application_id           => p_application_id
165532       ,p_primary_ledger_id        => p_primary_ledger_id
165533       ,p_base_ledger_id           => p_base_ledger_id
165534       ,p_target_ledger_id         => p_target_ledger_id
165535       ,p_entity_id                => l_array_entity_id(Idx)
165536       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
165537       ,p_entity_code              => l_array_entity_code(Idx)
165538       ,p_transaction_num          => l_array_transaction_num(Idx)
165539       ,p_event_id                 => l_array_event_id(Idx)
165540       ,p_event_class_code         => l_array_class_code(Idx)
165541       ,p_event_type_code          => l_array_event_type(Idx)
165542       ,p_event_number             => l_array_event_number(Idx)
165543       ,p_event_date               => l_array_event_date(Idx)
165544       ,p_transaction_date         => l_array_transaction_date(Idx)
165545       ,p_reference_num_1          => l_array_reference_num_1(Idx)
165546       ,p_reference_num_2          => l_array_reference_num_2(Idx)
165547       ,p_reference_num_3          => l_array_reference_num_3(Idx)
165548       ,p_reference_num_4          => l_array_reference_num_4(Idx)
165549       ,p_reference_char_1         => l_array_reference_char_1(Idx)
165550       ,p_reference_char_2         => l_array_reference_char_2(Idx)
165551       ,p_reference_char_3         => l_array_reference_char_3(Idx)
165552       ,p_reference_char_4         => l_array_reference_char_4(Idx)
165553       ,p_reference_date_1         => l_array_reference_date_1(Idx)
165554       ,p_reference_date_2         => l_array_reference_date_2(Idx)
165555       ,p_reference_date_3         => l_array_reference_date_3(Idx)
165556       ,p_reference_date_4         => l_array_reference_date_4(Idx)
165557       ,p_event_created_by         => l_array_event_created_by(Idx)
165558       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
165559        --
165560 END IF;
165561 
165562 
165563 
165564 --
165565 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
165566 
165567 l_acct_reversal_source := SUBSTR(NULL, 1,30);
165568 
165569 IF l_continue_with_lines THEN
165570    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
165571       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
165572 
165573       xla_accounting_err_pkg.build_message
165574          (p_appli_s_name            => 'XLA'
165575          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
165576          ,p_token_1                 => 'LINE_NUMBER'
165577          ,p_value_1                 => l_array_extract_line_num(Idx)
165578          ,p_token_2                 => 'PRODUCT_NAME'
165579          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
165580          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
165581          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
165582          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
165583 
165584    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
165585       --
165586       -- following sets the accounting attributes needed to reverse
165587       -- accounting for a distributeion
165588       --
165589 
165590       --
165591       -- 5217187
165592       --
165593       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
165594       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
165595                                        g_array_event(l_event_id).array_value_num('header_index'));
165596       --
165597       --
165598 
165599       -- No reversal code generated
165600 
165601       xla_ae_lines_pkg.SetAcctReversalAttrs
165602          (p_event_id             => l_event_id
165603          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
165604          ,p_calculate_acctd_flag => l_calculate_acctd_flag
165605          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
165606    END IF;
165607 
165608    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
165609        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
165610 
165611 --
165612 AcctLineType_16 (
165613  p_application_id  => p_application_id
165614  ,p_event_id     => l_event_id
165615  ,p_calculate_acctd_flag => l_calculate_acctd_flag
165616  ,p_calculate_g_l_flag => l_calculate_g_l_flag
165617  ,p_actual_flag => l_actual_flag
165618  ,p_balance_type_code => l_balance_type_code
165619  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
165620  
165621  , p_source_4 => l_array_source_4(Idx)
165622  , p_source_11 => l_array_source_11(Idx)
165623  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
165624  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
165625  , p_source_15 => l_array_source_15(Idx)
165626  , p_source_18 => l_array_source_18(Idx)
165627  , p_source_19 => l_array_source_19(Idx)
165628  , p_source_20 => l_array_source_20(Idx)
165629  , p_source_21 => l_array_source_21(Idx)
165630  , p_source_22 => l_array_source_22(Idx)
165631  , p_source_24 => l_array_source_24(Idx)
165632  );
165633 If(l_balance_type_code = 'A') THEN
165634   l_actual_gain_loss_ref := l_gain_or_loss_ref;
165635 END IF;
165636 
165637 --
165638 
165639 
165640 --
165641 AcctLineType_58 (
165642  p_application_id  => p_application_id
165643  ,p_event_id     => l_event_id
165644  ,p_calculate_acctd_flag => l_calculate_acctd_flag
165645  ,p_calculate_g_l_flag => l_calculate_g_l_flag
165646  ,p_actual_flag => l_actual_flag
165647  ,p_balance_type_code => l_balance_type_code
165648  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
165649  
165650  , p_source_4 => l_array_source_4(Idx)
165651  , p_source_11 => l_array_source_11(Idx)
165652  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
165653  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
165654  , p_source_15 => l_array_source_15(Idx)
165655  , p_source_18 => l_array_source_18(Idx)
165656  , p_source_19 => l_array_source_19(Idx)
165657  , p_source_20 => l_array_source_20(Idx)
165658  , p_source_21 => l_array_source_21(Idx)
165659  , p_source_22 => l_array_source_22(Idx)
165660  , p_source_24 => l_array_source_24(Idx)
165661  );
165662 If(l_balance_type_code = 'A') THEN
165663   l_actual_gain_loss_ref := l_gain_or_loss_ref;
165664 END IF;
165665 
165666 --
165667 
165668 
165669 --
165670 AcctLineType_59 (
165671  p_application_id  => p_application_id
165672  ,p_event_id     => l_event_id
165673  ,p_calculate_acctd_flag => l_calculate_acctd_flag
165674  ,p_calculate_g_l_flag => l_calculate_g_l_flag
165675  ,p_actual_flag => l_actual_flag
165676  ,p_balance_type_code => l_balance_type_code
165677  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
165678  
165679  , p_source_4 => l_array_source_4(Idx)
165680  , p_source_11 => l_array_source_11(Idx)
165681  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
165682  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
165683  , p_source_15 => l_array_source_15(Idx)
165684  , p_source_18 => l_array_source_18(Idx)
165685  , p_source_19 => l_array_source_19(Idx)
165686  , p_source_20 => l_array_source_20(Idx)
165687  , p_source_21 => l_array_source_21(Idx)
165688  , p_source_22 => l_array_source_22(Idx)
165689  , p_source_24 => l_array_source_24(Idx)
165690  , p_source_35 => g_array_event(l_event_id).array_value_num('source_35')
165691  , p_source_35_meaning => g_array_event(l_event_id).array_value_char('source_35_meaning')
165692  );
165693 If(l_balance_type_code = 'A') THEN
165694   l_actual_gain_loss_ref := l_gain_or_loss_ref;
165695 END IF;
165696 
165697 --
165698 
165699 
165700 --
165701 AcctLineType_151 (
165702  p_application_id  => p_application_id
165703  ,p_event_id     => l_event_id
165704  ,p_calculate_acctd_flag => l_calculate_acctd_flag
165705  ,p_calculate_g_l_flag => l_calculate_g_l_flag
165706  ,p_actual_flag => l_actual_flag
165707  ,p_balance_type_code => l_balance_type_code
165708  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
165709  
165710  , p_source_4 => l_array_source_4(Idx)
165711  , p_source_11 => l_array_source_11(Idx)
165712  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
165713  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
165714  , p_source_15 => l_array_source_15(Idx)
165715  , p_source_18 => l_array_source_18(Idx)
165716  , p_source_19 => l_array_source_19(Idx)
165717  , p_source_20 => l_array_source_20(Idx)
165718  , p_source_21 => l_array_source_21(Idx)
165719  , p_source_22 => l_array_source_22(Idx)
165720  , p_source_24 => l_array_source_24(Idx)
165721  );
165722 If(l_balance_type_code = 'A') THEN
165723   l_actual_gain_loss_ref := l_gain_or_loss_ref;
165724 END IF;
165725 
165726 --
165727 
165728 
165729 --
165730 AcctLineType_186 (
165731  p_application_id  => p_application_id
165732  ,p_event_id     => l_event_id
165733  ,p_calculate_acctd_flag => l_calculate_acctd_flag
165734  ,p_calculate_g_l_flag => l_calculate_g_l_flag
165735  ,p_actual_flag => l_actual_flag
165736  ,p_balance_type_code => l_balance_type_code
165737  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
165738  
165739  , p_source_4 => l_array_source_4(Idx)
165740  , p_source_11 => l_array_source_11(Idx)
165741  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
165742  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
165743  , p_source_15 => l_array_source_15(Idx)
165744  , p_source_18 => l_array_source_18(Idx)
165745  , p_source_19 => l_array_source_19(Idx)
165746  , p_source_20 => l_array_source_20(Idx)
165747  , p_source_21 => l_array_source_21(Idx)
165748  , p_source_22 => l_array_source_22(Idx)
165749  , p_source_24 => l_array_source_24(Idx)
165750  , p_source_35 => g_array_event(l_event_id).array_value_num('source_35')
165751  , p_source_35_meaning => g_array_event(l_event_id).array_value_char('source_35_meaning')
165752  );
165753 If(l_balance_type_code = 'A') THEN
165754   l_actual_gain_loss_ref := l_gain_or_loss_ref;
165755 END IF;
165756 
165757 --
165758 
165759       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
165760       -- or secondary ledger that has different currency with primary
165761       -- or alc that is calculated by sla
165762       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
165763             (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'))
165764 
165765 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
165766 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
165767           AND (l_actual_flag = 'A')) THEN
165768         XLA_AE_LINES_PKG.CreateGainOrLossLines(
165769           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
165770          ,p_application_id   => p_application_id
165771          ,p_amb_context_code => 'DEFAULT'
165772          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
165773          ,p_event_class_code => C_EVENT_CLASS_CODE
165774          ,p_event_type_code  => C_EVENT_TYPE_CODE
165775          
165776          ,p_gain_ccid        => -1
165777          ,p_loss_ccid        => -1
165778 
165779          ,p_actual_flag      => l_actual_flag
165780          ,p_enc_flag         => null
165781          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
165782          ,p_enc_g_l_ref      => null
165783          );
165784       END IF;
165785    END IF;
165786 END IF;
165787 
165788    ELSE
165789       --
165790       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
165791       --
165792       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165793          trace
165794             (p_msg      => 'Trancaction revesal option is Y'
165795             ,p_level    => C_LEVEL_STATEMENT
165796             ,p_module   => l_log_module);
165797       END IF;
165798    END IF;
165799 
165800 END LOOP;
165801 l_result := XLA_AE_LINES_PKG.InsertLines ;
165802 end loop;
165803 close line_cur;
165804 
165805 
165806 --
165807 -- insert headers into xla_ae_headers_gt table
165808 --
165809 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
165810 
165811 -- insert into errors table here.
165812 
165813 END LOOP;
165814 
165815 --
165816 -- 4865292
165817 --
165818 -- Compare g_hdr_extract_count with event count in
165819 -- CreateHeadersAndLines.
165820 --
165821 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
165822 
165823 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165824    trace (p_msg     => '# rows extracted from header extract objects '
165825                     || ' (running total): '
165826                     || g_hdr_extract_count
165827          ,p_level   => C_LEVEL_STATEMENT
165828          ,p_module  => l_log_module);
165829 END IF;
165830 
165831 CLOSE header_cur;
165832 --
165833 
165834 --
165835 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
165836    trace
165837       (p_msg      => 'END of EventClass_275'
165838       ,p_level    => C_LEVEL_PROCEDURE
165839       ,p_module   => l_log_module);
165840 END IF;
165841 --
165842 RETURN l_result;
165843 EXCEPTION
165844 WHEN xla_exceptions_pkg.application_exception THEN
165845    
165846 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
165847 
165848    
165849 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
165850 
165851    RAISE;
165852 
165853 WHEN NO_DATA_FOUND THEN
165854 
165855 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
165856 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
165857 
165858 FOR header_record IN header_cur
165859 LOOP
165860     l_array_header_events(header_record.event_id) := header_record.event_id;
165861 END LOOP;
165862 
165863 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
165864 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
165865 
165866 fnd_file.put_line(fnd_file.LOG, '                    ');
165867 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
165868 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
165869 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
165870 
165871 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
165872 LOOP
165873 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
165874 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
165875         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
165876 	END IF;
165877 END LOOP;
165878 
165879 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
165880 fnd_file.put_line(fnd_file.LOG, '                    ');
165881 
165882 
165883 xla_exceptions_pkg.raise_message
165884       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_275');
165885 
165886 
165887 WHEN OTHERS THEN
165888    xla_exceptions_pkg.raise_message
165889       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_275');
165890 END EventClass_275;
165891 --
165892 
165893 ---------------------------------------
165894 --
165895 -- PRIVATE PROCEDURE
165896 --         insert_sources_276
165897 --
165898 ----------------------------------------
165899 --
165900 PROCEDURE insert_sources_276(
165901                                 p_target_ledger_id       IN NUMBER
165902                               , p_language               IN VARCHAR2
165903                               , p_sla_ledger_id          IN NUMBER
165904                               , p_pad_start_date         IN DATE
165905                               , p_pad_end_date           IN DATE
165906                          )
165907 IS
165908 
165909 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOT_ALL';
165910 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'LOT';
165911 p_apps_owner                   VARCHAR2(30);
165912 l_log_module                   VARCHAR2(240);
165913 BEGIN
165914 IF g_log_enabled THEN
165915       l_log_module := C_DEFAULT_MODULE||'.insert_sources_276';
165916 END IF;
165917 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
165918 
165919       trace
165920          (p_msg      => 'BEGIN of insert_sources_276'
165921          ,p_level    => C_LEVEL_PROCEDURE
165922          ,p_module   => l_log_module);
165923 
165924 END IF;
165925 
165926 -- select APPS owner
165927 SELECT oracle_username
165928   INTO p_apps_owner
165929   FROM fnd_oracle_userid
165930  WHERE read_only_flag = 'U'
165931 ;
165932 
165933 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165934       trace
165935          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
165936                         ' - p_language = '||p_language||
165937                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
165938                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
165939                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
165940                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
165941          ,p_level    => C_LEVEL_STATEMENT
165942          ,p_module   => l_log_module);
165943 END IF;
165944 
165945 
165946 --
165947 INSERT INTO xla_diag_sources --hdr2
165948 (
165949         event_id
165950       , ledger_id
165951       , sla_ledger_id
165952       , description_language
165953       , object_name
165954       , object_type_code
165955       , line_number
165956       , source_application_id
165957       , source_type_code
165958       , source_code
165959       , source_value
165960       , source_meaning
165961       , created_by
165962       , creation_date
165963       , last_update_date
165964       , last_updated_by
165965       , last_update_login
165966       , program_update_date
165967       , program_application_id
165968       , program_id
165969       , request_id
165970 )
165971 SELECT
165972         event_id
165973       , p_target_ledger_id
165974       , p_sla_ledger_id
165975       , p_language
165976       , object_name
165977       , object_type_code
165978       , line_number
165979       , source_application_id
165980       , source_type_code
165981       , source_code
165982       , SUBSTR(source_value ,1,1996)
165983       , SUBSTR(source_meaning ,1,200)
165984       , xla_environment_pkg.g_Usr_Id
165985       , TRUNC(SYSDATE)
165986       , TRUNC(SYSDATE)
165987       , xla_environment_pkg.g_Usr_Id
165988       , xla_environment_pkg.g_Login_Id
165989       , TRUNC(SYSDATE)
165990       , xla_environment_pkg.g_Prog_Appl_Id
165991       , xla_environment_pkg.g_Prog_Id
165992       , xla_environment_pkg.g_Req_Id
165993   FROM (
165994        SELECT xet.event_id                  event_id
165995             , 0                          line_number
165996             , CASE r
165997                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
165998                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
165999                 
166000                ELSE null
166001               END                           object_name
166002             , CASE r
166003                 WHEN 1 THEN 'HEADER' 
166004                 WHEN 2 THEN 'HEADER' 
166005                 
166006                 ELSE null
166007               END                           object_type_code
166008             , CASE r
166009                 WHEN 1 THEN '707' 
166010                 WHEN 2 THEN '707' 
166011                 
166012                 ELSE null
166013               END                           source_application_id
166014             , 'S'             source_type_code
166015             , CASE r
166016                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
166017                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
166018                 
166019                 ELSE null
166020               END                           source_code
166021             , CASE r
166022                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
166023                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
166024                 
166025                 ELSE null
166026               END                           source_value
166027             , CASE r
166028                 WHEN 1 THEN fvl12.meaning
166029                 WHEN 2 THEN fvl38.meaning
166030                 
166031                 ELSE null
166032               END               source_meaning
166033          FROM xla_events_gt     xet  
166034       , CST_XLA_INV_HEADERS_V  h1
166035   , fnd_lookup_values    fvl12
166036   , fnd_lookup_values    fvl38
166037              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
166038          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
166039            AND xet.event_class_code = C_EVENT_CLASS_CODE
166040               AND h1.event_id = xet.event_id
166041    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
166042   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
166043   AND fvl12.view_application_id(+) = 700
166044   AND fvl12.language(+)            = USERENV('LANG')
166045      AND fvl38.lookup_type(+)         = 'YES_NO'
166046   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
166047   AND fvl38.view_application_id(+) = 0
166048   AND fvl38.language(+)            = USERENV('LANG')
166049   
166050 )
166051 ;
166052 --
166053 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166054 
166055       trace
166056          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
166057          ,p_level    => C_LEVEL_STATEMENT
166058          ,p_module   => l_log_module);
166059 
166060 END IF;
166061 --
166062 
166063 
166064 
166065 --
166066 INSERT INTO xla_diag_sources  --line2
166067 (
166068         event_id
166069       , ledger_id
166070       , sla_ledger_id
166071       , description_language
166072       , object_name
166073       , object_type_code
166074       , line_number
166075       , source_application_id
166076       , source_type_code
166077       , source_code
166078       , source_value
166079       , source_meaning
166080       , created_by
166081       , creation_date
166082       , last_update_date
166083       , last_updated_by
166084       , last_update_login
166085       , program_update_date
166086       , program_application_id
166087       , program_id
166088       , request_id
166089 )
166090 SELECT  event_id
166091       , p_target_ledger_id
166092       , p_sla_ledger_id
166093       , p_language
166094       , object_name
166095       , object_type_code
166096       , line_number
166097       , source_application_id
166098       , source_type_code
166099       , source_code
166100       , SUBSTR(source_value,1,1996)
166101       , SUBSTR(source_meaning ,1,200)
166102       , xla_environment_pkg.g_Usr_Id
166103       , TRUNC(SYSDATE)
166104       , TRUNC(SYSDATE)
166105       , xla_environment_pkg.g_Usr_Id
166106       , xla_environment_pkg.g_Login_Id
166107       , TRUNC(SYSDATE)
166108       , xla_environment_pkg.g_Prog_Appl_Id
166109       , xla_environment_pkg.g_Prog_Id
166110       , xla_environment_pkg.g_Req_Id
166111   FROM (
166112        SELECT xet.event_id                  event_id
166113             , l2.line_number                 line_number
166114             , CASE r
166115                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
166116                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
166117                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
166118                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
166119                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
166120                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
166121                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
166122                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
166123                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
166124                 
166125                ELSE null
166126               END                           object_name
166127             , CASE r
166128                 WHEN 1 THEN 'LINE' 
166129                 WHEN 2 THEN 'LINE' 
166130                 WHEN 3 THEN 'LINE' 
166131                 WHEN 4 THEN 'LINE' 
166132                 WHEN 5 THEN 'LINE' 
166133                 WHEN 6 THEN 'LINE' 
166134                 WHEN 7 THEN 'LINE' 
166135                 WHEN 8 THEN 'LINE' 
166136                 WHEN 9 THEN 'LINE' 
166137                 
166138                 ELSE null
166139               END                           object_type_code
166140             , CASE r
166141                 WHEN 1 THEN '707' 
166142                 WHEN 2 THEN '707' 
166143                 WHEN 3 THEN '707' 
166144                 WHEN 4 THEN '707' 
166145                 WHEN 5 THEN '707' 
166146                 WHEN 6 THEN '707' 
166147                 WHEN 7 THEN '707' 
166148                 WHEN 8 THEN '707' 
166149                 WHEN 9 THEN '707' 
166150                 
166151                 ELSE null
166152               END                           source_application_id
166153             , 'S'             source_type_code
166154             , CASE r
166155                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
166156                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
166157                 WHEN 3 THEN 'CURRENCY_CODE' 
166158                 WHEN 4 THEN 'ENTERED_AMOUNT' 
166159                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
166160                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
166161                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
166162                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
166163                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
166164                 
166165                 ELSE null
166166               END                           source_code
166167             , CASE r
166168                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
166169                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
166170                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
166171                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
166172                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
166173                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
166174                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
166175                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
166176                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
166177                 
166178                 ELSE null
166179               END                           source_value
166180             , null              source_meaning
166181          FROM  xla_events_gt     xet  
166182         , CST_XLA_INV_LINES_V  l2
166183             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
166184         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
166185           AND xet.event_class_code = C_EVENT_CLASS_CODE
166186             AND l2.event_id          = xet.event_id
166187 
166188 )
166189 ;
166190 --
166191 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166192 
166193       trace
166194          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
166195          ,p_level    => C_LEVEL_STATEMENT
166196          ,p_module   => l_log_module);
166197 
166198 END IF;
166199 
166200 
166201 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
166202       trace
166203          (p_msg      => 'END of insert_sources_276'
166204          ,p_level    => C_LEVEL_PROCEDURE
166205          ,p_module   => l_log_module);
166206 END IF;
166207 EXCEPTION
166208   WHEN xla_exceptions_pkg.application_exception THEN
166209       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
166210             trace
166211                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
166212                ,p_level    => C_LEVEL_EXCEPTION
166213                ,p_module   => l_log_module);
166214       END IF;
166215       RAISE;
166216   WHEN OTHERS THEN
166217       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
166218             trace
166219                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
166220                ,p_level    => C_LEVEL_EXCEPTION
166221                ,p_module   => l_log_module);
166222        END IF;
166223        xla_exceptions_pkg.raise_message
166224            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_276');
166225 END insert_sources_276;
166226 --
166227 
166228 ---------------------------------------
166229 --
166230 -- PRIVATE FUNCTION
166231 --         EventClass_276
166232 --
166233 ----------------------------------------
166234 --
166235 FUNCTION EventClass_276
166236        (p_application_id         IN NUMBER
166237        ,p_base_ledger_id         IN NUMBER
166238        ,p_target_ledger_id       IN NUMBER
166239        ,p_language               IN VARCHAR2
166240        ,p_currency_code          IN VARCHAR2
166241        ,p_sla_ledger_id          IN NUMBER
166242        ,p_pad_start_date         IN DATE
166243        ,p_pad_end_date           IN DATE
166244        ,p_primary_ledger_id      IN NUMBER)
166245 RETURN BOOLEAN IS
166246 --
166247 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOT_ALL';
166248 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'LOT';
166249 
166250 l_calculate_acctd_flag   VARCHAR2(1) :='N';
166251 l_calculate_g_l_flag     VARCHAR2(1) :='N';
166252 --
166253 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166254 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166255 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
166256 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
166257 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166258 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
166259 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
166260 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166261 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166262 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166263 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166264 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166265 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166266 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166267 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
166268 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
166269 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
166270 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
166271 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166272 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166273 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166274 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166275 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
166276 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
166277 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
166278 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
166279 
166280 l_event_id                             NUMBER;
166281 l_previous_event_id                    NUMBER;
166282 l_first_event_id                       NUMBER;
166283 l_last_event_id                        NUMBER;
166284 
166285 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
166286 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
166287 --
166288 --
166289 l_result                    BOOLEAN := TRUE;
166290 l_rows                      NUMBER  := 1000;
166291 l_event_type_name           VARCHAR2(80) := 'All';
166292 l_event_class_name          VARCHAR2(80) := 'WIP Material Lot';
166293 l_description               VARCHAR2(4000);
166294 l_transaction_reversal      NUMBER;
166295 l_ae_header_id              NUMBER;
166296 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
166297 l_log_module                VARCHAR2(240);
166298 --
166299 l_acct_reversal_source      VARCHAR2(30);
166300 l_trx_reversal_source       VARCHAR2(30);
166301 
166302 l_continue_with_lines       BOOLEAN := TRUE;
166303 --
166304 l_acc_rev_gl_date_source    DATE;                      -- 4262811
166305 --
166306 type t_array_event_id is table of number index by binary_integer;
166307 
166308 l_rec_array_event                    t_rec_array_event;
166309 l_null_rec_array_event               t_rec_array_event;
166310 l_array_ae_header_id                 xla_number_array_type;
166311 l_actual_flag                        VARCHAR2(1) := NULL;
166312 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
166313 l_balance_type_code                  VARCHAR2(1) :=NULL;
166314 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
166315 
166316 --
166317 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
166318 --
166319 
166320 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
166321 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
166322 
166323 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
166324 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
166325 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
166326 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
166327 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
166328 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
166329 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
166330 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
166331 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
166332 
166333 l_array_source_12              t_array_source_12;
166334 l_array_source_12_meaning      t_array_lookup_meaning;
166335 l_array_source_38              t_array_source_38;
166336 l_array_source_38_meaning      t_array_lookup_meaning;
166337 
166338 l_array_source_4      t_array_source_4;
166339 l_array_source_11      t_array_source_11;
166340 l_array_source_15      t_array_source_15;
166341 l_array_source_18      t_array_source_18;
166342 l_array_source_19      t_array_source_19;
166343 l_array_source_20      t_array_source_20;
166344 l_array_source_21      t_array_source_21;
166345 l_array_source_22      t_array_source_22;
166346 l_array_source_24      t_array_source_24;
166347 
166348 --
166349 CURSOR header_cur
166350 IS
166351 SELECT /*+ leading(xet) cardinality(xet,1) */
166352 -- Event Class Code: LOT
166353     xet.entity_id
166354    ,xet.legal_entity_id
166355    ,xet.entity_code
166356    ,xet.transaction_number
166357    ,xet.event_id
166358    ,xet.event_class_code
166359    ,xet.event_type_code
166360    ,xet.event_number
166361    ,xet.event_date
166362    ,xet.transaction_date
166363    ,xet.reference_num_1
166364    ,xet.reference_num_2
166365    ,xet.reference_num_3
166366    ,xet.reference_num_4
166367    ,xet.reference_char_1
166368    ,xet.reference_char_2
166369    ,xet.reference_char_3
166370    ,xet.reference_char_4
166371    ,xet.reference_date_1
166372    ,xet.reference_date_2
166373    ,xet.reference_date_3
166374    ,xet.reference_date_4
166375    ,xet.event_created_by
166376    ,xet.budgetary_control_flag 
166377   , h1.DISTRIBUTION_TYPE    source_12
166378   , fvl12.meaning   source_12_meaning
166379   , h1.TRANSFER_TO_GL_INDICATOR    source_38
166380   , fvl38.meaning   source_38_meaning
166381   FROM xla_events_gt     xet 
166382   , CST_XLA_INV_HEADERS_V  h1
166383   , fnd_lookup_values    fvl12
166384   , fnd_lookup_values    fvl38
166385  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
166386    and xet.event_class_code = C_EVENT_CLASS_CODE
166387    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
166388    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
166389   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
166390   AND fvl12.view_application_id(+) = 700
166391   AND fvl12.language(+)            = USERENV('LANG')
166392      AND fvl38.lookup_type(+)         = 'YES_NO'
166393   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
166394   AND fvl38.view_application_id(+) = 0
166395   AND fvl38.language(+)            = USERENV('LANG')
166396   
166397  ORDER BY event_id
166398 ;
166399 
166400 
166401 --
166402 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
166403 IS
166404 SELECT  /*+ leading(xet) cardinality(xet,1) */
166405 -- Event Class Code: LOT
166406     xet.entity_id
166407    ,xet.legal_entity_id
166408    ,xet.entity_code
166409    ,xet.transaction_number
166410    ,xet.event_id
166411    ,xet.event_class_code
166412    ,xet.event_type_code
166413    ,xet.event_number
166414    ,xet.event_date
166415    ,xet.transaction_date
166416    ,xet.reference_num_1
166417    ,xet.reference_num_2
166418    ,xet.reference_num_3
166419    ,xet.reference_num_4
166420    ,xet.reference_char_1
166421    ,xet.reference_char_2
166422    ,xet.reference_char_3
166423    ,xet.reference_char_4
166424    ,xet.reference_date_1
166425    ,xet.reference_date_2
166426    ,xet.reference_date_3
166427    ,xet.reference_date_4
166428    ,xet.event_created_by
166429    ,xet.budgetary_control_flag
166430  , l2.LINE_NUMBER  
166431   , l2.CODE_COMBINATION_ID    source_4
166432   , l2.DISTRIBUTION_IDENTIFIER    source_11
166433   , l2.CURRENCY_CODE    source_15
166434   , l2.ENTERED_AMOUNT    source_18
166435   , l2.CURRENCY_CONVERSION_DATE    source_19
166436   , l2.CURRENCY_CONVERSION_RATE    source_20
166437   , l2.CURRENCY_CONVERSION_TYPE    source_21
166438   , l2.ACCOUNTED_AMOUNT    source_22
166439   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
166440   FROM xla_events_gt     xet 
166441   , CST_XLA_INV_LINES_V  l2
166442  WHERE xet.event_id between x_first_event_id and x_last_event_id
166443    and xet.event_date between p_pad_start_date and p_pad_end_date
166444    and xet.event_class_code = C_EVENT_CLASS_CODE
166445    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
166446 ;
166447 
166448 --
166449 BEGIN
166450 IF g_log_enabled THEN
166451    l_log_module := C_DEFAULT_MODULE||'.EventClass_276';
166452 END IF;
166453 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
166454    trace
166455       (p_msg      => 'BEGIN of EventClass_276'
166456       ,p_level    => C_LEVEL_PROCEDURE
166457       ,p_module   => l_log_module);
166458 END IF;
166459 
166460 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166461    trace
166462       (p_msg      => 'p_application_id = '||p_application_id||
166463                      ' - p_base_ledger_id = '||p_base_ledger_id||
166464                      ' - p_target_ledger_id  = '||p_target_ledger_id||
166465                      ' - p_language = '||p_language||
166466                      ' - p_currency_code = '||p_currency_code||
166467                      ' - p_sla_ledger_id = '||p_sla_ledger_id
166468       ,p_level    => C_LEVEL_STATEMENT
166469       ,p_module   => l_log_module);
166470 END IF;
166471 --
166472 -- initialze arrays
166473 --
166474 g_array_event.DELETE;
166475 l_rec_array_event := l_null_rec_array_event;
166476 --
166477 --------------------------------------
166478 -- 4262811 Initialze MPA Line Number
166479 --------------------------------------
166480 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
166481 
166482 --
166483 
166484 --
166485 OPEN header_cur;
166486 --
166487 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166488    trace
166489    (p_msg      => 'SQL - FETCH header_cur'
166490    ,p_level    => C_LEVEL_STATEMENT
166491    ,p_module   => l_log_module);
166492 END IF;
166493 --
166494 LOOP
166495 FETCH header_cur BULK COLLECT INTO
166496         l_array_entity_id
166497       , l_array_legal_entity_id
166498       , l_array_entity_code
166499       , l_array_transaction_num
166500       , l_array_event_id
166501       , l_array_class_code
166502       , l_array_event_type
166503       , l_array_event_number
166504       , l_array_event_date
166505       , l_array_transaction_date
166506       , l_array_reference_num_1
166507       , l_array_reference_num_2
166508       , l_array_reference_num_3
166509       , l_array_reference_num_4
166510       , l_array_reference_char_1
166511       , l_array_reference_char_2
166512       , l_array_reference_char_3
166513       , l_array_reference_char_4
166514       , l_array_reference_date_1
166515       , l_array_reference_date_2
166516       , l_array_reference_date_3
166517       , l_array_reference_date_4
166518       , l_array_event_created_by
166519       , l_array_budgetary_control_flag 
166520       , l_array_source_12
166521       , l_array_source_12_meaning
166522       , l_array_source_38
166523       , l_array_source_38_meaning
166524       LIMIT l_rows;
166525 --
166526 IF (C_LEVEL_EVENT >= g_log_level) THEN
166527    trace
166528    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
166529    ,p_level    => C_LEVEL_EVENT
166530    ,p_module   => l_log_module);
166531 END IF;
166532 --
166533 EXIT WHEN l_array_entity_id.COUNT = 0;
166534 
166535 -- initialize arrays
166536 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
166537 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
166538 
166539 --
166540 -- Bug 4458708
166541 --
166542 XLA_AE_LINES_PKG.g_LineNumber := 0;
166543 
166544 
166545 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
166546 g_last_hdr_idx := l_array_event_id.LAST;
166547 --
166548 -- loop for the headers. Each iteration is for each header extract row
166549 -- fetched in header cursor
166550 --
166551 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
166552 
166553 --
166554 -- set event info as cache for other routines to refer event attributes
166555 --
166556 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
166557    (p_application_id           => p_application_id
166558    ,p_primary_ledger_id        => p_primary_ledger_id
166559    ,p_base_ledger_id           => p_base_ledger_id
166560    ,p_target_ledger_id         => p_target_ledger_id
166561    ,p_entity_id                => l_array_entity_id(hdr_idx)
166562    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
166563    ,p_entity_code              => l_array_entity_code(hdr_idx)
166564    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
166565    ,p_event_id                 => l_array_event_id(hdr_idx)
166566    ,p_event_class_code         => l_array_class_code(hdr_idx)
166567    ,p_event_type_code          => l_array_event_type(hdr_idx)
166568    ,p_event_number             => l_array_event_number(hdr_idx)
166569    ,p_event_date               => l_array_event_date(hdr_idx)
166570    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
166571    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
166572    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
166573    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
166574    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
166575    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
166576    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
166577    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
166578    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
166579    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
166580    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
166581    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
166582    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
166583    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
166584    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
166585 
166586 --
166587 -- set the status of entry to C_VALID (0)
166588 --
166589 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
166590 
166591 --
166592 -- initialize a row for ae header
166593 --
166594 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
166595 
166596 l_event_id := l_array_event_id(hdr_idx);
166597 
166598 --
166599 -- storing the hdr_idx for event. May be used by line cursor.
166600 --
166601 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
166602 
166603 --
166604 -- store sources from header extract. This can be improved to
166605 -- store only those sources from header extract that may be used in lines
166606 --
166607 
166608 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
166609 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
166610 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
166611 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
166612 
166613 --
166614 -- initilaize the status of ae headers for diffrent balance types
166615 -- the status is initialised to C_NOT_CREATED (2)
166616 --
166617 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
166618 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
166619 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
166620 
166621 --
166622 -- call api to validate and store accounting attributes for header
166623 --
166624 
166625 ------------------------------------------------------------
166626 -- Accrual Reversal : to get date for Standard Source (NONE)
166627 ------------------------------------------------------------
166628 l_acc_rev_gl_date_source := NULL;
166629 
166630      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
166631       l_rec_acct_attrs.array_date_value(1) := 
166632 xla_ae_sources_pkg.GetSystemSourceDate(
166633    p_source_code           => 'XLA_REFERENCE_DATE_1'
166634  , p_source_type_code      => 'Y'
166635  , p_source_application_id =>  602
166636 );
166637      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
166638       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
166639 
166640 
166641 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
166642 
166643 XLA_AE_HEADER_PKG.SetJeCategoryName;
166644 
166645 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
166646 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
166647 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
166648 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
166649 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
166650 
166651 
166652 -- No header level analytical criteria
166653 
166654 --
166655 --accounting attribute enhancement, bug 3612931
166656 --
166657 l_trx_reversal_source := SUBSTR(NULL, 1,30);
166658 
166659 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
166660    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
166661 
166662    xla_accounting_err_pkg.build_message
166663       (p_appli_s_name            => 'XLA'
166664       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
166665       ,p_token_1                 => 'ACCT_ATTR_NAME'
166666       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
166667       ,p_token_2                 => 'PRODUCT_NAME'
166668       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
166669       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
166670       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
166671       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
166672 
166673 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
166674    --
166675    -- following sets the accounting attributes needed to reverse
166676    -- accounting for a distributeion
166677    --
166678    xla_ae_lines_pkg.SetTrxReversalAttrs
166679       (p_event_id              => l_event_id
166680       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
166681       ,p_trx_reversal_source   => l_trx_reversal_source);
166682 
166683 END IF;
166684 
166685 
166686 ----------------------------------------------------------------
166687 -- 4262811 -  update the header statuses to invalid in need be
166688 ----------------------------------------------------------------
166689 --
166690 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
166691 
166692 
166693   -----------------------------------------------
166694   -- No accrual reversal for the event class/type
166695   -----------------------------------------------
166696 ----------------------------------------------------------------
166697 
166698 --
166699 -- this ends the header loop iteration for one bulk fetch
166700 --
166701 END LOOP;
166702 
166703 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
166704 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
166705 
166706 --
166707 -- insert dummy rows into lines gt table that were created due to
166708 -- transaction reversals
166709 --
166710 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
166711    l_result := XLA_AE_LINES_PKG.InsertLines;
166712 END IF;
166713 
166714 --
166715 -- reset the temp_line_num for each set of events fetched from header
166716 -- cursor rather than doing it for each new event in line cursor
166717 -- Bug 3939231
166718 --
166719 xla_ae_lines_pkg.g_temp_line_num := 0;
166720 
166721 
166722 
166723 --
166724 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
166725 --
166726 --
166727 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166728 
166729       trace
166730          (p_msg      => 'SQL - FETCH line_cur'
166731          ,p_level    => C_LEVEL_STATEMENT
166732          ,p_module   => l_log_module);
166733 
166734 END IF;
166735 --
166736 --
166737 LOOP
166738   --
166739   FETCH line_cur BULK COLLECT INTO
166740         l_array_entity_id
166741       , l_array_legal_entity_id
166742       , l_array_entity_code
166743       , l_array_transaction_num
166744       , l_array_event_id
166745       , l_array_class_code
166746       , l_array_event_type
166747       , l_array_event_number
166748       , l_array_event_date
166749       , l_array_transaction_date
166750       , l_array_reference_num_1
166751       , l_array_reference_num_2
166752       , l_array_reference_num_3
166753       , l_array_reference_num_4
166754       , l_array_reference_char_1
166755       , l_array_reference_char_2
166756       , l_array_reference_char_3
166757       , l_array_reference_char_4
166758       , l_array_reference_date_1
166759       , l_array_reference_date_2
166760       , l_array_reference_date_3
166761       , l_array_reference_date_4
166762       , l_array_event_created_by
166763       , l_array_budgetary_control_flag
166764       , l_array_extract_line_num 
166765       , l_array_source_4
166766       , l_array_source_11
166767       , l_array_source_15
166768       , l_array_source_18
166769       , l_array_source_19
166770       , l_array_source_20
166771       , l_array_source_21
166772       , l_array_source_22
166773       , l_array_source_24
166774       LIMIT l_rows;
166775 
166776   --
166777   IF (C_LEVEL_EVENT >= g_log_level) THEN
166778             trace
166779                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
166780                ,p_level    => C_LEVEL_EVENT
166781                ,p_module   => l_log_module);
166782   END IF;
166783   --
166784   EXIT WHEN l_array_entity_id.count = 0;
166785 
166786   XLA_AE_LINES_PKG.g_rec_lines := null;
166787 
166788 --
166789 -- Bug 4458708
166790 --
166791 XLA_AE_LINES_PKG.g_LineNumber := 0;
166792 --
166793 --
166794 
166795 FOR Idx IN 1..l_array_event_id.count LOOP
166796    --
166797    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
166798    --
166799    l_event_id := l_array_event_id(idx);  -- 5648433
166800 
166801    --
166802    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
166803    --
166804 
166805    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
166806              (g_array_event(l_event_id).array_value_num('header_index'))
166807          ,'N'
166808          ) <> 'Y'
166809    THEN
166810       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166811          trace
166812             (p_msg      => 'Trancaction revesal option is not Y '
166813             ,p_level    => C_LEVEL_STATEMENT
166814             ,p_module   => l_log_module);
166815       END IF;
166816 
166817 --
166818 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
166819 --
166820 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
166821 --
166822 -- set event info as cache for other routines to refer event attributes
166823 --
166824 
166825 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
166826    l_previous_event_id := l_event_id;
166827 
166828    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
166829       (p_application_id           => p_application_id
166830       ,p_primary_ledger_id        => p_primary_ledger_id
166831       ,p_base_ledger_id           => p_base_ledger_id
166832       ,p_target_ledger_id         => p_target_ledger_id
166833       ,p_entity_id                => l_array_entity_id(Idx)
166834       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
166835       ,p_entity_code              => l_array_entity_code(Idx)
166836       ,p_transaction_num          => l_array_transaction_num(Idx)
166837       ,p_event_id                 => l_array_event_id(Idx)
166838       ,p_event_class_code         => l_array_class_code(Idx)
166839       ,p_event_type_code          => l_array_event_type(Idx)
166840       ,p_event_number             => l_array_event_number(Idx)
166841       ,p_event_date               => l_array_event_date(Idx)
166842       ,p_transaction_date         => l_array_transaction_date(Idx)
166843       ,p_reference_num_1          => l_array_reference_num_1(Idx)
166844       ,p_reference_num_2          => l_array_reference_num_2(Idx)
166845       ,p_reference_num_3          => l_array_reference_num_3(Idx)
166846       ,p_reference_num_4          => l_array_reference_num_4(Idx)
166847       ,p_reference_char_1         => l_array_reference_char_1(Idx)
166848       ,p_reference_char_2         => l_array_reference_char_2(Idx)
166849       ,p_reference_char_3         => l_array_reference_char_3(Idx)
166850       ,p_reference_char_4         => l_array_reference_char_4(Idx)
166851       ,p_reference_date_1         => l_array_reference_date_1(Idx)
166852       ,p_reference_date_2         => l_array_reference_date_2(Idx)
166853       ,p_reference_date_3         => l_array_reference_date_3(Idx)
166854       ,p_reference_date_4         => l_array_reference_date_4(Idx)
166855       ,p_event_created_by         => l_array_event_created_by(Idx)
166856       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
166857        --
166858 END IF;
166859 
166860 
166861 
166862 --
166863 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
166864 
166865 l_acct_reversal_source := SUBSTR(NULL, 1,30);
166866 
166867 IF l_continue_with_lines THEN
166868    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
166869       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
166870 
166871       xla_accounting_err_pkg.build_message
166872          (p_appli_s_name            => 'XLA'
166873          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
166874          ,p_token_1                 => 'LINE_NUMBER'
166875          ,p_value_1                 => l_array_extract_line_num(Idx)
166876          ,p_token_2                 => 'PRODUCT_NAME'
166877          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
166878          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
166879          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
166880          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
166881 
166882    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
166883       --
166884       -- following sets the accounting attributes needed to reverse
166885       -- accounting for a distributeion
166886       --
166887 
166888       --
166889       -- 5217187
166890       --
166891       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
166892       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
166893                                        g_array_event(l_event_id).array_value_num('header_index'));
166894       --
166895       --
166896 
166897       -- No reversal code generated
166898 
166899       xla_ae_lines_pkg.SetAcctReversalAttrs
166900          (p_event_id             => l_event_id
166901          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
166902          ,p_calculate_acctd_flag => l_calculate_acctd_flag
166903          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
166904    END IF;
166905 
166906    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
166907        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
166908 
166909 --
166910 AcctLineType_191 (
166911  p_application_id  => p_application_id
166912  ,p_event_id     => l_event_id
166913  ,p_calculate_acctd_flag => l_calculate_acctd_flag
166914  ,p_calculate_g_l_flag => l_calculate_g_l_flag
166915  ,p_actual_flag => l_actual_flag
166916  ,p_balance_type_code => l_balance_type_code
166917  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
166918  
166919  , p_source_4 => l_array_source_4(Idx)
166920  , p_source_11 => l_array_source_11(Idx)
166921  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
166922  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
166923  , p_source_15 => l_array_source_15(Idx)
166924  , p_source_18 => l_array_source_18(Idx)
166925  , p_source_19 => l_array_source_19(Idx)
166926  , p_source_20 => l_array_source_20(Idx)
166927  , p_source_21 => l_array_source_21(Idx)
166928  , p_source_22 => l_array_source_22(Idx)
166929  , p_source_24 => l_array_source_24(Idx)
166930  );
166931 If(l_balance_type_code = 'A') THEN
166932   l_actual_gain_loss_ref := l_gain_or_loss_ref;
166933 END IF;
166934 
166935 --
166936 
166937 
166938 --
166939 AcctLineType_252 (
166940  p_application_id  => p_application_id
166941  ,p_event_id     => l_event_id
166942  ,p_calculate_acctd_flag => l_calculate_acctd_flag
166943  ,p_calculate_g_l_flag => l_calculate_g_l_flag
166944  ,p_actual_flag => l_actual_flag
166945  ,p_balance_type_code => l_balance_type_code
166946  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
166947  
166948  , p_source_4 => l_array_source_4(Idx)
166949  , p_source_11 => l_array_source_11(Idx)
166950  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
166951  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
166952  , p_source_15 => l_array_source_15(Idx)
166953  , p_source_18 => l_array_source_18(Idx)
166954  , p_source_19 => l_array_source_19(Idx)
166955  , p_source_20 => l_array_source_20(Idx)
166956  , p_source_21 => l_array_source_21(Idx)
166957  , p_source_22 => l_array_source_22(Idx)
166958  , p_source_24 => l_array_source_24(Idx)
166959  );
166960 If(l_balance_type_code = 'A') THEN
166961   l_actual_gain_loss_ref := l_gain_or_loss_ref;
166962 END IF;
166963 
166964 --
166965 
166966       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
166967       -- or secondary ledger that has different currency with primary
166968       -- or alc that is calculated by sla
166969       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
166970             (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'))
166971 
166972 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
166973 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
166974           AND (l_actual_flag = 'A')) THEN
166975         XLA_AE_LINES_PKG.CreateGainOrLossLines(
166976           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
166977          ,p_application_id   => p_application_id
166978          ,p_amb_context_code => 'DEFAULT'
166979          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
166980          ,p_event_class_code => C_EVENT_CLASS_CODE
166981          ,p_event_type_code  => C_EVENT_TYPE_CODE
166982          
166983          ,p_gain_ccid        => -1
166984          ,p_loss_ccid        => -1
166985 
166986          ,p_actual_flag      => l_actual_flag
166987          ,p_enc_flag         => null
166988          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
166989          ,p_enc_g_l_ref      => null
166990          );
166991       END IF;
166992    END IF;
166993 END IF;
166994 
166995    ELSE
166996       --
166997       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
166998       --
166999       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167000          trace
167001             (p_msg      => 'Trancaction revesal option is Y'
167002             ,p_level    => C_LEVEL_STATEMENT
167003             ,p_module   => l_log_module);
167004       END IF;
167005    END IF;
167006 
167007 END LOOP;
167008 l_result := XLA_AE_LINES_PKG.InsertLines ;
167009 end loop;
167010 close line_cur;
167011 
167012 
167013 --
167014 -- insert headers into xla_ae_headers_gt table
167015 --
167016 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
167017 
167018 -- insert into errors table here.
167019 
167020 END LOOP;
167021 
167022 --
167023 -- 4865292
167024 --
167025 -- Compare g_hdr_extract_count with event count in
167026 -- CreateHeadersAndLines.
167027 --
167028 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
167029 
167030 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167031    trace (p_msg     => '# rows extracted from header extract objects '
167032                     || ' (running total): '
167033                     || g_hdr_extract_count
167034          ,p_level   => C_LEVEL_STATEMENT
167035          ,p_module  => l_log_module);
167036 END IF;
167037 
167038 CLOSE header_cur;
167039 --
167040 
167041 --
167042 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
167043    trace
167044       (p_msg      => 'END of EventClass_276'
167045       ,p_level    => C_LEVEL_PROCEDURE
167046       ,p_module   => l_log_module);
167047 END IF;
167048 --
167049 RETURN l_result;
167050 EXCEPTION
167051 WHEN xla_exceptions_pkg.application_exception THEN
167052    
167053 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
167054 
167055    
167056 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
167057 
167058    RAISE;
167059 
167060 WHEN NO_DATA_FOUND THEN
167061 
167062 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
167063 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
167064 
167065 FOR header_record IN header_cur
167066 LOOP
167067     l_array_header_events(header_record.event_id) := header_record.event_id;
167068 END LOOP;
167069 
167070 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
167071 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
167072 
167073 fnd_file.put_line(fnd_file.LOG, '                    ');
167074 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
167075 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
167076 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
167077 
167078 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
167079 LOOP
167080 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
167081 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
167082         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
167083 	END IF;
167084 END LOOP;
167085 
167086 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
167087 fnd_file.put_line(fnd_file.LOG, '                    ');
167088 
167089 
167090 xla_exceptions_pkg.raise_message
167091       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_276');
167092 
167093 
167094 WHEN OTHERS THEN
167095    xla_exceptions_pkg.raise_message
167096       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_276');
167097 END EventClass_276;
167098 --
167099 
167100 ---------------------------------------
167101 --
167102 -- PRIVATE PROCEDURE
167103 --         insert_sources_277
167104 --
167105 ----------------------------------------
167106 --
167107 PROCEDURE insert_sources_277(
167108                                 p_target_ledger_id       IN NUMBER
167109                               , p_language               IN VARCHAR2
167110                               , p_sla_ledger_id          IN NUMBER
167111                               , p_pad_start_date         IN DATE
167112                               , p_pad_end_date           IN DATE
167113                          )
167114 IS
167115 
167116 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'MISC_ISSUE_RCPT_ALL';
167117 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'MISC_ISSUE_RCPT';
167118 p_apps_owner                   VARCHAR2(30);
167119 l_log_module                   VARCHAR2(240);
167120 BEGIN
167121 IF g_log_enabled THEN
167122       l_log_module := C_DEFAULT_MODULE||'.insert_sources_277';
167123 END IF;
167124 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
167125 
167126       trace
167127          (p_msg      => 'BEGIN of insert_sources_277'
167128          ,p_level    => C_LEVEL_PROCEDURE
167129          ,p_module   => l_log_module);
167130 
167131 END IF;
167132 
167133 -- select APPS owner
167134 SELECT oracle_username
167135   INTO p_apps_owner
167136   FROM fnd_oracle_userid
167137  WHERE read_only_flag = 'U'
167138 ;
167139 
167140 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167141       trace
167142          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
167143                         ' - p_language = '||p_language||
167144                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
167145                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
167146                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
167147                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
167148          ,p_level    => C_LEVEL_STATEMENT
167149          ,p_module   => l_log_module);
167150 END IF;
167151 
167152 
167153 --
167154 INSERT INTO xla_diag_sources --hdr2
167155 (
167156         event_id
167157       , ledger_id
167158       , sla_ledger_id
167159       , description_language
167160       , object_name
167161       , object_type_code
167162       , line_number
167163       , source_application_id
167164       , source_type_code
167165       , source_code
167166       , source_value
167167       , source_meaning
167168       , created_by
167169       , creation_date
167170       , last_update_date
167171       , last_updated_by
167172       , last_update_login
167173       , program_update_date
167174       , program_application_id
167175       , program_id
167176       , request_id
167177 )
167178 SELECT
167179         event_id
167180       , p_target_ledger_id
167181       , p_sla_ledger_id
167182       , p_language
167183       , object_name
167184       , object_type_code
167185       , line_number
167186       , source_application_id
167187       , source_type_code
167188       , source_code
167189       , SUBSTR(source_value ,1,1996)
167190       , SUBSTR(source_meaning ,1,200)
167191       , xla_environment_pkg.g_Usr_Id
167192       , TRUNC(SYSDATE)
167193       , TRUNC(SYSDATE)
167194       , xla_environment_pkg.g_Usr_Id
167195       , xla_environment_pkg.g_Login_Id
167196       , TRUNC(SYSDATE)
167197       , xla_environment_pkg.g_Prog_Appl_Id
167198       , xla_environment_pkg.g_Prog_Id
167199       , xla_environment_pkg.g_Req_Id
167200   FROM (
167201        SELECT xet.event_id                  event_id
167202             , 0                          line_number
167203             , CASE r
167204                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
167205                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
167206                 
167207                ELSE null
167208               END                           object_name
167209             , CASE r
167210                 WHEN 1 THEN 'HEADER' 
167211                 WHEN 2 THEN 'HEADER' 
167212                 
167213                 ELSE null
167214               END                           object_type_code
167215             , CASE r
167216                 WHEN 1 THEN '707' 
167217                 WHEN 2 THEN '707' 
167218                 
167219                 ELSE null
167220               END                           source_application_id
167221             , 'S'             source_type_code
167222             , CASE r
167223                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
167224                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
167225                 
167226                 ELSE null
167227               END                           source_code
167228             , CASE r
167229                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
167230                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
167231                 
167232                 ELSE null
167233               END                           source_value
167234             , CASE r
167235                 WHEN 1 THEN fvl12.meaning
167236                 WHEN 2 THEN fvl38.meaning
167237                 
167238                 ELSE null
167239               END               source_meaning
167240          FROM xla_events_gt     xet  
167241       , CST_XLA_INV_HEADERS_V  h1
167242   , fnd_lookup_values    fvl12
167243   , fnd_lookup_values    fvl38
167244              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
167245          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
167246            AND xet.event_class_code = C_EVENT_CLASS_CODE
167247               AND h1.event_id = xet.event_id
167248    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
167249   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
167250   AND fvl12.view_application_id(+) = 700
167251   AND fvl12.language(+)            = USERENV('LANG')
167252      AND fvl38.lookup_type(+)         = 'YES_NO'
167253   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
167254   AND fvl38.view_application_id(+) = 0
167255   AND fvl38.language(+)            = USERENV('LANG')
167256   
167257 )
167258 ;
167259 --
167260 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167261 
167262       trace
167263          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
167264          ,p_level    => C_LEVEL_STATEMENT
167265          ,p_module   => l_log_module);
167266 
167267 END IF;
167268 --
167269 
167270 
167271 
167272 --
167273 INSERT INTO xla_diag_sources  --line2
167274 (
167275         event_id
167276       , ledger_id
167277       , sla_ledger_id
167278       , description_language
167279       , object_name
167280       , object_type_code
167281       , line_number
167282       , source_application_id
167283       , source_type_code
167284       , source_code
167285       , source_value
167286       , source_meaning
167287       , created_by
167288       , creation_date
167289       , last_update_date
167290       , last_updated_by
167291       , last_update_login
167292       , program_update_date
167293       , program_application_id
167294       , program_id
167295       , request_id
167296 )
167297 SELECT  event_id
167298       , p_target_ledger_id
167299       , p_sla_ledger_id
167300       , p_language
167301       , object_name
167302       , object_type_code
167303       , line_number
167304       , source_application_id
167305       , source_type_code
167306       , source_code
167307       , SUBSTR(source_value,1,1996)
167308       , SUBSTR(source_meaning ,1,200)
167309       , xla_environment_pkg.g_Usr_Id
167310       , TRUNC(SYSDATE)
167311       , TRUNC(SYSDATE)
167312       , xla_environment_pkg.g_Usr_Id
167313       , xla_environment_pkg.g_Login_Id
167314       , TRUNC(SYSDATE)
167315       , xla_environment_pkg.g_Prog_Appl_Id
167316       , xla_environment_pkg.g_Prog_Id
167317       , xla_environment_pkg.g_Req_Id
167318   FROM (
167319        SELECT xet.event_id                  event_id
167320             , l2.line_number                 line_number
167321             , CASE r
167322                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
167323                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
167324                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
167325                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
167326                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
167327                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
167328                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
167329                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
167330                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
167331                 
167332                ELSE null
167333               END                           object_name
167334             , CASE r
167335                 WHEN 1 THEN 'LINE' 
167336                 WHEN 2 THEN 'LINE' 
167337                 WHEN 3 THEN 'LINE' 
167338                 WHEN 4 THEN 'LINE' 
167339                 WHEN 5 THEN 'LINE' 
167340                 WHEN 6 THEN 'LINE' 
167341                 WHEN 7 THEN 'LINE' 
167342                 WHEN 8 THEN 'LINE' 
167343                 WHEN 9 THEN 'LINE' 
167344                 
167345                 ELSE null
167346               END                           object_type_code
167347             , CASE r
167348                 WHEN 1 THEN '707' 
167349                 WHEN 2 THEN '707' 
167350                 WHEN 3 THEN '707' 
167351                 WHEN 4 THEN '707' 
167352                 WHEN 5 THEN '707' 
167353                 WHEN 6 THEN '707' 
167354                 WHEN 7 THEN '707' 
167355                 WHEN 8 THEN '707' 
167356                 WHEN 9 THEN '707' 
167357                 
167358                 ELSE null
167359               END                           source_application_id
167360             , 'S'             source_type_code
167361             , CASE r
167362                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
167363                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
167364                 WHEN 3 THEN 'CURRENCY_CODE' 
167365                 WHEN 4 THEN 'ENTERED_AMOUNT' 
167366                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
167367                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
167368                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
167369                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
167370                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
167371                 
167372                 ELSE null
167373               END                           source_code
167374             , CASE r
167375                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
167376                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
167377                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
167378                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
167379                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
167380                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
167381                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
167382                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
167383                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
167384                 
167385                 ELSE null
167386               END                           source_value
167387             , null              source_meaning
167388          FROM  xla_events_gt     xet  
167389         , CST_XLA_INV_LINES_V  l2
167390             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
167391         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
167392           AND xet.event_class_code = C_EVENT_CLASS_CODE
167393             AND l2.event_id          = xet.event_id
167394 
167395 )
167396 ;
167397 --
167398 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167399 
167400       trace
167401          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
167402          ,p_level    => C_LEVEL_STATEMENT
167403          ,p_module   => l_log_module);
167404 
167405 END IF;
167406 
167407 
167408 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
167409       trace
167410          (p_msg      => 'END of insert_sources_277'
167411          ,p_level    => C_LEVEL_PROCEDURE
167412          ,p_module   => l_log_module);
167413 END IF;
167414 EXCEPTION
167415   WHEN xla_exceptions_pkg.application_exception THEN
167416       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
167417             trace
167418                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
167419                ,p_level    => C_LEVEL_EXCEPTION
167420                ,p_module   => l_log_module);
167421       END IF;
167422       RAISE;
167423   WHEN OTHERS THEN
167424       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
167425             trace
167426                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
167427                ,p_level    => C_LEVEL_EXCEPTION
167428                ,p_module   => l_log_module);
167429        END IF;
167430        xla_exceptions_pkg.raise_message
167431            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_277');
167432 END insert_sources_277;
167433 --
167434 
167435 ---------------------------------------
167436 --
167437 -- PRIVATE FUNCTION
167438 --         EventClass_277
167439 --
167440 ----------------------------------------
167441 --
167442 FUNCTION EventClass_277
167443        (p_application_id         IN NUMBER
167444        ,p_base_ledger_id         IN NUMBER
167445        ,p_target_ledger_id       IN NUMBER
167446        ,p_language               IN VARCHAR2
167447        ,p_currency_code          IN VARCHAR2
167448        ,p_sla_ledger_id          IN NUMBER
167449        ,p_pad_start_date         IN DATE
167450        ,p_pad_end_date           IN DATE
167451        ,p_primary_ledger_id      IN NUMBER)
167452 RETURN BOOLEAN IS
167453 --
167454 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'MISC_ISSUE_RCPT_ALL';
167455 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'MISC_ISSUE_RCPT';
167456 
167457 l_calculate_acctd_flag   VARCHAR2(1) :='N';
167458 l_calculate_g_l_flag     VARCHAR2(1) :='N';
167459 --
167460 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167461 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167462 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
167463 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
167464 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167465 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
167466 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
167467 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167468 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
167469 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
167470 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167471 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167472 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167473 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167474 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
167475 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
167476 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
167477 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
167478 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
167479 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
167480 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
167481 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
167482 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
167483 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
167484 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
167485 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
167486 
167487 l_event_id                             NUMBER;
167488 l_previous_event_id                    NUMBER;
167489 l_first_event_id                       NUMBER;
167490 l_last_event_id                        NUMBER;
167491 
167492 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
167493 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
167494 --
167495 --
167496 l_result                    BOOLEAN := TRUE;
167497 l_rows                      NUMBER  := 1000;
167498 l_event_type_name           VARCHAR2(80) := 'All';
167499 l_event_class_name          VARCHAR2(80) := 'Miscellaneous';
167500 l_description               VARCHAR2(4000);
167501 l_transaction_reversal      NUMBER;
167502 l_ae_header_id              NUMBER;
167503 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
167504 l_log_module                VARCHAR2(240);
167505 --
167506 l_acct_reversal_source      VARCHAR2(30);
167507 l_trx_reversal_source       VARCHAR2(30);
167508 
167509 l_continue_with_lines       BOOLEAN := TRUE;
167510 --
167511 l_acc_rev_gl_date_source    DATE;                      -- 4262811
167512 --
167513 type t_array_event_id is table of number index by binary_integer;
167514 
167515 l_rec_array_event                    t_rec_array_event;
167516 l_null_rec_array_event               t_rec_array_event;
167517 l_array_ae_header_id                 xla_number_array_type;
167518 l_actual_flag                        VARCHAR2(1) := NULL;
167519 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
167520 l_balance_type_code                  VARCHAR2(1) :=NULL;
167521 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
167522 
167523 --
167524 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
167525 --
167526 
167527 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
167528 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
167529 
167530 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
167531 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
167532 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
167533 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
167534 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
167535 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
167536 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
167537 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
167538 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
167539 
167540 l_array_source_12              t_array_source_12;
167541 l_array_source_12_meaning      t_array_lookup_meaning;
167542 l_array_source_38              t_array_source_38;
167543 l_array_source_38_meaning      t_array_lookup_meaning;
167544 
167545 l_array_source_4      t_array_source_4;
167546 l_array_source_11      t_array_source_11;
167547 l_array_source_15      t_array_source_15;
167548 l_array_source_18      t_array_source_18;
167549 l_array_source_19      t_array_source_19;
167550 l_array_source_20      t_array_source_20;
167551 l_array_source_21      t_array_source_21;
167552 l_array_source_22      t_array_source_22;
167553 l_array_source_24      t_array_source_24;
167554 
167555 --
167556 CURSOR header_cur
167557 IS
167558 SELECT /*+ leading(xet) cardinality(xet,1) */
167559 -- Event Class Code: MISC_ISSUE_RCPT
167560     xet.entity_id
167561    ,xet.legal_entity_id
167562    ,xet.entity_code
167563    ,xet.transaction_number
167564    ,xet.event_id
167565    ,xet.event_class_code
167566    ,xet.event_type_code
167567    ,xet.event_number
167568    ,xet.event_date
167569    ,xet.transaction_date
167570    ,xet.reference_num_1
167571    ,xet.reference_num_2
167572    ,xet.reference_num_3
167573    ,xet.reference_num_4
167574    ,xet.reference_char_1
167575    ,xet.reference_char_2
167576    ,xet.reference_char_3
167577    ,xet.reference_char_4
167578    ,xet.reference_date_1
167579    ,xet.reference_date_2
167580    ,xet.reference_date_3
167581    ,xet.reference_date_4
167582    ,xet.event_created_by
167583    ,xet.budgetary_control_flag 
167584   , h1.DISTRIBUTION_TYPE    source_12
167585   , fvl12.meaning   source_12_meaning
167586   , h1.TRANSFER_TO_GL_INDICATOR    source_38
167587   , fvl38.meaning   source_38_meaning
167588   FROM xla_events_gt     xet 
167589   , CST_XLA_INV_HEADERS_V  h1
167590   , fnd_lookup_values    fvl12
167591   , fnd_lookup_values    fvl38
167592  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
167593    and xet.event_class_code = C_EVENT_CLASS_CODE
167594    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
167595    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
167596   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
167597   AND fvl12.view_application_id(+) = 700
167598   AND fvl12.language(+)            = USERENV('LANG')
167599      AND fvl38.lookup_type(+)         = 'YES_NO'
167600   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
167601   AND fvl38.view_application_id(+) = 0
167602   AND fvl38.language(+)            = USERENV('LANG')
167603   
167604  ORDER BY event_id
167605 ;
167606 
167607 
167608 --
167609 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
167610 IS
167611 SELECT  /*+ leading(xet) cardinality(xet,1) */
167612 -- Event Class Code: MISC_ISSUE_RCPT
167613     xet.entity_id
167614    ,xet.legal_entity_id
167615    ,xet.entity_code
167616    ,xet.transaction_number
167617    ,xet.event_id
167618    ,xet.event_class_code
167619    ,xet.event_type_code
167620    ,xet.event_number
167621    ,xet.event_date
167622    ,xet.transaction_date
167623    ,xet.reference_num_1
167624    ,xet.reference_num_2
167625    ,xet.reference_num_3
167626    ,xet.reference_num_4
167627    ,xet.reference_char_1
167628    ,xet.reference_char_2
167629    ,xet.reference_char_3
167630    ,xet.reference_char_4
167631    ,xet.reference_date_1
167632    ,xet.reference_date_2
167633    ,xet.reference_date_3
167634    ,xet.reference_date_4
167635    ,xet.event_created_by
167636    ,xet.budgetary_control_flag
167637  , l2.LINE_NUMBER  
167638   , l2.CODE_COMBINATION_ID    source_4
167639   , l2.DISTRIBUTION_IDENTIFIER    source_11
167640   , l2.CURRENCY_CODE    source_15
167641   , l2.ENTERED_AMOUNT    source_18
167642   , l2.CURRENCY_CONVERSION_DATE    source_19
167643   , l2.CURRENCY_CONVERSION_RATE    source_20
167644   , l2.CURRENCY_CONVERSION_TYPE    source_21
167645   , l2.ACCOUNTED_AMOUNT    source_22
167646   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
167647   FROM xla_events_gt     xet 
167648   , CST_XLA_INV_LINES_V  l2
167649  WHERE xet.event_id between x_first_event_id and x_last_event_id
167650    and xet.event_date between p_pad_start_date and p_pad_end_date
167651    and xet.event_class_code = C_EVENT_CLASS_CODE
167652    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
167653 ;
167654 
167655 --
167656 BEGIN
167657 IF g_log_enabled THEN
167658    l_log_module := C_DEFAULT_MODULE||'.EventClass_277';
167659 END IF;
167660 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
167661    trace
167662       (p_msg      => 'BEGIN of EventClass_277'
167663       ,p_level    => C_LEVEL_PROCEDURE
167664       ,p_module   => l_log_module);
167665 END IF;
167666 
167667 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167668    trace
167669       (p_msg      => 'p_application_id = '||p_application_id||
167670                      ' - p_base_ledger_id = '||p_base_ledger_id||
167671                      ' - p_target_ledger_id  = '||p_target_ledger_id||
167672                      ' - p_language = '||p_language||
167673                      ' - p_currency_code = '||p_currency_code||
167674                      ' - p_sla_ledger_id = '||p_sla_ledger_id
167675       ,p_level    => C_LEVEL_STATEMENT
167676       ,p_module   => l_log_module);
167677 END IF;
167678 --
167679 -- initialze arrays
167680 --
167681 g_array_event.DELETE;
167682 l_rec_array_event := l_null_rec_array_event;
167683 --
167684 --------------------------------------
167685 -- 4262811 Initialze MPA Line Number
167686 --------------------------------------
167687 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
167688 
167689 --
167690 
167691 --
167692 OPEN header_cur;
167693 --
167694 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167695    trace
167696    (p_msg      => 'SQL - FETCH header_cur'
167697    ,p_level    => C_LEVEL_STATEMENT
167698    ,p_module   => l_log_module);
167699 END IF;
167700 --
167701 LOOP
167702 FETCH header_cur BULK COLLECT INTO
167703         l_array_entity_id
167704       , l_array_legal_entity_id
167705       , l_array_entity_code
167706       , l_array_transaction_num
167707       , l_array_event_id
167708       , l_array_class_code
167709       , l_array_event_type
167710       , l_array_event_number
167711       , l_array_event_date
167712       , l_array_transaction_date
167713       , l_array_reference_num_1
167714       , l_array_reference_num_2
167715       , l_array_reference_num_3
167716       , l_array_reference_num_4
167717       , l_array_reference_char_1
167718       , l_array_reference_char_2
167719       , l_array_reference_char_3
167720       , l_array_reference_char_4
167721       , l_array_reference_date_1
167722       , l_array_reference_date_2
167723       , l_array_reference_date_3
167724       , l_array_reference_date_4
167725       , l_array_event_created_by
167726       , l_array_budgetary_control_flag 
167727       , l_array_source_12
167728       , l_array_source_12_meaning
167729       , l_array_source_38
167730       , l_array_source_38_meaning
167731       LIMIT l_rows;
167732 --
167733 IF (C_LEVEL_EVENT >= g_log_level) THEN
167734    trace
167735    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
167736    ,p_level    => C_LEVEL_EVENT
167737    ,p_module   => l_log_module);
167738 END IF;
167739 --
167740 EXIT WHEN l_array_entity_id.COUNT = 0;
167741 
167742 -- initialize arrays
167743 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
167744 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
167745 
167746 --
167747 -- Bug 4458708
167748 --
167749 XLA_AE_LINES_PKG.g_LineNumber := 0;
167750 
167751 
167752 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
167753 g_last_hdr_idx := l_array_event_id.LAST;
167754 --
167755 -- loop for the headers. Each iteration is for each header extract row
167756 -- fetched in header cursor
167757 --
167758 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
167759 
167760 --
167761 -- set event info as cache for other routines to refer event attributes
167762 --
167763 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
167764    (p_application_id           => p_application_id
167765    ,p_primary_ledger_id        => p_primary_ledger_id
167766    ,p_base_ledger_id           => p_base_ledger_id
167767    ,p_target_ledger_id         => p_target_ledger_id
167768    ,p_entity_id                => l_array_entity_id(hdr_idx)
167769    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
167770    ,p_entity_code              => l_array_entity_code(hdr_idx)
167771    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
167772    ,p_event_id                 => l_array_event_id(hdr_idx)
167773    ,p_event_class_code         => l_array_class_code(hdr_idx)
167774    ,p_event_type_code          => l_array_event_type(hdr_idx)
167775    ,p_event_number             => l_array_event_number(hdr_idx)
167776    ,p_event_date               => l_array_event_date(hdr_idx)
167777    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
167778    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
167779    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
167780    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
167781    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
167782    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
167783    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
167784    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
167785    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
167786    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
167787    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
167788    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
167789    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
167790    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
167791    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
167792 
167793 --
167794 -- set the status of entry to C_VALID (0)
167795 --
167796 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
167797 
167798 --
167799 -- initialize a row for ae header
167800 --
167801 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
167802 
167803 l_event_id := l_array_event_id(hdr_idx);
167804 
167805 --
167806 -- storing the hdr_idx for event. May be used by line cursor.
167807 --
167808 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
167809 
167810 --
167811 -- store sources from header extract. This can be improved to
167812 -- store only those sources from header extract that may be used in lines
167813 --
167814 
167815 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
167816 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
167817 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
167818 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
167819 
167820 --
167821 -- initilaize the status of ae headers for diffrent balance types
167822 -- the status is initialised to C_NOT_CREATED (2)
167823 --
167824 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
167825 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
167826 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
167827 
167828 --
167829 -- call api to validate and store accounting attributes for header
167830 --
167831 
167832 ------------------------------------------------------------
167833 -- Accrual Reversal : to get date for Standard Source (NONE)
167834 ------------------------------------------------------------
167835 l_acc_rev_gl_date_source := NULL;
167836 
167837      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
167838       l_rec_acct_attrs.array_date_value(1) := 
167839 xla_ae_sources_pkg.GetSystemSourceDate(
167840    p_source_code           => 'XLA_REFERENCE_DATE_1'
167841  , p_source_type_code      => 'Y'
167842  , p_source_application_id =>  602
167843 );
167844      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
167845       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
167846 
167847 
167848 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
167849 
167850 XLA_AE_HEADER_PKG.SetJeCategoryName;
167851 
167852 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
167853 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
167854 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
167855 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
167856 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
167857 
167858 
167859 -- No header level analytical criteria
167860 
167861 --
167862 --accounting attribute enhancement, bug 3612931
167863 --
167864 l_trx_reversal_source := SUBSTR(NULL, 1,30);
167865 
167866 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
167867    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
167868 
167869    xla_accounting_err_pkg.build_message
167870       (p_appli_s_name            => 'XLA'
167871       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
167872       ,p_token_1                 => 'ACCT_ATTR_NAME'
167873       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
167874       ,p_token_2                 => 'PRODUCT_NAME'
167875       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
167876       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
167877       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
167878       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
167879 
167880 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
167881    --
167882    -- following sets the accounting attributes needed to reverse
167883    -- accounting for a distributeion
167884    --
167885    xla_ae_lines_pkg.SetTrxReversalAttrs
167886       (p_event_id              => l_event_id
167887       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
167888       ,p_trx_reversal_source   => l_trx_reversal_source);
167889 
167890 END IF;
167891 
167892 
167893 ----------------------------------------------------------------
167894 -- 4262811 -  update the header statuses to invalid in need be
167895 ----------------------------------------------------------------
167896 --
167897 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
167898 
167899 
167900   -----------------------------------------------
167901   -- No accrual reversal for the event class/type
167902   -----------------------------------------------
167903 ----------------------------------------------------------------
167904 
167905 --
167906 -- this ends the header loop iteration for one bulk fetch
167907 --
167908 END LOOP;
167909 
167910 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
167911 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
167912 
167913 --
167914 -- insert dummy rows into lines gt table that were created due to
167915 -- transaction reversals
167916 --
167917 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
167918    l_result := XLA_AE_LINES_PKG.InsertLines;
167919 END IF;
167920 
167921 --
167922 -- reset the temp_line_num for each set of events fetched from header
167923 -- cursor rather than doing it for each new event in line cursor
167924 -- Bug 3939231
167925 --
167926 xla_ae_lines_pkg.g_temp_line_num := 0;
167927 
167928 
167929 
167930 --
167931 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
167932 --
167933 --
167934 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167935 
167936       trace
167937          (p_msg      => 'SQL - FETCH line_cur'
167938          ,p_level    => C_LEVEL_STATEMENT
167939          ,p_module   => l_log_module);
167940 
167941 END IF;
167942 --
167943 --
167944 LOOP
167945   --
167946   FETCH line_cur BULK COLLECT INTO
167947         l_array_entity_id
167948       , l_array_legal_entity_id
167949       , l_array_entity_code
167950       , l_array_transaction_num
167951       , l_array_event_id
167952       , l_array_class_code
167953       , l_array_event_type
167954       , l_array_event_number
167955       , l_array_event_date
167956       , l_array_transaction_date
167957       , l_array_reference_num_1
167958       , l_array_reference_num_2
167959       , l_array_reference_num_3
167960       , l_array_reference_num_4
167961       , l_array_reference_char_1
167962       , l_array_reference_char_2
167963       , l_array_reference_char_3
167964       , l_array_reference_char_4
167965       , l_array_reference_date_1
167966       , l_array_reference_date_2
167967       , l_array_reference_date_3
167968       , l_array_reference_date_4
167969       , l_array_event_created_by
167970       , l_array_budgetary_control_flag
167971       , l_array_extract_line_num 
167972       , l_array_source_4
167973       , l_array_source_11
167974       , l_array_source_15
167975       , l_array_source_18
167976       , l_array_source_19
167977       , l_array_source_20
167978       , l_array_source_21
167979       , l_array_source_22
167980       , l_array_source_24
167981       LIMIT l_rows;
167982 
167983   --
167984   IF (C_LEVEL_EVENT >= g_log_level) THEN
167985             trace
167986                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
167987                ,p_level    => C_LEVEL_EVENT
167988                ,p_module   => l_log_module);
167989   END IF;
167990   --
167991   EXIT WHEN l_array_entity_id.count = 0;
167992 
167993   XLA_AE_LINES_PKG.g_rec_lines := null;
167994 
167995 --
167996 -- Bug 4458708
167997 --
167998 XLA_AE_LINES_PKG.g_LineNumber := 0;
167999 --
168000 --
168001 
168002 FOR Idx IN 1..l_array_event_id.count LOOP
168003    --
168004    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
168005    --
168006    l_event_id := l_array_event_id(idx);  -- 5648433
168007 
168008    --
168009    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
168010    --
168011 
168012    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
168013              (g_array_event(l_event_id).array_value_num('header_index'))
168014          ,'N'
168015          ) <> 'Y'
168016    THEN
168017       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168018          trace
168019             (p_msg      => 'Trancaction revesal option is not Y '
168020             ,p_level    => C_LEVEL_STATEMENT
168021             ,p_module   => l_log_module);
168022       END IF;
168023 
168024 --
168025 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
168026 --
168027 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
168028 --
168029 -- set event info as cache for other routines to refer event attributes
168030 --
168031 
168032 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
168033    l_previous_event_id := l_event_id;
168034 
168035    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
168036       (p_application_id           => p_application_id
168037       ,p_primary_ledger_id        => p_primary_ledger_id
168038       ,p_base_ledger_id           => p_base_ledger_id
168039       ,p_target_ledger_id         => p_target_ledger_id
168040       ,p_entity_id                => l_array_entity_id(Idx)
168041       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
168042       ,p_entity_code              => l_array_entity_code(Idx)
168043       ,p_transaction_num          => l_array_transaction_num(Idx)
168044       ,p_event_id                 => l_array_event_id(Idx)
168045       ,p_event_class_code         => l_array_class_code(Idx)
168046       ,p_event_type_code          => l_array_event_type(Idx)
168047       ,p_event_number             => l_array_event_number(Idx)
168048       ,p_event_date               => l_array_event_date(Idx)
168049       ,p_transaction_date         => l_array_transaction_date(Idx)
168050       ,p_reference_num_1          => l_array_reference_num_1(Idx)
168051       ,p_reference_num_2          => l_array_reference_num_2(Idx)
168052       ,p_reference_num_3          => l_array_reference_num_3(Idx)
168053       ,p_reference_num_4          => l_array_reference_num_4(Idx)
168054       ,p_reference_char_1         => l_array_reference_char_1(Idx)
168055       ,p_reference_char_2         => l_array_reference_char_2(Idx)
168056       ,p_reference_char_3         => l_array_reference_char_3(Idx)
168057       ,p_reference_char_4         => l_array_reference_char_4(Idx)
168058       ,p_reference_date_1         => l_array_reference_date_1(Idx)
168059       ,p_reference_date_2         => l_array_reference_date_2(Idx)
168060       ,p_reference_date_3         => l_array_reference_date_3(Idx)
168061       ,p_reference_date_4         => l_array_reference_date_4(Idx)
168062       ,p_event_created_by         => l_array_event_created_by(Idx)
168063       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
168064        --
168065 END IF;
168066 
168067 
168068 
168069 --
168070 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
168071 
168072 l_acct_reversal_source := SUBSTR(NULL, 1,30);
168073 
168074 IF l_continue_with_lines THEN
168075    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
168076       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
168077 
168078       xla_accounting_err_pkg.build_message
168079          (p_appli_s_name            => 'XLA'
168080          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
168081          ,p_token_1                 => 'LINE_NUMBER'
168082          ,p_value_1                 => l_array_extract_line_num(Idx)
168083          ,p_token_2                 => 'PRODUCT_NAME'
168084          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
168085          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
168086          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
168087          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
168088 
168089    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
168090       --
168091       -- following sets the accounting attributes needed to reverse
168092       -- accounting for a distributeion
168093       --
168094 
168095       --
168096       -- 5217187
168097       --
168098       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
168099       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
168100                                        g_array_event(l_event_id).array_value_num('header_index'));
168101       --
168102       --
168103 
168104       -- No reversal code generated
168105 
168106       xla_ae_lines_pkg.SetAcctReversalAttrs
168107          (p_event_id             => l_event_id
168108          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
168109          ,p_calculate_acctd_flag => l_calculate_acctd_flag
168110          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
168111    END IF;
168112 
168113    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
168114        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
168115 
168116 --
168117 AcctLineType_35 (
168118  p_application_id  => p_application_id
168119  ,p_event_id     => l_event_id
168120  ,p_calculate_acctd_flag => l_calculate_acctd_flag
168121  ,p_calculate_g_l_flag => l_calculate_g_l_flag
168122  ,p_actual_flag => l_actual_flag
168123  ,p_balance_type_code => l_balance_type_code
168124  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
168125  
168126  , p_source_4 => l_array_source_4(Idx)
168127  , p_source_11 => l_array_source_11(Idx)
168128  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
168129  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
168130  , p_source_15 => l_array_source_15(Idx)
168131  , p_source_18 => l_array_source_18(Idx)
168132  , p_source_19 => l_array_source_19(Idx)
168133  , p_source_20 => l_array_source_20(Idx)
168134  , p_source_21 => l_array_source_21(Idx)
168135  , p_source_22 => l_array_source_22(Idx)
168136  , p_source_24 => l_array_source_24(Idx)
168137  );
168138 If(l_balance_type_code = 'A') THEN
168139   l_actual_gain_loss_ref := l_gain_or_loss_ref;
168140 END IF;
168141 
168142 --
168143 
168144 
168145 --
168146 AcctLineType_143 (
168147  p_application_id  => p_application_id
168148  ,p_event_id     => l_event_id
168149  ,p_calculate_acctd_flag => l_calculate_acctd_flag
168150  ,p_calculate_g_l_flag => l_calculate_g_l_flag
168151  ,p_actual_flag => l_actual_flag
168152  ,p_balance_type_code => l_balance_type_code
168153  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
168154  
168155  , p_source_4 => l_array_source_4(Idx)
168156  , p_source_11 => l_array_source_11(Idx)
168157  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
168158  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
168159  , p_source_15 => l_array_source_15(Idx)
168160  , p_source_18 => l_array_source_18(Idx)
168161  , p_source_19 => l_array_source_19(Idx)
168162  , p_source_20 => l_array_source_20(Idx)
168163  , p_source_21 => l_array_source_21(Idx)
168164  , p_source_22 => l_array_source_22(Idx)
168165  , p_source_24 => l_array_source_24(Idx)
168166  );
168167 If(l_balance_type_code = 'A') THEN
168168   l_actual_gain_loss_ref := l_gain_or_loss_ref;
168169 END IF;
168170 
168171 --
168172 
168173 
168174 --
168175 AcctLineType_200 (
168176  p_application_id  => p_application_id
168177  ,p_event_id     => l_event_id
168178  ,p_calculate_acctd_flag => l_calculate_acctd_flag
168179  ,p_calculate_g_l_flag => l_calculate_g_l_flag
168180  ,p_actual_flag => l_actual_flag
168181  ,p_balance_type_code => l_balance_type_code
168182  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
168183  
168184  , p_source_4 => l_array_source_4(Idx)
168185  , p_source_11 => l_array_source_11(Idx)
168186  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
168187  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
168188  , p_source_15 => l_array_source_15(Idx)
168189  , p_source_18 => l_array_source_18(Idx)
168190  , p_source_19 => l_array_source_19(Idx)
168191  , p_source_20 => l_array_source_20(Idx)
168192  , p_source_21 => l_array_source_21(Idx)
168193  , p_source_22 => l_array_source_22(Idx)
168194  , p_source_24 => l_array_source_24(Idx)
168195  );
168196 If(l_balance_type_code = 'A') THEN
168197   l_actual_gain_loss_ref := l_gain_or_loss_ref;
168198 END IF;
168199 
168200 --
168201 
168202       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
168203       -- or secondary ledger that has different currency with primary
168204       -- or alc that is calculated by sla
168205       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
168206             (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'))
168207 
168208 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
168209 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
168210           AND (l_actual_flag = 'A')) THEN
168211         XLA_AE_LINES_PKG.CreateGainOrLossLines(
168212           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
168213          ,p_application_id   => p_application_id
168214          ,p_amb_context_code => 'DEFAULT'
168215          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
168216          ,p_event_class_code => C_EVENT_CLASS_CODE
168217          ,p_event_type_code  => C_EVENT_TYPE_CODE
168218          
168219          ,p_gain_ccid        => -1
168220          ,p_loss_ccid        => -1
168221 
168222          ,p_actual_flag      => l_actual_flag
168223          ,p_enc_flag         => null
168224          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
168225          ,p_enc_g_l_ref      => null
168226          );
168227       END IF;
168228    END IF;
168229 END IF;
168230 
168231    ELSE
168232       --
168233       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
168234       --
168235       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168236          trace
168237             (p_msg      => 'Trancaction revesal option is Y'
168238             ,p_level    => C_LEVEL_STATEMENT
168239             ,p_module   => l_log_module);
168240       END IF;
168241    END IF;
168242 
168243 END LOOP;
168244 l_result := XLA_AE_LINES_PKG.InsertLines ;
168245 end loop;
168246 close line_cur;
168247 
168248 
168249 --
168250 -- insert headers into xla_ae_headers_gt table
168251 --
168252 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
168253 
168254 -- insert into errors table here.
168255 
168256 END LOOP;
168257 
168258 --
168259 -- 4865292
168260 --
168261 -- Compare g_hdr_extract_count with event count in
168262 -- CreateHeadersAndLines.
168263 --
168264 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
168265 
168266 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168267    trace (p_msg     => '# rows extracted from header extract objects '
168268                     || ' (running total): '
168269                     || g_hdr_extract_count
168270          ,p_level   => C_LEVEL_STATEMENT
168271          ,p_module  => l_log_module);
168272 END IF;
168273 
168274 CLOSE header_cur;
168275 --
168276 
168277 --
168278 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
168279    trace
168280       (p_msg      => 'END of EventClass_277'
168281       ,p_level    => C_LEVEL_PROCEDURE
168282       ,p_module   => l_log_module);
168283 END IF;
168284 --
168285 RETURN l_result;
168286 EXCEPTION
168287 WHEN xla_exceptions_pkg.application_exception THEN
168288    
168289 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
168290 
168291    
168292 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
168293 
168294    RAISE;
168295 
168296 WHEN NO_DATA_FOUND THEN
168297 
168298 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
168299 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
168300 
168301 FOR header_record IN header_cur
168302 LOOP
168303     l_array_header_events(header_record.event_id) := header_record.event_id;
168304 END LOOP;
168305 
168306 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
168307 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
168308 
168309 fnd_file.put_line(fnd_file.LOG, '                    ');
168310 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
168311 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
168312 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
168313 
168314 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
168315 LOOP
168316 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
168317 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
168318         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
168319 	END IF;
168320 END LOOP;
168321 
168322 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
168323 fnd_file.put_line(fnd_file.LOG, '                    ');
168324 
168325 
168326 xla_exceptions_pkg.raise_message
168327       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_277');
168328 
168329 
168330 WHEN OTHERS THEN
168331    xla_exceptions_pkg.raise_message
168332       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_277');
168333 END EventClass_277;
168334 --
168335 
168336 ---------------------------------------
168337 --
168338 -- PRIVATE PROCEDURE
168339 --         insert_sources_278
168340 --
168341 ----------------------------------------
168342 --
168343 PROCEDURE insert_sources_278(
168344                                 p_target_ledger_id       IN NUMBER
168345                               , p_language               IN VARCHAR2
168346                               , p_sla_ledger_id          IN NUMBER
168347                               , p_pad_start_date         IN DATE
168348                               , p_pad_end_date           IN DATE
168349                          )
168350 IS
168351 
168352 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'MTL_COST_UPD_ALL';
168353 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'MTL_COST_UPD';
168354 p_apps_owner                   VARCHAR2(30);
168355 l_log_module                   VARCHAR2(240);
168356 BEGIN
168357 IF g_log_enabled THEN
168358       l_log_module := C_DEFAULT_MODULE||'.insert_sources_278';
168359 END IF;
168360 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
168361 
168362       trace
168363          (p_msg      => 'BEGIN of insert_sources_278'
168364          ,p_level    => C_LEVEL_PROCEDURE
168365          ,p_module   => l_log_module);
168366 
168367 END IF;
168368 
168369 -- select APPS owner
168370 SELECT oracle_username
168371   INTO p_apps_owner
168372   FROM fnd_oracle_userid
168373  WHERE read_only_flag = 'U'
168374 ;
168375 
168376 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168377       trace
168378          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
168379                         ' - p_language = '||p_language||
168380                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
168381                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
168382                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
168383                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
168384          ,p_level    => C_LEVEL_STATEMENT
168385          ,p_module   => l_log_module);
168386 END IF;
168387 
168388 
168389 --
168390 INSERT INTO xla_diag_sources --hdr2
168391 (
168392         event_id
168393       , ledger_id
168394       , sla_ledger_id
168395       , description_language
168396       , object_name
168397       , object_type_code
168398       , line_number
168399       , source_application_id
168400       , source_type_code
168401       , source_code
168402       , source_value
168403       , source_meaning
168404       , created_by
168405       , creation_date
168406       , last_update_date
168407       , last_updated_by
168408       , last_update_login
168409       , program_update_date
168410       , program_application_id
168411       , program_id
168412       , request_id
168413 )
168414 SELECT
168415         event_id
168416       , p_target_ledger_id
168417       , p_sla_ledger_id
168418       , p_language
168419       , object_name
168420       , object_type_code
168421       , line_number
168422       , source_application_id
168423       , source_type_code
168424       , source_code
168425       , SUBSTR(source_value ,1,1996)
168426       , SUBSTR(source_meaning ,1,200)
168427       , xla_environment_pkg.g_Usr_Id
168428       , TRUNC(SYSDATE)
168429       , TRUNC(SYSDATE)
168430       , xla_environment_pkg.g_Usr_Id
168431       , xla_environment_pkg.g_Login_Id
168432       , TRUNC(SYSDATE)
168433       , xla_environment_pkg.g_Prog_Appl_Id
168434       , xla_environment_pkg.g_Prog_Id
168435       , xla_environment_pkg.g_Req_Id
168436   FROM (
168437        SELECT xet.event_id                  event_id
168438             , 0                          line_number
168439             , CASE r
168440                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
168441                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
168442                 
168443                ELSE null
168444               END                           object_name
168445             , CASE r
168446                 WHEN 1 THEN 'HEADER' 
168447                 WHEN 2 THEN 'HEADER' 
168448                 
168449                 ELSE null
168450               END                           object_type_code
168451             , CASE r
168452                 WHEN 1 THEN '707' 
168453                 WHEN 2 THEN '707' 
168454                 
168455                 ELSE null
168456               END                           source_application_id
168457             , 'S'             source_type_code
168458             , CASE r
168459                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
168460                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
168461                 
168462                 ELSE null
168463               END                           source_code
168464             , CASE r
168465                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
168466                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
168467                 
168468                 ELSE null
168469               END                           source_value
168470             , CASE r
168471                 WHEN 1 THEN fvl12.meaning
168472                 WHEN 2 THEN fvl38.meaning
168473                 
168474                 ELSE null
168475               END               source_meaning
168476          FROM xla_events_gt     xet  
168477       , CST_XLA_INV_HEADERS_V  h1
168478   , fnd_lookup_values    fvl12
168479   , fnd_lookup_values    fvl38
168480              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
168481          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
168482            AND xet.event_class_code = C_EVENT_CLASS_CODE
168483               AND h1.event_id = xet.event_id
168484    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
168485   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
168486   AND fvl12.view_application_id(+) = 700
168487   AND fvl12.language(+)            = USERENV('LANG')
168488      AND fvl38.lookup_type(+)         = 'YES_NO'
168489   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
168490   AND fvl38.view_application_id(+) = 0
168491   AND fvl38.language(+)            = USERENV('LANG')
168492   
168493 )
168494 ;
168495 --
168496 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168497 
168498       trace
168499          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
168500          ,p_level    => C_LEVEL_STATEMENT
168501          ,p_module   => l_log_module);
168502 
168503 END IF;
168504 --
168505 
168506 
168507 
168508 --
168509 INSERT INTO xla_diag_sources  --line2
168510 (
168511         event_id
168512       , ledger_id
168513       , sla_ledger_id
168514       , description_language
168515       , object_name
168516       , object_type_code
168517       , line_number
168518       , source_application_id
168519       , source_type_code
168520       , source_code
168521       , source_value
168522       , source_meaning
168523       , created_by
168524       , creation_date
168525       , last_update_date
168526       , last_updated_by
168527       , last_update_login
168528       , program_update_date
168529       , program_application_id
168530       , program_id
168531       , request_id
168532 )
168533 SELECT  event_id
168534       , p_target_ledger_id
168535       , p_sla_ledger_id
168536       , p_language
168537       , object_name
168538       , object_type_code
168539       , line_number
168540       , source_application_id
168541       , source_type_code
168542       , source_code
168543       , SUBSTR(source_value,1,1996)
168544       , SUBSTR(source_meaning ,1,200)
168545       , xla_environment_pkg.g_Usr_Id
168546       , TRUNC(SYSDATE)
168547       , TRUNC(SYSDATE)
168548       , xla_environment_pkg.g_Usr_Id
168549       , xla_environment_pkg.g_Login_Id
168550       , TRUNC(SYSDATE)
168551       , xla_environment_pkg.g_Prog_Appl_Id
168552       , xla_environment_pkg.g_Prog_Id
168553       , xla_environment_pkg.g_Req_Id
168554   FROM (
168555        SELECT xet.event_id                  event_id
168556             , l2.line_number                 line_number
168557             , CASE r
168558                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
168559                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
168560                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
168561                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
168562                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
168563                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
168564                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
168565                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
168566                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
168567                 
168568                ELSE null
168569               END                           object_name
168570             , CASE r
168571                 WHEN 1 THEN 'LINE' 
168572                 WHEN 2 THEN 'LINE' 
168573                 WHEN 3 THEN 'LINE' 
168574                 WHEN 4 THEN 'LINE' 
168575                 WHEN 5 THEN 'LINE' 
168576                 WHEN 6 THEN 'LINE' 
168577                 WHEN 7 THEN 'LINE' 
168578                 WHEN 8 THEN 'LINE' 
168579                 WHEN 9 THEN 'LINE' 
168580                 
168581                 ELSE null
168582               END                           object_type_code
168583             , CASE r
168584                 WHEN 1 THEN '707' 
168585                 WHEN 2 THEN '707' 
168586                 WHEN 3 THEN '707' 
168587                 WHEN 4 THEN '707' 
168588                 WHEN 5 THEN '707' 
168589                 WHEN 6 THEN '707' 
168590                 WHEN 7 THEN '707' 
168591                 WHEN 8 THEN '707' 
168592                 WHEN 9 THEN '707' 
168593                 
168594                 ELSE null
168595               END                           source_application_id
168596             , 'S'             source_type_code
168597             , CASE r
168598                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
168599                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
168600                 WHEN 3 THEN 'CURRENCY_CODE' 
168601                 WHEN 4 THEN 'ENTERED_AMOUNT' 
168602                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
168603                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
168604                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
168605                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
168606                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
168607                 
168608                 ELSE null
168609               END                           source_code
168610             , CASE r
168611                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
168612                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
168613                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
168614                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
168615                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
168616                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
168617                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
168618                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
168619                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
168620                 
168621                 ELSE null
168622               END                           source_value
168623             , null              source_meaning
168624          FROM  xla_events_gt     xet  
168625         , CST_XLA_INV_LINES_V  l2
168626             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
168627         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
168628           AND xet.event_class_code = C_EVENT_CLASS_CODE
168629             AND l2.event_id          = xet.event_id
168630 
168631 )
168632 ;
168633 --
168634 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168635 
168636       trace
168637          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
168638          ,p_level    => C_LEVEL_STATEMENT
168639          ,p_module   => l_log_module);
168640 
168641 END IF;
168642 
168643 
168644 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
168645       trace
168646          (p_msg      => 'END of insert_sources_278'
168647          ,p_level    => C_LEVEL_PROCEDURE
168648          ,p_module   => l_log_module);
168649 END IF;
168650 EXCEPTION
168651   WHEN xla_exceptions_pkg.application_exception THEN
168652       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
168653             trace
168654                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
168655                ,p_level    => C_LEVEL_EXCEPTION
168656                ,p_module   => l_log_module);
168657       END IF;
168658       RAISE;
168659   WHEN OTHERS THEN
168660       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
168661             trace
168662                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
168663                ,p_level    => C_LEVEL_EXCEPTION
168664                ,p_module   => l_log_module);
168665        END IF;
168666        xla_exceptions_pkg.raise_message
168667            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_278');
168668 END insert_sources_278;
168669 --
168670 
168671 ---------------------------------------
168672 --
168673 -- PRIVATE FUNCTION
168674 --         EventClass_278
168675 --
168676 ----------------------------------------
168677 --
168678 FUNCTION EventClass_278
168679        (p_application_id         IN NUMBER
168680        ,p_base_ledger_id         IN NUMBER
168681        ,p_target_ledger_id       IN NUMBER
168682        ,p_language               IN VARCHAR2
168683        ,p_currency_code          IN VARCHAR2
168684        ,p_sla_ledger_id          IN NUMBER
168685        ,p_pad_start_date         IN DATE
168686        ,p_pad_end_date           IN DATE
168687        ,p_primary_ledger_id      IN NUMBER)
168688 RETURN BOOLEAN IS
168689 --
168690 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'MTL_COST_UPD_ALL';
168691 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'MTL_COST_UPD';
168692 
168693 l_calculate_acctd_flag   VARCHAR2(1) :='N';
168694 l_calculate_g_l_flag     VARCHAR2(1) :='N';
168695 --
168696 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168697 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168698 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
168699 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
168700 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168701 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
168702 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
168703 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168704 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168705 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168706 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168707 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168708 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168709 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168710 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
168711 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
168712 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
168713 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
168714 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168715 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168716 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168717 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168718 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
168719 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
168720 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
168721 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
168722 
168723 l_event_id                             NUMBER;
168724 l_previous_event_id                    NUMBER;
168725 l_first_event_id                       NUMBER;
168726 l_last_event_id                        NUMBER;
168727 
168728 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
168729 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
168730 --
168731 --
168732 l_result                    BOOLEAN := TRUE;
168733 l_rows                      NUMBER  := 1000;
168734 l_event_type_name           VARCHAR2(80) := 'All';
168735 l_event_class_name          VARCHAR2(80) := 'Material Cost Update';
168736 l_description               VARCHAR2(4000);
168737 l_transaction_reversal      NUMBER;
168738 l_ae_header_id              NUMBER;
168739 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
168740 l_log_module                VARCHAR2(240);
168741 --
168742 l_acct_reversal_source      VARCHAR2(30);
168743 l_trx_reversal_source       VARCHAR2(30);
168744 
168745 l_continue_with_lines       BOOLEAN := TRUE;
168746 --
168747 l_acc_rev_gl_date_source    DATE;                      -- 4262811
168748 --
168749 type t_array_event_id is table of number index by binary_integer;
168750 
168751 l_rec_array_event                    t_rec_array_event;
168752 l_null_rec_array_event               t_rec_array_event;
168753 l_array_ae_header_id                 xla_number_array_type;
168754 l_actual_flag                        VARCHAR2(1) := NULL;
168755 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
168756 l_balance_type_code                  VARCHAR2(1) :=NULL;
168757 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
168758 
168759 --
168760 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
168761 --
168762 
168763 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
168764 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
168765 
168766 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
168767 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
168768 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
168769 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
168770 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
168771 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
168772 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
168773 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
168774 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
168775 
168776 l_array_source_12              t_array_source_12;
168777 l_array_source_12_meaning      t_array_lookup_meaning;
168778 l_array_source_38              t_array_source_38;
168779 l_array_source_38_meaning      t_array_lookup_meaning;
168780 
168781 l_array_source_4      t_array_source_4;
168782 l_array_source_11      t_array_source_11;
168783 l_array_source_15      t_array_source_15;
168784 l_array_source_18      t_array_source_18;
168785 l_array_source_19      t_array_source_19;
168786 l_array_source_20      t_array_source_20;
168787 l_array_source_21      t_array_source_21;
168788 l_array_source_22      t_array_source_22;
168789 l_array_source_24      t_array_source_24;
168790 
168791 --
168792 CURSOR header_cur
168793 IS
168794 SELECT /*+ leading(xet) cardinality(xet,1) */
168795 -- Event Class Code: MTL_COST_UPD
168796     xet.entity_id
168797    ,xet.legal_entity_id
168798    ,xet.entity_code
168799    ,xet.transaction_number
168800    ,xet.event_id
168801    ,xet.event_class_code
168802    ,xet.event_type_code
168803    ,xet.event_number
168804    ,xet.event_date
168805    ,xet.transaction_date
168806    ,xet.reference_num_1
168807    ,xet.reference_num_2
168808    ,xet.reference_num_3
168809    ,xet.reference_num_4
168810    ,xet.reference_char_1
168811    ,xet.reference_char_2
168812    ,xet.reference_char_3
168813    ,xet.reference_char_4
168814    ,xet.reference_date_1
168815    ,xet.reference_date_2
168816    ,xet.reference_date_3
168817    ,xet.reference_date_4
168818    ,xet.event_created_by
168819    ,xet.budgetary_control_flag 
168820   , h1.DISTRIBUTION_TYPE    source_12
168821   , fvl12.meaning   source_12_meaning
168822   , h1.TRANSFER_TO_GL_INDICATOR    source_38
168823   , fvl38.meaning   source_38_meaning
168824   FROM xla_events_gt     xet 
168825   , CST_XLA_INV_HEADERS_V  h1
168826   , fnd_lookup_values    fvl12
168827   , fnd_lookup_values    fvl38
168828  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
168829    and xet.event_class_code = C_EVENT_CLASS_CODE
168830    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
168831    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
168832   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
168833   AND fvl12.view_application_id(+) = 700
168834   AND fvl12.language(+)            = USERENV('LANG')
168835      AND fvl38.lookup_type(+)         = 'YES_NO'
168836   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
168837   AND fvl38.view_application_id(+) = 0
168838   AND fvl38.language(+)            = USERENV('LANG')
168839   
168840  ORDER BY event_id
168841 ;
168842 
168843 
168844 --
168845 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
168846 IS
168847 SELECT  /*+ leading(xet) cardinality(xet,1) */
168848 -- Event Class Code: MTL_COST_UPD
168849     xet.entity_id
168850    ,xet.legal_entity_id
168851    ,xet.entity_code
168852    ,xet.transaction_number
168853    ,xet.event_id
168854    ,xet.event_class_code
168855    ,xet.event_type_code
168856    ,xet.event_number
168857    ,xet.event_date
168858    ,xet.transaction_date
168859    ,xet.reference_num_1
168860    ,xet.reference_num_2
168861    ,xet.reference_num_3
168862    ,xet.reference_num_4
168863    ,xet.reference_char_1
168864    ,xet.reference_char_2
168865    ,xet.reference_char_3
168866    ,xet.reference_char_4
168867    ,xet.reference_date_1
168868    ,xet.reference_date_2
168869    ,xet.reference_date_3
168870    ,xet.reference_date_4
168871    ,xet.event_created_by
168872    ,xet.budgetary_control_flag
168873  , l2.LINE_NUMBER  
168874   , l2.CODE_COMBINATION_ID    source_4
168875   , l2.DISTRIBUTION_IDENTIFIER    source_11
168876   , l2.CURRENCY_CODE    source_15
168877   , l2.ENTERED_AMOUNT    source_18
168878   , l2.CURRENCY_CONVERSION_DATE    source_19
168879   , l2.CURRENCY_CONVERSION_RATE    source_20
168880   , l2.CURRENCY_CONVERSION_TYPE    source_21
168881   , l2.ACCOUNTED_AMOUNT    source_22
168882   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
168883   FROM xla_events_gt     xet 
168884   , CST_XLA_INV_LINES_V  l2
168885  WHERE xet.event_id between x_first_event_id and x_last_event_id
168886    and xet.event_date between p_pad_start_date and p_pad_end_date
168887    and xet.event_class_code = C_EVENT_CLASS_CODE
168888    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
168889 ;
168890 
168891 --
168892 BEGIN
168893 IF g_log_enabled THEN
168894    l_log_module := C_DEFAULT_MODULE||'.EventClass_278';
168895 END IF;
168896 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
168897    trace
168898       (p_msg      => 'BEGIN of EventClass_278'
168899       ,p_level    => C_LEVEL_PROCEDURE
168900       ,p_module   => l_log_module);
168901 END IF;
168902 
168903 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168904    trace
168905       (p_msg      => 'p_application_id = '||p_application_id||
168906                      ' - p_base_ledger_id = '||p_base_ledger_id||
168907                      ' - p_target_ledger_id  = '||p_target_ledger_id||
168908                      ' - p_language = '||p_language||
168909                      ' - p_currency_code = '||p_currency_code||
168910                      ' - p_sla_ledger_id = '||p_sla_ledger_id
168911       ,p_level    => C_LEVEL_STATEMENT
168912       ,p_module   => l_log_module);
168913 END IF;
168914 --
168915 -- initialze arrays
168916 --
168917 g_array_event.DELETE;
168918 l_rec_array_event := l_null_rec_array_event;
168919 --
168920 --------------------------------------
168921 -- 4262811 Initialze MPA Line Number
168922 --------------------------------------
168923 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
168924 
168925 --
168926 
168927 --
168928 OPEN header_cur;
168929 --
168930 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168931    trace
168932    (p_msg      => 'SQL - FETCH header_cur'
168933    ,p_level    => C_LEVEL_STATEMENT
168934    ,p_module   => l_log_module);
168935 END IF;
168936 --
168937 LOOP
168938 FETCH header_cur BULK COLLECT INTO
168939         l_array_entity_id
168940       , l_array_legal_entity_id
168941       , l_array_entity_code
168942       , l_array_transaction_num
168943       , l_array_event_id
168944       , l_array_class_code
168945       , l_array_event_type
168946       , l_array_event_number
168947       , l_array_event_date
168948       , l_array_transaction_date
168949       , l_array_reference_num_1
168950       , l_array_reference_num_2
168951       , l_array_reference_num_3
168952       , l_array_reference_num_4
168953       , l_array_reference_char_1
168954       , l_array_reference_char_2
168955       , l_array_reference_char_3
168956       , l_array_reference_char_4
168957       , l_array_reference_date_1
168958       , l_array_reference_date_2
168959       , l_array_reference_date_3
168960       , l_array_reference_date_4
168961       , l_array_event_created_by
168962       , l_array_budgetary_control_flag 
168963       , l_array_source_12
168964       , l_array_source_12_meaning
168965       , l_array_source_38
168966       , l_array_source_38_meaning
168967       LIMIT l_rows;
168968 --
168969 IF (C_LEVEL_EVENT >= g_log_level) THEN
168970    trace
168971    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
168972    ,p_level    => C_LEVEL_EVENT
168973    ,p_module   => l_log_module);
168974 END IF;
168975 --
168976 EXIT WHEN l_array_entity_id.COUNT = 0;
168977 
168978 -- initialize arrays
168979 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
168980 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
168981 
168982 --
168983 -- Bug 4458708
168984 --
168985 XLA_AE_LINES_PKG.g_LineNumber := 0;
168986 
168987 
168988 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
168989 g_last_hdr_idx := l_array_event_id.LAST;
168990 --
168991 -- loop for the headers. Each iteration is for each header extract row
168992 -- fetched in header cursor
168993 --
168994 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
168995 
168996 --
168997 -- set event info as cache for other routines to refer event attributes
168998 --
168999 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
169000    (p_application_id           => p_application_id
169001    ,p_primary_ledger_id        => p_primary_ledger_id
169002    ,p_base_ledger_id           => p_base_ledger_id
169003    ,p_target_ledger_id         => p_target_ledger_id
169004    ,p_entity_id                => l_array_entity_id(hdr_idx)
169005    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
169006    ,p_entity_code              => l_array_entity_code(hdr_idx)
169007    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
169008    ,p_event_id                 => l_array_event_id(hdr_idx)
169009    ,p_event_class_code         => l_array_class_code(hdr_idx)
169010    ,p_event_type_code          => l_array_event_type(hdr_idx)
169011    ,p_event_number             => l_array_event_number(hdr_idx)
169012    ,p_event_date               => l_array_event_date(hdr_idx)
169013    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
169014    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
169015    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
169016    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
169017    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
169018    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
169019    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
169020    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
169021    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
169022    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
169023    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
169024    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
169025    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
169026    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
169027    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
169028 
169029 --
169030 -- set the status of entry to C_VALID (0)
169031 --
169032 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
169033 
169034 --
169035 -- initialize a row for ae header
169036 --
169037 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
169038 
169039 l_event_id := l_array_event_id(hdr_idx);
169040 
169041 --
169042 -- storing the hdr_idx for event. May be used by line cursor.
169043 --
169044 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
169045 
169046 --
169047 -- store sources from header extract. This can be improved to
169048 -- store only those sources from header extract that may be used in lines
169049 --
169050 
169051 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
169052 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
169053 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
169054 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
169055 
169056 --
169057 -- initilaize the status of ae headers for diffrent balance types
169058 -- the status is initialised to C_NOT_CREATED (2)
169059 --
169060 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
169061 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
169062 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
169063 
169064 --
169065 -- call api to validate and store accounting attributes for header
169066 --
169067 
169068 ------------------------------------------------------------
169069 -- Accrual Reversal : to get date for Standard Source (NONE)
169070 ------------------------------------------------------------
169071 l_acc_rev_gl_date_source := NULL;
169072 
169073      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
169074       l_rec_acct_attrs.array_date_value(1) := 
169075 xla_ae_sources_pkg.GetSystemSourceDate(
169076    p_source_code           => 'XLA_REFERENCE_DATE_1'
169077  , p_source_type_code      => 'Y'
169078  , p_source_application_id =>  602
169079 );
169080      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
169081       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
169082 
169083 
169084 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
169085 
169086 XLA_AE_HEADER_PKG.SetJeCategoryName;
169087 
169088 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
169089 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
169090 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
169091 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
169092 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
169093 
169094 
169095 -- No header level analytical criteria
169096 
169097 --
169098 --accounting attribute enhancement, bug 3612931
169099 --
169100 l_trx_reversal_source := SUBSTR(NULL, 1,30);
169101 
169102 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
169103    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
169104 
169105    xla_accounting_err_pkg.build_message
169106       (p_appli_s_name            => 'XLA'
169107       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
169108       ,p_token_1                 => 'ACCT_ATTR_NAME'
169109       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
169110       ,p_token_2                 => 'PRODUCT_NAME'
169111       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
169112       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
169113       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
169114       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
169115 
169116 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
169117    --
169118    -- following sets the accounting attributes needed to reverse
169119    -- accounting for a distributeion
169120    --
169121    xla_ae_lines_pkg.SetTrxReversalAttrs
169122       (p_event_id              => l_event_id
169123       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
169124       ,p_trx_reversal_source   => l_trx_reversal_source);
169125 
169126 END IF;
169127 
169128 
169129 ----------------------------------------------------------------
169130 -- 4262811 -  update the header statuses to invalid in need be
169131 ----------------------------------------------------------------
169132 --
169133 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
169134 
169135 
169136   -----------------------------------------------
169137   -- No accrual reversal for the event class/type
169138   -----------------------------------------------
169139 ----------------------------------------------------------------
169140 
169141 --
169142 -- this ends the header loop iteration for one bulk fetch
169143 --
169144 END LOOP;
169145 
169146 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
169147 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
169148 
169149 --
169150 -- insert dummy rows into lines gt table that were created due to
169151 -- transaction reversals
169152 --
169153 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
169154    l_result := XLA_AE_LINES_PKG.InsertLines;
169155 END IF;
169156 
169157 --
169158 -- reset the temp_line_num for each set of events fetched from header
169159 -- cursor rather than doing it for each new event in line cursor
169160 -- Bug 3939231
169161 --
169162 xla_ae_lines_pkg.g_temp_line_num := 0;
169163 
169164 
169165 
169166 --
169167 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
169168 --
169169 --
169170 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169171 
169172       trace
169173          (p_msg      => 'SQL - FETCH line_cur'
169174          ,p_level    => C_LEVEL_STATEMENT
169175          ,p_module   => l_log_module);
169176 
169177 END IF;
169178 --
169179 --
169180 LOOP
169181   --
169182   FETCH line_cur BULK COLLECT INTO
169183         l_array_entity_id
169184       , l_array_legal_entity_id
169185       , l_array_entity_code
169186       , l_array_transaction_num
169187       , l_array_event_id
169188       , l_array_class_code
169189       , l_array_event_type
169190       , l_array_event_number
169191       , l_array_event_date
169192       , l_array_transaction_date
169193       , l_array_reference_num_1
169194       , l_array_reference_num_2
169195       , l_array_reference_num_3
169196       , l_array_reference_num_4
169197       , l_array_reference_char_1
169198       , l_array_reference_char_2
169199       , l_array_reference_char_3
169200       , l_array_reference_char_4
169201       , l_array_reference_date_1
169202       , l_array_reference_date_2
169203       , l_array_reference_date_3
169204       , l_array_reference_date_4
169205       , l_array_event_created_by
169206       , l_array_budgetary_control_flag
169207       , l_array_extract_line_num 
169208       , l_array_source_4
169209       , l_array_source_11
169210       , l_array_source_15
169211       , l_array_source_18
169212       , l_array_source_19
169213       , l_array_source_20
169214       , l_array_source_21
169215       , l_array_source_22
169216       , l_array_source_24
169217       LIMIT l_rows;
169218 
169219   --
169220   IF (C_LEVEL_EVENT >= g_log_level) THEN
169221             trace
169222                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
169223                ,p_level    => C_LEVEL_EVENT
169224                ,p_module   => l_log_module);
169225   END IF;
169226   --
169227   EXIT WHEN l_array_entity_id.count = 0;
169228 
169229   XLA_AE_LINES_PKG.g_rec_lines := null;
169230 
169231 --
169232 -- Bug 4458708
169233 --
169234 XLA_AE_LINES_PKG.g_LineNumber := 0;
169235 --
169236 --
169237 
169238 FOR Idx IN 1..l_array_event_id.count LOOP
169239    --
169240    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
169241    --
169242    l_event_id := l_array_event_id(idx);  -- 5648433
169243 
169244    --
169245    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
169246    --
169247 
169248    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
169249              (g_array_event(l_event_id).array_value_num('header_index'))
169250          ,'N'
169251          ) <> 'Y'
169252    THEN
169253       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169254          trace
169255             (p_msg      => 'Trancaction revesal option is not Y '
169256             ,p_level    => C_LEVEL_STATEMENT
169257             ,p_module   => l_log_module);
169258       END IF;
169259 
169260 --
169261 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
169262 --
169263 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
169264 --
169265 -- set event info as cache for other routines to refer event attributes
169266 --
169267 
169268 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
169269    l_previous_event_id := l_event_id;
169270 
169271    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
169272       (p_application_id           => p_application_id
169273       ,p_primary_ledger_id        => p_primary_ledger_id
169274       ,p_base_ledger_id           => p_base_ledger_id
169275       ,p_target_ledger_id         => p_target_ledger_id
169276       ,p_entity_id                => l_array_entity_id(Idx)
169277       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
169278       ,p_entity_code              => l_array_entity_code(Idx)
169279       ,p_transaction_num          => l_array_transaction_num(Idx)
169280       ,p_event_id                 => l_array_event_id(Idx)
169281       ,p_event_class_code         => l_array_class_code(Idx)
169282       ,p_event_type_code          => l_array_event_type(Idx)
169283       ,p_event_number             => l_array_event_number(Idx)
169284       ,p_event_date               => l_array_event_date(Idx)
169285       ,p_transaction_date         => l_array_transaction_date(Idx)
169286       ,p_reference_num_1          => l_array_reference_num_1(Idx)
169287       ,p_reference_num_2          => l_array_reference_num_2(Idx)
169288       ,p_reference_num_3          => l_array_reference_num_3(Idx)
169289       ,p_reference_num_4          => l_array_reference_num_4(Idx)
169290       ,p_reference_char_1         => l_array_reference_char_1(Idx)
169291       ,p_reference_char_2         => l_array_reference_char_2(Idx)
169292       ,p_reference_char_3         => l_array_reference_char_3(Idx)
169293       ,p_reference_char_4         => l_array_reference_char_4(Idx)
169294       ,p_reference_date_1         => l_array_reference_date_1(Idx)
169295       ,p_reference_date_2         => l_array_reference_date_2(Idx)
169296       ,p_reference_date_3         => l_array_reference_date_3(Idx)
169297       ,p_reference_date_4         => l_array_reference_date_4(Idx)
169298       ,p_event_created_by         => l_array_event_created_by(Idx)
169299       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
169300        --
169301 END IF;
169302 
169303 
169304 
169305 --
169306 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
169307 
169308 l_acct_reversal_source := SUBSTR(NULL, 1,30);
169309 
169310 IF l_continue_with_lines THEN
169311    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
169312       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
169313 
169314       xla_accounting_err_pkg.build_message
169315          (p_appli_s_name            => 'XLA'
169316          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
169317          ,p_token_1                 => 'LINE_NUMBER'
169318          ,p_value_1                 => l_array_extract_line_num(Idx)
169319          ,p_token_2                 => 'PRODUCT_NAME'
169320          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
169321          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
169322          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
169323          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
169324 
169325    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
169326       --
169327       -- following sets the accounting attributes needed to reverse
169328       -- accounting for a distributeion
169329       --
169330 
169331       --
169332       -- 5217187
169333       --
169334       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
169335       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
169336                                        g_array_event(l_event_id).array_value_num('header_index'));
169337       --
169338       --
169339 
169340       -- No reversal code generated
169341 
169342       xla_ae_lines_pkg.SetAcctReversalAttrs
169343          (p_event_id             => l_event_id
169344          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
169345          ,p_calculate_acctd_flag => l_calculate_acctd_flag
169346          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
169347    END IF;
169348 
169349    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
169350        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
169351 
169352 --
169353 AcctLineType_25 (
169354  p_application_id  => p_application_id
169355  ,p_event_id     => l_event_id
169356  ,p_calculate_acctd_flag => l_calculate_acctd_flag
169357  ,p_calculate_g_l_flag => l_calculate_g_l_flag
169358  ,p_actual_flag => l_actual_flag
169359  ,p_balance_type_code => l_balance_type_code
169360  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
169361  
169362  , p_source_4 => l_array_source_4(Idx)
169363  , p_source_11 => l_array_source_11(Idx)
169364  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
169365  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
169366  , p_source_15 => l_array_source_15(Idx)
169367  , p_source_18 => l_array_source_18(Idx)
169368  , p_source_19 => l_array_source_19(Idx)
169369  , p_source_20 => l_array_source_20(Idx)
169370  , p_source_21 => l_array_source_21(Idx)
169371  , p_source_22 => l_array_source_22(Idx)
169372  , p_source_24 => l_array_source_24(Idx)
169373  );
169374 If(l_balance_type_code = 'A') THEN
169375   l_actual_gain_loss_ref := l_gain_or_loss_ref;
169376 END IF;
169377 
169378 --
169379 
169380 
169381 --
169382 AcctLineType_41 (
169383  p_application_id  => p_application_id
169384  ,p_event_id     => l_event_id
169385  ,p_calculate_acctd_flag => l_calculate_acctd_flag
169386  ,p_calculate_g_l_flag => l_calculate_g_l_flag
169387  ,p_actual_flag => l_actual_flag
169388  ,p_balance_type_code => l_balance_type_code
169389  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
169390  
169391  , p_source_4 => l_array_source_4(Idx)
169392  , p_source_11 => l_array_source_11(Idx)
169393  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
169394  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
169395  , p_source_15 => l_array_source_15(Idx)
169396  , p_source_18 => l_array_source_18(Idx)
169397  , p_source_19 => l_array_source_19(Idx)
169398  , p_source_20 => l_array_source_20(Idx)
169399  , p_source_21 => l_array_source_21(Idx)
169400  , p_source_22 => l_array_source_22(Idx)
169401  , p_source_24 => l_array_source_24(Idx)
169402  );
169403 If(l_balance_type_code = 'A') THEN
169404   l_actual_gain_loss_ref := l_gain_or_loss_ref;
169405 END IF;
169406 
169407 --
169408 
169409 
169410 --
169411 AcctLineType_52 (
169412  p_application_id  => p_application_id
169413  ,p_event_id     => l_event_id
169414  ,p_calculate_acctd_flag => l_calculate_acctd_flag
169415  ,p_calculate_g_l_flag => l_calculate_g_l_flag
169416  ,p_actual_flag => l_actual_flag
169417  ,p_balance_type_code => l_balance_type_code
169418  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
169419  
169420  , p_source_4 => l_array_source_4(Idx)
169421  , p_source_11 => l_array_source_11(Idx)
169422  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
169423  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
169424  , p_source_15 => l_array_source_15(Idx)
169425  , p_source_18 => l_array_source_18(Idx)
169426  , p_source_19 => l_array_source_19(Idx)
169427  , p_source_20 => l_array_source_20(Idx)
169428  , p_source_21 => l_array_source_21(Idx)
169429  , p_source_22 => l_array_source_22(Idx)
169430  , p_source_24 => l_array_source_24(Idx)
169431  );
169432 If(l_balance_type_code = 'A') THEN
169433   l_actual_gain_loss_ref := l_gain_or_loss_ref;
169434 END IF;
169435 
169436 --
169437 
169438 
169439 --
169440 AcctLineType_125 (
169441  p_application_id  => p_application_id
169442  ,p_event_id     => l_event_id
169443  ,p_calculate_acctd_flag => l_calculate_acctd_flag
169444  ,p_calculate_g_l_flag => l_calculate_g_l_flag
169445  ,p_actual_flag => l_actual_flag
169446  ,p_balance_type_code => l_balance_type_code
169447  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
169448  
169449  , p_source_4 => l_array_source_4(Idx)
169450  , p_source_11 => l_array_source_11(Idx)
169451  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
169452  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
169453  , p_source_15 => l_array_source_15(Idx)
169454  , p_source_18 => l_array_source_18(Idx)
169455  , p_source_19 => l_array_source_19(Idx)
169456  , p_source_20 => l_array_source_20(Idx)
169457  , p_source_21 => l_array_source_21(Idx)
169458  , p_source_22 => l_array_source_22(Idx)
169459  , p_source_24 => l_array_source_24(Idx)
169460  );
169461 If(l_balance_type_code = 'A') THEN
169462   l_actual_gain_loss_ref := l_gain_or_loss_ref;
169463 END IF;
169464 
169465 --
169466 
169467 
169468 --
169469 AcctLineType_152 (
169470  p_application_id  => p_application_id
169471  ,p_event_id     => l_event_id
169472  ,p_calculate_acctd_flag => l_calculate_acctd_flag
169473  ,p_calculate_g_l_flag => l_calculate_g_l_flag
169474  ,p_actual_flag => l_actual_flag
169475  ,p_balance_type_code => l_balance_type_code
169476  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
169477  
169478  , p_source_4 => l_array_source_4(Idx)
169479  , p_source_11 => l_array_source_11(Idx)
169480  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
169481  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
169482  , p_source_15 => l_array_source_15(Idx)
169483  , p_source_18 => l_array_source_18(Idx)
169484  , p_source_19 => l_array_source_19(Idx)
169485  , p_source_20 => l_array_source_20(Idx)
169486  , p_source_21 => l_array_source_21(Idx)
169487  , p_source_22 => l_array_source_22(Idx)
169488  , p_source_24 => l_array_source_24(Idx)
169489  );
169490 If(l_balance_type_code = 'A') THEN
169491   l_actual_gain_loss_ref := l_gain_or_loss_ref;
169492 END IF;
169493 
169494 --
169495 
169496       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
169497       -- or secondary ledger that has different currency with primary
169498       -- or alc that is calculated by sla
169499       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
169500             (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'))
169501 
169502 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
169503 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
169504           AND (l_actual_flag = 'A')) THEN
169505         XLA_AE_LINES_PKG.CreateGainOrLossLines(
169506           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
169507          ,p_application_id   => p_application_id
169508          ,p_amb_context_code => 'DEFAULT'
169509          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
169510          ,p_event_class_code => C_EVENT_CLASS_CODE
169511          ,p_event_type_code  => C_EVENT_TYPE_CODE
169512          
169513          ,p_gain_ccid        => -1
169514          ,p_loss_ccid        => -1
169515 
169516          ,p_actual_flag      => l_actual_flag
169517          ,p_enc_flag         => null
169518          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
169519          ,p_enc_g_l_ref      => null
169520          );
169521       END IF;
169522    END IF;
169523 END IF;
169524 
169525    ELSE
169526       --
169527       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
169528       --
169529       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169530          trace
169531             (p_msg      => 'Trancaction revesal option is Y'
169532             ,p_level    => C_LEVEL_STATEMENT
169533             ,p_module   => l_log_module);
169534       END IF;
169535    END IF;
169536 
169537 END LOOP;
169538 l_result := XLA_AE_LINES_PKG.InsertLines ;
169539 end loop;
169540 close line_cur;
169541 
169542 
169543 --
169544 -- insert headers into xla_ae_headers_gt table
169545 --
169546 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
169547 
169548 -- insert into errors table here.
169549 
169550 END LOOP;
169551 
169552 --
169553 -- 4865292
169554 --
169555 -- Compare g_hdr_extract_count with event count in
169556 -- CreateHeadersAndLines.
169557 --
169558 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
169559 
169560 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169561    trace (p_msg     => '# rows extracted from header extract objects '
169562                     || ' (running total): '
169563                     || g_hdr_extract_count
169564          ,p_level   => C_LEVEL_STATEMENT
169565          ,p_module  => l_log_module);
169566 END IF;
169567 
169568 CLOSE header_cur;
169569 --
169570 
169571 --
169572 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
169573    trace
169574       (p_msg      => 'END of EventClass_278'
169575       ,p_level    => C_LEVEL_PROCEDURE
169576       ,p_module   => l_log_module);
169577 END IF;
169578 --
169579 RETURN l_result;
169580 EXCEPTION
169581 WHEN xla_exceptions_pkg.application_exception THEN
169582    
169583 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
169584 
169585    
169586 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
169587 
169588    RAISE;
169589 
169590 WHEN NO_DATA_FOUND THEN
169591 
169592 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
169593 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
169594 
169595 FOR header_record IN header_cur
169596 LOOP
169597     l_array_header_events(header_record.event_id) := header_record.event_id;
169598 END LOOP;
169599 
169600 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
169601 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
169602 
169603 fnd_file.put_line(fnd_file.LOG, '                    ');
169604 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
169605 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
169606 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
169607 
169608 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
169609 LOOP
169610 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
169611 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
169612         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
169613 	END IF;
169614 END LOOP;
169615 
169616 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
169617 fnd_file.put_line(fnd_file.LOG, '                    ');
169618 
169619 
169620 xla_exceptions_pkg.raise_message
169621       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_278');
169622 
169623 
169624 WHEN OTHERS THEN
169625    xla_exceptions_pkg.raise_message
169626       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_278');
169627 END EventClass_278;
169628 --
169629 
169630 ---------------------------------------
169631 --
169632 -- PRIVATE PROCEDURE
169633 --         insert_sources_279
169634 --
169635 ----------------------------------------
169636 --
169637 PROCEDURE insert_sources_279(
169638                                 p_target_ledger_id       IN NUMBER
169639                               , p_language               IN VARCHAR2
169640                               , p_sla_ledger_id          IN NUMBER
169641                               , p_pad_start_date         IN DATE
169642                               , p_pad_end_date           IN DATE
169643                          )
169644 IS
169645 
169646 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'OSP_ALL';
169647 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'OSP';
169648 p_apps_owner                   VARCHAR2(30);
169649 l_log_module                   VARCHAR2(240);
169650 BEGIN
169651 IF g_log_enabled THEN
169652       l_log_module := C_DEFAULT_MODULE||'.insert_sources_279';
169653 END IF;
169654 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
169655 
169656       trace
169657          (p_msg      => 'BEGIN of insert_sources_279'
169658          ,p_level    => C_LEVEL_PROCEDURE
169659          ,p_module   => l_log_module);
169660 
169661 END IF;
169662 
169663 -- select APPS owner
169664 SELECT oracle_username
169665   INTO p_apps_owner
169666   FROM fnd_oracle_userid
169667  WHERE read_only_flag = 'U'
169668 ;
169669 
169670 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169671       trace
169672          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
169673                         ' - p_language = '||p_language||
169674                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
169675                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
169676                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
169677                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
169678          ,p_level    => C_LEVEL_STATEMENT
169679          ,p_module   => l_log_module);
169680 END IF;
169681 
169682 
169683 --
169684 INSERT INTO xla_diag_sources --hdr2
169685 (
169686         event_id
169687       , ledger_id
169688       , sla_ledger_id
169689       , description_language
169690       , object_name
169691       , object_type_code
169692       , line_number
169693       , source_application_id
169694       , source_type_code
169695       , source_code
169696       , source_value
169697       , source_meaning
169698       , created_by
169699       , creation_date
169700       , last_update_date
169701       , last_updated_by
169702       , last_update_login
169703       , program_update_date
169704       , program_application_id
169705       , program_id
169706       , request_id
169707 )
169708 SELECT
169709         event_id
169710       , p_target_ledger_id
169711       , p_sla_ledger_id
169712       , p_language
169713       , object_name
169714       , object_type_code
169715       , line_number
169716       , source_application_id
169717       , source_type_code
169718       , source_code
169719       , SUBSTR(source_value ,1,1996)
169720       , SUBSTR(source_meaning ,1,200)
169721       , xla_environment_pkg.g_Usr_Id
169722       , TRUNC(SYSDATE)
169723       , TRUNC(SYSDATE)
169724       , xla_environment_pkg.g_Usr_Id
169725       , xla_environment_pkg.g_Login_Id
169726       , TRUNC(SYSDATE)
169727       , xla_environment_pkg.g_Prog_Appl_Id
169728       , xla_environment_pkg.g_Prog_Id
169729       , xla_environment_pkg.g_Req_Id
169730   FROM (
169731        SELECT xet.event_id                  event_id
169732             , 0                          line_number
169733             , CASE r
169734                WHEN 1 THEN 'CST_XLA_WIP_HEADERS_V' 
169735                 WHEN 2 THEN 'CST_XLA_WIP_HEADERS_V' 
169736                 WHEN 3 THEN 'CST_XLA_WIP_HEADERS_V' 
169737                 WHEN 4 THEN 'CST_XLA_WIP_HEADERS_V' 
169738                 WHEN 5 THEN 'CST_XLA_WIP_HEADERS_V' 
169739                 
169740                ELSE null
169741               END                           object_name
169742             , CASE r
169743                 WHEN 1 THEN 'HEADER' 
169744                 WHEN 2 THEN 'HEADER' 
169745                 WHEN 3 THEN 'HEADER' 
169746                 WHEN 4 THEN 'HEADER' 
169747                 WHEN 5 THEN 'HEADER' 
169748                 
169749                 ELSE null
169750               END                           object_type_code
169751             , CASE r
169752                 WHEN 1 THEN '707' 
169753                 WHEN 2 THEN '707' 
169754                 WHEN 3 THEN '707' 
169755                 WHEN 4 THEN '707' 
169756                 WHEN 5 THEN '707' 
169757                 
169758                 ELSE null
169759               END                           source_application_id
169760             , 'S'             source_type_code
169761             , CASE r
169762                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
169763                 WHEN 2 THEN 'CURRENCY_CODE' 
169764                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
169765                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
169766                 WHEN 5 THEN 'TRANSFER_TO_GL_INDICATOR' 
169767                 
169768                 ELSE null
169769               END                           source_code
169770             , CASE r
169771                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
169772                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
169773                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
169774                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
169775                 WHEN 5 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
169776                 
169777                 ELSE null
169778               END                           source_value
169779             , CASE r
169780                 WHEN 1 THEN fvl12.meaning
169781                 WHEN 5 THEN fvl38.meaning
169782                 
169783                 ELSE null
169784               END               source_meaning
169785          FROM xla_events_gt     xet  
169786       , CST_XLA_WIP_HEADERS_V  h1
169787   , fnd_lookup_values    fvl12
169788   , fnd_lookup_values    fvl38
169789              ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
169790          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
169791            AND xet.event_class_code = C_EVENT_CLASS_CODE
169792               AND h1.event_id = xet.event_id
169793    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
169794   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
169795   AND fvl12.view_application_id(+) = 700
169796   AND fvl12.language(+)            = USERENV('LANG')
169797      AND fvl38.lookup_type(+)         = 'YES_NO'
169798   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
169799   AND fvl38.view_application_id(+) = 0
169800   AND fvl38.language(+)            = USERENV('LANG')
169801   
169802 )
169803 ;
169804 --
169805 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169806 
169807       trace
169808          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
169809          ,p_level    => C_LEVEL_STATEMENT
169810          ,p_module   => l_log_module);
169811 
169812 END IF;
169813 --
169814 
169815 
169816 
169817 --
169818 INSERT INTO xla_diag_sources  --line2
169819 (
169820         event_id
169821       , ledger_id
169822       , sla_ledger_id
169823       , description_language
169824       , object_name
169825       , object_type_code
169826       , line_number
169827       , source_application_id
169828       , source_type_code
169829       , source_code
169830       , source_value
169831       , source_meaning
169832       , created_by
169833       , creation_date
169834       , last_update_date
169835       , last_updated_by
169836       , last_update_login
169837       , program_update_date
169838       , program_application_id
169839       , program_id
169840       , request_id
169841 )
169842 SELECT  event_id
169843       , p_target_ledger_id
169844       , p_sla_ledger_id
169845       , p_language
169846       , object_name
169847       , object_type_code
169848       , line_number
169849       , source_application_id
169850       , source_type_code
169851       , source_code
169852       , SUBSTR(source_value,1,1996)
169853       , SUBSTR(source_meaning ,1,200)
169854       , xla_environment_pkg.g_Usr_Id
169855       , TRUNC(SYSDATE)
169856       , TRUNC(SYSDATE)
169857       , xla_environment_pkg.g_Usr_Id
169858       , xla_environment_pkg.g_Login_Id
169859       , TRUNC(SYSDATE)
169860       , xla_environment_pkg.g_Prog_Appl_Id
169861       , xla_environment_pkg.g_Prog_Id
169862       , xla_environment_pkg.g_Req_Id
169863   FROM (
169864        SELECT xet.event_id                  event_id
169865             , l2.line_number                 line_number
169866             , CASE r
169867                WHEN 1 THEN 'CST_XLA_WIP_LINES_V' 
169868                 WHEN 2 THEN 'CST_XLA_WIP_LINES_V' 
169869                 WHEN 3 THEN 'CST_XLA_WIP_LINES_V' 
169870                 WHEN 4 THEN 'CST_XLA_WIP_LINES_V' 
169871                 WHEN 5 THEN 'CST_XLA_WIP_LINES_V' 
169872                 
169873                ELSE null
169874               END                           object_name
169875             , CASE r
169876                 WHEN 1 THEN 'LINE' 
169877                 WHEN 2 THEN 'LINE' 
169878                 WHEN 3 THEN 'LINE' 
169879                 WHEN 4 THEN 'LINE' 
169880                 WHEN 5 THEN 'LINE' 
169881                 
169882                 ELSE null
169883               END                           object_type_code
169884             , CASE r
169885                 WHEN 1 THEN '707' 
169886                 WHEN 2 THEN '707' 
169887                 WHEN 3 THEN '707' 
169888                 WHEN 4 THEN '707' 
169889                 WHEN 5 THEN '707' 
169890                 
169891                 ELSE null
169892               END                           source_application_id
169893             , 'S'             source_type_code
169894             , CASE r
169895                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
169896                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
169897                 WHEN 3 THEN 'ENTERED_AMOUNT' 
169898                 WHEN 4 THEN 'ACCOUNTED_AMOUNT' 
169899                 WHEN 5 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
169900                 
169901                 ELSE null
169902               END                           source_code
169903             , CASE r
169904                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
169905                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
169906                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
169907                 WHEN 4 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
169908                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
169909                 
169910                 ELSE null
169911               END                           source_value
169912             , null              source_meaning
169913          FROM  xla_events_gt     xet  
169914         , CST_XLA_WIP_LINES_V  l2
169915             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
169916         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
169917           AND xet.event_class_code = C_EVENT_CLASS_CODE
169918             AND l2.event_id          = xet.event_id
169919 
169920 )
169921 ;
169922 --
169923 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169924 
169925       trace
169926          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
169927          ,p_level    => C_LEVEL_STATEMENT
169928          ,p_module   => l_log_module);
169929 
169930 END IF;
169931 
169932 
169933 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
169934       trace
169935          (p_msg      => 'END of insert_sources_279'
169936          ,p_level    => C_LEVEL_PROCEDURE
169937          ,p_module   => l_log_module);
169938 END IF;
169939 EXCEPTION
169940   WHEN xla_exceptions_pkg.application_exception THEN
169941       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
169942             trace
169943                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
169944                ,p_level    => C_LEVEL_EXCEPTION
169945                ,p_module   => l_log_module);
169946       END IF;
169947       RAISE;
169948   WHEN OTHERS THEN
169949       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
169950             trace
169951                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
169952                ,p_level    => C_LEVEL_EXCEPTION
169953                ,p_module   => l_log_module);
169954        END IF;
169955        xla_exceptions_pkg.raise_message
169956            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_279');
169957 END insert_sources_279;
169958 --
169959 
169960 ---------------------------------------
169961 --
169962 -- PRIVATE FUNCTION
169963 --         EventClass_279
169964 --
169965 ----------------------------------------
169966 --
169967 FUNCTION EventClass_279
169968        (p_application_id         IN NUMBER
169969        ,p_base_ledger_id         IN NUMBER
169970        ,p_target_ledger_id       IN NUMBER
169971        ,p_language               IN VARCHAR2
169972        ,p_currency_code          IN VARCHAR2
169973        ,p_sla_ledger_id          IN NUMBER
169974        ,p_pad_start_date         IN DATE
169975        ,p_pad_end_date           IN DATE
169976        ,p_primary_ledger_id      IN NUMBER)
169977 RETURN BOOLEAN IS
169978 --
169979 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'OSP_ALL';
169980 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'OSP';
169981 
169982 l_calculate_acctd_flag   VARCHAR2(1) :='N';
169983 l_calculate_g_l_flag     VARCHAR2(1) :='N';
169984 --
169985 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169986 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169987 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
169988 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
169989 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169990 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
169991 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
169992 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169993 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
169994 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
169995 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169996 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169997 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169998 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169999 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
170000 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
170001 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
170002 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
170003 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
170004 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
170005 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
170006 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
170007 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
170008 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
170009 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
170010 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
170011 
170012 l_event_id                             NUMBER;
170013 l_previous_event_id                    NUMBER;
170014 l_first_event_id                       NUMBER;
170015 l_last_event_id                        NUMBER;
170016 
170017 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
170018 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
170019 --
170020 --
170021 l_result                    BOOLEAN := TRUE;
170022 l_rows                      NUMBER  := 1000;
170023 l_event_type_name           VARCHAR2(80) := 'All';
170024 l_event_class_name          VARCHAR2(80) := 'Outside Processing';
170025 l_description               VARCHAR2(4000);
170026 l_transaction_reversal      NUMBER;
170027 l_ae_header_id              NUMBER;
170028 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
170029 l_log_module                VARCHAR2(240);
170030 --
170031 l_acct_reversal_source      VARCHAR2(30);
170032 l_trx_reversal_source       VARCHAR2(30);
170033 
170034 l_continue_with_lines       BOOLEAN := TRUE;
170035 --
170036 l_acc_rev_gl_date_source    DATE;                      -- 4262811
170037 --
170038 type t_array_event_id is table of number index by binary_integer;
170039 
170040 l_rec_array_event                    t_rec_array_event;
170041 l_null_rec_array_event               t_rec_array_event;
170042 l_array_ae_header_id                 xla_number_array_type;
170043 l_actual_flag                        VARCHAR2(1) := NULL;
170044 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
170045 l_balance_type_code                  VARCHAR2(1) :=NULL;
170046 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
170047 
170048 --
170049 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
170050 --
170051 
170052 TYPE t_array_source_12 IS TABLE OF CST_XLA_WIP_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
170053 TYPE t_array_source_15 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
170054 TYPE t_array_source_19 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
170055 TYPE t_array_source_20 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
170056 TYPE t_array_source_38 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
170057 
170058 TYPE t_array_source_4 IS TABLE OF CST_XLA_WIP_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
170059 TYPE t_array_source_11 IS TABLE OF CST_XLA_WIP_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
170060 TYPE t_array_source_18 IS TABLE OF CST_XLA_WIP_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
170061 TYPE t_array_source_22 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
170062 TYPE t_array_source_24 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
170063 
170064 l_array_source_12              t_array_source_12;
170065 l_array_source_12_meaning      t_array_lookup_meaning;
170066 l_array_source_15              t_array_source_15;
170067 l_array_source_19              t_array_source_19;
170068 l_array_source_20              t_array_source_20;
170069 l_array_source_38              t_array_source_38;
170070 l_array_source_38_meaning      t_array_lookup_meaning;
170071 
170072 l_array_source_4      t_array_source_4;
170073 l_array_source_11      t_array_source_11;
170074 l_array_source_18      t_array_source_18;
170075 l_array_source_22      t_array_source_22;
170076 l_array_source_24      t_array_source_24;
170077 
170078 --
170079 CURSOR header_cur
170080 IS
170081 SELECT /*+ leading(xet) cardinality(xet,1) */
170082 -- Event Class Code: OSP
170083     xet.entity_id
170084    ,xet.legal_entity_id
170085    ,xet.entity_code
170086    ,xet.transaction_number
170087    ,xet.event_id
170088    ,xet.event_class_code
170089    ,xet.event_type_code
170090    ,xet.event_number
170091    ,xet.event_date
170092    ,xet.transaction_date
170093    ,xet.reference_num_1
170094    ,xet.reference_num_2
170095    ,xet.reference_num_3
170096    ,xet.reference_num_4
170097    ,xet.reference_char_1
170098    ,xet.reference_char_2
170099    ,xet.reference_char_3
170100    ,xet.reference_char_4
170101    ,xet.reference_date_1
170102    ,xet.reference_date_2
170103    ,xet.reference_date_3
170104    ,xet.reference_date_4
170105    ,xet.event_created_by
170106    ,xet.budgetary_control_flag 
170107   , h1.DISTRIBUTION_TYPE    source_12
170108   , fvl12.meaning   source_12_meaning
170109   , h1.CURRENCY_CODE    source_15
170110   , h1.CURRENCY_CONVERSION_DATE    source_19
170111   , h1.CURRENCY_CONVERSION_RATE    source_20
170112   , h1.TRANSFER_TO_GL_INDICATOR    source_38
170113   , fvl38.meaning   source_38_meaning
170114   FROM xla_events_gt     xet 
170115   , CST_XLA_WIP_HEADERS_V  h1
170116   , fnd_lookup_values    fvl12
170117   , fnd_lookup_values    fvl38
170118  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
170119    and xet.event_class_code = C_EVENT_CLASS_CODE
170120    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
170121    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
170122   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
170123   AND fvl12.view_application_id(+) = 700
170124   AND fvl12.language(+)            = USERENV('LANG')
170125      AND fvl38.lookup_type(+)         = 'YES_NO'
170126   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
170127   AND fvl38.view_application_id(+) = 0
170128   AND fvl38.language(+)            = USERENV('LANG')
170129   
170130  ORDER BY event_id
170131 ;
170132 
170133 
170134 --
170135 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
170136 IS
170137 SELECT  /*+ leading(xet) cardinality(xet,1) */
170138 -- Event Class Code: OSP
170139     xet.entity_id
170140    ,xet.legal_entity_id
170141    ,xet.entity_code
170142    ,xet.transaction_number
170143    ,xet.event_id
170144    ,xet.event_class_code
170145    ,xet.event_type_code
170146    ,xet.event_number
170147    ,xet.event_date
170148    ,xet.transaction_date
170149    ,xet.reference_num_1
170150    ,xet.reference_num_2
170151    ,xet.reference_num_3
170152    ,xet.reference_num_4
170153    ,xet.reference_char_1
170154    ,xet.reference_char_2
170155    ,xet.reference_char_3
170156    ,xet.reference_char_4
170157    ,xet.reference_date_1
170158    ,xet.reference_date_2
170159    ,xet.reference_date_3
170160    ,xet.reference_date_4
170161    ,xet.event_created_by
170162    ,xet.budgetary_control_flag
170163  , l2.LINE_NUMBER  
170164   , l2.CODE_COMBINATION_ID    source_4
170165   , l2.DISTRIBUTION_IDENTIFIER    source_11
170166   , l2.ENTERED_AMOUNT    source_18
170167   , l2.ACCOUNTED_AMOUNT    source_22
170168   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
170169   FROM xla_events_gt     xet 
170170   , CST_XLA_WIP_LINES_V  l2
170171  WHERE xet.event_id between x_first_event_id and x_last_event_id
170172    and xet.event_date between p_pad_start_date and p_pad_end_date
170173    and xet.event_class_code = C_EVENT_CLASS_CODE
170174    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
170175 ;
170176 
170177 --
170178 BEGIN
170179 IF g_log_enabled THEN
170180    l_log_module := C_DEFAULT_MODULE||'.EventClass_279';
170181 END IF;
170182 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
170183    trace
170184       (p_msg      => 'BEGIN of EventClass_279'
170185       ,p_level    => C_LEVEL_PROCEDURE
170186       ,p_module   => l_log_module);
170187 END IF;
170188 
170189 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170190    trace
170191       (p_msg      => 'p_application_id = '||p_application_id||
170192                      ' - p_base_ledger_id = '||p_base_ledger_id||
170193                      ' - p_target_ledger_id  = '||p_target_ledger_id||
170194                      ' - p_language = '||p_language||
170195                      ' - p_currency_code = '||p_currency_code||
170196                      ' - p_sla_ledger_id = '||p_sla_ledger_id
170197       ,p_level    => C_LEVEL_STATEMENT
170198       ,p_module   => l_log_module);
170199 END IF;
170200 --
170201 -- initialze arrays
170202 --
170203 g_array_event.DELETE;
170204 l_rec_array_event := l_null_rec_array_event;
170205 --
170206 --------------------------------------
170207 -- 4262811 Initialze MPA Line Number
170208 --------------------------------------
170209 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
170210 
170211 --
170212 
170213 --
170214 OPEN header_cur;
170215 --
170216 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170217    trace
170218    (p_msg      => 'SQL - FETCH header_cur'
170219    ,p_level    => C_LEVEL_STATEMENT
170220    ,p_module   => l_log_module);
170221 END IF;
170222 --
170223 LOOP
170224 FETCH header_cur BULK COLLECT INTO
170225         l_array_entity_id
170226       , l_array_legal_entity_id
170227       , l_array_entity_code
170228       , l_array_transaction_num
170229       , l_array_event_id
170230       , l_array_class_code
170231       , l_array_event_type
170232       , l_array_event_number
170233       , l_array_event_date
170234       , l_array_transaction_date
170235       , l_array_reference_num_1
170236       , l_array_reference_num_2
170237       , l_array_reference_num_3
170238       , l_array_reference_num_4
170239       , l_array_reference_char_1
170240       , l_array_reference_char_2
170241       , l_array_reference_char_3
170242       , l_array_reference_char_4
170243       , l_array_reference_date_1
170244       , l_array_reference_date_2
170245       , l_array_reference_date_3
170246       , l_array_reference_date_4
170247       , l_array_event_created_by
170248       , l_array_budgetary_control_flag 
170249       , l_array_source_12
170250       , l_array_source_12_meaning
170251       , l_array_source_15
170252       , l_array_source_19
170253       , l_array_source_20
170254       , l_array_source_38
170255       , l_array_source_38_meaning
170256       LIMIT l_rows;
170257 --
170258 IF (C_LEVEL_EVENT >= g_log_level) THEN
170259    trace
170260    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
170261    ,p_level    => C_LEVEL_EVENT
170262    ,p_module   => l_log_module);
170263 END IF;
170264 --
170265 EXIT WHEN l_array_entity_id.COUNT = 0;
170266 
170267 -- initialize arrays
170268 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
170269 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
170270 
170271 --
170272 -- Bug 4458708
170273 --
170274 XLA_AE_LINES_PKG.g_LineNumber := 0;
170275 
170276 
170277 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
170278 g_last_hdr_idx := l_array_event_id.LAST;
170279 --
170280 -- loop for the headers. Each iteration is for each header extract row
170281 -- fetched in header cursor
170282 --
170283 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
170284 
170285 --
170286 -- set event info as cache for other routines to refer event attributes
170287 --
170288 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
170289    (p_application_id           => p_application_id
170290    ,p_primary_ledger_id        => p_primary_ledger_id
170291    ,p_base_ledger_id           => p_base_ledger_id
170292    ,p_target_ledger_id         => p_target_ledger_id
170293    ,p_entity_id                => l_array_entity_id(hdr_idx)
170294    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
170295    ,p_entity_code              => l_array_entity_code(hdr_idx)
170296    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
170297    ,p_event_id                 => l_array_event_id(hdr_idx)
170298    ,p_event_class_code         => l_array_class_code(hdr_idx)
170299    ,p_event_type_code          => l_array_event_type(hdr_idx)
170300    ,p_event_number             => l_array_event_number(hdr_idx)
170301    ,p_event_date               => l_array_event_date(hdr_idx)
170302    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
170303    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
170304    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
170305    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
170306    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
170307    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
170308    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
170309    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
170310    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
170311    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
170312    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
170313    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
170314    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
170315    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
170316    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
170317 
170318 --
170319 -- set the status of entry to C_VALID (0)
170320 --
170321 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
170322 
170323 --
170324 -- initialize a row for ae header
170325 --
170326 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
170327 
170328 l_event_id := l_array_event_id(hdr_idx);
170329 
170330 --
170331 -- storing the hdr_idx for event. May be used by line cursor.
170332 --
170333 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
170334 
170335 --
170336 -- store sources from header extract. This can be improved to
170337 -- store only those sources from header extract that may be used in lines
170338 --
170339 
170340 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
170341 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
170342 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
170343 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
170344 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
170345 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
170346 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
170347 
170348 --
170349 -- initilaize the status of ae headers for diffrent balance types
170350 -- the status is initialised to C_NOT_CREATED (2)
170351 --
170352 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
170353 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
170354 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
170355 
170356 --
170357 -- call api to validate and store accounting attributes for header
170358 --
170359 
170360 ------------------------------------------------------------
170361 -- Accrual Reversal : to get date for Standard Source (NONE)
170362 ------------------------------------------------------------
170363 l_acc_rev_gl_date_source := NULL;
170364 
170365      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
170366       l_rec_acct_attrs.array_date_value(1) := 
170367 xla_ae_sources_pkg.GetSystemSourceDate(
170368    p_source_code           => 'XLA_REFERENCE_DATE_1'
170369  , p_source_type_code      => 'Y'
170370  , p_source_application_id =>  602
170371 );
170372      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
170373       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
170374 
170375 
170376 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
170377 
170378 XLA_AE_HEADER_PKG.SetJeCategoryName;
170379 
170380 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
170381 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
170382 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
170383 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
170384 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
170385 
170386 
170387 -- No header level analytical criteria
170388 
170389 --
170390 --accounting attribute enhancement, bug 3612931
170391 --
170392 l_trx_reversal_source := SUBSTR(NULL, 1,30);
170393 
170394 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
170395    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
170396 
170397    xla_accounting_err_pkg.build_message
170398       (p_appli_s_name            => 'XLA'
170399       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
170400       ,p_token_1                 => 'ACCT_ATTR_NAME'
170401       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
170402       ,p_token_2                 => 'PRODUCT_NAME'
170403       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
170404       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
170405       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
170406       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
170407 
170408 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
170409    --
170410    -- following sets the accounting attributes needed to reverse
170411    -- accounting for a distributeion
170412    --
170413    xla_ae_lines_pkg.SetTrxReversalAttrs
170414       (p_event_id              => l_event_id
170415       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
170416       ,p_trx_reversal_source   => l_trx_reversal_source);
170417 
170418 END IF;
170419 
170420 
170421 ----------------------------------------------------------------
170422 -- 4262811 -  update the header statuses to invalid in need be
170423 ----------------------------------------------------------------
170424 --
170425 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
170426 
170427 
170428   -----------------------------------------------
170429   -- No accrual reversal for the event class/type
170430   -----------------------------------------------
170431 ----------------------------------------------------------------
170432 
170433 --
170434 -- this ends the header loop iteration for one bulk fetch
170435 --
170436 END LOOP;
170437 
170438 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
170439 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
170440 
170441 --
170442 -- insert dummy rows into lines gt table that were created due to
170443 -- transaction reversals
170444 --
170445 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
170446    l_result := XLA_AE_LINES_PKG.InsertLines;
170447 END IF;
170448 
170449 --
170450 -- reset the temp_line_num for each set of events fetched from header
170451 -- cursor rather than doing it for each new event in line cursor
170452 -- Bug 3939231
170453 --
170454 xla_ae_lines_pkg.g_temp_line_num := 0;
170455 
170456 
170457 
170458 --
170459 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
170460 --
170461 --
170462 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170463 
170464       trace
170465          (p_msg      => 'SQL - FETCH line_cur'
170466          ,p_level    => C_LEVEL_STATEMENT
170467          ,p_module   => l_log_module);
170468 
170469 END IF;
170470 --
170471 --
170472 LOOP
170473   --
170474   FETCH line_cur BULK COLLECT INTO
170475         l_array_entity_id
170476       , l_array_legal_entity_id
170477       , l_array_entity_code
170478       , l_array_transaction_num
170479       , l_array_event_id
170480       , l_array_class_code
170481       , l_array_event_type
170482       , l_array_event_number
170483       , l_array_event_date
170484       , l_array_transaction_date
170485       , l_array_reference_num_1
170486       , l_array_reference_num_2
170487       , l_array_reference_num_3
170488       , l_array_reference_num_4
170489       , l_array_reference_char_1
170490       , l_array_reference_char_2
170491       , l_array_reference_char_3
170492       , l_array_reference_char_4
170493       , l_array_reference_date_1
170494       , l_array_reference_date_2
170495       , l_array_reference_date_3
170496       , l_array_reference_date_4
170497       , l_array_event_created_by
170498       , l_array_budgetary_control_flag
170499       , l_array_extract_line_num 
170500       , l_array_source_4
170501       , l_array_source_11
170502       , l_array_source_18
170503       , l_array_source_22
170504       , l_array_source_24
170505       LIMIT l_rows;
170506 
170507   --
170508   IF (C_LEVEL_EVENT >= g_log_level) THEN
170509             trace
170510                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
170511                ,p_level    => C_LEVEL_EVENT
170512                ,p_module   => l_log_module);
170513   END IF;
170514   --
170515   EXIT WHEN l_array_entity_id.count = 0;
170516 
170517   XLA_AE_LINES_PKG.g_rec_lines := null;
170518 
170519 --
170520 -- Bug 4458708
170521 --
170522 XLA_AE_LINES_PKG.g_LineNumber := 0;
170523 --
170524 --
170525 
170526 FOR Idx IN 1..l_array_event_id.count LOOP
170527    --
170528    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
170529    --
170530    l_event_id := l_array_event_id(idx);  -- 5648433
170531 
170532    --
170533    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
170534    --
170535 
170536    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
170537              (g_array_event(l_event_id).array_value_num('header_index'))
170538          ,'N'
170539          ) <> 'Y'
170540    THEN
170541       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170542          trace
170543             (p_msg      => 'Trancaction revesal option is not Y '
170544             ,p_level    => C_LEVEL_STATEMENT
170545             ,p_module   => l_log_module);
170546       END IF;
170547 
170548 --
170549 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
170550 --
170551 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
170552 --
170553 -- set event info as cache for other routines to refer event attributes
170554 --
170555 
170556 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
170557    l_previous_event_id := l_event_id;
170558 
170559    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
170560       (p_application_id           => p_application_id
170561       ,p_primary_ledger_id        => p_primary_ledger_id
170562       ,p_base_ledger_id           => p_base_ledger_id
170563       ,p_target_ledger_id         => p_target_ledger_id
170564       ,p_entity_id                => l_array_entity_id(Idx)
170565       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
170566       ,p_entity_code              => l_array_entity_code(Idx)
170567       ,p_transaction_num          => l_array_transaction_num(Idx)
170568       ,p_event_id                 => l_array_event_id(Idx)
170569       ,p_event_class_code         => l_array_class_code(Idx)
170570       ,p_event_type_code          => l_array_event_type(Idx)
170571       ,p_event_number             => l_array_event_number(Idx)
170572       ,p_event_date               => l_array_event_date(Idx)
170573       ,p_transaction_date         => l_array_transaction_date(Idx)
170574       ,p_reference_num_1          => l_array_reference_num_1(Idx)
170575       ,p_reference_num_2          => l_array_reference_num_2(Idx)
170576       ,p_reference_num_3          => l_array_reference_num_3(Idx)
170577       ,p_reference_num_4          => l_array_reference_num_4(Idx)
170578       ,p_reference_char_1         => l_array_reference_char_1(Idx)
170579       ,p_reference_char_2         => l_array_reference_char_2(Idx)
170580       ,p_reference_char_3         => l_array_reference_char_3(Idx)
170581       ,p_reference_char_4         => l_array_reference_char_4(Idx)
170582       ,p_reference_date_1         => l_array_reference_date_1(Idx)
170583       ,p_reference_date_2         => l_array_reference_date_2(Idx)
170584       ,p_reference_date_3         => l_array_reference_date_3(Idx)
170585       ,p_reference_date_4         => l_array_reference_date_4(Idx)
170586       ,p_event_created_by         => l_array_event_created_by(Idx)
170587       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
170588        --
170589 END IF;
170590 
170591 
170592 
170593 --
170594 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
170595 
170596 l_acct_reversal_source := SUBSTR(NULL, 1,30);
170597 
170598 IF l_continue_with_lines THEN
170599    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
170600       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
170601 
170602       xla_accounting_err_pkg.build_message
170603          (p_appli_s_name            => 'XLA'
170604          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
170605          ,p_token_1                 => 'LINE_NUMBER'
170606          ,p_value_1                 => l_array_extract_line_num(Idx)
170607          ,p_token_2                 => 'PRODUCT_NAME'
170608          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
170609          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
170610          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
170611          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
170612 
170613    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
170614       --
170615       -- following sets the accounting attributes needed to reverse
170616       -- accounting for a distributeion
170617       --
170618 
170619       --
170620       -- 5217187
170621       --
170622       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
170623       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
170624                                        g_array_event(l_event_id).array_value_num('header_index'));
170625       --
170626       --
170627 
170628       -- No reversal code generated
170629 
170630       xla_ae_lines_pkg.SetAcctReversalAttrs
170631          (p_event_id             => l_event_id
170632          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
170633          ,p_calculate_acctd_flag => l_calculate_acctd_flag
170634          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
170635    END IF;
170636 
170637    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
170638        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
170639 
170640 --
170641 AcctLineType_195 (
170642  p_application_id  => p_application_id
170643  ,p_event_id     => l_event_id
170644  ,p_calculate_acctd_flag => l_calculate_acctd_flag
170645  ,p_calculate_g_l_flag => l_calculate_g_l_flag
170646  ,p_actual_flag => l_actual_flag
170647  ,p_balance_type_code => l_balance_type_code
170648  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
170649  
170650  , p_source_4 => l_array_source_4(Idx)
170651  , p_source_11 => l_array_source_11(Idx)
170652  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
170653  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
170654  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
170655  , p_source_18 => l_array_source_18(Idx)
170656  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
170657  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
170658  , p_source_22 => l_array_source_22(Idx)
170659  , p_source_24 => l_array_source_24(Idx)
170660  );
170661 If(l_balance_type_code = 'A') THEN
170662   l_actual_gain_loss_ref := l_gain_or_loss_ref;
170663 END IF;
170664 
170665 --
170666 
170667 
170668 --
170669 AcctLineType_213 (
170670  p_application_id  => p_application_id
170671  ,p_event_id     => l_event_id
170672  ,p_calculate_acctd_flag => l_calculate_acctd_flag
170673  ,p_calculate_g_l_flag => l_calculate_g_l_flag
170674  ,p_actual_flag => l_actual_flag
170675  ,p_balance_type_code => l_balance_type_code
170676  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
170677  
170678  , p_source_4 => l_array_source_4(Idx)
170679  , p_source_11 => l_array_source_11(Idx)
170680  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
170681  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
170682  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
170683  , p_source_18 => l_array_source_18(Idx)
170684  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
170685  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
170686  , p_source_22 => l_array_source_22(Idx)
170687  , p_source_24 => l_array_source_24(Idx)
170688  );
170689 If(l_balance_type_code = 'A') THEN
170690   l_actual_gain_loss_ref := l_gain_or_loss_ref;
170691 END IF;
170692 
170693 --
170694 
170695 
170696 --
170697 AcctLineType_221 (
170698  p_application_id  => p_application_id
170699  ,p_event_id     => l_event_id
170700  ,p_calculate_acctd_flag => l_calculate_acctd_flag
170701  ,p_calculate_g_l_flag => l_calculate_g_l_flag
170702  ,p_actual_flag => l_actual_flag
170703  ,p_balance_type_code => l_balance_type_code
170704  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
170705  
170706  , p_source_4 => l_array_source_4(Idx)
170707  , p_source_11 => l_array_source_11(Idx)
170708  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
170709  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
170710  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
170711  , p_source_18 => l_array_source_18(Idx)
170712  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
170713  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
170714  , p_source_22 => l_array_source_22(Idx)
170715  , p_source_24 => l_array_source_24(Idx)
170716  );
170717 If(l_balance_type_code = 'A') THEN
170718   l_actual_gain_loss_ref := l_gain_or_loss_ref;
170719 END IF;
170720 
170721 --
170722 
170723 
170724 --
170725 AcctLineType_234 (
170726  p_application_id  => p_application_id
170727  ,p_event_id     => l_event_id
170728  ,p_calculate_acctd_flag => l_calculate_acctd_flag
170729  ,p_calculate_g_l_flag => l_calculate_g_l_flag
170730  ,p_actual_flag => l_actual_flag
170731  ,p_balance_type_code => l_balance_type_code
170732  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
170733  
170734  , p_source_4 => l_array_source_4(Idx)
170735  , p_source_11 => l_array_source_11(Idx)
170736  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
170737  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
170738  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
170739  , p_source_18 => l_array_source_18(Idx)
170740  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
170741  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
170742  , p_source_22 => l_array_source_22(Idx)
170743  , p_source_24 => l_array_source_24(Idx)
170744  );
170745 If(l_balance_type_code = 'A') THEN
170746   l_actual_gain_loss_ref := l_gain_or_loss_ref;
170747 END IF;
170748 
170749 --
170750 
170751 
170752 --
170753 AcctLineType_242 (
170754  p_application_id  => p_application_id
170755  ,p_event_id     => l_event_id
170756  ,p_calculate_acctd_flag => l_calculate_acctd_flag
170757  ,p_calculate_g_l_flag => l_calculate_g_l_flag
170758  ,p_actual_flag => l_actual_flag
170759  ,p_balance_type_code => l_balance_type_code
170760  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
170761  
170762  , p_source_4 => l_array_source_4(Idx)
170763  , p_source_11 => l_array_source_11(Idx)
170764  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
170765  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
170766  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
170767  , p_source_18 => l_array_source_18(Idx)
170768  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
170769  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
170770  , p_source_22 => l_array_source_22(Idx)
170771  , p_source_24 => l_array_source_24(Idx)
170772  );
170773 If(l_balance_type_code = 'A') THEN
170774   l_actual_gain_loss_ref := l_gain_or_loss_ref;
170775 END IF;
170776 
170777 --
170778 
170779 
170780 --
170781 AcctLineType_254 (
170782  p_application_id  => p_application_id
170783  ,p_event_id     => l_event_id
170784  ,p_calculate_acctd_flag => l_calculate_acctd_flag
170785  ,p_calculate_g_l_flag => l_calculate_g_l_flag
170786  ,p_actual_flag => l_actual_flag
170787  ,p_balance_type_code => l_balance_type_code
170788  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
170789  
170790  , p_source_4 => l_array_source_4(Idx)
170791  , p_source_11 => l_array_source_11(Idx)
170792  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
170793  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
170794  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
170795  , p_source_18 => l_array_source_18(Idx)
170796  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
170797  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
170798  , p_source_22 => l_array_source_22(Idx)
170799  , p_source_24 => l_array_source_24(Idx)
170800  );
170801 If(l_balance_type_code = 'A') THEN
170802   l_actual_gain_loss_ref := l_gain_or_loss_ref;
170803 END IF;
170804 
170805 --
170806 
170807       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
170808       -- or secondary ledger that has different currency with primary
170809       -- or alc that is calculated by sla
170810       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
170811             (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'))
170812 
170813 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
170814 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
170815           AND (l_actual_flag = 'A')) THEN
170816         XLA_AE_LINES_PKG.CreateGainOrLossLines(
170817           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
170818          ,p_application_id   => p_application_id
170819          ,p_amb_context_code => 'DEFAULT'
170820          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
170821          ,p_event_class_code => C_EVENT_CLASS_CODE
170822          ,p_event_type_code  => C_EVENT_TYPE_CODE
170823          
170824          ,p_gain_ccid        => -1
170825          ,p_loss_ccid        => -1
170826 
170827          ,p_actual_flag      => l_actual_flag
170828          ,p_enc_flag         => null
170829          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
170830          ,p_enc_g_l_ref      => null
170831          );
170832       END IF;
170833    END IF;
170834 END IF;
170835 
170836    ELSE
170837       --
170838       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
170839       --
170840       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170841          trace
170842             (p_msg      => 'Trancaction revesal option is Y'
170843             ,p_level    => C_LEVEL_STATEMENT
170844             ,p_module   => l_log_module);
170845       END IF;
170846    END IF;
170847 
170848 END LOOP;
170849 l_result := XLA_AE_LINES_PKG.InsertLines ;
170850 end loop;
170851 close line_cur;
170852 
170853 
170854 --
170855 -- insert headers into xla_ae_headers_gt table
170856 --
170857 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
170858 
170859 -- insert into errors table here.
170860 
170861 END LOOP;
170862 
170863 --
170864 -- 4865292
170865 --
170866 -- Compare g_hdr_extract_count with event count in
170867 -- CreateHeadersAndLines.
170868 --
170869 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
170870 
170871 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170872    trace (p_msg     => '# rows extracted from header extract objects '
170873                     || ' (running total): '
170874                     || g_hdr_extract_count
170875          ,p_level   => C_LEVEL_STATEMENT
170876          ,p_module  => l_log_module);
170877 END IF;
170878 
170879 CLOSE header_cur;
170880 --
170881 
170882 --
170883 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
170884    trace
170885       (p_msg      => 'END of EventClass_279'
170886       ,p_level    => C_LEVEL_PROCEDURE
170887       ,p_module   => l_log_module);
170888 END IF;
170889 --
170890 RETURN l_result;
170891 EXCEPTION
170892 WHEN xla_exceptions_pkg.application_exception THEN
170893    
170894 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
170895 
170896    
170897 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
170898 
170899    RAISE;
170900 
170901 WHEN NO_DATA_FOUND THEN
170902 
170903 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
170904 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
170905 
170906 FOR header_record IN header_cur
170907 LOOP
170908     l_array_header_events(header_record.event_id) := header_record.event_id;
170909 END LOOP;
170910 
170911 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
170912 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
170913 
170914 fnd_file.put_line(fnd_file.LOG, '                    ');
170915 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
170916 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
170917 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
170918 
170919 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
170920 LOOP
170921 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
170922 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
170923         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
170924 	END IF;
170925 END LOOP;
170926 
170927 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
170928 fnd_file.put_line(fnd_file.LOG, '                    ');
170929 
170930 
170931 xla_exceptions_pkg.raise_message
170932       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_279');
170933 
170934 
170935 WHEN OTHERS THEN
170936    xla_exceptions_pkg.raise_message
170937       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_279');
170938 END EventClass_279;
170939 --
170940 
170941 ---------------------------------------
170942 --
170943 -- PRIVATE PROCEDURE
170944 --         insert_sources_280
170945 --
170946 ----------------------------------------
170947 --
170948 PROCEDURE insert_sources_280(
170949                                 p_target_ledger_id       IN NUMBER
170950                               , p_language               IN VARCHAR2
170951                               , p_sla_ledger_id          IN NUMBER
170952                               , p_pad_start_date         IN DATE
170953                               , p_pad_end_date           IN DATE
170954                          )
170955 IS
170956 
170957 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PERIOD_END_ACCRUAL_ALL';
170958 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PERIOD_END_ACCRUAL';
170959 p_apps_owner                   VARCHAR2(30);
170960 l_log_module                   VARCHAR2(240);
170961 BEGIN
170962 IF g_log_enabled THEN
170963       l_log_module := C_DEFAULT_MODULE||'.insert_sources_280';
170964 END IF;
170965 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
170966 
170967       trace
170968          (p_msg      => 'BEGIN of insert_sources_280'
170969          ,p_level    => C_LEVEL_PROCEDURE
170970          ,p_module   => l_log_module);
170971 
170972 END IF;
170973 
170974 -- select APPS owner
170975 SELECT oracle_username
170976   INTO p_apps_owner
170977   FROM fnd_oracle_userid
170978  WHERE read_only_flag = 'U'
170979 ;
170980 
170981 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170982       trace
170983          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
170984                         ' - p_language = '||p_language||
170985                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
170986                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
170987                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
170988                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
170989          ,p_level    => C_LEVEL_STATEMENT
170990          ,p_module   => l_log_module);
170991 END IF;
170992 
170993 
170994 --
170995 INSERT INTO xla_diag_sources --hdr2
170996 (
170997         event_id
170998       , ledger_id
170999       , sla_ledger_id
171000       , description_language
171001       , object_name
171002       , object_type_code
171003       , line_number
171004       , source_application_id
171005       , source_type_code
171006       , source_code
171007       , source_value
171008       , source_meaning
171009       , created_by
171010       , creation_date
171011       , last_update_date
171012       , last_updated_by
171013       , last_update_login
171014       , program_update_date
171015       , program_application_id
171016       , program_id
171017       , request_id
171018 )
171019 SELECT
171020         event_id
171021       , p_target_ledger_id
171022       , p_sla_ledger_id
171023       , p_language
171024       , object_name
171025       , object_type_code
171026       , line_number
171027       , source_application_id
171028       , source_type_code
171029       , source_code
171030       , SUBSTR(source_value ,1,1996)
171031       , SUBSTR(source_meaning ,1,200)
171032       , xla_environment_pkg.g_Usr_Id
171033       , TRUNC(SYSDATE)
171034       , TRUNC(SYSDATE)
171035       , xla_environment_pkg.g_Usr_Id
171036       , xla_environment_pkg.g_Login_Id
171037       , TRUNC(SYSDATE)
171038       , xla_environment_pkg.g_Prog_Appl_Id
171039       , xla_environment_pkg.g_Prog_Id
171040       , xla_environment_pkg.g_Req_Id
171041   FROM (
171042        SELECT xet.event_id                  event_id
171043             , 0                          line_number
171044             , CASE r
171045                WHEN 1 THEN 'CST_XLA_RCV_REF_V' 
171046                 WHEN 2 THEN 'CST_XLA_RCV_REF_V' 
171047                 WHEN 3 THEN 'CST_XLA_RCV_REF_V' 
171048                 WHEN 4 THEN 'CST_XLA_RCV_REF_V' 
171049                 WHEN 5 THEN 'CST_XLA_RCV_REF_V' 
171050                 WHEN 6 THEN 'CST_XLA_RCV_HEADERS_V' 
171051                 WHEN 7 THEN 'PO_DISTS_REF_V' 
171052                 WHEN 8 THEN 'CST_XLA_RCV_REF_V' 
171053                 WHEN 9 THEN 'CST_XLA_RCV_HEADERS_V' 
171054                 WHEN 10 THEN 'CST_XLA_RCV_REF_V' 
171055                 WHEN 11 THEN 'PSA_CST_XLA_PEA_UPG_V' 
171056                 WHEN 12 THEN 'CST_XLA_RCV_HEADERS_V' 
171057                 WHEN 13 THEN 'CST_XLA_RCV_HEADERS_V' 
171058                 WHEN 14 THEN 'CST_XLA_RCV_HEADERS_V' 
171059                 WHEN 15 THEN 'PO_HEADERS_REF_V' 
171060                 WHEN 16 THEN 'CST_XLA_RCV_HEADERS_V' 
171061                 
171062                ELSE null
171063               END                           object_name
171064             , CASE r
171065                 WHEN 1 THEN 'HEADER' 
171066                 WHEN 2 THEN 'HEADER' 
171067                 WHEN 3 THEN 'HEADER' 
171068                 WHEN 4 THEN 'HEADER' 
171069                 WHEN 5 THEN 'HEADER' 
171070                 WHEN 6 THEN 'HEADER' 
171071                 WHEN 7 THEN 'HEADER' 
171072                 WHEN 8 THEN 'HEADER' 
171073                 WHEN 9 THEN 'HEADER' 
171074                 WHEN 10 THEN 'HEADER' 
171075                 WHEN 11 THEN 'HEADER' 
171076                 WHEN 12 THEN 'HEADER' 
171077                 WHEN 13 THEN 'HEADER' 
171078                 WHEN 14 THEN 'HEADER' 
171079                 WHEN 15 THEN 'HEADER' 
171080                 WHEN 16 THEN 'HEADER' 
171081                 
171082                 ELSE null
171083               END                           object_type_code
171084             , CASE r
171085                 WHEN 1 THEN '707' 
171086                 WHEN 2 THEN '707' 
171087                 WHEN 3 THEN '707' 
171088                 WHEN 4 THEN '707' 
171089                 WHEN 5 THEN '707' 
171090                 WHEN 6 THEN '707' 
171091                 WHEN 7 THEN '201' 
171092                 WHEN 8 THEN '707' 
171093                 WHEN 9 THEN '707' 
171094                 WHEN 10 THEN '707' 
171095                 WHEN 11 THEN '707' 
171096                 WHEN 12 THEN '707' 
171097                 WHEN 13 THEN '707' 
171098                 WHEN 14 THEN '707' 
171099                 WHEN 15 THEN '201' 
171100                 WHEN 16 THEN '707' 
171101                 
171102                 ELSE null
171103               END                           source_application_id
171104             , 'S'             source_type_code
171105             , CASE r
171106                 WHEN 1 THEN 'APPLIED_TO_APPL_ID' 
171107                 WHEN 2 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
171108                 WHEN 3 THEN 'APPLIED_TO_ENTITY_CODE' 
171109                 WHEN 4 THEN 'PO_DISTRIBUTION_ID' 
171110                 WHEN 5 THEN 'APPLIED_TO_PO_DOC_ID' 
171111                 WHEN 6 THEN 'DISTRIBUTION_TYPE' 
171112                 WHEN 7 THEN 'PO_BUDGET_ACCOUNT' 
171113                 WHEN 8 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
171114                 WHEN 9 THEN 'CURRENCY_CODE' 
171115                 WHEN 10 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
171116                 WHEN 11 THEN 'CST_PEA_ENC_UPG_OPTION' 
171117                 WHEN 12 THEN 'CURRENCY_CONVERSION_DATE' 
171118                 WHEN 13 THEN 'CURRENCY_CONVERSION_RATE' 
171119                 WHEN 14 THEN 'CURRENCY_CONVERSION_TYPE' 
171120                 WHEN 15 THEN 'PURCH_ENCUMBRANCE_TYPE_ID' 
171121                 WHEN 16 THEN 'TRANSFER_TO_GL_INDICATOR' 
171122                 
171123                 ELSE null
171124               END                           source_code
171125             , CASE r
171126                 WHEN 1 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
171127                 WHEN 2 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
171128                 WHEN 3 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
171129                 WHEN 4 THEN TO_CHAR(h3.PO_DISTRIBUTION_ID)
171130                 WHEN 5 THEN TO_CHAR(h3.APPLIED_TO_PO_DOC_ID)
171131                 WHEN 6 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
171132                 WHEN 7 THEN TO_CHAR(h4.PO_BUDGET_ACCOUNT)
171133                 WHEN 8 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
171134                 WHEN 9 THEN TO_CHAR(h1.CURRENCY_CODE)
171135                 WHEN 10 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
171136                 WHEN 11 THEN TO_CHAR(h6.CST_PEA_ENC_UPG_OPTION)
171137                 WHEN 12 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
171138                 WHEN 13 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
171139                 WHEN 14 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
171140                 WHEN 15 THEN TO_CHAR(h5.PURCH_ENCUMBRANCE_TYPE_ID)
171141                 WHEN 16 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
171142                 
171143                 ELSE null
171144               END                           source_value
171145             , CASE r
171146                 WHEN 6 THEN fvl12.meaning
171147                 WHEN 16 THEN fvl38.meaning
171148                 
171149                 ELSE null
171150               END               source_meaning
171151          FROM xla_events_gt     xet  
171152       , CST_XLA_RCV_HEADERS_V  h1
171153       , CST_XLA_RCV_REF_V  h3
171154       , PO_DISTS_REF_V  h4
171155       , PO_HEADERS_REF_V  h5
171156       , PSA_CST_XLA_PEA_UPG_V  h6
171157   , fnd_lookup_values    fvl12
171158   , fnd_lookup_values    fvl38
171159              ,(select rownum r from all_objects where rownum <= 16 and owner = p_apps_owner)
171160          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
171161            AND xet.event_class_code = C_EVENT_CLASS_CODE
171162               AND h1.event_id = xet.event_id
171163  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 fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
171164   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
171165   AND fvl12.view_application_id(+) = 700
171166   AND fvl12.language(+)            = USERENV('LANG')
171167      AND fvl38.lookup_type(+)         = 'YES_NO'
171168   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
171169   AND fvl38.view_application_id(+) = 0
171170   AND fvl38.language(+)            = USERENV('LANG')
171171   
171172 )
171173 ;
171174 --
171175 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171176 
171177       trace
171178          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
171179          ,p_level    => C_LEVEL_STATEMENT
171180          ,p_module   => l_log_module);
171181 
171182 END IF;
171183 --
171184 
171185 
171186 
171187 --
171188 INSERT INTO xla_diag_sources  --line2
171189 (
171190         event_id
171191       , ledger_id
171192       , sla_ledger_id
171193       , description_language
171194       , object_name
171195       , object_type_code
171196       , line_number
171197       , source_application_id
171198       , source_type_code
171199       , source_code
171200       , source_value
171201       , source_meaning
171202       , created_by
171203       , creation_date
171204       , last_update_date
171205       , last_updated_by
171206       , last_update_login
171207       , program_update_date
171208       , program_application_id
171209       , program_id
171210       , request_id
171211 )
171212 SELECT  event_id
171213       , p_target_ledger_id
171214       , p_sla_ledger_id
171215       , p_language
171216       , object_name
171217       , object_type_code
171218       , line_number
171219       , source_application_id
171220       , source_type_code
171221       , source_code
171222       , SUBSTR(source_value,1,1996)
171223       , SUBSTR(source_meaning ,1,200)
171224       , xla_environment_pkg.g_Usr_Id
171225       , TRUNC(SYSDATE)
171226       , TRUNC(SYSDATE)
171227       , xla_environment_pkg.g_Usr_Id
171228       , xla_environment_pkg.g_Login_Id
171229       , TRUNC(SYSDATE)
171230       , xla_environment_pkg.g_Prog_Appl_Id
171231       , xla_environment_pkg.g_Prog_Id
171232       , xla_environment_pkg.g_Req_Id
171233   FROM (
171234        SELECT xet.event_id                  event_id
171235             , l2.line_number                 line_number
171236             , CASE r
171237                WHEN 1 THEN 'CST_XLA_RCV_LINES_V' 
171238                 WHEN 2 THEN 'CST_XLA_RCV_LINES_V' 
171239                 WHEN 3 THEN 'CST_XLA_RCV_LINES_V' 
171240                 WHEN 4 THEN 'CST_XLA_RCV_LINES_V' 
171241                 WHEN 5 THEN 'CST_XLA_RCV_LINES_V' 
171242                 
171243                ELSE null
171244               END                           object_name
171245             , CASE r
171246                 WHEN 1 THEN 'LINE' 
171247                 WHEN 2 THEN 'LINE' 
171248                 WHEN 3 THEN 'LINE' 
171249                 WHEN 4 THEN 'LINE' 
171250                 WHEN 5 THEN 'LINE' 
171251                 
171252                 ELSE null
171253               END                           object_type_code
171254             , CASE r
171255                 WHEN 1 THEN '707' 
171256                 WHEN 2 THEN '707' 
171257                 WHEN 3 THEN '707' 
171258                 WHEN 4 THEN '707' 
171259                 WHEN 5 THEN '707' 
171260                 
171261                 ELSE null
171262               END                           source_application_id
171263             , 'S'             source_type_code
171264             , CASE r
171265                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
171266                 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE' 
171267                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
171268                 WHEN 4 THEN 'ENTERED_AMOUNT' 
171269                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
171270                 
171271                 ELSE null
171272               END                           source_code
171273             , CASE r
171274                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
171275                 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
171276                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
171277                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
171278                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
171279                 
171280                 ELSE null
171281               END                           source_value
171282             , null              source_meaning
171283          FROM  xla_events_gt     xet  
171284         , CST_XLA_RCV_LINES_V  l2
171285             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
171286         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
171287           AND xet.event_class_code = C_EVENT_CLASS_CODE
171288             AND l2.event_id          = xet.event_id
171289 
171290 )
171291 ;
171292 --
171293 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171294 
171295       trace
171296          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
171297          ,p_level    => C_LEVEL_STATEMENT
171298          ,p_module   => l_log_module);
171299 
171300 END IF;
171301 
171302 
171303 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
171304       trace
171305          (p_msg      => 'END of insert_sources_280'
171306          ,p_level    => C_LEVEL_PROCEDURE
171307          ,p_module   => l_log_module);
171308 END IF;
171309 EXCEPTION
171310   WHEN xla_exceptions_pkg.application_exception THEN
171311       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
171312             trace
171313                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
171314                ,p_level    => C_LEVEL_EXCEPTION
171315                ,p_module   => l_log_module);
171316       END IF;
171317       RAISE;
171318   WHEN OTHERS THEN
171319       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
171320             trace
171321                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
171322                ,p_level    => C_LEVEL_EXCEPTION
171323                ,p_module   => l_log_module);
171324        END IF;
171325        xla_exceptions_pkg.raise_message
171326            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_280');
171327 END insert_sources_280;
171328 --
171329 
171330 ---------------------------------------
171331 --
171332 -- PRIVATE FUNCTION
171333 --         EventClass_280
171334 --
171335 ----------------------------------------
171336 --
171337 FUNCTION EventClass_280
171338        (p_application_id         IN NUMBER
171339        ,p_base_ledger_id         IN NUMBER
171340        ,p_target_ledger_id       IN NUMBER
171341        ,p_language               IN VARCHAR2
171342        ,p_currency_code          IN VARCHAR2
171343        ,p_sla_ledger_id          IN NUMBER
171344        ,p_pad_start_date         IN DATE
171345        ,p_pad_end_date           IN DATE
171346        ,p_primary_ledger_id      IN NUMBER)
171347 RETURN BOOLEAN IS
171348 --
171349 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PERIOD_END_ACCRUAL_ALL';
171350 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PERIOD_END_ACCRUAL';
171351 
171352 l_calculate_acctd_flag   VARCHAR2(1) :='N';
171353 l_calculate_g_l_flag     VARCHAR2(1) :='N';
171354 --
171355 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171356 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171357 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
171358 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
171359 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171360 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
171361 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
171362 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171363 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171364 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171365 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171366 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171367 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171368 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171369 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
171370 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
171371 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
171372 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
171373 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171374 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171375 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171376 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171377 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
171378 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
171379 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
171380 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
171381 
171382 l_event_id                             NUMBER;
171383 l_previous_event_id                    NUMBER;
171384 l_first_event_id                       NUMBER;
171385 l_last_event_id                        NUMBER;
171386 
171387 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
171388 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
171389 --
171390 --
171391 l_result                    BOOLEAN := TRUE;
171392 l_rows                      NUMBER  := 1000;
171393 l_event_type_name           VARCHAR2(80) := 'All';
171394 l_event_class_name          VARCHAR2(80) := 'Period End Accrual';
171395 l_description               VARCHAR2(4000);
171396 l_transaction_reversal      NUMBER;
171397 l_ae_header_id              NUMBER;
171398 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
171399 l_log_module                VARCHAR2(240);
171400 --
171401 l_acct_reversal_source      VARCHAR2(30);
171402 l_trx_reversal_source       VARCHAR2(30);
171403 
171404 l_continue_with_lines       BOOLEAN := TRUE;
171405 --
171406 l_acc_rev_gl_date_source    DATE;                      -- 4262811
171407 --
171408 type t_array_event_id is table of number index by binary_integer;
171409 
171410 l_rec_array_event                    t_rec_array_event;
171411 l_null_rec_array_event               t_rec_array_event;
171412 l_array_ae_header_id                 xla_number_array_type;
171413 l_actual_flag                        VARCHAR2(1) := NULL;
171414 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
171415 l_balance_type_code                  VARCHAR2(1) :=NULL;
171416 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
171417 
171418 --
171419 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
171420 --
171421 
171422 TYPE t_array_source_6 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
171423 TYPE t_array_source_7 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
171424 TYPE t_array_source_8 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
171425 TYPE t_array_source_9 IS TABLE OF CST_XLA_RCV_REF_V.PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
171426 TYPE t_array_source_10 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
171427 TYPE t_array_source_12 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
171428 TYPE t_array_source_13 IS TABLE OF PO_DISTS_REF_V.PO_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
171429 TYPE t_array_source_14 IS TABLE OF CST_XLA_RCV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
171430 TYPE t_array_source_15 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
171431 TYPE t_array_source_16 IS TABLE OF CST_XLA_RCV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
171432 TYPE t_array_source_17 IS TABLE OF PSA_CST_XLA_PEA_UPG_V.CST_PEA_ENC_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
171433 TYPE t_array_source_19 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
171434 TYPE t_array_source_20 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
171435 TYPE t_array_source_21 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
171436 TYPE t_array_source_23 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
171437 TYPE t_array_source_38 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
171438 
171439 TYPE t_array_source_4 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
171440 TYPE t_array_source_5 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
171441 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
171442 TYPE t_array_source_18 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
171443 TYPE t_array_source_22 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
171444 
171445 l_array_source_6              t_array_source_6;
171446 l_array_source_7              t_array_source_7;
171447 l_array_source_8              t_array_source_8;
171448 l_array_source_9              t_array_source_9;
171449 l_array_source_10              t_array_source_10;
171450 l_array_source_12              t_array_source_12;
171451 l_array_source_12_meaning      t_array_lookup_meaning;
171452 l_array_source_13              t_array_source_13;
171453 l_array_source_14              t_array_source_14;
171454 l_array_source_15              t_array_source_15;
171455 l_array_source_16              t_array_source_16;
171456 l_array_source_17              t_array_source_17;
171457 l_array_source_19              t_array_source_19;
171458 l_array_source_20              t_array_source_20;
171459 l_array_source_21              t_array_source_21;
171460 l_array_source_23              t_array_source_23;
171461 l_array_source_38              t_array_source_38;
171462 l_array_source_38_meaning      t_array_lookup_meaning;
171463 
171464 l_array_source_4      t_array_source_4;
171465 l_array_source_5      t_array_source_5;
171466 l_array_source_11      t_array_source_11;
171467 l_array_source_18      t_array_source_18;
171468 l_array_source_22      t_array_source_22;
171469 
171470 --
171471 CURSOR header_cur
171472 IS
171473 SELECT /*+ leading(xet) cardinality(xet,1) */
171474 -- Event Class Code: PERIOD_END_ACCRUAL
171475     xet.entity_id
171476    ,xet.legal_entity_id
171477    ,xet.entity_code
171478    ,xet.transaction_number
171479    ,xet.event_id
171480    ,xet.event_class_code
171481    ,xet.event_type_code
171482    ,xet.event_number
171483    ,xet.event_date
171484    ,xet.transaction_date
171485    ,xet.reference_num_1
171486    ,xet.reference_num_2
171487    ,xet.reference_num_3
171488    ,xet.reference_num_4
171489    ,xet.reference_char_1
171490    ,xet.reference_char_2
171491    ,xet.reference_char_3
171492    ,xet.reference_char_4
171493    ,xet.reference_date_1
171494    ,xet.reference_date_2
171495    ,xet.reference_date_3
171496    ,xet.reference_date_4
171497    ,xet.event_created_by
171498    ,xet.budgetary_control_flag 
171499   , h3.APPLIED_TO_APPL_ID    source_6
171500   , h3.APPLIED_TO_DIST_LINK_TYPE    source_7
171501   , h3.APPLIED_TO_ENTITY_CODE    source_8
171502   , h3.PO_DISTRIBUTION_ID    source_9
171503   , h3.APPLIED_TO_PO_DOC_ID    source_10
171504   , h1.DISTRIBUTION_TYPE    source_12
171505   , fvl12.meaning   source_12_meaning
171506   , h4.PO_BUDGET_ACCOUNT    source_13
171507   , h3.ENCUM_REVERSAL_AMOUNT_ENTERED    source_14
171508   , h1.CURRENCY_CODE    source_15
171509   , h3.ENCUMBRANCE_REVERSAL_AMOUNT    source_16
171510   , h6.CST_PEA_ENC_UPG_OPTION    source_17
171511   , h1.CURRENCY_CONVERSION_DATE    source_19
171512   , h1.CURRENCY_CONVERSION_RATE    source_20
171513   , h1.CURRENCY_CONVERSION_TYPE    source_21
171514   , h5.PURCH_ENCUMBRANCE_TYPE_ID    source_23
171515   , h1.TRANSFER_TO_GL_INDICATOR    source_38
171516   , fvl38.meaning   source_38_meaning
171517   FROM xla_events_gt     xet 
171518   , CST_XLA_RCV_HEADERS_V  h1
171519   , CST_XLA_RCV_REF_V  h3
171520   , PO_DISTS_REF_V  h4
171521   , PO_HEADERS_REF_V  h5
171522   , PSA_CST_XLA_PEA_UPG_V  h6
171523   , fnd_lookup_values    fvl12
171524   , fnd_lookup_values    fvl38
171525  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
171526    and xet.event_class_code = C_EVENT_CLASS_CODE
171527    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
171528  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 fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
171529   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
171530   AND fvl12.view_application_id(+) = 700
171531   AND fvl12.language(+)            = USERENV('LANG')
171532      AND fvl38.lookup_type(+)         = 'YES_NO'
171533   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
171534   AND fvl38.view_application_id(+) = 0
171535   AND fvl38.language(+)            = USERENV('LANG')
171536   
171537  ORDER BY event_id
171538 ;
171539 
171540 
171541 --
171542 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
171543 IS
171544 SELECT  /*+ leading(xet) cardinality(xet,1) */
171545 -- Event Class Code: PERIOD_END_ACCRUAL
171546     xet.entity_id
171547    ,xet.legal_entity_id
171548    ,xet.entity_code
171549    ,xet.transaction_number
171550    ,xet.event_id
171551    ,xet.event_class_code
171552    ,xet.event_type_code
171553    ,xet.event_number
171554    ,xet.event_date
171555    ,xet.transaction_date
171556    ,xet.reference_num_1
171557    ,xet.reference_num_2
171558    ,xet.reference_num_3
171559    ,xet.reference_num_4
171560    ,xet.reference_char_1
171561    ,xet.reference_char_2
171562    ,xet.reference_char_3
171563    ,xet.reference_char_4
171564    ,xet.reference_date_1
171565    ,xet.reference_date_2
171566    ,xet.reference_date_3
171567    ,xet.reference_date_4
171568    ,xet.event_created_by
171569    ,xet.budgetary_control_flag
171570  , l2.LINE_NUMBER  
171571   , l2.CODE_COMBINATION_ID    source_4
171572   , l2.RCV_ACCOUNTING_LINE_TYPE    source_5
171573   , l2.DISTRIBUTION_IDENTIFIER    source_11
171574   , l2.ENTERED_AMOUNT    source_18
171575   , l2.ACCOUNTED_AMOUNT    source_22
171576   FROM xla_events_gt     xet 
171577   , CST_XLA_RCV_LINES_V  l2
171578  WHERE xet.event_id between x_first_event_id and x_last_event_id
171579    and xet.event_date between p_pad_start_date and p_pad_end_date
171580    and xet.event_class_code = C_EVENT_CLASS_CODE
171581    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
171582 ;
171583 
171584 --
171585 BEGIN
171586 IF g_log_enabled THEN
171587    l_log_module := C_DEFAULT_MODULE||'.EventClass_280';
171588 END IF;
171589 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
171590    trace
171591       (p_msg      => 'BEGIN of EventClass_280'
171592       ,p_level    => C_LEVEL_PROCEDURE
171593       ,p_module   => l_log_module);
171594 END IF;
171595 
171596 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171597    trace
171598       (p_msg      => 'p_application_id = '||p_application_id||
171599                      ' - p_base_ledger_id = '||p_base_ledger_id||
171600                      ' - p_target_ledger_id  = '||p_target_ledger_id||
171601                      ' - p_language = '||p_language||
171602                      ' - p_currency_code = '||p_currency_code||
171603                      ' - p_sla_ledger_id = '||p_sla_ledger_id
171604       ,p_level    => C_LEVEL_STATEMENT
171605       ,p_module   => l_log_module);
171606 END IF;
171607 --
171608 -- initialze arrays
171609 --
171610 g_array_event.DELETE;
171611 l_rec_array_event := l_null_rec_array_event;
171612 --
171613 --------------------------------------
171614 -- 4262811 Initialze MPA Line Number
171615 --------------------------------------
171616 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
171617 
171618 --
171619 
171620 --
171621 OPEN header_cur;
171622 --
171623 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171624    trace
171625    (p_msg      => 'SQL - FETCH header_cur'
171626    ,p_level    => C_LEVEL_STATEMENT
171627    ,p_module   => l_log_module);
171628 END IF;
171629 --
171630 LOOP
171631 FETCH header_cur BULK COLLECT INTO
171632         l_array_entity_id
171633       , l_array_legal_entity_id
171634       , l_array_entity_code
171635       , l_array_transaction_num
171636       , l_array_event_id
171637       , l_array_class_code
171638       , l_array_event_type
171639       , l_array_event_number
171640       , l_array_event_date
171641       , l_array_transaction_date
171642       , l_array_reference_num_1
171643       , l_array_reference_num_2
171644       , l_array_reference_num_3
171645       , l_array_reference_num_4
171646       , l_array_reference_char_1
171647       , l_array_reference_char_2
171648       , l_array_reference_char_3
171649       , l_array_reference_char_4
171650       , l_array_reference_date_1
171651       , l_array_reference_date_2
171652       , l_array_reference_date_3
171653       , l_array_reference_date_4
171654       , l_array_event_created_by
171655       , l_array_budgetary_control_flag 
171656       , l_array_source_6
171657       , l_array_source_7
171658       , l_array_source_8
171659       , l_array_source_9
171660       , l_array_source_10
171661       , l_array_source_12
171662       , l_array_source_12_meaning
171663       , l_array_source_13
171664       , l_array_source_14
171665       , l_array_source_15
171666       , l_array_source_16
171667       , l_array_source_17
171668       , l_array_source_19
171669       , l_array_source_20
171670       , l_array_source_21
171671       , l_array_source_23
171672       , l_array_source_38
171673       , l_array_source_38_meaning
171674       LIMIT l_rows;
171675 --
171676 IF (C_LEVEL_EVENT >= g_log_level) THEN
171677    trace
171678    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
171679    ,p_level    => C_LEVEL_EVENT
171680    ,p_module   => l_log_module);
171681 END IF;
171682 --
171683 EXIT WHEN l_array_entity_id.COUNT = 0;
171684 
171685 -- initialize arrays
171686 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
171687 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
171688 
171689 --
171690 -- Bug 4458708
171691 --
171692 XLA_AE_LINES_PKG.g_LineNumber := 0;
171693 
171694 
171695 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
171696 g_last_hdr_idx := l_array_event_id.LAST;
171697 --
171698 -- loop for the headers. Each iteration is for each header extract row
171699 -- fetched in header cursor
171700 --
171701 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
171702 
171703 --
171704 -- set event info as cache for other routines to refer event attributes
171705 --
171706 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
171707    (p_application_id           => p_application_id
171708    ,p_primary_ledger_id        => p_primary_ledger_id
171709    ,p_base_ledger_id           => p_base_ledger_id
171710    ,p_target_ledger_id         => p_target_ledger_id
171711    ,p_entity_id                => l_array_entity_id(hdr_idx)
171712    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
171713    ,p_entity_code              => l_array_entity_code(hdr_idx)
171714    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
171715    ,p_event_id                 => l_array_event_id(hdr_idx)
171716    ,p_event_class_code         => l_array_class_code(hdr_idx)
171717    ,p_event_type_code          => l_array_event_type(hdr_idx)
171718    ,p_event_number             => l_array_event_number(hdr_idx)
171719    ,p_event_date               => l_array_event_date(hdr_idx)
171720    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
171721    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
171722    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
171723    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
171724    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
171725    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
171726    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
171727    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
171728    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
171729    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
171730    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
171731    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
171732    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
171733    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
171734    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
171735 
171736 --
171737 -- set the status of entry to C_VALID (0)
171738 --
171739 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
171740 
171741 --
171742 -- initialize a row for ae header
171743 --
171744 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
171745 
171746 l_event_id := l_array_event_id(hdr_idx);
171747 
171748 --
171749 -- storing the hdr_idx for event. May be used by line cursor.
171750 --
171751 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
171752 
171753 --
171754 -- store sources from header extract. This can be improved to
171755 -- store only those sources from header extract that may be used in lines
171756 --
171757 
171758 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
171759 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
171760 g_array_event(l_event_id).array_value_char('source_8') := l_array_source_8(hdr_idx);
171761 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
171762 g_array_event(l_event_id).array_value_num('source_10') := l_array_source_10(hdr_idx);
171763 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
171764 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
171765 g_array_event(l_event_id).array_value_num('source_13') := l_array_source_13(hdr_idx);
171766 g_array_event(l_event_id).array_value_num('source_14') := l_array_source_14(hdr_idx);
171767 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
171768 g_array_event(l_event_id).array_value_num('source_16') := l_array_source_16(hdr_idx);
171769 g_array_event(l_event_id).array_value_char('source_17') := l_array_source_17(hdr_idx);
171770 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
171771 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
171772 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
171773 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
171774 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
171775 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
171776 
171777 --
171778 -- initilaize the status of ae headers for diffrent balance types
171779 -- the status is initialised to C_NOT_CREATED (2)
171780 --
171781 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
171782 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
171783 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
171784 
171785 --
171786 -- call api to validate and store accounting attributes for header
171787 --
171788 
171789 ------------------------------------------------------------
171790 -- Accrual Reversal : to get date for Standard Source (NONE)
171791 ------------------------------------------------------------
171792 l_acc_rev_gl_date_source := NULL;
171793 
171794      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
171795       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_23');
171796      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
171797       l_rec_acct_attrs.array_date_value(2) := 
171798 xla_ae_sources_pkg.GetSystemSourceDate(
171799    p_source_code           => 'XLA_REFERENCE_DATE_1'
171800  , p_source_type_code      => 'Y'
171801  , p_source_application_id =>  602
171802 );
171803      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
171804       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_38');
171805 
171806 
171807 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
171808 
171809 XLA_AE_HEADER_PKG.SetJeCategoryName;
171810 
171811 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
171812 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
171813 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
171814 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
171815 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
171816 
171817 
171818 -- No header level analytical criteria
171819 
171820 --
171821 --accounting attribute enhancement, bug 3612931
171822 --
171823 l_trx_reversal_source := SUBSTR(NULL, 1,30);
171824 
171825 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
171826    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
171827 
171828    xla_accounting_err_pkg.build_message
171829       (p_appli_s_name            => 'XLA'
171830       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
171831       ,p_token_1                 => 'ACCT_ATTR_NAME'
171832       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
171833       ,p_token_2                 => 'PRODUCT_NAME'
171834       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
171835       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
171836       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
171837       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
171838 
171839 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
171840    --
171841    -- following sets the accounting attributes needed to reverse
171842    -- accounting for a distributeion
171843    --
171844    xla_ae_lines_pkg.SetTrxReversalAttrs
171845       (p_event_id              => l_event_id
171846       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
171847       ,p_trx_reversal_source   => l_trx_reversal_source);
171848 
171849 END IF;
171850 
171851 
171852 ----------------------------------------------------------------
171853 -- 4262811 -  update the header statuses to invalid in need be
171854 ----------------------------------------------------------------
171855 --
171856 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
171857 
171858 
171859 --
171860 -- Generate the accrual reversal headers
171861 --
171862 IF NVL(l_trx_reversal_source, 'N') = 'N' THEN
171863 
171864 
171865 
171866 -- indicate that the accrual entry has a reversal entry
171867 XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag(hdr_idx) := 'Y';
171868 
171869 --
171870 -- initialize a row for ae header
171871 --
171872 g_last_hdr_idx := g_last_hdr_idx + 1;
171873 XLA_AE_HEADER_PKG.CopyHeaderInfo (p_parent_hdr_idx => hdr_idx,
171874                                   p_hdr_idx        => g_last_hdr_idx) ;
171875 XLA_AE_HEADER_PKG.g_rec_header_new.array_header_num      (g_last_hdr_idx) := 1;
171876 XLA_AE_HEADER_PKG.g_rec_header_new.array_parent_header_id(g_last_hdr_idx) :=
171877                XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx);
171878 
171879 --
171880 -- record the index for the reversal entry, it will be used by the journal
171881 -- line creation
171882 --
171883 g_array_event(l_event_id).array_value_num('acc_rev_header_index') := g_last_hdr_idx;
171884 
171885 --
171886 -- Populate the GL Date and override the GL date defined in the
171887 -- SetHdrAcctAttrs if necessary
171888 --
171889 
171890               ---------------------- XLA_FIRST_DAY_NEXT_GL_PERIOD ----------------------
171891               XLA_AE_HEADER_PKG.g_rec_header_new.array_acc_rev_gl_date_option(g_last_hdr_idx) := 'XLA_FIRST_DAY_NEXT_GL_PERIOD';
171892               XLA_AE_HEADER_PKG.GetAccrualRevDate(g_last_hdr_idx
171893                                        ,XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(g_last_hdr_idx)
171894                                        ,XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
171895                                        ,XLA_AE_HEADER_PKG.g_rec_header_new.array_acc_rev_gl_date_option(g_last_hdr_idx));
171896               
171897 
171898 --
171899 -- Update the header status
171900 --
171901 XLA_AE_JOURNAL_ENTRY_PKG.updateJournalEntryStatus (p_hdr_idx => g_last_hdr_idx);
171902 
171903 
171904 
171905 END IF;
171906 
171907 
171908 ----------------------------------------------------------------
171909 
171910 --
171911 -- this ends the header loop iteration for one bulk fetch
171912 --
171913 END LOOP;
171914 
171915 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
171916 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
171917 
171918 --
171919 -- insert dummy rows into lines gt table that were created due to
171920 -- transaction reversals
171921 --
171922 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
171923    l_result := XLA_AE_LINES_PKG.InsertLines;
171924 END IF;
171925 
171926 --
171927 -- reset the temp_line_num for each set of events fetched from header
171928 -- cursor rather than doing it for each new event in line cursor
171929 -- Bug 3939231
171930 --
171931 xla_ae_lines_pkg.g_temp_line_num := 0;
171932 
171933 
171934 
171935 --
171936 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
171937 --
171938 --
171939 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171940 
171941       trace
171942          (p_msg      => 'SQL - FETCH line_cur'
171943          ,p_level    => C_LEVEL_STATEMENT
171944          ,p_module   => l_log_module);
171945 
171946 END IF;
171947 --
171948 --
171949 LOOP
171950   --
171951   FETCH line_cur BULK COLLECT INTO
171952         l_array_entity_id
171953       , l_array_legal_entity_id
171954       , l_array_entity_code
171955       , l_array_transaction_num
171956       , l_array_event_id
171957       , l_array_class_code
171958       , l_array_event_type
171959       , l_array_event_number
171960       , l_array_event_date
171961       , l_array_transaction_date
171962       , l_array_reference_num_1
171963       , l_array_reference_num_2
171964       , l_array_reference_num_3
171965       , l_array_reference_num_4
171966       , l_array_reference_char_1
171967       , l_array_reference_char_2
171968       , l_array_reference_char_3
171969       , l_array_reference_char_4
171970       , l_array_reference_date_1
171971       , l_array_reference_date_2
171972       , l_array_reference_date_3
171973       , l_array_reference_date_4
171974       , l_array_event_created_by
171975       , l_array_budgetary_control_flag
171976       , l_array_extract_line_num 
171977       , l_array_source_4
171978       , l_array_source_5
171979       , l_array_source_11
171980       , l_array_source_18
171981       , l_array_source_22
171982       LIMIT l_rows;
171983 
171984   --
171985   IF (C_LEVEL_EVENT >= g_log_level) THEN
171986             trace
171987                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
171988                ,p_level    => C_LEVEL_EVENT
171989                ,p_module   => l_log_module);
171990   END IF;
171991   --
171992   EXIT WHEN l_array_entity_id.count = 0;
171993 
171994   XLA_AE_LINES_PKG.g_rec_lines := null;
171995 
171996 --
171997 -- Bug 4458708
171998 --
171999 XLA_AE_LINES_PKG.g_LineNumber := 0;
172000 --
172001 --
172002 
172003 FOR Idx IN 1..l_array_event_id.count LOOP
172004    --
172005    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
172006    --
172007    l_event_id := l_array_event_id(idx);  -- 5648433
172008 
172009    --
172010    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
172011    --
172012 
172013    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
172014              (g_array_event(l_event_id).array_value_num('header_index'))
172015          ,'N'
172016          ) <> 'Y'
172017    THEN
172018       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172019          trace
172020             (p_msg      => 'Trancaction revesal option is not Y '
172021             ,p_level    => C_LEVEL_STATEMENT
172022             ,p_module   => l_log_module);
172023       END IF;
172024 
172025 --
172026 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
172027 --
172028 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
172029 --
172030 -- set event info as cache for other routines to refer event attributes
172031 --
172032 
172033 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
172034    l_previous_event_id := l_event_id;
172035 
172036    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
172037       (p_application_id           => p_application_id
172038       ,p_primary_ledger_id        => p_primary_ledger_id
172039       ,p_base_ledger_id           => p_base_ledger_id
172040       ,p_target_ledger_id         => p_target_ledger_id
172041       ,p_entity_id                => l_array_entity_id(Idx)
172042       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
172043       ,p_entity_code              => l_array_entity_code(Idx)
172044       ,p_transaction_num          => l_array_transaction_num(Idx)
172045       ,p_event_id                 => l_array_event_id(Idx)
172046       ,p_event_class_code         => l_array_class_code(Idx)
172047       ,p_event_type_code          => l_array_event_type(Idx)
172048       ,p_event_number             => l_array_event_number(Idx)
172049       ,p_event_date               => l_array_event_date(Idx)
172050       ,p_transaction_date         => l_array_transaction_date(Idx)
172051       ,p_reference_num_1          => l_array_reference_num_1(Idx)
172052       ,p_reference_num_2          => l_array_reference_num_2(Idx)
172053       ,p_reference_num_3          => l_array_reference_num_3(Idx)
172054       ,p_reference_num_4          => l_array_reference_num_4(Idx)
172055       ,p_reference_char_1         => l_array_reference_char_1(Idx)
172056       ,p_reference_char_2         => l_array_reference_char_2(Idx)
172057       ,p_reference_char_3         => l_array_reference_char_3(Idx)
172058       ,p_reference_char_4         => l_array_reference_char_4(Idx)
172059       ,p_reference_date_1         => l_array_reference_date_1(Idx)
172060       ,p_reference_date_2         => l_array_reference_date_2(Idx)
172061       ,p_reference_date_3         => l_array_reference_date_3(Idx)
172062       ,p_reference_date_4         => l_array_reference_date_4(Idx)
172063       ,p_event_created_by         => l_array_event_created_by(Idx)
172064       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
172065        --
172066 END IF;
172067 
172068 
172069 
172070 --
172071 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
172072 
172073 l_acct_reversal_source := SUBSTR(NULL, 1,30);
172074 
172075 IF l_continue_with_lines THEN
172076    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
172077       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
172078 
172079       xla_accounting_err_pkg.build_message
172080          (p_appli_s_name            => 'XLA'
172081          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
172082          ,p_token_1                 => 'LINE_NUMBER'
172083          ,p_value_1                 => l_array_extract_line_num(Idx)
172084          ,p_token_2                 => 'PRODUCT_NAME'
172085          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
172086          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
172087          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
172088          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
172089 
172090    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
172091       --
172092       -- following sets the accounting attributes needed to reverse
172093       -- accounting for a distributeion
172094       --
172095 
172096       --
172097       -- 5217187
172098       --
172099       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
172100       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
172101                                        g_array_event(l_event_id).array_value_num('header_index'));
172102       --
172103       --
172104 
172105       -- No reversal code generated
172106 
172107       xla_ae_lines_pkg.SetAcctReversalAttrs
172108          (p_event_id             => l_event_id
172109          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
172110          ,p_calculate_acctd_flag => l_calculate_acctd_flag
172111          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
172112    END IF;
172113 
172114    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
172115        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
172116 
172117 --
172118 AcctLineType_5 (
172119  p_application_id  => p_application_id
172120  ,p_event_id     => l_event_id
172121  ,p_calculate_acctd_flag => l_calculate_acctd_flag
172122  ,p_calculate_g_l_flag => l_calculate_g_l_flag
172123  ,p_actual_flag => l_actual_flag
172124  ,p_balance_type_code => l_balance_type_code
172125  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
172126  
172127  , p_source_4 => l_array_source_4(Idx)
172128  , p_source_5 => l_array_source_5(Idx)
172129  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
172130  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
172131  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
172132  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
172133  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
172134  , p_source_11 => l_array_source_11(Idx)
172135  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
172136  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
172137  , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
172138  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
172139  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
172140  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
172141  , p_source_17 => g_array_event(l_event_id).array_value_char('source_17')
172142  , p_source_18 => l_array_source_18(Idx)
172143  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
172144  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
172145  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
172146  , p_source_22 => l_array_source_22(Idx)
172147  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
172148  );
172149 If(l_balance_type_code = 'A') THEN
172150   l_actual_gain_loss_ref := l_gain_or_loss_ref;
172151 END IF;
172152 
172153 --
172154 
172155 
172156 --
172157 AcctLineType_11 (
172158  p_application_id  => p_application_id
172159  ,p_event_id     => l_event_id
172160  ,p_calculate_acctd_flag => l_calculate_acctd_flag
172161  ,p_calculate_g_l_flag => l_calculate_g_l_flag
172162  ,p_actual_flag => l_actual_flag
172163  ,p_balance_type_code => l_balance_type_code
172164  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
172165  
172166  , p_source_4 => l_array_source_4(Idx)
172167  , p_source_5 => l_array_source_5(Idx)
172168  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
172169  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
172170  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
172171  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
172172  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
172173  , p_source_11 => l_array_source_11(Idx)
172174  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
172175  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
172176  , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
172177  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
172178  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
172179  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
172180  , p_source_17 => g_array_event(l_event_id).array_value_char('source_17')
172181  , p_source_18 => l_array_source_18(Idx)
172182  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
172183  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
172184  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
172185  , p_source_22 => l_array_source_22(Idx)
172186  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
172187  );
172188 If(l_balance_type_code = 'A') THEN
172189   l_actual_gain_loss_ref := l_gain_or_loss_ref;
172190 END IF;
172191 
172192 --
172193 
172194       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
172195       -- or secondary ledger that has different currency with primary
172196       -- or alc that is calculated by sla
172197       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
172198             (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'))
172199 
172200 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
172201 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
172202           AND (l_actual_flag = 'A')) THEN
172203         XLA_AE_LINES_PKG.CreateGainOrLossLines(
172204           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
172205          ,p_application_id   => p_application_id
172206          ,p_amb_context_code => 'DEFAULT'
172207          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
172208          ,p_event_class_code => C_EVENT_CLASS_CODE
172209          ,p_event_type_code  => C_EVENT_TYPE_CODE
172210          
172211          ,p_gain_ccid        => -1
172212          ,p_loss_ccid        => -1
172213 
172214          ,p_actual_flag      => l_actual_flag
172215          ,p_enc_flag         => null
172216          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
172217          ,p_enc_g_l_ref      => null
172218          );
172219       END IF;
172220    END IF;
172221 END IF;
172222 
172223    ELSE
172224       --
172225       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
172226       --
172227       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172228          trace
172229             (p_msg      => 'Trancaction revesal option is Y'
172230             ,p_level    => C_LEVEL_STATEMENT
172231             ,p_module   => l_log_module);
172232       END IF;
172233    END IF;
172234 
172235 END LOOP;
172236 l_result := XLA_AE_LINES_PKG.InsertLines ;
172237 end loop;
172238 close line_cur;
172239 
172240 
172241 --
172242 -- insert headers into xla_ae_headers_gt table
172243 --
172244 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
172245 
172246 -- insert into errors table here.
172247 
172248 END LOOP;
172249 
172250 --
172251 -- 4865292
172252 --
172253 -- Compare g_hdr_extract_count with event count in
172254 -- CreateHeadersAndLines.
172255 --
172256 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
172257 
172258 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172259    trace (p_msg     => '# rows extracted from header extract objects '
172260                     || ' (running total): '
172261                     || g_hdr_extract_count
172262          ,p_level   => C_LEVEL_STATEMENT
172263          ,p_module  => l_log_module);
172264 END IF;
172265 
172266 CLOSE header_cur;
172267 --
172268 
172269 --
172270 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
172271    trace
172272       (p_msg      => 'END of EventClass_280'
172273       ,p_level    => C_LEVEL_PROCEDURE
172274       ,p_module   => l_log_module);
172275 END IF;
172276 --
172277 RETURN l_result;
172278 EXCEPTION
172279 WHEN xla_exceptions_pkg.application_exception THEN
172280    
172281 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
172282 
172283    
172284 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
172285 
172286    RAISE;
172287 
172288 WHEN NO_DATA_FOUND THEN
172289 
172290 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
172291 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
172292 
172293 FOR header_record IN header_cur
172294 LOOP
172295     l_array_header_events(header_record.event_id) := header_record.event_id;
172296 END LOOP;
172297 
172298 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
172299 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
172300 
172301 fnd_file.put_line(fnd_file.LOG, '                    ');
172302 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
172303 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
172304 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
172305 
172306 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
172307 LOOP
172308 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
172309 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
172310         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
172311 	END IF;
172312 END LOOP;
172313 
172314 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
172315 fnd_file.put_line(fnd_file.LOG, '                    ');
172316 
172317 
172318 xla_exceptions_pkg.raise_message
172319       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_280');
172320 
172321 
172322 WHEN OTHERS THEN
172323    xla_exceptions_pkg.raise_message
172324       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_280');
172325 END EventClass_280;
172326 --
172327 
172328 ---------------------------------------
172329 --
172330 -- PRIVATE PROCEDURE
172331 --         insert_sources_281
172332 --
172333 ----------------------------------------
172334 --
172335 PROCEDURE insert_sources_281(
172336                                 p_target_ledger_id       IN NUMBER
172337                               , p_language               IN VARCHAR2
172338                               , p_sla_ledger_id          IN NUMBER
172339                               , p_pad_start_date         IN DATE
172340                               , p_pad_end_date           IN DATE
172341                          )
172342 IS
172343 
172344 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PURCHASE_ORDER_ALL';
172345 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PURCHASE_ORDER';
172346 p_apps_owner                   VARCHAR2(30);
172347 l_log_module                   VARCHAR2(240);
172348 BEGIN
172349 IF g_log_enabled THEN
172350       l_log_module := C_DEFAULT_MODULE||'.insert_sources_281';
172351 END IF;
172352 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
172353 
172354       trace
172355          (p_msg      => 'BEGIN of insert_sources_281'
172356          ,p_level    => C_LEVEL_PROCEDURE
172357          ,p_module   => l_log_module);
172358 
172359 END IF;
172360 
172361 -- select APPS owner
172362 SELECT oracle_username
172363   INTO p_apps_owner
172364   FROM fnd_oracle_userid
172365  WHERE read_only_flag = 'U'
172366 ;
172367 
172368 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172369       trace
172370          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
172371                         ' - p_language = '||p_language||
172372                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
172373                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
172374                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
172375                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
172376          ,p_level    => C_LEVEL_STATEMENT
172377          ,p_module   => l_log_module);
172378 END IF;
172379 
172380 
172381 --
172382 INSERT INTO xla_diag_sources --hdr2
172383 (
172384         event_id
172385       , ledger_id
172386       , sla_ledger_id
172387       , description_language
172388       , object_name
172389       , object_type_code
172390       , line_number
172391       , source_application_id
172392       , source_type_code
172393       , source_code
172394       , source_value
172395       , source_meaning
172396       , created_by
172397       , creation_date
172398       , last_update_date
172399       , last_updated_by
172400       , last_update_login
172401       , program_update_date
172402       , program_application_id
172403       , program_id
172404       , request_id
172405 )
172406 SELECT
172407         event_id
172408       , p_target_ledger_id
172409       , p_sla_ledger_id
172410       , p_language
172411       , object_name
172412       , object_type_code
172413       , line_number
172414       , source_application_id
172415       , source_type_code
172416       , source_code
172417       , SUBSTR(source_value ,1,1996)
172418       , SUBSTR(source_meaning ,1,200)
172419       , xla_environment_pkg.g_Usr_Id
172420       , TRUNC(SYSDATE)
172421       , TRUNC(SYSDATE)
172422       , xla_environment_pkg.g_Usr_Id
172423       , xla_environment_pkg.g_Login_Id
172424       , TRUNC(SYSDATE)
172425       , xla_environment_pkg.g_Prog_Appl_Id
172426       , xla_environment_pkg.g_Prog_Id
172427       , xla_environment_pkg.g_Req_Id
172428   FROM (
172429        SELECT xet.event_id                  event_id
172430             , 0                          line_number
172431             , CASE r
172432                WHEN 1 THEN 'CST_XLA_INV_REF_V' 
172433                 WHEN 2 THEN 'CST_XLA_INV_REF_V' 
172434                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
172435                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
172436                 WHEN 5 THEN 'CST_XLA_INV_HEADERS_V' 
172437                 WHEN 6 THEN 'PO_DISTS_REF_V' 
172438                 WHEN 7 THEN 'CST_XLA_INV_REF_V' 
172439                 WHEN 8 THEN 'CST_XLA_INV_REF_V' 
172440                 WHEN 9 THEN 'PO_HEADERS_REF_V' 
172441                 WHEN 10 THEN 'PSA_CST_XLA_UPG_V' 
172442                 WHEN 11 THEN 'CST_XLA_INV_REF_V' 
172443                 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V' 
172444                 
172445                ELSE null
172446               END                           object_name
172447             , CASE r
172448                 WHEN 1 THEN 'HEADER' 
172449                 WHEN 2 THEN 'HEADER' 
172450                 WHEN 3 THEN 'HEADER' 
172451                 WHEN 4 THEN 'HEADER' 
172452                 WHEN 5 THEN 'HEADER' 
172453                 WHEN 6 THEN 'HEADER' 
172454                 WHEN 7 THEN 'HEADER' 
172455                 WHEN 8 THEN 'HEADER' 
172456                 WHEN 9 THEN 'HEADER' 
172457                 WHEN 10 THEN 'HEADER' 
172458                 WHEN 11 THEN 'HEADER' 
172459                 WHEN 12 THEN 'HEADER' 
172460                 
172461                 ELSE null
172462               END                           object_type_code
172463             , CASE r
172464                 WHEN 1 THEN '707' 
172465                 WHEN 2 THEN '707' 
172466                 WHEN 3 THEN '707' 
172467                 WHEN 4 THEN '707' 
172468                 WHEN 5 THEN '707' 
172469                 WHEN 6 THEN '201' 
172470                 WHEN 7 THEN '707' 
172471                 WHEN 8 THEN '707' 
172472                 WHEN 9 THEN '201' 
172473                 WHEN 10 THEN '707' 
172474                 WHEN 11 THEN '707' 
172475                 WHEN 12 THEN '707' 
172476                 
172477                 ELSE null
172478               END                           source_application_id
172479             , 'S'             source_type_code
172480             , CASE r
172481                 WHEN 1 THEN 'APPLIED_TO_APPL_ID' 
172482                 WHEN 2 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
172483                 WHEN 3 THEN 'APPLIED_TO_ENTITY_CODE' 
172484                 WHEN 4 THEN 'APPLIED_TO_PO_DOC_ID' 
172485                 WHEN 5 THEN 'DISTRIBUTION_TYPE' 
172486                 WHEN 6 THEN 'PO_BUDGET_ACCOUNT' 
172487                 WHEN 7 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
172488                 WHEN 8 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
172489                 WHEN 9 THEN 'PURCH_ENCUMBRANCE_TYPE_ID' 
172490                 WHEN 10 THEN 'CST_ENCUM_UPG_OPTION' 
172491                 WHEN 11 THEN 'TXN_PO_DISTRIBUTION_ID' 
172492                 WHEN 12 THEN 'TRANSFER_TO_GL_INDICATOR' 
172493                 
172494                 ELSE null
172495               END                           source_code
172496             , CASE r
172497                 WHEN 1 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
172498                 WHEN 2 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
172499                 WHEN 3 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
172500                 WHEN 4 THEN TO_CHAR(h3.APPLIED_TO_PO_DOC_ID)
172501                 WHEN 5 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
172502                 WHEN 6 THEN TO_CHAR(h4.PO_BUDGET_ACCOUNT)
172503                 WHEN 7 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
172504                 WHEN 8 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
172505                 WHEN 9 THEN TO_CHAR(h5.PURCH_ENCUMBRANCE_TYPE_ID)
172506                 WHEN 10 THEN TO_CHAR(h6.CST_ENCUM_UPG_OPTION)
172507                 WHEN 11 THEN TO_CHAR(h3.TXN_PO_DISTRIBUTION_ID)
172508                 WHEN 12 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
172509                 
172510                 ELSE null
172511               END                           source_value
172512             , CASE r
172513                 WHEN 5 THEN fvl12.meaning
172514                 WHEN 12 THEN fvl38.meaning
172515                 
172516                 ELSE null
172517               END               source_meaning
172518          FROM xla_events_gt     xet  
172519       , CST_XLA_INV_HEADERS_V  h1
172520       , CST_XLA_INV_REF_V  h3
172521       , PO_DISTS_REF_V  h4
172522       , PO_HEADERS_REF_V  h5
172523       , PSA_CST_XLA_UPG_V  h6
172524   , fnd_lookup_values    fvl12
172525   , fnd_lookup_values    fvl38
172526              ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
172527          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
172528            AND xet.event_class_code = C_EVENT_CLASS_CODE
172529               AND h1.event_id = xet.event_id
172530  AND h3.ref_transaction_id = h1.transaction_id AND h3.txn_po_header_id = h4.po_header_id  (+)  and h3.txn_po_distribution_id = h4.po_distribution_id (+)  AND h3.txn_po_header_id = h5.po_header_id (+)  AND h3.rcv_transaction_id = h6.transaction_id (+)    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
172531   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
172532   AND fvl12.view_application_id(+) = 700
172533   AND fvl12.language(+)            = USERENV('LANG')
172534      AND fvl38.lookup_type(+)         = 'YES_NO'
172535   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
172536   AND fvl38.view_application_id(+) = 0
172537   AND fvl38.language(+)            = USERENV('LANG')
172538   
172539 )
172540 ;
172541 --
172542 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172543 
172544       trace
172545          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
172546          ,p_level    => C_LEVEL_STATEMENT
172547          ,p_module   => l_log_module);
172548 
172549 END IF;
172550 --
172551 
172552 
172553 
172554 --
172555 INSERT INTO xla_diag_sources  --line2
172556 (
172557         event_id
172558       , ledger_id
172559       , sla_ledger_id
172560       , description_language
172561       , object_name
172562       , object_type_code
172563       , line_number
172564       , source_application_id
172565       , source_type_code
172566       , source_code
172567       , source_value
172568       , source_meaning
172569       , created_by
172570       , creation_date
172571       , last_update_date
172572       , last_updated_by
172573       , last_update_login
172574       , program_update_date
172575       , program_application_id
172576       , program_id
172577       , request_id
172578 )
172579 SELECT  event_id
172580       , p_target_ledger_id
172581       , p_sla_ledger_id
172582       , p_language
172583       , object_name
172584       , object_type_code
172585       , line_number
172586       , source_application_id
172587       , source_type_code
172588       , source_code
172589       , SUBSTR(source_value,1,1996)
172590       , SUBSTR(source_meaning ,1,200)
172591       , xla_environment_pkg.g_Usr_Id
172592       , TRUNC(SYSDATE)
172593       , TRUNC(SYSDATE)
172594       , xla_environment_pkg.g_Usr_Id
172595       , xla_environment_pkg.g_Login_Id
172596       , TRUNC(SYSDATE)
172597       , xla_environment_pkg.g_Prog_Appl_Id
172598       , xla_environment_pkg.g_Prog_Id
172599       , xla_environment_pkg.g_Req_Id
172600   FROM (
172601        SELECT xet.event_id                  event_id
172602             , l2.line_number                 line_number
172603             , CASE r
172604                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
172605                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
172606                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
172607                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
172608                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
172609                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
172610                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
172611                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
172612                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
172613                 
172614                ELSE null
172615               END                           object_name
172616             , CASE r
172617                 WHEN 1 THEN 'LINE' 
172618                 WHEN 2 THEN 'LINE' 
172619                 WHEN 3 THEN 'LINE' 
172620                 WHEN 4 THEN 'LINE' 
172621                 WHEN 5 THEN 'LINE' 
172622                 WHEN 6 THEN 'LINE' 
172623                 WHEN 7 THEN 'LINE' 
172624                 WHEN 8 THEN 'LINE' 
172625                 WHEN 9 THEN 'LINE' 
172626                 
172627                 ELSE null
172628               END                           object_type_code
172629             , CASE r
172630                 WHEN 1 THEN '707' 
172631                 WHEN 2 THEN '707' 
172632                 WHEN 3 THEN '707' 
172633                 WHEN 4 THEN '707' 
172634                 WHEN 5 THEN '707' 
172635                 WHEN 6 THEN '707' 
172636                 WHEN 7 THEN '707' 
172637                 WHEN 8 THEN '707' 
172638                 WHEN 9 THEN '707' 
172639                 
172640                 ELSE null
172641               END                           source_application_id
172642             , 'S'             source_type_code
172643             , CASE r
172644                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
172645                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
172646                 WHEN 3 THEN 'CURRENCY_CODE' 
172647                 WHEN 4 THEN 'ENTERED_AMOUNT' 
172648                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
172649                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
172650                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
172651                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
172652                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
172653                 
172654                 ELSE null
172655               END                           source_code
172656             , CASE r
172657                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
172658                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
172659                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
172660                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
172661                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
172662                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
172663                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
172664                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
172665                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
172666                 
172667                 ELSE null
172668               END                           source_value
172669             , null              source_meaning
172670          FROM  xla_events_gt     xet  
172671         , CST_XLA_INV_LINES_V  l2
172672             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
172673         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
172674           AND xet.event_class_code = C_EVENT_CLASS_CODE
172675             AND l2.event_id          = xet.event_id
172676 
172677 )
172678 ;
172679 --
172680 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172681 
172682       trace
172683          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
172684          ,p_level    => C_LEVEL_STATEMENT
172685          ,p_module   => l_log_module);
172686 
172687 END IF;
172688 
172689 
172690 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
172691       trace
172692          (p_msg      => 'END of insert_sources_281'
172693          ,p_level    => C_LEVEL_PROCEDURE
172694          ,p_module   => l_log_module);
172695 END IF;
172696 EXCEPTION
172697   WHEN xla_exceptions_pkg.application_exception THEN
172698       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
172699             trace
172700                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
172701                ,p_level    => C_LEVEL_EXCEPTION
172702                ,p_module   => l_log_module);
172703       END IF;
172704       RAISE;
172705   WHEN OTHERS THEN
172706       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
172707             trace
172708                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
172709                ,p_level    => C_LEVEL_EXCEPTION
172710                ,p_module   => l_log_module);
172711        END IF;
172712        xla_exceptions_pkg.raise_message
172713            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_281');
172714 END insert_sources_281;
172715 --
172716 
172717 ---------------------------------------
172718 --
172719 -- PRIVATE FUNCTION
172720 --         EventClass_281
172721 --
172722 ----------------------------------------
172723 --
172724 FUNCTION EventClass_281
172725        (p_application_id         IN NUMBER
172726        ,p_base_ledger_id         IN NUMBER
172727        ,p_target_ledger_id       IN NUMBER
172728        ,p_language               IN VARCHAR2
172729        ,p_currency_code          IN VARCHAR2
172730        ,p_sla_ledger_id          IN NUMBER
172731        ,p_pad_start_date         IN DATE
172732        ,p_pad_end_date           IN DATE
172733        ,p_primary_ledger_id      IN NUMBER)
172734 RETURN BOOLEAN IS
172735 --
172736 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PURCHASE_ORDER_ALL';
172737 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PURCHASE_ORDER';
172738 
172739 l_calculate_acctd_flag   VARCHAR2(1) :='N';
172740 l_calculate_g_l_flag     VARCHAR2(1) :='N';
172741 --
172742 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172743 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172744 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
172745 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
172746 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172747 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
172748 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
172749 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172750 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
172751 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
172752 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172753 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172754 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172755 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172756 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
172757 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
172758 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
172759 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
172760 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
172761 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
172762 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
172763 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
172764 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
172765 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
172766 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
172767 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
172768 
172769 l_event_id                             NUMBER;
172770 l_previous_event_id                    NUMBER;
172771 l_first_event_id                       NUMBER;
172772 l_last_event_id                        NUMBER;
172773 
172774 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
172775 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
172776 --
172777 --
172778 l_result                    BOOLEAN := TRUE;
172779 l_rows                      NUMBER  := 1000;
172780 l_event_type_name           VARCHAR2(80) := 'All';
172781 l_event_class_name          VARCHAR2(80) := 'PO Delivery into Inventory';
172782 l_description               VARCHAR2(4000);
172783 l_transaction_reversal      NUMBER;
172784 l_ae_header_id              NUMBER;
172785 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
172786 l_log_module                VARCHAR2(240);
172787 --
172788 l_acct_reversal_source      VARCHAR2(30);
172789 l_trx_reversal_source       VARCHAR2(30);
172790 
172791 l_continue_with_lines       BOOLEAN := TRUE;
172792 --
172793 l_acc_rev_gl_date_source    DATE;                      -- 4262811
172794 --
172795 type t_array_event_id is table of number index by binary_integer;
172796 
172797 l_rec_array_event                    t_rec_array_event;
172798 l_null_rec_array_event               t_rec_array_event;
172799 l_array_ae_header_id                 xla_number_array_type;
172800 l_actual_flag                        VARCHAR2(1) := NULL;
172801 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
172802 l_balance_type_code                  VARCHAR2(1) :=NULL;
172803 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
172804 
172805 --
172806 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
172807 --
172808 
172809 TYPE t_array_source_6 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
172810 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
172811 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
172812 TYPE t_array_source_10 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
172813 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
172814 TYPE t_array_source_13 IS TABLE OF PO_DISTS_REF_V.PO_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
172815 TYPE t_array_source_14 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
172816 TYPE t_array_source_16 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
172817 TYPE t_array_source_23 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
172818 TYPE t_array_source_27 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
172819 TYPE t_array_source_28 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
172820 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
172821 
172822 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
172823 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
172824 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
172825 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
172826 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
172827 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
172828 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
172829 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
172830 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
172831 
172832 l_array_source_6              t_array_source_6;
172833 l_array_source_7              t_array_source_7;
172834 l_array_source_8              t_array_source_8;
172835 l_array_source_10              t_array_source_10;
172836 l_array_source_12              t_array_source_12;
172837 l_array_source_12_meaning      t_array_lookup_meaning;
172838 l_array_source_13              t_array_source_13;
172839 l_array_source_14              t_array_source_14;
172840 l_array_source_16              t_array_source_16;
172841 l_array_source_23              t_array_source_23;
172842 l_array_source_27              t_array_source_27;
172843 l_array_source_28              t_array_source_28;
172844 l_array_source_38              t_array_source_38;
172845 l_array_source_38_meaning      t_array_lookup_meaning;
172846 
172847 l_array_source_4      t_array_source_4;
172848 l_array_source_11      t_array_source_11;
172849 l_array_source_15      t_array_source_15;
172850 l_array_source_18      t_array_source_18;
172851 l_array_source_19      t_array_source_19;
172852 l_array_source_20      t_array_source_20;
172853 l_array_source_21      t_array_source_21;
172854 l_array_source_22      t_array_source_22;
172855 l_array_source_24      t_array_source_24;
172856 
172857 --
172858 CURSOR header_cur
172859 IS
172860 SELECT /*+ leading(xet) cardinality(xet,1) */
172861 -- Event Class Code: PURCHASE_ORDER
172862     xet.entity_id
172863    ,xet.legal_entity_id
172864    ,xet.entity_code
172865    ,xet.transaction_number
172866    ,xet.event_id
172867    ,xet.event_class_code
172868    ,xet.event_type_code
172869    ,xet.event_number
172870    ,xet.event_date
172871    ,xet.transaction_date
172872    ,xet.reference_num_1
172873    ,xet.reference_num_2
172874    ,xet.reference_num_3
172875    ,xet.reference_num_4
172876    ,xet.reference_char_1
172877    ,xet.reference_char_2
172878    ,xet.reference_char_3
172879    ,xet.reference_char_4
172880    ,xet.reference_date_1
172881    ,xet.reference_date_2
172882    ,xet.reference_date_3
172883    ,xet.reference_date_4
172884    ,xet.event_created_by
172885    ,xet.budgetary_control_flag 
172886   , h3.APPLIED_TO_APPL_ID    source_6
172887   , h3.APPLIED_TO_DIST_LINK_TYPE    source_7
172888   , h3.APPLIED_TO_ENTITY_CODE    source_8
172889   , h3.APPLIED_TO_PO_DOC_ID    source_10
172890   , h1.DISTRIBUTION_TYPE    source_12
172891   , fvl12.meaning   source_12_meaning
172892   , h4.PO_BUDGET_ACCOUNT    source_13
172893   , h3.ENCUM_REVERSAL_AMOUNT_ENTERED    source_14
172894   , h3.ENCUMBRANCE_REVERSAL_AMOUNT    source_16
172895   , h5.PURCH_ENCUMBRANCE_TYPE_ID    source_23
172896   , h6.CST_ENCUM_UPG_OPTION    source_27
172897   , h3.TXN_PO_DISTRIBUTION_ID    source_28
172898   , h1.TRANSFER_TO_GL_INDICATOR    source_38
172899   , fvl38.meaning   source_38_meaning
172900   FROM xla_events_gt     xet 
172901   , CST_XLA_INV_HEADERS_V  h1
172902   , CST_XLA_INV_REF_V  h3
172903   , PO_DISTS_REF_V  h4
172904   , PO_HEADERS_REF_V  h5
172905   , PSA_CST_XLA_UPG_V  h6
172906   , fnd_lookup_values    fvl12
172907   , fnd_lookup_values    fvl38
172908  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
172909    and xet.event_class_code = C_EVENT_CLASS_CODE
172910    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
172911  AND h3.ref_transaction_id = h1.transaction_id AND h3.txn_po_header_id = h4.po_header_id  (+)  AND h3.txn_po_distribution_id = h4.po_distribution_id (+)  AND h3.txn_po_header_id = h5.po_header_id (+)  AND h3.rcv_transaction_id = h6.transaction_id (+)    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
172912   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
172913   AND fvl12.view_application_id(+) = 700
172914   AND fvl12.language(+)            = USERENV('LANG')
172915      AND fvl38.lookup_type(+)         = 'YES_NO'
172916   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
172917   AND fvl38.view_application_id(+) = 0
172918   AND fvl38.language(+)            = USERENV('LANG')
172919   
172920  ORDER BY event_id
172921 ;
172922 
172923 
172924 --
172925 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
172926 IS
172927 SELECT  /*+ leading(xet) cardinality(xet,1) */
172928 -- Event Class Code: PURCHASE_ORDER
172929     xet.entity_id
172930    ,xet.legal_entity_id
172931    ,xet.entity_code
172932    ,xet.transaction_number
172933    ,xet.event_id
172934    ,xet.event_class_code
172935    ,xet.event_type_code
172936    ,xet.event_number
172937    ,xet.event_date
172938    ,xet.transaction_date
172939    ,xet.reference_num_1
172940    ,xet.reference_num_2
172941    ,xet.reference_num_3
172942    ,xet.reference_num_4
172943    ,xet.reference_char_1
172944    ,xet.reference_char_2
172945    ,xet.reference_char_3
172946    ,xet.reference_char_4
172947    ,xet.reference_date_1
172948    ,xet.reference_date_2
172949    ,xet.reference_date_3
172950    ,xet.reference_date_4
172951    ,xet.event_created_by
172952    ,xet.budgetary_control_flag
172953  , l2.LINE_NUMBER  
172954   , l2.CODE_COMBINATION_ID    source_4
172955   , l2.DISTRIBUTION_IDENTIFIER    source_11
172956   , l2.CURRENCY_CODE    source_15
172957   , l2.ENTERED_AMOUNT    source_18
172958   , l2.CURRENCY_CONVERSION_DATE    source_19
172959   , l2.CURRENCY_CONVERSION_RATE    source_20
172960   , l2.CURRENCY_CONVERSION_TYPE    source_21
172961   , l2.ACCOUNTED_AMOUNT    source_22
172962   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
172963   FROM xla_events_gt     xet 
172964   , CST_XLA_INV_LINES_V  l2
172965  WHERE xet.event_id between x_first_event_id and x_last_event_id
172966    and xet.event_date between p_pad_start_date and p_pad_end_date
172967    and xet.event_class_code = C_EVENT_CLASS_CODE
172968    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
172969 ;
172970 
172971 --
172972 BEGIN
172973 IF g_log_enabled THEN
172974    l_log_module := C_DEFAULT_MODULE||'.EventClass_281';
172975 END IF;
172976 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
172977    trace
172978       (p_msg      => 'BEGIN of EventClass_281'
172979       ,p_level    => C_LEVEL_PROCEDURE
172980       ,p_module   => l_log_module);
172981 END IF;
172982 
172983 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172984    trace
172985       (p_msg      => 'p_application_id = '||p_application_id||
172986                      ' - p_base_ledger_id = '||p_base_ledger_id||
172987                      ' - p_target_ledger_id  = '||p_target_ledger_id||
172988                      ' - p_language = '||p_language||
172989                      ' - p_currency_code = '||p_currency_code||
172990                      ' - p_sla_ledger_id = '||p_sla_ledger_id
172991       ,p_level    => C_LEVEL_STATEMENT
172992       ,p_module   => l_log_module);
172993 END IF;
172994 --
172995 -- initialze arrays
172996 --
172997 g_array_event.DELETE;
172998 l_rec_array_event := l_null_rec_array_event;
172999 --
173000 --------------------------------------
173001 -- 4262811 Initialze MPA Line Number
173002 --------------------------------------
173003 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
173004 
173005 --
173006 
173007 --
173008 OPEN header_cur;
173009 --
173010 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173011    trace
173012    (p_msg      => 'SQL - FETCH header_cur'
173013    ,p_level    => C_LEVEL_STATEMENT
173014    ,p_module   => l_log_module);
173015 END IF;
173016 --
173017 LOOP
173018 FETCH header_cur BULK COLLECT INTO
173019         l_array_entity_id
173020       , l_array_legal_entity_id
173021       , l_array_entity_code
173022       , l_array_transaction_num
173023       , l_array_event_id
173024       , l_array_class_code
173025       , l_array_event_type
173026       , l_array_event_number
173027       , l_array_event_date
173028       , l_array_transaction_date
173029       , l_array_reference_num_1
173030       , l_array_reference_num_2
173031       , l_array_reference_num_3
173032       , l_array_reference_num_4
173033       , l_array_reference_char_1
173034       , l_array_reference_char_2
173035       , l_array_reference_char_3
173036       , l_array_reference_char_4
173037       , l_array_reference_date_1
173038       , l_array_reference_date_2
173039       , l_array_reference_date_3
173040       , l_array_reference_date_4
173041       , l_array_event_created_by
173042       , l_array_budgetary_control_flag 
173043       , l_array_source_6
173044       , l_array_source_7
173045       , l_array_source_8
173046       , l_array_source_10
173047       , l_array_source_12
173048       , l_array_source_12_meaning
173049       , l_array_source_13
173050       , l_array_source_14
173051       , l_array_source_16
173052       , l_array_source_23
173053       , l_array_source_27
173054       , l_array_source_28
173055       , l_array_source_38
173056       , l_array_source_38_meaning
173057       LIMIT l_rows;
173058 --
173059 IF (C_LEVEL_EVENT >= g_log_level) THEN
173060    trace
173061    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
173062    ,p_level    => C_LEVEL_EVENT
173063    ,p_module   => l_log_module);
173064 END IF;
173065 --
173066 EXIT WHEN l_array_entity_id.COUNT = 0;
173067 
173068 -- initialize arrays
173069 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
173070 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
173071 
173072 --
173073 -- Bug 4458708
173074 --
173075 XLA_AE_LINES_PKG.g_LineNumber := 0;
173076 
173077 
173078 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
173079 g_last_hdr_idx := l_array_event_id.LAST;
173080 --
173081 -- loop for the headers. Each iteration is for each header extract row
173082 -- fetched in header cursor
173083 --
173084 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
173085 
173086 --
173087 -- set event info as cache for other routines to refer event attributes
173088 --
173089 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
173090    (p_application_id           => p_application_id
173091    ,p_primary_ledger_id        => p_primary_ledger_id
173092    ,p_base_ledger_id           => p_base_ledger_id
173093    ,p_target_ledger_id         => p_target_ledger_id
173094    ,p_entity_id                => l_array_entity_id(hdr_idx)
173095    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
173096    ,p_entity_code              => l_array_entity_code(hdr_idx)
173097    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
173098    ,p_event_id                 => l_array_event_id(hdr_idx)
173099    ,p_event_class_code         => l_array_class_code(hdr_idx)
173100    ,p_event_type_code          => l_array_event_type(hdr_idx)
173101    ,p_event_number             => l_array_event_number(hdr_idx)
173102    ,p_event_date               => l_array_event_date(hdr_idx)
173103    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
173104    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
173105    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
173106    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
173107    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
173108    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
173109    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
173110    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
173111    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
173112    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
173113    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
173114    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
173115    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
173116    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
173117    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
173118 
173119 --
173120 -- set the status of entry to C_VALID (0)
173121 --
173122 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
173123 
173124 --
173125 -- initialize a row for ae header
173126 --
173127 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
173128 
173129 l_event_id := l_array_event_id(hdr_idx);
173130 
173131 --
173132 -- storing the hdr_idx for event. May be used by line cursor.
173133 --
173134 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
173135 
173136 --
173137 -- store sources from header extract. This can be improved to
173138 -- store only those sources from header extract that may be used in lines
173139 --
173140 
173141 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
173142 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
173143 g_array_event(l_event_id).array_value_char('source_8') := l_array_source_8(hdr_idx);
173144 g_array_event(l_event_id).array_value_num('source_10') := l_array_source_10(hdr_idx);
173145 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
173146 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
173147 g_array_event(l_event_id).array_value_num('source_13') := l_array_source_13(hdr_idx);
173148 g_array_event(l_event_id).array_value_num('source_14') := l_array_source_14(hdr_idx);
173149 g_array_event(l_event_id).array_value_num('source_16') := l_array_source_16(hdr_idx);
173150 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
173151 g_array_event(l_event_id).array_value_char('source_27') := l_array_source_27(hdr_idx);
173152 g_array_event(l_event_id).array_value_num('source_28') := l_array_source_28(hdr_idx);
173153 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
173154 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
173155 
173156 --
173157 -- initilaize the status of ae headers for diffrent balance types
173158 -- the status is initialised to C_NOT_CREATED (2)
173159 --
173160 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
173161 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
173162 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
173163 
173164 --
173165 -- call api to validate and store accounting attributes for header
173166 --
173167 
173168 ------------------------------------------------------------
173169 -- Accrual Reversal : to get date for Standard Source (NONE)
173170 ------------------------------------------------------------
173171 l_acc_rev_gl_date_source := NULL;
173172 
173173      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
173174       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_23');
173175      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
173176       l_rec_acct_attrs.array_date_value(2) := 
173177 xla_ae_sources_pkg.GetSystemSourceDate(
173178    p_source_code           => 'XLA_REFERENCE_DATE_1'
173179  , p_source_type_code      => 'Y'
173180  , p_source_application_id =>  602
173181 );
173182      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
173183       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_38');
173184 
173185 
173186 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
173187 
173188 XLA_AE_HEADER_PKG.SetJeCategoryName;
173189 
173190 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
173191 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
173192 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
173193 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
173194 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
173195 
173196 
173197 -- No header level analytical criteria
173198 
173199 --
173200 --accounting attribute enhancement, bug 3612931
173201 --
173202 l_trx_reversal_source := SUBSTR(NULL, 1,30);
173203 
173204 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
173205    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
173206 
173207    xla_accounting_err_pkg.build_message
173208       (p_appli_s_name            => 'XLA'
173209       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
173210       ,p_token_1                 => 'ACCT_ATTR_NAME'
173211       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
173212       ,p_token_2                 => 'PRODUCT_NAME'
173213       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
173214       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
173215       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
173216       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
173217 
173218 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
173219    --
173220    -- following sets the accounting attributes needed to reverse
173221    -- accounting for a distributeion
173222    --
173223    xla_ae_lines_pkg.SetTrxReversalAttrs
173224       (p_event_id              => l_event_id
173225       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
173226       ,p_trx_reversal_source   => l_trx_reversal_source);
173227 
173228 END IF;
173229 
173230 
173231 ----------------------------------------------------------------
173232 -- 4262811 -  update the header statuses to invalid in need be
173233 ----------------------------------------------------------------
173234 --
173235 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
173236 
173237 
173238   -----------------------------------------------
173239   -- No accrual reversal for the event class/type
173240   -----------------------------------------------
173241 ----------------------------------------------------------------
173242 
173243 --
173244 -- this ends the header loop iteration for one bulk fetch
173245 --
173246 END LOOP;
173247 
173248 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
173249 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
173250 
173251 --
173252 -- insert dummy rows into lines gt table that were created due to
173253 -- transaction reversals
173254 --
173255 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
173256    l_result := XLA_AE_LINES_PKG.InsertLines;
173257 END IF;
173258 
173259 --
173260 -- reset the temp_line_num for each set of events fetched from header
173261 -- cursor rather than doing it for each new event in line cursor
173262 -- Bug 3939231
173263 --
173264 xla_ae_lines_pkg.g_temp_line_num := 0;
173265 
173266 
173267 
173268 --
173269 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
173270 --
173271 --
173272 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173273 
173274       trace
173275          (p_msg      => 'SQL - FETCH line_cur'
173276          ,p_level    => C_LEVEL_STATEMENT
173277          ,p_module   => l_log_module);
173278 
173279 END IF;
173280 --
173281 --
173282 LOOP
173283   --
173284   FETCH line_cur BULK COLLECT INTO
173285         l_array_entity_id
173286       , l_array_legal_entity_id
173287       , l_array_entity_code
173288       , l_array_transaction_num
173289       , l_array_event_id
173290       , l_array_class_code
173291       , l_array_event_type
173292       , l_array_event_number
173293       , l_array_event_date
173294       , l_array_transaction_date
173295       , l_array_reference_num_1
173296       , l_array_reference_num_2
173297       , l_array_reference_num_3
173298       , l_array_reference_num_4
173299       , l_array_reference_char_1
173300       , l_array_reference_char_2
173301       , l_array_reference_char_3
173302       , l_array_reference_char_4
173303       , l_array_reference_date_1
173304       , l_array_reference_date_2
173305       , l_array_reference_date_3
173306       , l_array_reference_date_4
173307       , l_array_event_created_by
173308       , l_array_budgetary_control_flag
173309       , l_array_extract_line_num 
173310       , l_array_source_4
173311       , l_array_source_11
173312       , l_array_source_15
173313       , l_array_source_18
173314       , l_array_source_19
173315       , l_array_source_20
173316       , l_array_source_21
173317       , l_array_source_22
173318       , l_array_source_24
173319       LIMIT l_rows;
173320 
173321   --
173322   IF (C_LEVEL_EVENT >= g_log_level) THEN
173323             trace
173324                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
173325                ,p_level    => C_LEVEL_EVENT
173326                ,p_module   => l_log_module);
173327   END IF;
173328   --
173329   EXIT WHEN l_array_entity_id.count = 0;
173330 
173331   XLA_AE_LINES_PKG.g_rec_lines := null;
173332 
173333 --
173334 -- Bug 4458708
173335 --
173336 XLA_AE_LINES_PKG.g_LineNumber := 0;
173337 --
173338 --
173339 
173340 FOR Idx IN 1..l_array_event_id.count LOOP
173341    --
173342    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
173343    --
173344    l_event_id := l_array_event_id(idx);  -- 5648433
173345 
173346    --
173347    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
173348    --
173349 
173350    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
173351              (g_array_event(l_event_id).array_value_num('header_index'))
173352          ,'N'
173353          ) <> 'Y'
173354    THEN
173355       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173356          trace
173357             (p_msg      => 'Trancaction revesal option is not Y '
173358             ,p_level    => C_LEVEL_STATEMENT
173359             ,p_module   => l_log_module);
173360       END IF;
173361 
173362 --
173363 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
173364 --
173365 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
173366 --
173367 -- set event info as cache for other routines to refer event attributes
173368 --
173369 
173370 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
173371    l_previous_event_id := l_event_id;
173372 
173373    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
173374       (p_application_id           => p_application_id
173375       ,p_primary_ledger_id        => p_primary_ledger_id
173376       ,p_base_ledger_id           => p_base_ledger_id
173377       ,p_target_ledger_id         => p_target_ledger_id
173378       ,p_entity_id                => l_array_entity_id(Idx)
173379       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
173380       ,p_entity_code              => l_array_entity_code(Idx)
173381       ,p_transaction_num          => l_array_transaction_num(Idx)
173382       ,p_event_id                 => l_array_event_id(Idx)
173383       ,p_event_class_code         => l_array_class_code(Idx)
173384       ,p_event_type_code          => l_array_event_type(Idx)
173385       ,p_event_number             => l_array_event_number(Idx)
173386       ,p_event_date               => l_array_event_date(Idx)
173387       ,p_transaction_date         => l_array_transaction_date(Idx)
173388       ,p_reference_num_1          => l_array_reference_num_1(Idx)
173389       ,p_reference_num_2          => l_array_reference_num_2(Idx)
173390       ,p_reference_num_3          => l_array_reference_num_3(Idx)
173391       ,p_reference_num_4          => l_array_reference_num_4(Idx)
173392       ,p_reference_char_1         => l_array_reference_char_1(Idx)
173393       ,p_reference_char_2         => l_array_reference_char_2(Idx)
173394       ,p_reference_char_3         => l_array_reference_char_3(Idx)
173395       ,p_reference_char_4         => l_array_reference_char_4(Idx)
173396       ,p_reference_date_1         => l_array_reference_date_1(Idx)
173397       ,p_reference_date_2         => l_array_reference_date_2(Idx)
173398       ,p_reference_date_3         => l_array_reference_date_3(Idx)
173399       ,p_reference_date_4         => l_array_reference_date_4(Idx)
173400       ,p_event_created_by         => l_array_event_created_by(Idx)
173401       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
173402        --
173403 END IF;
173404 
173405 
173406 
173407 --
173408 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
173409 
173410 l_acct_reversal_source := SUBSTR(NULL, 1,30);
173411 
173412 IF l_continue_with_lines THEN
173413    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
173414       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
173415 
173416       xla_accounting_err_pkg.build_message
173417          (p_appli_s_name            => 'XLA'
173418          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
173419          ,p_token_1                 => 'LINE_NUMBER'
173420          ,p_value_1                 => l_array_extract_line_num(Idx)
173421          ,p_token_2                 => 'PRODUCT_NAME'
173422          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
173423          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
173424          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
173425          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
173426 
173427    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
173428       --
173429       -- following sets the accounting attributes needed to reverse
173430       -- accounting for a distributeion
173431       --
173432 
173433       --
173434       -- 5217187
173435       --
173436       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
173437       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
173438                                        g_array_event(l_event_id).array_value_num('header_index'));
173439       --
173440       --
173441 
173442       -- No reversal code generated
173443 
173444       xla_ae_lines_pkg.SetAcctReversalAttrs
173445          (p_event_id             => l_event_id
173446          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
173447          ,p_calculate_acctd_flag => l_calculate_acctd_flag
173448          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
173449    END IF;
173450 
173451    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
173452        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
173453 
173454 --
173455 AcctLineType_15 (
173456  p_application_id  => p_application_id
173457  ,p_event_id     => l_event_id
173458  ,p_calculate_acctd_flag => l_calculate_acctd_flag
173459  ,p_calculate_g_l_flag => l_calculate_g_l_flag
173460  ,p_actual_flag => l_actual_flag
173461  ,p_balance_type_code => l_balance_type_code
173462  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
173463  
173464  , p_source_4 => l_array_source_4(Idx)
173465  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
173466  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
173467  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
173468  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
173469  , p_source_11 => l_array_source_11(Idx)
173470  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
173471  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
173472  , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
173473  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
173474  , p_source_15 => l_array_source_15(Idx)
173475  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
173476  , p_source_18 => l_array_source_18(Idx)
173477  , p_source_19 => l_array_source_19(Idx)
173478  , p_source_20 => l_array_source_20(Idx)
173479  , p_source_21 => l_array_source_21(Idx)
173480  , p_source_22 => l_array_source_22(Idx)
173481  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
173482  , p_source_24 => l_array_source_24(Idx)
173483  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
173484  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
173485  );
173486 If(l_balance_type_code = 'A') THEN
173487   l_actual_gain_loss_ref := l_gain_or_loss_ref;
173488 END IF;
173489 
173490 --
173491 
173492 
173493 --
173494 AcctLineType_40 (
173495  p_application_id  => p_application_id
173496  ,p_event_id     => l_event_id
173497  ,p_calculate_acctd_flag => l_calculate_acctd_flag
173498  ,p_calculate_g_l_flag => l_calculate_g_l_flag
173499  ,p_actual_flag => l_actual_flag
173500  ,p_balance_type_code => l_balance_type_code
173501  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
173502  
173503  , p_source_4 => l_array_source_4(Idx)
173504  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
173505  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
173506  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
173507  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
173508  , p_source_11 => l_array_source_11(Idx)
173509  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
173510  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
173511  , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
173512  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
173513  , p_source_15 => l_array_source_15(Idx)
173514  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
173515  , p_source_18 => l_array_source_18(Idx)
173516  , p_source_19 => l_array_source_19(Idx)
173517  , p_source_20 => l_array_source_20(Idx)
173518  , p_source_21 => l_array_source_21(Idx)
173519  , p_source_22 => l_array_source_22(Idx)
173520  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
173521  , p_source_24 => l_array_source_24(Idx)
173522  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
173523  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
173524  );
173525 If(l_balance_type_code = 'A') THEN
173526   l_actual_gain_loss_ref := l_gain_or_loss_ref;
173527 END IF;
173528 
173529 --
173530 
173531 
173532 --
173533 AcctLineType_136 (
173534  p_application_id  => p_application_id
173535  ,p_event_id     => l_event_id
173536  ,p_calculate_acctd_flag => l_calculate_acctd_flag
173537  ,p_calculate_g_l_flag => l_calculate_g_l_flag
173538  ,p_actual_flag => l_actual_flag
173539  ,p_balance_type_code => l_balance_type_code
173540  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
173541  
173542  , p_source_4 => l_array_source_4(Idx)
173543  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
173544  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
173545  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
173546  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
173547  , p_source_11 => l_array_source_11(Idx)
173548  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
173549  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
173550  , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
173551  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
173552  , p_source_15 => l_array_source_15(Idx)
173553  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
173554  , p_source_18 => l_array_source_18(Idx)
173555  , p_source_19 => l_array_source_19(Idx)
173556  , p_source_20 => l_array_source_20(Idx)
173557  , p_source_21 => l_array_source_21(Idx)
173558  , p_source_22 => l_array_source_22(Idx)
173559  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
173560  , p_source_24 => l_array_source_24(Idx)
173561  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
173562  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
173563  );
173564 If(l_balance_type_code = 'A') THEN
173565   l_actual_gain_loss_ref := l_gain_or_loss_ref;
173566 END IF;
173567 
173568 --
173569 
173570 
173571 --
173572 AcctLineType_172 (
173573  p_application_id  => p_application_id
173574  ,p_event_id     => l_event_id
173575  ,p_calculate_acctd_flag => l_calculate_acctd_flag
173576  ,p_calculate_g_l_flag => l_calculate_g_l_flag
173577  ,p_actual_flag => l_actual_flag
173578  ,p_balance_type_code => l_balance_type_code
173579  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
173580  
173581  , p_source_4 => l_array_source_4(Idx)
173582  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
173583  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
173584  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
173585  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
173586  , p_source_11 => l_array_source_11(Idx)
173587  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
173588  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
173589  , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
173590  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
173591  , p_source_15 => l_array_source_15(Idx)
173592  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
173593  , p_source_18 => l_array_source_18(Idx)
173594  , p_source_19 => l_array_source_19(Idx)
173595  , p_source_20 => l_array_source_20(Idx)
173596  , p_source_21 => l_array_source_21(Idx)
173597  , p_source_22 => l_array_source_22(Idx)
173598  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
173599  , p_source_24 => l_array_source_24(Idx)
173600  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
173601  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
173602  );
173603 If(l_balance_type_code = 'A') THEN
173604   l_actual_gain_loss_ref := l_gain_or_loss_ref;
173605 END IF;
173606 
173607 --
173608 
173609 
173610 --
173611 AcctLineType_192 (
173612  p_application_id  => p_application_id
173613  ,p_event_id     => l_event_id
173614  ,p_calculate_acctd_flag => l_calculate_acctd_flag
173615  ,p_calculate_g_l_flag => l_calculate_g_l_flag
173616  ,p_actual_flag => l_actual_flag
173617  ,p_balance_type_code => l_balance_type_code
173618  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
173619  
173620  , p_source_4 => l_array_source_4(Idx)
173621  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
173622  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
173623  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
173624  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
173625  , p_source_11 => l_array_source_11(Idx)
173626  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
173627  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
173628  , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
173629  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
173630  , p_source_15 => l_array_source_15(Idx)
173631  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
173632  , p_source_18 => l_array_source_18(Idx)
173633  , p_source_19 => l_array_source_19(Idx)
173634  , p_source_20 => l_array_source_20(Idx)
173635  , p_source_21 => l_array_source_21(Idx)
173636  , p_source_22 => l_array_source_22(Idx)
173637  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
173638  , p_source_24 => l_array_source_24(Idx)
173639  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
173640  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
173641  );
173642 If(l_balance_type_code = 'A') THEN
173643   l_actual_gain_loss_ref := l_gain_or_loss_ref;
173644 END IF;
173645 
173646 --
173647 
173648 
173649 --
173650 AcctLineType_232 (
173651  p_application_id  => p_application_id
173652  ,p_event_id     => l_event_id
173653  ,p_calculate_acctd_flag => l_calculate_acctd_flag
173654  ,p_calculate_g_l_flag => l_calculate_g_l_flag
173655  ,p_actual_flag => l_actual_flag
173656  ,p_balance_type_code => l_balance_type_code
173657  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
173658  
173659  , p_source_4 => l_array_source_4(Idx)
173660  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
173661  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
173662  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
173663  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
173664  , p_source_11 => l_array_source_11(Idx)
173665  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
173666  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
173667  , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
173668  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
173669  , p_source_15 => l_array_source_15(Idx)
173670  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
173671  , p_source_18 => l_array_source_18(Idx)
173672  , p_source_19 => l_array_source_19(Idx)
173673  , p_source_20 => l_array_source_20(Idx)
173674  , p_source_21 => l_array_source_21(Idx)
173675  , p_source_22 => l_array_source_22(Idx)
173676  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
173677  , p_source_24 => l_array_source_24(Idx)
173678  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
173679  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
173680  );
173681 If(l_balance_type_code = 'A') THEN
173682   l_actual_gain_loss_ref := l_gain_or_loss_ref;
173683 END IF;
173684 
173685 --
173686 
173687 
173688 --
173689 AcctLineType_235 (
173690  p_application_id  => p_application_id
173691  ,p_event_id     => l_event_id
173692  ,p_calculate_acctd_flag => l_calculate_acctd_flag
173693  ,p_calculate_g_l_flag => l_calculate_g_l_flag
173694  ,p_actual_flag => l_actual_flag
173695  ,p_balance_type_code => l_balance_type_code
173696  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
173697  
173698  , p_source_4 => l_array_source_4(Idx)
173699  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
173700  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
173701  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
173702  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
173703  , p_source_11 => l_array_source_11(Idx)
173704  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
173705  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
173706  , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
173707  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
173708  , p_source_15 => l_array_source_15(Idx)
173709  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
173710  , p_source_18 => l_array_source_18(Idx)
173711  , p_source_19 => l_array_source_19(Idx)
173712  , p_source_20 => l_array_source_20(Idx)
173713  , p_source_21 => l_array_source_21(Idx)
173714  , p_source_22 => l_array_source_22(Idx)
173715  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
173716  , p_source_24 => l_array_source_24(Idx)
173717  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
173718  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
173719  );
173720 If(l_balance_type_code = 'A') THEN
173721   l_actual_gain_loss_ref := l_gain_or_loss_ref;
173722 END IF;
173723 
173724 --
173725 
173726 
173727 --
173728 AcctLineType_248 (
173729  p_application_id  => p_application_id
173730  ,p_event_id     => l_event_id
173731  ,p_calculate_acctd_flag => l_calculate_acctd_flag
173732  ,p_calculate_g_l_flag => l_calculate_g_l_flag
173733  ,p_actual_flag => l_actual_flag
173734  ,p_balance_type_code => l_balance_type_code
173735  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
173736  
173737  , p_source_4 => l_array_source_4(Idx)
173738  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
173739  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
173740  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
173741  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
173742  , p_source_11 => l_array_source_11(Idx)
173743  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
173744  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
173745  , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
173746  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
173747  , p_source_15 => l_array_source_15(Idx)
173748  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
173749  , p_source_18 => l_array_source_18(Idx)
173750  , p_source_19 => l_array_source_19(Idx)
173751  , p_source_20 => l_array_source_20(Idx)
173752  , p_source_21 => l_array_source_21(Idx)
173753  , p_source_22 => l_array_source_22(Idx)
173754  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
173755  , p_source_24 => l_array_source_24(Idx)
173756  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
173757  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
173758  );
173759 If(l_balance_type_code = 'A') THEN
173760   l_actual_gain_loss_ref := l_gain_or_loss_ref;
173761 END IF;
173762 
173763 --
173764 
173765       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
173766       -- or secondary ledger that has different currency with primary
173767       -- or alc that is calculated by sla
173768       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
173769             (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'))
173770 
173771 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
173772 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
173773           AND (l_actual_flag = 'A')) THEN
173774         XLA_AE_LINES_PKG.CreateGainOrLossLines(
173775           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
173776          ,p_application_id   => p_application_id
173777          ,p_amb_context_code => 'DEFAULT'
173778          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
173779          ,p_event_class_code => C_EVENT_CLASS_CODE
173780          ,p_event_type_code  => C_EVENT_TYPE_CODE
173781          
173782          ,p_gain_ccid        => -1
173783          ,p_loss_ccid        => -1
173784 
173785          ,p_actual_flag      => l_actual_flag
173786          ,p_enc_flag         => null
173787          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
173788          ,p_enc_g_l_ref      => null
173789          );
173790       END IF;
173791    END IF;
173792 END IF;
173793 
173794    ELSE
173795       --
173796       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
173797       --
173798       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173799          trace
173800             (p_msg      => 'Trancaction revesal option is Y'
173801             ,p_level    => C_LEVEL_STATEMENT
173802             ,p_module   => l_log_module);
173803       END IF;
173804    END IF;
173805 
173806 END LOOP;
173807 l_result := XLA_AE_LINES_PKG.InsertLines ;
173808 end loop;
173809 close line_cur;
173810 
173811 
173812 --
173813 -- insert headers into xla_ae_headers_gt table
173814 --
173815 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
173816 
173817 -- insert into errors table here.
173818 
173819 END LOOP;
173820 
173821 --
173822 -- 4865292
173823 --
173824 -- Compare g_hdr_extract_count with event count in
173825 -- CreateHeadersAndLines.
173826 --
173827 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
173828 
173829 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173830    trace (p_msg     => '# rows extracted from header extract objects '
173831                     || ' (running total): '
173832                     || g_hdr_extract_count
173833          ,p_level   => C_LEVEL_STATEMENT
173834          ,p_module  => l_log_module);
173835 END IF;
173836 
173837 CLOSE header_cur;
173838 --
173839 
173840 --
173841 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
173842    trace
173843       (p_msg      => 'END of EventClass_281'
173844       ,p_level    => C_LEVEL_PROCEDURE
173845       ,p_module   => l_log_module);
173846 END IF;
173847 --
173848 RETURN l_result;
173849 EXCEPTION
173850 WHEN xla_exceptions_pkg.application_exception THEN
173851    
173852 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
173853 
173854    
173855 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
173856 
173857    RAISE;
173858 
173859 WHEN NO_DATA_FOUND THEN
173860 
173861 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
173862 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
173863 
173864 FOR header_record IN header_cur
173865 LOOP
173866     l_array_header_events(header_record.event_id) := header_record.event_id;
173867 END LOOP;
173868 
173869 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
173870 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
173871 
173872 fnd_file.put_line(fnd_file.LOG, '                    ');
173873 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
173874 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
173875 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
173876 
173877 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
173878 LOOP
173879 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
173880 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
173881         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
173882 	END IF;
173883 END LOOP;
173884 
173885 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
173886 fnd_file.put_line(fnd_file.LOG, '                    ');
173887 
173888 
173889 xla_exceptions_pkg.raise_message
173890       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_281');
173891 
173892 
173893 WHEN OTHERS THEN
173894    xla_exceptions_pkg.raise_message
173895       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_281');
173896 END EventClass_281;
173897 --
173898 
173899 ---------------------------------------
173900 --
173901 -- PRIVATE PROCEDURE
173902 --         insert_sources_282
173903 --
173904 ----------------------------------------
173905 --
173906 PROCEDURE insert_sources_282(
173907                                 p_target_ledger_id       IN NUMBER
173908                               , p_language               IN VARCHAR2
173909                               , p_sla_ledger_id          IN NUMBER
173910                               , p_pad_start_date         IN DATE
173911                               , p_pad_end_date           IN DATE
173912                          )
173913 IS
173914 
173915 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RCPT_REC_INSP_ALL';
173916 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'RCPT_REC_INSP';
173917 p_apps_owner                   VARCHAR2(30);
173918 l_log_module                   VARCHAR2(240);
173919 BEGIN
173920 IF g_log_enabled THEN
173921       l_log_module := C_DEFAULT_MODULE||'.insert_sources_282';
173922 END IF;
173923 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
173924 
173925       trace
173926          (p_msg      => 'BEGIN of insert_sources_282'
173927          ,p_level    => C_LEVEL_PROCEDURE
173928          ,p_module   => l_log_module);
173929 
173930 END IF;
173931 
173932 -- select APPS owner
173933 SELECT oracle_username
173934   INTO p_apps_owner
173935   FROM fnd_oracle_userid
173936  WHERE read_only_flag = 'U'
173937 ;
173938 
173939 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173940       trace
173941          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
173942                         ' - p_language = '||p_language||
173943                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
173944                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
173945                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
173946                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
173947          ,p_level    => C_LEVEL_STATEMENT
173948          ,p_module   => l_log_module);
173949 END IF;
173950 
173951 
173952 --
173953 INSERT INTO xla_diag_sources --hdr2
173954 (
173955         event_id
173956       , ledger_id
173957       , sla_ledger_id
173958       , description_language
173959       , object_name
173960       , object_type_code
173961       , line_number
173962       , source_application_id
173963       , source_type_code
173964       , source_code
173965       , source_value
173966       , source_meaning
173967       , created_by
173968       , creation_date
173969       , last_update_date
173970       , last_updated_by
173971       , last_update_login
173972       , program_update_date
173973       , program_application_id
173974       , program_id
173975       , request_id
173976 )
173977 SELECT
173978         event_id
173979       , p_target_ledger_id
173980       , p_sla_ledger_id
173981       , p_language
173982       , object_name
173983       , object_type_code
173984       , line_number
173985       , source_application_id
173986       , source_type_code
173987       , source_code
173988       , SUBSTR(source_value ,1,1996)
173989       , SUBSTR(source_meaning ,1,200)
173990       , xla_environment_pkg.g_Usr_Id
173991       , TRUNC(SYSDATE)
173992       , TRUNC(SYSDATE)
173993       , xla_environment_pkg.g_Usr_Id
173994       , xla_environment_pkg.g_Login_Id
173995       , TRUNC(SYSDATE)
173996       , xla_environment_pkg.g_Prog_Appl_Id
173997       , xla_environment_pkg.g_Prog_Id
173998       , xla_environment_pkg.g_Req_Id
173999   FROM (
174000        SELECT xet.event_id                  event_id
174001             , 0                          line_number
174002             , CASE r
174003                WHEN 1 THEN 'CST_XLA_RCV_HEADERS_V' 
174004                 WHEN 2 THEN 'CST_XLA_RCV_HEADERS_V' 
174005                 WHEN 3 THEN 'CST_XLA_RCV_HEADERS_V' 
174006                 WHEN 4 THEN 'CST_XLA_RCV_HEADERS_V' 
174007                 WHEN 5 THEN 'CST_XLA_RCV_HEADERS_V' 
174008                 WHEN 6 THEN 'CST_XLA_RCV_HEADERS_V' 
174009                 
174010                ELSE null
174011               END                           object_name
174012             , CASE r
174013                 WHEN 1 THEN 'HEADER' 
174014                 WHEN 2 THEN 'HEADER' 
174015                 WHEN 3 THEN 'HEADER' 
174016                 WHEN 4 THEN 'HEADER' 
174017                 WHEN 5 THEN 'HEADER' 
174018                 WHEN 6 THEN 'HEADER' 
174019                 
174020                 ELSE null
174021               END                           object_type_code
174022             , CASE r
174023                 WHEN 1 THEN '707' 
174024                 WHEN 2 THEN '707' 
174025                 WHEN 3 THEN '707' 
174026                 WHEN 4 THEN '707' 
174027                 WHEN 5 THEN '707' 
174028                 WHEN 6 THEN '707' 
174029                 
174030                 ELSE null
174031               END                           source_application_id
174032             , 'S'             source_type_code
174033             , CASE r
174034                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
174035                 WHEN 2 THEN 'CURRENCY_CODE' 
174036                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
174037                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
174038                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
174039                 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR' 
174040                 
174041                 ELSE null
174042               END                           source_code
174043             , CASE r
174044                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
174045                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
174046                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
174047                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
174048                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
174049                 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
174050                 
174051                 ELSE null
174052               END                           source_value
174053             , CASE r
174054                 WHEN 1 THEN fvl12.meaning
174055                 WHEN 6 THEN fvl38.meaning
174056                 
174057                 ELSE null
174058               END               source_meaning
174059          FROM xla_events_gt     xet  
174060       , CST_XLA_RCV_HEADERS_V  h1
174061   , fnd_lookup_values    fvl12
174062   , fnd_lookup_values    fvl38
174063              ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
174064          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
174065            AND xet.event_class_code = C_EVENT_CLASS_CODE
174066               AND h1.event_id = xet.event_id
174067    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
174068   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
174069   AND fvl12.view_application_id(+) = 700
174070   AND fvl12.language(+)            = USERENV('LANG')
174071      AND fvl38.lookup_type(+)         = 'YES_NO'
174072   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
174073   AND fvl38.view_application_id(+) = 0
174074   AND fvl38.language(+)            = USERENV('LANG')
174075   
174076 )
174077 ;
174078 --
174079 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174080 
174081       trace
174082          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
174083          ,p_level    => C_LEVEL_STATEMENT
174084          ,p_module   => l_log_module);
174085 
174086 END IF;
174087 --
174088 
174089 
174090 
174091 --
174092 INSERT INTO xla_diag_sources  --line2
174093 (
174094         event_id
174095       , ledger_id
174096       , sla_ledger_id
174097       , description_language
174098       , object_name
174099       , object_type_code
174100       , line_number
174101       , source_application_id
174102       , source_type_code
174103       , source_code
174104       , source_value
174105       , source_meaning
174106       , created_by
174107       , creation_date
174108       , last_update_date
174109       , last_updated_by
174110       , last_update_login
174111       , program_update_date
174112       , program_application_id
174113       , program_id
174114       , request_id
174115 )
174116 SELECT  event_id
174117       , p_target_ledger_id
174118       , p_sla_ledger_id
174119       , p_language
174120       , object_name
174121       , object_type_code
174122       , line_number
174123       , source_application_id
174124       , source_type_code
174125       , source_code
174126       , SUBSTR(source_value,1,1996)
174127       , SUBSTR(source_meaning ,1,200)
174128       , xla_environment_pkg.g_Usr_Id
174129       , TRUNC(SYSDATE)
174130       , TRUNC(SYSDATE)
174131       , xla_environment_pkg.g_Usr_Id
174132       , xla_environment_pkg.g_Login_Id
174133       , TRUNC(SYSDATE)
174134       , xla_environment_pkg.g_Prog_Appl_Id
174135       , xla_environment_pkg.g_Prog_Id
174136       , xla_environment_pkg.g_Req_Id
174137   FROM (
174138        SELECT xet.event_id                  event_id
174139             , l2.line_number                 line_number
174140             , CASE r
174141                WHEN 1 THEN 'CST_XLA_RCV_LINES_V' 
174142                 WHEN 2 THEN 'CST_XLA_RCV_LINES_V' 
174143                 WHEN 3 THEN 'CST_XLA_RCV_LINES_V' 
174144                 WHEN 4 THEN 'CST_XLA_RCV_LINES_V' 
174145                 WHEN 5 THEN 'CST_XLA_RCV_LINES_V' 
174146                 
174147                ELSE null
174148               END                           object_name
174149             , CASE r
174150                 WHEN 1 THEN 'LINE' 
174151                 WHEN 2 THEN 'LINE' 
174152                 WHEN 3 THEN 'LINE' 
174153                 WHEN 4 THEN 'LINE' 
174154                 WHEN 5 THEN 'LINE' 
174155                 
174156                 ELSE null
174157               END                           object_type_code
174158             , CASE r
174159                 WHEN 1 THEN '707' 
174160                 WHEN 2 THEN '707' 
174161                 WHEN 3 THEN '707' 
174162                 WHEN 4 THEN '707' 
174163                 WHEN 5 THEN '707' 
174164                 
174165                 ELSE null
174166               END                           source_application_id
174167             , 'S'             source_type_code
174168             , CASE r
174169                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
174170                 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE' 
174171                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
174172                 WHEN 4 THEN 'ENTERED_AMOUNT' 
174173                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
174174                 
174175                 ELSE null
174176               END                           source_code
174177             , CASE r
174178                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
174179                 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
174180                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
174181                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
174182                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
174183                 
174184                 ELSE null
174185               END                           source_value
174186             , null              source_meaning
174187          FROM  xla_events_gt     xet  
174188         , CST_XLA_RCV_LINES_V  l2
174189             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
174190         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
174191           AND xet.event_class_code = C_EVENT_CLASS_CODE
174192             AND l2.event_id          = xet.event_id
174193 
174194 )
174195 ;
174196 --
174197 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174198 
174199       trace
174200          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
174201          ,p_level    => C_LEVEL_STATEMENT
174202          ,p_module   => l_log_module);
174203 
174204 END IF;
174205 
174206 
174207 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
174208       trace
174209          (p_msg      => 'END of insert_sources_282'
174210          ,p_level    => C_LEVEL_PROCEDURE
174211          ,p_module   => l_log_module);
174212 END IF;
174213 EXCEPTION
174214   WHEN xla_exceptions_pkg.application_exception THEN
174215       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
174216             trace
174217                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
174218                ,p_level    => C_LEVEL_EXCEPTION
174219                ,p_module   => l_log_module);
174220       END IF;
174221       RAISE;
174222   WHEN OTHERS THEN
174223       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
174224             trace
174225                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
174226                ,p_level    => C_LEVEL_EXCEPTION
174227                ,p_module   => l_log_module);
174228        END IF;
174229        xla_exceptions_pkg.raise_message
174230            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_282');
174231 END insert_sources_282;
174232 --
174233 
174234 ---------------------------------------
174235 --
174236 -- PRIVATE FUNCTION
174237 --         EventClass_282
174238 --
174239 ----------------------------------------
174240 --
174241 FUNCTION EventClass_282
174242        (p_application_id         IN NUMBER
174243        ,p_base_ledger_id         IN NUMBER
174244        ,p_target_ledger_id       IN NUMBER
174245        ,p_language               IN VARCHAR2
174246        ,p_currency_code          IN VARCHAR2
174247        ,p_sla_ledger_id          IN NUMBER
174248        ,p_pad_start_date         IN DATE
174249        ,p_pad_end_date           IN DATE
174250        ,p_primary_ledger_id      IN NUMBER)
174251 RETURN BOOLEAN IS
174252 --
174253 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RCPT_REC_INSP_ALL';
174254 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'RCPT_REC_INSP';
174255 
174256 l_calculate_acctd_flag   VARCHAR2(1) :='N';
174257 l_calculate_g_l_flag     VARCHAR2(1) :='N';
174258 --
174259 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174260 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174261 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
174262 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
174263 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174264 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
174265 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
174266 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174267 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174268 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174269 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174270 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174271 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174272 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174273 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
174274 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
174275 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
174276 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
174277 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174278 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174279 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174280 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174281 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
174282 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
174283 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
174284 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
174285 
174286 l_event_id                             NUMBER;
174287 l_previous_event_id                    NUMBER;
174288 l_first_event_id                       NUMBER;
174289 l_last_event_id                        NUMBER;
174290 
174291 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
174292 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
174293 --
174294 --
174295 l_result                    BOOLEAN := TRUE;
174296 l_rows                      NUMBER  := 1000;
174297 l_event_type_name           VARCHAR2(80) := 'All';
174298 l_event_class_name          VARCHAR2(80) := 'Receipt into Receiving Inspection';
174299 l_description               VARCHAR2(4000);
174300 l_transaction_reversal      NUMBER;
174301 l_ae_header_id              NUMBER;
174302 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
174303 l_log_module                VARCHAR2(240);
174304 --
174305 l_acct_reversal_source      VARCHAR2(30);
174306 l_trx_reversal_source       VARCHAR2(30);
174307 
174308 l_continue_with_lines       BOOLEAN := TRUE;
174309 --
174310 l_acc_rev_gl_date_source    DATE;                      -- 4262811
174311 --
174312 type t_array_event_id is table of number index by binary_integer;
174313 
174314 l_rec_array_event                    t_rec_array_event;
174315 l_null_rec_array_event               t_rec_array_event;
174316 l_array_ae_header_id                 xla_number_array_type;
174317 l_actual_flag                        VARCHAR2(1) := NULL;
174318 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
174319 l_balance_type_code                  VARCHAR2(1) :=NULL;
174320 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
174321 
174322 --
174323 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
174324 --
174325 
174326 TYPE t_array_source_12 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
174327 TYPE t_array_source_15 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
174328 TYPE t_array_source_19 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
174329 TYPE t_array_source_20 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
174330 TYPE t_array_source_21 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
174331 TYPE t_array_source_38 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
174332 
174333 TYPE t_array_source_4 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
174334 TYPE t_array_source_5 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
174335 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
174336 TYPE t_array_source_18 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
174337 TYPE t_array_source_22 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
174338 
174339 l_array_source_12              t_array_source_12;
174340 l_array_source_12_meaning      t_array_lookup_meaning;
174341 l_array_source_15              t_array_source_15;
174342 l_array_source_19              t_array_source_19;
174343 l_array_source_20              t_array_source_20;
174344 l_array_source_21              t_array_source_21;
174345 l_array_source_38              t_array_source_38;
174346 l_array_source_38_meaning      t_array_lookup_meaning;
174347 
174348 l_array_source_4      t_array_source_4;
174349 l_array_source_5      t_array_source_5;
174350 l_array_source_11      t_array_source_11;
174351 l_array_source_18      t_array_source_18;
174352 l_array_source_22      t_array_source_22;
174353 
174354 --
174355 CURSOR header_cur
174356 IS
174357 SELECT /*+ leading(xet) cardinality(xet,1) */
174358 -- Event Class Code: RCPT_REC_INSP
174359     xet.entity_id
174360    ,xet.legal_entity_id
174361    ,xet.entity_code
174362    ,xet.transaction_number
174363    ,xet.event_id
174364    ,xet.event_class_code
174365    ,xet.event_type_code
174366    ,xet.event_number
174367    ,xet.event_date
174368    ,xet.transaction_date
174369    ,xet.reference_num_1
174370    ,xet.reference_num_2
174371    ,xet.reference_num_3
174372    ,xet.reference_num_4
174373    ,xet.reference_char_1
174374    ,xet.reference_char_2
174375    ,xet.reference_char_3
174376    ,xet.reference_char_4
174377    ,xet.reference_date_1
174378    ,xet.reference_date_2
174379    ,xet.reference_date_3
174380    ,xet.reference_date_4
174381    ,xet.event_created_by
174382    ,xet.budgetary_control_flag 
174383   , h1.DISTRIBUTION_TYPE    source_12
174384   , fvl12.meaning   source_12_meaning
174385   , h1.CURRENCY_CODE    source_15
174386   , h1.CURRENCY_CONVERSION_DATE    source_19
174387   , h1.CURRENCY_CONVERSION_RATE    source_20
174388   , h1.CURRENCY_CONVERSION_TYPE    source_21
174389   , h1.TRANSFER_TO_GL_INDICATOR    source_38
174390   , fvl38.meaning   source_38_meaning
174391   FROM xla_events_gt     xet 
174392   , CST_XLA_RCV_HEADERS_V  h1
174393   , fnd_lookup_values    fvl12
174394   , fnd_lookup_values    fvl38
174395  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
174396    and xet.event_class_code = C_EVENT_CLASS_CODE
174397    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
174398    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
174399   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
174400   AND fvl12.view_application_id(+) = 700
174401   AND fvl12.language(+)            = USERENV('LANG')
174402      AND fvl38.lookup_type(+)         = 'YES_NO'
174403   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
174404   AND fvl38.view_application_id(+) = 0
174405   AND fvl38.language(+)            = USERENV('LANG')
174406   
174407  ORDER BY event_id
174408 ;
174409 
174410 
174411 --
174412 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
174413 IS
174414 SELECT  /*+ leading(xet) cardinality(xet,1) */
174415 -- Event Class Code: RCPT_REC_INSP
174416     xet.entity_id
174417    ,xet.legal_entity_id
174418    ,xet.entity_code
174419    ,xet.transaction_number
174420    ,xet.event_id
174421    ,xet.event_class_code
174422    ,xet.event_type_code
174423    ,xet.event_number
174424    ,xet.event_date
174425    ,xet.transaction_date
174426    ,xet.reference_num_1
174427    ,xet.reference_num_2
174428    ,xet.reference_num_3
174429    ,xet.reference_num_4
174430    ,xet.reference_char_1
174431    ,xet.reference_char_2
174432    ,xet.reference_char_3
174433    ,xet.reference_char_4
174434    ,xet.reference_date_1
174435    ,xet.reference_date_2
174436    ,xet.reference_date_3
174437    ,xet.reference_date_4
174438    ,xet.event_created_by
174439    ,xet.budgetary_control_flag
174440  , l2.LINE_NUMBER  
174441   , l2.CODE_COMBINATION_ID    source_4
174442   , l2.RCV_ACCOUNTING_LINE_TYPE    source_5
174443   , l2.DISTRIBUTION_IDENTIFIER    source_11
174444   , l2.ENTERED_AMOUNT    source_18
174445   , l2.ACCOUNTED_AMOUNT    source_22
174446   FROM xla_events_gt     xet 
174447   , CST_XLA_RCV_LINES_V  l2
174448  WHERE xet.event_id between x_first_event_id and x_last_event_id
174449    and xet.event_date between p_pad_start_date and p_pad_end_date
174450    and xet.event_class_code = C_EVENT_CLASS_CODE
174451    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
174452 ;
174453 
174454 --
174455 BEGIN
174456 IF g_log_enabled THEN
174457    l_log_module := C_DEFAULT_MODULE||'.EventClass_282';
174458 END IF;
174459 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
174460    trace
174461       (p_msg      => 'BEGIN of EventClass_282'
174462       ,p_level    => C_LEVEL_PROCEDURE
174463       ,p_module   => l_log_module);
174464 END IF;
174465 
174466 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174467    trace
174468       (p_msg      => 'p_application_id = '||p_application_id||
174469                      ' - p_base_ledger_id = '||p_base_ledger_id||
174470                      ' - p_target_ledger_id  = '||p_target_ledger_id||
174471                      ' - p_language = '||p_language||
174472                      ' - p_currency_code = '||p_currency_code||
174473                      ' - p_sla_ledger_id = '||p_sla_ledger_id
174474       ,p_level    => C_LEVEL_STATEMENT
174475       ,p_module   => l_log_module);
174476 END IF;
174477 --
174478 -- initialze arrays
174479 --
174480 g_array_event.DELETE;
174481 l_rec_array_event := l_null_rec_array_event;
174482 --
174483 --------------------------------------
174484 -- 4262811 Initialze MPA Line Number
174485 --------------------------------------
174486 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
174487 
174488 --
174489 
174490 --
174491 OPEN header_cur;
174492 --
174493 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174494    trace
174495    (p_msg      => 'SQL - FETCH header_cur'
174496    ,p_level    => C_LEVEL_STATEMENT
174497    ,p_module   => l_log_module);
174498 END IF;
174499 --
174500 LOOP
174501 FETCH header_cur BULK COLLECT INTO
174502         l_array_entity_id
174503       , l_array_legal_entity_id
174504       , l_array_entity_code
174505       , l_array_transaction_num
174506       , l_array_event_id
174507       , l_array_class_code
174508       , l_array_event_type
174509       , l_array_event_number
174510       , l_array_event_date
174511       , l_array_transaction_date
174512       , l_array_reference_num_1
174513       , l_array_reference_num_2
174514       , l_array_reference_num_3
174515       , l_array_reference_num_4
174516       , l_array_reference_char_1
174517       , l_array_reference_char_2
174518       , l_array_reference_char_3
174519       , l_array_reference_char_4
174520       , l_array_reference_date_1
174521       , l_array_reference_date_2
174522       , l_array_reference_date_3
174523       , l_array_reference_date_4
174524       , l_array_event_created_by
174525       , l_array_budgetary_control_flag 
174526       , l_array_source_12
174527       , l_array_source_12_meaning
174528       , l_array_source_15
174529       , l_array_source_19
174530       , l_array_source_20
174531       , l_array_source_21
174532       , l_array_source_38
174533       , l_array_source_38_meaning
174534       LIMIT l_rows;
174535 --
174536 IF (C_LEVEL_EVENT >= g_log_level) THEN
174537    trace
174538    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
174539    ,p_level    => C_LEVEL_EVENT
174540    ,p_module   => l_log_module);
174541 END IF;
174542 --
174543 EXIT WHEN l_array_entity_id.COUNT = 0;
174544 
174545 -- initialize arrays
174546 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
174547 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
174548 
174549 --
174550 -- Bug 4458708
174551 --
174552 XLA_AE_LINES_PKG.g_LineNumber := 0;
174553 
174554 
174555 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
174556 g_last_hdr_idx := l_array_event_id.LAST;
174557 --
174558 -- loop for the headers. Each iteration is for each header extract row
174559 -- fetched in header cursor
174560 --
174561 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
174562 
174563 --
174564 -- set event info as cache for other routines to refer event attributes
174565 --
174566 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
174567    (p_application_id           => p_application_id
174568    ,p_primary_ledger_id        => p_primary_ledger_id
174569    ,p_base_ledger_id           => p_base_ledger_id
174570    ,p_target_ledger_id         => p_target_ledger_id
174571    ,p_entity_id                => l_array_entity_id(hdr_idx)
174572    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
174573    ,p_entity_code              => l_array_entity_code(hdr_idx)
174574    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
174575    ,p_event_id                 => l_array_event_id(hdr_idx)
174576    ,p_event_class_code         => l_array_class_code(hdr_idx)
174577    ,p_event_type_code          => l_array_event_type(hdr_idx)
174578    ,p_event_number             => l_array_event_number(hdr_idx)
174579    ,p_event_date               => l_array_event_date(hdr_idx)
174580    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
174581    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
174582    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
174583    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
174584    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
174585    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
174586    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
174587    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
174588    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
174589    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
174590    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
174591    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
174592    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
174593    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
174594    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
174595 
174596 --
174597 -- set the status of entry to C_VALID (0)
174598 --
174599 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
174600 
174601 --
174602 -- initialize a row for ae header
174603 --
174604 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
174605 
174606 l_event_id := l_array_event_id(hdr_idx);
174607 
174608 --
174609 -- storing the hdr_idx for event. May be used by line cursor.
174610 --
174611 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
174612 
174613 --
174614 -- store sources from header extract. This can be improved to
174615 -- store only those sources from header extract that may be used in lines
174616 --
174617 
174618 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
174619 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
174620 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
174621 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
174622 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
174623 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
174624 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
174625 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
174626 
174627 --
174628 -- initilaize the status of ae headers for diffrent balance types
174629 -- the status is initialised to C_NOT_CREATED (2)
174630 --
174631 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
174632 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
174633 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
174634 
174635 --
174636 -- call api to validate and store accounting attributes for header
174637 --
174638 
174639 ------------------------------------------------------------
174640 -- Accrual Reversal : to get date for Standard Source (NONE)
174641 ------------------------------------------------------------
174642 l_acc_rev_gl_date_source := NULL;
174643 
174644      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
174645       l_rec_acct_attrs.array_date_value(1) := 
174646 xla_ae_sources_pkg.GetSystemSourceDate(
174647    p_source_code           => 'XLA_REFERENCE_DATE_1'
174648  , p_source_type_code      => 'Y'
174649  , p_source_application_id =>  602
174650 );
174651      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
174652       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
174653 
174654 
174655 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
174656 
174657 XLA_AE_HEADER_PKG.SetJeCategoryName;
174658 
174659 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
174660 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
174661 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
174662 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
174663 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
174664 
174665 
174666 -- No header level analytical criteria
174667 
174668 --
174669 --accounting attribute enhancement, bug 3612931
174670 --
174671 l_trx_reversal_source := SUBSTR(NULL, 1,30);
174672 
174673 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
174674    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
174675 
174676    xla_accounting_err_pkg.build_message
174677       (p_appli_s_name            => 'XLA'
174678       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
174679       ,p_token_1                 => 'ACCT_ATTR_NAME'
174680       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
174681       ,p_token_2                 => 'PRODUCT_NAME'
174682       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
174683       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
174684       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
174685       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
174686 
174687 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
174688    --
174689    -- following sets the accounting attributes needed to reverse
174690    -- accounting for a distributeion
174691    --
174692    xla_ae_lines_pkg.SetTrxReversalAttrs
174693       (p_event_id              => l_event_id
174694       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
174695       ,p_trx_reversal_source   => l_trx_reversal_source);
174696 
174697 END IF;
174698 
174699 
174700 ----------------------------------------------------------------
174701 -- 4262811 -  update the header statuses to invalid in need be
174702 ----------------------------------------------------------------
174703 --
174704 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
174705 
174706 
174707   -----------------------------------------------
174708   -- No accrual reversal for the event class/type
174709   -----------------------------------------------
174710 ----------------------------------------------------------------
174711 
174712 --
174713 -- this ends the header loop iteration for one bulk fetch
174714 --
174715 END LOOP;
174716 
174717 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
174718 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
174719 
174720 --
174721 -- insert dummy rows into lines gt table that were created due to
174722 -- transaction reversals
174723 --
174724 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
174725    l_result := XLA_AE_LINES_PKG.InsertLines;
174726 END IF;
174727 
174728 --
174729 -- reset the temp_line_num for each set of events fetched from header
174730 -- cursor rather than doing it for each new event in line cursor
174731 -- Bug 3939231
174732 --
174733 xla_ae_lines_pkg.g_temp_line_num := 0;
174734 
174735 
174736 
174737 --
174738 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
174739 --
174740 --
174741 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174742 
174743       trace
174744          (p_msg      => 'SQL - FETCH line_cur'
174745          ,p_level    => C_LEVEL_STATEMENT
174746          ,p_module   => l_log_module);
174747 
174748 END IF;
174749 --
174750 --
174751 LOOP
174752   --
174753   FETCH line_cur BULK COLLECT INTO
174754         l_array_entity_id
174755       , l_array_legal_entity_id
174756       , l_array_entity_code
174757       , l_array_transaction_num
174758       , l_array_event_id
174759       , l_array_class_code
174760       , l_array_event_type
174761       , l_array_event_number
174762       , l_array_event_date
174763       , l_array_transaction_date
174764       , l_array_reference_num_1
174765       , l_array_reference_num_2
174766       , l_array_reference_num_3
174767       , l_array_reference_num_4
174768       , l_array_reference_char_1
174769       , l_array_reference_char_2
174770       , l_array_reference_char_3
174771       , l_array_reference_char_4
174772       , l_array_reference_date_1
174773       , l_array_reference_date_2
174774       , l_array_reference_date_3
174775       , l_array_reference_date_4
174776       , l_array_event_created_by
174777       , l_array_budgetary_control_flag
174778       , l_array_extract_line_num 
174779       , l_array_source_4
174780       , l_array_source_5
174781       , l_array_source_11
174782       , l_array_source_18
174783       , l_array_source_22
174784       LIMIT l_rows;
174785 
174786   --
174787   IF (C_LEVEL_EVENT >= g_log_level) THEN
174788             trace
174789                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
174790                ,p_level    => C_LEVEL_EVENT
174791                ,p_module   => l_log_module);
174792   END IF;
174793   --
174794   EXIT WHEN l_array_entity_id.count = 0;
174795 
174796   XLA_AE_LINES_PKG.g_rec_lines := null;
174797 
174798 --
174799 -- Bug 4458708
174800 --
174801 XLA_AE_LINES_PKG.g_LineNumber := 0;
174802 --
174803 --
174804 
174805 FOR Idx IN 1..l_array_event_id.count LOOP
174806    --
174807    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
174808    --
174809    l_event_id := l_array_event_id(idx);  -- 5648433
174810 
174811    --
174812    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
174813    --
174814 
174815    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
174816              (g_array_event(l_event_id).array_value_num('header_index'))
174817          ,'N'
174818          ) <> 'Y'
174819    THEN
174820       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174821          trace
174822             (p_msg      => 'Trancaction revesal option is not Y '
174823             ,p_level    => C_LEVEL_STATEMENT
174824             ,p_module   => l_log_module);
174825       END IF;
174826 
174827 --
174828 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
174829 --
174830 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
174831 --
174832 -- set event info as cache for other routines to refer event attributes
174833 --
174834 
174835 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
174836    l_previous_event_id := l_event_id;
174837 
174838    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
174839       (p_application_id           => p_application_id
174840       ,p_primary_ledger_id        => p_primary_ledger_id
174841       ,p_base_ledger_id           => p_base_ledger_id
174842       ,p_target_ledger_id         => p_target_ledger_id
174843       ,p_entity_id                => l_array_entity_id(Idx)
174844       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
174845       ,p_entity_code              => l_array_entity_code(Idx)
174846       ,p_transaction_num          => l_array_transaction_num(Idx)
174847       ,p_event_id                 => l_array_event_id(Idx)
174848       ,p_event_class_code         => l_array_class_code(Idx)
174849       ,p_event_type_code          => l_array_event_type(Idx)
174850       ,p_event_number             => l_array_event_number(Idx)
174851       ,p_event_date               => l_array_event_date(Idx)
174852       ,p_transaction_date         => l_array_transaction_date(Idx)
174853       ,p_reference_num_1          => l_array_reference_num_1(Idx)
174854       ,p_reference_num_2          => l_array_reference_num_2(Idx)
174855       ,p_reference_num_3          => l_array_reference_num_3(Idx)
174856       ,p_reference_num_4          => l_array_reference_num_4(Idx)
174857       ,p_reference_char_1         => l_array_reference_char_1(Idx)
174858       ,p_reference_char_2         => l_array_reference_char_2(Idx)
174859       ,p_reference_char_3         => l_array_reference_char_3(Idx)
174860       ,p_reference_char_4         => l_array_reference_char_4(Idx)
174861       ,p_reference_date_1         => l_array_reference_date_1(Idx)
174862       ,p_reference_date_2         => l_array_reference_date_2(Idx)
174863       ,p_reference_date_3         => l_array_reference_date_3(Idx)
174864       ,p_reference_date_4         => l_array_reference_date_4(Idx)
174865       ,p_event_created_by         => l_array_event_created_by(Idx)
174866       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
174867        --
174868 END IF;
174869 
174870 
174871 
174872 --
174873 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
174874 
174875 l_acct_reversal_source := SUBSTR(NULL, 1,30);
174876 
174877 IF l_continue_with_lines THEN
174878    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
174879       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
174880 
174881       xla_accounting_err_pkg.build_message
174882          (p_appli_s_name            => 'XLA'
174883          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
174884          ,p_token_1                 => 'LINE_NUMBER'
174885          ,p_value_1                 => l_array_extract_line_num(Idx)
174886          ,p_token_2                 => 'PRODUCT_NAME'
174887          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
174888          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
174889          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
174890          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
174891 
174892    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
174893       --
174894       -- following sets the accounting attributes needed to reverse
174895       -- accounting for a distributeion
174896       --
174897 
174898       --
174899       -- 5217187
174900       --
174901       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
174902       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
174903                                        g_array_event(l_event_id).array_value_num('header_index'));
174904       --
174905       --
174906 
174907       -- No reversal code generated
174908 
174909       xla_ae_lines_pkg.SetAcctReversalAttrs
174910          (p_event_id             => l_event_id
174911          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
174912          ,p_calculate_acctd_flag => l_calculate_acctd_flag
174913          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
174914    END IF;
174915 
174916    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
174917        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
174918 
174919 --
174920 AcctLineType_10 (
174921  p_application_id  => p_application_id
174922  ,p_event_id     => l_event_id
174923  ,p_calculate_acctd_flag => l_calculate_acctd_flag
174924  ,p_calculate_g_l_flag => l_calculate_g_l_flag
174925  ,p_actual_flag => l_actual_flag
174926  ,p_balance_type_code => l_balance_type_code
174927  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
174928  
174929  , p_source_4 => l_array_source_4(Idx)
174930  , p_source_5 => l_array_source_5(Idx)
174931  , p_source_11 => l_array_source_11(Idx)
174932  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
174933  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
174934  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
174935  , p_source_18 => l_array_source_18(Idx)
174936  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
174937  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
174938  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
174939  , p_source_22 => l_array_source_22(Idx)
174940  );
174941 If(l_balance_type_code = 'A') THEN
174942   l_actual_gain_loss_ref := l_gain_or_loss_ref;
174943 END IF;
174944 
174945 --
174946 
174947 
174948 --
174949 AcctLineType_14 (
174950  p_application_id  => p_application_id
174951  ,p_event_id     => l_event_id
174952  ,p_calculate_acctd_flag => l_calculate_acctd_flag
174953  ,p_calculate_g_l_flag => l_calculate_g_l_flag
174954  ,p_actual_flag => l_actual_flag
174955  ,p_balance_type_code => l_balance_type_code
174956  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
174957  
174958  , p_source_4 => l_array_source_4(Idx)
174959  , p_source_5 => l_array_source_5(Idx)
174960  , p_source_11 => l_array_source_11(Idx)
174961  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
174962  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
174963  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
174964  , p_source_18 => l_array_source_18(Idx)
174965  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
174966  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
174967  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
174968  , p_source_22 => l_array_source_22(Idx)
174969  );
174970 If(l_balance_type_code = 'A') THEN
174971   l_actual_gain_loss_ref := l_gain_or_loss_ref;
174972 END IF;
174973 
174974 --
174975 
174976 
174977 --
174978 AcctLineType_57 (
174979  p_application_id  => p_application_id
174980  ,p_event_id     => l_event_id
174981  ,p_calculate_acctd_flag => l_calculate_acctd_flag
174982  ,p_calculate_g_l_flag => l_calculate_g_l_flag
174983  ,p_actual_flag => l_actual_flag
174984  ,p_balance_type_code => l_balance_type_code
174985  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
174986  
174987  , p_source_4 => l_array_source_4(Idx)
174988  , p_source_5 => l_array_source_5(Idx)
174989  , p_source_11 => l_array_source_11(Idx)
174990  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
174991  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
174992  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
174993  , p_source_18 => l_array_source_18(Idx)
174994  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
174995  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
174996  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
174997  , p_source_22 => l_array_source_22(Idx)
174998  );
174999 If(l_balance_type_code = 'A') THEN
175000   l_actual_gain_loss_ref := l_gain_or_loss_ref;
175001 END IF;
175002 
175003 --
175004 
175005 
175006 --
175007 AcctLineType_61 (
175008  p_application_id  => p_application_id
175009  ,p_event_id     => l_event_id
175010  ,p_calculate_acctd_flag => l_calculate_acctd_flag
175011  ,p_calculate_g_l_flag => l_calculate_g_l_flag
175012  ,p_actual_flag => l_actual_flag
175013  ,p_balance_type_code => l_balance_type_code
175014  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175015  
175016  , p_source_4 => l_array_source_4(Idx)
175017  , p_source_5 => l_array_source_5(Idx)
175018  , p_source_11 => l_array_source_11(Idx)
175019  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
175020  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
175021  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
175022  , p_source_18 => l_array_source_18(Idx)
175023  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
175024  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
175025  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
175026  , p_source_22 => l_array_source_22(Idx)
175027  );
175028 If(l_balance_type_code = 'A') THEN
175029   l_actual_gain_loss_ref := l_gain_or_loss_ref;
175030 END IF;
175031 
175032 --
175033 
175034 
175035 --
175036 AcctLineType_162 (
175037  p_application_id  => p_application_id
175038  ,p_event_id     => l_event_id
175039  ,p_calculate_acctd_flag => l_calculate_acctd_flag
175040  ,p_calculate_g_l_flag => l_calculate_g_l_flag
175041  ,p_actual_flag => l_actual_flag
175042  ,p_balance_type_code => l_balance_type_code
175043  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175044  
175045  , p_source_4 => l_array_source_4(Idx)
175046  , p_source_5 => l_array_source_5(Idx)
175047  , p_source_11 => l_array_source_11(Idx)
175048  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
175049  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
175050  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
175051  , p_source_18 => l_array_source_18(Idx)
175052  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
175053  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
175054  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
175055  , p_source_22 => l_array_source_22(Idx)
175056  );
175057 If(l_balance_type_code = 'A') THEN
175058   l_actual_gain_loss_ref := l_gain_or_loss_ref;
175059 END IF;
175060 
175061 --
175062 
175063 
175064 --
175065 AcctLineType_238 (
175066  p_application_id  => p_application_id
175067  ,p_event_id     => l_event_id
175068  ,p_calculate_acctd_flag => l_calculate_acctd_flag
175069  ,p_calculate_g_l_flag => l_calculate_g_l_flag
175070  ,p_actual_flag => l_actual_flag
175071  ,p_balance_type_code => l_balance_type_code
175072  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175073  
175074  , p_source_4 => l_array_source_4(Idx)
175075  , p_source_5 => l_array_source_5(Idx)
175076  , p_source_11 => l_array_source_11(Idx)
175077  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
175078  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
175079  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
175080  , p_source_18 => l_array_source_18(Idx)
175081  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
175082  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
175083  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
175084  , p_source_22 => l_array_source_22(Idx)
175085  );
175086 If(l_balance_type_code = 'A') THEN
175087   l_actual_gain_loss_ref := l_gain_or_loss_ref;
175088 END IF;
175089 
175090 --
175091 
175092       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
175093       -- or secondary ledger that has different currency with primary
175094       -- or alc that is calculated by sla
175095       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
175096             (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'))
175097 
175098 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
175099 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
175100           AND (l_actual_flag = 'A')) THEN
175101         XLA_AE_LINES_PKG.CreateGainOrLossLines(
175102           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
175103          ,p_application_id   => p_application_id
175104          ,p_amb_context_code => 'DEFAULT'
175105          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
175106          ,p_event_class_code => C_EVENT_CLASS_CODE
175107          ,p_event_type_code  => C_EVENT_TYPE_CODE
175108          
175109          ,p_gain_ccid        => -1
175110          ,p_loss_ccid        => -1
175111 
175112          ,p_actual_flag      => l_actual_flag
175113          ,p_enc_flag         => null
175114          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
175115          ,p_enc_g_l_ref      => null
175116          );
175117       END IF;
175118    END IF;
175119 END IF;
175120 
175121    ELSE
175122       --
175123       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
175124       --
175125       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175126          trace
175127             (p_msg      => 'Trancaction revesal option is Y'
175128             ,p_level    => C_LEVEL_STATEMENT
175129             ,p_module   => l_log_module);
175130       END IF;
175131    END IF;
175132 
175133 END LOOP;
175134 l_result := XLA_AE_LINES_PKG.InsertLines ;
175135 end loop;
175136 close line_cur;
175137 
175138 
175139 --
175140 -- insert headers into xla_ae_headers_gt table
175141 --
175142 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
175143 
175144 -- insert into errors table here.
175145 
175146 END LOOP;
175147 
175148 --
175149 -- 4865292
175150 --
175151 -- Compare g_hdr_extract_count with event count in
175152 -- CreateHeadersAndLines.
175153 --
175154 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
175155 
175156 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175157    trace (p_msg     => '# rows extracted from header extract objects '
175158                     || ' (running total): '
175159                     || g_hdr_extract_count
175160          ,p_level   => C_LEVEL_STATEMENT
175161          ,p_module  => l_log_module);
175162 END IF;
175163 
175164 CLOSE header_cur;
175165 --
175166 
175167 --
175168 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
175169    trace
175170       (p_msg      => 'END of EventClass_282'
175171       ,p_level    => C_LEVEL_PROCEDURE
175172       ,p_module   => l_log_module);
175173 END IF;
175174 --
175175 RETURN l_result;
175176 EXCEPTION
175177 WHEN xla_exceptions_pkg.application_exception THEN
175178    
175179 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
175180 
175181    
175182 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
175183 
175184    RAISE;
175185 
175186 WHEN NO_DATA_FOUND THEN
175187 
175188 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
175189 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
175190 
175191 FOR header_record IN header_cur
175192 LOOP
175193     l_array_header_events(header_record.event_id) := header_record.event_id;
175194 END LOOP;
175195 
175196 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
175197 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
175198 
175199 fnd_file.put_line(fnd_file.LOG, '                    ');
175200 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
175201 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
175202 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
175203 
175204 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
175205 LOOP
175206 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
175207 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
175208         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
175209 	END IF;
175210 END LOOP;
175211 
175212 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
175213 fnd_file.put_line(fnd_file.LOG, '                    ');
175214 
175215 
175216 xla_exceptions_pkg.raise_message
175217       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_282');
175218 
175219 
175220 WHEN OTHERS THEN
175221    xla_exceptions_pkg.raise_message
175222       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_282');
175223 END EventClass_282;
175224 --
175225 
175226 ---------------------------------------
175227 --
175228 -- PRIVATE PROCEDURE
175229 --         insert_sources_283
175230 --
175231 ----------------------------------------
175232 --
175233 PROCEDURE insert_sources_283(
175234                                 p_target_ledger_id       IN NUMBER
175235                               , p_language               IN VARCHAR2
175236                               , p_sla_ledger_id          IN NUMBER
175237                               , p_pad_start_date         IN DATE
175238                               , p_pad_end_date           IN DATE
175239                          )
175240 IS
175241 
175242 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RETR_PRICE_ADJ_ALL';
175243 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'RETR_PRICE_ADJ';
175244 p_apps_owner                   VARCHAR2(30);
175245 l_log_module                   VARCHAR2(240);
175246 BEGIN
175247 IF g_log_enabled THEN
175248       l_log_module := C_DEFAULT_MODULE||'.insert_sources_283';
175249 END IF;
175250 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
175251 
175252       trace
175253          (p_msg      => 'BEGIN of insert_sources_283'
175254          ,p_level    => C_LEVEL_PROCEDURE
175255          ,p_module   => l_log_module);
175256 
175257 END IF;
175258 
175259 -- select APPS owner
175260 SELECT oracle_username
175261   INTO p_apps_owner
175262   FROM fnd_oracle_userid
175263  WHERE read_only_flag = 'U'
175264 ;
175265 
175266 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175267       trace
175268          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
175269                         ' - p_language = '||p_language||
175270                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
175271                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
175272                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
175273                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
175274          ,p_level    => C_LEVEL_STATEMENT
175275          ,p_module   => l_log_module);
175276 END IF;
175277 
175278 
175279 --
175280 INSERT INTO xla_diag_sources --hdr2
175281 (
175282         event_id
175283       , ledger_id
175284       , sla_ledger_id
175285       , description_language
175286       , object_name
175287       , object_type_code
175288       , line_number
175289       , source_application_id
175290       , source_type_code
175291       , source_code
175292       , source_value
175293       , source_meaning
175294       , created_by
175295       , creation_date
175296       , last_update_date
175297       , last_updated_by
175298       , last_update_login
175299       , program_update_date
175300       , program_application_id
175301       , program_id
175302       , request_id
175303 )
175304 SELECT
175305         event_id
175306       , p_target_ledger_id
175307       , p_sla_ledger_id
175308       , p_language
175309       , object_name
175310       , object_type_code
175311       , line_number
175312       , source_application_id
175313       , source_type_code
175314       , source_code
175315       , SUBSTR(source_value ,1,1996)
175316       , SUBSTR(source_meaning ,1,200)
175317       , xla_environment_pkg.g_Usr_Id
175318       , TRUNC(SYSDATE)
175319       , TRUNC(SYSDATE)
175320       , xla_environment_pkg.g_Usr_Id
175321       , xla_environment_pkg.g_Login_Id
175322       , TRUNC(SYSDATE)
175323       , xla_environment_pkg.g_Prog_Appl_Id
175324       , xla_environment_pkg.g_Prog_Id
175325       , xla_environment_pkg.g_Req_Id
175326   FROM (
175327        SELECT xet.event_id                  event_id
175328             , 0                          line_number
175329             , CASE r
175330                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
175331                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
175332                 
175333                ELSE null
175334               END                           object_name
175335             , CASE r
175336                 WHEN 1 THEN 'HEADER' 
175337                 WHEN 2 THEN 'HEADER' 
175338                 
175339                 ELSE null
175340               END                           object_type_code
175341             , CASE r
175342                 WHEN 1 THEN '707' 
175343                 WHEN 2 THEN '707' 
175344                 
175345                 ELSE null
175346               END                           source_application_id
175347             , 'S'             source_type_code
175348             , CASE r
175349                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
175350                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
175351                 
175352                 ELSE null
175353               END                           source_code
175354             , CASE r
175355                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
175356                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
175357                 
175358                 ELSE null
175359               END                           source_value
175360             , CASE r
175361                 WHEN 1 THEN fvl12.meaning
175362                 WHEN 2 THEN fvl38.meaning
175363                 
175364                 ELSE null
175365               END               source_meaning
175366          FROM xla_events_gt     xet  
175367       , CST_XLA_INV_HEADERS_V  h1
175368   , fnd_lookup_values    fvl12
175369   , fnd_lookup_values    fvl38
175370              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
175371          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
175372            AND xet.event_class_code = C_EVENT_CLASS_CODE
175373               AND h1.event_id = xet.event_id
175374    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
175375   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
175376   AND fvl12.view_application_id(+) = 700
175377   AND fvl12.language(+)            = USERENV('LANG')
175378      AND fvl38.lookup_type(+)         = 'YES_NO'
175379   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
175380   AND fvl38.view_application_id(+) = 0
175381   AND fvl38.language(+)            = USERENV('LANG')
175382   
175383 )
175384 ;
175385 --
175386 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175387 
175388       trace
175389          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
175390          ,p_level    => C_LEVEL_STATEMENT
175391          ,p_module   => l_log_module);
175392 
175393 END IF;
175394 --
175395 
175396 
175397 
175398 --
175399 INSERT INTO xla_diag_sources  --line2
175400 (
175401         event_id
175402       , ledger_id
175403       , sla_ledger_id
175404       , description_language
175405       , object_name
175406       , object_type_code
175407       , line_number
175408       , source_application_id
175409       , source_type_code
175410       , source_code
175411       , source_value
175412       , source_meaning
175413       , created_by
175414       , creation_date
175415       , last_update_date
175416       , last_updated_by
175417       , last_update_login
175418       , program_update_date
175419       , program_application_id
175420       , program_id
175421       , request_id
175422 )
175423 SELECT  event_id
175424       , p_target_ledger_id
175425       , p_sla_ledger_id
175426       , p_language
175427       , object_name
175428       , object_type_code
175429       , line_number
175430       , source_application_id
175431       , source_type_code
175432       , source_code
175433       , SUBSTR(source_value,1,1996)
175434       , SUBSTR(source_meaning ,1,200)
175435       , xla_environment_pkg.g_Usr_Id
175436       , TRUNC(SYSDATE)
175437       , TRUNC(SYSDATE)
175438       , xla_environment_pkg.g_Usr_Id
175439       , xla_environment_pkg.g_Login_Id
175440       , TRUNC(SYSDATE)
175441       , xla_environment_pkg.g_Prog_Appl_Id
175442       , xla_environment_pkg.g_Prog_Id
175443       , xla_environment_pkg.g_Req_Id
175444   FROM (
175445        SELECT xet.event_id                  event_id
175446             , l2.line_number                 line_number
175447             , CASE r
175448                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
175449                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
175450                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
175451                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
175452                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
175453                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
175454                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
175455                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
175456                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
175457                 
175458                ELSE null
175459               END                           object_name
175460             , CASE r
175461                 WHEN 1 THEN 'LINE' 
175462                 WHEN 2 THEN 'LINE' 
175463                 WHEN 3 THEN 'LINE' 
175464                 WHEN 4 THEN 'LINE' 
175465                 WHEN 5 THEN 'LINE' 
175466                 WHEN 6 THEN 'LINE' 
175467                 WHEN 7 THEN 'LINE' 
175468                 WHEN 8 THEN 'LINE' 
175469                 WHEN 9 THEN 'LINE' 
175470                 
175471                 ELSE null
175472               END                           object_type_code
175473             , CASE r
175474                 WHEN 1 THEN '707' 
175475                 WHEN 2 THEN '707' 
175476                 WHEN 3 THEN '707' 
175477                 WHEN 4 THEN '707' 
175478                 WHEN 5 THEN '707' 
175479                 WHEN 6 THEN '707' 
175480                 WHEN 7 THEN '707' 
175481                 WHEN 8 THEN '707' 
175482                 WHEN 9 THEN '707' 
175483                 
175484                 ELSE null
175485               END                           source_application_id
175486             , 'S'             source_type_code
175487             , CASE r
175488                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
175489                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
175490                 WHEN 3 THEN 'CURRENCY_CODE' 
175491                 WHEN 4 THEN 'ENTERED_AMOUNT' 
175492                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
175493                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
175494                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
175495                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
175496                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
175497                 
175498                 ELSE null
175499               END                           source_code
175500             , CASE r
175501                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
175502                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
175503                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
175504                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
175505                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
175506                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
175507                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
175508                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
175509                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
175510                 
175511                 ELSE null
175512               END                           source_value
175513             , null              source_meaning
175514          FROM  xla_events_gt     xet  
175515         , CST_XLA_INV_LINES_V  l2
175516             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
175517         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
175518           AND xet.event_class_code = C_EVENT_CLASS_CODE
175519             AND l2.event_id          = xet.event_id
175520 
175521 )
175522 ;
175523 --
175524 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175525 
175526       trace
175527          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
175528          ,p_level    => C_LEVEL_STATEMENT
175529          ,p_module   => l_log_module);
175530 
175531 END IF;
175532 
175533 
175534 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
175535       trace
175536          (p_msg      => 'END of insert_sources_283'
175537          ,p_level    => C_LEVEL_PROCEDURE
175538          ,p_module   => l_log_module);
175539 END IF;
175540 EXCEPTION
175541   WHEN xla_exceptions_pkg.application_exception THEN
175542       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
175543             trace
175544                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
175545                ,p_level    => C_LEVEL_EXCEPTION
175546                ,p_module   => l_log_module);
175547       END IF;
175548       RAISE;
175549   WHEN OTHERS THEN
175550       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
175551             trace
175552                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
175553                ,p_level    => C_LEVEL_EXCEPTION
175554                ,p_module   => l_log_module);
175555        END IF;
175556        xla_exceptions_pkg.raise_message
175557            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_283');
175558 END insert_sources_283;
175559 --
175560 
175561 ---------------------------------------
175562 --
175563 -- PRIVATE FUNCTION
175564 --         EventClass_283
175565 --
175566 ----------------------------------------
175567 --
175568 FUNCTION EventClass_283
175569        (p_application_id         IN NUMBER
175570        ,p_base_ledger_id         IN NUMBER
175571        ,p_target_ledger_id       IN NUMBER
175572        ,p_language               IN VARCHAR2
175573        ,p_currency_code          IN VARCHAR2
175574        ,p_sla_ledger_id          IN NUMBER
175575        ,p_pad_start_date         IN DATE
175576        ,p_pad_end_date           IN DATE
175577        ,p_primary_ledger_id      IN NUMBER)
175578 RETURN BOOLEAN IS
175579 --
175580 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RETR_PRICE_ADJ_ALL';
175581 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'RETR_PRICE_ADJ';
175582 
175583 l_calculate_acctd_flag   VARCHAR2(1) :='N';
175584 l_calculate_g_l_flag     VARCHAR2(1) :='N';
175585 --
175586 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175587 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175588 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
175589 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
175590 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175591 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
175592 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
175593 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175594 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
175595 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
175596 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175597 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175598 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175599 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175600 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
175601 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
175602 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
175603 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
175604 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
175605 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
175606 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
175607 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
175608 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
175609 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
175610 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
175611 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
175612 
175613 l_event_id                             NUMBER;
175614 l_previous_event_id                    NUMBER;
175615 l_first_event_id                       NUMBER;
175616 l_last_event_id                        NUMBER;
175617 
175618 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
175619 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
175620 --
175621 --
175622 l_result                    BOOLEAN := TRUE;
175623 l_rows                      NUMBER  := 1000;
175624 l_event_type_name           VARCHAR2(80) := 'All';
175625 l_event_class_name          VARCHAR2(80) := 'Retroactive Price Adjustment';
175626 l_description               VARCHAR2(4000);
175627 l_transaction_reversal      NUMBER;
175628 l_ae_header_id              NUMBER;
175629 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
175630 l_log_module                VARCHAR2(240);
175631 --
175632 l_acct_reversal_source      VARCHAR2(30);
175633 l_trx_reversal_source       VARCHAR2(30);
175634 
175635 l_continue_with_lines       BOOLEAN := TRUE;
175636 --
175637 l_acc_rev_gl_date_source    DATE;                      -- 4262811
175638 --
175639 type t_array_event_id is table of number index by binary_integer;
175640 
175641 l_rec_array_event                    t_rec_array_event;
175642 l_null_rec_array_event               t_rec_array_event;
175643 l_array_ae_header_id                 xla_number_array_type;
175644 l_actual_flag                        VARCHAR2(1) := NULL;
175645 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
175646 l_balance_type_code                  VARCHAR2(1) :=NULL;
175647 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
175648 
175649 --
175650 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
175651 --
175652 
175653 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
175654 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
175655 
175656 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
175657 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
175658 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
175659 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
175660 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
175661 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
175662 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
175663 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
175664 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
175665 
175666 l_array_source_12              t_array_source_12;
175667 l_array_source_12_meaning      t_array_lookup_meaning;
175668 l_array_source_38              t_array_source_38;
175669 l_array_source_38_meaning      t_array_lookup_meaning;
175670 
175671 l_array_source_4      t_array_source_4;
175672 l_array_source_11      t_array_source_11;
175673 l_array_source_15      t_array_source_15;
175674 l_array_source_18      t_array_source_18;
175675 l_array_source_19      t_array_source_19;
175676 l_array_source_20      t_array_source_20;
175677 l_array_source_21      t_array_source_21;
175678 l_array_source_22      t_array_source_22;
175679 l_array_source_24      t_array_source_24;
175680 
175681 --
175682 CURSOR header_cur
175683 IS
175684 SELECT /*+ leading(xet) cardinality(xet,1) */
175685 -- Event Class Code: RETR_PRICE_ADJ
175686     xet.entity_id
175687    ,xet.legal_entity_id
175688    ,xet.entity_code
175689    ,xet.transaction_number
175690    ,xet.event_id
175691    ,xet.event_class_code
175692    ,xet.event_type_code
175693    ,xet.event_number
175694    ,xet.event_date
175695    ,xet.transaction_date
175696    ,xet.reference_num_1
175697    ,xet.reference_num_2
175698    ,xet.reference_num_3
175699    ,xet.reference_num_4
175700    ,xet.reference_char_1
175701    ,xet.reference_char_2
175702    ,xet.reference_char_3
175703    ,xet.reference_char_4
175704    ,xet.reference_date_1
175705    ,xet.reference_date_2
175706    ,xet.reference_date_3
175707    ,xet.reference_date_4
175708    ,xet.event_created_by
175709    ,xet.budgetary_control_flag 
175710   , h1.DISTRIBUTION_TYPE    source_12
175711   , fvl12.meaning   source_12_meaning
175712   , h1.TRANSFER_TO_GL_INDICATOR    source_38
175713   , fvl38.meaning   source_38_meaning
175714   FROM xla_events_gt     xet 
175715   , CST_XLA_INV_HEADERS_V  h1
175716   , fnd_lookup_values    fvl12
175717   , fnd_lookup_values    fvl38
175718  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
175719    and xet.event_class_code = C_EVENT_CLASS_CODE
175720    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
175721    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
175722   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
175723   AND fvl12.view_application_id(+) = 700
175724   AND fvl12.language(+)            = USERENV('LANG')
175725      AND fvl38.lookup_type(+)         = 'YES_NO'
175726   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
175727   AND fvl38.view_application_id(+) = 0
175728   AND fvl38.language(+)            = USERENV('LANG')
175729   
175730  ORDER BY event_id
175731 ;
175732 
175733 
175734 --
175735 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
175736 IS
175737 SELECT  /*+ leading(xet) cardinality(xet,1) */
175738 -- Event Class Code: RETR_PRICE_ADJ
175739     xet.entity_id
175740    ,xet.legal_entity_id
175741    ,xet.entity_code
175742    ,xet.transaction_number
175743    ,xet.event_id
175744    ,xet.event_class_code
175745    ,xet.event_type_code
175746    ,xet.event_number
175747    ,xet.event_date
175748    ,xet.transaction_date
175749    ,xet.reference_num_1
175750    ,xet.reference_num_2
175751    ,xet.reference_num_3
175752    ,xet.reference_num_4
175753    ,xet.reference_char_1
175754    ,xet.reference_char_2
175755    ,xet.reference_char_3
175756    ,xet.reference_char_4
175757    ,xet.reference_date_1
175758    ,xet.reference_date_2
175759    ,xet.reference_date_3
175760    ,xet.reference_date_4
175761    ,xet.event_created_by
175762    ,xet.budgetary_control_flag
175763  , l2.LINE_NUMBER  
175764   , l2.CODE_COMBINATION_ID    source_4
175765   , l2.DISTRIBUTION_IDENTIFIER    source_11
175766   , l2.CURRENCY_CODE    source_15
175767   , l2.ENTERED_AMOUNT    source_18
175768   , l2.CURRENCY_CONVERSION_DATE    source_19
175769   , l2.CURRENCY_CONVERSION_RATE    source_20
175770   , l2.CURRENCY_CONVERSION_TYPE    source_21
175771   , l2.ACCOUNTED_AMOUNT    source_22
175772   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
175773   FROM xla_events_gt     xet 
175774   , CST_XLA_INV_LINES_V  l2
175775  WHERE xet.event_id between x_first_event_id and x_last_event_id
175776    and xet.event_date between p_pad_start_date and p_pad_end_date
175777    and xet.event_class_code = C_EVENT_CLASS_CODE
175778    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
175779 ;
175780 
175781 --
175782 BEGIN
175783 IF g_log_enabled THEN
175784    l_log_module := C_DEFAULT_MODULE||'.EventClass_283';
175785 END IF;
175786 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
175787    trace
175788       (p_msg      => 'BEGIN of EventClass_283'
175789       ,p_level    => C_LEVEL_PROCEDURE
175790       ,p_module   => l_log_module);
175791 END IF;
175792 
175793 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175794    trace
175795       (p_msg      => 'p_application_id = '||p_application_id||
175796                      ' - p_base_ledger_id = '||p_base_ledger_id||
175797                      ' - p_target_ledger_id  = '||p_target_ledger_id||
175798                      ' - p_language = '||p_language||
175799                      ' - p_currency_code = '||p_currency_code||
175800                      ' - p_sla_ledger_id = '||p_sla_ledger_id
175801       ,p_level    => C_LEVEL_STATEMENT
175802       ,p_module   => l_log_module);
175803 END IF;
175804 --
175805 -- initialze arrays
175806 --
175807 g_array_event.DELETE;
175808 l_rec_array_event := l_null_rec_array_event;
175809 --
175810 --------------------------------------
175811 -- 4262811 Initialze MPA Line Number
175812 --------------------------------------
175813 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
175814 
175815 --
175816 
175817 --
175818 OPEN header_cur;
175819 --
175820 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175821    trace
175822    (p_msg      => 'SQL - FETCH header_cur'
175823    ,p_level    => C_LEVEL_STATEMENT
175824    ,p_module   => l_log_module);
175825 END IF;
175826 --
175827 LOOP
175828 FETCH header_cur BULK COLLECT INTO
175829         l_array_entity_id
175830       , l_array_legal_entity_id
175831       , l_array_entity_code
175832       , l_array_transaction_num
175833       , l_array_event_id
175834       , l_array_class_code
175835       , l_array_event_type
175836       , l_array_event_number
175837       , l_array_event_date
175838       , l_array_transaction_date
175839       , l_array_reference_num_1
175840       , l_array_reference_num_2
175841       , l_array_reference_num_3
175842       , l_array_reference_num_4
175843       , l_array_reference_char_1
175844       , l_array_reference_char_2
175845       , l_array_reference_char_3
175846       , l_array_reference_char_4
175847       , l_array_reference_date_1
175848       , l_array_reference_date_2
175849       , l_array_reference_date_3
175850       , l_array_reference_date_4
175851       , l_array_event_created_by
175852       , l_array_budgetary_control_flag 
175853       , l_array_source_12
175854       , l_array_source_12_meaning
175855       , l_array_source_38
175856       , l_array_source_38_meaning
175857       LIMIT l_rows;
175858 --
175859 IF (C_LEVEL_EVENT >= g_log_level) THEN
175860    trace
175861    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
175862    ,p_level    => C_LEVEL_EVENT
175863    ,p_module   => l_log_module);
175864 END IF;
175865 --
175866 EXIT WHEN l_array_entity_id.COUNT = 0;
175867 
175868 -- initialize arrays
175869 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
175870 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
175871 
175872 --
175873 -- Bug 4458708
175874 --
175875 XLA_AE_LINES_PKG.g_LineNumber := 0;
175876 
175877 
175878 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
175879 g_last_hdr_idx := l_array_event_id.LAST;
175880 --
175881 -- loop for the headers. Each iteration is for each header extract row
175882 -- fetched in header cursor
175883 --
175884 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
175885 
175886 --
175887 -- set event info as cache for other routines to refer event attributes
175888 --
175889 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
175890    (p_application_id           => p_application_id
175891    ,p_primary_ledger_id        => p_primary_ledger_id
175892    ,p_base_ledger_id           => p_base_ledger_id
175893    ,p_target_ledger_id         => p_target_ledger_id
175894    ,p_entity_id                => l_array_entity_id(hdr_idx)
175895    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
175896    ,p_entity_code              => l_array_entity_code(hdr_idx)
175897    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
175898    ,p_event_id                 => l_array_event_id(hdr_idx)
175899    ,p_event_class_code         => l_array_class_code(hdr_idx)
175900    ,p_event_type_code          => l_array_event_type(hdr_idx)
175901    ,p_event_number             => l_array_event_number(hdr_idx)
175902    ,p_event_date               => l_array_event_date(hdr_idx)
175903    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
175904    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
175905    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
175906    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
175907    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
175908    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
175909    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
175910    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
175911    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
175912    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
175913    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
175914    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
175915    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
175916    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
175917    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
175918 
175919 --
175920 -- set the status of entry to C_VALID (0)
175921 --
175922 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
175923 
175924 --
175925 -- initialize a row for ae header
175926 --
175927 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
175928 
175929 l_event_id := l_array_event_id(hdr_idx);
175930 
175931 --
175932 -- storing the hdr_idx for event. May be used by line cursor.
175933 --
175934 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
175935 
175936 --
175937 -- store sources from header extract. This can be improved to
175938 -- store only those sources from header extract that may be used in lines
175939 --
175940 
175941 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
175942 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
175943 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
175944 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
175945 
175946 --
175947 -- initilaize the status of ae headers for diffrent balance types
175948 -- the status is initialised to C_NOT_CREATED (2)
175949 --
175950 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
175951 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
175952 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
175953 
175954 --
175955 -- call api to validate and store accounting attributes for header
175956 --
175957 
175958 ------------------------------------------------------------
175959 -- Accrual Reversal : to get date for Standard Source (NONE)
175960 ------------------------------------------------------------
175961 l_acc_rev_gl_date_source := NULL;
175962 
175963      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
175964       l_rec_acct_attrs.array_date_value(1) := 
175965 xla_ae_sources_pkg.GetSystemSourceDate(
175966    p_source_code           => 'XLA_REFERENCE_DATE_1'
175967  , p_source_type_code      => 'Y'
175968  , p_source_application_id =>  602
175969 );
175970      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
175971       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
175972 
175973 
175974 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
175975 
175976 XLA_AE_HEADER_PKG.SetJeCategoryName;
175977 
175978 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
175979 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
175980 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
175981 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
175982 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
175983 
175984 
175985 -- No header level analytical criteria
175986 
175987 --
175988 --accounting attribute enhancement, bug 3612931
175989 --
175990 l_trx_reversal_source := SUBSTR(NULL, 1,30);
175991 
175992 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
175993    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
175994 
175995    xla_accounting_err_pkg.build_message
175996       (p_appli_s_name            => 'XLA'
175997       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
175998       ,p_token_1                 => 'ACCT_ATTR_NAME'
175999       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
176000       ,p_token_2                 => 'PRODUCT_NAME'
176001       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
176002       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
176003       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
176004       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
176005 
176006 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
176007    --
176008    -- following sets the accounting attributes needed to reverse
176009    -- accounting for a distributeion
176010    --
176011    xla_ae_lines_pkg.SetTrxReversalAttrs
176012       (p_event_id              => l_event_id
176013       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
176014       ,p_trx_reversal_source   => l_trx_reversal_source);
176015 
176016 END IF;
176017 
176018 
176019 ----------------------------------------------------------------
176020 -- 4262811 -  update the header statuses to invalid in need be
176021 ----------------------------------------------------------------
176022 --
176023 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
176024 
176025 
176026   -----------------------------------------------
176027   -- No accrual reversal for the event class/type
176028   -----------------------------------------------
176029 ----------------------------------------------------------------
176030 
176031 --
176032 -- this ends the header loop iteration for one bulk fetch
176033 --
176034 END LOOP;
176035 
176036 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
176037 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
176038 
176039 --
176040 -- insert dummy rows into lines gt table that were created due to
176041 -- transaction reversals
176042 --
176043 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
176044    l_result := XLA_AE_LINES_PKG.InsertLines;
176045 END IF;
176046 
176047 --
176048 -- reset the temp_line_num for each set of events fetched from header
176049 -- cursor rather than doing it for each new event in line cursor
176050 -- Bug 3939231
176051 --
176052 xla_ae_lines_pkg.g_temp_line_num := 0;
176053 
176054 
176055 
176056 --
176057 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
176058 --
176059 --
176060 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176061 
176062       trace
176063          (p_msg      => 'SQL - FETCH line_cur'
176064          ,p_level    => C_LEVEL_STATEMENT
176065          ,p_module   => l_log_module);
176066 
176067 END IF;
176068 --
176069 --
176070 LOOP
176071   --
176072   FETCH line_cur BULK COLLECT INTO
176073         l_array_entity_id
176074       , l_array_legal_entity_id
176075       , l_array_entity_code
176076       , l_array_transaction_num
176077       , l_array_event_id
176078       , l_array_class_code
176079       , l_array_event_type
176080       , l_array_event_number
176081       , l_array_event_date
176082       , l_array_transaction_date
176083       , l_array_reference_num_1
176084       , l_array_reference_num_2
176085       , l_array_reference_num_3
176086       , l_array_reference_num_4
176087       , l_array_reference_char_1
176088       , l_array_reference_char_2
176089       , l_array_reference_char_3
176090       , l_array_reference_char_4
176091       , l_array_reference_date_1
176092       , l_array_reference_date_2
176093       , l_array_reference_date_3
176094       , l_array_reference_date_4
176095       , l_array_event_created_by
176096       , l_array_budgetary_control_flag
176097       , l_array_extract_line_num 
176098       , l_array_source_4
176099       , l_array_source_11
176100       , l_array_source_15
176101       , l_array_source_18
176102       , l_array_source_19
176103       , l_array_source_20
176104       , l_array_source_21
176105       , l_array_source_22
176106       , l_array_source_24
176107       LIMIT l_rows;
176108 
176109   --
176110   IF (C_LEVEL_EVENT >= g_log_level) THEN
176111             trace
176112                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
176113                ,p_level    => C_LEVEL_EVENT
176114                ,p_module   => l_log_module);
176115   END IF;
176116   --
176117   EXIT WHEN l_array_entity_id.count = 0;
176118 
176119   XLA_AE_LINES_PKG.g_rec_lines := null;
176120 
176121 --
176122 -- Bug 4458708
176123 --
176124 XLA_AE_LINES_PKG.g_LineNumber := 0;
176125 --
176126 --
176127 
176128 FOR Idx IN 1..l_array_event_id.count LOOP
176129    --
176130    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
176131    --
176132    l_event_id := l_array_event_id(idx);  -- 5648433
176133 
176134    --
176135    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
176136    --
176137 
176138    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
176139              (g_array_event(l_event_id).array_value_num('header_index'))
176140          ,'N'
176141          ) <> 'Y'
176142    THEN
176143       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176144          trace
176145             (p_msg      => 'Trancaction revesal option is not Y '
176146             ,p_level    => C_LEVEL_STATEMENT
176147             ,p_module   => l_log_module);
176148       END IF;
176149 
176150 --
176151 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
176152 --
176153 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
176154 --
176155 -- set event info as cache for other routines to refer event attributes
176156 --
176157 
176158 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
176159    l_previous_event_id := l_event_id;
176160 
176161    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
176162       (p_application_id           => p_application_id
176163       ,p_primary_ledger_id        => p_primary_ledger_id
176164       ,p_base_ledger_id           => p_base_ledger_id
176165       ,p_target_ledger_id         => p_target_ledger_id
176166       ,p_entity_id                => l_array_entity_id(Idx)
176167       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
176168       ,p_entity_code              => l_array_entity_code(Idx)
176169       ,p_transaction_num          => l_array_transaction_num(Idx)
176170       ,p_event_id                 => l_array_event_id(Idx)
176171       ,p_event_class_code         => l_array_class_code(Idx)
176172       ,p_event_type_code          => l_array_event_type(Idx)
176173       ,p_event_number             => l_array_event_number(Idx)
176174       ,p_event_date               => l_array_event_date(Idx)
176175       ,p_transaction_date         => l_array_transaction_date(Idx)
176176       ,p_reference_num_1          => l_array_reference_num_1(Idx)
176177       ,p_reference_num_2          => l_array_reference_num_2(Idx)
176178       ,p_reference_num_3          => l_array_reference_num_3(Idx)
176179       ,p_reference_num_4          => l_array_reference_num_4(Idx)
176180       ,p_reference_char_1         => l_array_reference_char_1(Idx)
176181       ,p_reference_char_2         => l_array_reference_char_2(Idx)
176182       ,p_reference_char_3         => l_array_reference_char_3(Idx)
176183       ,p_reference_char_4         => l_array_reference_char_4(Idx)
176184       ,p_reference_date_1         => l_array_reference_date_1(Idx)
176185       ,p_reference_date_2         => l_array_reference_date_2(Idx)
176186       ,p_reference_date_3         => l_array_reference_date_3(Idx)
176187       ,p_reference_date_4         => l_array_reference_date_4(Idx)
176188       ,p_event_created_by         => l_array_event_created_by(Idx)
176189       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
176190        --
176191 END IF;
176192 
176193 
176194 
176195 --
176196 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
176197 
176198 l_acct_reversal_source := SUBSTR(NULL, 1,30);
176199 
176200 IF l_continue_with_lines THEN
176201    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
176202       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
176203 
176204       xla_accounting_err_pkg.build_message
176205          (p_appli_s_name            => 'XLA'
176206          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
176207          ,p_token_1                 => 'LINE_NUMBER'
176208          ,p_value_1                 => l_array_extract_line_num(Idx)
176209          ,p_token_2                 => 'PRODUCT_NAME'
176210          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
176211          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
176212          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
176213          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
176214 
176215    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
176216       --
176217       -- following sets the accounting attributes needed to reverse
176218       -- accounting for a distributeion
176219       --
176220 
176221       --
176222       -- 5217187
176223       --
176224       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
176225       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
176226                                        g_array_event(l_event_id).array_value_num('header_index'));
176227       --
176228       --
176229 
176230       -- No reversal code generated
176231 
176232       xla_ae_lines_pkg.SetAcctReversalAttrs
176233          (p_event_id             => l_event_id
176234          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
176235          ,p_calculate_acctd_flag => l_calculate_acctd_flag
176236          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
176237    END IF;
176238 
176239    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
176240        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
176241 
176242 --
176243 AcctLineType_8 (
176244  p_application_id  => p_application_id
176245  ,p_event_id     => l_event_id
176246  ,p_calculate_acctd_flag => l_calculate_acctd_flag
176247  ,p_calculate_g_l_flag => l_calculate_g_l_flag
176248  ,p_actual_flag => l_actual_flag
176249  ,p_balance_type_code => l_balance_type_code
176250  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176251  
176252  , p_source_4 => l_array_source_4(Idx)
176253  , p_source_11 => l_array_source_11(Idx)
176254  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
176255  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
176256  , p_source_15 => l_array_source_15(Idx)
176257  , p_source_18 => l_array_source_18(Idx)
176258  , p_source_19 => l_array_source_19(Idx)
176259  , p_source_20 => l_array_source_20(Idx)
176260  , p_source_21 => l_array_source_21(Idx)
176261  , p_source_22 => l_array_source_22(Idx)
176262  , p_source_24 => l_array_source_24(Idx)
176263  );
176264 If(l_balance_type_code = 'A') THEN
176265   l_actual_gain_loss_ref := l_gain_or_loss_ref;
176266 END IF;
176267 
176268 --
176269 
176270 
176271 --
176272 AcctLineType_245 (
176273  p_application_id  => p_application_id
176274  ,p_event_id     => l_event_id
176275  ,p_calculate_acctd_flag => l_calculate_acctd_flag
176276  ,p_calculate_g_l_flag => l_calculate_g_l_flag
176277  ,p_actual_flag => l_actual_flag
176278  ,p_balance_type_code => l_balance_type_code
176279  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176280  
176281  , p_source_4 => l_array_source_4(Idx)
176282  , p_source_11 => l_array_source_11(Idx)
176283  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
176284  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
176285  , p_source_15 => l_array_source_15(Idx)
176286  , p_source_18 => l_array_source_18(Idx)
176287  , p_source_19 => l_array_source_19(Idx)
176288  , p_source_20 => l_array_source_20(Idx)
176289  , p_source_21 => l_array_source_21(Idx)
176290  , p_source_22 => l_array_source_22(Idx)
176291  , p_source_24 => l_array_source_24(Idx)
176292  );
176293 If(l_balance_type_code = 'A') THEN
176294   l_actual_gain_loss_ref := l_gain_or_loss_ref;
176295 END IF;
176296 
176297 --
176298 
176299       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
176300       -- or secondary ledger that has different currency with primary
176301       -- or alc that is calculated by sla
176302       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
176303             (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'))
176304 
176305 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
176306 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
176307           AND (l_actual_flag = 'A')) THEN
176308         XLA_AE_LINES_PKG.CreateGainOrLossLines(
176309           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
176310          ,p_application_id   => p_application_id
176311          ,p_amb_context_code => 'DEFAULT'
176312          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
176313          ,p_event_class_code => C_EVENT_CLASS_CODE
176314          ,p_event_type_code  => C_EVENT_TYPE_CODE
176315          
176316          ,p_gain_ccid        => -1
176317          ,p_loss_ccid        => -1
176318 
176319          ,p_actual_flag      => l_actual_flag
176320          ,p_enc_flag         => null
176321          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
176322          ,p_enc_g_l_ref      => null
176323          );
176324       END IF;
176325    END IF;
176326 END IF;
176327 
176328    ELSE
176329       --
176330       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
176331       --
176332       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176333          trace
176334             (p_msg      => 'Trancaction revesal option is Y'
176335             ,p_level    => C_LEVEL_STATEMENT
176336             ,p_module   => l_log_module);
176337       END IF;
176338    END IF;
176339 
176340 END LOOP;
176341 l_result := XLA_AE_LINES_PKG.InsertLines ;
176342 end loop;
176343 close line_cur;
176344 
176345 
176346 --
176347 -- insert headers into xla_ae_headers_gt table
176348 --
176349 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
176350 
176351 -- insert into errors table here.
176352 
176353 END LOOP;
176354 
176355 --
176356 -- 4865292
176357 --
176358 -- Compare g_hdr_extract_count with event count in
176359 -- CreateHeadersAndLines.
176360 --
176361 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
176362 
176363 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176364    trace (p_msg     => '# rows extracted from header extract objects '
176365                     || ' (running total): '
176366                     || g_hdr_extract_count
176367          ,p_level   => C_LEVEL_STATEMENT
176368          ,p_module  => l_log_module);
176369 END IF;
176370 
176371 CLOSE header_cur;
176372 --
176373 
176374 --
176375 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
176376    trace
176377       (p_msg      => 'END of EventClass_283'
176378       ,p_level    => C_LEVEL_PROCEDURE
176379       ,p_module   => l_log_module);
176380 END IF;
176381 --
176382 RETURN l_result;
176383 EXCEPTION
176384 WHEN xla_exceptions_pkg.application_exception THEN
176385    
176386 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
176387 
176388    
176389 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
176390 
176391    RAISE;
176392 
176393 WHEN NO_DATA_FOUND THEN
176394 
176395 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
176396 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
176397 
176398 FOR header_record IN header_cur
176399 LOOP
176400     l_array_header_events(header_record.event_id) := header_record.event_id;
176401 END LOOP;
176402 
176403 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
176404 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
176405 
176406 fnd_file.put_line(fnd_file.LOG, '                    ');
176407 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
176408 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
176409 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
176410 
176411 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
176412 LOOP
176413 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
176414 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
176415         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
176416 	END IF;
176417 END LOOP;
176418 
176419 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
176420 fnd_file.put_line(fnd_file.LOG, '                    ');
176421 
176422 
176423 xla_exceptions_pkg.raise_message
176424       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_283');
176425 
176426 
176427 WHEN OTHERS THEN
176428    xla_exceptions_pkg.raise_message
176429       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_283');
176430 END EventClass_283;
176431 --
176432 
176433 ---------------------------------------
176434 --
176435 -- PRIVATE PROCEDURE
176436 --         insert_sources_284
176437 --
176438 ----------------------------------------
176439 --
176440 PROCEDURE insert_sources_284(
176441                                 p_target_ledger_id       IN NUMBER
176442                               , p_language               IN VARCHAR2
176443                               , p_sla_ledger_id          IN NUMBER
176444                               , p_pad_start_date         IN DATE
176445                               , p_pad_end_date           IN DATE
176446                          )
176447 IS
176448 
176449 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RETR_PRICE_ADJ_DEL_ALL';
176450 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'RETR_PRICE_ADJ_DEL';
176451 p_apps_owner                   VARCHAR2(30);
176452 l_log_module                   VARCHAR2(240);
176453 BEGIN
176454 IF g_log_enabled THEN
176455       l_log_module := C_DEFAULT_MODULE||'.insert_sources_284';
176456 END IF;
176457 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
176458 
176459       trace
176460          (p_msg      => 'BEGIN of insert_sources_284'
176461          ,p_level    => C_LEVEL_PROCEDURE
176462          ,p_module   => l_log_module);
176463 
176464 END IF;
176465 
176466 -- select APPS owner
176467 SELECT oracle_username
176468   INTO p_apps_owner
176469   FROM fnd_oracle_userid
176470  WHERE read_only_flag = 'U'
176471 ;
176472 
176473 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176474       trace
176475          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
176476                         ' - p_language = '||p_language||
176477                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
176478                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
176479                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
176480                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
176481          ,p_level    => C_LEVEL_STATEMENT
176482          ,p_module   => l_log_module);
176483 END IF;
176484 
176485 
176486 --
176487 INSERT INTO xla_diag_sources --hdr2
176488 (
176489         event_id
176490       , ledger_id
176491       , sla_ledger_id
176492       , description_language
176493       , object_name
176494       , object_type_code
176495       , line_number
176496       , source_application_id
176497       , source_type_code
176498       , source_code
176499       , source_value
176500       , source_meaning
176501       , created_by
176502       , creation_date
176503       , last_update_date
176504       , last_updated_by
176505       , last_update_login
176506       , program_update_date
176507       , program_application_id
176508       , program_id
176509       , request_id
176510 )
176511 SELECT
176512         event_id
176513       , p_target_ledger_id
176514       , p_sla_ledger_id
176515       , p_language
176516       , object_name
176517       , object_type_code
176518       , line_number
176519       , source_application_id
176520       , source_type_code
176521       , source_code
176522       , SUBSTR(source_value ,1,1996)
176523       , SUBSTR(source_meaning ,1,200)
176524       , xla_environment_pkg.g_Usr_Id
176525       , TRUNC(SYSDATE)
176526       , TRUNC(SYSDATE)
176527       , xla_environment_pkg.g_Usr_Id
176528       , xla_environment_pkg.g_Login_Id
176529       , TRUNC(SYSDATE)
176530       , xla_environment_pkg.g_Prog_Appl_Id
176531       , xla_environment_pkg.g_Prog_Id
176532       , xla_environment_pkg.g_Req_Id
176533   FROM (
176534        SELECT xet.event_id                  event_id
176535             , 0                          line_number
176536             , CASE r
176537                WHEN 1 THEN 'CST_XLA_RCV_HEADERS_V' 
176538                 WHEN 2 THEN 'CST_XLA_RCV_HEADERS_V' 
176539                 WHEN 3 THEN 'CST_XLA_RCV_HEADERS_V' 
176540                 WHEN 4 THEN 'CST_XLA_RCV_HEADERS_V' 
176541                 WHEN 5 THEN 'CST_XLA_RCV_HEADERS_V' 
176542                 
176543                ELSE null
176544               END                           object_name
176545             , CASE r
176546                 WHEN 1 THEN 'HEADER' 
176547                 WHEN 2 THEN 'HEADER' 
176548                 WHEN 3 THEN 'HEADER' 
176549                 WHEN 4 THEN 'HEADER' 
176550                 WHEN 5 THEN 'HEADER' 
176551                 
176552                 ELSE null
176553               END                           object_type_code
176554             , CASE r
176555                 WHEN 1 THEN '707' 
176556                 WHEN 2 THEN '707' 
176557                 WHEN 3 THEN '707' 
176558                 WHEN 4 THEN '707' 
176559                 WHEN 5 THEN '707' 
176560                 
176561                 ELSE null
176562               END                           source_application_id
176563             , 'S'             source_type_code
176564             , CASE r
176565                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
176566                 WHEN 2 THEN 'CURRENCY_CODE' 
176567                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
176568                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
176569                 WHEN 5 THEN 'TRANSFER_TO_GL_INDICATOR' 
176570                 
176571                 ELSE null
176572               END                           source_code
176573             , CASE r
176574                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
176575                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
176576                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
176577                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
176578                 WHEN 5 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
176579                 
176580                 ELSE null
176581               END                           source_value
176582             , CASE r
176583                 WHEN 1 THEN fvl12.meaning
176584                 WHEN 5 THEN fvl38.meaning
176585                 
176586                 ELSE null
176587               END               source_meaning
176588          FROM xla_events_gt     xet  
176589       , CST_XLA_RCV_HEADERS_V  h1
176590   , fnd_lookup_values    fvl12
176591   , fnd_lookup_values    fvl38
176592              ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
176593          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
176594            AND xet.event_class_code = C_EVENT_CLASS_CODE
176595               AND h1.event_id = xet.event_id
176596    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
176597   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
176598   AND fvl12.view_application_id(+) = 700
176599   AND fvl12.language(+)            = USERENV('LANG')
176600      AND fvl38.lookup_type(+)         = 'YES_NO'
176601   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
176602   AND fvl38.view_application_id(+) = 0
176603   AND fvl38.language(+)            = USERENV('LANG')
176604   
176605 )
176606 ;
176607 --
176608 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176609 
176610       trace
176611          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
176612          ,p_level    => C_LEVEL_STATEMENT
176613          ,p_module   => l_log_module);
176614 
176615 END IF;
176616 --
176617 
176618 
176619 
176620 --
176621 INSERT INTO xla_diag_sources  --line2
176622 (
176623         event_id
176624       , ledger_id
176625       , sla_ledger_id
176626       , description_language
176627       , object_name
176628       , object_type_code
176629       , line_number
176630       , source_application_id
176631       , source_type_code
176632       , source_code
176633       , source_value
176634       , source_meaning
176635       , created_by
176636       , creation_date
176637       , last_update_date
176638       , last_updated_by
176639       , last_update_login
176640       , program_update_date
176641       , program_application_id
176642       , program_id
176643       , request_id
176644 )
176645 SELECT  event_id
176646       , p_target_ledger_id
176647       , p_sla_ledger_id
176648       , p_language
176649       , object_name
176650       , object_type_code
176651       , line_number
176652       , source_application_id
176653       , source_type_code
176654       , source_code
176655       , SUBSTR(source_value,1,1996)
176656       , SUBSTR(source_meaning ,1,200)
176657       , xla_environment_pkg.g_Usr_Id
176658       , TRUNC(SYSDATE)
176659       , TRUNC(SYSDATE)
176660       , xla_environment_pkg.g_Usr_Id
176661       , xla_environment_pkg.g_Login_Id
176662       , TRUNC(SYSDATE)
176663       , xla_environment_pkg.g_Prog_Appl_Id
176664       , xla_environment_pkg.g_Prog_Id
176665       , xla_environment_pkg.g_Req_Id
176666   FROM (
176667        SELECT xet.event_id                  event_id
176668             , l2.line_number                 line_number
176669             , CASE r
176670                WHEN 1 THEN 'CST_XLA_RCV_LINES_V' 
176671                 WHEN 2 THEN 'CST_XLA_RCV_LINES_V' 
176672                 WHEN 3 THEN 'CST_XLA_RCV_LINES_V' 
176673                 WHEN 4 THEN 'CST_XLA_RCV_LINES_V' 
176674                 WHEN 5 THEN 'CST_XLA_RCV_LINES_V' 
176675                 
176676                ELSE null
176677               END                           object_name
176678             , CASE r
176679                 WHEN 1 THEN 'LINE' 
176680                 WHEN 2 THEN 'LINE' 
176681                 WHEN 3 THEN 'LINE' 
176682                 WHEN 4 THEN 'LINE' 
176683                 WHEN 5 THEN 'LINE' 
176684                 
176685                 ELSE null
176686               END                           object_type_code
176687             , CASE r
176688                 WHEN 1 THEN '707' 
176689                 WHEN 2 THEN '707' 
176690                 WHEN 3 THEN '707' 
176691                 WHEN 4 THEN '707' 
176692                 WHEN 5 THEN '707' 
176693                 
176694                 ELSE null
176695               END                           source_application_id
176696             , 'S'             source_type_code
176697             , CASE r
176698                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
176699                 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE' 
176700                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
176701                 WHEN 4 THEN 'ENTERED_AMOUNT' 
176702                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
176703                 
176704                 ELSE null
176705               END                           source_code
176706             , CASE r
176707                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
176708                 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
176709                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
176710                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
176711                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
176712                 
176713                 ELSE null
176714               END                           source_value
176715             , null              source_meaning
176716          FROM  xla_events_gt     xet  
176717         , CST_XLA_RCV_LINES_V  l2
176718             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
176719         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
176720           AND xet.event_class_code = C_EVENT_CLASS_CODE
176721             AND l2.event_id          = xet.event_id
176722 
176723 )
176724 ;
176725 --
176726 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176727 
176728       trace
176729          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
176730          ,p_level    => C_LEVEL_STATEMENT
176731          ,p_module   => l_log_module);
176732 
176733 END IF;
176734 
176735 
176736 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
176737       trace
176738          (p_msg      => 'END of insert_sources_284'
176739          ,p_level    => C_LEVEL_PROCEDURE
176740          ,p_module   => l_log_module);
176741 END IF;
176742 EXCEPTION
176743   WHEN xla_exceptions_pkg.application_exception THEN
176744       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
176745             trace
176746                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
176747                ,p_level    => C_LEVEL_EXCEPTION
176748                ,p_module   => l_log_module);
176749       END IF;
176750       RAISE;
176751   WHEN OTHERS THEN
176752       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
176753             trace
176754                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
176755                ,p_level    => C_LEVEL_EXCEPTION
176756                ,p_module   => l_log_module);
176757        END IF;
176758        xla_exceptions_pkg.raise_message
176759            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_284');
176760 END insert_sources_284;
176761 --
176762 
176763 ---------------------------------------
176764 --
176765 -- PRIVATE FUNCTION
176766 --         EventClass_284
176767 --
176768 ----------------------------------------
176769 --
176770 FUNCTION EventClass_284
176771        (p_application_id         IN NUMBER
176772        ,p_base_ledger_id         IN NUMBER
176773        ,p_target_ledger_id       IN NUMBER
176774        ,p_language               IN VARCHAR2
176775        ,p_currency_code          IN VARCHAR2
176776        ,p_sla_ledger_id          IN NUMBER
176777        ,p_pad_start_date         IN DATE
176778        ,p_pad_end_date           IN DATE
176779        ,p_primary_ledger_id      IN NUMBER)
176780 RETURN BOOLEAN IS
176781 --
176782 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RETR_PRICE_ADJ_DEL_ALL';
176783 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'RETR_PRICE_ADJ_DEL';
176784 
176785 l_calculate_acctd_flag   VARCHAR2(1) :='N';
176786 l_calculate_g_l_flag     VARCHAR2(1) :='N';
176787 --
176788 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
176789 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
176790 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
176791 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
176792 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
176793 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
176794 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
176795 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
176796 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
176797 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
176798 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
176799 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
176800 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
176801 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
176802 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
176803 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
176804 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
176805 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
176806 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
176807 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
176808 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
176809 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
176810 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
176811 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
176812 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
176813 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
176814 
176815 l_event_id                             NUMBER;
176816 l_previous_event_id                    NUMBER;
176817 l_first_event_id                       NUMBER;
176818 l_last_event_id                        NUMBER;
176819 
176820 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
176821 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
176822 --
176823 --
176824 l_result                    BOOLEAN := TRUE;
176825 l_rows                      NUMBER  := 1000;
176826 l_event_type_name           VARCHAR2(80) := 'All';
176827 l_event_class_name          VARCHAR2(80) := 'Retroactive Price Adjustment to Delivery';
176828 l_description               VARCHAR2(4000);
176829 l_transaction_reversal      NUMBER;
176830 l_ae_header_id              NUMBER;
176831 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
176832 l_log_module                VARCHAR2(240);
176833 --
176834 l_acct_reversal_source      VARCHAR2(30);
176835 l_trx_reversal_source       VARCHAR2(30);
176836 
176837 l_continue_with_lines       BOOLEAN := TRUE;
176838 --
176839 l_acc_rev_gl_date_source    DATE;                      -- 4262811
176840 --
176841 type t_array_event_id is table of number index by binary_integer;
176842 
176843 l_rec_array_event                    t_rec_array_event;
176844 l_null_rec_array_event               t_rec_array_event;
176845 l_array_ae_header_id                 xla_number_array_type;
176846 l_actual_flag                        VARCHAR2(1) := NULL;
176847 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
176848 l_balance_type_code                  VARCHAR2(1) :=NULL;
176849 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
176850 
176851 --
176852 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
176853 --
176854 
176855 TYPE t_array_source_12 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
176856 TYPE t_array_source_15 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
176857 TYPE t_array_source_19 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
176858 TYPE t_array_source_20 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
176859 TYPE t_array_source_38 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
176860 
176861 TYPE t_array_source_4 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
176862 TYPE t_array_source_5 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
176863 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
176864 TYPE t_array_source_18 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
176865 TYPE t_array_source_22 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
176866 
176867 l_array_source_12              t_array_source_12;
176868 l_array_source_12_meaning      t_array_lookup_meaning;
176869 l_array_source_15              t_array_source_15;
176870 l_array_source_19              t_array_source_19;
176871 l_array_source_20              t_array_source_20;
176872 l_array_source_38              t_array_source_38;
176873 l_array_source_38_meaning      t_array_lookup_meaning;
176874 
176875 l_array_source_4      t_array_source_4;
176876 l_array_source_5      t_array_source_5;
176877 l_array_source_11      t_array_source_11;
176878 l_array_source_18      t_array_source_18;
176879 l_array_source_22      t_array_source_22;
176880 
176881 --
176882 CURSOR header_cur
176883 IS
176884 SELECT /*+ leading(xet) cardinality(xet,1) */
176885 -- Event Class Code: RETR_PRICE_ADJ_DEL
176886     xet.entity_id
176887    ,xet.legal_entity_id
176888    ,xet.entity_code
176889    ,xet.transaction_number
176890    ,xet.event_id
176891    ,xet.event_class_code
176892    ,xet.event_type_code
176893    ,xet.event_number
176894    ,xet.event_date
176895    ,xet.transaction_date
176896    ,xet.reference_num_1
176897    ,xet.reference_num_2
176898    ,xet.reference_num_3
176899    ,xet.reference_num_4
176900    ,xet.reference_char_1
176901    ,xet.reference_char_2
176902    ,xet.reference_char_3
176903    ,xet.reference_char_4
176904    ,xet.reference_date_1
176905    ,xet.reference_date_2
176906    ,xet.reference_date_3
176907    ,xet.reference_date_4
176908    ,xet.event_created_by
176909    ,xet.budgetary_control_flag 
176910   , h1.DISTRIBUTION_TYPE    source_12
176911   , fvl12.meaning   source_12_meaning
176912   , h1.CURRENCY_CODE    source_15
176913   , h1.CURRENCY_CONVERSION_DATE    source_19
176914   , h1.CURRENCY_CONVERSION_RATE    source_20
176915   , h1.TRANSFER_TO_GL_INDICATOR    source_38
176916   , fvl38.meaning   source_38_meaning
176917   FROM xla_events_gt     xet 
176918   , CST_XLA_RCV_HEADERS_V  h1
176919   , fnd_lookup_values    fvl12
176920   , fnd_lookup_values    fvl38
176921  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
176922    and xet.event_class_code = C_EVENT_CLASS_CODE
176923    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
176924    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
176925   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
176926   AND fvl12.view_application_id(+) = 700
176927   AND fvl12.language(+)            = USERENV('LANG')
176928      AND fvl38.lookup_type(+)         = 'YES_NO'
176929   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
176930   AND fvl38.view_application_id(+) = 0
176931   AND fvl38.language(+)            = USERENV('LANG')
176932   
176933  ORDER BY event_id
176934 ;
176935 
176936 
176937 --
176938 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
176939 IS
176940 SELECT  /*+ leading(xet) cardinality(xet,1) */
176941 -- Event Class Code: RETR_PRICE_ADJ_DEL
176942     xet.entity_id
176943    ,xet.legal_entity_id
176944    ,xet.entity_code
176945    ,xet.transaction_number
176946    ,xet.event_id
176947    ,xet.event_class_code
176948    ,xet.event_type_code
176949    ,xet.event_number
176950    ,xet.event_date
176951    ,xet.transaction_date
176952    ,xet.reference_num_1
176953    ,xet.reference_num_2
176954    ,xet.reference_num_3
176955    ,xet.reference_num_4
176956    ,xet.reference_char_1
176957    ,xet.reference_char_2
176958    ,xet.reference_char_3
176959    ,xet.reference_char_4
176960    ,xet.reference_date_1
176961    ,xet.reference_date_2
176962    ,xet.reference_date_3
176963    ,xet.reference_date_4
176964    ,xet.event_created_by
176965    ,xet.budgetary_control_flag
176966  , l2.LINE_NUMBER  
176967   , l2.CODE_COMBINATION_ID    source_4
176968   , l2.RCV_ACCOUNTING_LINE_TYPE    source_5
176969   , l2.DISTRIBUTION_IDENTIFIER    source_11
176970   , l2.ENTERED_AMOUNT    source_18
176971   , l2.ACCOUNTED_AMOUNT    source_22
176972   FROM xla_events_gt     xet 
176973   , CST_XLA_RCV_LINES_V  l2
176974  WHERE xet.event_id between x_first_event_id and x_last_event_id
176975    and xet.event_date between p_pad_start_date and p_pad_end_date
176976    and xet.event_class_code = C_EVENT_CLASS_CODE
176977    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
176978 ;
176979 
176980 --
176981 BEGIN
176982 IF g_log_enabled THEN
176983    l_log_module := C_DEFAULT_MODULE||'.EventClass_284';
176984 END IF;
176985 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
176986    trace
176987       (p_msg      => 'BEGIN of EventClass_284'
176988       ,p_level    => C_LEVEL_PROCEDURE
176989       ,p_module   => l_log_module);
176990 END IF;
176991 
176992 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176993    trace
176994       (p_msg      => 'p_application_id = '||p_application_id||
176995                      ' - p_base_ledger_id = '||p_base_ledger_id||
176996                      ' - p_target_ledger_id  = '||p_target_ledger_id||
176997                      ' - p_language = '||p_language||
176998                      ' - p_currency_code = '||p_currency_code||
176999                      ' - p_sla_ledger_id = '||p_sla_ledger_id
177000       ,p_level    => C_LEVEL_STATEMENT
177001       ,p_module   => l_log_module);
177002 END IF;
177003 --
177004 -- initialze arrays
177005 --
177006 g_array_event.DELETE;
177007 l_rec_array_event := l_null_rec_array_event;
177008 --
177009 --------------------------------------
177010 -- 4262811 Initialze MPA Line Number
177011 --------------------------------------
177012 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
177013 
177014 --
177015 
177016 --
177017 OPEN header_cur;
177018 --
177019 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177020    trace
177021    (p_msg      => 'SQL - FETCH header_cur'
177022    ,p_level    => C_LEVEL_STATEMENT
177023    ,p_module   => l_log_module);
177024 END IF;
177025 --
177026 LOOP
177027 FETCH header_cur BULK COLLECT INTO
177028         l_array_entity_id
177029       , l_array_legal_entity_id
177030       , l_array_entity_code
177031       , l_array_transaction_num
177032       , l_array_event_id
177033       , l_array_class_code
177034       , l_array_event_type
177035       , l_array_event_number
177036       , l_array_event_date
177037       , l_array_transaction_date
177038       , l_array_reference_num_1
177039       , l_array_reference_num_2
177040       , l_array_reference_num_3
177041       , l_array_reference_num_4
177042       , l_array_reference_char_1
177043       , l_array_reference_char_2
177044       , l_array_reference_char_3
177045       , l_array_reference_char_4
177046       , l_array_reference_date_1
177047       , l_array_reference_date_2
177048       , l_array_reference_date_3
177049       , l_array_reference_date_4
177050       , l_array_event_created_by
177051       , l_array_budgetary_control_flag 
177052       , l_array_source_12
177053       , l_array_source_12_meaning
177054       , l_array_source_15
177055       , l_array_source_19
177056       , l_array_source_20
177057       , l_array_source_38
177058       , l_array_source_38_meaning
177059       LIMIT l_rows;
177060 --
177061 IF (C_LEVEL_EVENT >= g_log_level) THEN
177062    trace
177063    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
177064    ,p_level    => C_LEVEL_EVENT
177065    ,p_module   => l_log_module);
177066 END IF;
177067 --
177068 EXIT WHEN l_array_entity_id.COUNT = 0;
177069 
177070 -- initialize arrays
177071 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
177072 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
177073 
177074 --
177075 -- Bug 4458708
177076 --
177077 XLA_AE_LINES_PKG.g_LineNumber := 0;
177078 
177079 
177080 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
177081 g_last_hdr_idx := l_array_event_id.LAST;
177082 --
177083 -- loop for the headers. Each iteration is for each header extract row
177084 -- fetched in header cursor
177085 --
177086 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
177087 
177088 --
177089 -- set event info as cache for other routines to refer event attributes
177090 --
177091 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
177092    (p_application_id           => p_application_id
177093    ,p_primary_ledger_id        => p_primary_ledger_id
177094    ,p_base_ledger_id           => p_base_ledger_id
177095    ,p_target_ledger_id         => p_target_ledger_id
177096    ,p_entity_id                => l_array_entity_id(hdr_idx)
177097    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
177098    ,p_entity_code              => l_array_entity_code(hdr_idx)
177099    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
177100    ,p_event_id                 => l_array_event_id(hdr_idx)
177101    ,p_event_class_code         => l_array_class_code(hdr_idx)
177102    ,p_event_type_code          => l_array_event_type(hdr_idx)
177103    ,p_event_number             => l_array_event_number(hdr_idx)
177104    ,p_event_date               => l_array_event_date(hdr_idx)
177105    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
177106    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
177107    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
177108    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
177109    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
177110    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
177111    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
177112    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
177113    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
177114    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
177115    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
177116    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
177117    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
177118    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
177119    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
177120 
177121 --
177122 -- set the status of entry to C_VALID (0)
177123 --
177124 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
177125 
177126 --
177127 -- initialize a row for ae header
177128 --
177129 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
177130 
177131 l_event_id := l_array_event_id(hdr_idx);
177132 
177133 --
177134 -- storing the hdr_idx for event. May be used by line cursor.
177135 --
177136 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
177137 
177138 --
177139 -- store sources from header extract. This can be improved to
177140 -- store only those sources from header extract that may be used in lines
177141 --
177142 
177143 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
177144 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
177145 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
177146 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
177147 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
177148 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
177149 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
177150 
177151 --
177152 -- initilaize the status of ae headers for diffrent balance types
177153 -- the status is initialised to C_NOT_CREATED (2)
177154 --
177155 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
177156 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
177157 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
177158 
177159 --
177160 -- call api to validate and store accounting attributes for header
177161 --
177162 
177163 ------------------------------------------------------------
177164 -- Accrual Reversal : to get date for Standard Source (NONE)
177165 ------------------------------------------------------------
177166 l_acc_rev_gl_date_source := NULL;
177167 
177168      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
177169       l_rec_acct_attrs.array_date_value(1) := 
177170 xla_ae_sources_pkg.GetSystemSourceDate(
177171    p_source_code           => 'XLA_REFERENCE_DATE_1'
177172  , p_source_type_code      => 'Y'
177173  , p_source_application_id =>  602
177174 );
177175      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
177176       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
177177 
177178 
177179 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
177180 
177181 XLA_AE_HEADER_PKG.SetJeCategoryName;
177182 
177183 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
177184 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
177185 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
177186 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
177187 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
177188 
177189 
177190 -- No header level analytical criteria
177191 
177192 --
177193 --accounting attribute enhancement, bug 3612931
177194 --
177195 l_trx_reversal_source := SUBSTR(NULL, 1,30);
177196 
177197 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
177198    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
177199 
177200    xla_accounting_err_pkg.build_message
177201       (p_appli_s_name            => 'XLA'
177202       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
177203       ,p_token_1                 => 'ACCT_ATTR_NAME'
177204       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
177205       ,p_token_2                 => 'PRODUCT_NAME'
177206       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
177207       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
177208       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
177209       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
177210 
177211 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
177212    --
177213    -- following sets the accounting attributes needed to reverse
177214    -- accounting for a distributeion
177215    --
177216    xla_ae_lines_pkg.SetTrxReversalAttrs
177217       (p_event_id              => l_event_id
177218       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
177219       ,p_trx_reversal_source   => l_trx_reversal_source);
177220 
177221 END IF;
177222 
177223 
177224 ----------------------------------------------------------------
177225 -- 4262811 -  update the header statuses to invalid in need be
177226 ----------------------------------------------------------------
177227 --
177228 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
177229 
177230 
177231   -----------------------------------------------
177232   -- No accrual reversal for the event class/type
177233   -----------------------------------------------
177234 ----------------------------------------------------------------
177235 
177236 --
177237 -- this ends the header loop iteration for one bulk fetch
177238 --
177239 END LOOP;
177240 
177241 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
177242 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
177243 
177244 --
177245 -- insert dummy rows into lines gt table that were created due to
177246 -- transaction reversals
177247 --
177248 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
177249    l_result := XLA_AE_LINES_PKG.InsertLines;
177250 END IF;
177251 
177252 --
177253 -- reset the temp_line_num for each set of events fetched from header
177254 -- cursor rather than doing it for each new event in line cursor
177255 -- Bug 3939231
177256 --
177257 xla_ae_lines_pkg.g_temp_line_num := 0;
177258 
177259 
177260 
177261 --
177262 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
177263 --
177264 --
177265 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177266 
177267       trace
177268          (p_msg      => 'SQL - FETCH line_cur'
177269          ,p_level    => C_LEVEL_STATEMENT
177270          ,p_module   => l_log_module);
177271 
177272 END IF;
177273 --
177274 --
177275 LOOP
177276   --
177277   FETCH line_cur BULK COLLECT INTO
177278         l_array_entity_id
177279       , l_array_legal_entity_id
177280       , l_array_entity_code
177281       , l_array_transaction_num
177282       , l_array_event_id
177283       , l_array_class_code
177284       , l_array_event_type
177285       , l_array_event_number
177286       , l_array_event_date
177287       , l_array_transaction_date
177288       , l_array_reference_num_1
177289       , l_array_reference_num_2
177290       , l_array_reference_num_3
177291       , l_array_reference_num_4
177292       , l_array_reference_char_1
177293       , l_array_reference_char_2
177294       , l_array_reference_char_3
177295       , l_array_reference_char_4
177296       , l_array_reference_date_1
177297       , l_array_reference_date_2
177298       , l_array_reference_date_3
177299       , l_array_reference_date_4
177300       , l_array_event_created_by
177301       , l_array_budgetary_control_flag
177302       , l_array_extract_line_num 
177303       , l_array_source_4
177304       , l_array_source_5
177305       , l_array_source_11
177306       , l_array_source_18
177307       , l_array_source_22
177308       LIMIT l_rows;
177309 
177310   --
177311   IF (C_LEVEL_EVENT >= g_log_level) THEN
177312             trace
177313                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
177314                ,p_level    => C_LEVEL_EVENT
177315                ,p_module   => l_log_module);
177316   END IF;
177317   --
177318   EXIT WHEN l_array_entity_id.count = 0;
177319 
177320   XLA_AE_LINES_PKG.g_rec_lines := null;
177321 
177322 --
177323 -- Bug 4458708
177324 --
177325 XLA_AE_LINES_PKG.g_LineNumber := 0;
177326 --
177327 --
177328 
177329 FOR Idx IN 1..l_array_event_id.count LOOP
177330    --
177331    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
177332    --
177333    l_event_id := l_array_event_id(idx);  -- 5648433
177334 
177335    --
177336    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
177337    --
177338 
177339    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
177340              (g_array_event(l_event_id).array_value_num('header_index'))
177341          ,'N'
177342          ) <> 'Y'
177343    THEN
177344       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177345          trace
177346             (p_msg      => 'Trancaction revesal option is not Y '
177347             ,p_level    => C_LEVEL_STATEMENT
177348             ,p_module   => l_log_module);
177349       END IF;
177350 
177351 --
177352 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
177353 --
177354 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
177355 --
177356 -- set event info as cache for other routines to refer event attributes
177357 --
177358 
177359 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
177360    l_previous_event_id := l_event_id;
177361 
177362    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
177363       (p_application_id           => p_application_id
177364       ,p_primary_ledger_id        => p_primary_ledger_id
177365       ,p_base_ledger_id           => p_base_ledger_id
177366       ,p_target_ledger_id         => p_target_ledger_id
177367       ,p_entity_id                => l_array_entity_id(Idx)
177368       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
177369       ,p_entity_code              => l_array_entity_code(Idx)
177370       ,p_transaction_num          => l_array_transaction_num(Idx)
177371       ,p_event_id                 => l_array_event_id(Idx)
177372       ,p_event_class_code         => l_array_class_code(Idx)
177373       ,p_event_type_code          => l_array_event_type(Idx)
177374       ,p_event_number             => l_array_event_number(Idx)
177375       ,p_event_date               => l_array_event_date(Idx)
177376       ,p_transaction_date         => l_array_transaction_date(Idx)
177377       ,p_reference_num_1          => l_array_reference_num_1(Idx)
177378       ,p_reference_num_2          => l_array_reference_num_2(Idx)
177379       ,p_reference_num_3          => l_array_reference_num_3(Idx)
177380       ,p_reference_num_4          => l_array_reference_num_4(Idx)
177381       ,p_reference_char_1         => l_array_reference_char_1(Idx)
177382       ,p_reference_char_2         => l_array_reference_char_2(Idx)
177383       ,p_reference_char_3         => l_array_reference_char_3(Idx)
177384       ,p_reference_char_4         => l_array_reference_char_4(Idx)
177385       ,p_reference_date_1         => l_array_reference_date_1(Idx)
177386       ,p_reference_date_2         => l_array_reference_date_2(Idx)
177387       ,p_reference_date_3         => l_array_reference_date_3(Idx)
177388       ,p_reference_date_4         => l_array_reference_date_4(Idx)
177389       ,p_event_created_by         => l_array_event_created_by(Idx)
177390       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
177391        --
177392 END IF;
177393 
177394 
177395 
177396 --
177397 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
177398 
177399 l_acct_reversal_source := SUBSTR(NULL, 1,30);
177400 
177401 IF l_continue_with_lines THEN
177402    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
177403       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
177404 
177405       xla_accounting_err_pkg.build_message
177406          (p_appli_s_name            => 'XLA'
177407          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
177408          ,p_token_1                 => 'LINE_NUMBER'
177409          ,p_value_1                 => l_array_extract_line_num(Idx)
177410          ,p_token_2                 => 'PRODUCT_NAME'
177411          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
177412          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
177413          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
177414          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
177415 
177416    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
177417       --
177418       -- following sets the accounting attributes needed to reverse
177419       -- accounting for a distributeion
177420       --
177421 
177422       --
177423       -- 5217187
177424       --
177425       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
177426       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
177427                                        g_array_event(l_event_id).array_value_num('header_index'));
177428       --
177429       --
177430 
177431       -- No reversal code generated
177432 
177433       xla_ae_lines_pkg.SetAcctReversalAttrs
177434          (p_event_id             => l_event_id
177435          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
177436          ,p_calculate_acctd_flag => l_calculate_acctd_flag
177437          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
177438    END IF;
177439 
177440    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
177441        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
177442 
177443 --
177444 AcctLineType_13 (
177445  p_application_id  => p_application_id
177446  ,p_event_id     => l_event_id
177447  ,p_calculate_acctd_flag => l_calculate_acctd_flag
177448  ,p_calculate_g_l_flag => l_calculate_g_l_flag
177449  ,p_actual_flag => l_actual_flag
177450  ,p_balance_type_code => l_balance_type_code
177451  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
177452  
177453  , p_source_4 => l_array_source_4(Idx)
177454  , p_source_5 => l_array_source_5(Idx)
177455  , p_source_11 => l_array_source_11(Idx)
177456  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
177457  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
177458  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
177459  , p_source_18 => l_array_source_18(Idx)
177460  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
177461  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
177462  , p_source_22 => l_array_source_22(Idx)
177463  );
177464 If(l_balance_type_code = 'A') THEN
177465   l_actual_gain_loss_ref := l_gain_or_loss_ref;
177466 END IF;
177467 
177468 --
177469 
177470 
177471 --
177472 AcctLineType_240 (
177473  p_application_id  => p_application_id
177474  ,p_event_id     => l_event_id
177475  ,p_calculate_acctd_flag => l_calculate_acctd_flag
177476  ,p_calculate_g_l_flag => l_calculate_g_l_flag
177477  ,p_actual_flag => l_actual_flag
177478  ,p_balance_type_code => l_balance_type_code
177479  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
177480  
177481  , p_source_4 => l_array_source_4(Idx)
177482  , p_source_5 => l_array_source_5(Idx)
177483  , p_source_11 => l_array_source_11(Idx)
177484  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
177485  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
177486  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
177487  , p_source_18 => l_array_source_18(Idx)
177488  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
177489  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
177490  , p_source_22 => l_array_source_22(Idx)
177491  );
177492 If(l_balance_type_code = 'A') THEN
177493   l_actual_gain_loss_ref := l_gain_or_loss_ref;
177494 END IF;
177495 
177496 --
177497 
177498 
177499 --
177500 AcctLineType_246 (
177501  p_application_id  => p_application_id
177502  ,p_event_id     => l_event_id
177503  ,p_calculate_acctd_flag => l_calculate_acctd_flag
177504  ,p_calculate_g_l_flag => l_calculate_g_l_flag
177505  ,p_actual_flag => l_actual_flag
177506  ,p_balance_type_code => l_balance_type_code
177507  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
177508  
177509  , p_source_4 => l_array_source_4(Idx)
177510  , p_source_5 => l_array_source_5(Idx)
177511  , p_source_11 => l_array_source_11(Idx)
177512  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
177513  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
177514  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
177515  , p_source_18 => l_array_source_18(Idx)
177516  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
177517  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
177518  , p_source_22 => l_array_source_22(Idx)
177519  );
177520 If(l_balance_type_code = 'A') THEN
177521   l_actual_gain_loss_ref := l_gain_or_loss_ref;
177522 END IF;
177523 
177524 --
177525 
177526       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
177527       -- or secondary ledger that has different currency with primary
177528       -- or alc that is calculated by sla
177529       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
177530             (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'))
177531 
177532 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
177533 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
177534           AND (l_actual_flag = 'A')) THEN
177535         XLA_AE_LINES_PKG.CreateGainOrLossLines(
177536           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
177537          ,p_application_id   => p_application_id
177538          ,p_amb_context_code => 'DEFAULT'
177539          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
177540          ,p_event_class_code => C_EVENT_CLASS_CODE
177541          ,p_event_type_code  => C_EVENT_TYPE_CODE
177542          
177543          ,p_gain_ccid        => -1
177544          ,p_loss_ccid        => -1
177545 
177546          ,p_actual_flag      => l_actual_flag
177547          ,p_enc_flag         => null
177548          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
177549          ,p_enc_g_l_ref      => null
177550          );
177551       END IF;
177552    END IF;
177553 END IF;
177554 
177555    ELSE
177556       --
177557       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
177558       --
177559       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177560          trace
177561             (p_msg      => 'Trancaction revesal option is Y'
177562             ,p_level    => C_LEVEL_STATEMENT
177563             ,p_module   => l_log_module);
177564       END IF;
177565    END IF;
177566 
177567 END LOOP;
177568 l_result := XLA_AE_LINES_PKG.InsertLines ;
177569 end loop;
177570 close line_cur;
177571 
177572 
177573 --
177574 -- insert headers into xla_ae_headers_gt table
177575 --
177576 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
177577 
177578 -- insert into errors table here.
177579 
177580 END LOOP;
177581 
177582 --
177583 -- 4865292
177584 --
177585 -- Compare g_hdr_extract_count with event count in
177586 -- CreateHeadersAndLines.
177587 --
177588 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
177589 
177590 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177591    trace (p_msg     => '# rows extracted from header extract objects '
177592                     || ' (running total): '
177593                     || g_hdr_extract_count
177594          ,p_level   => C_LEVEL_STATEMENT
177595          ,p_module  => l_log_module);
177596 END IF;
177597 
177598 CLOSE header_cur;
177599 --
177600 
177601 --
177602 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
177603    trace
177604       (p_msg      => 'END of EventClass_284'
177605       ,p_level    => C_LEVEL_PROCEDURE
177606       ,p_module   => l_log_module);
177607 END IF;
177608 --
177609 RETURN l_result;
177610 EXCEPTION
177611 WHEN xla_exceptions_pkg.application_exception THEN
177612    
177613 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
177614 
177615    
177616 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
177617 
177618    RAISE;
177619 
177620 WHEN NO_DATA_FOUND THEN
177621 
177622 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
177623 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
177624 
177625 FOR header_record IN header_cur
177626 LOOP
177627     l_array_header_events(header_record.event_id) := header_record.event_id;
177628 END LOOP;
177629 
177630 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
177631 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
177632 
177633 fnd_file.put_line(fnd_file.LOG, '                    ');
177634 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
177635 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
177636 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
177637 
177638 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
177639 LOOP
177640 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
177641 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
177642         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
177643 	END IF;
177644 END LOOP;
177645 
177646 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
177647 fnd_file.put_line(fnd_file.LOG, '                    ');
177648 
177649 
177650 xla_exceptions_pkg.raise_message
177651       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_284');
177652 
177653 
177654 WHEN OTHERS THEN
177655    xla_exceptions_pkg.raise_message
177656       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_284');
177657 END EventClass_284;
177658 --
177659 
177660 ---------------------------------------
177661 --
177662 -- PRIVATE PROCEDURE
177663 --         insert_sources_285
177664 --
177665 ----------------------------------------
177666 --
177667 PROCEDURE insert_sources_285(
177668                                 p_target_ledger_id       IN NUMBER
177669                               , p_language               IN VARCHAR2
177670                               , p_sla_ledger_id          IN NUMBER
177671                               , p_pad_start_date         IN DATE
177672                               , p_pad_end_date           IN DATE
177673                          )
177674 IS
177675 
177676 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RETR_PRICE_ADJ_RCV_ALL';
177677 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'RETR_PRICE_ADJ_RCV';
177678 p_apps_owner                   VARCHAR2(30);
177679 l_log_module                   VARCHAR2(240);
177680 BEGIN
177681 IF g_log_enabled THEN
177682       l_log_module := C_DEFAULT_MODULE||'.insert_sources_285';
177683 END IF;
177684 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
177685 
177686       trace
177687          (p_msg      => 'BEGIN of insert_sources_285'
177688          ,p_level    => C_LEVEL_PROCEDURE
177689          ,p_module   => l_log_module);
177690 
177691 END IF;
177692 
177693 -- select APPS owner
177694 SELECT oracle_username
177695   INTO p_apps_owner
177696   FROM fnd_oracle_userid
177697  WHERE read_only_flag = 'U'
177698 ;
177699 
177700 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177701       trace
177702          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
177703                         ' - p_language = '||p_language||
177704                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
177705                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
177706                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
177707                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
177708          ,p_level    => C_LEVEL_STATEMENT
177709          ,p_module   => l_log_module);
177710 END IF;
177711 
177712 
177713 --
177714 INSERT INTO xla_diag_sources --hdr2
177715 (
177716         event_id
177717       , ledger_id
177718       , sla_ledger_id
177719       , description_language
177720       , object_name
177721       , object_type_code
177722       , line_number
177723       , source_application_id
177724       , source_type_code
177725       , source_code
177726       , source_value
177727       , source_meaning
177728       , created_by
177729       , creation_date
177730       , last_update_date
177731       , last_updated_by
177732       , last_update_login
177733       , program_update_date
177734       , program_application_id
177735       , program_id
177736       , request_id
177737 )
177738 SELECT
177739         event_id
177740       , p_target_ledger_id
177741       , p_sla_ledger_id
177742       , p_language
177743       , object_name
177744       , object_type_code
177745       , line_number
177746       , source_application_id
177747       , source_type_code
177748       , source_code
177749       , SUBSTR(source_value ,1,1996)
177750       , SUBSTR(source_meaning ,1,200)
177751       , xla_environment_pkg.g_Usr_Id
177752       , TRUNC(SYSDATE)
177753       , TRUNC(SYSDATE)
177754       , xla_environment_pkg.g_Usr_Id
177755       , xla_environment_pkg.g_Login_Id
177756       , TRUNC(SYSDATE)
177757       , xla_environment_pkg.g_Prog_Appl_Id
177758       , xla_environment_pkg.g_Prog_Id
177759       , xla_environment_pkg.g_Req_Id
177760   FROM (
177761        SELECT xet.event_id                  event_id
177762             , 0                          line_number
177763             , CASE r
177764                WHEN 1 THEN 'CST_XLA_RCV_HEADERS_V' 
177765                 WHEN 2 THEN 'CST_XLA_RCV_HEADERS_V' 
177766                 WHEN 3 THEN 'CST_XLA_RCV_HEADERS_V' 
177767                 WHEN 4 THEN 'CST_XLA_RCV_HEADERS_V' 
177768                 WHEN 5 THEN 'CST_XLA_RCV_HEADERS_V' 
177769                 WHEN 6 THEN 'CST_XLA_RCV_HEADERS_V' 
177770                 
177771                ELSE null
177772               END                           object_name
177773             , CASE r
177774                 WHEN 1 THEN 'HEADER' 
177775                 WHEN 2 THEN 'HEADER' 
177776                 WHEN 3 THEN 'HEADER' 
177777                 WHEN 4 THEN 'HEADER' 
177778                 WHEN 5 THEN 'HEADER' 
177779                 WHEN 6 THEN 'HEADER' 
177780                 
177781                 ELSE null
177782               END                           object_type_code
177783             , CASE r
177784                 WHEN 1 THEN '707' 
177785                 WHEN 2 THEN '707' 
177786                 WHEN 3 THEN '707' 
177787                 WHEN 4 THEN '707' 
177788                 WHEN 5 THEN '707' 
177789                 WHEN 6 THEN '707' 
177790                 
177791                 ELSE null
177792               END                           source_application_id
177793             , 'S'             source_type_code
177794             , CASE r
177795                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
177796                 WHEN 2 THEN 'CURRENCY_CODE' 
177797                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
177798                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
177799                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
177800                 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR' 
177801                 
177802                 ELSE null
177803               END                           source_code
177804             , CASE r
177805                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
177806                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
177807                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
177808                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
177809                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
177810                 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
177811                 
177812                 ELSE null
177813               END                           source_value
177814             , CASE r
177815                 WHEN 1 THEN fvl12.meaning
177816                 WHEN 6 THEN fvl38.meaning
177817                 
177818                 ELSE null
177819               END               source_meaning
177820          FROM xla_events_gt     xet  
177821       , CST_XLA_RCV_HEADERS_V  h1
177822   , fnd_lookup_values    fvl12
177823   , fnd_lookup_values    fvl38
177824              ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
177825          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
177826            AND xet.event_class_code = C_EVENT_CLASS_CODE
177827               AND h1.event_id = xet.event_id
177828    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
177829   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
177830   AND fvl12.view_application_id(+) = 700
177831   AND fvl12.language(+)            = USERENV('LANG')
177832      AND fvl38.lookup_type(+)         = 'YES_NO'
177833   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
177834   AND fvl38.view_application_id(+) = 0
177835   AND fvl38.language(+)            = USERENV('LANG')
177836   
177837 )
177838 ;
177839 --
177840 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177841 
177842       trace
177843          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
177844          ,p_level    => C_LEVEL_STATEMENT
177845          ,p_module   => l_log_module);
177846 
177847 END IF;
177848 --
177849 
177850 
177851 
177852 --
177853 INSERT INTO xla_diag_sources  --line2
177854 (
177855         event_id
177856       , ledger_id
177857       , sla_ledger_id
177858       , description_language
177859       , object_name
177860       , object_type_code
177861       , line_number
177862       , source_application_id
177863       , source_type_code
177864       , source_code
177865       , source_value
177866       , source_meaning
177867       , created_by
177868       , creation_date
177869       , last_update_date
177870       , last_updated_by
177871       , last_update_login
177872       , program_update_date
177873       , program_application_id
177874       , program_id
177875       , request_id
177876 )
177877 SELECT  event_id
177878       , p_target_ledger_id
177879       , p_sla_ledger_id
177880       , p_language
177881       , object_name
177882       , object_type_code
177883       , line_number
177884       , source_application_id
177885       , source_type_code
177886       , source_code
177887       , SUBSTR(source_value,1,1996)
177888       , SUBSTR(source_meaning ,1,200)
177889       , xla_environment_pkg.g_Usr_Id
177890       , TRUNC(SYSDATE)
177891       , TRUNC(SYSDATE)
177892       , xla_environment_pkg.g_Usr_Id
177893       , xla_environment_pkg.g_Login_Id
177894       , TRUNC(SYSDATE)
177895       , xla_environment_pkg.g_Prog_Appl_Id
177896       , xla_environment_pkg.g_Prog_Id
177897       , xla_environment_pkg.g_Req_Id
177898   FROM (
177899        SELECT xet.event_id                  event_id
177900             , l2.line_number                 line_number
177901             , CASE r
177902                WHEN 1 THEN 'CST_XLA_RCV_LINES_V' 
177903                 WHEN 2 THEN 'CST_XLA_RCV_LINES_V' 
177904                 WHEN 3 THEN 'CST_XLA_RCV_LINES_V' 
177905                 WHEN 4 THEN 'CST_XLA_RCV_LINES_V' 
177906                 WHEN 5 THEN 'CST_XLA_RCV_LINES_V' 
177907                 
177908                ELSE null
177909               END                           object_name
177910             , CASE r
177911                 WHEN 1 THEN 'LINE' 
177912                 WHEN 2 THEN 'LINE' 
177913                 WHEN 3 THEN 'LINE' 
177914                 WHEN 4 THEN 'LINE' 
177915                 WHEN 5 THEN 'LINE' 
177916                 
177917                 ELSE null
177918               END                           object_type_code
177919             , CASE r
177920                 WHEN 1 THEN '707' 
177921                 WHEN 2 THEN '707' 
177922                 WHEN 3 THEN '707' 
177923                 WHEN 4 THEN '707' 
177924                 WHEN 5 THEN '707' 
177925                 
177926                 ELSE null
177927               END                           source_application_id
177928             , 'S'             source_type_code
177929             , CASE r
177930                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
177931                 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE' 
177932                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
177933                 WHEN 4 THEN 'ENTERED_AMOUNT' 
177934                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
177935                 
177936                 ELSE null
177937               END                           source_code
177938             , CASE r
177939                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
177940                 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
177941                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
177942                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
177943                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
177944                 
177945                 ELSE null
177946               END                           source_value
177947             , null              source_meaning
177948          FROM  xla_events_gt     xet  
177949         , CST_XLA_RCV_LINES_V  l2
177950             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
177951         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
177952           AND xet.event_class_code = C_EVENT_CLASS_CODE
177953             AND l2.event_id          = xet.event_id
177954 
177955 )
177956 ;
177957 --
177958 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177959 
177960       trace
177961          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
177962          ,p_level    => C_LEVEL_STATEMENT
177963          ,p_module   => l_log_module);
177964 
177965 END IF;
177966 
177967 
177968 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
177969       trace
177970          (p_msg      => 'END of insert_sources_285'
177971          ,p_level    => C_LEVEL_PROCEDURE
177972          ,p_module   => l_log_module);
177973 END IF;
177974 EXCEPTION
177975   WHEN xla_exceptions_pkg.application_exception THEN
177976       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
177977             trace
177978                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
177979                ,p_level    => C_LEVEL_EXCEPTION
177980                ,p_module   => l_log_module);
177981       END IF;
177982       RAISE;
177983   WHEN OTHERS THEN
177984       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
177985             trace
177986                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
177987                ,p_level    => C_LEVEL_EXCEPTION
177988                ,p_module   => l_log_module);
177989        END IF;
177990        xla_exceptions_pkg.raise_message
177991            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_285');
177992 END insert_sources_285;
177993 --
177994 
177995 ---------------------------------------
177996 --
177997 -- PRIVATE FUNCTION
177998 --         EventClass_285
177999 --
178000 ----------------------------------------
178001 --
178002 FUNCTION EventClass_285
178003        (p_application_id         IN NUMBER
178004        ,p_base_ledger_id         IN NUMBER
178005        ,p_target_ledger_id       IN NUMBER
178006        ,p_language               IN VARCHAR2
178007        ,p_currency_code          IN VARCHAR2
178008        ,p_sla_ledger_id          IN NUMBER
178009        ,p_pad_start_date         IN DATE
178010        ,p_pad_end_date           IN DATE
178011        ,p_primary_ledger_id      IN NUMBER)
178012 RETURN BOOLEAN IS
178013 --
178014 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RETR_PRICE_ADJ_RCV_ALL';
178015 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'RETR_PRICE_ADJ_RCV';
178016 
178017 l_calculate_acctd_flag   VARCHAR2(1) :='N';
178018 l_calculate_g_l_flag     VARCHAR2(1) :='N';
178019 --
178020 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178021 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178022 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
178023 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
178024 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178025 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
178026 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
178027 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178028 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178029 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178030 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178031 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178032 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178033 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178034 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
178035 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
178036 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
178037 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
178038 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178039 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178040 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178041 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178042 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
178043 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
178044 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
178045 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
178046 
178047 l_event_id                             NUMBER;
178048 l_previous_event_id                    NUMBER;
178049 l_first_event_id                       NUMBER;
178050 l_last_event_id                        NUMBER;
178051 
178052 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
178053 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
178054 --
178055 --
178056 l_result                    BOOLEAN := TRUE;
178057 l_rows                      NUMBER  := 1000;
178058 l_event_type_name           VARCHAR2(80) := 'All';
178059 l_event_class_name          VARCHAR2(80) := 'Retroactive Price Adjustment to Receipt';
178060 l_description               VARCHAR2(4000);
178061 l_transaction_reversal      NUMBER;
178062 l_ae_header_id              NUMBER;
178063 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
178064 l_log_module                VARCHAR2(240);
178065 --
178066 l_acct_reversal_source      VARCHAR2(30);
178067 l_trx_reversal_source       VARCHAR2(30);
178068 
178069 l_continue_with_lines       BOOLEAN := TRUE;
178070 --
178071 l_acc_rev_gl_date_source    DATE;                      -- 4262811
178072 --
178073 type t_array_event_id is table of number index by binary_integer;
178074 
178075 l_rec_array_event                    t_rec_array_event;
178076 l_null_rec_array_event               t_rec_array_event;
178077 l_array_ae_header_id                 xla_number_array_type;
178078 l_actual_flag                        VARCHAR2(1) := NULL;
178079 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
178080 l_balance_type_code                  VARCHAR2(1) :=NULL;
178081 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
178082 
178083 --
178084 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
178085 --
178086 
178087 TYPE t_array_source_12 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
178088 TYPE t_array_source_15 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
178089 TYPE t_array_source_19 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
178090 TYPE t_array_source_20 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
178091 TYPE t_array_source_21 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
178092 TYPE t_array_source_38 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
178093 
178094 TYPE t_array_source_4 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
178095 TYPE t_array_source_5 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
178096 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
178097 TYPE t_array_source_18 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
178098 TYPE t_array_source_22 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
178099 
178100 l_array_source_12              t_array_source_12;
178101 l_array_source_12_meaning      t_array_lookup_meaning;
178102 l_array_source_15              t_array_source_15;
178103 l_array_source_19              t_array_source_19;
178104 l_array_source_20              t_array_source_20;
178105 l_array_source_21              t_array_source_21;
178106 l_array_source_38              t_array_source_38;
178107 l_array_source_38_meaning      t_array_lookup_meaning;
178108 
178109 l_array_source_4      t_array_source_4;
178110 l_array_source_5      t_array_source_5;
178111 l_array_source_11      t_array_source_11;
178112 l_array_source_18      t_array_source_18;
178113 l_array_source_22      t_array_source_22;
178114 
178115 --
178116 CURSOR header_cur
178117 IS
178118 SELECT /*+ leading(xet) cardinality(xet,1) */
178119 -- Event Class Code: RETR_PRICE_ADJ_RCV
178120     xet.entity_id
178121    ,xet.legal_entity_id
178122    ,xet.entity_code
178123    ,xet.transaction_number
178124    ,xet.event_id
178125    ,xet.event_class_code
178126    ,xet.event_type_code
178127    ,xet.event_number
178128    ,xet.event_date
178129    ,xet.transaction_date
178130    ,xet.reference_num_1
178131    ,xet.reference_num_2
178132    ,xet.reference_num_3
178133    ,xet.reference_num_4
178134    ,xet.reference_char_1
178135    ,xet.reference_char_2
178136    ,xet.reference_char_3
178137    ,xet.reference_char_4
178138    ,xet.reference_date_1
178139    ,xet.reference_date_2
178140    ,xet.reference_date_3
178141    ,xet.reference_date_4
178142    ,xet.event_created_by
178143    ,xet.budgetary_control_flag 
178144   , h1.DISTRIBUTION_TYPE    source_12
178145   , fvl12.meaning   source_12_meaning
178146   , h1.CURRENCY_CODE    source_15
178147   , h1.CURRENCY_CONVERSION_DATE    source_19
178148   , h1.CURRENCY_CONVERSION_RATE    source_20
178149   , h1.CURRENCY_CONVERSION_TYPE    source_21
178150   , h1.TRANSFER_TO_GL_INDICATOR    source_38
178151   , fvl38.meaning   source_38_meaning
178152   FROM xla_events_gt     xet 
178153   , CST_XLA_RCV_HEADERS_V  h1
178154   , fnd_lookup_values    fvl12
178155   , fnd_lookup_values    fvl38
178156  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
178157    and xet.event_class_code = C_EVENT_CLASS_CODE
178158    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
178159    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
178160   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
178161   AND fvl12.view_application_id(+) = 700
178162   AND fvl12.language(+)            = USERENV('LANG')
178163      AND fvl38.lookup_type(+)         = 'YES_NO'
178164   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
178165   AND fvl38.view_application_id(+) = 0
178166   AND fvl38.language(+)            = USERENV('LANG')
178167   
178168  ORDER BY event_id
178169 ;
178170 
178171 
178172 --
178173 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
178174 IS
178175 SELECT  /*+ leading(xet) cardinality(xet,1) */
178176 -- Event Class Code: RETR_PRICE_ADJ_RCV
178177     xet.entity_id
178178    ,xet.legal_entity_id
178179    ,xet.entity_code
178180    ,xet.transaction_number
178181    ,xet.event_id
178182    ,xet.event_class_code
178183    ,xet.event_type_code
178184    ,xet.event_number
178185    ,xet.event_date
178186    ,xet.transaction_date
178187    ,xet.reference_num_1
178188    ,xet.reference_num_2
178189    ,xet.reference_num_3
178190    ,xet.reference_num_4
178191    ,xet.reference_char_1
178192    ,xet.reference_char_2
178193    ,xet.reference_char_3
178194    ,xet.reference_char_4
178195    ,xet.reference_date_1
178196    ,xet.reference_date_2
178197    ,xet.reference_date_3
178198    ,xet.reference_date_4
178199    ,xet.event_created_by
178200    ,xet.budgetary_control_flag
178201  , l2.LINE_NUMBER  
178202   , l2.CODE_COMBINATION_ID    source_4
178203   , l2.RCV_ACCOUNTING_LINE_TYPE    source_5
178204   , l2.DISTRIBUTION_IDENTIFIER    source_11
178205   , l2.ENTERED_AMOUNT    source_18
178206   , l2.ACCOUNTED_AMOUNT    source_22
178207   FROM xla_events_gt     xet 
178208   , CST_XLA_RCV_LINES_V  l2
178209  WHERE xet.event_id between x_first_event_id and x_last_event_id
178210    and xet.event_date between p_pad_start_date and p_pad_end_date
178211    and xet.event_class_code = C_EVENT_CLASS_CODE
178212    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
178213 ;
178214 
178215 --
178216 BEGIN
178217 IF g_log_enabled THEN
178218    l_log_module := C_DEFAULT_MODULE||'.EventClass_285';
178219 END IF;
178220 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
178221    trace
178222       (p_msg      => 'BEGIN of EventClass_285'
178223       ,p_level    => C_LEVEL_PROCEDURE
178224       ,p_module   => l_log_module);
178225 END IF;
178226 
178227 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178228    trace
178229       (p_msg      => 'p_application_id = '||p_application_id||
178230                      ' - p_base_ledger_id = '||p_base_ledger_id||
178231                      ' - p_target_ledger_id  = '||p_target_ledger_id||
178232                      ' - p_language = '||p_language||
178233                      ' - p_currency_code = '||p_currency_code||
178234                      ' - p_sla_ledger_id = '||p_sla_ledger_id
178235       ,p_level    => C_LEVEL_STATEMENT
178236       ,p_module   => l_log_module);
178237 END IF;
178238 --
178239 -- initialze arrays
178240 --
178241 g_array_event.DELETE;
178242 l_rec_array_event := l_null_rec_array_event;
178243 --
178244 --------------------------------------
178245 -- 4262811 Initialze MPA Line Number
178246 --------------------------------------
178247 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
178248 
178249 --
178250 
178251 --
178252 OPEN header_cur;
178253 --
178254 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178255    trace
178256    (p_msg      => 'SQL - FETCH header_cur'
178257    ,p_level    => C_LEVEL_STATEMENT
178258    ,p_module   => l_log_module);
178259 END IF;
178260 --
178261 LOOP
178262 FETCH header_cur BULK COLLECT INTO
178263         l_array_entity_id
178264       , l_array_legal_entity_id
178265       , l_array_entity_code
178266       , l_array_transaction_num
178267       , l_array_event_id
178268       , l_array_class_code
178269       , l_array_event_type
178270       , l_array_event_number
178271       , l_array_event_date
178272       , l_array_transaction_date
178273       , l_array_reference_num_1
178274       , l_array_reference_num_2
178275       , l_array_reference_num_3
178276       , l_array_reference_num_4
178277       , l_array_reference_char_1
178278       , l_array_reference_char_2
178279       , l_array_reference_char_3
178280       , l_array_reference_char_4
178281       , l_array_reference_date_1
178282       , l_array_reference_date_2
178283       , l_array_reference_date_3
178284       , l_array_reference_date_4
178285       , l_array_event_created_by
178286       , l_array_budgetary_control_flag 
178287       , l_array_source_12
178288       , l_array_source_12_meaning
178289       , l_array_source_15
178290       , l_array_source_19
178291       , l_array_source_20
178292       , l_array_source_21
178293       , l_array_source_38
178294       , l_array_source_38_meaning
178295       LIMIT l_rows;
178296 --
178297 IF (C_LEVEL_EVENT >= g_log_level) THEN
178298    trace
178299    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
178300    ,p_level    => C_LEVEL_EVENT
178301    ,p_module   => l_log_module);
178302 END IF;
178303 --
178304 EXIT WHEN l_array_entity_id.COUNT = 0;
178305 
178306 -- initialize arrays
178307 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
178308 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
178309 
178310 --
178311 -- Bug 4458708
178312 --
178313 XLA_AE_LINES_PKG.g_LineNumber := 0;
178314 
178315 
178316 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
178317 g_last_hdr_idx := l_array_event_id.LAST;
178318 --
178319 -- loop for the headers. Each iteration is for each header extract row
178320 -- fetched in header cursor
178321 --
178322 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
178323 
178324 --
178325 -- set event info as cache for other routines to refer event attributes
178326 --
178327 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
178328    (p_application_id           => p_application_id
178329    ,p_primary_ledger_id        => p_primary_ledger_id
178330    ,p_base_ledger_id           => p_base_ledger_id
178331    ,p_target_ledger_id         => p_target_ledger_id
178332    ,p_entity_id                => l_array_entity_id(hdr_idx)
178333    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
178334    ,p_entity_code              => l_array_entity_code(hdr_idx)
178335    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
178336    ,p_event_id                 => l_array_event_id(hdr_idx)
178337    ,p_event_class_code         => l_array_class_code(hdr_idx)
178338    ,p_event_type_code          => l_array_event_type(hdr_idx)
178339    ,p_event_number             => l_array_event_number(hdr_idx)
178340    ,p_event_date               => l_array_event_date(hdr_idx)
178341    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
178342    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
178343    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
178344    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
178345    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
178346    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
178347    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
178348    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
178349    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
178350    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
178351    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
178352    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
178353    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
178354    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
178355    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
178356 
178357 --
178358 -- set the status of entry to C_VALID (0)
178359 --
178360 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
178361 
178362 --
178363 -- initialize a row for ae header
178364 --
178365 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
178366 
178367 l_event_id := l_array_event_id(hdr_idx);
178368 
178369 --
178370 -- storing the hdr_idx for event. May be used by line cursor.
178371 --
178372 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
178373 
178374 --
178375 -- store sources from header extract. This can be improved to
178376 -- store only those sources from header extract that may be used in lines
178377 --
178378 
178379 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
178380 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
178381 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
178382 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
178383 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
178384 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
178385 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
178386 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
178387 
178388 --
178389 -- initilaize the status of ae headers for diffrent balance types
178390 -- the status is initialised to C_NOT_CREATED (2)
178391 --
178392 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
178393 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
178394 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
178395 
178396 --
178397 -- call api to validate and store accounting attributes for header
178398 --
178399 
178400 ------------------------------------------------------------
178401 -- Accrual Reversal : to get date for Standard Source (NONE)
178402 ------------------------------------------------------------
178403 l_acc_rev_gl_date_source := NULL;
178404 
178405      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
178406       l_rec_acct_attrs.array_date_value(1) := 
178407 xla_ae_sources_pkg.GetSystemSourceDate(
178408    p_source_code           => 'XLA_REFERENCE_DATE_1'
178409  , p_source_type_code      => 'Y'
178410  , p_source_application_id =>  602
178411 );
178412      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
178413       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
178414 
178415 
178416 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
178417 
178418 XLA_AE_HEADER_PKG.SetJeCategoryName;
178419 
178420 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
178421 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
178422 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
178423 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
178424 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
178425 
178426 
178427 -- No header level analytical criteria
178428 
178429 --
178430 --accounting attribute enhancement, bug 3612931
178431 --
178432 l_trx_reversal_source := SUBSTR(NULL, 1,30);
178433 
178434 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
178435    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
178436 
178437    xla_accounting_err_pkg.build_message
178438       (p_appli_s_name            => 'XLA'
178439       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
178440       ,p_token_1                 => 'ACCT_ATTR_NAME'
178441       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
178442       ,p_token_2                 => 'PRODUCT_NAME'
178443       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
178444       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
178445       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
178446       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
178447 
178448 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
178449    --
178450    -- following sets the accounting attributes needed to reverse
178451    -- accounting for a distributeion
178452    --
178453    xla_ae_lines_pkg.SetTrxReversalAttrs
178454       (p_event_id              => l_event_id
178455       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
178456       ,p_trx_reversal_source   => l_trx_reversal_source);
178457 
178458 END IF;
178459 
178460 
178461 ----------------------------------------------------------------
178462 -- 4262811 -  update the header statuses to invalid in need be
178463 ----------------------------------------------------------------
178464 --
178465 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
178466 
178467 
178468   -----------------------------------------------
178469   -- No accrual reversal for the event class/type
178470   -----------------------------------------------
178471 ----------------------------------------------------------------
178472 
178473 --
178474 -- this ends the header loop iteration for one bulk fetch
178475 --
178476 END LOOP;
178477 
178478 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
178479 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
178480 
178481 --
178482 -- insert dummy rows into lines gt table that were created due to
178483 -- transaction reversals
178484 --
178485 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
178486    l_result := XLA_AE_LINES_PKG.InsertLines;
178487 END IF;
178488 
178489 --
178490 -- reset the temp_line_num for each set of events fetched from header
178491 -- cursor rather than doing it for each new event in line cursor
178492 -- Bug 3939231
178493 --
178494 xla_ae_lines_pkg.g_temp_line_num := 0;
178495 
178496 
178497 
178498 --
178499 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
178500 --
178501 --
178502 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178503 
178504       trace
178505          (p_msg      => 'SQL - FETCH line_cur'
178506          ,p_level    => C_LEVEL_STATEMENT
178507          ,p_module   => l_log_module);
178508 
178509 END IF;
178510 --
178511 --
178512 LOOP
178513   --
178514   FETCH line_cur BULK COLLECT INTO
178515         l_array_entity_id
178516       , l_array_legal_entity_id
178517       , l_array_entity_code
178518       , l_array_transaction_num
178519       , l_array_event_id
178520       , l_array_class_code
178521       , l_array_event_type
178522       , l_array_event_number
178523       , l_array_event_date
178524       , l_array_transaction_date
178525       , l_array_reference_num_1
178526       , l_array_reference_num_2
178527       , l_array_reference_num_3
178528       , l_array_reference_num_4
178529       , l_array_reference_char_1
178530       , l_array_reference_char_2
178531       , l_array_reference_char_3
178532       , l_array_reference_char_4
178533       , l_array_reference_date_1
178534       , l_array_reference_date_2
178535       , l_array_reference_date_3
178536       , l_array_reference_date_4
178537       , l_array_event_created_by
178538       , l_array_budgetary_control_flag
178539       , l_array_extract_line_num 
178540       , l_array_source_4
178541       , l_array_source_5
178542       , l_array_source_11
178543       , l_array_source_18
178544       , l_array_source_22
178545       LIMIT l_rows;
178546 
178547   --
178548   IF (C_LEVEL_EVENT >= g_log_level) THEN
178549             trace
178550                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
178551                ,p_level    => C_LEVEL_EVENT
178552                ,p_module   => l_log_module);
178553   END IF;
178554   --
178555   EXIT WHEN l_array_entity_id.count = 0;
178556 
178557   XLA_AE_LINES_PKG.g_rec_lines := null;
178558 
178559 --
178560 -- Bug 4458708
178561 --
178562 XLA_AE_LINES_PKG.g_LineNumber := 0;
178563 --
178564 --
178565 
178566 FOR Idx IN 1..l_array_event_id.count LOOP
178567    --
178568    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
178569    --
178570    l_event_id := l_array_event_id(idx);  -- 5648433
178571 
178572    --
178573    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
178574    --
178575 
178576    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
178577              (g_array_event(l_event_id).array_value_num('header_index'))
178578          ,'N'
178579          ) <> 'Y'
178580    THEN
178581       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178582          trace
178583             (p_msg      => 'Trancaction revesal option is not Y '
178584             ,p_level    => C_LEVEL_STATEMENT
178585             ,p_module   => l_log_module);
178586       END IF;
178587 
178588 --
178589 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
178590 --
178591 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
178592 --
178593 -- set event info as cache for other routines to refer event attributes
178594 --
178595 
178596 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
178597    l_previous_event_id := l_event_id;
178598 
178599    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
178600       (p_application_id           => p_application_id
178601       ,p_primary_ledger_id        => p_primary_ledger_id
178602       ,p_base_ledger_id           => p_base_ledger_id
178603       ,p_target_ledger_id         => p_target_ledger_id
178604       ,p_entity_id                => l_array_entity_id(Idx)
178605       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
178606       ,p_entity_code              => l_array_entity_code(Idx)
178607       ,p_transaction_num          => l_array_transaction_num(Idx)
178608       ,p_event_id                 => l_array_event_id(Idx)
178609       ,p_event_class_code         => l_array_class_code(Idx)
178610       ,p_event_type_code          => l_array_event_type(Idx)
178611       ,p_event_number             => l_array_event_number(Idx)
178612       ,p_event_date               => l_array_event_date(Idx)
178613       ,p_transaction_date         => l_array_transaction_date(Idx)
178614       ,p_reference_num_1          => l_array_reference_num_1(Idx)
178615       ,p_reference_num_2          => l_array_reference_num_2(Idx)
178616       ,p_reference_num_3          => l_array_reference_num_3(Idx)
178617       ,p_reference_num_4          => l_array_reference_num_4(Idx)
178618       ,p_reference_char_1         => l_array_reference_char_1(Idx)
178619       ,p_reference_char_2         => l_array_reference_char_2(Idx)
178620       ,p_reference_char_3         => l_array_reference_char_3(Idx)
178621       ,p_reference_char_4         => l_array_reference_char_4(Idx)
178622       ,p_reference_date_1         => l_array_reference_date_1(Idx)
178623       ,p_reference_date_2         => l_array_reference_date_2(Idx)
178624       ,p_reference_date_3         => l_array_reference_date_3(Idx)
178625       ,p_reference_date_4         => l_array_reference_date_4(Idx)
178626       ,p_event_created_by         => l_array_event_created_by(Idx)
178627       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
178628        --
178629 END IF;
178630 
178631 
178632 
178633 --
178634 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
178635 
178636 l_acct_reversal_source := SUBSTR(NULL, 1,30);
178637 
178638 IF l_continue_with_lines THEN
178639    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
178640       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
178641 
178642       xla_accounting_err_pkg.build_message
178643          (p_appli_s_name            => 'XLA'
178644          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
178645          ,p_token_1                 => 'LINE_NUMBER'
178646          ,p_value_1                 => l_array_extract_line_num(Idx)
178647          ,p_token_2                 => 'PRODUCT_NAME'
178648          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
178649          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
178650          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
178651          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
178652 
178653    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
178654       --
178655       -- following sets the accounting attributes needed to reverse
178656       -- accounting for a distributeion
178657       --
178658 
178659       --
178660       -- 5217187
178661       --
178662       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
178663       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
178664                                        g_array_event(l_event_id).array_value_num('header_index'));
178665       --
178666       --
178667 
178668       -- No reversal code generated
178669 
178670       xla_ae_lines_pkg.SetAcctReversalAttrs
178671          (p_event_id             => l_event_id
178672          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
178673          ,p_calculate_acctd_flag => l_calculate_acctd_flag
178674          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
178675    END IF;
178676 
178677    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
178678        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
178679 
178680 --
178681 AcctLineType_9 (
178682  p_application_id  => p_application_id
178683  ,p_event_id     => l_event_id
178684  ,p_calculate_acctd_flag => l_calculate_acctd_flag
178685  ,p_calculate_g_l_flag => l_calculate_g_l_flag
178686  ,p_actual_flag => l_actual_flag
178687  ,p_balance_type_code => l_balance_type_code
178688  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
178689  
178690  , p_source_4 => l_array_source_4(Idx)
178691  , p_source_5 => l_array_source_5(Idx)
178692  , p_source_11 => l_array_source_11(Idx)
178693  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
178694  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
178695  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
178696  , p_source_18 => l_array_source_18(Idx)
178697  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
178698  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
178699  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
178700  , p_source_22 => l_array_source_22(Idx)
178701  );
178702 If(l_balance_type_code = 'A') THEN
178703   l_actual_gain_loss_ref := l_gain_or_loss_ref;
178704 END IF;
178705 
178706 --
178707 
178708 
178709 --
178710 AcctLineType_60 (
178711  p_application_id  => p_application_id
178712  ,p_event_id     => l_event_id
178713  ,p_calculate_acctd_flag => l_calculate_acctd_flag
178714  ,p_calculate_g_l_flag => l_calculate_g_l_flag
178715  ,p_actual_flag => l_actual_flag
178716  ,p_balance_type_code => l_balance_type_code
178717  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
178718  
178719  , p_source_4 => l_array_source_4(Idx)
178720  , p_source_5 => l_array_source_5(Idx)
178721  , p_source_11 => l_array_source_11(Idx)
178722  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
178723  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
178724  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
178725  , p_source_18 => l_array_source_18(Idx)
178726  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
178727  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
178728  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
178729  , p_source_22 => l_array_source_22(Idx)
178730  );
178731 If(l_balance_type_code = 'A') THEN
178732   l_actual_gain_loss_ref := l_gain_or_loss_ref;
178733 END IF;
178734 
178735 --
178736 
178737 
178738 --
178739 AcctLineType_239 (
178740  p_application_id  => p_application_id
178741  ,p_event_id     => l_event_id
178742  ,p_calculate_acctd_flag => l_calculate_acctd_flag
178743  ,p_calculate_g_l_flag => l_calculate_g_l_flag
178744  ,p_actual_flag => l_actual_flag
178745  ,p_balance_type_code => l_balance_type_code
178746  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
178747  
178748  , p_source_4 => l_array_source_4(Idx)
178749  , p_source_5 => l_array_source_5(Idx)
178750  , p_source_11 => l_array_source_11(Idx)
178751  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
178752  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
178753  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
178754  , p_source_18 => l_array_source_18(Idx)
178755  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
178756  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
178757  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
178758  , p_source_22 => l_array_source_22(Idx)
178759  );
178760 If(l_balance_type_code = 'A') THEN
178761   l_actual_gain_loss_ref := l_gain_or_loss_ref;
178762 END IF;
178763 
178764 --
178765 
178766 
178767 --
178768 AcctLineType_247 (
178769  p_application_id  => p_application_id
178770  ,p_event_id     => l_event_id
178771  ,p_calculate_acctd_flag => l_calculate_acctd_flag
178772  ,p_calculate_g_l_flag => l_calculate_g_l_flag
178773  ,p_actual_flag => l_actual_flag
178774  ,p_balance_type_code => l_balance_type_code
178775  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
178776  
178777  , p_source_4 => l_array_source_4(Idx)
178778  , p_source_5 => l_array_source_5(Idx)
178779  , p_source_11 => l_array_source_11(Idx)
178780  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
178781  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
178782  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
178783  , p_source_18 => l_array_source_18(Idx)
178784  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
178785  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
178786  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
178787  , p_source_22 => l_array_source_22(Idx)
178788  );
178789 If(l_balance_type_code = 'A') THEN
178790   l_actual_gain_loss_ref := l_gain_or_loss_ref;
178791 END IF;
178792 
178793 --
178794 
178795       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
178796       -- or secondary ledger that has different currency with primary
178797       -- or alc that is calculated by sla
178798       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
178799             (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'))
178800 
178801 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
178802 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
178803           AND (l_actual_flag = 'A')) THEN
178804         XLA_AE_LINES_PKG.CreateGainOrLossLines(
178805           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
178806          ,p_application_id   => p_application_id
178807          ,p_amb_context_code => 'DEFAULT'
178808          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
178809          ,p_event_class_code => C_EVENT_CLASS_CODE
178810          ,p_event_type_code  => C_EVENT_TYPE_CODE
178811          
178812          ,p_gain_ccid        => -1
178813          ,p_loss_ccid        => -1
178814 
178815          ,p_actual_flag      => l_actual_flag
178816          ,p_enc_flag         => null
178817          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
178818          ,p_enc_g_l_ref      => null
178819          );
178820       END IF;
178821    END IF;
178822 END IF;
178823 
178824    ELSE
178825       --
178826       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
178827       --
178828       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178829          trace
178830             (p_msg      => 'Trancaction revesal option is Y'
178831             ,p_level    => C_LEVEL_STATEMENT
178832             ,p_module   => l_log_module);
178833       END IF;
178834    END IF;
178835 
178836 END LOOP;
178837 l_result := XLA_AE_LINES_PKG.InsertLines ;
178838 end loop;
178839 close line_cur;
178840 
178841 
178842 --
178843 -- insert headers into xla_ae_headers_gt table
178844 --
178845 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
178846 
178847 -- insert into errors table here.
178848 
178849 END LOOP;
178850 
178851 --
178852 -- 4865292
178853 --
178854 -- Compare g_hdr_extract_count with event count in
178855 -- CreateHeadersAndLines.
178856 --
178857 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
178858 
178859 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178860    trace (p_msg     => '# rows extracted from header extract objects '
178861                     || ' (running total): '
178862                     || g_hdr_extract_count
178863          ,p_level   => C_LEVEL_STATEMENT
178864          ,p_module  => l_log_module);
178865 END IF;
178866 
178867 CLOSE header_cur;
178868 --
178869 
178870 --
178871 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
178872    trace
178873       (p_msg      => 'END of EventClass_285'
178874       ,p_level    => C_LEVEL_PROCEDURE
178875       ,p_module   => l_log_module);
178876 END IF;
178877 --
178878 RETURN l_result;
178879 EXCEPTION
178880 WHEN xla_exceptions_pkg.application_exception THEN
178881    
178882 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
178883 
178884    
178885 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
178886 
178887    RAISE;
178888 
178889 WHEN NO_DATA_FOUND THEN
178890 
178891 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
178892 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
178893 
178894 FOR header_record IN header_cur
178895 LOOP
178896     l_array_header_events(header_record.event_id) := header_record.event_id;
178897 END LOOP;
178898 
178899 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
178900 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
178901 
178902 fnd_file.put_line(fnd_file.LOG, '                    ');
178903 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
178904 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
178905 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
178906 
178907 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
178908 LOOP
178909 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
178910 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
178911         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
178912 	END IF;
178913 END LOOP;
178914 
178915 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
178916 fnd_file.put_line(fnd_file.LOG, '                    ');
178917 
178918 
178919 xla_exceptions_pkg.raise_message
178920       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_285');
178921 
178922 
178923 WHEN OTHERS THEN
178924    xla_exceptions_pkg.raise_message
178925       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_285');
178926 END EventClass_285;
178927 --
178928 
178929 ---------------------------------------
178930 --
178931 -- PRIVATE PROCEDURE
178932 --         insert_sources_286
178933 --
178934 ----------------------------------------
178935 --
178936 PROCEDURE insert_sources_286(
178937                                 p_target_ledger_id       IN NUMBER
178938                               , p_language               IN VARCHAR2
178939                               , p_sla_ledger_id          IN NUMBER
178940                               , p_pad_start_date         IN DATE
178941                               , p_pad_end_date           IN DATE
178942                          )
178943 IS
178944 
178945 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'SALES_ORDER_ALL';
178946 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'SALES_ORDER';
178947 p_apps_owner                   VARCHAR2(30);
178948 l_log_module                   VARCHAR2(240);
178949 BEGIN
178950 IF g_log_enabled THEN
178951       l_log_module := C_DEFAULT_MODULE||'.insert_sources_286';
178952 END IF;
178953 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
178954 
178955       trace
178956          (p_msg      => 'BEGIN of insert_sources_286'
178957          ,p_level    => C_LEVEL_PROCEDURE
178958          ,p_module   => l_log_module);
178959 
178960 END IF;
178961 
178962 -- select APPS owner
178963 SELECT oracle_username
178964   INTO p_apps_owner
178965   FROM fnd_oracle_userid
178966  WHERE read_only_flag = 'U'
178967 ;
178968 
178969 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178970       trace
178971          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
178972                         ' - p_language = '||p_language||
178973                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
178974                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
178975                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
178976                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
178977          ,p_level    => C_LEVEL_STATEMENT
178978          ,p_module   => l_log_module);
178979 END IF;
178980 
178981 
178982 --
178983 INSERT INTO xla_diag_sources --hdr2
178984 (
178985         event_id
178986       , ledger_id
178987       , sla_ledger_id
178988       , description_language
178989       , object_name
178990       , object_type_code
178991       , line_number
178992       , source_application_id
178993       , source_type_code
178994       , source_code
178995       , source_value
178996       , source_meaning
178997       , created_by
178998       , creation_date
178999       , last_update_date
179000       , last_updated_by
179001       , last_update_login
179002       , program_update_date
179003       , program_application_id
179004       , program_id
179005       , request_id
179006 )
179007 SELECT
179008         event_id
179009       , p_target_ledger_id
179010       , p_sla_ledger_id
179011       , p_language
179012       , object_name
179013       , object_type_code
179014       , line_number
179015       , source_application_id
179016       , source_type_code
179017       , source_code
179018       , SUBSTR(source_value ,1,1996)
179019       , SUBSTR(source_meaning ,1,200)
179020       , xla_environment_pkg.g_Usr_Id
179021       , TRUNC(SYSDATE)
179022       , TRUNC(SYSDATE)
179023       , xla_environment_pkg.g_Usr_Id
179024       , xla_environment_pkg.g_Login_Id
179025       , TRUNC(SYSDATE)
179026       , xla_environment_pkg.g_Prog_Appl_Id
179027       , xla_environment_pkg.g_Prog_Id
179028       , xla_environment_pkg.g_Req_Id
179029   FROM (
179030        SELECT xet.event_id                  event_id
179031             , 0                          line_number
179032             , CASE r
179033                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
179034                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
179035                 
179036                ELSE null
179037               END                           object_name
179038             , CASE r
179039                 WHEN 1 THEN 'HEADER' 
179040                 WHEN 2 THEN 'HEADER' 
179041                 
179042                 ELSE null
179043               END                           object_type_code
179044             , CASE r
179045                 WHEN 1 THEN '707' 
179046                 WHEN 2 THEN '707' 
179047                 
179048                 ELSE null
179049               END                           source_application_id
179050             , 'S'             source_type_code
179051             , CASE r
179052                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
179053                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
179054                 
179055                 ELSE null
179056               END                           source_code
179057             , CASE r
179058                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
179059                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
179060                 
179061                 ELSE null
179062               END                           source_value
179063             , CASE r
179064                 WHEN 1 THEN fvl12.meaning
179065                 WHEN 2 THEN fvl38.meaning
179066                 
179067                 ELSE null
179068               END               source_meaning
179069          FROM xla_events_gt     xet  
179070       , CST_XLA_INV_HEADERS_V  h1
179071   , fnd_lookup_values    fvl12
179072   , fnd_lookup_values    fvl38
179073              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
179074          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
179075            AND xet.event_class_code = C_EVENT_CLASS_CODE
179076               AND h1.event_id = xet.event_id
179077    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
179078   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
179079   AND fvl12.view_application_id(+) = 700
179080   AND fvl12.language(+)            = USERENV('LANG')
179081      AND fvl38.lookup_type(+)         = 'YES_NO'
179082   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
179083   AND fvl38.view_application_id(+) = 0
179084   AND fvl38.language(+)            = USERENV('LANG')
179085   
179086 )
179087 ;
179088 --
179089 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179090 
179091       trace
179092          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
179093          ,p_level    => C_LEVEL_STATEMENT
179094          ,p_module   => l_log_module);
179095 
179096 END IF;
179097 --
179098 
179099 
179100 
179101 --
179102 INSERT INTO xla_diag_sources  --line2
179103 (
179104         event_id
179105       , ledger_id
179106       , sla_ledger_id
179107       , description_language
179108       , object_name
179109       , object_type_code
179110       , line_number
179111       , source_application_id
179112       , source_type_code
179113       , source_code
179114       , source_value
179115       , source_meaning
179116       , created_by
179117       , creation_date
179118       , last_update_date
179119       , last_updated_by
179120       , last_update_login
179121       , program_update_date
179122       , program_application_id
179123       , program_id
179124       , request_id
179125 )
179126 SELECT  event_id
179127       , p_target_ledger_id
179128       , p_sla_ledger_id
179129       , p_language
179130       , object_name
179131       , object_type_code
179132       , line_number
179133       , source_application_id
179134       , source_type_code
179135       , source_code
179136       , SUBSTR(source_value,1,1996)
179137       , SUBSTR(source_meaning ,1,200)
179138       , xla_environment_pkg.g_Usr_Id
179139       , TRUNC(SYSDATE)
179140       , TRUNC(SYSDATE)
179141       , xla_environment_pkg.g_Usr_Id
179142       , xla_environment_pkg.g_Login_Id
179143       , TRUNC(SYSDATE)
179144       , xla_environment_pkg.g_Prog_Appl_Id
179145       , xla_environment_pkg.g_Prog_Id
179146       , xla_environment_pkg.g_Req_Id
179147   FROM (
179148        SELECT xet.event_id                  event_id
179149             , l2.line_number                 line_number
179150             , CASE r
179151                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
179152                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
179153                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
179154                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
179155                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
179156                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
179157                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
179158                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
179159                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
179160                 
179161                ELSE null
179162               END                           object_name
179163             , CASE r
179164                 WHEN 1 THEN 'LINE' 
179165                 WHEN 2 THEN 'LINE' 
179166                 WHEN 3 THEN 'LINE' 
179167                 WHEN 4 THEN 'LINE' 
179168                 WHEN 5 THEN 'LINE' 
179169                 WHEN 6 THEN 'LINE' 
179170                 WHEN 7 THEN 'LINE' 
179171                 WHEN 8 THEN 'LINE' 
179172                 WHEN 9 THEN 'LINE' 
179173                 
179174                 ELSE null
179175               END                           object_type_code
179176             , CASE r
179177                 WHEN 1 THEN '707' 
179178                 WHEN 2 THEN '707' 
179179                 WHEN 3 THEN '707' 
179180                 WHEN 4 THEN '707' 
179181                 WHEN 5 THEN '707' 
179182                 WHEN 6 THEN '707' 
179183                 WHEN 7 THEN '707' 
179184                 WHEN 8 THEN '707' 
179185                 WHEN 9 THEN '707' 
179186                 
179187                 ELSE null
179188               END                           source_application_id
179189             , 'S'             source_type_code
179190             , CASE r
179191                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
179192                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
179193                 WHEN 3 THEN 'CURRENCY_CODE' 
179194                 WHEN 4 THEN 'ENTERED_AMOUNT' 
179195                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
179196                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
179197                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
179198                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
179199                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
179200                 
179201                 ELSE null
179202               END                           source_code
179203             , CASE r
179204                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
179205                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
179206                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
179207                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
179208                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
179209                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
179210                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
179211                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
179212                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
179213                 
179214                 ELSE null
179215               END                           source_value
179216             , null              source_meaning
179217          FROM  xla_events_gt     xet  
179218         , CST_XLA_INV_LINES_V  l2
179219             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
179220         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
179221           AND xet.event_class_code = C_EVENT_CLASS_CODE
179222             AND l2.event_id          = xet.event_id
179223 
179224 )
179225 ;
179226 --
179227 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179228 
179229       trace
179230          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
179231          ,p_level    => C_LEVEL_STATEMENT
179232          ,p_module   => l_log_module);
179233 
179234 END IF;
179235 
179236 
179237 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
179238       trace
179239          (p_msg      => 'END of insert_sources_286'
179240          ,p_level    => C_LEVEL_PROCEDURE
179241          ,p_module   => l_log_module);
179242 END IF;
179243 EXCEPTION
179244   WHEN xla_exceptions_pkg.application_exception THEN
179245       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
179246             trace
179247                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
179248                ,p_level    => C_LEVEL_EXCEPTION
179249                ,p_module   => l_log_module);
179250       END IF;
179251       RAISE;
179252   WHEN OTHERS THEN
179253       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
179254             trace
179255                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
179256                ,p_level    => C_LEVEL_EXCEPTION
179257                ,p_module   => l_log_module);
179258        END IF;
179259        xla_exceptions_pkg.raise_message
179260            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_286');
179261 END insert_sources_286;
179262 --
179263 
179264 ---------------------------------------
179265 --
179266 -- PRIVATE FUNCTION
179267 --         EventClass_286
179268 --
179269 ----------------------------------------
179270 --
179271 FUNCTION EventClass_286
179272        (p_application_id         IN NUMBER
179273        ,p_base_ledger_id         IN NUMBER
179274        ,p_target_ledger_id       IN NUMBER
179275        ,p_language               IN VARCHAR2
179276        ,p_currency_code          IN VARCHAR2
179277        ,p_sla_ledger_id          IN NUMBER
179278        ,p_pad_start_date         IN DATE
179279        ,p_pad_end_date           IN DATE
179280        ,p_primary_ledger_id      IN NUMBER)
179281 RETURN BOOLEAN IS
179282 --
179283 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'SALES_ORDER_ALL';
179284 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'SALES_ORDER';
179285 
179286 l_calculate_acctd_flag   VARCHAR2(1) :='N';
179287 l_calculate_g_l_flag     VARCHAR2(1) :='N';
179288 --
179289 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179290 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179291 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
179292 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
179293 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179294 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
179295 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
179296 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179297 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
179298 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
179299 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179300 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179301 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179302 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179303 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
179304 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
179305 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
179306 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
179307 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
179308 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
179309 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
179310 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
179311 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
179312 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
179313 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
179314 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
179315 
179316 l_event_id                             NUMBER;
179317 l_previous_event_id                    NUMBER;
179318 l_first_event_id                       NUMBER;
179319 l_last_event_id                        NUMBER;
179320 
179321 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
179322 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
179323 --
179324 --
179325 l_result                    BOOLEAN := TRUE;
179326 l_rows                      NUMBER  := 1000;
179327 l_event_type_name           VARCHAR2(80) := 'All';
179328 l_event_class_name          VARCHAR2(80) := 'Sales Order Issue';
179329 l_description               VARCHAR2(4000);
179330 l_transaction_reversal      NUMBER;
179331 l_ae_header_id              NUMBER;
179332 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
179333 l_log_module                VARCHAR2(240);
179334 --
179335 l_acct_reversal_source      VARCHAR2(30);
179336 l_trx_reversal_source       VARCHAR2(30);
179337 
179338 l_continue_with_lines       BOOLEAN := TRUE;
179339 --
179340 l_acc_rev_gl_date_source    DATE;                      -- 4262811
179341 --
179342 type t_array_event_id is table of number index by binary_integer;
179343 
179344 l_rec_array_event                    t_rec_array_event;
179345 l_null_rec_array_event               t_rec_array_event;
179346 l_array_ae_header_id                 xla_number_array_type;
179347 l_actual_flag                        VARCHAR2(1) := NULL;
179348 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
179349 l_balance_type_code                  VARCHAR2(1) :=NULL;
179350 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
179351 
179352 --
179353 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
179354 --
179355 
179356 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
179357 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
179358 
179359 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
179360 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
179361 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
179362 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
179363 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
179364 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
179365 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
179366 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
179367 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
179368 
179369 l_array_source_12              t_array_source_12;
179370 l_array_source_12_meaning      t_array_lookup_meaning;
179371 l_array_source_38              t_array_source_38;
179372 l_array_source_38_meaning      t_array_lookup_meaning;
179373 
179374 l_array_source_4      t_array_source_4;
179375 l_array_source_11      t_array_source_11;
179376 l_array_source_15      t_array_source_15;
179377 l_array_source_18      t_array_source_18;
179378 l_array_source_19      t_array_source_19;
179379 l_array_source_20      t_array_source_20;
179380 l_array_source_21      t_array_source_21;
179381 l_array_source_22      t_array_source_22;
179382 l_array_source_24      t_array_source_24;
179383 
179384 --
179385 CURSOR header_cur
179386 IS
179387 SELECT /*+ leading(xet) cardinality(xet,1) */
179388 -- Event Class Code: SALES_ORDER
179389     xet.entity_id
179390    ,xet.legal_entity_id
179391    ,xet.entity_code
179392    ,xet.transaction_number
179393    ,xet.event_id
179394    ,xet.event_class_code
179395    ,xet.event_type_code
179396    ,xet.event_number
179397    ,xet.event_date
179398    ,xet.transaction_date
179399    ,xet.reference_num_1
179400    ,xet.reference_num_2
179401    ,xet.reference_num_3
179402    ,xet.reference_num_4
179403    ,xet.reference_char_1
179404    ,xet.reference_char_2
179405    ,xet.reference_char_3
179406    ,xet.reference_char_4
179407    ,xet.reference_date_1
179408    ,xet.reference_date_2
179409    ,xet.reference_date_3
179410    ,xet.reference_date_4
179411    ,xet.event_created_by
179412    ,xet.budgetary_control_flag 
179413   , h1.DISTRIBUTION_TYPE    source_12
179414   , fvl12.meaning   source_12_meaning
179415   , h1.TRANSFER_TO_GL_INDICATOR    source_38
179416   , fvl38.meaning   source_38_meaning
179417   FROM xla_events_gt     xet 
179418   , CST_XLA_INV_HEADERS_V  h1
179419   , fnd_lookup_values    fvl12
179420   , fnd_lookup_values    fvl38
179421  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
179422    and xet.event_class_code = C_EVENT_CLASS_CODE
179423    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
179424    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
179425   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
179426   AND fvl12.view_application_id(+) = 700
179427   AND fvl12.language(+)            = USERENV('LANG')
179428      AND fvl38.lookup_type(+)         = 'YES_NO'
179429   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
179430   AND fvl38.view_application_id(+) = 0
179431   AND fvl38.language(+)            = USERENV('LANG')
179432   
179433  ORDER BY event_id
179434 ;
179435 
179436 
179437 --
179438 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
179439 IS
179440 SELECT  /*+ leading(xet) cardinality(xet,1) */
179441 -- Event Class Code: SALES_ORDER
179442     xet.entity_id
179443    ,xet.legal_entity_id
179444    ,xet.entity_code
179445    ,xet.transaction_number
179446    ,xet.event_id
179447    ,xet.event_class_code
179448    ,xet.event_type_code
179449    ,xet.event_number
179450    ,xet.event_date
179451    ,xet.transaction_date
179452    ,xet.reference_num_1
179453    ,xet.reference_num_2
179454    ,xet.reference_num_3
179455    ,xet.reference_num_4
179456    ,xet.reference_char_1
179457    ,xet.reference_char_2
179458    ,xet.reference_char_3
179459    ,xet.reference_char_4
179460    ,xet.reference_date_1
179461    ,xet.reference_date_2
179462    ,xet.reference_date_3
179463    ,xet.reference_date_4
179464    ,xet.event_created_by
179465    ,xet.budgetary_control_flag
179466  , l2.LINE_NUMBER  
179467   , l2.CODE_COMBINATION_ID    source_4
179468   , l2.DISTRIBUTION_IDENTIFIER    source_11
179469   , l2.CURRENCY_CODE    source_15
179470   , l2.ENTERED_AMOUNT    source_18
179471   , l2.CURRENCY_CONVERSION_DATE    source_19
179472   , l2.CURRENCY_CONVERSION_RATE    source_20
179473   , l2.CURRENCY_CONVERSION_TYPE    source_21
179474   , l2.ACCOUNTED_AMOUNT    source_22
179475   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
179476   FROM xla_events_gt     xet 
179477   , CST_XLA_INV_LINES_V  l2
179478  WHERE xet.event_id between x_first_event_id and x_last_event_id
179479    and xet.event_date between p_pad_start_date and p_pad_end_date
179480    and xet.event_class_code = C_EVENT_CLASS_CODE
179481    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
179482 ;
179483 
179484 --
179485 BEGIN
179486 IF g_log_enabled THEN
179487    l_log_module := C_DEFAULT_MODULE||'.EventClass_286';
179488 END IF;
179489 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
179490    trace
179491       (p_msg      => 'BEGIN of EventClass_286'
179492       ,p_level    => C_LEVEL_PROCEDURE
179493       ,p_module   => l_log_module);
179494 END IF;
179495 
179496 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179497    trace
179498       (p_msg      => 'p_application_id = '||p_application_id||
179499                      ' - p_base_ledger_id = '||p_base_ledger_id||
179500                      ' - p_target_ledger_id  = '||p_target_ledger_id||
179501                      ' - p_language = '||p_language||
179502                      ' - p_currency_code = '||p_currency_code||
179503                      ' - p_sla_ledger_id = '||p_sla_ledger_id
179504       ,p_level    => C_LEVEL_STATEMENT
179505       ,p_module   => l_log_module);
179506 END IF;
179507 --
179508 -- initialze arrays
179509 --
179510 g_array_event.DELETE;
179511 l_rec_array_event := l_null_rec_array_event;
179512 --
179513 --------------------------------------
179514 -- 4262811 Initialze MPA Line Number
179515 --------------------------------------
179516 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
179517 
179518 --
179519 
179520 --
179521 OPEN header_cur;
179522 --
179523 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179524    trace
179525    (p_msg      => 'SQL - FETCH header_cur'
179526    ,p_level    => C_LEVEL_STATEMENT
179527    ,p_module   => l_log_module);
179528 END IF;
179529 --
179530 LOOP
179531 FETCH header_cur BULK COLLECT INTO
179532         l_array_entity_id
179533       , l_array_legal_entity_id
179534       , l_array_entity_code
179535       , l_array_transaction_num
179536       , l_array_event_id
179537       , l_array_class_code
179538       , l_array_event_type
179539       , l_array_event_number
179540       , l_array_event_date
179541       , l_array_transaction_date
179542       , l_array_reference_num_1
179543       , l_array_reference_num_2
179544       , l_array_reference_num_3
179545       , l_array_reference_num_4
179546       , l_array_reference_char_1
179547       , l_array_reference_char_2
179548       , l_array_reference_char_3
179549       , l_array_reference_char_4
179550       , l_array_reference_date_1
179551       , l_array_reference_date_2
179552       , l_array_reference_date_3
179553       , l_array_reference_date_4
179554       , l_array_event_created_by
179555       , l_array_budgetary_control_flag 
179556       , l_array_source_12
179557       , l_array_source_12_meaning
179558       , l_array_source_38
179559       , l_array_source_38_meaning
179560       LIMIT l_rows;
179561 --
179562 IF (C_LEVEL_EVENT >= g_log_level) THEN
179563    trace
179564    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
179565    ,p_level    => C_LEVEL_EVENT
179566    ,p_module   => l_log_module);
179567 END IF;
179568 --
179569 EXIT WHEN l_array_entity_id.COUNT = 0;
179570 
179571 -- initialize arrays
179572 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
179573 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
179574 
179575 --
179576 -- Bug 4458708
179577 --
179578 XLA_AE_LINES_PKG.g_LineNumber := 0;
179579 
179580 
179581 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
179582 g_last_hdr_idx := l_array_event_id.LAST;
179583 --
179584 -- loop for the headers. Each iteration is for each header extract row
179585 -- fetched in header cursor
179586 --
179587 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
179588 
179589 --
179590 -- set event info as cache for other routines to refer event attributes
179591 --
179592 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
179593    (p_application_id           => p_application_id
179594    ,p_primary_ledger_id        => p_primary_ledger_id
179595    ,p_base_ledger_id           => p_base_ledger_id
179596    ,p_target_ledger_id         => p_target_ledger_id
179597    ,p_entity_id                => l_array_entity_id(hdr_idx)
179598    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
179599    ,p_entity_code              => l_array_entity_code(hdr_idx)
179600    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
179601    ,p_event_id                 => l_array_event_id(hdr_idx)
179602    ,p_event_class_code         => l_array_class_code(hdr_idx)
179603    ,p_event_type_code          => l_array_event_type(hdr_idx)
179604    ,p_event_number             => l_array_event_number(hdr_idx)
179605    ,p_event_date               => l_array_event_date(hdr_idx)
179606    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
179607    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
179608    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
179609    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
179610    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
179611    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
179612    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
179613    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
179614    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
179615    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
179616    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
179617    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
179618    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
179619    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
179620    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
179621 
179622 --
179623 -- set the status of entry to C_VALID (0)
179624 --
179625 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
179626 
179627 --
179628 -- initialize a row for ae header
179629 --
179630 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
179631 
179632 l_event_id := l_array_event_id(hdr_idx);
179633 
179634 --
179635 -- storing the hdr_idx for event. May be used by line cursor.
179636 --
179637 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
179638 
179639 --
179640 -- store sources from header extract. This can be improved to
179641 -- store only those sources from header extract that may be used in lines
179642 --
179643 
179644 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
179645 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
179646 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
179647 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
179648 
179649 --
179650 -- initilaize the status of ae headers for diffrent balance types
179651 -- the status is initialised to C_NOT_CREATED (2)
179652 --
179653 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
179654 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
179655 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
179656 
179657 --
179658 -- call api to validate and store accounting attributes for header
179659 --
179660 
179661 ------------------------------------------------------------
179662 -- Accrual Reversal : to get date for Standard Source (NONE)
179663 ------------------------------------------------------------
179664 l_acc_rev_gl_date_source := NULL;
179665 
179666      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
179667       l_rec_acct_attrs.array_date_value(1) := 
179668 xla_ae_sources_pkg.GetSystemSourceDate(
179669    p_source_code           => 'XLA_REFERENCE_DATE_1'
179670  , p_source_type_code      => 'Y'
179671  , p_source_application_id =>  602
179672 );
179673      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
179674       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
179675 
179676 
179677 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
179678 
179679 XLA_AE_HEADER_PKG.SetJeCategoryName;
179680 
179681 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
179682 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
179683 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
179684 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
179685 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
179686 
179687 
179688 -- No header level analytical criteria
179689 
179690 --
179691 --accounting attribute enhancement, bug 3612931
179692 --
179693 l_trx_reversal_source := SUBSTR(NULL, 1,30);
179694 
179695 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
179696    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
179697 
179698    xla_accounting_err_pkg.build_message
179699       (p_appli_s_name            => 'XLA'
179700       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
179701       ,p_token_1                 => 'ACCT_ATTR_NAME'
179702       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
179703       ,p_token_2                 => 'PRODUCT_NAME'
179704       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
179705       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
179706       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
179707       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
179708 
179709 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
179710    --
179711    -- following sets the accounting attributes needed to reverse
179712    -- accounting for a distributeion
179713    --
179714    xla_ae_lines_pkg.SetTrxReversalAttrs
179715       (p_event_id              => l_event_id
179716       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
179717       ,p_trx_reversal_source   => l_trx_reversal_source);
179718 
179719 END IF;
179720 
179721 
179722 ----------------------------------------------------------------
179723 -- 4262811 -  update the header statuses to invalid in need be
179724 ----------------------------------------------------------------
179725 --
179726 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
179727 
179728 
179729   -----------------------------------------------
179730   -- No accrual reversal for the event class/type
179731   -----------------------------------------------
179732 ----------------------------------------------------------------
179733 
179734 --
179735 -- this ends the header loop iteration for one bulk fetch
179736 --
179737 END LOOP;
179738 
179739 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
179740 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
179741 
179742 --
179743 -- insert dummy rows into lines gt table that were created due to
179744 -- transaction reversals
179745 --
179746 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
179747    l_result := XLA_AE_LINES_PKG.InsertLines;
179748 END IF;
179749 
179750 --
179751 -- reset the temp_line_num for each set of events fetched from header
179752 -- cursor rather than doing it for each new event in line cursor
179753 -- Bug 3939231
179754 --
179755 xla_ae_lines_pkg.g_temp_line_num := 0;
179756 
179757 
179758 
179759 --
179760 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
179761 --
179762 --
179763 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179764 
179765       trace
179766          (p_msg      => 'SQL - FETCH line_cur'
179767          ,p_level    => C_LEVEL_STATEMENT
179768          ,p_module   => l_log_module);
179769 
179770 END IF;
179771 --
179772 --
179773 LOOP
179774   --
179775   FETCH line_cur BULK COLLECT INTO
179776         l_array_entity_id
179777       , l_array_legal_entity_id
179778       , l_array_entity_code
179779       , l_array_transaction_num
179780       , l_array_event_id
179781       , l_array_class_code
179782       , l_array_event_type
179783       , l_array_event_number
179784       , l_array_event_date
179785       , l_array_transaction_date
179786       , l_array_reference_num_1
179787       , l_array_reference_num_2
179788       , l_array_reference_num_3
179789       , l_array_reference_num_4
179790       , l_array_reference_char_1
179791       , l_array_reference_char_2
179792       , l_array_reference_char_3
179793       , l_array_reference_char_4
179794       , l_array_reference_date_1
179795       , l_array_reference_date_2
179796       , l_array_reference_date_3
179797       , l_array_reference_date_4
179798       , l_array_event_created_by
179799       , l_array_budgetary_control_flag
179800       , l_array_extract_line_num 
179801       , l_array_source_4
179802       , l_array_source_11
179803       , l_array_source_15
179804       , l_array_source_18
179805       , l_array_source_19
179806       , l_array_source_20
179807       , l_array_source_21
179808       , l_array_source_22
179809       , l_array_source_24
179810       LIMIT l_rows;
179811 
179812   --
179813   IF (C_LEVEL_EVENT >= g_log_level) THEN
179814             trace
179815                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
179816                ,p_level    => C_LEVEL_EVENT
179817                ,p_module   => l_log_module);
179818   END IF;
179819   --
179820   EXIT WHEN l_array_entity_id.count = 0;
179821 
179822   XLA_AE_LINES_PKG.g_rec_lines := null;
179823 
179824 --
179825 -- Bug 4458708
179826 --
179827 XLA_AE_LINES_PKG.g_LineNumber := 0;
179828 --
179829 --
179830 
179831 FOR Idx IN 1..l_array_event_id.count LOOP
179832    --
179833    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
179834    --
179835    l_event_id := l_array_event_id(idx);  -- 5648433
179836 
179837    --
179838    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
179839    --
179840 
179841    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
179842              (g_array_event(l_event_id).array_value_num('header_index'))
179843          ,'N'
179844          ) <> 'Y'
179845    THEN
179846       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179847          trace
179848             (p_msg      => 'Trancaction revesal option is not Y '
179849             ,p_level    => C_LEVEL_STATEMENT
179850             ,p_module   => l_log_module);
179851       END IF;
179852 
179853 --
179854 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
179855 --
179856 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
179857 --
179858 -- set event info as cache for other routines to refer event attributes
179859 --
179860 
179861 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
179862    l_previous_event_id := l_event_id;
179863 
179864    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
179865       (p_application_id           => p_application_id
179866       ,p_primary_ledger_id        => p_primary_ledger_id
179867       ,p_base_ledger_id           => p_base_ledger_id
179868       ,p_target_ledger_id         => p_target_ledger_id
179869       ,p_entity_id                => l_array_entity_id(Idx)
179870       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
179871       ,p_entity_code              => l_array_entity_code(Idx)
179872       ,p_transaction_num          => l_array_transaction_num(Idx)
179873       ,p_event_id                 => l_array_event_id(Idx)
179874       ,p_event_class_code         => l_array_class_code(Idx)
179875       ,p_event_type_code          => l_array_event_type(Idx)
179876       ,p_event_number             => l_array_event_number(Idx)
179877       ,p_event_date               => l_array_event_date(Idx)
179878       ,p_transaction_date         => l_array_transaction_date(Idx)
179879       ,p_reference_num_1          => l_array_reference_num_1(Idx)
179880       ,p_reference_num_2          => l_array_reference_num_2(Idx)
179881       ,p_reference_num_3          => l_array_reference_num_3(Idx)
179882       ,p_reference_num_4          => l_array_reference_num_4(Idx)
179883       ,p_reference_char_1         => l_array_reference_char_1(Idx)
179884       ,p_reference_char_2         => l_array_reference_char_2(Idx)
179885       ,p_reference_char_3         => l_array_reference_char_3(Idx)
179886       ,p_reference_char_4         => l_array_reference_char_4(Idx)
179887       ,p_reference_date_1         => l_array_reference_date_1(Idx)
179888       ,p_reference_date_2         => l_array_reference_date_2(Idx)
179889       ,p_reference_date_3         => l_array_reference_date_3(Idx)
179890       ,p_reference_date_4         => l_array_reference_date_4(Idx)
179891       ,p_event_created_by         => l_array_event_created_by(Idx)
179892       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
179893        --
179894 END IF;
179895 
179896 
179897 
179898 --
179899 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
179900 
179901 l_acct_reversal_source := SUBSTR(NULL, 1,30);
179902 
179903 IF l_continue_with_lines THEN
179904    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
179905       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
179906 
179907       xla_accounting_err_pkg.build_message
179908          (p_appli_s_name            => 'XLA'
179909          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
179910          ,p_token_1                 => 'LINE_NUMBER'
179911          ,p_value_1                 => l_array_extract_line_num(Idx)
179912          ,p_token_2                 => 'PRODUCT_NAME'
179913          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
179914          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
179915          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
179916          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
179917 
179918    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
179919       --
179920       -- following sets the accounting attributes needed to reverse
179921       -- accounting for a distributeion
179922       --
179923 
179924       --
179925       -- 5217187
179926       --
179927       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
179928       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
179929                                        g_array_event(l_event_id).array_value_num('header_index'));
179930       --
179931       --
179932 
179933       -- No reversal code generated
179934 
179935       xla_ae_lines_pkg.SetAcctReversalAttrs
179936          (p_event_id             => l_event_id
179937          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
179938          ,p_calculate_acctd_flag => l_calculate_acctd_flag
179939          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
179940    END IF;
179941 
179942    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
179943        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
179944 
179945 --
179946 AcctLineType_20 (
179947  p_application_id  => p_application_id
179948  ,p_event_id     => l_event_id
179949  ,p_calculate_acctd_flag => l_calculate_acctd_flag
179950  ,p_calculate_g_l_flag => l_calculate_g_l_flag
179951  ,p_actual_flag => l_actual_flag
179952  ,p_balance_type_code => l_balance_type_code
179953  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
179954  
179955  , p_source_4 => l_array_source_4(Idx)
179956  , p_source_11 => l_array_source_11(Idx)
179957  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
179958  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
179959  , p_source_15 => l_array_source_15(Idx)
179960  , p_source_18 => l_array_source_18(Idx)
179961  , p_source_19 => l_array_source_19(Idx)
179962  , p_source_20 => l_array_source_20(Idx)
179963  , p_source_21 => l_array_source_21(Idx)
179964  , p_source_22 => l_array_source_22(Idx)
179965  , p_source_24 => l_array_source_24(Idx)
179966  );
179967 If(l_balance_type_code = 'A') THEN
179968   l_actual_gain_loss_ref := l_gain_or_loss_ref;
179969 END IF;
179970 
179971 --
179972 
179973 
179974 --
179975 AcctLineType_26 (
179976  p_application_id  => p_application_id
179977  ,p_event_id     => l_event_id
179978  ,p_calculate_acctd_flag => l_calculate_acctd_flag
179979  ,p_calculate_g_l_flag => l_calculate_g_l_flag
179980  ,p_actual_flag => l_actual_flag
179981  ,p_balance_type_code => l_balance_type_code
179982  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
179983  
179984  , p_source_4 => l_array_source_4(Idx)
179985  , p_source_11 => l_array_source_11(Idx)
179986  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
179987  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
179988  , p_source_15 => l_array_source_15(Idx)
179989  , p_source_18 => l_array_source_18(Idx)
179990  , p_source_19 => l_array_source_19(Idx)
179991  , p_source_20 => l_array_source_20(Idx)
179992  , p_source_21 => l_array_source_21(Idx)
179993  , p_source_22 => l_array_source_22(Idx)
179994  , p_source_24 => l_array_source_24(Idx)
179995  );
179996 If(l_balance_type_code = 'A') THEN
179997   l_actual_gain_loss_ref := l_gain_or_loss_ref;
179998 END IF;
179999 
180000 --
180001 
180002 
180003 --
180004 AcctLineType_34 (
180005  p_application_id  => p_application_id
180006  ,p_event_id     => l_event_id
180007  ,p_calculate_acctd_flag => l_calculate_acctd_flag
180008  ,p_calculate_g_l_flag => l_calculate_g_l_flag
180009  ,p_actual_flag => l_actual_flag
180010  ,p_balance_type_code => l_balance_type_code
180011  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
180012  
180013  , p_source_4 => l_array_source_4(Idx)
180014  , p_source_11 => l_array_source_11(Idx)
180015  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
180016  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
180017  , p_source_15 => l_array_source_15(Idx)
180018  , p_source_18 => l_array_source_18(Idx)
180019  , p_source_19 => l_array_source_19(Idx)
180020  , p_source_20 => l_array_source_20(Idx)
180021  , p_source_21 => l_array_source_21(Idx)
180022  , p_source_22 => l_array_source_22(Idx)
180023  , p_source_24 => l_array_source_24(Idx)
180024  );
180025 If(l_balance_type_code = 'A') THEN
180026   l_actual_gain_loss_ref := l_gain_or_loss_ref;
180027 END IF;
180028 
180029 --
180030 
180031 
180032 --
180033 AcctLineType_48 (
180034  p_application_id  => p_application_id
180035  ,p_event_id     => l_event_id
180036  ,p_calculate_acctd_flag => l_calculate_acctd_flag
180037  ,p_calculate_g_l_flag => l_calculate_g_l_flag
180038  ,p_actual_flag => l_actual_flag
180039  ,p_balance_type_code => l_balance_type_code
180040  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
180041  
180042  , p_source_4 => l_array_source_4(Idx)
180043  , p_source_11 => l_array_source_11(Idx)
180044  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
180045  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
180046  , p_source_15 => l_array_source_15(Idx)
180047  , p_source_18 => l_array_source_18(Idx)
180048  , p_source_19 => l_array_source_19(Idx)
180049  , p_source_20 => l_array_source_20(Idx)
180050  , p_source_21 => l_array_source_21(Idx)
180051  , p_source_22 => l_array_source_22(Idx)
180052  , p_source_24 => l_array_source_24(Idx)
180053  );
180054 If(l_balance_type_code = 'A') THEN
180055   l_actual_gain_loss_ref := l_gain_or_loss_ref;
180056 END IF;
180057 
180058 --
180059 
180060 
180061 --
180062 AcctLineType_153 (
180063  p_application_id  => p_application_id
180064  ,p_event_id     => l_event_id
180065  ,p_calculate_acctd_flag => l_calculate_acctd_flag
180066  ,p_calculate_g_l_flag => l_calculate_g_l_flag
180067  ,p_actual_flag => l_actual_flag
180068  ,p_balance_type_code => l_balance_type_code
180069  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
180070  
180071  , p_source_4 => l_array_source_4(Idx)
180072  , p_source_11 => l_array_source_11(Idx)
180073  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
180074  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
180075  , p_source_15 => l_array_source_15(Idx)
180076  , p_source_18 => l_array_source_18(Idx)
180077  , p_source_19 => l_array_source_19(Idx)
180078  , p_source_20 => l_array_source_20(Idx)
180079  , p_source_21 => l_array_source_21(Idx)
180080  , p_source_22 => l_array_source_22(Idx)
180081  , p_source_24 => l_array_source_24(Idx)
180082  );
180083 If(l_balance_type_code = 'A') THEN
180084   l_actual_gain_loss_ref := l_gain_or_loss_ref;
180085 END IF;
180086 
180087 --
180088 
180089       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
180090       -- or secondary ledger that has different currency with primary
180091       -- or alc that is calculated by sla
180092       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
180093             (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'))
180094 
180095 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
180096 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
180097           AND (l_actual_flag = 'A')) THEN
180098         XLA_AE_LINES_PKG.CreateGainOrLossLines(
180099           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
180100          ,p_application_id   => p_application_id
180101          ,p_amb_context_code => 'DEFAULT'
180102          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
180103          ,p_event_class_code => C_EVENT_CLASS_CODE
180104          ,p_event_type_code  => C_EVENT_TYPE_CODE
180105          
180106          ,p_gain_ccid        => -1
180107          ,p_loss_ccid        => -1
180108 
180109          ,p_actual_flag      => l_actual_flag
180110          ,p_enc_flag         => null
180111          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
180112          ,p_enc_g_l_ref      => null
180113          );
180114       END IF;
180115    END IF;
180116 END IF;
180117 
180118    ELSE
180119       --
180120       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
180121       --
180122       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180123          trace
180124             (p_msg      => 'Trancaction revesal option is Y'
180125             ,p_level    => C_LEVEL_STATEMENT
180126             ,p_module   => l_log_module);
180127       END IF;
180128    END IF;
180129 
180130 END LOOP;
180131 l_result := XLA_AE_LINES_PKG.InsertLines ;
180132 end loop;
180133 close line_cur;
180134 
180135 
180136 --
180137 -- insert headers into xla_ae_headers_gt table
180138 --
180139 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
180140 
180141 -- insert into errors table here.
180142 
180143 END LOOP;
180144 
180145 --
180146 -- 4865292
180147 --
180148 -- Compare g_hdr_extract_count with event count in
180149 -- CreateHeadersAndLines.
180150 --
180151 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
180152 
180153 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180154    trace (p_msg     => '# rows extracted from header extract objects '
180155                     || ' (running total): '
180156                     || g_hdr_extract_count
180157          ,p_level   => C_LEVEL_STATEMENT
180158          ,p_module  => l_log_module);
180159 END IF;
180160 
180161 CLOSE header_cur;
180162 --
180163 
180164 --
180165 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
180166    trace
180167       (p_msg      => 'END of EventClass_286'
180168       ,p_level    => C_LEVEL_PROCEDURE
180169       ,p_module   => l_log_module);
180170 END IF;
180171 --
180172 RETURN l_result;
180173 EXCEPTION
180174 WHEN xla_exceptions_pkg.application_exception THEN
180175    
180176 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
180177 
180178    
180179 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
180180 
180181    RAISE;
180182 
180183 WHEN NO_DATA_FOUND THEN
180184 
180185 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
180186 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
180187 
180188 FOR header_record IN header_cur
180189 LOOP
180190     l_array_header_events(header_record.event_id) := header_record.event_id;
180191 END LOOP;
180192 
180193 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
180194 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
180195 
180196 fnd_file.put_line(fnd_file.LOG, '                    ');
180197 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
180198 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
180199 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
180200 
180201 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
180202 LOOP
180203 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
180204 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
180205         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
180206 	END IF;
180207 END LOOP;
180208 
180209 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
180210 fnd_file.put_line(fnd_file.LOG, '                    ');
180211 
180212 
180213 xla_exceptions_pkg.raise_message
180214       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_286');
180215 
180216 
180217 WHEN OTHERS THEN
180218    xla_exceptions_pkg.raise_message
180219       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_286');
180220 END EventClass_286;
180221 --
180222 
180223 ---------------------------------------
180224 --
180225 -- PRIVATE PROCEDURE
180226 --         insert_sources_287
180227 --
180228 ----------------------------------------
180229 --
180230 PROCEDURE insert_sources_287(
180231                                 p_target_ledger_id       IN NUMBER
180232                               , p_language               IN VARCHAR2
180233                               , p_sla_ledger_id          IN NUMBER
180234                               , p_pad_start_date         IN DATE
180235                               , p_pad_end_date           IN DATE
180236                          )
180237 IS
180238 
180239 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UAVG_COST_UPD';
180240 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
180241 p_apps_owner                   VARCHAR2(30);
180242 l_log_module                   VARCHAR2(240);
180243 BEGIN
180244 IF g_log_enabled THEN
180245       l_log_module := C_DEFAULT_MODULE||'.insert_sources_287';
180246 END IF;
180247 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
180248 
180249       trace
180250          (p_msg      => 'BEGIN of insert_sources_287'
180251          ,p_level    => C_LEVEL_PROCEDURE
180252          ,p_module   => l_log_module);
180253 
180254 END IF;
180255 
180256 -- select APPS owner
180257 SELECT oracle_username
180258   INTO p_apps_owner
180259   FROM fnd_oracle_userid
180260  WHERE read_only_flag = 'U'
180261 ;
180262 
180263 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180264       trace
180265          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
180266                         ' - p_language = '||p_language||
180267                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
180268                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
180269                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
180270                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
180271          ,p_level    => C_LEVEL_STATEMENT
180272          ,p_module   => l_log_module);
180273 END IF;
180274 
180275 
180276 --
180277 INSERT INTO xla_diag_sources --hdr1
180278 (
180279         event_id
180280       , ledger_id
180281       , sla_ledger_id
180282       , description_language
180283       , object_name
180284       , object_type_code
180285       , line_number
180286       , source_application_id
180287       , source_type_code
180288       , source_code
180289       , source_value
180290       , source_meaning
180291       , created_by
180292       , creation_date
180293       , last_update_date
180294       , last_updated_by
180295       , last_update_login
180296       , program_update_date
180297       , program_application_id
180298       , program_id
180299       , request_id
180300 )
180301 SELECT
180302         event_id
180303       , p_target_ledger_id
180304       , p_sla_ledger_id
180305       , p_language
180306       , object_name
180307       , object_type_code
180308       , line_number
180309       , source_application_id
180310       , source_type_code
180311       , source_code
180312       , SUBSTR(source_value ,1,1996)
180313       , SUBSTR(source_meaning,1,200)
180314       , xla_environment_pkg.g_Usr_Id
180315       , TRUNC(SYSDATE)
180316       , TRUNC(SYSDATE)
180317       , xla_environment_pkg.g_Usr_Id
180318       , xla_environment_pkg.g_Login_Id
180319       , TRUNC(SYSDATE)
180320       , xla_environment_pkg.g_Prog_Appl_Id
180321       , xla_environment_pkg.g_Prog_Id
180322       , xla_environment_pkg.g_Req_Id
180323   FROM (
180324        SELECT xet.event_id                  event_id
180325             , 0                             line_number
180326             , CASE r
180327                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
180328                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
180329                 
180330                ELSE null
180331               END                           object_name
180332             , CASE r
180333                 WHEN 1 THEN 'HEADER' 
180334                 WHEN 2 THEN 'HEADER' 
180335                 
180336                 ELSE null
180337               END                           object_type_code
180338             , CASE r
180339                 WHEN 1 THEN '707' 
180340                 WHEN 2 THEN '707' 
180341                 
180342                 ELSE null
180343               END                           source_application_id
180344             , 'S'             source_type_code
180345             , CASE r
180346                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
180347                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
180348                 
180349                 ELSE null
180350               END                           source_code
180351             , CASE r
180352                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
180353                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
180354                 
180355                 ELSE null
180356               END                           source_value
180357             , CASE r
180358                 WHEN 1 THEN fvl12.meaning
180359                 WHEN 2 THEN fvl38.meaning
180360                 
180361                 ELSE null
180362               END               source_meaning
180363         FROM xla_events_gt     xet  
180364       , CST_XLA_INV_HEADERS_V  h1
180365   , fnd_lookup_values    fvl12
180366   , fnd_lookup_values    fvl38
180367             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
180368        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
180369          AND xet.event_type_code = C_EVENT_TYPE_CODE
180370             AND h1.event_id = xet.event_id
180371    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
180372   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
180373   AND fvl12.view_application_id(+) = 700
180374   AND fvl12.language(+)            = USERENV('LANG')
180375      AND fvl38.lookup_type(+)         = 'YES_NO'
180376   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
180377   AND fvl38.view_application_id(+) = 0
180378   AND fvl38.language(+)            = USERENV('LANG')
180379   
180380 )
180381 ;
180382 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180383 
180384       trace
180385          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
180386          ,p_level    => C_LEVEL_STATEMENT
180387          ,p_module   => l_log_module);
180388 
180389 END IF;
180390 --
180391 
180392 
180393 
180394 --
180395 INSERT INTO xla_diag_sources --line1
180396 (
180397         event_id
180398       , ledger_id
180399       , sla_ledger_id
180400       , description_language
180401       , object_name
180402       , object_type_code
180403       , line_number
180404       , source_application_id
180405       , source_type_code
180406       , source_code
180407       , source_value
180408       , source_meaning
180409       , created_by
180410       , creation_date
180411       , last_update_date
180412       , last_updated_by
180413       , last_update_login
180414       , program_update_date
180415       , program_application_id
180416       , program_id
180417       , request_id
180418 )
180419 SELECT  event_id
180420       , p_target_ledger_id
180421       , p_sla_ledger_id
180422       , p_language
180423       , object_name
180424       , object_type_code
180425       , line_number
180426       , source_application_id
180427       , source_type_code
180428       , source_code
180429       , SUBSTR(source_value,1,1996)
180430       , SUBSTR(source_meaning,1,200)
180431       , xla_environment_pkg.g_Usr_Id
180432       , TRUNC(SYSDATE)
180433       , TRUNC(SYSDATE)
180434       , xla_environment_pkg.g_Usr_Id
180435       , xla_environment_pkg.g_Login_Id
180436       , TRUNC(SYSDATE)
180437       , xla_environment_pkg.g_Prog_Appl_Id
180438       , xla_environment_pkg.g_Prog_Id
180439       , xla_environment_pkg.g_Req_Id
180440   FROM (
180441        SELECT xet.event_id                  event_id
180442             , l2.line_number                 line_number
180443             , CASE r
180444                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
180445                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
180446                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
180447                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
180448                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
180449                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
180450                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
180451                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
180452                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
180453                 
180454                ELSE null
180455               END                           object_name
180456             , CASE r
180457                 WHEN 1 THEN 'LINE' 
180458                 WHEN 2 THEN 'LINE' 
180459                 WHEN 3 THEN 'LINE' 
180460                 WHEN 4 THEN 'LINE' 
180461                 WHEN 5 THEN 'LINE' 
180462                 WHEN 6 THEN 'LINE' 
180463                 WHEN 7 THEN 'LINE' 
180464                 WHEN 8 THEN 'LINE' 
180465                 WHEN 9 THEN 'LINE' 
180466                 
180467                 ELSE null
180468               END                           object_type_code
180469             , CASE r
180470                 WHEN 1 THEN '707' 
180471                 WHEN 2 THEN '707' 
180472                 WHEN 3 THEN '707' 
180473                 WHEN 4 THEN '707' 
180474                 WHEN 5 THEN '707' 
180475                 WHEN 6 THEN '707' 
180476                 WHEN 7 THEN '707' 
180477                 WHEN 8 THEN '707' 
180478                 WHEN 9 THEN '707' 
180479                 
180480                 ELSE null
180481               END                           source_application_id
180482             , 'S'             source_type_code
180483             , CASE r
180484                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
180485                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
180486                 WHEN 3 THEN 'CURRENCY_CODE' 
180487                 WHEN 4 THEN 'ENTERED_AMOUNT' 
180488                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
180489                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
180490                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
180491                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
180492                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
180493                 
180494                 ELSE null
180495               END                           source_code
180496             , CASE r
180497                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
180498                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
180499                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
180500                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
180501                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
180502                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
180503                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
180504                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
180505                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
180506                 
180507                 ELSE null
180508               END                           source_value
180509             , null              source_meaning
180510          FROM  xla_events_gt     xet  
180511         , CST_XLA_INV_LINES_V  l2
180512             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
180513         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
180514           AND xet.event_type_code = C_EVENT_TYPE_CODE
180515             AND l2.event_id          = xet.event_id
180516 
180517 )
180518 ;
180519 --
180520 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180521 
180522       trace
180523          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
180524          ,p_level    => C_LEVEL_STATEMENT
180525          ,p_module   => l_log_module);
180526 
180527 END IF;
180528 
180529 
180530 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
180531       trace
180532          (p_msg      => 'END of insert_sources_287'
180533          ,p_level    => C_LEVEL_PROCEDURE
180534          ,p_module   => l_log_module);
180535 END IF;
180536 EXCEPTION
180537   WHEN xla_exceptions_pkg.application_exception THEN
180538       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
180539             trace
180540                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
180541                ,p_level    => C_LEVEL_EXCEPTION
180542                ,p_module   => l_log_module);
180543       END IF;
180544       RAISE;
180545   WHEN OTHERS THEN
180546       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
180547             trace
180548                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
180549                ,p_level    => C_LEVEL_EXCEPTION
180550                ,p_module   => l_log_module);
180551        END IF;
180552        xla_exceptions_pkg.raise_message
180553            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_287');
180554 END insert_sources_287;
180555 --
180556 
180557 ---------------------------------------
180558 --
180559 -- PRIVATE FUNCTION
180560 --         EventType_287
180561 --
180562 ----------------------------------------
180563 --
180564 FUNCTION EventType_287
180565        (p_application_id         IN NUMBER
180566        ,p_base_ledger_id         IN NUMBER
180567        ,p_target_ledger_id       IN NUMBER
180568        ,p_language               IN VARCHAR2
180569        ,p_currency_code          IN VARCHAR2
180570        ,p_sla_ledger_id          IN NUMBER
180571        ,p_pad_start_date         IN DATE
180572        ,p_pad_end_date           IN DATE
180573        ,p_primary_ledger_id      IN NUMBER)
180574 RETURN BOOLEAN IS
180575 --
180576 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UAVG_COST_UPD';
180577 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
180578 
180579 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
180580 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
180581 --
180582 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180583 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180584 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
180585 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
180586 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180587 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
180588 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
180589 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180590 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180591 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180592 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180593 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180594 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180595 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180596 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
180597 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
180598 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
180599 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
180600 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180601 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180602 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180603 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180604 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
180605 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
180606 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
180607 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
180608 
180609 l_event_id                             NUMBER;
180610 l_previous_event_id                    NUMBER;
180611 l_first_event_id                       NUMBER;
180612 l_last_event_id                        NUMBER;
180613 
180614 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
180615 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
180616 --
180617 --
180618 l_result                    BOOLEAN := TRUE;
180619 l_rows                      NUMBER  := 1000;
180620 l_event_type_name           VARCHAR2(80) := 'User-defined Cost Update';
180621 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
180622 l_description               VARCHAR2(4000);
180623 l_transaction_reversal      NUMBER;
180624 l_ae_header_id              NUMBER;
180625 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
180626 l_log_module                VARCHAR2(240);
180627 --
180628 l_acct_reversal_source      VARCHAR2(30);
180629 l_trx_reversal_source       VARCHAR2(30);
180630 
180631 l_continue_with_lines       BOOLEAN := TRUE;
180632 --
180633 l_acc_rev_gl_date_source    DATE;                      -- 4262811
180634 --
180635 type t_array_event_id is table of number index by binary_integer;
180636 
180637 l_rec_array_event                    t_rec_array_event;
180638 l_null_rec_array_event               t_rec_array_event;
180639 l_array_ae_header_id                 xla_number_array_type;
180640 l_actual_flag                        VARCHAR2(1) := NULL;
180641 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
180642 l_balance_type_code                  VARCHAR2(1) :=NULL;
180643 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
180644 
180645 --
180646 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
180647 --
180648 
180649 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
180650 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
180651 
180652 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
180653 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
180654 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
180655 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
180656 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
180657 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
180658 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
180659 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
180660 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
180661 
180662 l_array_source_12              t_array_source_12;
180663 l_array_source_12_meaning      t_array_lookup_meaning;
180664 l_array_source_38              t_array_source_38;
180665 l_array_source_38_meaning      t_array_lookup_meaning;
180666 
180667 l_array_source_4      t_array_source_4;
180668 l_array_source_11      t_array_source_11;
180669 l_array_source_15      t_array_source_15;
180670 l_array_source_18      t_array_source_18;
180671 l_array_source_19      t_array_source_19;
180672 l_array_source_20      t_array_source_20;
180673 l_array_source_21      t_array_source_21;
180674 l_array_source_22      t_array_source_22;
180675 l_array_source_24      t_array_source_24;
180676 
180677 --
180678 CURSOR header_cur
180679 IS
180680 SELECT /*+ leading(xet) cardinality(xet,1) */
180681 -- Event Type Code: UAVG_COST_UPD
180682 -- Event Class Code: USER_DEFINE
180683     xet.entity_id
180684   , xet.legal_entity_id
180685   , xet.entity_code
180686   , xet.transaction_number
180687   , xet.event_id
180688   , xet.event_class_code
180689   , xet.event_type_code
180690   , xet.event_number
180691   , xet.event_date
180692   , xet.transaction_date
180693   , xet.reference_num_1
180694   , xet.reference_num_2
180695   , xet.reference_num_3
180696   , xet.reference_num_4
180697   , xet.reference_char_1
180698   , xet.reference_char_2
180699   , xet.reference_char_3
180700   , xet.reference_char_4
180701   , xet.reference_date_1
180702   , xet.reference_date_2
180703   , xet.reference_date_3
180704   , xet.reference_date_4
180705   , xet.event_created_by
180706   , xet.budgetary_control_flag 
180707   , h1.DISTRIBUTION_TYPE    source_12
180708   , fvl12.meaning   source_12_meaning
180709   , h1.TRANSFER_TO_GL_INDICATOR    source_38
180710   , fvl38.meaning   source_38_meaning
180711   FROM xla_events_gt     xet 
180712   , CST_XLA_INV_HEADERS_V  h1
180713   , fnd_lookup_values    fvl12
180714   , fnd_lookup_values    fvl38
180715  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
180716    and xet.event_type_code = C_EVENT_TYPE_CODE
180717    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
180718    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
180719   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
180720   AND fvl12.view_application_id(+) = 700
180721   AND fvl12.language(+)            = USERENV('LANG')
180722      AND fvl38.lookup_type(+)         = 'YES_NO'
180723   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
180724   AND fvl38.view_application_id(+) = 0
180725   AND fvl38.language(+)            = USERENV('LANG')
180726   
180727  ORDER BY event_id
180728 ;
180729 
180730 
180731 --
180732 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
180733 IS
180734 SELECT /*+ leading(xet) cardinality(xet,1) */
180735 -- Event Type Code: UAVG_COST_UPD
180736 -- Event Class Code: USER_DEFINE
180737     xet.entity_id
180738    ,xet.legal_entity_id
180739    ,xet.entity_code
180740    ,xet.transaction_number
180741    ,xet.event_id
180742    ,xet.event_class_code
180743    ,xet.event_type_code
180744    ,xet.event_number
180745    ,xet.event_date
180746    ,xet.transaction_date
180747    ,xet.reference_num_1
180748    ,xet.reference_num_2
180749    ,xet.reference_num_3
180750    ,xet.reference_num_4
180751    ,xet.reference_char_1
180752    ,xet.reference_char_2
180753    ,xet.reference_char_3
180754    ,xet.reference_char_4
180755    ,xet.reference_date_1
180756    ,xet.reference_date_2
180757    ,xet.reference_date_3
180758    ,xet.reference_date_4
180759    ,xet.event_created_by
180760    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
180761   , l2.CODE_COMBINATION_ID    source_4
180762   , l2.DISTRIBUTION_IDENTIFIER    source_11
180763   , l2.CURRENCY_CODE    source_15
180764   , l2.ENTERED_AMOUNT    source_18
180765   , l2.CURRENCY_CONVERSION_DATE    source_19
180766   , l2.CURRENCY_CONVERSION_RATE    source_20
180767   , l2.CURRENCY_CONVERSION_TYPE    source_21
180768   , l2.ACCOUNTED_AMOUNT    source_22
180769   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
180770   FROM xla_events_gt     xet 
180771   , CST_XLA_INV_LINES_V  l2
180772  WHERE xet.event_id between x_first_event_id and x_last_event_id
180773    and xet.event_date between p_pad_start_date and p_pad_end_date
180774    and xet.event_type_code = C_EVENT_TYPE_CODE
180775    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
180776 ;
180777 
180778 --
180779 BEGIN
180780 IF g_log_enabled THEN
180781    l_log_module := C_DEFAULT_MODULE||'.EventType_287';
180782 END IF;
180783 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
180784    trace
180785       (p_msg      => 'BEGIN of EventType_287'
180786       ,p_level    => C_LEVEL_PROCEDURE
180787       ,p_module   => l_log_module);
180788 END IF;
180789 
180790 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180791    trace
180792       (p_msg      => 'p_application_id = '||p_application_id||
180793                      ' - p_base_ledger_id = '||p_base_ledger_id||
180794                      ' - p_target_ledger_id  = '||p_target_ledger_id||
180795                      ' - p_language = '||p_language||
180796                      ' - p_currency_code = '||p_currency_code||
180797                      ' - p_sla_ledger_id = '||p_sla_ledger_id
180798       ,p_level    => C_LEVEL_STATEMENT
180799       ,p_module   => l_log_module);
180800 END IF;
180801 --
180802 -- initialze arrays
180803 --
180804 g_array_event.DELETE;
180805 l_rec_array_event := l_null_rec_array_event;
180806 --
180807 --------------------------------------
180808 -- 4262811 Initialze MPA Line Number
180809 --------------------------------------
180810 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
180811 
180812 --
180813 
180814 --
180815 OPEN header_cur;
180816 --
180817 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180818    trace
180819    (p_msg      => 'SQL - FETCH header_cur'
180820    ,p_level    => C_LEVEL_STATEMENT
180821    ,p_module   => l_log_module);
180822 END IF;
180823 --
180824 LOOP
180825 FETCH header_cur BULK COLLECT INTO
180826         l_array_entity_id
180827       , l_array_legal_entity_id
180828       , l_array_entity_code
180829       , l_array_transaction_num
180830       , l_array_event_id
180831       , l_array_class_code
180832       , l_array_event_type
180833       , l_array_event_number
180834       , l_array_event_date
180835       , l_array_transaction_date
180836       , l_array_reference_num_1
180837       , l_array_reference_num_2
180838       , l_array_reference_num_3
180839       , l_array_reference_num_4
180840       , l_array_reference_char_1
180841       , l_array_reference_char_2
180842       , l_array_reference_char_3
180843       , l_array_reference_char_4
180844       , l_array_reference_date_1
180845       , l_array_reference_date_2
180846       , l_array_reference_date_3
180847       , l_array_reference_date_4
180848       , l_array_event_created_by
180849       , l_array_budgetary_control_flag 
180850       , l_array_source_12
180851       , l_array_source_12_meaning
180852       , l_array_source_38
180853       , l_array_source_38_meaning
180854       LIMIT l_rows;
180855 --
180856 IF (C_LEVEL_EVENT >= g_log_level) THEN
180857    trace
180858    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
180859    ,p_level    => C_LEVEL_EVENT
180860    ,p_module   => l_log_module);
180861 END IF;
180862 --
180863 EXIT WHEN l_array_entity_id.COUNT = 0;
180864 
180865 -- initialize arrays
180866 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
180867 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
180868 
180869 --
180870 -- Bug 4458708
180871 --
180872 XLA_AE_LINES_PKG.g_LineNumber := 0;
180873 
180874 
180875 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
180876 g_last_hdr_idx := l_array_event_id.LAST;
180877 --
180878 -- loop for the headers. Each iteration is for each header extract row
180879 -- fetched in header cursor
180880 --
180881 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
180882 
180883 --
180884 -- set event info as cache for other routines to refer event attributes
180885 --
180886 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
180887    (p_application_id           => p_application_id
180888    ,p_primary_ledger_id        => p_primary_ledger_id
180889    ,p_base_ledger_id           => p_base_ledger_id
180890    ,p_target_ledger_id         => p_target_ledger_id
180891    ,p_entity_id                => l_array_entity_id(hdr_idx)
180892    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
180893    ,p_entity_code              => l_array_entity_code(hdr_idx)
180894    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
180895    ,p_event_id                 => l_array_event_id(hdr_idx)
180896    ,p_event_class_code         => l_array_class_code(hdr_idx)
180897    ,p_event_type_code          => l_array_event_type(hdr_idx)
180898    ,p_event_number             => l_array_event_number(hdr_idx)
180899    ,p_event_date               => l_array_event_date(hdr_idx)
180900    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
180901    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
180902    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
180903    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
180904    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
180905    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
180906    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
180907    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
180908    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
180909    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
180910    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
180911    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
180912    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
180913    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
180914    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
180915 
180916 --
180917 -- set the status of entry to C_VALID (0)
180918 --
180919 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
180920 
180921 --
180922 -- initialize a row for ae header
180923 --
180924 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
180925 
180926 l_event_id := l_array_event_id(hdr_idx);
180927 
180928 --
180929 -- storing the hdr_idx for event. May be used by line cursor.
180930 --
180931 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
180932 
180933 --
180934 -- store sources from header extract. This can be improved to
180935 -- store only those sources from header extract that may be used in lines
180936 --
180937 
180938 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
180939 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
180940 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
180941 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
180942 
180943 --
180944 -- initilaize the status of ae headers for diffrent balance types
180945 -- the status is initialised to C_NOT_CREATED (2)
180946 --
180947 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
180948 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
180949 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
180950 
180951 --
180952 -- call api to validate and store accounting attributes for header
180953 --
180954 
180955 ------------------------------------------------------------
180956 -- Accrual Reversal : to get date for Standard Source (NONE)
180957 ------------------------------------------------------------
180958 l_acc_rev_gl_date_source := NULL;
180959 
180960      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
180961       l_rec_acct_attrs.array_date_value(1) := 
180962 xla_ae_sources_pkg.GetSystemSourceDate(
180963    p_source_code           => 'XLA_REFERENCE_DATE_1'
180964  , p_source_type_code      => 'Y'
180965  , p_source_application_id =>  602
180966 );
180967      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
180968       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
180969 
180970 
180971 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
180972 
180973 XLA_AE_HEADER_PKG.SetJeCategoryName;
180974 
180975 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
180976 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
180977 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
180978 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
180979 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
180980 
180981 
180982 -- No header level analytical criteria
180983 
180984 --
180985 --accounting attribute enhancement, bug 3612931
180986 --
180987 l_trx_reversal_source := SUBSTR(NULL, 1,30);
180988 
180989 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
180990    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
180991 
180992    xla_accounting_err_pkg.build_message
180993       (p_appli_s_name            => 'XLA'
180994       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
180995       ,p_token_1                 => 'ACCT_ATTR_NAME'
180996       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
180997       ,p_token_2                 => 'PRODUCT_NAME'
180998       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
180999       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
181000       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
181001       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
181002 
181003 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
181004    --
181005    -- following sets the accounting attributes needed to reverse
181006    -- accounting for a distributeion
181007    --
181008    xla_ae_lines_pkg.SetTrxReversalAttrs
181009       (p_event_id              => l_event_id
181010       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
181011       ,p_trx_reversal_source   => l_trx_reversal_source);
181012 
181013 END IF;
181014 
181015 
181016 ----------------------------------------------------------------
181017 -- 4262811 -  update the header statuses to invalid in need be
181018 ----------------------------------------------------------------
181019 --
181020 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
181021 
181022 
181023   -----------------------------------------------
181024   -- No accrual reversal for the event class/type
181025   -----------------------------------------------
181026 ----------------------------------------------------------------
181027 
181028 --
181029 -- this ends the header loop iteration for one bulk fetch
181030 --
181031 END LOOP;
181032 
181033 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
181034 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
181035 
181036 --
181037 -- insert dummy rows into lines gt table that were created due to
181038 -- transaction reversals
181039 --
181040 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
181041    l_result := XLA_AE_LINES_PKG.InsertLines;
181042 END IF;
181043 
181044 --
181045 -- reset the temp_line_num for each set of events fetched from header
181046 -- cursor rather than doing it for each new event in line cursor
181047 -- Bug 3939231
181048 --
181049 xla_ae_lines_pkg.g_temp_line_num := 0;
181050 
181051 
181052 
181053 --
181054 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
181055 --
181056 --
181057 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181058 
181059       trace
181060          (p_msg      => 'SQL - FETCH line_cur'
181061          ,p_level    => C_LEVEL_STATEMENT
181062          ,p_module   => l_log_module);
181063 
181064 END IF;
181065 --
181066 --
181067 LOOP
181068   --
181069   FETCH line_cur BULK COLLECT INTO
181070         l_array_entity_id
181071       , l_array_legal_entity_id
181072       , l_array_entity_code
181073       , l_array_transaction_num
181074       , l_array_event_id
181075       , l_array_class_code
181076       , l_array_event_type
181077       , l_array_event_number
181078       , l_array_event_date
181079       , l_array_transaction_date
181080       , l_array_reference_num_1
181081       , l_array_reference_num_2
181082       , l_array_reference_num_3
181083       , l_array_reference_num_4
181084       , l_array_reference_char_1
181085       , l_array_reference_char_2
181086       , l_array_reference_char_3
181087       , l_array_reference_char_4
181088       , l_array_reference_date_1
181089       , l_array_reference_date_2
181090       , l_array_reference_date_3
181091       , l_array_reference_date_4
181092       , l_array_event_created_by
181093       , l_array_budgetary_control_flag
181094       , l_array_extract_line_num 
181095       , l_array_source_4
181096       , l_array_source_11
181097       , l_array_source_15
181098       , l_array_source_18
181099       , l_array_source_19
181100       , l_array_source_20
181101       , l_array_source_21
181102       , l_array_source_22
181103       , l_array_source_24
181104       LIMIT l_rows;
181105 
181106   --
181107   IF (C_LEVEL_EVENT >= g_log_level) THEN
181108             trace
181109                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
181110                ,p_level    => C_LEVEL_EVENT
181111                ,p_module   => l_log_module);
181112   END IF;
181113   --
181114   EXIT WHEN l_array_entity_id.count = 0;
181115 
181116   XLA_AE_LINES_PKG.g_rec_lines := null;
181117 
181118 --
181119 -- Bug 4458708
181120 --
181121 XLA_AE_LINES_PKG.g_LineNumber := 0;
181122 --
181123 --
181124 
181125 FOR Idx IN 1..l_array_event_id.count LOOP
181126    --
181127    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
181128    --
181129    l_event_id := l_array_event_id(idx);  -- 5648433
181130 
181131    --
181132    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
181133    --
181134 
181135    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
181136              (g_array_event(l_event_id).array_value_num('header_index'))
181137          ,'N'
181138          ) <> 'Y'
181139    THEN
181140       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181141          trace
181142             (p_msg      => 'Trancaction revesal option is not Y '
181143             ,p_level    => C_LEVEL_STATEMENT
181144             ,p_module   => l_log_module);
181145       END IF;
181146 
181147 --
181148 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
181149 --
181150 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
181151 --
181152 -- set event info as cache for other routines to refer event attributes
181153 --
181154 
181155 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
181156    l_previous_event_id := l_event_id;
181157 
181158    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
181159       (p_application_id           => p_application_id
181160       ,p_primary_ledger_id        => p_primary_ledger_id
181161       ,p_base_ledger_id           => p_base_ledger_id
181162       ,p_target_ledger_id         => p_target_ledger_id
181163       ,p_entity_id                => l_array_entity_id(Idx)
181164       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
181165       ,p_entity_code              => l_array_entity_code(Idx)
181166       ,p_transaction_num          => l_array_transaction_num(Idx)
181167       ,p_event_id                 => l_array_event_id(Idx)
181168       ,p_event_class_code         => l_array_class_code(Idx)
181169       ,p_event_type_code          => l_array_event_type(Idx)
181170       ,p_event_number             => l_array_event_number(Idx)
181171       ,p_event_date               => l_array_event_date(Idx)
181172       ,p_transaction_date         => l_array_transaction_date(Idx)
181173       ,p_reference_num_1          => l_array_reference_num_1(Idx)
181174       ,p_reference_num_2          => l_array_reference_num_2(Idx)
181175       ,p_reference_num_3          => l_array_reference_num_3(Idx)
181176       ,p_reference_num_4          => l_array_reference_num_4(Idx)
181177       ,p_reference_char_1         => l_array_reference_char_1(Idx)
181178       ,p_reference_char_2         => l_array_reference_char_2(Idx)
181179       ,p_reference_char_3         => l_array_reference_char_3(Idx)
181180       ,p_reference_char_4         => l_array_reference_char_4(Idx)
181181       ,p_reference_date_1         => l_array_reference_date_1(Idx)
181182       ,p_reference_date_2         => l_array_reference_date_2(Idx)
181183       ,p_reference_date_3         => l_array_reference_date_3(Idx)
181184       ,p_reference_date_4         => l_array_reference_date_4(Idx)
181185       ,p_event_created_by         => l_array_event_created_by(Idx)
181186       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
181187        --
181188 END IF;
181189 
181190 
181191 
181192 --
181193 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
181194 
181195 l_acct_reversal_source := SUBSTR(NULL, 1,30);
181196 
181197 IF l_continue_with_lines THEN
181198    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
181199       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
181200 
181201       xla_accounting_err_pkg.build_message
181202          (p_appli_s_name            => 'XLA'
181203          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
181204          ,p_token_1                 => 'LINE_NUMBER'
181205          ,p_value_1                 => l_array_extract_line_num(Idx)
181206          ,p_token_2                 => 'PRODUCT_NAME'
181207          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
181208          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
181209          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
181210          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
181211 
181212    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
181213       --
181214       -- following sets the accounting attributes needed to reverse
181215       -- accounting for a distributeion
181216       --
181217 
181218       --
181219       -- 5217187
181220       --
181221       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
181222       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
181223                                        g_array_event(l_event_id).array_value_num('header_index'));
181224       --
181225       --
181226 
181227       -- No reversal code generated
181228 
181229       xla_ae_lines_pkg.SetAcctReversalAttrs
181230          (p_event_id             => l_event_id
181231          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
181232          ,p_calculate_acctd_flag => l_calculate_acctd_flag
181233          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
181234    END IF;
181235 
181236    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
181237        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
181238 
181239 --
181240 AcctLineType_24 (
181241  p_application_id  => p_application_id
181242  ,p_event_id     => l_event_id
181243  ,p_calculate_acctd_flag => l_calculate_acctd_flag
181244  ,p_calculate_g_l_flag => l_calculate_g_l_flag
181245  ,p_actual_flag => l_actual_flag
181246  ,p_balance_type_code => l_balance_type_code
181247  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
181248  
181249  , p_source_4 => l_array_source_4(Idx)
181250  , p_source_11 => l_array_source_11(Idx)
181251  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
181252  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
181253  , p_source_15 => l_array_source_15(Idx)
181254  , p_source_18 => l_array_source_18(Idx)
181255  , p_source_19 => l_array_source_19(Idx)
181256  , p_source_20 => l_array_source_20(Idx)
181257  , p_source_21 => l_array_source_21(Idx)
181258  , p_source_22 => l_array_source_22(Idx)
181259  , p_source_24 => l_array_source_24(Idx)
181260  );
181261 If(l_balance_type_code = 'A') THEN
181262   l_actual_gain_loss_ref := l_gain_or_loss_ref;
181263 END IF;
181264 
181265 --
181266 
181267 
181268 --
181269 AcctLineType_27 (
181270  p_application_id  => p_application_id
181271  ,p_event_id     => l_event_id
181272  ,p_calculate_acctd_flag => l_calculate_acctd_flag
181273  ,p_calculate_g_l_flag => l_calculate_g_l_flag
181274  ,p_actual_flag => l_actual_flag
181275  ,p_balance_type_code => l_balance_type_code
181276  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
181277  
181278  , p_source_4 => l_array_source_4(Idx)
181279  , p_source_11 => l_array_source_11(Idx)
181280  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
181281  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
181282  , p_source_15 => l_array_source_15(Idx)
181283  , p_source_18 => l_array_source_18(Idx)
181284  , p_source_19 => l_array_source_19(Idx)
181285  , p_source_20 => l_array_source_20(Idx)
181286  , p_source_21 => l_array_source_21(Idx)
181287  , p_source_22 => l_array_source_22(Idx)
181288  , p_source_24 => l_array_source_24(Idx)
181289  );
181290 If(l_balance_type_code = 'A') THEN
181291   l_actual_gain_loss_ref := l_gain_or_loss_ref;
181292 END IF;
181293 
181294 --
181295 
181296 
181297 --
181298 AcctLineType_51 (
181299  p_application_id  => p_application_id
181300  ,p_event_id     => l_event_id
181301  ,p_calculate_acctd_flag => l_calculate_acctd_flag
181302  ,p_calculate_g_l_flag => l_calculate_g_l_flag
181303  ,p_actual_flag => l_actual_flag
181304  ,p_balance_type_code => l_balance_type_code
181305  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
181306  
181307  , p_source_4 => l_array_source_4(Idx)
181308  , p_source_11 => l_array_source_11(Idx)
181309  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
181310  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
181311  , p_source_15 => l_array_source_15(Idx)
181312  , p_source_18 => l_array_source_18(Idx)
181313  , p_source_19 => l_array_source_19(Idx)
181314  , p_source_20 => l_array_source_20(Idx)
181315  , p_source_21 => l_array_source_21(Idx)
181316  , p_source_22 => l_array_source_22(Idx)
181317  , p_source_24 => l_array_source_24(Idx)
181318  );
181319 If(l_balance_type_code = 'A') THEN
181320   l_actual_gain_loss_ref := l_gain_or_loss_ref;
181321 END IF;
181322 
181323 --
181324 
181325 
181326 --
181327 AcctLineType_130 (
181328  p_application_id  => p_application_id
181329  ,p_event_id     => l_event_id
181330  ,p_calculate_acctd_flag => l_calculate_acctd_flag
181331  ,p_calculate_g_l_flag => l_calculate_g_l_flag
181332  ,p_actual_flag => l_actual_flag
181333  ,p_balance_type_code => l_balance_type_code
181334  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
181335  
181336  , p_source_4 => l_array_source_4(Idx)
181337  , p_source_11 => l_array_source_11(Idx)
181338  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
181339  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
181340  , p_source_15 => l_array_source_15(Idx)
181341  , p_source_18 => l_array_source_18(Idx)
181342  , p_source_19 => l_array_source_19(Idx)
181343  , p_source_20 => l_array_source_20(Idx)
181344  , p_source_21 => l_array_source_21(Idx)
181345  , p_source_22 => l_array_source_22(Idx)
181346  , p_source_24 => l_array_source_24(Idx)
181347  );
181348 If(l_balance_type_code = 'A') THEN
181349   l_actual_gain_loss_ref := l_gain_or_loss_ref;
181350 END IF;
181351 
181352 --
181353 
181354 
181355 --
181356 AcctLineType_131 (
181357  p_application_id  => p_application_id
181358  ,p_event_id     => l_event_id
181359  ,p_calculate_acctd_flag => l_calculate_acctd_flag
181360  ,p_calculate_g_l_flag => l_calculate_g_l_flag
181361  ,p_actual_flag => l_actual_flag
181362  ,p_balance_type_code => l_balance_type_code
181363  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
181364  
181365  , p_source_4 => l_array_source_4(Idx)
181366  , p_source_11 => l_array_source_11(Idx)
181367  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
181368  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
181369  , p_source_15 => l_array_source_15(Idx)
181370  , p_source_18 => l_array_source_18(Idx)
181371  , p_source_19 => l_array_source_19(Idx)
181372  , p_source_20 => l_array_source_20(Idx)
181373  , p_source_21 => l_array_source_21(Idx)
181374  , p_source_22 => l_array_source_22(Idx)
181375  , p_source_24 => l_array_source_24(Idx)
181376  );
181377 If(l_balance_type_code = 'A') THEN
181378   l_actual_gain_loss_ref := l_gain_or_loss_ref;
181379 END IF;
181380 
181381 --
181382 
181383       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
181384       -- or secondary ledger that has different currency with primary
181385       -- or alc that is calculated by sla
181386       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
181387             (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'))
181388 
181389 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
181390 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
181391           AND (l_actual_flag = 'A')) THEN
181392         XLA_AE_LINES_PKG.CreateGainOrLossLines(
181393           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
181394          ,p_application_id   => p_application_id
181395          ,p_amb_context_code => 'DEFAULT'
181396          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
181397          ,p_event_class_code => C_EVENT_CLASS_CODE
181398          ,p_event_type_code  => C_EVENT_TYPE_CODE
181399          
181400          ,p_gain_ccid        => -1
181401          ,p_loss_ccid        => -1
181402 
181403          ,p_actual_flag      => l_actual_flag
181404          ,p_enc_flag         => null
181405          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
181406          ,p_enc_g_l_ref      => null
181407          );
181408       END IF;
181409    END IF;
181410 END IF;
181411 
181412    ELSE
181413       --
181414       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
181415       --
181416       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181417          trace
181418             (p_msg      => 'Trancaction revesal option is Y'
181419             ,p_level    => C_LEVEL_STATEMENT
181420             ,p_module   => l_log_module);
181421       END IF;
181422    END IF;
181423 
181424 END LOOP;
181425 l_result := XLA_AE_LINES_PKG.InsertLines ;
181426 end loop;
181427 close line_cur;
181428 
181429 
181430 --
181431 -- insert headers into xla_ae_headers_gt table
181432 --
181433 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
181434 
181435 -- insert into errors table here.
181436 
181437 END LOOP;
181438 
181439 --
181440 -- 4865292
181441 --
181442 -- Compare g_hdr_extract_count with event count in
181443 -- CreateHeadersAndLines.
181444 --
181445 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
181446 
181447 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181448    trace (p_msg     => '# rows extracted from header extract objects '
181449                     || ' (running total): '
181450                     || g_hdr_extract_count
181451          ,p_level   => C_LEVEL_STATEMENT
181452          ,p_module  => l_log_module);
181453 END IF;
181454 
181455 CLOSE header_cur;
181456 --
181457 
181458 --
181459 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
181460    trace
181461       (p_msg      => 'END of EventType_287'
181462       ,p_level    => C_LEVEL_PROCEDURE
181463       ,p_module   => l_log_module);
181464 END IF;
181465 --
181466 RETURN l_result;
181467 EXCEPTION
181468 WHEN xla_exceptions_pkg.application_exception THEN
181469    
181470 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
181471 
181472    
181473 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
181474 
181475    RAISE;
181476 
181477 WHEN NO_DATA_FOUND THEN
181478 
181479 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
181480 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
181481 
181482 FOR header_record IN header_cur
181483 LOOP
181484     l_array_header_events(header_record.event_id) := header_record.event_id;
181485 END LOOP;
181486 
181487 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
181488 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
181489 
181490 fnd_file.put_line(fnd_file.LOG, '                    ');
181491 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
181492 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
181493 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
181494 
181495 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
181496 LOOP
181497 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
181498 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
181499         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
181500 	END IF;
181501 END LOOP;
181502 
181503 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
181504 fnd_file.put_line(fnd_file.LOG, '                    ');
181505 
181506 
181507 xla_exceptions_pkg.raise_message
181508       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_287');
181509 
181510 
181511 WHEN OTHERS THEN
181512    xla_exceptions_pkg.raise_message
181513       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_287');
181514 END EventType_287;
181515 --
181516 
181517 ---------------------------------------
181518 --
181519 -- PRIVATE PROCEDURE
181520 --         insert_sources_288
181521 --
181522 ----------------------------------------
181523 --
181524 PROCEDURE insert_sources_288(
181525                                 p_target_ledger_id       IN NUMBER
181526                               , p_language               IN VARCHAR2
181527                               , p_sla_ledger_id          IN NUMBER
181528                               , p_pad_start_date         IN DATE
181529                               , p_pad_end_date           IN DATE
181530                          )
181531 IS
181532 
181533 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UCG_TXFR';
181534 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
181535 p_apps_owner                   VARCHAR2(30);
181536 l_log_module                   VARCHAR2(240);
181537 BEGIN
181538 IF g_log_enabled THEN
181539       l_log_module := C_DEFAULT_MODULE||'.insert_sources_288';
181540 END IF;
181541 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
181542 
181543       trace
181544          (p_msg      => 'BEGIN of insert_sources_288'
181545          ,p_level    => C_LEVEL_PROCEDURE
181546          ,p_module   => l_log_module);
181547 
181548 END IF;
181549 
181550 -- select APPS owner
181551 SELECT oracle_username
181552   INTO p_apps_owner
181553   FROM fnd_oracle_userid
181554  WHERE read_only_flag = 'U'
181555 ;
181556 
181557 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181558       trace
181559          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
181560                         ' - p_language = '||p_language||
181561                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
181562                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
181563                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
181564                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
181565          ,p_level    => C_LEVEL_STATEMENT
181566          ,p_module   => l_log_module);
181567 END IF;
181568 
181569 
181570 --
181571 INSERT INTO xla_diag_sources --hdr1
181572 (
181573         event_id
181574       , ledger_id
181575       , sla_ledger_id
181576       , description_language
181577       , object_name
181578       , object_type_code
181579       , line_number
181580       , source_application_id
181581       , source_type_code
181582       , source_code
181583       , source_value
181584       , source_meaning
181585       , created_by
181586       , creation_date
181587       , last_update_date
181588       , last_updated_by
181589       , last_update_login
181590       , program_update_date
181591       , program_application_id
181592       , program_id
181593       , request_id
181594 )
181595 SELECT
181596         event_id
181597       , p_target_ledger_id
181598       , p_sla_ledger_id
181599       , p_language
181600       , object_name
181601       , object_type_code
181602       , line_number
181603       , source_application_id
181604       , source_type_code
181605       , source_code
181606       , SUBSTR(source_value ,1,1996)
181607       , SUBSTR(source_meaning,1,200)
181608       , xla_environment_pkg.g_Usr_Id
181609       , TRUNC(SYSDATE)
181610       , TRUNC(SYSDATE)
181611       , xla_environment_pkg.g_Usr_Id
181612       , xla_environment_pkg.g_Login_Id
181613       , TRUNC(SYSDATE)
181614       , xla_environment_pkg.g_Prog_Appl_Id
181615       , xla_environment_pkg.g_Prog_Id
181616       , xla_environment_pkg.g_Req_Id
181617   FROM (
181618        SELECT xet.event_id                  event_id
181619             , 0                             line_number
181620             , CASE r
181621                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
181622                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
181623                 
181624                ELSE null
181625               END                           object_name
181626             , CASE r
181627                 WHEN 1 THEN 'HEADER' 
181628                 WHEN 2 THEN 'HEADER' 
181629                 
181630                 ELSE null
181631               END                           object_type_code
181632             , CASE r
181633                 WHEN 1 THEN '707' 
181634                 WHEN 2 THEN '707' 
181635                 
181636                 ELSE null
181637               END                           source_application_id
181638             , 'S'             source_type_code
181639             , CASE r
181640                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
181641                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
181642                 
181643                 ELSE null
181644               END                           source_code
181645             , CASE r
181646                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
181647                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
181648                 
181649                 ELSE null
181650               END                           source_value
181651             , CASE r
181652                 WHEN 1 THEN fvl12.meaning
181653                 WHEN 2 THEN fvl38.meaning
181654                 
181655                 ELSE null
181656               END               source_meaning
181657         FROM xla_events_gt     xet  
181658       , CST_XLA_INV_HEADERS_V  h1
181659   , fnd_lookup_values    fvl12
181660   , fnd_lookup_values    fvl38
181661             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
181662        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
181663          AND xet.event_type_code = C_EVENT_TYPE_CODE
181664             AND h1.event_id = xet.event_id
181665    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
181666   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
181667   AND fvl12.view_application_id(+) = 700
181668   AND fvl12.language(+)            = USERENV('LANG')
181669      AND fvl38.lookup_type(+)         = 'YES_NO'
181670   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
181671   AND fvl38.view_application_id(+) = 0
181672   AND fvl38.language(+)            = USERENV('LANG')
181673   
181674 )
181675 ;
181676 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181677 
181678       trace
181679          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
181680          ,p_level    => C_LEVEL_STATEMENT
181681          ,p_module   => l_log_module);
181682 
181683 END IF;
181684 --
181685 
181686 
181687 
181688 --
181689 INSERT INTO xla_diag_sources --line1
181690 (
181691         event_id
181692       , ledger_id
181693       , sla_ledger_id
181694       , description_language
181695       , object_name
181696       , object_type_code
181697       , line_number
181698       , source_application_id
181699       , source_type_code
181700       , source_code
181701       , source_value
181702       , source_meaning
181703       , created_by
181704       , creation_date
181705       , last_update_date
181706       , last_updated_by
181707       , last_update_login
181708       , program_update_date
181709       , program_application_id
181710       , program_id
181711       , request_id
181712 )
181713 SELECT  event_id
181714       , p_target_ledger_id
181715       , p_sla_ledger_id
181716       , p_language
181717       , object_name
181718       , object_type_code
181719       , line_number
181720       , source_application_id
181721       , source_type_code
181722       , source_code
181723       , SUBSTR(source_value,1,1996)
181724       , SUBSTR(source_meaning,1,200)
181725       , xla_environment_pkg.g_Usr_Id
181726       , TRUNC(SYSDATE)
181727       , TRUNC(SYSDATE)
181728       , xla_environment_pkg.g_Usr_Id
181729       , xla_environment_pkg.g_Login_Id
181730       , TRUNC(SYSDATE)
181731       , xla_environment_pkg.g_Prog_Appl_Id
181732       , xla_environment_pkg.g_Prog_Id
181733       , xla_environment_pkg.g_Req_Id
181734   FROM (
181735        SELECT xet.event_id                  event_id
181736             , l2.line_number                 line_number
181737             , CASE r
181738                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
181739                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
181740                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
181741                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
181742                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
181743                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
181744                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
181745                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
181746                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
181747                 
181748                ELSE null
181749               END                           object_name
181750             , CASE r
181751                 WHEN 1 THEN 'LINE' 
181752                 WHEN 2 THEN 'LINE' 
181753                 WHEN 3 THEN 'LINE' 
181754                 WHEN 4 THEN 'LINE' 
181755                 WHEN 5 THEN 'LINE' 
181756                 WHEN 6 THEN 'LINE' 
181757                 WHEN 7 THEN 'LINE' 
181758                 WHEN 8 THEN 'LINE' 
181759                 WHEN 9 THEN 'LINE' 
181760                 
181761                 ELSE null
181762               END                           object_type_code
181763             , CASE r
181764                 WHEN 1 THEN '707' 
181765                 WHEN 2 THEN '707' 
181766                 WHEN 3 THEN '707' 
181767                 WHEN 4 THEN '707' 
181768                 WHEN 5 THEN '707' 
181769                 WHEN 6 THEN '707' 
181770                 WHEN 7 THEN '707' 
181771                 WHEN 8 THEN '707' 
181772                 WHEN 9 THEN '707' 
181773                 
181774                 ELSE null
181775               END                           source_application_id
181776             , 'S'             source_type_code
181777             , CASE r
181778                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
181779                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
181780                 WHEN 3 THEN 'CURRENCY_CODE' 
181781                 WHEN 4 THEN 'ENTERED_AMOUNT' 
181782                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
181783                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
181784                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
181785                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
181786                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
181787                 
181788                 ELSE null
181789               END                           source_code
181790             , CASE r
181791                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
181792                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
181793                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
181794                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
181795                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
181796                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
181797                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
181798                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
181799                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
181800                 
181801                 ELSE null
181802               END                           source_value
181803             , null              source_meaning
181804          FROM  xla_events_gt     xet  
181805         , CST_XLA_INV_LINES_V  l2
181806             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
181807         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
181808           AND xet.event_type_code = C_EVENT_TYPE_CODE
181809             AND l2.event_id          = xet.event_id
181810 
181811 )
181812 ;
181813 --
181814 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181815 
181816       trace
181817          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
181818          ,p_level    => C_LEVEL_STATEMENT
181819          ,p_module   => l_log_module);
181820 
181821 END IF;
181822 
181823 
181824 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
181825       trace
181826          (p_msg      => 'END of insert_sources_288'
181827          ,p_level    => C_LEVEL_PROCEDURE
181828          ,p_module   => l_log_module);
181829 END IF;
181830 EXCEPTION
181831   WHEN xla_exceptions_pkg.application_exception THEN
181832       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
181833             trace
181834                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
181835                ,p_level    => C_LEVEL_EXCEPTION
181836                ,p_module   => l_log_module);
181837       END IF;
181838       RAISE;
181839   WHEN OTHERS THEN
181840       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
181841             trace
181842                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
181843                ,p_level    => C_LEVEL_EXCEPTION
181844                ,p_module   => l_log_module);
181845        END IF;
181846        xla_exceptions_pkg.raise_message
181847            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_288');
181848 END insert_sources_288;
181849 --
181850 
181851 ---------------------------------------
181852 --
181853 -- PRIVATE FUNCTION
181854 --         EventType_288
181855 --
181856 ----------------------------------------
181857 --
181858 FUNCTION EventType_288
181859        (p_application_id         IN NUMBER
181860        ,p_base_ledger_id         IN NUMBER
181861        ,p_target_ledger_id       IN NUMBER
181862        ,p_language               IN VARCHAR2
181863        ,p_currency_code          IN VARCHAR2
181864        ,p_sla_ledger_id          IN NUMBER
181865        ,p_pad_start_date         IN DATE
181866        ,p_pad_end_date           IN DATE
181867        ,p_primary_ledger_id      IN NUMBER)
181868 RETURN BOOLEAN IS
181869 --
181870 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UCG_TXFR';
181871 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
181872 
181873 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
181874 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
181875 --
181876 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181877 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181878 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
181879 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
181880 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181881 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
181882 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
181883 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181884 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
181885 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
181886 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181887 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181888 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181889 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181890 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
181891 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
181892 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
181893 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
181894 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
181895 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
181896 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
181897 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
181898 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
181899 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
181900 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
181901 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
181902 
181903 l_event_id                             NUMBER;
181904 l_previous_event_id                    NUMBER;
181905 l_first_event_id                       NUMBER;
181906 l_last_event_id                        NUMBER;
181907 
181908 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
181909 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
181910 --
181911 --
181912 l_result                    BOOLEAN := TRUE;
181913 l_rows                      NUMBER  := 1000;
181914 l_event_type_name           VARCHAR2(80) := 'User-defined Cost Group Transfer';
181915 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
181916 l_description               VARCHAR2(4000);
181917 l_transaction_reversal      NUMBER;
181918 l_ae_header_id              NUMBER;
181919 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
181920 l_log_module                VARCHAR2(240);
181921 --
181922 l_acct_reversal_source      VARCHAR2(30);
181923 l_trx_reversal_source       VARCHAR2(30);
181924 
181925 l_continue_with_lines       BOOLEAN := TRUE;
181926 --
181927 l_acc_rev_gl_date_source    DATE;                      -- 4262811
181928 --
181929 type t_array_event_id is table of number index by binary_integer;
181930 
181931 l_rec_array_event                    t_rec_array_event;
181932 l_null_rec_array_event               t_rec_array_event;
181933 l_array_ae_header_id                 xla_number_array_type;
181934 l_actual_flag                        VARCHAR2(1) := NULL;
181935 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
181936 l_balance_type_code                  VARCHAR2(1) :=NULL;
181937 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
181938 
181939 --
181940 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
181941 --
181942 
181943 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
181944 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
181945 
181946 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
181947 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
181948 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
181949 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
181950 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
181951 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
181952 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
181953 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
181954 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
181955 
181956 l_array_source_12              t_array_source_12;
181957 l_array_source_12_meaning      t_array_lookup_meaning;
181958 l_array_source_38              t_array_source_38;
181959 l_array_source_38_meaning      t_array_lookup_meaning;
181960 
181961 l_array_source_4      t_array_source_4;
181962 l_array_source_11      t_array_source_11;
181963 l_array_source_15      t_array_source_15;
181964 l_array_source_18      t_array_source_18;
181965 l_array_source_19      t_array_source_19;
181966 l_array_source_20      t_array_source_20;
181967 l_array_source_21      t_array_source_21;
181968 l_array_source_22      t_array_source_22;
181969 l_array_source_24      t_array_source_24;
181970 
181971 --
181972 CURSOR header_cur
181973 IS
181974 SELECT /*+ leading(xet) cardinality(xet,1) */
181975 -- Event Type Code: UCG_TXFR
181976 -- Event Class Code: USER_DEFINE
181977     xet.entity_id
181978   , xet.legal_entity_id
181979   , xet.entity_code
181980   , xet.transaction_number
181981   , xet.event_id
181982   , xet.event_class_code
181983   , xet.event_type_code
181984   , xet.event_number
181985   , xet.event_date
181986   , xet.transaction_date
181987   , xet.reference_num_1
181988   , xet.reference_num_2
181989   , xet.reference_num_3
181990   , xet.reference_num_4
181991   , xet.reference_char_1
181992   , xet.reference_char_2
181993   , xet.reference_char_3
181994   , xet.reference_char_4
181995   , xet.reference_date_1
181996   , xet.reference_date_2
181997   , xet.reference_date_3
181998   , xet.reference_date_4
181999   , xet.event_created_by
182000   , xet.budgetary_control_flag 
182001   , h1.DISTRIBUTION_TYPE    source_12
182002   , fvl12.meaning   source_12_meaning
182003   , h1.TRANSFER_TO_GL_INDICATOR    source_38
182004   , fvl38.meaning   source_38_meaning
182005   FROM xla_events_gt     xet 
182006   , CST_XLA_INV_HEADERS_V  h1
182007   , fnd_lookup_values    fvl12
182008   , fnd_lookup_values    fvl38
182009  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
182010    and xet.event_type_code = C_EVENT_TYPE_CODE
182011    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
182012    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
182013   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
182014   AND fvl12.view_application_id(+) = 700
182015   AND fvl12.language(+)            = USERENV('LANG')
182016      AND fvl38.lookup_type(+)         = 'YES_NO'
182017   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
182018   AND fvl38.view_application_id(+) = 0
182019   AND fvl38.language(+)            = USERENV('LANG')
182020   
182021  ORDER BY event_id
182022 ;
182023 
182024 
182025 --
182026 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
182027 IS
182028 SELECT /*+ leading(xet) cardinality(xet,1) */
182029 -- Event Type Code: UCG_TXFR
182030 -- Event Class Code: USER_DEFINE
182031     xet.entity_id
182032    ,xet.legal_entity_id
182033    ,xet.entity_code
182034    ,xet.transaction_number
182035    ,xet.event_id
182036    ,xet.event_class_code
182037    ,xet.event_type_code
182038    ,xet.event_number
182039    ,xet.event_date
182040    ,xet.transaction_date
182041    ,xet.reference_num_1
182042    ,xet.reference_num_2
182043    ,xet.reference_num_3
182044    ,xet.reference_num_4
182045    ,xet.reference_char_1
182046    ,xet.reference_char_2
182047    ,xet.reference_char_3
182048    ,xet.reference_char_4
182049    ,xet.reference_date_1
182050    ,xet.reference_date_2
182051    ,xet.reference_date_3
182052    ,xet.reference_date_4
182053    ,xet.event_created_by
182054    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
182055   , l2.CODE_COMBINATION_ID    source_4
182056   , l2.DISTRIBUTION_IDENTIFIER    source_11
182057   , l2.CURRENCY_CODE    source_15
182058   , l2.ENTERED_AMOUNT    source_18
182059   , l2.CURRENCY_CONVERSION_DATE    source_19
182060   , l2.CURRENCY_CONVERSION_RATE    source_20
182061   , l2.CURRENCY_CONVERSION_TYPE    source_21
182062   , l2.ACCOUNTED_AMOUNT    source_22
182063   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
182064   FROM xla_events_gt     xet 
182065   , CST_XLA_INV_LINES_V  l2
182066  WHERE xet.event_id between x_first_event_id and x_last_event_id
182067    and xet.event_date between p_pad_start_date and p_pad_end_date
182068    and xet.event_type_code = C_EVENT_TYPE_CODE
182069    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
182070 ;
182071 
182072 --
182073 BEGIN
182074 IF g_log_enabled THEN
182075    l_log_module := C_DEFAULT_MODULE||'.EventType_288';
182076 END IF;
182077 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
182078    trace
182079       (p_msg      => 'BEGIN of EventType_288'
182080       ,p_level    => C_LEVEL_PROCEDURE
182081       ,p_module   => l_log_module);
182082 END IF;
182083 
182084 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182085    trace
182086       (p_msg      => 'p_application_id = '||p_application_id||
182087                      ' - p_base_ledger_id = '||p_base_ledger_id||
182088                      ' - p_target_ledger_id  = '||p_target_ledger_id||
182089                      ' - p_language = '||p_language||
182090                      ' - p_currency_code = '||p_currency_code||
182091                      ' - p_sla_ledger_id = '||p_sla_ledger_id
182092       ,p_level    => C_LEVEL_STATEMENT
182093       ,p_module   => l_log_module);
182094 END IF;
182095 --
182096 -- initialze arrays
182097 --
182098 g_array_event.DELETE;
182099 l_rec_array_event := l_null_rec_array_event;
182100 --
182101 --------------------------------------
182102 -- 4262811 Initialze MPA Line Number
182103 --------------------------------------
182104 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
182105 
182106 --
182107 
182108 --
182109 OPEN header_cur;
182110 --
182111 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182112    trace
182113    (p_msg      => 'SQL - FETCH header_cur'
182114    ,p_level    => C_LEVEL_STATEMENT
182115    ,p_module   => l_log_module);
182116 END IF;
182117 --
182118 LOOP
182119 FETCH header_cur BULK COLLECT INTO
182120         l_array_entity_id
182121       , l_array_legal_entity_id
182122       , l_array_entity_code
182123       , l_array_transaction_num
182124       , l_array_event_id
182125       , l_array_class_code
182126       , l_array_event_type
182127       , l_array_event_number
182128       , l_array_event_date
182129       , l_array_transaction_date
182130       , l_array_reference_num_1
182131       , l_array_reference_num_2
182132       , l_array_reference_num_3
182133       , l_array_reference_num_4
182134       , l_array_reference_char_1
182135       , l_array_reference_char_2
182136       , l_array_reference_char_3
182137       , l_array_reference_char_4
182138       , l_array_reference_date_1
182139       , l_array_reference_date_2
182140       , l_array_reference_date_3
182141       , l_array_reference_date_4
182142       , l_array_event_created_by
182143       , l_array_budgetary_control_flag 
182144       , l_array_source_12
182145       , l_array_source_12_meaning
182146       , l_array_source_38
182147       , l_array_source_38_meaning
182148       LIMIT l_rows;
182149 --
182150 IF (C_LEVEL_EVENT >= g_log_level) THEN
182151    trace
182152    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
182153    ,p_level    => C_LEVEL_EVENT
182154    ,p_module   => l_log_module);
182155 END IF;
182156 --
182157 EXIT WHEN l_array_entity_id.COUNT = 0;
182158 
182159 -- initialize arrays
182160 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
182161 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
182162 
182163 --
182164 -- Bug 4458708
182165 --
182166 XLA_AE_LINES_PKG.g_LineNumber := 0;
182167 
182168 
182169 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
182170 g_last_hdr_idx := l_array_event_id.LAST;
182171 --
182172 -- loop for the headers. Each iteration is for each header extract row
182173 -- fetched in header cursor
182174 --
182175 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
182176 
182177 --
182178 -- set event info as cache for other routines to refer event attributes
182179 --
182180 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
182181    (p_application_id           => p_application_id
182182    ,p_primary_ledger_id        => p_primary_ledger_id
182183    ,p_base_ledger_id           => p_base_ledger_id
182184    ,p_target_ledger_id         => p_target_ledger_id
182185    ,p_entity_id                => l_array_entity_id(hdr_idx)
182186    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
182187    ,p_entity_code              => l_array_entity_code(hdr_idx)
182188    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
182189    ,p_event_id                 => l_array_event_id(hdr_idx)
182190    ,p_event_class_code         => l_array_class_code(hdr_idx)
182191    ,p_event_type_code          => l_array_event_type(hdr_idx)
182192    ,p_event_number             => l_array_event_number(hdr_idx)
182193    ,p_event_date               => l_array_event_date(hdr_idx)
182194    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
182195    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
182196    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
182197    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
182198    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
182199    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
182200    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
182201    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
182202    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
182203    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
182204    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
182205    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
182206    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
182207    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
182208    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
182209 
182210 --
182211 -- set the status of entry to C_VALID (0)
182212 --
182213 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
182214 
182215 --
182216 -- initialize a row for ae header
182217 --
182218 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
182219 
182220 l_event_id := l_array_event_id(hdr_idx);
182221 
182222 --
182223 -- storing the hdr_idx for event. May be used by line cursor.
182224 --
182225 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
182226 
182227 --
182228 -- store sources from header extract. This can be improved to
182229 -- store only those sources from header extract that may be used in lines
182230 --
182231 
182232 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
182233 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
182234 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
182235 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
182236 
182237 --
182238 -- initilaize the status of ae headers for diffrent balance types
182239 -- the status is initialised to C_NOT_CREATED (2)
182240 --
182241 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
182242 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
182243 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
182244 
182245 --
182246 -- call api to validate and store accounting attributes for header
182247 --
182248 
182249 ------------------------------------------------------------
182250 -- Accrual Reversal : to get date for Standard Source (NONE)
182251 ------------------------------------------------------------
182252 l_acc_rev_gl_date_source := NULL;
182253 
182254      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
182255       l_rec_acct_attrs.array_date_value(1) := 
182256 xla_ae_sources_pkg.GetSystemSourceDate(
182257    p_source_code           => 'XLA_REFERENCE_DATE_1'
182258  , p_source_type_code      => 'Y'
182259  , p_source_application_id =>  602
182260 );
182261      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
182262       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
182263 
182264 
182265 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
182266 
182267 XLA_AE_HEADER_PKG.SetJeCategoryName;
182268 
182269 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
182270 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
182271 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
182272 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
182273 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
182274 
182275 
182276 -- No header level analytical criteria
182277 
182278 --
182279 --accounting attribute enhancement, bug 3612931
182280 --
182281 l_trx_reversal_source := SUBSTR(NULL, 1,30);
182282 
182283 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
182284    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
182285 
182286    xla_accounting_err_pkg.build_message
182287       (p_appli_s_name            => 'XLA'
182288       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
182289       ,p_token_1                 => 'ACCT_ATTR_NAME'
182290       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
182291       ,p_token_2                 => 'PRODUCT_NAME'
182292       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
182293       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
182294       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
182295       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
182296 
182297 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
182298    --
182299    -- following sets the accounting attributes needed to reverse
182300    -- accounting for a distributeion
182301    --
182302    xla_ae_lines_pkg.SetTrxReversalAttrs
182303       (p_event_id              => l_event_id
182304       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
182305       ,p_trx_reversal_source   => l_trx_reversal_source);
182306 
182307 END IF;
182308 
182309 
182310 ----------------------------------------------------------------
182311 -- 4262811 -  update the header statuses to invalid in need be
182312 ----------------------------------------------------------------
182313 --
182314 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
182315 
182316 
182317   -----------------------------------------------
182318   -- No accrual reversal for the event class/type
182319   -----------------------------------------------
182320 ----------------------------------------------------------------
182321 
182322 --
182323 -- this ends the header loop iteration for one bulk fetch
182324 --
182325 END LOOP;
182326 
182327 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
182328 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
182329 
182330 --
182331 -- insert dummy rows into lines gt table that were created due to
182332 -- transaction reversals
182333 --
182334 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
182335    l_result := XLA_AE_LINES_PKG.InsertLines;
182336 END IF;
182337 
182338 --
182339 -- reset the temp_line_num for each set of events fetched from header
182340 -- cursor rather than doing it for each new event in line cursor
182341 -- Bug 3939231
182342 --
182343 xla_ae_lines_pkg.g_temp_line_num := 0;
182344 
182345 
182346 
182347 --
182348 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
182349 --
182350 --
182351 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182352 
182353       trace
182354          (p_msg      => 'SQL - FETCH line_cur'
182355          ,p_level    => C_LEVEL_STATEMENT
182356          ,p_module   => l_log_module);
182357 
182358 END IF;
182359 --
182360 --
182361 LOOP
182362   --
182363   FETCH line_cur BULK COLLECT INTO
182364         l_array_entity_id
182365       , l_array_legal_entity_id
182366       , l_array_entity_code
182367       , l_array_transaction_num
182368       , l_array_event_id
182369       , l_array_class_code
182370       , l_array_event_type
182371       , l_array_event_number
182372       , l_array_event_date
182373       , l_array_transaction_date
182374       , l_array_reference_num_1
182375       , l_array_reference_num_2
182376       , l_array_reference_num_3
182377       , l_array_reference_num_4
182378       , l_array_reference_char_1
182379       , l_array_reference_char_2
182380       , l_array_reference_char_3
182381       , l_array_reference_char_4
182382       , l_array_reference_date_1
182383       , l_array_reference_date_2
182384       , l_array_reference_date_3
182385       , l_array_reference_date_4
182386       , l_array_event_created_by
182387       , l_array_budgetary_control_flag
182388       , l_array_extract_line_num 
182389       , l_array_source_4
182390       , l_array_source_11
182391       , l_array_source_15
182392       , l_array_source_18
182393       , l_array_source_19
182394       , l_array_source_20
182395       , l_array_source_21
182396       , l_array_source_22
182397       , l_array_source_24
182398       LIMIT l_rows;
182399 
182400   --
182401   IF (C_LEVEL_EVENT >= g_log_level) THEN
182402             trace
182403                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
182404                ,p_level    => C_LEVEL_EVENT
182405                ,p_module   => l_log_module);
182406   END IF;
182407   --
182408   EXIT WHEN l_array_entity_id.count = 0;
182409 
182410   XLA_AE_LINES_PKG.g_rec_lines := null;
182411 
182412 --
182413 -- Bug 4458708
182414 --
182415 XLA_AE_LINES_PKG.g_LineNumber := 0;
182416 --
182417 --
182418 
182419 FOR Idx IN 1..l_array_event_id.count LOOP
182420    --
182421    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
182422    --
182423    l_event_id := l_array_event_id(idx);  -- 5648433
182424 
182425    --
182426    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
182427    --
182428 
182429    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
182430              (g_array_event(l_event_id).array_value_num('header_index'))
182431          ,'N'
182432          ) <> 'Y'
182433    THEN
182434       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182435          trace
182436             (p_msg      => 'Trancaction revesal option is not Y '
182437             ,p_level    => C_LEVEL_STATEMENT
182438             ,p_module   => l_log_module);
182439       END IF;
182440 
182441 --
182442 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
182443 --
182444 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
182445 --
182446 -- set event info as cache for other routines to refer event attributes
182447 --
182448 
182449 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
182450    l_previous_event_id := l_event_id;
182451 
182452    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
182453       (p_application_id           => p_application_id
182454       ,p_primary_ledger_id        => p_primary_ledger_id
182455       ,p_base_ledger_id           => p_base_ledger_id
182456       ,p_target_ledger_id         => p_target_ledger_id
182457       ,p_entity_id                => l_array_entity_id(Idx)
182458       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
182459       ,p_entity_code              => l_array_entity_code(Idx)
182460       ,p_transaction_num          => l_array_transaction_num(Idx)
182461       ,p_event_id                 => l_array_event_id(Idx)
182462       ,p_event_class_code         => l_array_class_code(Idx)
182463       ,p_event_type_code          => l_array_event_type(Idx)
182464       ,p_event_number             => l_array_event_number(Idx)
182465       ,p_event_date               => l_array_event_date(Idx)
182466       ,p_transaction_date         => l_array_transaction_date(Idx)
182467       ,p_reference_num_1          => l_array_reference_num_1(Idx)
182468       ,p_reference_num_2          => l_array_reference_num_2(Idx)
182469       ,p_reference_num_3          => l_array_reference_num_3(Idx)
182470       ,p_reference_num_4          => l_array_reference_num_4(Idx)
182471       ,p_reference_char_1         => l_array_reference_char_1(Idx)
182472       ,p_reference_char_2         => l_array_reference_char_2(Idx)
182473       ,p_reference_char_3         => l_array_reference_char_3(Idx)
182474       ,p_reference_char_4         => l_array_reference_char_4(Idx)
182475       ,p_reference_date_1         => l_array_reference_date_1(Idx)
182476       ,p_reference_date_2         => l_array_reference_date_2(Idx)
182477       ,p_reference_date_3         => l_array_reference_date_3(Idx)
182478       ,p_reference_date_4         => l_array_reference_date_4(Idx)
182479       ,p_event_created_by         => l_array_event_created_by(Idx)
182480       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
182481        --
182482 END IF;
182483 
182484 
182485 
182486 --
182487 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
182488 
182489 l_acct_reversal_source := SUBSTR(NULL, 1,30);
182490 
182491 IF l_continue_with_lines THEN
182492    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
182493       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
182494 
182495       xla_accounting_err_pkg.build_message
182496          (p_appli_s_name            => 'XLA'
182497          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
182498          ,p_token_1                 => 'LINE_NUMBER'
182499          ,p_value_1                 => l_array_extract_line_num(Idx)
182500          ,p_token_2                 => 'PRODUCT_NAME'
182501          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
182502          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
182503          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
182504          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
182505 
182506    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
182507       --
182508       -- following sets the accounting attributes needed to reverse
182509       -- accounting for a distributeion
182510       --
182511 
182512       --
182513       -- 5217187
182514       --
182515       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
182516       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
182517                                        g_array_event(l_event_id).array_value_num('header_index'));
182518       --
182519       --
182520 
182521       -- No reversal code generated
182522 
182523       xla_ae_lines_pkg.SetAcctReversalAttrs
182524          (p_event_id             => l_event_id
182525          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
182526          ,p_calculate_acctd_flag => l_calculate_acctd_flag
182527          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
182528    END IF;
182529 
182530    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
182531        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
182532 
182533 --
182534 AcctLineType_44 (
182535  p_application_id  => p_application_id
182536  ,p_event_id     => l_event_id
182537  ,p_calculate_acctd_flag => l_calculate_acctd_flag
182538  ,p_calculate_g_l_flag => l_calculate_g_l_flag
182539  ,p_actual_flag => l_actual_flag
182540  ,p_balance_type_code => l_balance_type_code
182541  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
182542  
182543  , p_source_4 => l_array_source_4(Idx)
182544  , p_source_11 => l_array_source_11(Idx)
182545  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
182546  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
182547  , p_source_15 => l_array_source_15(Idx)
182548  , p_source_18 => l_array_source_18(Idx)
182549  , p_source_19 => l_array_source_19(Idx)
182550  , p_source_20 => l_array_source_20(Idx)
182551  , p_source_21 => l_array_source_21(Idx)
182552  , p_source_22 => l_array_source_22(Idx)
182553  , p_source_24 => l_array_source_24(Idx)
182554  );
182555 If(l_balance_type_code = 'A') THEN
182556   l_actual_gain_loss_ref := l_gain_or_loss_ref;
182557 END IF;
182558 
182559 --
182560 
182561 
182562 --
182563 AcctLineType_157 (
182564  p_application_id  => p_application_id
182565  ,p_event_id     => l_event_id
182566  ,p_calculate_acctd_flag => l_calculate_acctd_flag
182567  ,p_calculate_g_l_flag => l_calculate_g_l_flag
182568  ,p_actual_flag => l_actual_flag
182569  ,p_balance_type_code => l_balance_type_code
182570  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
182571  
182572  , p_source_4 => l_array_source_4(Idx)
182573  , p_source_11 => l_array_source_11(Idx)
182574  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
182575  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
182576  , p_source_15 => l_array_source_15(Idx)
182577  , p_source_18 => l_array_source_18(Idx)
182578  , p_source_19 => l_array_source_19(Idx)
182579  , p_source_20 => l_array_source_20(Idx)
182580  , p_source_21 => l_array_source_21(Idx)
182581  , p_source_22 => l_array_source_22(Idx)
182582  , p_source_24 => l_array_source_24(Idx)
182583  );
182584 If(l_balance_type_code = 'A') THEN
182585   l_actual_gain_loss_ref := l_gain_or_loss_ref;
182586 END IF;
182587 
182588 --
182589 
182590 
182591 --
182592 AcctLineType_179 (
182593  p_application_id  => p_application_id
182594  ,p_event_id     => l_event_id
182595  ,p_calculate_acctd_flag => l_calculate_acctd_flag
182596  ,p_calculate_g_l_flag => l_calculate_g_l_flag
182597  ,p_actual_flag => l_actual_flag
182598  ,p_balance_type_code => l_balance_type_code
182599  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
182600  
182601  , p_source_4 => l_array_source_4(Idx)
182602  , p_source_11 => l_array_source_11(Idx)
182603  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
182604  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
182605  , p_source_15 => l_array_source_15(Idx)
182606  , p_source_18 => l_array_source_18(Idx)
182607  , p_source_19 => l_array_source_19(Idx)
182608  , p_source_20 => l_array_source_20(Idx)
182609  , p_source_21 => l_array_source_21(Idx)
182610  , p_source_22 => l_array_source_22(Idx)
182611  , p_source_24 => l_array_source_24(Idx)
182612  );
182613 If(l_balance_type_code = 'A') THEN
182614   l_actual_gain_loss_ref := l_gain_or_loss_ref;
182615 END IF;
182616 
182617 --
182618 
182619       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
182620       -- or secondary ledger that has different currency with primary
182621       -- or alc that is calculated by sla
182622       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
182623             (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'))
182624 
182625 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
182626 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
182627           AND (l_actual_flag = 'A')) THEN
182628         XLA_AE_LINES_PKG.CreateGainOrLossLines(
182629           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
182630          ,p_application_id   => p_application_id
182631          ,p_amb_context_code => 'DEFAULT'
182632          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
182633          ,p_event_class_code => C_EVENT_CLASS_CODE
182634          ,p_event_type_code  => C_EVENT_TYPE_CODE
182635          
182636          ,p_gain_ccid        => -1
182637          ,p_loss_ccid        => -1
182638 
182639          ,p_actual_flag      => l_actual_flag
182640          ,p_enc_flag         => null
182641          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
182642          ,p_enc_g_l_ref      => null
182643          );
182644       END IF;
182645    END IF;
182646 END IF;
182647 
182648    ELSE
182649       --
182650       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
182651       --
182652       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182653          trace
182654             (p_msg      => 'Trancaction revesal option is Y'
182655             ,p_level    => C_LEVEL_STATEMENT
182656             ,p_module   => l_log_module);
182657       END IF;
182658    END IF;
182659 
182660 END LOOP;
182661 l_result := XLA_AE_LINES_PKG.InsertLines ;
182662 end loop;
182663 close line_cur;
182664 
182665 
182666 --
182667 -- insert headers into xla_ae_headers_gt table
182668 --
182669 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
182670 
182671 -- insert into errors table here.
182672 
182673 END LOOP;
182674 
182675 --
182676 -- 4865292
182677 --
182678 -- Compare g_hdr_extract_count with event count in
182679 -- CreateHeadersAndLines.
182680 --
182681 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
182682 
182683 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182684    trace (p_msg     => '# rows extracted from header extract objects '
182685                     || ' (running total): '
182686                     || g_hdr_extract_count
182687          ,p_level   => C_LEVEL_STATEMENT
182688          ,p_module  => l_log_module);
182689 END IF;
182690 
182691 CLOSE header_cur;
182692 --
182693 
182694 --
182695 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
182696    trace
182697       (p_msg      => 'END of EventType_288'
182698       ,p_level    => C_LEVEL_PROCEDURE
182699       ,p_module   => l_log_module);
182700 END IF;
182701 --
182702 RETURN l_result;
182703 EXCEPTION
182704 WHEN xla_exceptions_pkg.application_exception THEN
182705    
182706 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
182707 
182708    
182709 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
182710 
182711    RAISE;
182712 
182713 WHEN NO_DATA_FOUND THEN
182714 
182715 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
182716 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
182717 
182718 FOR header_record IN header_cur
182719 LOOP
182720     l_array_header_events(header_record.event_id) := header_record.event_id;
182721 END LOOP;
182722 
182723 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
182724 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
182725 
182726 fnd_file.put_line(fnd_file.LOG, '                    ');
182727 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
182728 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
182729 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
182730 
182731 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
182732 LOOP
182733 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
182734 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
182735         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
182736 	END IF;
182737 END LOOP;
182738 
182739 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
182740 fnd_file.put_line(fnd_file.LOG, '                    ');
182741 
182742 
182743 xla_exceptions_pkg.raise_message
182744       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_288');
182745 
182746 
182747 WHEN OTHERS THEN
182748    xla_exceptions_pkg.raise_message
182749       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_288');
182750 END EventType_288;
182751 --
182752 
182753 ---------------------------------------
182754 --
182755 -- PRIVATE PROCEDURE
182756 --         insert_sources_289
182757 --
182758 ----------------------------------------
182759 --
182760 PROCEDURE insert_sources_289(
182761                                 p_target_ledger_id       IN NUMBER
182762                               , p_language               IN VARCHAR2
182763                               , p_sla_ledger_id          IN NUMBER
182764                               , p_pad_start_date         IN DATE
182765                               , p_pad_end_date           IN DATE
182766                          )
182767 IS
182768 
182769 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_RCPT';
182770 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
182771 p_apps_owner                   VARCHAR2(30);
182772 l_log_module                   VARCHAR2(240);
182773 BEGIN
182774 IF g_log_enabled THEN
182775       l_log_module := C_DEFAULT_MODULE||'.insert_sources_289';
182776 END IF;
182777 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
182778 
182779       trace
182780          (p_msg      => 'BEGIN of insert_sources_289'
182781          ,p_level    => C_LEVEL_PROCEDURE
182782          ,p_module   => l_log_module);
182783 
182784 END IF;
182785 
182786 -- select APPS owner
182787 SELECT oracle_username
182788   INTO p_apps_owner
182789   FROM fnd_oracle_userid
182790  WHERE read_only_flag = 'U'
182791 ;
182792 
182793 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182794       trace
182795          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
182796                         ' - p_language = '||p_language||
182797                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
182798                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
182799                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
182800                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
182801          ,p_level    => C_LEVEL_STATEMENT
182802          ,p_module   => l_log_module);
182803 END IF;
182804 
182805 
182806 --
182807 INSERT INTO xla_diag_sources --hdr1
182808 (
182809         event_id
182810       , ledger_id
182811       , sla_ledger_id
182812       , description_language
182813       , object_name
182814       , object_type_code
182815       , line_number
182816       , source_application_id
182817       , source_type_code
182818       , source_code
182819       , source_value
182820       , source_meaning
182821       , created_by
182822       , creation_date
182823       , last_update_date
182824       , last_updated_by
182825       , last_update_login
182826       , program_update_date
182827       , program_application_id
182828       , program_id
182829       , request_id
182830 )
182831 SELECT
182832         event_id
182833       , p_target_ledger_id
182834       , p_sla_ledger_id
182835       , p_language
182836       , object_name
182837       , object_type_code
182838       , line_number
182839       , source_application_id
182840       , source_type_code
182841       , source_code
182842       , SUBSTR(source_value ,1,1996)
182843       , SUBSTR(source_meaning,1,200)
182844       , xla_environment_pkg.g_Usr_Id
182845       , TRUNC(SYSDATE)
182846       , TRUNC(SYSDATE)
182847       , xla_environment_pkg.g_Usr_Id
182848       , xla_environment_pkg.g_Login_Id
182849       , TRUNC(SYSDATE)
182850       , xla_environment_pkg.g_Prog_Appl_Id
182851       , xla_environment_pkg.g_Prog_Id
182852       , xla_environment_pkg.g_Req_Id
182853   FROM (
182854        SELECT xet.event_id                  event_id
182855             , 0                             line_number
182856             , CASE r
182857                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
182858                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
182859                 
182860                ELSE null
182861               END                           object_name
182862             , CASE r
182863                 WHEN 1 THEN 'HEADER' 
182864                 WHEN 2 THEN 'HEADER' 
182865                 
182866                 ELSE null
182867               END                           object_type_code
182868             , CASE r
182869                 WHEN 1 THEN '707' 
182870                 WHEN 2 THEN '707' 
182871                 
182872                 ELSE null
182873               END                           source_application_id
182874             , 'S'             source_type_code
182875             , CASE r
182876                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
182877                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
182878                 
182879                 ELSE null
182880               END                           source_code
182881             , CASE r
182882                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
182883                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
182884                 
182885                 ELSE null
182886               END                           source_value
182887             , CASE r
182888                 WHEN 1 THEN fvl12.meaning
182889                 WHEN 2 THEN fvl38.meaning
182890                 
182891                 ELSE null
182892               END               source_meaning
182893         FROM xla_events_gt     xet  
182894       , CST_XLA_INV_HEADERS_V  h1
182895   , fnd_lookup_values    fvl12
182896   , fnd_lookup_values    fvl38
182897             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
182898        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
182899          AND xet.event_type_code = C_EVENT_TYPE_CODE
182900             AND h1.event_id = xet.event_id
182901    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
182902   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
182903   AND fvl12.view_application_id(+) = 700
182904   AND fvl12.language(+)            = USERENV('LANG')
182905      AND fvl38.lookup_type(+)         = 'YES_NO'
182906   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
182907   AND fvl38.view_application_id(+) = 0
182908   AND fvl38.language(+)            = USERENV('LANG')
182909   
182910 )
182911 ;
182912 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182913 
182914       trace
182915          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
182916          ,p_level    => C_LEVEL_STATEMENT
182917          ,p_module   => l_log_module);
182918 
182919 END IF;
182920 --
182921 
182922 
182923 
182924 --
182925 INSERT INTO xla_diag_sources --line1
182926 (
182927         event_id
182928       , ledger_id
182929       , sla_ledger_id
182930       , description_language
182931       , object_name
182932       , object_type_code
182933       , line_number
182934       , source_application_id
182935       , source_type_code
182936       , source_code
182937       , source_value
182938       , source_meaning
182939       , created_by
182940       , creation_date
182941       , last_update_date
182942       , last_updated_by
182943       , last_update_login
182944       , program_update_date
182945       , program_application_id
182946       , program_id
182947       , request_id
182948 )
182949 SELECT  event_id
182950       , p_target_ledger_id
182951       , p_sla_ledger_id
182952       , p_language
182953       , object_name
182954       , object_type_code
182955       , line_number
182956       , source_application_id
182957       , source_type_code
182958       , source_code
182959       , SUBSTR(source_value,1,1996)
182960       , SUBSTR(source_meaning,1,200)
182961       , xla_environment_pkg.g_Usr_Id
182962       , TRUNC(SYSDATE)
182963       , TRUNC(SYSDATE)
182964       , xla_environment_pkg.g_Usr_Id
182965       , xla_environment_pkg.g_Login_Id
182966       , TRUNC(SYSDATE)
182967       , xla_environment_pkg.g_Prog_Appl_Id
182968       , xla_environment_pkg.g_Prog_Id
182969       , xla_environment_pkg.g_Req_Id
182970   FROM (
182971        SELECT xet.event_id                  event_id
182972             , l2.line_number                 line_number
182973             , CASE r
182974                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
182975                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
182976                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
182977                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
182978                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
182979                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
182980                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
182981                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
182982                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
182983                 
182984                ELSE null
182985               END                           object_name
182986             , CASE r
182987                 WHEN 1 THEN 'LINE' 
182988                 WHEN 2 THEN 'LINE' 
182989                 WHEN 3 THEN 'LINE' 
182990                 WHEN 4 THEN 'LINE' 
182991                 WHEN 5 THEN 'LINE' 
182992                 WHEN 6 THEN 'LINE' 
182993                 WHEN 7 THEN 'LINE' 
182994                 WHEN 8 THEN 'LINE' 
182995                 WHEN 9 THEN 'LINE' 
182996                 
182997                 ELSE null
182998               END                           object_type_code
182999             , CASE r
183000                 WHEN 1 THEN '707' 
183001                 WHEN 2 THEN '707' 
183002                 WHEN 3 THEN '707' 
183003                 WHEN 4 THEN '707' 
183004                 WHEN 5 THEN '707' 
183005                 WHEN 6 THEN '707' 
183006                 WHEN 7 THEN '707' 
183007                 WHEN 8 THEN '707' 
183008                 WHEN 9 THEN '707' 
183009                 
183010                 ELSE null
183011               END                           source_application_id
183012             , 'S'             source_type_code
183013             , CASE r
183014                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
183015                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
183016                 WHEN 3 THEN 'CURRENCY_CODE' 
183017                 WHEN 4 THEN 'ENTERED_AMOUNT' 
183018                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
183019                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
183020                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
183021                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
183022                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
183023                 
183024                 ELSE null
183025               END                           source_code
183026             , CASE r
183027                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
183028                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
183029                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
183030                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
183031                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
183032                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
183033                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
183034                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
183035                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
183036                 
183037                 ELSE null
183038               END                           source_value
183039             , null              source_meaning
183040          FROM  xla_events_gt     xet  
183041         , CST_XLA_INV_LINES_V  l2
183042             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
183043         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
183044           AND xet.event_type_code = C_EVENT_TYPE_CODE
183045             AND l2.event_id          = xet.event_id
183046 
183047 )
183048 ;
183049 --
183050 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183051 
183052       trace
183053          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
183054          ,p_level    => C_LEVEL_STATEMENT
183055          ,p_module   => l_log_module);
183056 
183057 END IF;
183058 
183059 
183060 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
183061       trace
183062          (p_msg      => 'END of insert_sources_289'
183063          ,p_level    => C_LEVEL_PROCEDURE
183064          ,p_module   => l_log_module);
183065 END IF;
183066 EXCEPTION
183067   WHEN xla_exceptions_pkg.application_exception THEN
183068       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
183069             trace
183070                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
183071                ,p_level    => C_LEVEL_EXCEPTION
183072                ,p_module   => l_log_module);
183073       END IF;
183074       RAISE;
183075   WHEN OTHERS THEN
183076       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
183077             trace
183078                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
183079                ,p_level    => C_LEVEL_EXCEPTION
183080                ,p_module   => l_log_module);
183081        END IF;
183082        xla_exceptions_pkg.raise_message
183083            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_289');
183084 END insert_sources_289;
183085 --
183086 
183087 ---------------------------------------
183088 --
183089 -- PRIVATE FUNCTION
183090 --         EventType_289
183091 --
183092 ----------------------------------------
183093 --
183094 FUNCTION EventType_289
183095        (p_application_id         IN NUMBER
183096        ,p_base_ledger_id         IN NUMBER
183097        ,p_target_ledger_id       IN NUMBER
183098        ,p_language               IN VARCHAR2
183099        ,p_currency_code          IN VARCHAR2
183100        ,p_sla_ledger_id          IN NUMBER
183101        ,p_pad_start_date         IN DATE
183102        ,p_pad_end_date           IN DATE
183103        ,p_primary_ledger_id      IN NUMBER)
183104 RETURN BOOLEAN IS
183105 --
183106 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_RCPT';
183107 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
183108 
183109 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
183110 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
183111 --
183112 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183113 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183114 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
183115 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
183116 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183117 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
183118 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
183119 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183120 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
183121 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
183122 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183123 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183124 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183125 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183126 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
183127 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
183128 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
183129 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
183130 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
183131 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
183132 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
183133 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
183134 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
183135 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
183136 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
183137 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
183138 
183139 l_event_id                             NUMBER;
183140 l_previous_event_id                    NUMBER;
183141 l_first_event_id                       NUMBER;
183142 l_last_event_id                        NUMBER;
183143 
183144 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
183145 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
183146 --
183147 --
183148 l_result                    BOOLEAN := TRUE;
183149 l_rows                      NUMBER  := 1000;
183150 l_event_type_name           VARCHAR2(80) := 'User-defined Direct Interorg Receipt';
183151 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
183152 l_description               VARCHAR2(4000);
183153 l_transaction_reversal      NUMBER;
183154 l_ae_header_id              NUMBER;
183155 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
183156 l_log_module                VARCHAR2(240);
183157 --
183158 l_acct_reversal_source      VARCHAR2(30);
183159 l_trx_reversal_source       VARCHAR2(30);
183160 
183161 l_continue_with_lines       BOOLEAN := TRUE;
183162 --
183163 l_acc_rev_gl_date_source    DATE;                      -- 4262811
183164 --
183165 type t_array_event_id is table of number index by binary_integer;
183166 
183167 l_rec_array_event                    t_rec_array_event;
183168 l_null_rec_array_event               t_rec_array_event;
183169 l_array_ae_header_id                 xla_number_array_type;
183170 l_actual_flag                        VARCHAR2(1) := NULL;
183171 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
183172 l_balance_type_code                  VARCHAR2(1) :=NULL;
183173 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
183174 
183175 --
183176 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
183177 --
183178 
183179 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
183180 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
183181 
183182 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
183183 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
183184 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
183185 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
183186 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
183187 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
183188 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
183189 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
183190 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
183191 
183192 l_array_source_12              t_array_source_12;
183193 l_array_source_12_meaning      t_array_lookup_meaning;
183194 l_array_source_38              t_array_source_38;
183195 l_array_source_38_meaning      t_array_lookup_meaning;
183196 
183197 l_array_source_4      t_array_source_4;
183198 l_array_source_11      t_array_source_11;
183199 l_array_source_15      t_array_source_15;
183200 l_array_source_18      t_array_source_18;
183201 l_array_source_19      t_array_source_19;
183202 l_array_source_20      t_array_source_20;
183203 l_array_source_21      t_array_source_21;
183204 l_array_source_22      t_array_source_22;
183205 l_array_source_24      t_array_source_24;
183206 
183207 --
183208 CURSOR header_cur
183209 IS
183210 SELECT /*+ leading(xet) cardinality(xet,1) */
183211 -- Event Type Code: UDIR_INTERORG_RCPT
183212 -- Event Class Code: USER_DEFINE
183213     xet.entity_id
183214   , xet.legal_entity_id
183215   , xet.entity_code
183216   , xet.transaction_number
183217   , xet.event_id
183218   , xet.event_class_code
183219   , xet.event_type_code
183220   , xet.event_number
183221   , xet.event_date
183222   , xet.transaction_date
183223   , xet.reference_num_1
183224   , xet.reference_num_2
183225   , xet.reference_num_3
183226   , xet.reference_num_4
183227   , xet.reference_char_1
183228   , xet.reference_char_2
183229   , xet.reference_char_3
183230   , xet.reference_char_4
183231   , xet.reference_date_1
183232   , xet.reference_date_2
183233   , xet.reference_date_3
183234   , xet.reference_date_4
183235   , xet.event_created_by
183236   , xet.budgetary_control_flag 
183237   , h1.DISTRIBUTION_TYPE    source_12
183238   , fvl12.meaning   source_12_meaning
183239   , h1.TRANSFER_TO_GL_INDICATOR    source_38
183240   , fvl38.meaning   source_38_meaning
183241   FROM xla_events_gt     xet 
183242   , CST_XLA_INV_HEADERS_V  h1
183243   , fnd_lookup_values    fvl12
183244   , fnd_lookup_values    fvl38
183245  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
183246    and xet.event_type_code = C_EVENT_TYPE_CODE
183247    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
183248    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
183249   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
183250   AND fvl12.view_application_id(+) = 700
183251   AND fvl12.language(+)            = USERENV('LANG')
183252      AND fvl38.lookup_type(+)         = 'YES_NO'
183253   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
183254   AND fvl38.view_application_id(+) = 0
183255   AND fvl38.language(+)            = USERENV('LANG')
183256   
183257  ORDER BY event_id
183258 ;
183259 
183260 
183261 --
183262 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
183263 IS
183264 SELECT /*+ leading(xet) cardinality(xet,1) */
183265 -- Event Type Code: UDIR_INTERORG_RCPT
183266 -- Event Class Code: USER_DEFINE
183267     xet.entity_id
183268    ,xet.legal_entity_id
183269    ,xet.entity_code
183270    ,xet.transaction_number
183271    ,xet.event_id
183272    ,xet.event_class_code
183273    ,xet.event_type_code
183274    ,xet.event_number
183275    ,xet.event_date
183276    ,xet.transaction_date
183277    ,xet.reference_num_1
183278    ,xet.reference_num_2
183279    ,xet.reference_num_3
183280    ,xet.reference_num_4
183281    ,xet.reference_char_1
183282    ,xet.reference_char_2
183283    ,xet.reference_char_3
183284    ,xet.reference_char_4
183285    ,xet.reference_date_1
183286    ,xet.reference_date_2
183287    ,xet.reference_date_3
183288    ,xet.reference_date_4
183289    ,xet.event_created_by
183290    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
183291   , l2.CODE_COMBINATION_ID    source_4
183292   , l2.DISTRIBUTION_IDENTIFIER    source_11
183293   , l2.CURRENCY_CODE    source_15
183294   , l2.ENTERED_AMOUNT    source_18
183295   , l2.CURRENCY_CONVERSION_DATE    source_19
183296   , l2.CURRENCY_CONVERSION_RATE    source_20
183297   , l2.CURRENCY_CONVERSION_TYPE    source_21
183298   , l2.ACCOUNTED_AMOUNT    source_22
183299   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
183300   FROM xla_events_gt     xet 
183301   , CST_XLA_INV_LINES_V  l2
183302  WHERE xet.event_id between x_first_event_id and x_last_event_id
183303    and xet.event_date between p_pad_start_date and p_pad_end_date
183304    and xet.event_type_code = C_EVENT_TYPE_CODE
183305    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
183306 ;
183307 
183308 --
183309 BEGIN
183310 IF g_log_enabled THEN
183311    l_log_module := C_DEFAULT_MODULE||'.EventType_289';
183312 END IF;
183313 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
183314    trace
183315       (p_msg      => 'BEGIN of EventType_289'
183316       ,p_level    => C_LEVEL_PROCEDURE
183317       ,p_module   => l_log_module);
183318 END IF;
183319 
183320 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183321    trace
183322       (p_msg      => 'p_application_id = '||p_application_id||
183323                      ' - p_base_ledger_id = '||p_base_ledger_id||
183324                      ' - p_target_ledger_id  = '||p_target_ledger_id||
183325                      ' - p_language = '||p_language||
183326                      ' - p_currency_code = '||p_currency_code||
183327                      ' - p_sla_ledger_id = '||p_sla_ledger_id
183328       ,p_level    => C_LEVEL_STATEMENT
183329       ,p_module   => l_log_module);
183330 END IF;
183331 --
183332 -- initialze arrays
183333 --
183334 g_array_event.DELETE;
183335 l_rec_array_event := l_null_rec_array_event;
183336 --
183337 --------------------------------------
183338 -- 4262811 Initialze MPA Line Number
183339 --------------------------------------
183340 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
183341 
183342 --
183343 
183344 --
183345 OPEN header_cur;
183346 --
183347 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183348    trace
183349    (p_msg      => 'SQL - FETCH header_cur'
183350    ,p_level    => C_LEVEL_STATEMENT
183351    ,p_module   => l_log_module);
183352 END IF;
183353 --
183354 LOOP
183355 FETCH header_cur BULK COLLECT INTO
183356         l_array_entity_id
183357       , l_array_legal_entity_id
183358       , l_array_entity_code
183359       , l_array_transaction_num
183360       , l_array_event_id
183361       , l_array_class_code
183362       , l_array_event_type
183363       , l_array_event_number
183364       , l_array_event_date
183365       , l_array_transaction_date
183366       , l_array_reference_num_1
183367       , l_array_reference_num_2
183368       , l_array_reference_num_3
183369       , l_array_reference_num_4
183370       , l_array_reference_char_1
183371       , l_array_reference_char_2
183372       , l_array_reference_char_3
183373       , l_array_reference_char_4
183374       , l_array_reference_date_1
183375       , l_array_reference_date_2
183376       , l_array_reference_date_3
183377       , l_array_reference_date_4
183378       , l_array_event_created_by
183379       , l_array_budgetary_control_flag 
183380       , l_array_source_12
183381       , l_array_source_12_meaning
183382       , l_array_source_38
183383       , l_array_source_38_meaning
183384       LIMIT l_rows;
183385 --
183386 IF (C_LEVEL_EVENT >= g_log_level) THEN
183387    trace
183388    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
183389    ,p_level    => C_LEVEL_EVENT
183390    ,p_module   => l_log_module);
183391 END IF;
183392 --
183393 EXIT WHEN l_array_entity_id.COUNT = 0;
183394 
183395 -- initialize arrays
183396 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
183397 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
183398 
183399 --
183400 -- Bug 4458708
183401 --
183402 XLA_AE_LINES_PKG.g_LineNumber := 0;
183403 
183404 
183405 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
183406 g_last_hdr_idx := l_array_event_id.LAST;
183407 --
183408 -- loop for the headers. Each iteration is for each header extract row
183409 -- fetched in header cursor
183410 --
183411 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
183412 
183413 --
183414 -- set event info as cache for other routines to refer event attributes
183415 --
183416 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
183417    (p_application_id           => p_application_id
183418    ,p_primary_ledger_id        => p_primary_ledger_id
183419    ,p_base_ledger_id           => p_base_ledger_id
183420    ,p_target_ledger_id         => p_target_ledger_id
183421    ,p_entity_id                => l_array_entity_id(hdr_idx)
183422    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
183423    ,p_entity_code              => l_array_entity_code(hdr_idx)
183424    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
183425    ,p_event_id                 => l_array_event_id(hdr_idx)
183426    ,p_event_class_code         => l_array_class_code(hdr_idx)
183427    ,p_event_type_code          => l_array_event_type(hdr_idx)
183428    ,p_event_number             => l_array_event_number(hdr_idx)
183429    ,p_event_date               => l_array_event_date(hdr_idx)
183430    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
183431    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
183432    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
183433    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
183434    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
183435    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
183436    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
183437    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
183438    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
183439    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
183440    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
183441    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
183442    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
183443    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
183444    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
183445 
183446 --
183447 -- set the status of entry to C_VALID (0)
183448 --
183449 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
183450 
183451 --
183452 -- initialize a row for ae header
183453 --
183454 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
183455 
183456 l_event_id := l_array_event_id(hdr_idx);
183457 
183458 --
183459 -- storing the hdr_idx for event. May be used by line cursor.
183460 --
183461 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
183462 
183463 --
183464 -- store sources from header extract. This can be improved to
183465 -- store only those sources from header extract that may be used in lines
183466 --
183467 
183468 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
183469 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
183470 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
183471 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
183472 
183473 --
183474 -- initilaize the status of ae headers for diffrent balance types
183475 -- the status is initialised to C_NOT_CREATED (2)
183476 --
183477 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
183478 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
183479 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
183480 
183481 --
183482 -- call api to validate and store accounting attributes for header
183483 --
183484 
183485 ------------------------------------------------------------
183486 -- Accrual Reversal : to get date for Standard Source (NONE)
183487 ------------------------------------------------------------
183488 l_acc_rev_gl_date_source := NULL;
183489 
183490      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
183491       l_rec_acct_attrs.array_date_value(1) := 
183492 xla_ae_sources_pkg.GetSystemSourceDate(
183493    p_source_code           => 'XLA_REFERENCE_DATE_1'
183494  , p_source_type_code      => 'Y'
183495  , p_source_application_id =>  602
183496 );
183497      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
183498       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
183499 
183500 
183501 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
183502 
183503 XLA_AE_HEADER_PKG.SetJeCategoryName;
183504 
183505 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
183506 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
183507 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
183508 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
183509 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
183510 
183511 
183512 -- No header level analytical criteria
183513 
183514 --
183515 --accounting attribute enhancement, bug 3612931
183516 --
183517 l_trx_reversal_source := SUBSTR(NULL, 1,30);
183518 
183519 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
183520    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
183521 
183522    xla_accounting_err_pkg.build_message
183523       (p_appli_s_name            => 'XLA'
183524       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
183525       ,p_token_1                 => 'ACCT_ATTR_NAME'
183526       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
183527       ,p_token_2                 => 'PRODUCT_NAME'
183528       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
183529       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
183530       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
183531       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
183532 
183533 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
183534    --
183535    -- following sets the accounting attributes needed to reverse
183536    -- accounting for a distributeion
183537    --
183538    xla_ae_lines_pkg.SetTrxReversalAttrs
183539       (p_event_id              => l_event_id
183540       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
183541       ,p_trx_reversal_source   => l_trx_reversal_source);
183542 
183543 END IF;
183544 
183545 
183546 ----------------------------------------------------------------
183547 -- 4262811 -  update the header statuses to invalid in need be
183548 ----------------------------------------------------------------
183549 --
183550 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
183551 
183552 
183553   -----------------------------------------------
183554   -- No accrual reversal for the event class/type
183555   -----------------------------------------------
183556 ----------------------------------------------------------------
183557 
183558 --
183559 -- this ends the header loop iteration for one bulk fetch
183560 --
183561 END LOOP;
183562 
183563 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
183564 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
183565 
183566 --
183567 -- insert dummy rows into lines gt table that were created due to
183568 -- transaction reversals
183569 --
183570 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
183571    l_result := XLA_AE_LINES_PKG.InsertLines;
183572 END IF;
183573 
183574 --
183575 -- reset the temp_line_num for each set of events fetched from header
183576 -- cursor rather than doing it for each new event in line cursor
183577 -- Bug 3939231
183578 --
183579 xla_ae_lines_pkg.g_temp_line_num := 0;
183580 
183581 
183582 
183583 --
183584 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
183585 --
183586 --
183587 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183588 
183589       trace
183590          (p_msg      => 'SQL - FETCH line_cur'
183591          ,p_level    => C_LEVEL_STATEMENT
183592          ,p_module   => l_log_module);
183593 
183594 END IF;
183595 --
183596 --
183597 LOOP
183598   --
183599   FETCH line_cur BULK COLLECT INTO
183600         l_array_entity_id
183601       , l_array_legal_entity_id
183602       , l_array_entity_code
183603       , l_array_transaction_num
183604       , l_array_event_id
183605       , l_array_class_code
183606       , l_array_event_type
183607       , l_array_event_number
183608       , l_array_event_date
183609       , l_array_transaction_date
183610       , l_array_reference_num_1
183611       , l_array_reference_num_2
183612       , l_array_reference_num_3
183613       , l_array_reference_num_4
183614       , l_array_reference_char_1
183615       , l_array_reference_char_2
183616       , l_array_reference_char_3
183617       , l_array_reference_char_4
183618       , l_array_reference_date_1
183619       , l_array_reference_date_2
183620       , l_array_reference_date_3
183621       , l_array_reference_date_4
183622       , l_array_event_created_by
183623       , l_array_budgetary_control_flag
183624       , l_array_extract_line_num 
183625       , l_array_source_4
183626       , l_array_source_11
183627       , l_array_source_15
183628       , l_array_source_18
183629       , l_array_source_19
183630       , l_array_source_20
183631       , l_array_source_21
183632       , l_array_source_22
183633       , l_array_source_24
183634       LIMIT l_rows;
183635 
183636   --
183637   IF (C_LEVEL_EVENT >= g_log_level) THEN
183638             trace
183639                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
183640                ,p_level    => C_LEVEL_EVENT
183641                ,p_module   => l_log_module);
183642   END IF;
183643   --
183644   EXIT WHEN l_array_entity_id.count = 0;
183645 
183646   XLA_AE_LINES_PKG.g_rec_lines := null;
183647 
183648 --
183649 -- Bug 4458708
183650 --
183651 XLA_AE_LINES_PKG.g_LineNumber := 0;
183652 --
183653 --
183654 
183655 FOR Idx IN 1..l_array_event_id.count LOOP
183656    --
183657    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
183658    --
183659    l_event_id := l_array_event_id(idx);  -- 5648433
183660 
183661    --
183662    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
183663    --
183664 
183665    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
183666              (g_array_event(l_event_id).array_value_num('header_index'))
183667          ,'N'
183668          ) <> 'Y'
183669    THEN
183670       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183671          trace
183672             (p_msg      => 'Trancaction revesal option is not Y '
183673             ,p_level    => C_LEVEL_STATEMENT
183674             ,p_module   => l_log_module);
183675       END IF;
183676 
183677 --
183678 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
183679 --
183680 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
183681 --
183682 -- set event info as cache for other routines to refer event attributes
183683 --
183684 
183685 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
183686    l_previous_event_id := l_event_id;
183687 
183688    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
183689       (p_application_id           => p_application_id
183690       ,p_primary_ledger_id        => p_primary_ledger_id
183691       ,p_base_ledger_id           => p_base_ledger_id
183692       ,p_target_ledger_id         => p_target_ledger_id
183693       ,p_entity_id                => l_array_entity_id(Idx)
183694       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
183695       ,p_entity_code              => l_array_entity_code(Idx)
183696       ,p_transaction_num          => l_array_transaction_num(Idx)
183697       ,p_event_id                 => l_array_event_id(Idx)
183698       ,p_event_class_code         => l_array_class_code(Idx)
183699       ,p_event_type_code          => l_array_event_type(Idx)
183700       ,p_event_number             => l_array_event_number(Idx)
183701       ,p_event_date               => l_array_event_date(Idx)
183702       ,p_transaction_date         => l_array_transaction_date(Idx)
183703       ,p_reference_num_1          => l_array_reference_num_1(Idx)
183704       ,p_reference_num_2          => l_array_reference_num_2(Idx)
183705       ,p_reference_num_3          => l_array_reference_num_3(Idx)
183706       ,p_reference_num_4          => l_array_reference_num_4(Idx)
183707       ,p_reference_char_1         => l_array_reference_char_1(Idx)
183708       ,p_reference_char_2         => l_array_reference_char_2(Idx)
183709       ,p_reference_char_3         => l_array_reference_char_3(Idx)
183710       ,p_reference_char_4         => l_array_reference_char_4(Idx)
183711       ,p_reference_date_1         => l_array_reference_date_1(Idx)
183712       ,p_reference_date_2         => l_array_reference_date_2(Idx)
183713       ,p_reference_date_3         => l_array_reference_date_3(Idx)
183714       ,p_reference_date_4         => l_array_reference_date_4(Idx)
183715       ,p_event_created_by         => l_array_event_created_by(Idx)
183716       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
183717        --
183718 END IF;
183719 
183720 
183721 
183722 --
183723 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
183724 
183725 l_acct_reversal_source := SUBSTR(NULL, 1,30);
183726 
183727 IF l_continue_with_lines THEN
183728    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
183729       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
183730 
183731       xla_accounting_err_pkg.build_message
183732          (p_appli_s_name            => 'XLA'
183733          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
183734          ,p_token_1                 => 'LINE_NUMBER'
183735          ,p_value_1                 => l_array_extract_line_num(Idx)
183736          ,p_token_2                 => 'PRODUCT_NAME'
183737          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
183738          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
183739          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
183740          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
183741 
183742    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
183743       --
183744       -- following sets the accounting attributes needed to reverse
183745       -- accounting for a distributeion
183746       --
183747 
183748       --
183749       -- 5217187
183750       --
183751       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
183752       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
183753                                        g_array_event(l_event_id).array_value_num('header_index'));
183754       --
183755       --
183756 
183757       -- No reversal code generated
183758 
183759       xla_ae_lines_pkg.SetAcctReversalAttrs
183760          (p_event_id             => l_event_id
183761          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
183762          ,p_calculate_acctd_flag => l_calculate_acctd_flag
183763          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
183764    END IF;
183765 
183766    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
183767        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
183768 
183769 --
183770 AcctLineType_39 (
183771  p_application_id  => p_application_id
183772  ,p_event_id     => l_event_id
183773  ,p_calculate_acctd_flag => l_calculate_acctd_flag
183774  ,p_calculate_g_l_flag => l_calculate_g_l_flag
183775  ,p_actual_flag => l_actual_flag
183776  ,p_balance_type_code => l_balance_type_code
183777  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
183778  
183779  , p_source_4 => l_array_source_4(Idx)
183780  , p_source_11 => l_array_source_11(Idx)
183781  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
183782  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
183783  , p_source_15 => l_array_source_15(Idx)
183784  , p_source_18 => l_array_source_18(Idx)
183785  , p_source_19 => l_array_source_19(Idx)
183786  , p_source_20 => l_array_source_20(Idx)
183787  , p_source_21 => l_array_source_21(Idx)
183788  , p_source_22 => l_array_source_22(Idx)
183789  , p_source_24 => l_array_source_24(Idx)
183790  );
183791 If(l_balance_type_code = 'A') THEN
183792   l_actual_gain_loss_ref := l_gain_or_loss_ref;
183793 END IF;
183794 
183795 --
183796 
183797 
183798 --
183799 AcctLineType_72 (
183800  p_application_id  => p_application_id
183801  ,p_event_id     => l_event_id
183802  ,p_calculate_acctd_flag => l_calculate_acctd_flag
183803  ,p_calculate_g_l_flag => l_calculate_g_l_flag
183804  ,p_actual_flag => l_actual_flag
183805  ,p_balance_type_code => l_balance_type_code
183806  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
183807  
183808  , p_source_4 => l_array_source_4(Idx)
183809  , p_source_11 => l_array_source_11(Idx)
183810  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
183811  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
183812  , p_source_15 => l_array_source_15(Idx)
183813  , p_source_18 => l_array_source_18(Idx)
183814  , p_source_19 => l_array_source_19(Idx)
183815  , p_source_20 => l_array_source_20(Idx)
183816  , p_source_21 => l_array_source_21(Idx)
183817  , p_source_22 => l_array_source_22(Idx)
183818  , p_source_24 => l_array_source_24(Idx)
183819  );
183820 If(l_balance_type_code = 'A') THEN
183821   l_actual_gain_loss_ref := l_gain_or_loss_ref;
183822 END IF;
183823 
183824 --
183825 
183826 
183827 --
183828 AcctLineType_83 (
183829  p_application_id  => p_application_id
183830  ,p_event_id     => l_event_id
183831  ,p_calculate_acctd_flag => l_calculate_acctd_flag
183832  ,p_calculate_g_l_flag => l_calculate_g_l_flag
183833  ,p_actual_flag => l_actual_flag
183834  ,p_balance_type_code => l_balance_type_code
183835  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
183836  
183837  , p_source_4 => l_array_source_4(Idx)
183838  , p_source_11 => l_array_source_11(Idx)
183839  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
183840  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
183841  , p_source_15 => l_array_source_15(Idx)
183842  , p_source_18 => l_array_source_18(Idx)
183843  , p_source_19 => l_array_source_19(Idx)
183844  , p_source_20 => l_array_source_20(Idx)
183845  , p_source_21 => l_array_source_21(Idx)
183846  , p_source_22 => l_array_source_22(Idx)
183847  , p_source_24 => l_array_source_24(Idx)
183848  );
183849 If(l_balance_type_code = 'A') THEN
183850   l_actual_gain_loss_ref := l_gain_or_loss_ref;
183851 END IF;
183852 
183853 --
183854 
183855 
183856 --
183857 AcctLineType_98 (
183858  p_application_id  => p_application_id
183859  ,p_event_id     => l_event_id
183860  ,p_calculate_acctd_flag => l_calculate_acctd_flag
183861  ,p_calculate_g_l_flag => l_calculate_g_l_flag
183862  ,p_actual_flag => l_actual_flag
183863  ,p_balance_type_code => l_balance_type_code
183864  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
183865  
183866  , p_source_4 => l_array_source_4(Idx)
183867  , p_source_11 => l_array_source_11(Idx)
183868  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
183869  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
183870  , p_source_15 => l_array_source_15(Idx)
183871  , p_source_18 => l_array_source_18(Idx)
183872  , p_source_19 => l_array_source_19(Idx)
183873  , p_source_20 => l_array_source_20(Idx)
183874  , p_source_21 => l_array_source_21(Idx)
183875  , p_source_22 => l_array_source_22(Idx)
183876  , p_source_24 => l_array_source_24(Idx)
183877  );
183878 If(l_balance_type_code = 'A') THEN
183879   l_actual_gain_loss_ref := l_gain_or_loss_ref;
183880 END IF;
183881 
183882 --
183883 
183884 
183885 --
183886 AcctLineType_109 (
183887  p_application_id  => p_application_id
183888  ,p_event_id     => l_event_id
183889  ,p_calculate_acctd_flag => l_calculate_acctd_flag
183890  ,p_calculate_g_l_flag => l_calculate_g_l_flag
183891  ,p_actual_flag => l_actual_flag
183892  ,p_balance_type_code => l_balance_type_code
183893  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
183894  
183895  , p_source_4 => l_array_source_4(Idx)
183896  , p_source_11 => l_array_source_11(Idx)
183897  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
183898  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
183899  , p_source_15 => l_array_source_15(Idx)
183900  , p_source_18 => l_array_source_18(Idx)
183901  , p_source_19 => l_array_source_19(Idx)
183902  , p_source_20 => l_array_source_20(Idx)
183903  , p_source_21 => l_array_source_21(Idx)
183904  , p_source_22 => l_array_source_22(Idx)
183905  , p_source_24 => l_array_source_24(Idx)
183906  );
183907 If(l_balance_type_code = 'A') THEN
183908   l_actual_gain_loss_ref := l_gain_or_loss_ref;
183909 END IF;
183910 
183911 --
183912 
183913 
183914 --
183915 AcctLineType_160 (
183916  p_application_id  => p_application_id
183917  ,p_event_id     => l_event_id
183918  ,p_calculate_acctd_flag => l_calculate_acctd_flag
183919  ,p_calculate_g_l_flag => l_calculate_g_l_flag
183920  ,p_actual_flag => l_actual_flag
183921  ,p_balance_type_code => l_balance_type_code
183922  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
183923  
183924  , p_source_4 => l_array_source_4(Idx)
183925  , p_source_11 => l_array_source_11(Idx)
183926  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
183927  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
183928  , p_source_15 => l_array_source_15(Idx)
183929  , p_source_18 => l_array_source_18(Idx)
183930  , p_source_19 => l_array_source_19(Idx)
183931  , p_source_20 => l_array_source_20(Idx)
183932  , p_source_21 => l_array_source_21(Idx)
183933  , p_source_22 => l_array_source_22(Idx)
183934  , p_source_24 => l_array_source_24(Idx)
183935  );
183936 If(l_balance_type_code = 'A') THEN
183937   l_actual_gain_loss_ref := l_gain_or_loss_ref;
183938 END IF;
183939 
183940 --
183941 
183942 
183943 --
183944 AcctLineType_168 (
183945  p_application_id  => p_application_id
183946  ,p_event_id     => l_event_id
183947  ,p_calculate_acctd_flag => l_calculate_acctd_flag
183948  ,p_calculate_g_l_flag => l_calculate_g_l_flag
183949  ,p_actual_flag => l_actual_flag
183950  ,p_balance_type_code => l_balance_type_code
183951  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
183952  
183953  , p_source_4 => l_array_source_4(Idx)
183954  , p_source_11 => l_array_source_11(Idx)
183955  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
183956  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
183957  , p_source_15 => l_array_source_15(Idx)
183958  , p_source_18 => l_array_source_18(Idx)
183959  , p_source_19 => l_array_source_19(Idx)
183960  , p_source_20 => l_array_source_20(Idx)
183961  , p_source_21 => l_array_source_21(Idx)
183962  , p_source_22 => l_array_source_22(Idx)
183963  , p_source_24 => l_array_source_24(Idx)
183964  );
183965 If(l_balance_type_code = 'A') THEN
183966   l_actual_gain_loss_ref := l_gain_or_loss_ref;
183967 END IF;
183968 
183969 --
183970 
183971 
183972 --
183973 AcctLineType_193 (
183974  p_application_id  => p_application_id
183975  ,p_event_id     => l_event_id
183976  ,p_calculate_acctd_flag => l_calculate_acctd_flag
183977  ,p_calculate_g_l_flag => l_calculate_g_l_flag
183978  ,p_actual_flag => l_actual_flag
183979  ,p_balance_type_code => l_balance_type_code
183980  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
183981  
183982  , p_source_4 => l_array_source_4(Idx)
183983  , p_source_11 => l_array_source_11(Idx)
183984  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
183985  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
183986  , p_source_15 => l_array_source_15(Idx)
183987  , p_source_18 => l_array_source_18(Idx)
183988  , p_source_19 => l_array_source_19(Idx)
183989  , p_source_20 => l_array_source_20(Idx)
183990  , p_source_21 => l_array_source_21(Idx)
183991  , p_source_22 => l_array_source_22(Idx)
183992  , p_source_24 => l_array_source_24(Idx)
183993  );
183994 If(l_balance_type_code = 'A') THEN
183995   l_actual_gain_loss_ref := l_gain_or_loss_ref;
183996 END IF;
183997 
183998 --
183999 
184000 
184001 --
184002 AcctLineType_222 (
184003  p_application_id  => p_application_id
184004  ,p_event_id     => l_event_id
184005  ,p_calculate_acctd_flag => l_calculate_acctd_flag
184006  ,p_calculate_g_l_flag => l_calculate_g_l_flag
184007  ,p_actual_flag => l_actual_flag
184008  ,p_balance_type_code => l_balance_type_code
184009  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
184010  
184011  , p_source_4 => l_array_source_4(Idx)
184012  , p_source_11 => l_array_source_11(Idx)
184013  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
184014  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
184015  , p_source_15 => l_array_source_15(Idx)
184016  , p_source_18 => l_array_source_18(Idx)
184017  , p_source_19 => l_array_source_19(Idx)
184018  , p_source_20 => l_array_source_20(Idx)
184019  , p_source_21 => l_array_source_21(Idx)
184020  , p_source_22 => l_array_source_22(Idx)
184021  , p_source_24 => l_array_source_24(Idx)
184022  );
184023 If(l_balance_type_code = 'A') THEN
184024   l_actual_gain_loss_ref := l_gain_or_loss_ref;
184025 END IF;
184026 
184027 --
184028 
184029       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
184030       -- or secondary ledger that has different currency with primary
184031       -- or alc that is calculated by sla
184032       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
184033             (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'))
184034 
184035 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
184036 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
184037           AND (l_actual_flag = 'A')) THEN
184038         XLA_AE_LINES_PKG.CreateGainOrLossLines(
184039           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
184040          ,p_application_id   => p_application_id
184041          ,p_amb_context_code => 'DEFAULT'
184042          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
184043          ,p_event_class_code => C_EVENT_CLASS_CODE
184044          ,p_event_type_code  => C_EVENT_TYPE_CODE
184045          
184046          ,p_gain_ccid        => -1
184047          ,p_loss_ccid        => -1
184048 
184049          ,p_actual_flag      => l_actual_flag
184050          ,p_enc_flag         => null
184051          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
184052          ,p_enc_g_l_ref      => null
184053          );
184054       END IF;
184055    END IF;
184056 END IF;
184057 
184058    ELSE
184059       --
184060       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
184061       --
184062       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184063          trace
184064             (p_msg      => 'Trancaction revesal option is Y'
184065             ,p_level    => C_LEVEL_STATEMENT
184066             ,p_module   => l_log_module);
184067       END IF;
184068    END IF;
184069 
184070 END LOOP;
184071 l_result := XLA_AE_LINES_PKG.InsertLines ;
184072 end loop;
184073 close line_cur;
184074 
184075 
184076 --
184077 -- insert headers into xla_ae_headers_gt table
184078 --
184079 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
184080 
184081 -- insert into errors table here.
184082 
184083 END LOOP;
184084 
184085 --
184086 -- 4865292
184087 --
184088 -- Compare g_hdr_extract_count with event count in
184089 -- CreateHeadersAndLines.
184090 --
184091 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
184092 
184093 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184094    trace (p_msg     => '# rows extracted from header extract objects '
184095                     || ' (running total): '
184096                     || g_hdr_extract_count
184097          ,p_level   => C_LEVEL_STATEMENT
184098          ,p_module  => l_log_module);
184099 END IF;
184100 
184101 CLOSE header_cur;
184102 --
184103 
184104 --
184105 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
184106    trace
184107       (p_msg      => 'END of EventType_289'
184108       ,p_level    => C_LEVEL_PROCEDURE
184109       ,p_module   => l_log_module);
184110 END IF;
184111 --
184112 RETURN l_result;
184113 EXCEPTION
184114 WHEN xla_exceptions_pkg.application_exception THEN
184115    
184116 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
184117 
184118    
184119 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
184120 
184121    RAISE;
184122 
184123 WHEN NO_DATA_FOUND THEN
184124 
184125 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
184126 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
184127 
184128 FOR header_record IN header_cur
184129 LOOP
184130     l_array_header_events(header_record.event_id) := header_record.event_id;
184131 END LOOP;
184132 
184133 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
184134 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
184135 
184136 fnd_file.put_line(fnd_file.LOG, '                    ');
184137 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
184138 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
184139 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
184140 
184141 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
184142 LOOP
184143 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
184144 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
184145         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
184146 	END IF;
184147 END LOOP;
184148 
184149 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
184150 fnd_file.put_line(fnd_file.LOG, '                    ');
184151 
184152 
184153 xla_exceptions_pkg.raise_message
184154       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_289');
184155 
184156 
184157 WHEN OTHERS THEN
184158    xla_exceptions_pkg.raise_message
184159       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_289');
184160 END EventType_289;
184161 --
184162 
184163 ---------------------------------------
184164 --
184165 -- PRIVATE PROCEDURE
184166 --         insert_sources_290
184167 --
184168 ----------------------------------------
184169 --
184170 PROCEDURE insert_sources_290(
184171                                 p_target_ledger_id       IN NUMBER
184172                               , p_language               IN VARCHAR2
184173                               , p_sla_ledger_id          IN NUMBER
184174                               , p_pad_start_date         IN DATE
184175                               , p_pad_end_date           IN DATE
184176                          )
184177 IS
184178 
184179 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_RCPT_NO_TP';
184180 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
184181 p_apps_owner                   VARCHAR2(30);
184182 l_log_module                   VARCHAR2(240);
184183 BEGIN
184184 IF g_log_enabled THEN
184185       l_log_module := C_DEFAULT_MODULE||'.insert_sources_290';
184186 END IF;
184187 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
184188 
184189       trace
184190          (p_msg      => 'BEGIN of insert_sources_290'
184191          ,p_level    => C_LEVEL_PROCEDURE
184192          ,p_module   => l_log_module);
184193 
184194 END IF;
184195 
184196 -- select APPS owner
184197 SELECT oracle_username
184198   INTO p_apps_owner
184199   FROM fnd_oracle_userid
184200  WHERE read_only_flag = 'U'
184201 ;
184202 
184203 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184204       trace
184205          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
184206                         ' - p_language = '||p_language||
184207                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
184208                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
184209                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
184210                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
184211          ,p_level    => C_LEVEL_STATEMENT
184212          ,p_module   => l_log_module);
184213 END IF;
184214 
184215 
184216 --
184217 INSERT INTO xla_diag_sources --hdr1
184218 (
184219         event_id
184220       , ledger_id
184221       , sla_ledger_id
184222       , description_language
184223       , object_name
184224       , object_type_code
184225       , line_number
184226       , source_application_id
184227       , source_type_code
184228       , source_code
184229       , source_value
184230       , source_meaning
184231       , created_by
184232       , creation_date
184233       , last_update_date
184234       , last_updated_by
184235       , last_update_login
184236       , program_update_date
184237       , program_application_id
184238       , program_id
184239       , request_id
184240 )
184241 SELECT
184242         event_id
184243       , p_target_ledger_id
184244       , p_sla_ledger_id
184245       , p_language
184246       , object_name
184247       , object_type_code
184248       , line_number
184249       , source_application_id
184250       , source_type_code
184251       , source_code
184252       , SUBSTR(source_value ,1,1996)
184253       , SUBSTR(source_meaning,1,200)
184254       , xla_environment_pkg.g_Usr_Id
184255       , TRUNC(SYSDATE)
184256       , TRUNC(SYSDATE)
184257       , xla_environment_pkg.g_Usr_Id
184258       , xla_environment_pkg.g_Login_Id
184259       , TRUNC(SYSDATE)
184260       , xla_environment_pkg.g_Prog_Appl_Id
184261       , xla_environment_pkg.g_Prog_Id
184262       , xla_environment_pkg.g_Req_Id
184263   FROM (
184264        SELECT xet.event_id                  event_id
184265             , 0                             line_number
184266             , CASE r
184267                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
184268                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
184269                 
184270                ELSE null
184271               END                           object_name
184272             , CASE r
184273                 WHEN 1 THEN 'HEADER' 
184274                 WHEN 2 THEN 'HEADER' 
184275                 
184276                 ELSE null
184277               END                           object_type_code
184278             , CASE r
184279                 WHEN 1 THEN '707' 
184280                 WHEN 2 THEN '707' 
184281                 
184282                 ELSE null
184283               END                           source_application_id
184284             , 'S'             source_type_code
184285             , CASE r
184286                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
184287                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
184288                 
184289                 ELSE null
184290               END                           source_code
184291             , CASE r
184292                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
184293                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
184294                 
184295                 ELSE null
184296               END                           source_value
184297             , CASE r
184298                 WHEN 1 THEN fvl12.meaning
184299                 WHEN 2 THEN fvl38.meaning
184300                 
184301                 ELSE null
184302               END               source_meaning
184303         FROM xla_events_gt     xet  
184304       , CST_XLA_INV_HEADERS_V  h1
184305   , fnd_lookup_values    fvl12
184306   , fnd_lookup_values    fvl38
184307             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
184308        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
184309          AND xet.event_type_code = C_EVENT_TYPE_CODE
184310             AND h1.event_id = xet.event_id
184311    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
184312   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
184313   AND fvl12.view_application_id(+) = 700
184314   AND fvl12.language(+)            = USERENV('LANG')
184315      AND fvl38.lookup_type(+)         = 'YES_NO'
184316   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
184317   AND fvl38.view_application_id(+) = 0
184318   AND fvl38.language(+)            = USERENV('LANG')
184319   
184320 )
184321 ;
184322 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184323 
184324       trace
184325          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
184326          ,p_level    => C_LEVEL_STATEMENT
184327          ,p_module   => l_log_module);
184328 
184329 END IF;
184330 --
184331 
184332 
184333 
184334 --
184335 INSERT INTO xla_diag_sources --line1
184336 (
184337         event_id
184338       , ledger_id
184339       , sla_ledger_id
184340       , description_language
184341       , object_name
184342       , object_type_code
184343       , line_number
184344       , source_application_id
184345       , source_type_code
184346       , source_code
184347       , source_value
184348       , source_meaning
184349       , created_by
184350       , creation_date
184351       , last_update_date
184352       , last_updated_by
184353       , last_update_login
184354       , program_update_date
184355       , program_application_id
184356       , program_id
184357       , request_id
184358 )
184359 SELECT  event_id
184360       , p_target_ledger_id
184361       , p_sla_ledger_id
184362       , p_language
184363       , object_name
184364       , object_type_code
184365       , line_number
184366       , source_application_id
184367       , source_type_code
184368       , source_code
184369       , SUBSTR(source_value,1,1996)
184370       , SUBSTR(source_meaning,1,200)
184371       , xla_environment_pkg.g_Usr_Id
184372       , TRUNC(SYSDATE)
184373       , TRUNC(SYSDATE)
184374       , xla_environment_pkg.g_Usr_Id
184375       , xla_environment_pkg.g_Login_Id
184376       , TRUNC(SYSDATE)
184377       , xla_environment_pkg.g_Prog_Appl_Id
184378       , xla_environment_pkg.g_Prog_Id
184379       , xla_environment_pkg.g_Req_Id
184380   FROM (
184381        SELECT xet.event_id                  event_id
184382             , l2.line_number                 line_number
184383             , CASE r
184384                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
184385                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
184386                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
184387                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
184388                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
184389                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
184390                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
184391                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
184392                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
184393                 
184394                ELSE null
184395               END                           object_name
184396             , CASE r
184397                 WHEN 1 THEN 'LINE' 
184398                 WHEN 2 THEN 'LINE' 
184399                 WHEN 3 THEN 'LINE' 
184400                 WHEN 4 THEN 'LINE' 
184401                 WHEN 5 THEN 'LINE' 
184402                 WHEN 6 THEN 'LINE' 
184403                 WHEN 7 THEN 'LINE' 
184404                 WHEN 8 THEN 'LINE' 
184405                 WHEN 9 THEN 'LINE' 
184406                 
184407                 ELSE null
184408               END                           object_type_code
184409             , CASE r
184410                 WHEN 1 THEN '707' 
184411                 WHEN 2 THEN '707' 
184412                 WHEN 3 THEN '707' 
184413                 WHEN 4 THEN '707' 
184414                 WHEN 5 THEN '707' 
184415                 WHEN 6 THEN '707' 
184416                 WHEN 7 THEN '707' 
184417                 WHEN 8 THEN '707' 
184418                 WHEN 9 THEN '707' 
184419                 
184420                 ELSE null
184421               END                           source_application_id
184422             , 'S'             source_type_code
184423             , CASE r
184424                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
184425                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
184426                 WHEN 3 THEN 'CURRENCY_CODE' 
184427                 WHEN 4 THEN 'ENTERED_AMOUNT' 
184428                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
184429                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
184430                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
184431                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
184432                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
184433                 
184434                 ELSE null
184435               END                           source_code
184436             , CASE r
184437                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
184438                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
184439                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
184440                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
184441                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
184442                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
184443                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
184444                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
184445                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
184446                 
184447                 ELSE null
184448               END                           source_value
184449             , null              source_meaning
184450          FROM  xla_events_gt     xet  
184451         , CST_XLA_INV_LINES_V  l2
184452             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
184453         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
184454           AND xet.event_type_code = C_EVENT_TYPE_CODE
184455             AND l2.event_id          = xet.event_id
184456 
184457 )
184458 ;
184459 --
184460 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184461 
184462       trace
184463          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
184464          ,p_level    => C_LEVEL_STATEMENT
184465          ,p_module   => l_log_module);
184466 
184467 END IF;
184468 
184469 
184470 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
184471       trace
184472          (p_msg      => 'END of insert_sources_290'
184473          ,p_level    => C_LEVEL_PROCEDURE
184474          ,p_module   => l_log_module);
184475 END IF;
184476 EXCEPTION
184477   WHEN xla_exceptions_pkg.application_exception THEN
184478       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
184479             trace
184480                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
184481                ,p_level    => C_LEVEL_EXCEPTION
184482                ,p_module   => l_log_module);
184483       END IF;
184484       RAISE;
184485   WHEN OTHERS THEN
184486       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
184487             trace
184488                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
184489                ,p_level    => C_LEVEL_EXCEPTION
184490                ,p_module   => l_log_module);
184491        END IF;
184492        xla_exceptions_pkg.raise_message
184493            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_290');
184494 END insert_sources_290;
184495 --
184496 
184497 ---------------------------------------
184498 --
184499 -- PRIVATE FUNCTION
184500 --         EventType_290
184501 --
184502 ----------------------------------------
184503 --
184504 FUNCTION EventType_290
184505        (p_application_id         IN NUMBER
184506        ,p_base_ledger_id         IN NUMBER
184507        ,p_target_ledger_id       IN NUMBER
184508        ,p_language               IN VARCHAR2
184509        ,p_currency_code          IN VARCHAR2
184510        ,p_sla_ledger_id          IN NUMBER
184511        ,p_pad_start_date         IN DATE
184512        ,p_pad_end_date           IN DATE
184513        ,p_primary_ledger_id      IN NUMBER)
184514 RETURN BOOLEAN IS
184515 --
184516 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_RCPT_NO_TP';
184517 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
184518 
184519 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
184520 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
184521 --
184522 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184523 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184524 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
184525 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
184526 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184527 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
184528 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
184529 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184530 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184531 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184532 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184533 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184534 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184535 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184536 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
184537 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
184538 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
184539 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
184540 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184541 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184542 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184543 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184544 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
184545 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
184546 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
184547 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
184548 
184549 l_event_id                             NUMBER;
184550 l_previous_event_id                    NUMBER;
184551 l_first_event_id                       NUMBER;
184552 l_last_event_id                        NUMBER;
184553 
184554 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
184555 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
184556 --
184557 --
184558 l_result                    BOOLEAN := TRUE;
184559 l_rows                      NUMBER  := 1000;
184560 l_event_type_name           VARCHAR2(80) := 'User-defined Direct Interorg Receipt, No Transfer Price';
184561 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
184562 l_description               VARCHAR2(4000);
184563 l_transaction_reversal      NUMBER;
184564 l_ae_header_id              NUMBER;
184565 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
184566 l_log_module                VARCHAR2(240);
184567 --
184568 l_acct_reversal_source      VARCHAR2(30);
184569 l_trx_reversal_source       VARCHAR2(30);
184570 
184571 l_continue_with_lines       BOOLEAN := TRUE;
184572 --
184573 l_acc_rev_gl_date_source    DATE;                      -- 4262811
184574 --
184575 type t_array_event_id is table of number index by binary_integer;
184576 
184577 l_rec_array_event                    t_rec_array_event;
184578 l_null_rec_array_event               t_rec_array_event;
184579 l_array_ae_header_id                 xla_number_array_type;
184580 l_actual_flag                        VARCHAR2(1) := NULL;
184581 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
184582 l_balance_type_code                  VARCHAR2(1) :=NULL;
184583 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
184584 
184585 --
184586 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
184587 --
184588 
184589 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
184590 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
184591 
184592 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
184593 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
184594 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
184595 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
184596 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
184597 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
184598 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
184599 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
184600 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
184601 
184602 l_array_source_12              t_array_source_12;
184603 l_array_source_12_meaning      t_array_lookup_meaning;
184604 l_array_source_38              t_array_source_38;
184605 l_array_source_38_meaning      t_array_lookup_meaning;
184606 
184607 l_array_source_4      t_array_source_4;
184608 l_array_source_11      t_array_source_11;
184609 l_array_source_15      t_array_source_15;
184610 l_array_source_18      t_array_source_18;
184611 l_array_source_19      t_array_source_19;
184612 l_array_source_20      t_array_source_20;
184613 l_array_source_21      t_array_source_21;
184614 l_array_source_22      t_array_source_22;
184615 l_array_source_24      t_array_source_24;
184616 
184617 --
184618 CURSOR header_cur
184619 IS
184620 SELECT /*+ leading(xet) cardinality(xet,1) */
184621 -- Event Type Code: UDIR_INTERORG_RCPT_NO_TP
184622 -- Event Class Code: USER_DEFINE
184623     xet.entity_id
184624   , xet.legal_entity_id
184625   , xet.entity_code
184626   , xet.transaction_number
184627   , xet.event_id
184628   , xet.event_class_code
184629   , xet.event_type_code
184630   , xet.event_number
184631   , xet.event_date
184632   , xet.transaction_date
184633   , xet.reference_num_1
184634   , xet.reference_num_2
184635   , xet.reference_num_3
184636   , xet.reference_num_4
184637   , xet.reference_char_1
184638   , xet.reference_char_2
184639   , xet.reference_char_3
184640   , xet.reference_char_4
184641   , xet.reference_date_1
184642   , xet.reference_date_2
184643   , xet.reference_date_3
184644   , xet.reference_date_4
184645   , xet.event_created_by
184646   , xet.budgetary_control_flag 
184647   , h1.DISTRIBUTION_TYPE    source_12
184648   , fvl12.meaning   source_12_meaning
184649   , h1.TRANSFER_TO_GL_INDICATOR    source_38
184650   , fvl38.meaning   source_38_meaning
184651   FROM xla_events_gt     xet 
184652   , CST_XLA_INV_HEADERS_V  h1
184653   , fnd_lookup_values    fvl12
184654   , fnd_lookup_values    fvl38
184655  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
184656    and xet.event_type_code = C_EVENT_TYPE_CODE
184657    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
184658    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
184659   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
184660   AND fvl12.view_application_id(+) = 700
184661   AND fvl12.language(+)            = USERENV('LANG')
184662      AND fvl38.lookup_type(+)         = 'YES_NO'
184663   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
184664   AND fvl38.view_application_id(+) = 0
184665   AND fvl38.language(+)            = USERENV('LANG')
184666   
184667  ORDER BY event_id
184668 ;
184669 
184670 
184671 --
184672 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
184673 IS
184674 SELECT /*+ leading(xet) cardinality(xet,1) */
184675 -- Event Type Code: UDIR_INTERORG_RCPT_NO_TP
184676 -- Event Class Code: USER_DEFINE
184677     xet.entity_id
184678    ,xet.legal_entity_id
184679    ,xet.entity_code
184680    ,xet.transaction_number
184681    ,xet.event_id
184682    ,xet.event_class_code
184683    ,xet.event_type_code
184684    ,xet.event_number
184685    ,xet.event_date
184686    ,xet.transaction_date
184687    ,xet.reference_num_1
184688    ,xet.reference_num_2
184689    ,xet.reference_num_3
184690    ,xet.reference_num_4
184691    ,xet.reference_char_1
184692    ,xet.reference_char_2
184693    ,xet.reference_char_3
184694    ,xet.reference_char_4
184695    ,xet.reference_date_1
184696    ,xet.reference_date_2
184697    ,xet.reference_date_3
184698    ,xet.reference_date_4
184699    ,xet.event_created_by
184700    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
184701   , l2.CODE_COMBINATION_ID    source_4
184702   , l2.DISTRIBUTION_IDENTIFIER    source_11
184703   , l2.CURRENCY_CODE    source_15
184704   , l2.ENTERED_AMOUNT    source_18
184705   , l2.CURRENCY_CONVERSION_DATE    source_19
184706   , l2.CURRENCY_CONVERSION_RATE    source_20
184707   , l2.CURRENCY_CONVERSION_TYPE    source_21
184708   , l2.ACCOUNTED_AMOUNT    source_22
184709   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
184710   FROM xla_events_gt     xet 
184711   , CST_XLA_INV_LINES_V  l2
184712  WHERE xet.event_id between x_first_event_id and x_last_event_id
184713    and xet.event_date between p_pad_start_date and p_pad_end_date
184714    and xet.event_type_code = C_EVENT_TYPE_CODE
184715    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
184716 ;
184717 
184718 --
184719 BEGIN
184720 IF g_log_enabled THEN
184721    l_log_module := C_DEFAULT_MODULE||'.EventType_290';
184722 END IF;
184723 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
184724    trace
184725       (p_msg      => 'BEGIN of EventType_290'
184726       ,p_level    => C_LEVEL_PROCEDURE
184727       ,p_module   => l_log_module);
184728 END IF;
184729 
184730 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184731    trace
184732       (p_msg      => 'p_application_id = '||p_application_id||
184733                      ' - p_base_ledger_id = '||p_base_ledger_id||
184734                      ' - p_target_ledger_id  = '||p_target_ledger_id||
184735                      ' - p_language = '||p_language||
184736                      ' - p_currency_code = '||p_currency_code||
184737                      ' - p_sla_ledger_id = '||p_sla_ledger_id
184738       ,p_level    => C_LEVEL_STATEMENT
184739       ,p_module   => l_log_module);
184740 END IF;
184741 --
184742 -- initialze arrays
184743 --
184744 g_array_event.DELETE;
184745 l_rec_array_event := l_null_rec_array_event;
184746 --
184747 --------------------------------------
184748 -- 4262811 Initialze MPA Line Number
184749 --------------------------------------
184750 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
184751 
184752 --
184753 
184754 --
184755 OPEN header_cur;
184756 --
184757 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184758    trace
184759    (p_msg      => 'SQL - FETCH header_cur'
184760    ,p_level    => C_LEVEL_STATEMENT
184761    ,p_module   => l_log_module);
184762 END IF;
184763 --
184764 LOOP
184765 FETCH header_cur BULK COLLECT INTO
184766         l_array_entity_id
184767       , l_array_legal_entity_id
184768       , l_array_entity_code
184769       , l_array_transaction_num
184770       , l_array_event_id
184771       , l_array_class_code
184772       , l_array_event_type
184773       , l_array_event_number
184774       , l_array_event_date
184775       , l_array_transaction_date
184776       , l_array_reference_num_1
184777       , l_array_reference_num_2
184778       , l_array_reference_num_3
184779       , l_array_reference_num_4
184780       , l_array_reference_char_1
184781       , l_array_reference_char_2
184782       , l_array_reference_char_3
184783       , l_array_reference_char_4
184784       , l_array_reference_date_1
184785       , l_array_reference_date_2
184786       , l_array_reference_date_3
184787       , l_array_reference_date_4
184788       , l_array_event_created_by
184789       , l_array_budgetary_control_flag 
184790       , l_array_source_12
184791       , l_array_source_12_meaning
184792       , l_array_source_38
184793       , l_array_source_38_meaning
184794       LIMIT l_rows;
184795 --
184796 IF (C_LEVEL_EVENT >= g_log_level) THEN
184797    trace
184798    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
184799    ,p_level    => C_LEVEL_EVENT
184800    ,p_module   => l_log_module);
184801 END IF;
184802 --
184803 EXIT WHEN l_array_entity_id.COUNT = 0;
184804 
184805 -- initialize arrays
184806 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
184807 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
184808 
184809 --
184810 -- Bug 4458708
184811 --
184812 XLA_AE_LINES_PKG.g_LineNumber := 0;
184813 
184814 
184815 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
184816 g_last_hdr_idx := l_array_event_id.LAST;
184817 --
184818 -- loop for the headers. Each iteration is for each header extract row
184819 -- fetched in header cursor
184820 --
184821 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
184822 
184823 --
184824 -- set event info as cache for other routines to refer event attributes
184825 --
184826 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
184827    (p_application_id           => p_application_id
184828    ,p_primary_ledger_id        => p_primary_ledger_id
184829    ,p_base_ledger_id           => p_base_ledger_id
184830    ,p_target_ledger_id         => p_target_ledger_id
184831    ,p_entity_id                => l_array_entity_id(hdr_idx)
184832    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
184833    ,p_entity_code              => l_array_entity_code(hdr_idx)
184834    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
184835    ,p_event_id                 => l_array_event_id(hdr_idx)
184836    ,p_event_class_code         => l_array_class_code(hdr_idx)
184837    ,p_event_type_code          => l_array_event_type(hdr_idx)
184838    ,p_event_number             => l_array_event_number(hdr_idx)
184839    ,p_event_date               => l_array_event_date(hdr_idx)
184840    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
184841    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
184842    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
184843    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
184844    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
184845    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
184846    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
184847    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
184848    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
184849    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
184850    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
184851    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
184852    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
184853    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
184854    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
184855 
184856 --
184857 -- set the status of entry to C_VALID (0)
184858 --
184859 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
184860 
184861 --
184862 -- initialize a row for ae header
184863 --
184864 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
184865 
184866 l_event_id := l_array_event_id(hdr_idx);
184867 
184868 --
184869 -- storing the hdr_idx for event. May be used by line cursor.
184870 --
184871 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
184872 
184873 --
184874 -- store sources from header extract. This can be improved to
184875 -- store only those sources from header extract that may be used in lines
184876 --
184877 
184878 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
184879 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
184880 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
184881 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
184882 
184883 --
184884 -- initilaize the status of ae headers for diffrent balance types
184885 -- the status is initialised to C_NOT_CREATED (2)
184886 --
184887 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
184888 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
184889 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
184890 
184891 --
184892 -- call api to validate and store accounting attributes for header
184893 --
184894 
184895 ------------------------------------------------------------
184896 -- Accrual Reversal : to get date for Standard Source (NONE)
184897 ------------------------------------------------------------
184898 l_acc_rev_gl_date_source := NULL;
184899 
184900      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
184901       l_rec_acct_attrs.array_date_value(1) := 
184902 xla_ae_sources_pkg.GetSystemSourceDate(
184903    p_source_code           => 'XLA_REFERENCE_DATE_1'
184904  , p_source_type_code      => 'Y'
184905  , p_source_application_id =>  602
184906 );
184907      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
184908       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
184909 
184910 
184911 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
184912 
184913 XLA_AE_HEADER_PKG.SetJeCategoryName;
184914 
184915 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
184916 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
184917 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
184918 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
184919 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
184920 
184921 
184922 -- No header level analytical criteria
184923 
184924 --
184925 --accounting attribute enhancement, bug 3612931
184926 --
184927 l_trx_reversal_source := SUBSTR(NULL, 1,30);
184928 
184929 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
184930    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
184931 
184932    xla_accounting_err_pkg.build_message
184933       (p_appli_s_name            => 'XLA'
184934       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
184935       ,p_token_1                 => 'ACCT_ATTR_NAME'
184936       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
184937       ,p_token_2                 => 'PRODUCT_NAME'
184938       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
184939       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
184940       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
184941       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
184942 
184943 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
184944    --
184945    -- following sets the accounting attributes needed to reverse
184946    -- accounting for a distributeion
184947    --
184948    xla_ae_lines_pkg.SetTrxReversalAttrs
184949       (p_event_id              => l_event_id
184950       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
184951       ,p_trx_reversal_source   => l_trx_reversal_source);
184952 
184953 END IF;
184954 
184955 
184956 ----------------------------------------------------------------
184957 -- 4262811 -  update the header statuses to invalid in need be
184958 ----------------------------------------------------------------
184959 --
184960 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
184961 
184962 
184963   -----------------------------------------------
184964   -- No accrual reversal for the event class/type
184965   -----------------------------------------------
184966 ----------------------------------------------------------------
184967 
184968 --
184969 -- this ends the header loop iteration for one bulk fetch
184970 --
184971 END LOOP;
184972 
184973 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
184974 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
184975 
184976 --
184977 -- insert dummy rows into lines gt table that were created due to
184978 -- transaction reversals
184979 --
184980 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
184981    l_result := XLA_AE_LINES_PKG.InsertLines;
184982 END IF;
184983 
184984 --
184985 -- reset the temp_line_num for each set of events fetched from header
184986 -- cursor rather than doing it for each new event in line cursor
184987 -- Bug 3939231
184988 --
184989 xla_ae_lines_pkg.g_temp_line_num := 0;
184990 
184991 
184992 
184993 --
184994 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
184995 --
184996 --
184997 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184998 
184999       trace
185000          (p_msg      => 'SQL - FETCH line_cur'
185001          ,p_level    => C_LEVEL_STATEMENT
185002          ,p_module   => l_log_module);
185003 
185004 END IF;
185005 --
185006 --
185007 LOOP
185008   --
185009   FETCH line_cur BULK COLLECT INTO
185010         l_array_entity_id
185011       , l_array_legal_entity_id
185012       , l_array_entity_code
185013       , l_array_transaction_num
185014       , l_array_event_id
185015       , l_array_class_code
185016       , l_array_event_type
185017       , l_array_event_number
185018       , l_array_event_date
185019       , l_array_transaction_date
185020       , l_array_reference_num_1
185021       , l_array_reference_num_2
185022       , l_array_reference_num_3
185023       , l_array_reference_num_4
185024       , l_array_reference_char_1
185025       , l_array_reference_char_2
185026       , l_array_reference_char_3
185027       , l_array_reference_char_4
185028       , l_array_reference_date_1
185029       , l_array_reference_date_2
185030       , l_array_reference_date_3
185031       , l_array_reference_date_4
185032       , l_array_event_created_by
185033       , l_array_budgetary_control_flag
185034       , l_array_extract_line_num 
185035       , l_array_source_4
185036       , l_array_source_11
185037       , l_array_source_15
185038       , l_array_source_18
185039       , l_array_source_19
185040       , l_array_source_20
185041       , l_array_source_21
185042       , l_array_source_22
185043       , l_array_source_24
185044       LIMIT l_rows;
185045 
185046   --
185047   IF (C_LEVEL_EVENT >= g_log_level) THEN
185048             trace
185049                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
185050                ,p_level    => C_LEVEL_EVENT
185051                ,p_module   => l_log_module);
185052   END IF;
185053   --
185054   EXIT WHEN l_array_entity_id.count = 0;
185055 
185056   XLA_AE_LINES_PKG.g_rec_lines := null;
185057 
185058 --
185059 -- Bug 4458708
185060 --
185061 XLA_AE_LINES_PKG.g_LineNumber := 0;
185062 --
185063 --
185064 
185065 FOR Idx IN 1..l_array_event_id.count LOOP
185066    --
185067    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
185068    --
185069    l_event_id := l_array_event_id(idx);  -- 5648433
185070 
185071    --
185072    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
185073    --
185074 
185075    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
185076              (g_array_event(l_event_id).array_value_num('header_index'))
185077          ,'N'
185078          ) <> 'Y'
185079    THEN
185080       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185081          trace
185082             (p_msg      => 'Trancaction revesal option is not Y '
185083             ,p_level    => C_LEVEL_STATEMENT
185084             ,p_module   => l_log_module);
185085       END IF;
185086 
185087 --
185088 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
185089 --
185090 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
185091 --
185092 -- set event info as cache for other routines to refer event attributes
185093 --
185094 
185095 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
185096    l_previous_event_id := l_event_id;
185097 
185098    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
185099       (p_application_id           => p_application_id
185100       ,p_primary_ledger_id        => p_primary_ledger_id
185101       ,p_base_ledger_id           => p_base_ledger_id
185102       ,p_target_ledger_id         => p_target_ledger_id
185103       ,p_entity_id                => l_array_entity_id(Idx)
185104       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
185105       ,p_entity_code              => l_array_entity_code(Idx)
185106       ,p_transaction_num          => l_array_transaction_num(Idx)
185107       ,p_event_id                 => l_array_event_id(Idx)
185108       ,p_event_class_code         => l_array_class_code(Idx)
185109       ,p_event_type_code          => l_array_event_type(Idx)
185110       ,p_event_number             => l_array_event_number(Idx)
185111       ,p_event_date               => l_array_event_date(Idx)
185112       ,p_transaction_date         => l_array_transaction_date(Idx)
185113       ,p_reference_num_1          => l_array_reference_num_1(Idx)
185114       ,p_reference_num_2          => l_array_reference_num_2(Idx)
185115       ,p_reference_num_3          => l_array_reference_num_3(Idx)
185116       ,p_reference_num_4          => l_array_reference_num_4(Idx)
185117       ,p_reference_char_1         => l_array_reference_char_1(Idx)
185118       ,p_reference_char_2         => l_array_reference_char_2(Idx)
185119       ,p_reference_char_3         => l_array_reference_char_3(Idx)
185120       ,p_reference_char_4         => l_array_reference_char_4(Idx)
185121       ,p_reference_date_1         => l_array_reference_date_1(Idx)
185122       ,p_reference_date_2         => l_array_reference_date_2(Idx)
185123       ,p_reference_date_3         => l_array_reference_date_3(Idx)
185124       ,p_reference_date_4         => l_array_reference_date_4(Idx)
185125       ,p_event_created_by         => l_array_event_created_by(Idx)
185126       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
185127        --
185128 END IF;
185129 
185130 
185131 
185132 --
185133 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
185134 
185135 l_acct_reversal_source := SUBSTR(NULL, 1,30);
185136 
185137 IF l_continue_with_lines THEN
185138    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
185139       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
185140 
185141       xla_accounting_err_pkg.build_message
185142          (p_appli_s_name            => 'XLA'
185143          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
185144          ,p_token_1                 => 'LINE_NUMBER'
185145          ,p_value_1                 => l_array_extract_line_num(Idx)
185146          ,p_token_2                 => 'PRODUCT_NAME'
185147          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
185148          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
185149          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
185150          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
185151 
185152    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
185153       --
185154       -- following sets the accounting attributes needed to reverse
185155       -- accounting for a distributeion
185156       --
185157 
185158       --
185159       -- 5217187
185160       --
185161       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
185162       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
185163                                        g_array_event(l_event_id).array_value_num('header_index'));
185164       --
185165       --
185166 
185167       -- No reversal code generated
185168 
185169       xla_ae_lines_pkg.SetAcctReversalAttrs
185170          (p_event_id             => l_event_id
185171          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
185172          ,p_calculate_acctd_flag => l_calculate_acctd_flag
185173          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
185174    END IF;
185175 
185176    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
185177        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
185178 
185179 --
185180 AcctLineType_38 (
185181  p_application_id  => p_application_id
185182  ,p_event_id     => l_event_id
185183  ,p_calculate_acctd_flag => l_calculate_acctd_flag
185184  ,p_calculate_g_l_flag => l_calculate_g_l_flag
185185  ,p_actual_flag => l_actual_flag
185186  ,p_balance_type_code => l_balance_type_code
185187  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
185188  
185189  , p_source_4 => l_array_source_4(Idx)
185190  , p_source_11 => l_array_source_11(Idx)
185191  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
185192  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
185193  , p_source_15 => l_array_source_15(Idx)
185194  , p_source_18 => l_array_source_18(Idx)
185195  , p_source_19 => l_array_source_19(Idx)
185196  , p_source_20 => l_array_source_20(Idx)
185197  , p_source_21 => l_array_source_21(Idx)
185198  , p_source_22 => l_array_source_22(Idx)
185199  , p_source_24 => l_array_source_24(Idx)
185200  );
185201 If(l_balance_type_code = 'A') THEN
185202   l_actual_gain_loss_ref := l_gain_or_loss_ref;
185203 END IF;
185204 
185205 --
185206 
185207 
185208 --
185209 AcctLineType_67 (
185210  p_application_id  => p_application_id
185211  ,p_event_id     => l_event_id
185212  ,p_calculate_acctd_flag => l_calculate_acctd_flag
185213  ,p_calculate_g_l_flag => l_calculate_g_l_flag
185214  ,p_actual_flag => l_actual_flag
185215  ,p_balance_type_code => l_balance_type_code
185216  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
185217  
185218  , p_source_4 => l_array_source_4(Idx)
185219  , p_source_11 => l_array_source_11(Idx)
185220  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
185221  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
185222  , p_source_15 => l_array_source_15(Idx)
185223  , p_source_18 => l_array_source_18(Idx)
185224  , p_source_19 => l_array_source_19(Idx)
185225  , p_source_20 => l_array_source_20(Idx)
185226  , p_source_21 => l_array_source_21(Idx)
185227  , p_source_22 => l_array_source_22(Idx)
185228  , p_source_24 => l_array_source_24(Idx)
185229  );
185230 If(l_balance_type_code = 'A') THEN
185231   l_actual_gain_loss_ref := l_gain_or_loss_ref;
185232 END IF;
185233 
185234 --
185235 
185236 
185237 --
185238 AcctLineType_74 (
185239  p_application_id  => p_application_id
185240  ,p_event_id     => l_event_id
185241  ,p_calculate_acctd_flag => l_calculate_acctd_flag
185242  ,p_calculate_g_l_flag => l_calculate_g_l_flag
185243  ,p_actual_flag => l_actual_flag
185244  ,p_balance_type_code => l_balance_type_code
185245  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
185246  
185247  , p_source_4 => l_array_source_4(Idx)
185248  , p_source_11 => l_array_source_11(Idx)
185249  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
185250  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
185251  , p_source_15 => l_array_source_15(Idx)
185252  , p_source_18 => l_array_source_18(Idx)
185253  , p_source_19 => l_array_source_19(Idx)
185254  , p_source_20 => l_array_source_20(Idx)
185255  , p_source_21 => l_array_source_21(Idx)
185256  , p_source_22 => l_array_source_22(Idx)
185257  , p_source_24 => l_array_source_24(Idx)
185258  );
185259 If(l_balance_type_code = 'A') THEN
185260   l_actual_gain_loss_ref := l_gain_or_loss_ref;
185261 END IF;
185262 
185263 --
185264 
185265 
185266 --
185267 AcctLineType_108 (
185268  p_application_id  => p_application_id
185269  ,p_event_id     => l_event_id
185270  ,p_calculate_acctd_flag => l_calculate_acctd_flag
185271  ,p_calculate_g_l_flag => l_calculate_g_l_flag
185272  ,p_actual_flag => l_actual_flag
185273  ,p_balance_type_code => l_balance_type_code
185274  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
185275  
185276  , p_source_4 => l_array_source_4(Idx)
185277  , p_source_11 => l_array_source_11(Idx)
185278  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
185279  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
185280  , p_source_15 => l_array_source_15(Idx)
185281  , p_source_18 => l_array_source_18(Idx)
185282  , p_source_19 => l_array_source_19(Idx)
185283  , p_source_20 => l_array_source_20(Idx)
185284  , p_source_21 => l_array_source_21(Idx)
185285  , p_source_22 => l_array_source_22(Idx)
185286  , p_source_24 => l_array_source_24(Idx)
185287  );
185288 If(l_balance_type_code = 'A') THEN
185289   l_actual_gain_loss_ref := l_gain_or_loss_ref;
185290 END IF;
185291 
185292 --
185293 
185294 
185295 --
185296 AcctLineType_112 (
185297  p_application_id  => p_application_id
185298  ,p_event_id     => l_event_id
185299  ,p_calculate_acctd_flag => l_calculate_acctd_flag
185300  ,p_calculate_g_l_flag => l_calculate_g_l_flag
185301  ,p_actual_flag => l_actual_flag
185302  ,p_balance_type_code => l_balance_type_code
185303  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
185304  
185305  , p_source_4 => l_array_source_4(Idx)
185306  , p_source_11 => l_array_source_11(Idx)
185307  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
185308  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
185309  , p_source_15 => l_array_source_15(Idx)
185310  , p_source_18 => l_array_source_18(Idx)
185311  , p_source_19 => l_array_source_19(Idx)
185312  , p_source_20 => l_array_source_20(Idx)
185313  , p_source_21 => l_array_source_21(Idx)
185314  , p_source_22 => l_array_source_22(Idx)
185315  , p_source_24 => l_array_source_24(Idx)
185316  );
185317 If(l_balance_type_code = 'A') THEN
185318   l_actual_gain_loss_ref := l_gain_or_loss_ref;
185319 END IF;
185320 
185321 --
185322 
185323 
185324 --
185325 AcctLineType_133 (
185326  p_application_id  => p_application_id
185327  ,p_event_id     => l_event_id
185328  ,p_calculate_acctd_flag => l_calculate_acctd_flag
185329  ,p_calculate_g_l_flag => l_calculate_g_l_flag
185330  ,p_actual_flag => l_actual_flag
185331  ,p_balance_type_code => l_balance_type_code
185332  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
185333  
185334  , p_source_4 => l_array_source_4(Idx)
185335  , p_source_11 => l_array_source_11(Idx)
185336  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
185337  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
185338  , p_source_15 => l_array_source_15(Idx)
185339  , p_source_18 => l_array_source_18(Idx)
185340  , p_source_19 => l_array_source_19(Idx)
185341  , p_source_20 => l_array_source_20(Idx)
185342  , p_source_21 => l_array_source_21(Idx)
185343  , p_source_22 => l_array_source_22(Idx)
185344  , p_source_24 => l_array_source_24(Idx)
185345  );
185346 If(l_balance_type_code = 'A') THEN
185347   l_actual_gain_loss_ref := l_gain_or_loss_ref;
185348 END IF;
185349 
185350 --
185351 
185352 
185353 --
185354 AcctLineType_173 (
185355  p_application_id  => p_application_id
185356  ,p_event_id     => l_event_id
185357  ,p_calculate_acctd_flag => l_calculate_acctd_flag
185358  ,p_calculate_g_l_flag => l_calculate_g_l_flag
185359  ,p_actual_flag => l_actual_flag
185360  ,p_balance_type_code => l_balance_type_code
185361  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
185362  
185363  , p_source_4 => l_array_source_4(Idx)
185364  , p_source_11 => l_array_source_11(Idx)
185365  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
185366  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
185367  , p_source_15 => l_array_source_15(Idx)
185368  , p_source_18 => l_array_source_18(Idx)
185369  , p_source_19 => l_array_source_19(Idx)
185370  , p_source_20 => l_array_source_20(Idx)
185371  , p_source_21 => l_array_source_21(Idx)
185372  , p_source_22 => l_array_source_22(Idx)
185373  , p_source_24 => l_array_source_24(Idx)
185374  );
185375 If(l_balance_type_code = 'A') THEN
185376   l_actual_gain_loss_ref := l_gain_or_loss_ref;
185377 END IF;
185378 
185379 --
185380 
185381 
185382 --
185383 AcctLineType_201 (
185384  p_application_id  => p_application_id
185385  ,p_event_id     => l_event_id
185386  ,p_calculate_acctd_flag => l_calculate_acctd_flag
185387  ,p_calculate_g_l_flag => l_calculate_g_l_flag
185388  ,p_actual_flag => l_actual_flag
185389  ,p_balance_type_code => l_balance_type_code
185390  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
185391  
185392  , p_source_4 => l_array_source_4(Idx)
185393  , p_source_11 => l_array_source_11(Idx)
185394  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
185395  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
185396  , p_source_15 => l_array_source_15(Idx)
185397  , p_source_18 => l_array_source_18(Idx)
185398  , p_source_19 => l_array_source_19(Idx)
185399  , p_source_20 => l_array_source_20(Idx)
185400  , p_source_21 => l_array_source_21(Idx)
185401  , p_source_22 => l_array_source_22(Idx)
185402  , p_source_24 => l_array_source_24(Idx)
185403  );
185404 If(l_balance_type_code = 'A') THEN
185405   l_actual_gain_loss_ref := l_gain_or_loss_ref;
185406 END IF;
185407 
185408 --
185409 
185410 
185411 --
185412 AcctLineType_227 (
185413  p_application_id  => p_application_id
185414  ,p_event_id     => l_event_id
185415  ,p_calculate_acctd_flag => l_calculate_acctd_flag
185416  ,p_calculate_g_l_flag => l_calculate_g_l_flag
185417  ,p_actual_flag => l_actual_flag
185418  ,p_balance_type_code => l_balance_type_code
185419  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
185420  
185421  , p_source_4 => l_array_source_4(Idx)
185422  , p_source_11 => l_array_source_11(Idx)
185423  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
185424  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
185425  , p_source_15 => l_array_source_15(Idx)
185426  , p_source_18 => l_array_source_18(Idx)
185427  , p_source_19 => l_array_source_19(Idx)
185428  , p_source_20 => l_array_source_20(Idx)
185429  , p_source_21 => l_array_source_21(Idx)
185430  , p_source_22 => l_array_source_22(Idx)
185431  , p_source_24 => l_array_source_24(Idx)
185432  );
185433 If(l_balance_type_code = 'A') THEN
185434   l_actual_gain_loss_ref := l_gain_or_loss_ref;
185435 END IF;
185436 
185437 --
185438 
185439       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
185440       -- or secondary ledger that has different currency with primary
185441       -- or alc that is calculated by sla
185442       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
185443             (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'))
185444 
185445 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
185446 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
185447           AND (l_actual_flag = 'A')) THEN
185448         XLA_AE_LINES_PKG.CreateGainOrLossLines(
185449           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
185450          ,p_application_id   => p_application_id
185451          ,p_amb_context_code => 'DEFAULT'
185452          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
185453          ,p_event_class_code => C_EVENT_CLASS_CODE
185454          ,p_event_type_code  => C_EVENT_TYPE_CODE
185455          
185456          ,p_gain_ccid        => -1
185457          ,p_loss_ccid        => -1
185458 
185459          ,p_actual_flag      => l_actual_flag
185460          ,p_enc_flag         => null
185461          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
185462          ,p_enc_g_l_ref      => null
185463          );
185464       END IF;
185465    END IF;
185466 END IF;
185467 
185468    ELSE
185469       --
185470       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
185471       --
185472       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185473          trace
185474             (p_msg      => 'Trancaction revesal option is Y'
185475             ,p_level    => C_LEVEL_STATEMENT
185476             ,p_module   => l_log_module);
185477       END IF;
185478    END IF;
185479 
185480 END LOOP;
185481 l_result := XLA_AE_LINES_PKG.InsertLines ;
185482 end loop;
185483 close line_cur;
185484 
185485 
185486 --
185487 -- insert headers into xla_ae_headers_gt table
185488 --
185489 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
185490 
185491 -- insert into errors table here.
185492 
185493 END LOOP;
185494 
185495 --
185496 -- 4865292
185497 --
185498 -- Compare g_hdr_extract_count with event count in
185499 -- CreateHeadersAndLines.
185500 --
185501 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
185502 
185503 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185504    trace (p_msg     => '# rows extracted from header extract objects '
185505                     || ' (running total): '
185506                     || g_hdr_extract_count
185507          ,p_level   => C_LEVEL_STATEMENT
185508          ,p_module  => l_log_module);
185509 END IF;
185510 
185511 CLOSE header_cur;
185512 --
185513 
185514 --
185515 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
185516    trace
185517       (p_msg      => 'END of EventType_290'
185518       ,p_level    => C_LEVEL_PROCEDURE
185519       ,p_module   => l_log_module);
185520 END IF;
185521 --
185522 RETURN l_result;
185523 EXCEPTION
185524 WHEN xla_exceptions_pkg.application_exception THEN
185525    
185526 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
185527 
185528    
185529 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
185530 
185531    RAISE;
185532 
185533 WHEN NO_DATA_FOUND THEN
185534 
185535 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
185536 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
185537 
185538 FOR header_record IN header_cur
185539 LOOP
185540     l_array_header_events(header_record.event_id) := header_record.event_id;
185541 END LOOP;
185542 
185543 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
185544 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
185545 
185546 fnd_file.put_line(fnd_file.LOG, '                    ');
185547 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
185548 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
185549 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
185550 
185551 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
185552 LOOP
185553 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
185554 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
185555         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
185556 	END IF;
185557 END LOOP;
185558 
185559 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
185560 fnd_file.put_line(fnd_file.LOG, '                    ');
185561 
185562 
185563 xla_exceptions_pkg.raise_message
185564       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_290');
185565 
185566 
185567 WHEN OTHERS THEN
185568    xla_exceptions_pkg.raise_message
185569       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_290');
185570 END EventType_290;
185571 --
185572 
185573 ---------------------------------------
185574 --
185575 -- PRIVATE PROCEDURE
185576 --         insert_sources_291
185577 --
185578 ----------------------------------------
185579 --
185580 PROCEDURE insert_sources_291(
185581                                 p_target_ledger_id       IN NUMBER
185582                               , p_language               IN VARCHAR2
185583                               , p_sla_ledger_id          IN NUMBER
185584                               , p_pad_start_date         IN DATE
185585                               , p_pad_end_date           IN DATE
185586                          )
185587 IS
185588 
185589 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_RCPT_TP';
185590 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
185591 p_apps_owner                   VARCHAR2(30);
185592 l_log_module                   VARCHAR2(240);
185593 BEGIN
185594 IF g_log_enabled THEN
185595       l_log_module := C_DEFAULT_MODULE||'.insert_sources_291';
185596 END IF;
185597 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
185598 
185599       trace
185600          (p_msg      => 'BEGIN of insert_sources_291'
185601          ,p_level    => C_LEVEL_PROCEDURE
185602          ,p_module   => l_log_module);
185603 
185604 END IF;
185605 
185606 -- select APPS owner
185607 SELECT oracle_username
185608   INTO p_apps_owner
185609   FROM fnd_oracle_userid
185610  WHERE read_only_flag = 'U'
185611 ;
185612 
185613 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185614       trace
185615          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
185616                         ' - p_language = '||p_language||
185617                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
185618                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
185619                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
185620                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
185621          ,p_level    => C_LEVEL_STATEMENT
185622          ,p_module   => l_log_module);
185623 END IF;
185624 
185625 
185626 --
185627 INSERT INTO xla_diag_sources --hdr1
185628 (
185629         event_id
185630       , ledger_id
185631       , sla_ledger_id
185632       , description_language
185633       , object_name
185634       , object_type_code
185635       , line_number
185636       , source_application_id
185637       , source_type_code
185638       , source_code
185639       , source_value
185640       , source_meaning
185641       , created_by
185642       , creation_date
185643       , last_update_date
185644       , last_updated_by
185645       , last_update_login
185646       , program_update_date
185647       , program_application_id
185648       , program_id
185649       , request_id
185650 )
185651 SELECT
185652         event_id
185653       , p_target_ledger_id
185654       , p_sla_ledger_id
185655       , p_language
185656       , object_name
185657       , object_type_code
185658       , line_number
185659       , source_application_id
185660       , source_type_code
185661       , source_code
185662       , SUBSTR(source_value ,1,1996)
185663       , SUBSTR(source_meaning,1,200)
185664       , xla_environment_pkg.g_Usr_Id
185665       , TRUNC(SYSDATE)
185666       , TRUNC(SYSDATE)
185667       , xla_environment_pkg.g_Usr_Id
185668       , xla_environment_pkg.g_Login_Id
185669       , TRUNC(SYSDATE)
185670       , xla_environment_pkg.g_Prog_Appl_Id
185671       , xla_environment_pkg.g_Prog_Id
185672       , xla_environment_pkg.g_Req_Id
185673   FROM (
185674        SELECT xet.event_id                  event_id
185675             , 0                             line_number
185676             , CASE r
185677                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
185678                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
185679                 
185680                ELSE null
185681               END                           object_name
185682             , CASE r
185683                 WHEN 1 THEN 'HEADER' 
185684                 WHEN 2 THEN 'HEADER' 
185685                 
185686                 ELSE null
185687               END                           object_type_code
185688             , CASE r
185689                 WHEN 1 THEN '707' 
185690                 WHEN 2 THEN '707' 
185691                 
185692                 ELSE null
185693               END                           source_application_id
185694             , 'S'             source_type_code
185695             , CASE r
185696                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
185697                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
185698                 
185699                 ELSE null
185700               END                           source_code
185701             , CASE r
185702                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
185703                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
185704                 
185705                 ELSE null
185706               END                           source_value
185707             , CASE r
185708                 WHEN 1 THEN fvl12.meaning
185709                 WHEN 2 THEN fvl38.meaning
185710                 
185711                 ELSE null
185712               END               source_meaning
185713         FROM xla_events_gt     xet  
185714       , CST_XLA_INV_HEADERS_V  h1
185715   , fnd_lookup_values    fvl12
185716   , fnd_lookup_values    fvl38
185717             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
185718        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
185719          AND xet.event_type_code = C_EVENT_TYPE_CODE
185720             AND h1.event_id = xet.event_id
185721    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
185722   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
185723   AND fvl12.view_application_id(+) = 700
185724   AND fvl12.language(+)            = USERENV('LANG')
185725      AND fvl38.lookup_type(+)         = 'YES_NO'
185726   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
185727   AND fvl38.view_application_id(+) = 0
185728   AND fvl38.language(+)            = USERENV('LANG')
185729   
185730 )
185731 ;
185732 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185733 
185734       trace
185735          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
185736          ,p_level    => C_LEVEL_STATEMENT
185737          ,p_module   => l_log_module);
185738 
185739 END IF;
185740 --
185741 
185742 
185743 
185744 --
185745 INSERT INTO xla_diag_sources --line1
185746 (
185747         event_id
185748       , ledger_id
185749       , sla_ledger_id
185750       , description_language
185751       , object_name
185752       , object_type_code
185753       , line_number
185754       , source_application_id
185755       , source_type_code
185756       , source_code
185757       , source_value
185758       , source_meaning
185759       , created_by
185760       , creation_date
185761       , last_update_date
185762       , last_updated_by
185763       , last_update_login
185764       , program_update_date
185765       , program_application_id
185766       , program_id
185767       , request_id
185768 )
185769 SELECT  event_id
185770       , p_target_ledger_id
185771       , p_sla_ledger_id
185772       , p_language
185773       , object_name
185774       , object_type_code
185775       , line_number
185776       , source_application_id
185777       , source_type_code
185778       , source_code
185779       , SUBSTR(source_value,1,1996)
185780       , SUBSTR(source_meaning,1,200)
185781       , xla_environment_pkg.g_Usr_Id
185782       , TRUNC(SYSDATE)
185783       , TRUNC(SYSDATE)
185784       , xla_environment_pkg.g_Usr_Id
185785       , xla_environment_pkg.g_Login_Id
185786       , TRUNC(SYSDATE)
185787       , xla_environment_pkg.g_Prog_Appl_Id
185788       , xla_environment_pkg.g_Prog_Id
185789       , xla_environment_pkg.g_Req_Id
185790   FROM (
185791        SELECT xet.event_id                  event_id
185792             , l2.line_number                 line_number
185793             , CASE r
185794                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
185795                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
185796                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
185797                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
185798                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
185799                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
185800                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
185801                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
185802                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
185803                 
185804                ELSE null
185805               END                           object_name
185806             , CASE r
185807                 WHEN 1 THEN 'LINE' 
185808                 WHEN 2 THEN 'LINE' 
185809                 WHEN 3 THEN 'LINE' 
185810                 WHEN 4 THEN 'LINE' 
185811                 WHEN 5 THEN 'LINE' 
185812                 WHEN 6 THEN 'LINE' 
185813                 WHEN 7 THEN 'LINE' 
185814                 WHEN 8 THEN 'LINE' 
185815                 WHEN 9 THEN 'LINE' 
185816                 
185817                 ELSE null
185818               END                           object_type_code
185819             , CASE r
185820                 WHEN 1 THEN '707' 
185821                 WHEN 2 THEN '707' 
185822                 WHEN 3 THEN '707' 
185823                 WHEN 4 THEN '707' 
185824                 WHEN 5 THEN '707' 
185825                 WHEN 6 THEN '707' 
185826                 WHEN 7 THEN '707' 
185827                 WHEN 8 THEN '707' 
185828                 WHEN 9 THEN '707' 
185829                 
185830                 ELSE null
185831               END                           source_application_id
185832             , 'S'             source_type_code
185833             , CASE r
185834                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
185835                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
185836                 WHEN 3 THEN 'CURRENCY_CODE' 
185837                 WHEN 4 THEN 'ENTERED_AMOUNT' 
185838                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
185839                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
185840                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
185841                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
185842                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
185843                 
185844                 ELSE null
185845               END                           source_code
185846             , CASE r
185847                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
185848                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
185849                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
185850                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
185851                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
185852                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
185853                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
185854                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
185855                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
185856                 
185857                 ELSE null
185858               END                           source_value
185859             , null              source_meaning
185860          FROM  xla_events_gt     xet  
185861         , CST_XLA_INV_LINES_V  l2
185862             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
185863         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
185864           AND xet.event_type_code = C_EVENT_TYPE_CODE
185865             AND l2.event_id          = xet.event_id
185866 
185867 )
185868 ;
185869 --
185870 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185871 
185872       trace
185873          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
185874          ,p_level    => C_LEVEL_STATEMENT
185875          ,p_module   => l_log_module);
185876 
185877 END IF;
185878 
185879 
185880 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
185881       trace
185882          (p_msg      => 'END of insert_sources_291'
185883          ,p_level    => C_LEVEL_PROCEDURE
185884          ,p_module   => l_log_module);
185885 END IF;
185886 EXCEPTION
185887   WHEN xla_exceptions_pkg.application_exception THEN
185888       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
185889             trace
185890                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
185891                ,p_level    => C_LEVEL_EXCEPTION
185892                ,p_module   => l_log_module);
185893       END IF;
185894       RAISE;
185895   WHEN OTHERS THEN
185896       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
185897             trace
185898                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
185899                ,p_level    => C_LEVEL_EXCEPTION
185900                ,p_module   => l_log_module);
185901        END IF;
185902        xla_exceptions_pkg.raise_message
185903            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_291');
185904 END insert_sources_291;
185905 --
185906 
185907 ---------------------------------------
185908 --
185909 -- PRIVATE FUNCTION
185910 --         EventType_291
185911 --
185912 ----------------------------------------
185913 --
185914 FUNCTION EventType_291
185915        (p_application_id         IN NUMBER
185916        ,p_base_ledger_id         IN NUMBER
185917        ,p_target_ledger_id       IN NUMBER
185918        ,p_language               IN VARCHAR2
185919        ,p_currency_code          IN VARCHAR2
185920        ,p_sla_ledger_id          IN NUMBER
185921        ,p_pad_start_date         IN DATE
185922        ,p_pad_end_date           IN DATE
185923        ,p_primary_ledger_id      IN NUMBER)
185924 RETURN BOOLEAN IS
185925 --
185926 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_RCPT_TP';
185927 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
185928 
185929 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
185930 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
185931 --
185932 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185933 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185934 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
185935 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
185936 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185937 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
185938 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
185939 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185940 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185941 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185942 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185943 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185944 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185945 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185946 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
185947 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
185948 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
185949 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
185950 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185951 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185952 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185953 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185954 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
185955 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
185956 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
185957 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
185958 
185959 l_event_id                             NUMBER;
185960 l_previous_event_id                    NUMBER;
185961 l_first_event_id                       NUMBER;
185962 l_last_event_id                        NUMBER;
185963 
185964 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
185965 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
185966 --
185967 --
185968 l_result                    BOOLEAN := TRUE;
185969 l_rows                      NUMBER  := 1000;
185970 l_event_type_name           VARCHAR2(80) := 'User-defined Direct Interorg Receipt, Transfer Price';
185971 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
185972 l_description               VARCHAR2(4000);
185973 l_transaction_reversal      NUMBER;
185974 l_ae_header_id              NUMBER;
185975 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
185976 l_log_module                VARCHAR2(240);
185977 --
185978 l_acct_reversal_source      VARCHAR2(30);
185979 l_trx_reversal_source       VARCHAR2(30);
185980 
185981 l_continue_with_lines       BOOLEAN := TRUE;
185982 --
185983 l_acc_rev_gl_date_source    DATE;                      -- 4262811
185984 --
185985 type t_array_event_id is table of number index by binary_integer;
185986 
185987 l_rec_array_event                    t_rec_array_event;
185988 l_null_rec_array_event               t_rec_array_event;
185989 l_array_ae_header_id                 xla_number_array_type;
185990 l_actual_flag                        VARCHAR2(1) := NULL;
185991 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
185992 l_balance_type_code                  VARCHAR2(1) :=NULL;
185993 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
185994 
185995 --
185996 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
185997 --
185998 
185999 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
186000 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
186001 
186002 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
186003 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
186004 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
186005 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
186006 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
186007 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
186008 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
186009 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
186010 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
186011 
186012 l_array_source_12              t_array_source_12;
186013 l_array_source_12_meaning      t_array_lookup_meaning;
186014 l_array_source_38              t_array_source_38;
186015 l_array_source_38_meaning      t_array_lookup_meaning;
186016 
186017 l_array_source_4      t_array_source_4;
186018 l_array_source_11      t_array_source_11;
186019 l_array_source_15      t_array_source_15;
186020 l_array_source_18      t_array_source_18;
186021 l_array_source_19      t_array_source_19;
186022 l_array_source_20      t_array_source_20;
186023 l_array_source_21      t_array_source_21;
186024 l_array_source_22      t_array_source_22;
186025 l_array_source_24      t_array_source_24;
186026 
186027 --
186028 CURSOR header_cur
186029 IS
186030 SELECT /*+ leading(xet) cardinality(xet,1) */
186031 -- Event Type Code: UDIR_INTERORG_RCPT_TP
186032 -- Event Class Code: USER_DEFINE
186033     xet.entity_id
186034   , xet.legal_entity_id
186035   , xet.entity_code
186036   , xet.transaction_number
186037   , xet.event_id
186038   , xet.event_class_code
186039   , xet.event_type_code
186040   , xet.event_number
186041   , xet.event_date
186042   , xet.transaction_date
186043   , xet.reference_num_1
186044   , xet.reference_num_2
186045   , xet.reference_num_3
186046   , xet.reference_num_4
186047   , xet.reference_char_1
186048   , xet.reference_char_2
186049   , xet.reference_char_3
186050   , xet.reference_char_4
186051   , xet.reference_date_1
186052   , xet.reference_date_2
186053   , xet.reference_date_3
186054   , xet.reference_date_4
186055   , xet.event_created_by
186056   , xet.budgetary_control_flag 
186057   , h1.DISTRIBUTION_TYPE    source_12
186058   , fvl12.meaning   source_12_meaning
186059   , h1.TRANSFER_TO_GL_INDICATOR    source_38
186060   , fvl38.meaning   source_38_meaning
186061   FROM xla_events_gt     xet 
186062   , CST_XLA_INV_HEADERS_V  h1
186063   , fnd_lookup_values    fvl12
186064   , fnd_lookup_values    fvl38
186065  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
186066    and xet.event_type_code = C_EVENT_TYPE_CODE
186067    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
186068    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
186069   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
186070   AND fvl12.view_application_id(+) = 700
186071   AND fvl12.language(+)            = USERENV('LANG')
186072      AND fvl38.lookup_type(+)         = 'YES_NO'
186073   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
186074   AND fvl38.view_application_id(+) = 0
186075   AND fvl38.language(+)            = USERENV('LANG')
186076   
186077  ORDER BY event_id
186078 ;
186079 
186080 
186081 --
186082 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
186083 IS
186084 SELECT /*+ leading(xet) cardinality(xet,1) */
186085 -- Event Type Code: UDIR_INTERORG_RCPT_TP
186086 -- Event Class Code: USER_DEFINE
186087     xet.entity_id
186088    ,xet.legal_entity_id
186089    ,xet.entity_code
186090    ,xet.transaction_number
186091    ,xet.event_id
186092    ,xet.event_class_code
186093    ,xet.event_type_code
186094    ,xet.event_number
186095    ,xet.event_date
186096    ,xet.transaction_date
186097    ,xet.reference_num_1
186098    ,xet.reference_num_2
186099    ,xet.reference_num_3
186100    ,xet.reference_num_4
186101    ,xet.reference_char_1
186102    ,xet.reference_char_2
186103    ,xet.reference_char_3
186104    ,xet.reference_char_4
186105    ,xet.reference_date_1
186106    ,xet.reference_date_2
186107    ,xet.reference_date_3
186108    ,xet.reference_date_4
186109    ,xet.event_created_by
186110    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
186111   , l2.CODE_COMBINATION_ID    source_4
186112   , l2.DISTRIBUTION_IDENTIFIER    source_11
186113   , l2.CURRENCY_CODE    source_15
186114   , l2.ENTERED_AMOUNT    source_18
186115   , l2.CURRENCY_CONVERSION_DATE    source_19
186116   , l2.CURRENCY_CONVERSION_RATE    source_20
186117   , l2.CURRENCY_CONVERSION_TYPE    source_21
186118   , l2.ACCOUNTED_AMOUNT    source_22
186119   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
186120   FROM xla_events_gt     xet 
186121   , CST_XLA_INV_LINES_V  l2
186122  WHERE xet.event_id between x_first_event_id and x_last_event_id
186123    and xet.event_date between p_pad_start_date and p_pad_end_date
186124    and xet.event_type_code = C_EVENT_TYPE_CODE
186125    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
186126 ;
186127 
186128 --
186129 BEGIN
186130 IF g_log_enabled THEN
186131    l_log_module := C_DEFAULT_MODULE||'.EventType_291';
186132 END IF;
186133 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
186134    trace
186135       (p_msg      => 'BEGIN of EventType_291'
186136       ,p_level    => C_LEVEL_PROCEDURE
186137       ,p_module   => l_log_module);
186138 END IF;
186139 
186140 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186141    trace
186142       (p_msg      => 'p_application_id = '||p_application_id||
186143                      ' - p_base_ledger_id = '||p_base_ledger_id||
186144                      ' - p_target_ledger_id  = '||p_target_ledger_id||
186145                      ' - p_language = '||p_language||
186146                      ' - p_currency_code = '||p_currency_code||
186147                      ' - p_sla_ledger_id = '||p_sla_ledger_id
186148       ,p_level    => C_LEVEL_STATEMENT
186149       ,p_module   => l_log_module);
186150 END IF;
186151 --
186152 -- initialze arrays
186153 --
186154 g_array_event.DELETE;
186155 l_rec_array_event := l_null_rec_array_event;
186156 --
186157 --------------------------------------
186158 -- 4262811 Initialze MPA Line Number
186159 --------------------------------------
186160 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
186161 
186162 --
186163 
186164 --
186165 OPEN header_cur;
186166 --
186167 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186168    trace
186169    (p_msg      => 'SQL - FETCH header_cur'
186170    ,p_level    => C_LEVEL_STATEMENT
186171    ,p_module   => l_log_module);
186172 END IF;
186173 --
186174 LOOP
186175 FETCH header_cur BULK COLLECT INTO
186176         l_array_entity_id
186177       , l_array_legal_entity_id
186178       , l_array_entity_code
186179       , l_array_transaction_num
186180       , l_array_event_id
186181       , l_array_class_code
186182       , l_array_event_type
186183       , l_array_event_number
186184       , l_array_event_date
186185       , l_array_transaction_date
186186       , l_array_reference_num_1
186187       , l_array_reference_num_2
186188       , l_array_reference_num_3
186189       , l_array_reference_num_4
186190       , l_array_reference_char_1
186191       , l_array_reference_char_2
186192       , l_array_reference_char_3
186193       , l_array_reference_char_4
186194       , l_array_reference_date_1
186195       , l_array_reference_date_2
186196       , l_array_reference_date_3
186197       , l_array_reference_date_4
186198       , l_array_event_created_by
186199       , l_array_budgetary_control_flag 
186200       , l_array_source_12
186201       , l_array_source_12_meaning
186202       , l_array_source_38
186203       , l_array_source_38_meaning
186204       LIMIT l_rows;
186205 --
186206 IF (C_LEVEL_EVENT >= g_log_level) THEN
186207    trace
186208    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
186209    ,p_level    => C_LEVEL_EVENT
186210    ,p_module   => l_log_module);
186211 END IF;
186212 --
186213 EXIT WHEN l_array_entity_id.COUNT = 0;
186214 
186215 -- initialize arrays
186216 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
186217 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
186218 
186219 --
186220 -- Bug 4458708
186221 --
186222 XLA_AE_LINES_PKG.g_LineNumber := 0;
186223 
186224 
186225 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
186226 g_last_hdr_idx := l_array_event_id.LAST;
186227 --
186228 -- loop for the headers. Each iteration is for each header extract row
186229 -- fetched in header cursor
186230 --
186231 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
186232 
186233 --
186234 -- set event info as cache for other routines to refer event attributes
186235 --
186236 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
186237    (p_application_id           => p_application_id
186238    ,p_primary_ledger_id        => p_primary_ledger_id
186239    ,p_base_ledger_id           => p_base_ledger_id
186240    ,p_target_ledger_id         => p_target_ledger_id
186241    ,p_entity_id                => l_array_entity_id(hdr_idx)
186242    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
186243    ,p_entity_code              => l_array_entity_code(hdr_idx)
186244    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
186245    ,p_event_id                 => l_array_event_id(hdr_idx)
186246    ,p_event_class_code         => l_array_class_code(hdr_idx)
186247    ,p_event_type_code          => l_array_event_type(hdr_idx)
186248    ,p_event_number             => l_array_event_number(hdr_idx)
186249    ,p_event_date               => l_array_event_date(hdr_idx)
186250    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
186251    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
186252    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
186253    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
186254    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
186255    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
186256    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
186257    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
186258    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
186259    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
186260    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
186261    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
186262    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
186263    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
186264    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
186265 
186266 --
186267 -- set the status of entry to C_VALID (0)
186268 --
186269 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
186270 
186271 --
186272 -- initialize a row for ae header
186273 --
186274 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
186275 
186276 l_event_id := l_array_event_id(hdr_idx);
186277 
186278 --
186279 -- storing the hdr_idx for event. May be used by line cursor.
186280 --
186281 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
186282 
186283 --
186284 -- store sources from header extract. This can be improved to
186285 -- store only those sources from header extract that may be used in lines
186286 --
186287 
186288 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
186289 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
186290 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
186291 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
186292 
186293 --
186294 -- initilaize the status of ae headers for diffrent balance types
186295 -- the status is initialised to C_NOT_CREATED (2)
186296 --
186297 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
186298 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
186299 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
186300 
186301 --
186302 -- call api to validate and store accounting attributes for header
186303 --
186304 
186305 ------------------------------------------------------------
186306 -- Accrual Reversal : to get date for Standard Source (NONE)
186307 ------------------------------------------------------------
186308 l_acc_rev_gl_date_source := NULL;
186309 
186310      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
186311       l_rec_acct_attrs.array_date_value(1) := 
186312 xla_ae_sources_pkg.GetSystemSourceDate(
186313    p_source_code           => 'XLA_REFERENCE_DATE_1'
186314  , p_source_type_code      => 'Y'
186315  , p_source_application_id =>  602
186316 );
186317      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
186318       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
186319 
186320 
186321 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
186322 
186323 XLA_AE_HEADER_PKG.SetJeCategoryName;
186324 
186325 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
186326 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
186327 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
186328 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
186329 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
186330 
186331 
186332 -- No header level analytical criteria
186333 
186334 --
186335 --accounting attribute enhancement, bug 3612931
186336 --
186337 l_trx_reversal_source := SUBSTR(NULL, 1,30);
186338 
186339 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
186340    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
186341 
186342    xla_accounting_err_pkg.build_message
186343       (p_appli_s_name            => 'XLA'
186344       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
186345       ,p_token_1                 => 'ACCT_ATTR_NAME'
186346       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
186347       ,p_token_2                 => 'PRODUCT_NAME'
186348       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
186349       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
186350       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
186351       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
186352 
186353 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
186354    --
186355    -- following sets the accounting attributes needed to reverse
186356    -- accounting for a distributeion
186357    --
186358    xla_ae_lines_pkg.SetTrxReversalAttrs
186359       (p_event_id              => l_event_id
186360       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
186361       ,p_trx_reversal_source   => l_trx_reversal_source);
186362 
186363 END IF;
186364 
186365 
186366 ----------------------------------------------------------------
186367 -- 4262811 -  update the header statuses to invalid in need be
186368 ----------------------------------------------------------------
186369 --
186370 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
186371 
186372 
186373   -----------------------------------------------
186374   -- No accrual reversal for the event class/type
186375   -----------------------------------------------
186376 ----------------------------------------------------------------
186377 
186378 --
186379 -- this ends the header loop iteration for one bulk fetch
186380 --
186381 END LOOP;
186382 
186383 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
186384 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
186385 
186386 --
186387 -- insert dummy rows into lines gt table that were created due to
186388 -- transaction reversals
186389 --
186390 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
186391    l_result := XLA_AE_LINES_PKG.InsertLines;
186392 END IF;
186393 
186394 --
186395 -- reset the temp_line_num for each set of events fetched from header
186396 -- cursor rather than doing it for each new event in line cursor
186397 -- Bug 3939231
186398 --
186399 xla_ae_lines_pkg.g_temp_line_num := 0;
186400 
186401 
186402 
186403 --
186404 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
186405 --
186406 --
186407 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186408 
186409       trace
186410          (p_msg      => 'SQL - FETCH line_cur'
186411          ,p_level    => C_LEVEL_STATEMENT
186412          ,p_module   => l_log_module);
186413 
186414 END IF;
186415 --
186416 --
186417 LOOP
186418   --
186419   FETCH line_cur BULK COLLECT INTO
186420         l_array_entity_id
186421       , l_array_legal_entity_id
186422       , l_array_entity_code
186423       , l_array_transaction_num
186424       , l_array_event_id
186425       , l_array_class_code
186426       , l_array_event_type
186427       , l_array_event_number
186428       , l_array_event_date
186429       , l_array_transaction_date
186430       , l_array_reference_num_1
186431       , l_array_reference_num_2
186432       , l_array_reference_num_3
186433       , l_array_reference_num_4
186434       , l_array_reference_char_1
186435       , l_array_reference_char_2
186436       , l_array_reference_char_3
186437       , l_array_reference_char_4
186438       , l_array_reference_date_1
186439       , l_array_reference_date_2
186440       , l_array_reference_date_3
186441       , l_array_reference_date_4
186442       , l_array_event_created_by
186443       , l_array_budgetary_control_flag
186444       , l_array_extract_line_num 
186445       , l_array_source_4
186446       , l_array_source_11
186447       , l_array_source_15
186448       , l_array_source_18
186449       , l_array_source_19
186450       , l_array_source_20
186451       , l_array_source_21
186452       , l_array_source_22
186453       , l_array_source_24
186454       LIMIT l_rows;
186455 
186456   --
186457   IF (C_LEVEL_EVENT >= g_log_level) THEN
186458             trace
186459                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
186460                ,p_level    => C_LEVEL_EVENT
186461                ,p_module   => l_log_module);
186462   END IF;
186463   --
186464   EXIT WHEN l_array_entity_id.count = 0;
186465 
186466   XLA_AE_LINES_PKG.g_rec_lines := null;
186467 
186468 --
186469 -- Bug 4458708
186470 --
186471 XLA_AE_LINES_PKG.g_LineNumber := 0;
186472 --
186473 --
186474 
186475 FOR Idx IN 1..l_array_event_id.count LOOP
186476    --
186477    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
186478    --
186479    l_event_id := l_array_event_id(idx);  -- 5648433
186480 
186481    --
186482    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
186483    --
186484 
186485    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
186486              (g_array_event(l_event_id).array_value_num('header_index'))
186487          ,'N'
186488          ) <> 'Y'
186489    THEN
186490       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186491          trace
186492             (p_msg      => 'Trancaction revesal option is not Y '
186493             ,p_level    => C_LEVEL_STATEMENT
186494             ,p_module   => l_log_module);
186495       END IF;
186496 
186497 --
186498 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
186499 --
186500 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
186501 --
186502 -- set event info as cache for other routines to refer event attributes
186503 --
186504 
186505 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
186506    l_previous_event_id := l_event_id;
186507 
186508    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
186509       (p_application_id           => p_application_id
186510       ,p_primary_ledger_id        => p_primary_ledger_id
186511       ,p_base_ledger_id           => p_base_ledger_id
186512       ,p_target_ledger_id         => p_target_ledger_id
186513       ,p_entity_id                => l_array_entity_id(Idx)
186514       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
186515       ,p_entity_code              => l_array_entity_code(Idx)
186516       ,p_transaction_num          => l_array_transaction_num(Idx)
186517       ,p_event_id                 => l_array_event_id(Idx)
186518       ,p_event_class_code         => l_array_class_code(Idx)
186519       ,p_event_type_code          => l_array_event_type(Idx)
186520       ,p_event_number             => l_array_event_number(Idx)
186521       ,p_event_date               => l_array_event_date(Idx)
186522       ,p_transaction_date         => l_array_transaction_date(Idx)
186523       ,p_reference_num_1          => l_array_reference_num_1(Idx)
186524       ,p_reference_num_2          => l_array_reference_num_2(Idx)
186525       ,p_reference_num_3          => l_array_reference_num_3(Idx)
186526       ,p_reference_num_4          => l_array_reference_num_4(Idx)
186527       ,p_reference_char_1         => l_array_reference_char_1(Idx)
186528       ,p_reference_char_2         => l_array_reference_char_2(Idx)
186529       ,p_reference_char_3         => l_array_reference_char_3(Idx)
186530       ,p_reference_char_4         => l_array_reference_char_4(Idx)
186531       ,p_reference_date_1         => l_array_reference_date_1(Idx)
186532       ,p_reference_date_2         => l_array_reference_date_2(Idx)
186533       ,p_reference_date_3         => l_array_reference_date_3(Idx)
186534       ,p_reference_date_4         => l_array_reference_date_4(Idx)
186535       ,p_event_created_by         => l_array_event_created_by(Idx)
186536       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
186537        --
186538 END IF;
186539 
186540 
186541 
186542 --
186543 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
186544 
186545 l_acct_reversal_source := SUBSTR(NULL, 1,30);
186546 
186547 IF l_continue_with_lines THEN
186548    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
186549       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
186550 
186551       xla_accounting_err_pkg.build_message
186552          (p_appli_s_name            => 'XLA'
186553          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
186554          ,p_token_1                 => 'LINE_NUMBER'
186555          ,p_value_1                 => l_array_extract_line_num(Idx)
186556          ,p_token_2                 => 'PRODUCT_NAME'
186557          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
186558          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
186559          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
186560          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
186561 
186562    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
186563       --
186564       -- following sets the accounting attributes needed to reverse
186565       -- accounting for a distributeion
186566       --
186567 
186568       --
186569       -- 5217187
186570       --
186571       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
186572       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
186573                                        g_array_event(l_event_id).array_value_num('header_index'));
186574       --
186575       --
186576 
186577       -- No reversal code generated
186578 
186579       xla_ae_lines_pkg.SetAcctReversalAttrs
186580          (p_event_id             => l_event_id
186581          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
186582          ,p_calculate_acctd_flag => l_calculate_acctd_flag
186583          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
186584    END IF;
186585 
186586    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
186587        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
186588 
186589 --
186590 AcctLineType_33 (
186591  p_application_id  => p_application_id
186592  ,p_event_id     => l_event_id
186593  ,p_calculate_acctd_flag => l_calculate_acctd_flag
186594  ,p_calculate_g_l_flag => l_calculate_g_l_flag
186595  ,p_actual_flag => l_actual_flag
186596  ,p_balance_type_code => l_balance_type_code
186597  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186598  
186599  , p_source_4 => l_array_source_4(Idx)
186600  , p_source_11 => l_array_source_11(Idx)
186601  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186602  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186603  , p_source_15 => l_array_source_15(Idx)
186604  , p_source_18 => l_array_source_18(Idx)
186605  , p_source_19 => l_array_source_19(Idx)
186606  , p_source_20 => l_array_source_20(Idx)
186607  , p_source_21 => l_array_source_21(Idx)
186608  , p_source_22 => l_array_source_22(Idx)
186609  , p_source_24 => l_array_source_24(Idx)
186610  );
186611 If(l_balance_type_code = 'A') THEN
186612   l_actual_gain_loss_ref := l_gain_or_loss_ref;
186613 END IF;
186614 
186615 --
186616 
186617 
186618 --
186619 AcctLineType_69 (
186620  p_application_id  => p_application_id
186621  ,p_event_id     => l_event_id
186622  ,p_calculate_acctd_flag => l_calculate_acctd_flag
186623  ,p_calculate_g_l_flag => l_calculate_g_l_flag
186624  ,p_actual_flag => l_actual_flag
186625  ,p_balance_type_code => l_balance_type_code
186626  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186627  
186628  , p_source_4 => l_array_source_4(Idx)
186629  , p_source_11 => l_array_source_11(Idx)
186630  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186631  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186632  , p_source_15 => l_array_source_15(Idx)
186633  , p_source_18 => l_array_source_18(Idx)
186634  , p_source_19 => l_array_source_19(Idx)
186635  , p_source_20 => l_array_source_20(Idx)
186636  , p_source_21 => l_array_source_21(Idx)
186637  , p_source_22 => l_array_source_22(Idx)
186638  , p_source_24 => l_array_source_24(Idx)
186639  );
186640 If(l_balance_type_code = 'A') THEN
186641   l_actual_gain_loss_ref := l_gain_or_loss_ref;
186642 END IF;
186643 
186644 --
186645 
186646 
186647 --
186648 AcctLineType_84 (
186649  p_application_id  => p_application_id
186650  ,p_event_id     => l_event_id
186651  ,p_calculate_acctd_flag => l_calculate_acctd_flag
186652  ,p_calculate_g_l_flag => l_calculate_g_l_flag
186653  ,p_actual_flag => l_actual_flag
186654  ,p_balance_type_code => l_balance_type_code
186655  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186656  
186657  , p_source_4 => l_array_source_4(Idx)
186658  , p_source_11 => l_array_source_11(Idx)
186659  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186660  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186661  , p_source_15 => l_array_source_15(Idx)
186662  , p_source_18 => l_array_source_18(Idx)
186663  , p_source_19 => l_array_source_19(Idx)
186664  , p_source_20 => l_array_source_20(Idx)
186665  , p_source_21 => l_array_source_21(Idx)
186666  , p_source_22 => l_array_source_22(Idx)
186667  , p_source_24 => l_array_source_24(Idx)
186668  );
186669 If(l_balance_type_code = 'A') THEN
186670   l_actual_gain_loss_ref := l_gain_or_loss_ref;
186671 END IF;
186672 
186673 --
186674 
186675 
186676 --
186677 AcctLineType_102 (
186678  p_application_id  => p_application_id
186679  ,p_event_id     => l_event_id
186680  ,p_calculate_acctd_flag => l_calculate_acctd_flag
186681  ,p_calculate_g_l_flag => l_calculate_g_l_flag
186682  ,p_actual_flag => l_actual_flag
186683  ,p_balance_type_code => l_balance_type_code
186684  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186685  
186686  , p_source_4 => l_array_source_4(Idx)
186687  , p_source_11 => l_array_source_11(Idx)
186688  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186689  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186690  , p_source_15 => l_array_source_15(Idx)
186691  , p_source_18 => l_array_source_18(Idx)
186692  , p_source_19 => l_array_source_19(Idx)
186693  , p_source_20 => l_array_source_20(Idx)
186694  , p_source_21 => l_array_source_21(Idx)
186695  , p_source_22 => l_array_source_22(Idx)
186696  , p_source_24 => l_array_source_24(Idx)
186697  );
186698 If(l_balance_type_code = 'A') THEN
186699   l_actual_gain_loss_ref := l_gain_or_loss_ref;
186700 END IF;
186701 
186702 --
186703 
186704 
186705 --
186706 AcctLineType_113 (
186707  p_application_id  => p_application_id
186708  ,p_event_id     => l_event_id
186709  ,p_calculate_acctd_flag => l_calculate_acctd_flag
186710  ,p_calculate_g_l_flag => l_calculate_g_l_flag
186711  ,p_actual_flag => l_actual_flag
186712  ,p_balance_type_code => l_balance_type_code
186713  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186714  
186715  , p_source_4 => l_array_source_4(Idx)
186716  , p_source_11 => l_array_source_11(Idx)
186717  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186718  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186719  , p_source_15 => l_array_source_15(Idx)
186720  , p_source_18 => l_array_source_18(Idx)
186721  , p_source_19 => l_array_source_19(Idx)
186722  , p_source_20 => l_array_source_20(Idx)
186723  , p_source_21 => l_array_source_21(Idx)
186724  , p_source_22 => l_array_source_22(Idx)
186725  , p_source_24 => l_array_source_24(Idx)
186726  );
186727 If(l_balance_type_code = 'A') THEN
186728   l_actual_gain_loss_ref := l_gain_or_loss_ref;
186729 END IF;
186730 
186731 --
186732 
186733 
186734 --
186735 AcctLineType_158 (
186736  p_application_id  => p_application_id
186737  ,p_event_id     => l_event_id
186738  ,p_calculate_acctd_flag => l_calculate_acctd_flag
186739  ,p_calculate_g_l_flag => l_calculate_g_l_flag
186740  ,p_actual_flag => l_actual_flag
186741  ,p_balance_type_code => l_balance_type_code
186742  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186743  
186744  , p_source_4 => l_array_source_4(Idx)
186745  , p_source_11 => l_array_source_11(Idx)
186746  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186747  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186748  , p_source_15 => l_array_source_15(Idx)
186749  , p_source_18 => l_array_source_18(Idx)
186750  , p_source_19 => l_array_source_19(Idx)
186751  , p_source_20 => l_array_source_20(Idx)
186752  , p_source_21 => l_array_source_21(Idx)
186753  , p_source_22 => l_array_source_22(Idx)
186754  , p_source_24 => l_array_source_24(Idx)
186755  );
186756 If(l_balance_type_code = 'A') THEN
186757   l_actual_gain_loss_ref := l_gain_or_loss_ref;
186758 END IF;
186759 
186760 --
186761 
186762 
186763 --
186764 AcctLineType_174 (
186765  p_application_id  => p_application_id
186766  ,p_event_id     => l_event_id
186767  ,p_calculate_acctd_flag => l_calculate_acctd_flag
186768  ,p_calculate_g_l_flag => l_calculate_g_l_flag
186769  ,p_actual_flag => l_actual_flag
186770  ,p_balance_type_code => l_balance_type_code
186771  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186772  
186773  , p_source_4 => l_array_source_4(Idx)
186774  , p_source_11 => l_array_source_11(Idx)
186775  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186776  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186777  , p_source_15 => l_array_source_15(Idx)
186778  , p_source_18 => l_array_source_18(Idx)
186779  , p_source_19 => l_array_source_19(Idx)
186780  , p_source_20 => l_array_source_20(Idx)
186781  , p_source_21 => l_array_source_21(Idx)
186782  , p_source_22 => l_array_source_22(Idx)
186783  , p_source_24 => l_array_source_24(Idx)
186784  );
186785 If(l_balance_type_code = 'A') THEN
186786   l_actual_gain_loss_ref := l_gain_or_loss_ref;
186787 END IF;
186788 
186789 --
186790 
186791 
186792 --
186793 AcctLineType_204 (
186794  p_application_id  => p_application_id
186795  ,p_event_id     => l_event_id
186796  ,p_calculate_acctd_flag => l_calculate_acctd_flag
186797  ,p_calculate_g_l_flag => l_calculate_g_l_flag
186798  ,p_actual_flag => l_actual_flag
186799  ,p_balance_type_code => l_balance_type_code
186800  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186801  
186802  , p_source_4 => l_array_source_4(Idx)
186803  , p_source_11 => l_array_source_11(Idx)
186804  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186805  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186806  , p_source_15 => l_array_source_15(Idx)
186807  , p_source_18 => l_array_source_18(Idx)
186808  , p_source_19 => l_array_source_19(Idx)
186809  , p_source_20 => l_array_source_20(Idx)
186810  , p_source_21 => l_array_source_21(Idx)
186811  , p_source_22 => l_array_source_22(Idx)
186812  , p_source_24 => l_array_source_24(Idx)
186813  );
186814 If(l_balance_type_code = 'A') THEN
186815   l_actual_gain_loss_ref := l_gain_or_loss_ref;
186816 END IF;
186817 
186818 --
186819 
186820 
186821 --
186822 AcctLineType_219 (
186823  p_application_id  => p_application_id
186824  ,p_event_id     => l_event_id
186825  ,p_calculate_acctd_flag => l_calculate_acctd_flag
186826  ,p_calculate_g_l_flag => l_calculate_g_l_flag
186827  ,p_actual_flag => l_actual_flag
186828  ,p_balance_type_code => l_balance_type_code
186829  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186830  
186831  , p_source_4 => l_array_source_4(Idx)
186832  , p_source_11 => l_array_source_11(Idx)
186833  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186834  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186835  , p_source_15 => l_array_source_15(Idx)
186836  , p_source_18 => l_array_source_18(Idx)
186837  , p_source_19 => l_array_source_19(Idx)
186838  , p_source_20 => l_array_source_20(Idx)
186839  , p_source_21 => l_array_source_21(Idx)
186840  , p_source_22 => l_array_source_22(Idx)
186841  , p_source_24 => l_array_source_24(Idx)
186842  );
186843 If(l_balance_type_code = 'A') THEN
186844   l_actual_gain_loss_ref := l_gain_or_loss_ref;
186845 END IF;
186846 
186847 --
186848 
186849       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
186850       -- or secondary ledger that has different currency with primary
186851       -- or alc that is calculated by sla
186852       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
186853             (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'))
186854 
186855 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
186856 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
186857           AND (l_actual_flag = 'A')) THEN
186858         XLA_AE_LINES_PKG.CreateGainOrLossLines(
186859           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
186860          ,p_application_id   => p_application_id
186861          ,p_amb_context_code => 'DEFAULT'
186862          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
186863          ,p_event_class_code => C_EVENT_CLASS_CODE
186864          ,p_event_type_code  => C_EVENT_TYPE_CODE
186865          
186866          ,p_gain_ccid        => -1
186867          ,p_loss_ccid        => -1
186868 
186869          ,p_actual_flag      => l_actual_flag
186870          ,p_enc_flag         => null
186871          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
186872          ,p_enc_g_l_ref      => null
186873          );
186874       END IF;
186875    END IF;
186876 END IF;
186877 
186878    ELSE
186879       --
186880       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
186881       --
186882       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186883          trace
186884             (p_msg      => 'Trancaction revesal option is Y'
186885             ,p_level    => C_LEVEL_STATEMENT
186886             ,p_module   => l_log_module);
186887       END IF;
186888    END IF;
186889 
186890 END LOOP;
186891 l_result := XLA_AE_LINES_PKG.InsertLines ;
186892 end loop;
186893 close line_cur;
186894 
186895 
186896 --
186897 -- insert headers into xla_ae_headers_gt table
186898 --
186899 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
186900 
186901 -- insert into errors table here.
186902 
186903 END LOOP;
186904 
186905 --
186906 -- 4865292
186907 --
186908 -- Compare g_hdr_extract_count with event count in
186909 -- CreateHeadersAndLines.
186910 --
186911 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
186912 
186913 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186914    trace (p_msg     => '# rows extracted from header extract objects '
186915                     || ' (running total): '
186916                     || g_hdr_extract_count
186917          ,p_level   => C_LEVEL_STATEMENT
186918          ,p_module  => l_log_module);
186919 END IF;
186920 
186921 CLOSE header_cur;
186922 --
186923 
186924 --
186925 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
186926    trace
186927       (p_msg      => 'END of EventType_291'
186928       ,p_level    => C_LEVEL_PROCEDURE
186929       ,p_module   => l_log_module);
186930 END IF;
186931 --
186932 RETURN l_result;
186933 EXCEPTION
186934 WHEN xla_exceptions_pkg.application_exception THEN
186935    
186936 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
186937 
186938    
186939 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
186940 
186941    RAISE;
186942 
186943 WHEN NO_DATA_FOUND THEN
186944 
186945 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
186946 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
186947 
186948 FOR header_record IN header_cur
186949 LOOP
186950     l_array_header_events(header_record.event_id) := header_record.event_id;
186951 END LOOP;
186952 
186953 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
186954 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
186955 
186956 fnd_file.put_line(fnd_file.LOG, '                    ');
186957 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
186958 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
186959 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
186960 
186961 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
186962 LOOP
186963 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
186964 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
186965         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
186966 	END IF;
186967 END LOOP;
186968 
186969 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
186970 fnd_file.put_line(fnd_file.LOG, '                    ');
186971 
186972 
186973 xla_exceptions_pkg.raise_message
186974       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_291');
186975 
186976 
186977 WHEN OTHERS THEN
186978    xla_exceptions_pkg.raise_message
186979       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_291');
186980 END EventType_291;
186981 --
186982 
186983 ---------------------------------------
186984 --
186985 -- PRIVATE PROCEDURE
186986 --         insert_sources_292
186987 --
186988 ----------------------------------------
186989 --
186990 PROCEDURE insert_sources_292(
186991                                 p_target_ledger_id       IN NUMBER
186992                               , p_language               IN VARCHAR2
186993                               , p_sla_ledger_id          IN NUMBER
186994                               , p_pad_start_date         IN DATE
186995                               , p_pad_end_date           IN DATE
186996                          )
186997 IS
186998 
186999 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_SHIP';
187000 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
187001 p_apps_owner                   VARCHAR2(30);
187002 l_log_module                   VARCHAR2(240);
187003 BEGIN
187004 IF g_log_enabled THEN
187005       l_log_module := C_DEFAULT_MODULE||'.insert_sources_292';
187006 END IF;
187007 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
187008 
187009       trace
187010          (p_msg      => 'BEGIN of insert_sources_292'
187011          ,p_level    => C_LEVEL_PROCEDURE
187012          ,p_module   => l_log_module);
187013 
187014 END IF;
187015 
187016 -- select APPS owner
187017 SELECT oracle_username
187018   INTO p_apps_owner
187019   FROM fnd_oracle_userid
187020  WHERE read_only_flag = 'U'
187021 ;
187022 
187023 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187024       trace
187025          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
187026                         ' - p_language = '||p_language||
187027                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
187028                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
187029                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
187030                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
187031          ,p_level    => C_LEVEL_STATEMENT
187032          ,p_module   => l_log_module);
187033 END IF;
187034 
187035 
187036 --
187037 INSERT INTO xla_diag_sources --hdr1
187038 (
187039         event_id
187040       , ledger_id
187041       , sla_ledger_id
187042       , description_language
187043       , object_name
187044       , object_type_code
187045       , line_number
187046       , source_application_id
187047       , source_type_code
187048       , source_code
187049       , source_value
187050       , source_meaning
187051       , created_by
187052       , creation_date
187053       , last_update_date
187054       , last_updated_by
187055       , last_update_login
187056       , program_update_date
187057       , program_application_id
187058       , program_id
187059       , request_id
187060 )
187061 SELECT
187062         event_id
187063       , p_target_ledger_id
187064       , p_sla_ledger_id
187065       , p_language
187066       , object_name
187067       , object_type_code
187068       , line_number
187069       , source_application_id
187070       , source_type_code
187071       , source_code
187072       , SUBSTR(source_value ,1,1996)
187073       , SUBSTR(source_meaning,1,200)
187074       , xla_environment_pkg.g_Usr_Id
187075       , TRUNC(SYSDATE)
187076       , TRUNC(SYSDATE)
187077       , xla_environment_pkg.g_Usr_Id
187078       , xla_environment_pkg.g_Login_Id
187079       , TRUNC(SYSDATE)
187080       , xla_environment_pkg.g_Prog_Appl_Id
187081       , xla_environment_pkg.g_Prog_Id
187082       , xla_environment_pkg.g_Req_Id
187083   FROM (
187084        SELECT xet.event_id                  event_id
187085             , 0                             line_number
187086             , CASE r
187087                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
187088                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
187089                 
187090                ELSE null
187091               END                           object_name
187092             , CASE r
187093                 WHEN 1 THEN 'HEADER' 
187094                 WHEN 2 THEN 'HEADER' 
187095                 
187096                 ELSE null
187097               END                           object_type_code
187098             , CASE r
187099                 WHEN 1 THEN '707' 
187100                 WHEN 2 THEN '707' 
187101                 
187102                 ELSE null
187103               END                           source_application_id
187104             , 'S'             source_type_code
187105             , CASE r
187106                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
187107                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
187108                 
187109                 ELSE null
187110               END                           source_code
187111             , CASE r
187112                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
187113                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
187114                 
187115                 ELSE null
187116               END                           source_value
187117             , CASE r
187118                 WHEN 1 THEN fvl12.meaning
187119                 WHEN 2 THEN fvl38.meaning
187120                 
187121                 ELSE null
187122               END               source_meaning
187123         FROM xla_events_gt     xet  
187124       , CST_XLA_INV_HEADERS_V  h1
187125   , fnd_lookup_values    fvl12
187126   , fnd_lookup_values    fvl38
187127             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
187128        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
187129          AND xet.event_type_code = C_EVENT_TYPE_CODE
187130             AND h1.event_id = xet.event_id
187131    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
187132   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
187133   AND fvl12.view_application_id(+) = 700
187134   AND fvl12.language(+)            = USERENV('LANG')
187135      AND fvl38.lookup_type(+)         = 'YES_NO'
187136   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
187137   AND fvl38.view_application_id(+) = 0
187138   AND fvl38.language(+)            = USERENV('LANG')
187139   
187140 )
187141 ;
187142 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187143 
187144       trace
187145          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
187146          ,p_level    => C_LEVEL_STATEMENT
187147          ,p_module   => l_log_module);
187148 
187149 END IF;
187150 --
187151 
187152 
187153 
187154 --
187155 INSERT INTO xla_diag_sources --line1
187156 (
187157         event_id
187158       , ledger_id
187159       , sla_ledger_id
187160       , description_language
187161       , object_name
187162       , object_type_code
187163       , line_number
187164       , source_application_id
187165       , source_type_code
187166       , source_code
187167       , source_value
187168       , source_meaning
187169       , created_by
187170       , creation_date
187171       , last_update_date
187172       , last_updated_by
187173       , last_update_login
187174       , program_update_date
187175       , program_application_id
187176       , program_id
187177       , request_id
187178 )
187179 SELECT  event_id
187180       , p_target_ledger_id
187181       , p_sla_ledger_id
187182       , p_language
187183       , object_name
187184       , object_type_code
187185       , line_number
187186       , source_application_id
187187       , source_type_code
187188       , source_code
187189       , SUBSTR(source_value,1,1996)
187190       , SUBSTR(source_meaning,1,200)
187191       , xla_environment_pkg.g_Usr_Id
187192       , TRUNC(SYSDATE)
187193       , TRUNC(SYSDATE)
187194       , xla_environment_pkg.g_Usr_Id
187195       , xla_environment_pkg.g_Login_Id
187196       , TRUNC(SYSDATE)
187197       , xla_environment_pkg.g_Prog_Appl_Id
187198       , xla_environment_pkg.g_Prog_Id
187199       , xla_environment_pkg.g_Req_Id
187200   FROM (
187201        SELECT xet.event_id                  event_id
187202             , l2.line_number                 line_number
187203             , CASE r
187204                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
187205                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
187206                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
187207                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
187208                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
187209                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
187210                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
187211                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
187212                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
187213                 
187214                ELSE null
187215               END                           object_name
187216             , CASE r
187217                 WHEN 1 THEN 'LINE' 
187218                 WHEN 2 THEN 'LINE' 
187219                 WHEN 3 THEN 'LINE' 
187220                 WHEN 4 THEN 'LINE' 
187221                 WHEN 5 THEN 'LINE' 
187222                 WHEN 6 THEN 'LINE' 
187223                 WHEN 7 THEN 'LINE' 
187224                 WHEN 8 THEN 'LINE' 
187225                 WHEN 9 THEN 'LINE' 
187226                 
187227                 ELSE null
187228               END                           object_type_code
187229             , CASE r
187230                 WHEN 1 THEN '707' 
187231                 WHEN 2 THEN '707' 
187232                 WHEN 3 THEN '707' 
187233                 WHEN 4 THEN '707' 
187234                 WHEN 5 THEN '707' 
187235                 WHEN 6 THEN '707' 
187236                 WHEN 7 THEN '707' 
187237                 WHEN 8 THEN '707' 
187238                 WHEN 9 THEN '707' 
187239                 
187240                 ELSE null
187241               END                           source_application_id
187242             , 'S'             source_type_code
187243             , CASE r
187244                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
187245                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
187246                 WHEN 3 THEN 'CURRENCY_CODE' 
187247                 WHEN 4 THEN 'ENTERED_AMOUNT' 
187248                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
187249                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
187250                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
187251                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
187252                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
187253                 
187254                 ELSE null
187255               END                           source_code
187256             , CASE r
187257                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
187258                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
187259                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
187260                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
187261                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
187262                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
187263                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
187264                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
187265                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
187266                 
187267                 ELSE null
187268               END                           source_value
187269             , null              source_meaning
187270          FROM  xla_events_gt     xet  
187271         , CST_XLA_INV_LINES_V  l2
187272             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
187273         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
187274           AND xet.event_type_code = C_EVENT_TYPE_CODE
187275             AND l2.event_id          = xet.event_id
187276 
187277 )
187278 ;
187279 --
187280 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187281 
187282       trace
187283          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
187284          ,p_level    => C_LEVEL_STATEMENT
187285          ,p_module   => l_log_module);
187286 
187287 END IF;
187288 
187289 
187290 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
187291       trace
187292          (p_msg      => 'END of insert_sources_292'
187293          ,p_level    => C_LEVEL_PROCEDURE
187294          ,p_module   => l_log_module);
187295 END IF;
187296 EXCEPTION
187297   WHEN xla_exceptions_pkg.application_exception THEN
187298       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
187299             trace
187300                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
187301                ,p_level    => C_LEVEL_EXCEPTION
187302                ,p_module   => l_log_module);
187303       END IF;
187304       RAISE;
187305   WHEN OTHERS THEN
187306       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
187307             trace
187308                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
187309                ,p_level    => C_LEVEL_EXCEPTION
187310                ,p_module   => l_log_module);
187311        END IF;
187312        xla_exceptions_pkg.raise_message
187313            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_292');
187314 END insert_sources_292;
187315 --
187316 
187317 ---------------------------------------
187318 --
187319 -- PRIVATE FUNCTION
187320 --         EventType_292
187321 --
187322 ----------------------------------------
187323 --
187324 FUNCTION EventType_292
187325        (p_application_id         IN NUMBER
187326        ,p_base_ledger_id         IN NUMBER
187327        ,p_target_ledger_id       IN NUMBER
187328        ,p_language               IN VARCHAR2
187329        ,p_currency_code          IN VARCHAR2
187330        ,p_sla_ledger_id          IN NUMBER
187331        ,p_pad_start_date         IN DATE
187332        ,p_pad_end_date           IN DATE
187333        ,p_primary_ledger_id      IN NUMBER)
187334 RETURN BOOLEAN IS
187335 --
187336 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_SHIP';
187337 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
187338 
187339 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
187340 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
187341 --
187342 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
187343 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
187344 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
187345 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
187346 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
187347 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
187348 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
187349 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
187350 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
187351 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
187352 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
187353 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
187354 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
187355 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
187356 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
187357 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
187358 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
187359 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
187360 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
187361 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
187362 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
187363 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
187364 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
187365 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
187366 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
187367 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
187368 
187369 l_event_id                             NUMBER;
187370 l_previous_event_id                    NUMBER;
187371 l_first_event_id                       NUMBER;
187372 l_last_event_id                        NUMBER;
187373 
187374 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
187375 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
187376 --
187377 --
187378 l_result                    BOOLEAN := TRUE;
187379 l_rows                      NUMBER  := 1000;
187380 l_event_type_name           VARCHAR2(80) := 'User-defined Direct Interorg Shipment';
187381 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
187382 l_description               VARCHAR2(4000);
187383 l_transaction_reversal      NUMBER;
187384 l_ae_header_id              NUMBER;
187385 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
187386 l_log_module                VARCHAR2(240);
187387 --
187388 l_acct_reversal_source      VARCHAR2(30);
187389 l_trx_reversal_source       VARCHAR2(30);
187390 
187391 l_continue_with_lines       BOOLEAN := TRUE;
187392 --
187393 l_acc_rev_gl_date_source    DATE;                      -- 4262811
187394 --
187395 type t_array_event_id is table of number index by binary_integer;
187396 
187397 l_rec_array_event                    t_rec_array_event;
187398 l_null_rec_array_event               t_rec_array_event;
187399 l_array_ae_header_id                 xla_number_array_type;
187400 l_actual_flag                        VARCHAR2(1) := NULL;
187401 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
187402 l_balance_type_code                  VARCHAR2(1) :=NULL;
187403 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
187404 
187405 --
187406 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
187407 --
187408 
187409 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
187410 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
187411 
187412 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
187413 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
187414 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
187415 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
187416 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
187417 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
187418 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
187419 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
187420 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
187421 
187422 l_array_source_12              t_array_source_12;
187423 l_array_source_12_meaning      t_array_lookup_meaning;
187424 l_array_source_38              t_array_source_38;
187425 l_array_source_38_meaning      t_array_lookup_meaning;
187426 
187427 l_array_source_4      t_array_source_4;
187428 l_array_source_11      t_array_source_11;
187429 l_array_source_15      t_array_source_15;
187430 l_array_source_18      t_array_source_18;
187431 l_array_source_19      t_array_source_19;
187432 l_array_source_20      t_array_source_20;
187433 l_array_source_21      t_array_source_21;
187434 l_array_source_22      t_array_source_22;
187435 l_array_source_24      t_array_source_24;
187436 
187437 --
187438 CURSOR header_cur
187439 IS
187440 SELECT /*+ leading(xet) cardinality(xet,1) */
187441 -- Event Type Code: UDIR_INTERORG_SHIP
187442 -- Event Class Code: USER_DEFINE
187443     xet.entity_id
187444   , xet.legal_entity_id
187445   , xet.entity_code
187446   , xet.transaction_number
187447   , xet.event_id
187448   , xet.event_class_code
187449   , xet.event_type_code
187450   , xet.event_number
187451   , xet.event_date
187452   , xet.transaction_date
187453   , xet.reference_num_1
187454   , xet.reference_num_2
187455   , xet.reference_num_3
187456   , xet.reference_num_4
187457   , xet.reference_char_1
187458   , xet.reference_char_2
187459   , xet.reference_char_3
187460   , xet.reference_char_4
187461   , xet.reference_date_1
187462   , xet.reference_date_2
187463   , xet.reference_date_3
187464   , xet.reference_date_4
187465   , xet.event_created_by
187466   , xet.budgetary_control_flag 
187467   , h1.DISTRIBUTION_TYPE    source_12
187468   , fvl12.meaning   source_12_meaning
187469   , h1.TRANSFER_TO_GL_INDICATOR    source_38
187470   , fvl38.meaning   source_38_meaning
187471   FROM xla_events_gt     xet 
187472   , CST_XLA_INV_HEADERS_V  h1
187473   , fnd_lookup_values    fvl12
187474   , fnd_lookup_values    fvl38
187475  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
187476    and xet.event_type_code = C_EVENT_TYPE_CODE
187477    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
187478    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
187479   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
187480   AND fvl12.view_application_id(+) = 700
187481   AND fvl12.language(+)            = USERENV('LANG')
187482      AND fvl38.lookup_type(+)         = 'YES_NO'
187483   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
187484   AND fvl38.view_application_id(+) = 0
187485   AND fvl38.language(+)            = USERENV('LANG')
187486   
187487  ORDER BY event_id
187488 ;
187489 
187490 
187491 --
187492 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
187493 IS
187494 SELECT /*+ leading(xet) cardinality(xet,1) */
187495 -- Event Type Code: UDIR_INTERORG_SHIP
187496 -- Event Class Code: USER_DEFINE
187497     xet.entity_id
187498    ,xet.legal_entity_id
187499    ,xet.entity_code
187500    ,xet.transaction_number
187501    ,xet.event_id
187502    ,xet.event_class_code
187503    ,xet.event_type_code
187504    ,xet.event_number
187505    ,xet.event_date
187506    ,xet.transaction_date
187507    ,xet.reference_num_1
187508    ,xet.reference_num_2
187509    ,xet.reference_num_3
187510    ,xet.reference_num_4
187511    ,xet.reference_char_1
187512    ,xet.reference_char_2
187513    ,xet.reference_char_3
187514    ,xet.reference_char_4
187515    ,xet.reference_date_1
187516    ,xet.reference_date_2
187517    ,xet.reference_date_3
187518    ,xet.reference_date_4
187519    ,xet.event_created_by
187520    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
187521   , l2.CODE_COMBINATION_ID    source_4
187522   , l2.DISTRIBUTION_IDENTIFIER    source_11
187523   , l2.CURRENCY_CODE    source_15
187524   , l2.ENTERED_AMOUNT    source_18
187525   , l2.CURRENCY_CONVERSION_DATE    source_19
187526   , l2.CURRENCY_CONVERSION_RATE    source_20
187527   , l2.CURRENCY_CONVERSION_TYPE    source_21
187528   , l2.ACCOUNTED_AMOUNT    source_22
187529   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
187530   FROM xla_events_gt     xet 
187531   , CST_XLA_INV_LINES_V  l2
187532  WHERE xet.event_id between x_first_event_id and x_last_event_id
187533    and xet.event_date between p_pad_start_date and p_pad_end_date
187534    and xet.event_type_code = C_EVENT_TYPE_CODE
187535    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
187536 ;
187537 
187538 --
187539 BEGIN
187540 IF g_log_enabled THEN
187541    l_log_module := C_DEFAULT_MODULE||'.EventType_292';
187542 END IF;
187543 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
187544    trace
187545       (p_msg      => 'BEGIN of EventType_292'
187546       ,p_level    => C_LEVEL_PROCEDURE
187547       ,p_module   => l_log_module);
187548 END IF;
187549 
187550 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187551    trace
187552       (p_msg      => 'p_application_id = '||p_application_id||
187553                      ' - p_base_ledger_id = '||p_base_ledger_id||
187554                      ' - p_target_ledger_id  = '||p_target_ledger_id||
187555                      ' - p_language = '||p_language||
187556                      ' - p_currency_code = '||p_currency_code||
187557                      ' - p_sla_ledger_id = '||p_sla_ledger_id
187558       ,p_level    => C_LEVEL_STATEMENT
187559       ,p_module   => l_log_module);
187560 END IF;
187561 --
187562 -- initialze arrays
187563 --
187564 g_array_event.DELETE;
187565 l_rec_array_event := l_null_rec_array_event;
187566 --
187567 --------------------------------------
187568 -- 4262811 Initialze MPA Line Number
187569 --------------------------------------
187570 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
187571 
187572 --
187573 
187574 --
187575 OPEN header_cur;
187576 --
187577 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187578    trace
187579    (p_msg      => 'SQL - FETCH header_cur'
187580    ,p_level    => C_LEVEL_STATEMENT
187581    ,p_module   => l_log_module);
187582 END IF;
187583 --
187584 LOOP
187585 FETCH header_cur BULK COLLECT INTO
187586         l_array_entity_id
187587       , l_array_legal_entity_id
187588       , l_array_entity_code
187589       , l_array_transaction_num
187590       , l_array_event_id
187591       , l_array_class_code
187592       , l_array_event_type
187593       , l_array_event_number
187594       , l_array_event_date
187595       , l_array_transaction_date
187596       , l_array_reference_num_1
187597       , l_array_reference_num_2
187598       , l_array_reference_num_3
187599       , l_array_reference_num_4
187600       , l_array_reference_char_1
187601       , l_array_reference_char_2
187602       , l_array_reference_char_3
187603       , l_array_reference_char_4
187604       , l_array_reference_date_1
187605       , l_array_reference_date_2
187606       , l_array_reference_date_3
187607       , l_array_reference_date_4
187608       , l_array_event_created_by
187609       , l_array_budgetary_control_flag 
187610       , l_array_source_12
187611       , l_array_source_12_meaning
187612       , l_array_source_38
187613       , l_array_source_38_meaning
187614       LIMIT l_rows;
187615 --
187616 IF (C_LEVEL_EVENT >= g_log_level) THEN
187617    trace
187618    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
187619    ,p_level    => C_LEVEL_EVENT
187620    ,p_module   => l_log_module);
187621 END IF;
187622 --
187623 EXIT WHEN l_array_entity_id.COUNT = 0;
187624 
187625 -- initialize arrays
187626 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
187627 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
187628 
187629 --
187630 -- Bug 4458708
187631 --
187632 XLA_AE_LINES_PKG.g_LineNumber := 0;
187633 
187634 
187635 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
187636 g_last_hdr_idx := l_array_event_id.LAST;
187637 --
187638 -- loop for the headers. Each iteration is for each header extract row
187639 -- fetched in header cursor
187640 --
187641 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
187642 
187643 --
187644 -- set event info as cache for other routines to refer event attributes
187645 --
187646 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
187647    (p_application_id           => p_application_id
187648    ,p_primary_ledger_id        => p_primary_ledger_id
187649    ,p_base_ledger_id           => p_base_ledger_id
187650    ,p_target_ledger_id         => p_target_ledger_id
187651    ,p_entity_id                => l_array_entity_id(hdr_idx)
187652    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
187653    ,p_entity_code              => l_array_entity_code(hdr_idx)
187654    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
187655    ,p_event_id                 => l_array_event_id(hdr_idx)
187656    ,p_event_class_code         => l_array_class_code(hdr_idx)
187657    ,p_event_type_code          => l_array_event_type(hdr_idx)
187658    ,p_event_number             => l_array_event_number(hdr_idx)
187659    ,p_event_date               => l_array_event_date(hdr_idx)
187660    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
187661    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
187662    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
187663    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
187664    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
187665    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
187666    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
187667    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
187668    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
187669    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
187670    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
187671    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
187672    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
187673    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
187674    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
187675 
187676 --
187677 -- set the status of entry to C_VALID (0)
187678 --
187679 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
187680 
187681 --
187682 -- initialize a row for ae header
187683 --
187684 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
187685 
187686 l_event_id := l_array_event_id(hdr_idx);
187687 
187688 --
187689 -- storing the hdr_idx for event. May be used by line cursor.
187690 --
187691 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
187692 
187693 --
187694 -- store sources from header extract. This can be improved to
187695 -- store only those sources from header extract that may be used in lines
187696 --
187697 
187698 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
187699 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
187700 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
187701 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
187702 
187703 --
187704 -- initilaize the status of ae headers for diffrent balance types
187705 -- the status is initialised to C_NOT_CREATED (2)
187706 --
187707 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
187708 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
187709 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
187710 
187711 --
187712 -- call api to validate and store accounting attributes for header
187713 --
187714 
187715 ------------------------------------------------------------
187716 -- Accrual Reversal : to get date for Standard Source (NONE)
187717 ------------------------------------------------------------
187718 l_acc_rev_gl_date_source := NULL;
187719 
187720      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
187721       l_rec_acct_attrs.array_date_value(1) := 
187722 xla_ae_sources_pkg.GetSystemSourceDate(
187723    p_source_code           => 'XLA_REFERENCE_DATE_1'
187724  , p_source_type_code      => 'Y'
187725  , p_source_application_id =>  602
187726 );
187727      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
187728       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
187729 
187730 
187731 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
187732 
187733 XLA_AE_HEADER_PKG.SetJeCategoryName;
187734 
187735 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
187736 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
187737 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
187738 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
187739 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
187740 
187741 
187742 -- No header level analytical criteria
187743 
187744 --
187745 --accounting attribute enhancement, bug 3612931
187746 --
187747 l_trx_reversal_source := SUBSTR(NULL, 1,30);
187748 
187749 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
187750    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
187751 
187752    xla_accounting_err_pkg.build_message
187753       (p_appli_s_name            => 'XLA'
187754       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
187755       ,p_token_1                 => 'ACCT_ATTR_NAME'
187756       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
187757       ,p_token_2                 => 'PRODUCT_NAME'
187758       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
187759       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
187760       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
187761       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
187762 
187763 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
187764    --
187765    -- following sets the accounting attributes needed to reverse
187766    -- accounting for a distributeion
187767    --
187768    xla_ae_lines_pkg.SetTrxReversalAttrs
187769       (p_event_id              => l_event_id
187770       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
187771       ,p_trx_reversal_source   => l_trx_reversal_source);
187772 
187773 END IF;
187774 
187775 
187776 ----------------------------------------------------------------
187777 -- 4262811 -  update the header statuses to invalid in need be
187778 ----------------------------------------------------------------
187779 --
187780 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
187781 
187782 
187783   -----------------------------------------------
187784   -- No accrual reversal for the event class/type
187785   -----------------------------------------------
187786 ----------------------------------------------------------------
187787 
187788 --
187789 -- this ends the header loop iteration for one bulk fetch
187790 --
187791 END LOOP;
187792 
187793 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
187794 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
187795 
187796 --
187797 -- insert dummy rows into lines gt table that were created due to
187798 -- transaction reversals
187799 --
187800 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
187801    l_result := XLA_AE_LINES_PKG.InsertLines;
187802 END IF;
187803 
187804 --
187805 -- reset the temp_line_num for each set of events fetched from header
187806 -- cursor rather than doing it for each new event in line cursor
187807 -- Bug 3939231
187808 --
187809 xla_ae_lines_pkg.g_temp_line_num := 0;
187810 
187811 
187812 
187813 --
187814 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
187815 --
187816 --
187817 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187818 
187819       trace
187820          (p_msg      => 'SQL - FETCH line_cur'
187821          ,p_level    => C_LEVEL_STATEMENT
187822          ,p_module   => l_log_module);
187823 
187824 END IF;
187825 --
187826 --
187827 LOOP
187828   --
187829   FETCH line_cur BULK COLLECT INTO
187830         l_array_entity_id
187831       , l_array_legal_entity_id
187832       , l_array_entity_code
187833       , l_array_transaction_num
187834       , l_array_event_id
187835       , l_array_class_code
187836       , l_array_event_type
187837       , l_array_event_number
187838       , l_array_event_date
187839       , l_array_transaction_date
187840       , l_array_reference_num_1
187841       , l_array_reference_num_2
187842       , l_array_reference_num_3
187843       , l_array_reference_num_4
187844       , l_array_reference_char_1
187845       , l_array_reference_char_2
187846       , l_array_reference_char_3
187847       , l_array_reference_char_4
187848       , l_array_reference_date_1
187849       , l_array_reference_date_2
187850       , l_array_reference_date_3
187851       , l_array_reference_date_4
187852       , l_array_event_created_by
187853       , l_array_budgetary_control_flag
187854       , l_array_extract_line_num 
187855       , l_array_source_4
187856       , l_array_source_11
187857       , l_array_source_15
187858       , l_array_source_18
187859       , l_array_source_19
187860       , l_array_source_20
187861       , l_array_source_21
187862       , l_array_source_22
187863       , l_array_source_24
187864       LIMIT l_rows;
187865 
187866   --
187867   IF (C_LEVEL_EVENT >= g_log_level) THEN
187868             trace
187869                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
187870                ,p_level    => C_LEVEL_EVENT
187871                ,p_module   => l_log_module);
187872   END IF;
187873   --
187874   EXIT WHEN l_array_entity_id.count = 0;
187875 
187876   XLA_AE_LINES_PKG.g_rec_lines := null;
187877 
187878 --
187879 -- Bug 4458708
187880 --
187881 XLA_AE_LINES_PKG.g_LineNumber := 0;
187882 --
187883 --
187884 
187885 FOR Idx IN 1..l_array_event_id.count LOOP
187886    --
187887    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
187888    --
187889    l_event_id := l_array_event_id(idx);  -- 5648433
187890 
187891    --
187892    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
187893    --
187894 
187895    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
187896              (g_array_event(l_event_id).array_value_num('header_index'))
187897          ,'N'
187898          ) <> 'Y'
187899    THEN
187900       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187901          trace
187902             (p_msg      => 'Trancaction revesal option is not Y '
187903             ,p_level    => C_LEVEL_STATEMENT
187904             ,p_module   => l_log_module);
187905       END IF;
187906 
187907 --
187908 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
187909 --
187910 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
187911 --
187912 -- set event info as cache for other routines to refer event attributes
187913 --
187914 
187915 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
187916    l_previous_event_id := l_event_id;
187917 
187918    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
187919       (p_application_id           => p_application_id
187920       ,p_primary_ledger_id        => p_primary_ledger_id
187921       ,p_base_ledger_id           => p_base_ledger_id
187922       ,p_target_ledger_id         => p_target_ledger_id
187923       ,p_entity_id                => l_array_entity_id(Idx)
187924       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
187925       ,p_entity_code              => l_array_entity_code(Idx)
187926       ,p_transaction_num          => l_array_transaction_num(Idx)
187927       ,p_event_id                 => l_array_event_id(Idx)
187928       ,p_event_class_code         => l_array_class_code(Idx)
187929       ,p_event_type_code          => l_array_event_type(Idx)
187930       ,p_event_number             => l_array_event_number(Idx)
187931       ,p_event_date               => l_array_event_date(Idx)
187932       ,p_transaction_date         => l_array_transaction_date(Idx)
187933       ,p_reference_num_1          => l_array_reference_num_1(Idx)
187934       ,p_reference_num_2          => l_array_reference_num_2(Idx)
187935       ,p_reference_num_3          => l_array_reference_num_3(Idx)
187936       ,p_reference_num_4          => l_array_reference_num_4(Idx)
187937       ,p_reference_char_1         => l_array_reference_char_1(Idx)
187938       ,p_reference_char_2         => l_array_reference_char_2(Idx)
187939       ,p_reference_char_3         => l_array_reference_char_3(Idx)
187940       ,p_reference_char_4         => l_array_reference_char_4(Idx)
187941       ,p_reference_date_1         => l_array_reference_date_1(Idx)
187942       ,p_reference_date_2         => l_array_reference_date_2(Idx)
187943       ,p_reference_date_3         => l_array_reference_date_3(Idx)
187944       ,p_reference_date_4         => l_array_reference_date_4(Idx)
187945       ,p_event_created_by         => l_array_event_created_by(Idx)
187946       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
187947        --
187948 END IF;
187949 
187950 
187951 
187952 --
187953 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
187954 
187955 l_acct_reversal_source := SUBSTR(NULL, 1,30);
187956 
187957 IF l_continue_with_lines THEN
187958    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
187959       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
187960 
187961       xla_accounting_err_pkg.build_message
187962          (p_appli_s_name            => 'XLA'
187963          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
187964          ,p_token_1                 => 'LINE_NUMBER'
187965          ,p_value_1                 => l_array_extract_line_num(Idx)
187966          ,p_token_2                 => 'PRODUCT_NAME'
187967          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
187968          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
187969          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
187970          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
187971 
187972    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
187973       --
187974       -- following sets the accounting attributes needed to reverse
187975       -- accounting for a distributeion
187976       --
187977 
187978       --
187979       -- 5217187
187980       --
187981       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
187982       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
187983                                        g_array_event(l_event_id).array_value_num('header_index'));
187984       --
187985       --
187986 
187987       -- No reversal code generated
187988 
187989       xla_ae_lines_pkg.SetAcctReversalAttrs
187990          (p_event_id             => l_event_id
187991          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
187992          ,p_calculate_acctd_flag => l_calculate_acctd_flag
187993          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
187994    END IF;
187995 
187996    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
187997        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
187998 
187999 --
188000 AcctLineType_71 (
188001  p_application_id  => p_application_id
188002  ,p_event_id     => l_event_id
188003  ,p_calculate_acctd_flag => l_calculate_acctd_flag
188004  ,p_calculate_g_l_flag => l_calculate_g_l_flag
188005  ,p_actual_flag => l_actual_flag
188006  ,p_balance_type_code => l_balance_type_code
188007  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188008  
188009  , p_source_4 => l_array_source_4(Idx)
188010  , p_source_11 => l_array_source_11(Idx)
188011  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
188012  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
188013  , p_source_15 => l_array_source_15(Idx)
188014  , p_source_18 => l_array_source_18(Idx)
188015  , p_source_19 => l_array_source_19(Idx)
188016  , p_source_20 => l_array_source_20(Idx)
188017  , p_source_21 => l_array_source_21(Idx)
188018  , p_source_22 => l_array_source_22(Idx)
188019  , p_source_24 => l_array_source_24(Idx)
188020  );
188021 If(l_balance_type_code = 'A') THEN
188022   l_actual_gain_loss_ref := l_gain_or_loss_ref;
188023 END IF;
188024 
188025 --
188026 
188027 
188028 --
188029 AcctLineType_78 (
188030  p_application_id  => p_application_id
188031  ,p_event_id     => l_event_id
188032  ,p_calculate_acctd_flag => l_calculate_acctd_flag
188033  ,p_calculate_g_l_flag => l_calculate_g_l_flag
188034  ,p_actual_flag => l_actual_flag
188035  ,p_balance_type_code => l_balance_type_code
188036  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188037  
188038  , p_source_4 => l_array_source_4(Idx)
188039  , p_source_11 => l_array_source_11(Idx)
188040  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
188041  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
188042  , p_source_15 => l_array_source_15(Idx)
188043  , p_source_18 => l_array_source_18(Idx)
188044  , p_source_19 => l_array_source_19(Idx)
188045  , p_source_20 => l_array_source_20(Idx)
188046  , p_source_21 => l_array_source_21(Idx)
188047  , p_source_22 => l_array_source_22(Idx)
188048  , p_source_24 => l_array_source_24(Idx)
188049  );
188050 If(l_balance_type_code = 'A') THEN
188051   l_actual_gain_loss_ref := l_gain_or_loss_ref;
188052 END IF;
188053 
188054 --
188055 
188056 
188057 --
188058 AcctLineType_91 (
188059  p_application_id  => p_application_id
188060  ,p_event_id     => l_event_id
188061  ,p_calculate_acctd_flag => l_calculate_acctd_flag
188062  ,p_calculate_g_l_flag => l_calculate_g_l_flag
188063  ,p_actual_flag => l_actual_flag
188064  ,p_balance_type_code => l_balance_type_code
188065  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188066  
188067  , p_source_4 => l_array_source_4(Idx)
188068  , p_source_11 => l_array_source_11(Idx)
188069  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
188070  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
188071  , p_source_15 => l_array_source_15(Idx)
188072  , p_source_18 => l_array_source_18(Idx)
188073  , p_source_19 => l_array_source_19(Idx)
188074  , p_source_20 => l_array_source_20(Idx)
188075  , p_source_21 => l_array_source_21(Idx)
188076  , p_source_22 => l_array_source_22(Idx)
188077  , p_source_24 => l_array_source_24(Idx)
188078  );
188079 If(l_balance_type_code = 'A') THEN
188080   l_actual_gain_loss_ref := l_gain_or_loss_ref;
188081 END IF;
188082 
188083 --
188084 
188085 
188086 --
188087 AcctLineType_106 (
188088  p_application_id  => p_application_id
188089  ,p_event_id     => l_event_id
188090  ,p_calculate_acctd_flag => l_calculate_acctd_flag
188091  ,p_calculate_g_l_flag => l_calculate_g_l_flag
188092  ,p_actual_flag => l_actual_flag
188093  ,p_balance_type_code => l_balance_type_code
188094  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188095  
188096  , p_source_4 => l_array_source_4(Idx)
188097  , p_source_11 => l_array_source_11(Idx)
188098  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
188099  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
188100  , p_source_15 => l_array_source_15(Idx)
188101  , p_source_18 => l_array_source_18(Idx)
188102  , p_source_19 => l_array_source_19(Idx)
188103  , p_source_20 => l_array_source_20(Idx)
188104  , p_source_21 => l_array_source_21(Idx)
188105  , p_source_22 => l_array_source_22(Idx)
188106  , p_source_24 => l_array_source_24(Idx)
188107  );
188108 If(l_balance_type_code = 'A') THEN
188109   l_actual_gain_loss_ref := l_gain_or_loss_ref;
188110 END IF;
188111 
188112 --
188113 
188114 
188115 --
188116 AcctLineType_111 (
188117  p_application_id  => p_application_id
188118  ,p_event_id     => l_event_id
188119  ,p_calculate_acctd_flag => l_calculate_acctd_flag
188120  ,p_calculate_g_l_flag => l_calculate_g_l_flag
188121  ,p_actual_flag => l_actual_flag
188122  ,p_balance_type_code => l_balance_type_code
188123  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188124  
188125  , p_source_4 => l_array_source_4(Idx)
188126  , p_source_11 => l_array_source_11(Idx)
188127  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
188128  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
188129  , p_source_15 => l_array_source_15(Idx)
188130  , p_source_18 => l_array_source_18(Idx)
188131  , p_source_19 => l_array_source_19(Idx)
188132  , p_source_20 => l_array_source_20(Idx)
188133  , p_source_21 => l_array_source_21(Idx)
188134  , p_source_22 => l_array_source_22(Idx)
188135  , p_source_24 => l_array_source_24(Idx)
188136  );
188137 If(l_balance_type_code = 'A') THEN
188138   l_actual_gain_loss_ref := l_gain_or_loss_ref;
188139 END IF;
188140 
188141 --
188142 
188143 
188144 --
188145 AcctLineType_154 (
188146  p_application_id  => p_application_id
188147  ,p_event_id     => l_event_id
188148  ,p_calculate_acctd_flag => l_calculate_acctd_flag
188149  ,p_calculate_g_l_flag => l_calculate_g_l_flag
188150  ,p_actual_flag => l_actual_flag
188151  ,p_balance_type_code => l_balance_type_code
188152  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188153  
188154  , p_source_4 => l_array_source_4(Idx)
188155  , p_source_11 => l_array_source_11(Idx)
188156  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
188157  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
188158  , p_source_15 => l_array_source_15(Idx)
188159  , p_source_18 => l_array_source_18(Idx)
188160  , p_source_19 => l_array_source_19(Idx)
188161  , p_source_20 => l_array_source_20(Idx)
188162  , p_source_21 => l_array_source_21(Idx)
188163  , p_source_22 => l_array_source_22(Idx)
188164  , p_source_24 => l_array_source_24(Idx)
188165  );
188166 If(l_balance_type_code = 'A') THEN
188167   l_actual_gain_loss_ref := l_gain_or_loss_ref;
188168 END IF;
188169 
188170 --
188171 
188172 
188173 --
188174 AcctLineType_178 (
188175  p_application_id  => p_application_id
188176  ,p_event_id     => l_event_id
188177  ,p_calculate_acctd_flag => l_calculate_acctd_flag
188178  ,p_calculate_g_l_flag => l_calculate_g_l_flag
188179  ,p_actual_flag => l_actual_flag
188180  ,p_balance_type_code => l_balance_type_code
188181  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188182  
188183  , p_source_4 => l_array_source_4(Idx)
188184  , p_source_11 => l_array_source_11(Idx)
188185  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
188186  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
188187  , p_source_15 => l_array_source_15(Idx)
188188  , p_source_18 => l_array_source_18(Idx)
188189  , p_source_19 => l_array_source_19(Idx)
188190  , p_source_20 => l_array_source_20(Idx)
188191  , p_source_21 => l_array_source_21(Idx)
188192  , p_source_22 => l_array_source_22(Idx)
188193  , p_source_24 => l_array_source_24(Idx)
188194  );
188195 If(l_balance_type_code = 'A') THEN
188196   l_actual_gain_loss_ref := l_gain_or_loss_ref;
188197 END IF;
188198 
188199 --
188200 
188201 
188202 --
188203 AcctLineType_194 (
188204  p_application_id  => p_application_id
188205  ,p_event_id     => l_event_id
188206  ,p_calculate_acctd_flag => l_calculate_acctd_flag
188207  ,p_calculate_g_l_flag => l_calculate_g_l_flag
188208  ,p_actual_flag => l_actual_flag
188209  ,p_balance_type_code => l_balance_type_code
188210  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188211  
188212  , p_source_4 => l_array_source_4(Idx)
188213  , p_source_11 => l_array_source_11(Idx)
188214  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
188215  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
188216  , p_source_15 => l_array_source_15(Idx)
188217  , p_source_18 => l_array_source_18(Idx)
188218  , p_source_19 => l_array_source_19(Idx)
188219  , p_source_20 => l_array_source_20(Idx)
188220  , p_source_21 => l_array_source_21(Idx)
188221  , p_source_22 => l_array_source_22(Idx)
188222  , p_source_24 => l_array_source_24(Idx)
188223  );
188224 If(l_balance_type_code = 'A') THEN
188225   l_actual_gain_loss_ref := l_gain_or_loss_ref;
188226 END IF;
188227 
188228 --
188229 
188230 
188231 --
188232 AcctLineType_229 (
188233  p_application_id  => p_application_id
188234  ,p_event_id     => l_event_id
188235  ,p_calculate_acctd_flag => l_calculate_acctd_flag
188236  ,p_calculate_g_l_flag => l_calculate_g_l_flag
188237  ,p_actual_flag => l_actual_flag
188238  ,p_balance_type_code => l_balance_type_code
188239  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188240  
188241  , p_source_4 => l_array_source_4(Idx)
188242  , p_source_11 => l_array_source_11(Idx)
188243  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
188244  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
188245  , p_source_15 => l_array_source_15(Idx)
188246  , p_source_18 => l_array_source_18(Idx)
188247  , p_source_19 => l_array_source_19(Idx)
188248  , p_source_20 => l_array_source_20(Idx)
188249  , p_source_21 => l_array_source_21(Idx)
188250  , p_source_22 => l_array_source_22(Idx)
188251  , p_source_24 => l_array_source_24(Idx)
188252  );
188253 If(l_balance_type_code = 'A') THEN
188254   l_actual_gain_loss_ref := l_gain_or_loss_ref;
188255 END IF;
188256 
188257 --
188258 
188259       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
188260       -- or secondary ledger that has different currency with primary
188261       -- or alc that is calculated by sla
188262       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
188263             (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'))
188264 
188265 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
188266 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
188267           AND (l_actual_flag = 'A')) THEN
188268         XLA_AE_LINES_PKG.CreateGainOrLossLines(
188269           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
188270          ,p_application_id   => p_application_id
188271          ,p_amb_context_code => 'DEFAULT'
188272          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
188273          ,p_event_class_code => C_EVENT_CLASS_CODE
188274          ,p_event_type_code  => C_EVENT_TYPE_CODE
188275          
188276          ,p_gain_ccid        => -1
188277          ,p_loss_ccid        => -1
188278 
188279          ,p_actual_flag      => l_actual_flag
188280          ,p_enc_flag         => null
188281          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
188282          ,p_enc_g_l_ref      => null
188283          );
188284       END IF;
188285    END IF;
188286 END IF;
188287 
188288    ELSE
188289       --
188290       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
188291       --
188292       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188293          trace
188294             (p_msg      => 'Trancaction revesal option is Y'
188295             ,p_level    => C_LEVEL_STATEMENT
188296             ,p_module   => l_log_module);
188297       END IF;
188298    END IF;
188299 
188300 END LOOP;
188301 l_result := XLA_AE_LINES_PKG.InsertLines ;
188302 end loop;
188303 close line_cur;
188304 
188305 
188306 --
188307 -- insert headers into xla_ae_headers_gt table
188308 --
188309 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
188310 
188311 -- insert into errors table here.
188312 
188313 END LOOP;
188314 
188315 --
188316 -- 4865292
188317 --
188318 -- Compare g_hdr_extract_count with event count in
188319 -- CreateHeadersAndLines.
188320 --
188321 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
188322 
188323 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188324    trace (p_msg     => '# rows extracted from header extract objects '
188325                     || ' (running total): '
188326                     || g_hdr_extract_count
188327          ,p_level   => C_LEVEL_STATEMENT
188328          ,p_module  => l_log_module);
188329 END IF;
188330 
188331 CLOSE header_cur;
188332 --
188333 
188334 --
188335 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
188336    trace
188337       (p_msg      => 'END of EventType_292'
188338       ,p_level    => C_LEVEL_PROCEDURE
188339       ,p_module   => l_log_module);
188340 END IF;
188341 --
188342 RETURN l_result;
188343 EXCEPTION
188344 WHEN xla_exceptions_pkg.application_exception THEN
188345    
188346 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
188347 
188348    
188349 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
188350 
188351    RAISE;
188352 
188353 WHEN NO_DATA_FOUND THEN
188354 
188355 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
188356 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
188357 
188358 FOR header_record IN header_cur
188359 LOOP
188360     l_array_header_events(header_record.event_id) := header_record.event_id;
188361 END LOOP;
188362 
188363 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
188364 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
188365 
188366 fnd_file.put_line(fnd_file.LOG, '                    ');
188367 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
188368 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
188369 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
188370 
188371 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
188372 LOOP
188373 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
188374 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
188375         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
188376 	END IF;
188377 END LOOP;
188378 
188379 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
188380 fnd_file.put_line(fnd_file.LOG, '                    ');
188381 
188382 
188383 xla_exceptions_pkg.raise_message
188384       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_292');
188385 
188386 
188387 WHEN OTHERS THEN
188388    xla_exceptions_pkg.raise_message
188389       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_292');
188390 END EventType_292;
188391 --
188392 
188393 ---------------------------------------
188394 --
188395 -- PRIVATE PROCEDURE
188396 --         insert_sources_293
188397 --
188398 ----------------------------------------
188399 --
188400 PROCEDURE insert_sources_293(
188401                                 p_target_ledger_id       IN NUMBER
188402                               , p_language               IN VARCHAR2
188403                               , p_sla_ledger_id          IN NUMBER
188404                               , p_pad_start_date         IN DATE
188405                               , p_pad_end_date           IN DATE
188406                          )
188407 IS
188408 
188409 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_SHIP_NO_TP';
188410 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
188411 p_apps_owner                   VARCHAR2(30);
188412 l_log_module                   VARCHAR2(240);
188413 BEGIN
188414 IF g_log_enabled THEN
188415       l_log_module := C_DEFAULT_MODULE||'.insert_sources_293';
188416 END IF;
188417 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
188418 
188419       trace
188420          (p_msg      => 'BEGIN of insert_sources_293'
188421          ,p_level    => C_LEVEL_PROCEDURE
188422          ,p_module   => l_log_module);
188423 
188424 END IF;
188425 
188426 -- select APPS owner
188427 SELECT oracle_username
188428   INTO p_apps_owner
188429   FROM fnd_oracle_userid
188430  WHERE read_only_flag = 'U'
188431 ;
188432 
188433 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188434       trace
188435          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
188436                         ' - p_language = '||p_language||
188437                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
188438                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
188439                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
188440                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
188441          ,p_level    => C_LEVEL_STATEMENT
188442          ,p_module   => l_log_module);
188443 END IF;
188444 
188445 
188446 --
188447 INSERT INTO xla_diag_sources --hdr1
188448 (
188449         event_id
188450       , ledger_id
188451       , sla_ledger_id
188452       , description_language
188453       , object_name
188454       , object_type_code
188455       , line_number
188456       , source_application_id
188457       , source_type_code
188458       , source_code
188459       , source_value
188460       , source_meaning
188461       , created_by
188462       , creation_date
188463       , last_update_date
188464       , last_updated_by
188465       , last_update_login
188466       , program_update_date
188467       , program_application_id
188468       , program_id
188469       , request_id
188470 )
188471 SELECT
188472         event_id
188473       , p_target_ledger_id
188474       , p_sla_ledger_id
188475       , p_language
188476       , object_name
188477       , object_type_code
188478       , line_number
188479       , source_application_id
188480       , source_type_code
188481       , source_code
188482       , SUBSTR(source_value ,1,1996)
188483       , SUBSTR(source_meaning,1,200)
188484       , xla_environment_pkg.g_Usr_Id
188485       , TRUNC(SYSDATE)
188486       , TRUNC(SYSDATE)
188487       , xla_environment_pkg.g_Usr_Id
188488       , xla_environment_pkg.g_Login_Id
188489       , TRUNC(SYSDATE)
188490       , xla_environment_pkg.g_Prog_Appl_Id
188491       , xla_environment_pkg.g_Prog_Id
188492       , xla_environment_pkg.g_Req_Id
188493   FROM (
188494        SELECT xet.event_id                  event_id
188495             , 0                             line_number
188496             , CASE r
188497                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
188498                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
188499                 
188500                ELSE null
188501               END                           object_name
188502             , CASE r
188503                 WHEN 1 THEN 'HEADER' 
188504                 WHEN 2 THEN 'HEADER' 
188505                 
188506                 ELSE null
188507               END                           object_type_code
188508             , CASE r
188509                 WHEN 1 THEN '707' 
188510                 WHEN 2 THEN '707' 
188511                 
188512                 ELSE null
188513               END                           source_application_id
188514             , 'S'             source_type_code
188515             , CASE r
188516                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
188517                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
188518                 
188519                 ELSE null
188520               END                           source_code
188521             , CASE r
188522                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
188523                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
188524                 
188525                 ELSE null
188526               END                           source_value
188527             , CASE r
188528                 WHEN 1 THEN fvl12.meaning
188529                 WHEN 2 THEN fvl38.meaning
188530                 
188531                 ELSE null
188532               END               source_meaning
188533         FROM xla_events_gt     xet  
188534       , CST_XLA_INV_HEADERS_V  h1
188535   , fnd_lookup_values    fvl12
188536   , fnd_lookup_values    fvl38
188537             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
188538        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
188539          AND xet.event_type_code = C_EVENT_TYPE_CODE
188540             AND h1.event_id = xet.event_id
188541    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
188542   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
188543   AND fvl12.view_application_id(+) = 700
188544   AND fvl12.language(+)            = USERENV('LANG')
188545      AND fvl38.lookup_type(+)         = 'YES_NO'
188546   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
188547   AND fvl38.view_application_id(+) = 0
188548   AND fvl38.language(+)            = USERENV('LANG')
188549   
188550 )
188551 ;
188552 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188553 
188554       trace
188555          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
188556          ,p_level    => C_LEVEL_STATEMENT
188557          ,p_module   => l_log_module);
188558 
188559 END IF;
188560 --
188561 
188562 
188563 
188564 --
188565 INSERT INTO xla_diag_sources --line1
188566 (
188567         event_id
188568       , ledger_id
188569       , sla_ledger_id
188570       , description_language
188571       , object_name
188572       , object_type_code
188573       , line_number
188574       , source_application_id
188575       , source_type_code
188576       , source_code
188577       , source_value
188578       , source_meaning
188579       , created_by
188580       , creation_date
188581       , last_update_date
188582       , last_updated_by
188583       , last_update_login
188584       , program_update_date
188585       , program_application_id
188586       , program_id
188587       , request_id
188588 )
188589 SELECT  event_id
188590       , p_target_ledger_id
188591       , p_sla_ledger_id
188592       , p_language
188593       , object_name
188594       , object_type_code
188595       , line_number
188596       , source_application_id
188597       , source_type_code
188598       , source_code
188599       , SUBSTR(source_value,1,1996)
188600       , SUBSTR(source_meaning,1,200)
188601       , xla_environment_pkg.g_Usr_Id
188602       , TRUNC(SYSDATE)
188603       , TRUNC(SYSDATE)
188604       , xla_environment_pkg.g_Usr_Id
188605       , xla_environment_pkg.g_Login_Id
188606       , TRUNC(SYSDATE)
188607       , xla_environment_pkg.g_Prog_Appl_Id
188608       , xla_environment_pkg.g_Prog_Id
188609       , xla_environment_pkg.g_Req_Id
188610   FROM (
188611        SELECT xet.event_id                  event_id
188612             , l2.line_number                 line_number
188613             , CASE r
188614                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
188615                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
188616                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
188617                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
188618                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
188619                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
188620                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
188621                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
188622                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
188623                 
188624                ELSE null
188625               END                           object_name
188626             , CASE r
188627                 WHEN 1 THEN 'LINE' 
188628                 WHEN 2 THEN 'LINE' 
188629                 WHEN 3 THEN 'LINE' 
188630                 WHEN 4 THEN 'LINE' 
188631                 WHEN 5 THEN 'LINE' 
188632                 WHEN 6 THEN 'LINE' 
188633                 WHEN 7 THEN 'LINE' 
188634                 WHEN 8 THEN 'LINE' 
188635                 WHEN 9 THEN 'LINE' 
188636                 
188637                 ELSE null
188638               END                           object_type_code
188639             , CASE r
188640                 WHEN 1 THEN '707' 
188641                 WHEN 2 THEN '707' 
188642                 WHEN 3 THEN '707' 
188643                 WHEN 4 THEN '707' 
188644                 WHEN 5 THEN '707' 
188645                 WHEN 6 THEN '707' 
188646                 WHEN 7 THEN '707' 
188647                 WHEN 8 THEN '707' 
188648                 WHEN 9 THEN '707' 
188649                 
188650                 ELSE null
188651               END                           source_application_id
188652             , 'S'             source_type_code
188653             , CASE r
188654                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
188655                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
188656                 WHEN 3 THEN 'CURRENCY_CODE' 
188657                 WHEN 4 THEN 'ENTERED_AMOUNT' 
188658                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
188659                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
188660                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
188661                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
188662                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
188663                 
188664                 ELSE null
188665               END                           source_code
188666             , CASE r
188667                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
188668                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
188669                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
188670                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
188671                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
188672                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
188673                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
188674                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
188675                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
188676                 
188677                 ELSE null
188678               END                           source_value
188679             , null              source_meaning
188680          FROM  xla_events_gt     xet  
188681         , CST_XLA_INV_LINES_V  l2
188682             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
188683         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
188684           AND xet.event_type_code = C_EVENT_TYPE_CODE
188685             AND l2.event_id          = xet.event_id
188686 
188687 )
188688 ;
188689 --
188690 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188691 
188692       trace
188693          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
188694          ,p_level    => C_LEVEL_STATEMENT
188695          ,p_module   => l_log_module);
188696 
188697 END IF;
188698 
188699 
188700 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
188701       trace
188702          (p_msg      => 'END of insert_sources_293'
188703          ,p_level    => C_LEVEL_PROCEDURE
188704          ,p_module   => l_log_module);
188705 END IF;
188706 EXCEPTION
188707   WHEN xla_exceptions_pkg.application_exception THEN
188708       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
188709             trace
188710                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
188711                ,p_level    => C_LEVEL_EXCEPTION
188712                ,p_module   => l_log_module);
188713       END IF;
188714       RAISE;
188715   WHEN OTHERS THEN
188716       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
188717             trace
188718                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
188719                ,p_level    => C_LEVEL_EXCEPTION
188720                ,p_module   => l_log_module);
188721        END IF;
188722        xla_exceptions_pkg.raise_message
188723            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_293');
188724 END insert_sources_293;
188725 --
188726 
188727 ---------------------------------------
188728 --
188729 -- PRIVATE FUNCTION
188730 --         EventType_293
188731 --
188732 ----------------------------------------
188733 --
188734 FUNCTION EventType_293
188735        (p_application_id         IN NUMBER
188736        ,p_base_ledger_id         IN NUMBER
188737        ,p_target_ledger_id       IN NUMBER
188738        ,p_language               IN VARCHAR2
188739        ,p_currency_code          IN VARCHAR2
188740        ,p_sla_ledger_id          IN NUMBER
188741        ,p_pad_start_date         IN DATE
188742        ,p_pad_end_date           IN DATE
188743        ,p_primary_ledger_id      IN NUMBER)
188744 RETURN BOOLEAN IS
188745 --
188746 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_SHIP_NO_TP';
188747 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
188748 
188749 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
188750 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
188751 --
188752 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188753 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188754 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
188755 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
188756 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188757 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
188758 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
188759 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188760 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188761 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188762 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188763 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188764 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188765 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188766 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
188767 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
188768 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
188769 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
188770 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188771 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188772 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188773 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188774 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
188775 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
188776 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
188777 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
188778 
188779 l_event_id                             NUMBER;
188780 l_previous_event_id                    NUMBER;
188781 l_first_event_id                       NUMBER;
188782 l_last_event_id                        NUMBER;
188783 
188784 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
188785 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
188786 --
188787 --
188788 l_result                    BOOLEAN := TRUE;
188789 l_rows                      NUMBER  := 1000;
188790 l_event_type_name           VARCHAR2(80) := 'User-defined Direct Interorg Shipment, No Transfer Price';
188791 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
188792 l_description               VARCHAR2(4000);
188793 l_transaction_reversal      NUMBER;
188794 l_ae_header_id              NUMBER;
188795 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
188796 l_log_module                VARCHAR2(240);
188797 --
188798 l_acct_reversal_source      VARCHAR2(30);
188799 l_trx_reversal_source       VARCHAR2(30);
188800 
188801 l_continue_with_lines       BOOLEAN := TRUE;
188802 --
188803 l_acc_rev_gl_date_source    DATE;                      -- 4262811
188804 --
188805 type t_array_event_id is table of number index by binary_integer;
188806 
188807 l_rec_array_event                    t_rec_array_event;
188808 l_null_rec_array_event               t_rec_array_event;
188809 l_array_ae_header_id                 xla_number_array_type;
188810 l_actual_flag                        VARCHAR2(1) := NULL;
188811 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
188812 l_balance_type_code                  VARCHAR2(1) :=NULL;
188813 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
188814 
188815 --
188816 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
188817 --
188818 
188819 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
188820 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
188821 
188822 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
188823 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
188824 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
188825 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
188826 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
188827 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
188828 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
188829 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
188830 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
188831 
188832 l_array_source_12              t_array_source_12;
188833 l_array_source_12_meaning      t_array_lookup_meaning;
188834 l_array_source_38              t_array_source_38;
188835 l_array_source_38_meaning      t_array_lookup_meaning;
188836 
188837 l_array_source_4      t_array_source_4;
188838 l_array_source_11      t_array_source_11;
188839 l_array_source_15      t_array_source_15;
188840 l_array_source_18      t_array_source_18;
188841 l_array_source_19      t_array_source_19;
188842 l_array_source_20      t_array_source_20;
188843 l_array_source_21      t_array_source_21;
188844 l_array_source_22      t_array_source_22;
188845 l_array_source_24      t_array_source_24;
188846 
188847 --
188848 CURSOR header_cur
188849 IS
188850 SELECT /*+ leading(xet) cardinality(xet,1) */
188851 -- Event Type Code: UDIR_INTERORG_SHIP_NO_TP
188852 -- Event Class Code: USER_DEFINE
188853     xet.entity_id
188854   , xet.legal_entity_id
188855   , xet.entity_code
188856   , xet.transaction_number
188857   , xet.event_id
188858   , xet.event_class_code
188859   , xet.event_type_code
188860   , xet.event_number
188861   , xet.event_date
188862   , xet.transaction_date
188863   , xet.reference_num_1
188864   , xet.reference_num_2
188865   , xet.reference_num_3
188866   , xet.reference_num_4
188867   , xet.reference_char_1
188868   , xet.reference_char_2
188869   , xet.reference_char_3
188870   , xet.reference_char_4
188871   , xet.reference_date_1
188872   , xet.reference_date_2
188873   , xet.reference_date_3
188874   , xet.reference_date_4
188875   , xet.event_created_by
188876   , xet.budgetary_control_flag 
188877   , h1.DISTRIBUTION_TYPE    source_12
188878   , fvl12.meaning   source_12_meaning
188879   , h1.TRANSFER_TO_GL_INDICATOR    source_38
188880   , fvl38.meaning   source_38_meaning
188881   FROM xla_events_gt     xet 
188882   , CST_XLA_INV_HEADERS_V  h1
188883   , fnd_lookup_values    fvl12
188884   , fnd_lookup_values    fvl38
188885  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
188886    and xet.event_type_code = C_EVENT_TYPE_CODE
188887    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
188888    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
188889   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
188890   AND fvl12.view_application_id(+) = 700
188891   AND fvl12.language(+)            = USERENV('LANG')
188892      AND fvl38.lookup_type(+)         = 'YES_NO'
188893   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
188894   AND fvl38.view_application_id(+) = 0
188895   AND fvl38.language(+)            = USERENV('LANG')
188896   
188897  ORDER BY event_id
188898 ;
188899 
188900 
188901 --
188902 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
188903 IS
188904 SELECT /*+ leading(xet) cardinality(xet,1) */
188905 -- Event Type Code: UDIR_INTERORG_SHIP_NO_TP
188906 -- Event Class Code: USER_DEFINE
188907     xet.entity_id
188908    ,xet.legal_entity_id
188909    ,xet.entity_code
188910    ,xet.transaction_number
188911    ,xet.event_id
188912    ,xet.event_class_code
188913    ,xet.event_type_code
188914    ,xet.event_number
188915    ,xet.event_date
188916    ,xet.transaction_date
188917    ,xet.reference_num_1
188918    ,xet.reference_num_2
188919    ,xet.reference_num_3
188920    ,xet.reference_num_4
188921    ,xet.reference_char_1
188922    ,xet.reference_char_2
188923    ,xet.reference_char_3
188924    ,xet.reference_char_4
188925    ,xet.reference_date_1
188926    ,xet.reference_date_2
188927    ,xet.reference_date_3
188928    ,xet.reference_date_4
188929    ,xet.event_created_by
188930    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
188931   , l2.CODE_COMBINATION_ID    source_4
188932   , l2.DISTRIBUTION_IDENTIFIER    source_11
188933   , l2.CURRENCY_CODE    source_15
188934   , l2.ENTERED_AMOUNT    source_18
188935   , l2.CURRENCY_CONVERSION_DATE    source_19
188936   , l2.CURRENCY_CONVERSION_RATE    source_20
188937   , l2.CURRENCY_CONVERSION_TYPE    source_21
188938   , l2.ACCOUNTED_AMOUNT    source_22
188939   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
188940   FROM xla_events_gt     xet 
188941   , CST_XLA_INV_LINES_V  l2
188942  WHERE xet.event_id between x_first_event_id and x_last_event_id
188943    and xet.event_date between p_pad_start_date and p_pad_end_date
188944    and xet.event_type_code = C_EVENT_TYPE_CODE
188945    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
188946 ;
188947 
188948 --
188949 BEGIN
188950 IF g_log_enabled THEN
188951    l_log_module := C_DEFAULT_MODULE||'.EventType_293';
188952 END IF;
188953 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
188954    trace
188955       (p_msg      => 'BEGIN of EventType_293'
188956       ,p_level    => C_LEVEL_PROCEDURE
188957       ,p_module   => l_log_module);
188958 END IF;
188959 
188960 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188961    trace
188962       (p_msg      => 'p_application_id = '||p_application_id||
188963                      ' - p_base_ledger_id = '||p_base_ledger_id||
188964                      ' - p_target_ledger_id  = '||p_target_ledger_id||
188965                      ' - p_language = '||p_language||
188966                      ' - p_currency_code = '||p_currency_code||
188967                      ' - p_sla_ledger_id = '||p_sla_ledger_id
188968       ,p_level    => C_LEVEL_STATEMENT
188969       ,p_module   => l_log_module);
188970 END IF;
188971 --
188972 -- initialze arrays
188973 --
188974 g_array_event.DELETE;
188975 l_rec_array_event := l_null_rec_array_event;
188976 --
188977 --------------------------------------
188978 -- 4262811 Initialze MPA Line Number
188979 --------------------------------------
188980 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
188981 
188982 --
188983 
188984 --
188985 OPEN header_cur;
188986 --
188987 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188988    trace
188989    (p_msg      => 'SQL - FETCH header_cur'
188990    ,p_level    => C_LEVEL_STATEMENT
188991    ,p_module   => l_log_module);
188992 END IF;
188993 --
188994 LOOP
188995 FETCH header_cur BULK COLLECT INTO
188996         l_array_entity_id
188997       , l_array_legal_entity_id
188998       , l_array_entity_code
188999       , l_array_transaction_num
189000       , l_array_event_id
189001       , l_array_class_code
189002       , l_array_event_type
189003       , l_array_event_number
189004       , l_array_event_date
189005       , l_array_transaction_date
189006       , l_array_reference_num_1
189007       , l_array_reference_num_2
189008       , l_array_reference_num_3
189009       , l_array_reference_num_4
189010       , l_array_reference_char_1
189011       , l_array_reference_char_2
189012       , l_array_reference_char_3
189013       , l_array_reference_char_4
189014       , l_array_reference_date_1
189015       , l_array_reference_date_2
189016       , l_array_reference_date_3
189017       , l_array_reference_date_4
189018       , l_array_event_created_by
189019       , l_array_budgetary_control_flag 
189020       , l_array_source_12
189021       , l_array_source_12_meaning
189022       , l_array_source_38
189023       , l_array_source_38_meaning
189024       LIMIT l_rows;
189025 --
189026 IF (C_LEVEL_EVENT >= g_log_level) THEN
189027    trace
189028    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
189029    ,p_level    => C_LEVEL_EVENT
189030    ,p_module   => l_log_module);
189031 END IF;
189032 --
189033 EXIT WHEN l_array_entity_id.COUNT = 0;
189034 
189035 -- initialize arrays
189036 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
189037 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
189038 
189039 --
189040 -- Bug 4458708
189041 --
189042 XLA_AE_LINES_PKG.g_LineNumber := 0;
189043 
189044 
189045 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
189046 g_last_hdr_idx := l_array_event_id.LAST;
189047 --
189048 -- loop for the headers. Each iteration is for each header extract row
189049 -- fetched in header cursor
189050 --
189051 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
189052 
189053 --
189054 -- set event info as cache for other routines to refer event attributes
189055 --
189056 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
189057    (p_application_id           => p_application_id
189058    ,p_primary_ledger_id        => p_primary_ledger_id
189059    ,p_base_ledger_id           => p_base_ledger_id
189060    ,p_target_ledger_id         => p_target_ledger_id
189061    ,p_entity_id                => l_array_entity_id(hdr_idx)
189062    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
189063    ,p_entity_code              => l_array_entity_code(hdr_idx)
189064    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
189065    ,p_event_id                 => l_array_event_id(hdr_idx)
189066    ,p_event_class_code         => l_array_class_code(hdr_idx)
189067    ,p_event_type_code          => l_array_event_type(hdr_idx)
189068    ,p_event_number             => l_array_event_number(hdr_idx)
189069    ,p_event_date               => l_array_event_date(hdr_idx)
189070    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
189071    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
189072    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
189073    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
189074    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
189075    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
189076    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
189077    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
189078    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
189079    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
189080    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
189081    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
189082    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
189083    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
189084    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
189085 
189086 --
189087 -- set the status of entry to C_VALID (0)
189088 --
189089 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
189090 
189091 --
189092 -- initialize a row for ae header
189093 --
189094 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
189095 
189096 l_event_id := l_array_event_id(hdr_idx);
189097 
189098 --
189099 -- storing the hdr_idx for event. May be used by line cursor.
189100 --
189101 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
189102 
189103 --
189104 -- store sources from header extract. This can be improved to
189105 -- store only those sources from header extract that may be used in lines
189106 --
189107 
189108 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
189109 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
189110 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
189111 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
189112 
189113 --
189114 -- initilaize the status of ae headers for diffrent balance types
189115 -- the status is initialised to C_NOT_CREATED (2)
189116 --
189117 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
189118 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
189119 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
189120 
189121 --
189122 -- call api to validate and store accounting attributes for header
189123 --
189124 
189125 ------------------------------------------------------------
189126 -- Accrual Reversal : to get date for Standard Source (NONE)
189127 ------------------------------------------------------------
189128 l_acc_rev_gl_date_source := NULL;
189129 
189130      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
189131       l_rec_acct_attrs.array_date_value(1) := 
189132 xla_ae_sources_pkg.GetSystemSourceDate(
189133    p_source_code           => 'XLA_REFERENCE_DATE_1'
189134  , p_source_type_code      => 'Y'
189135  , p_source_application_id =>  602
189136 );
189137      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
189138       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
189139 
189140 
189141 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
189142 
189143 XLA_AE_HEADER_PKG.SetJeCategoryName;
189144 
189145 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
189146 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
189147 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
189148 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
189149 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
189150 
189151 
189152 -- No header level analytical criteria
189153 
189154 --
189155 --accounting attribute enhancement, bug 3612931
189156 --
189157 l_trx_reversal_source := SUBSTR(NULL, 1,30);
189158 
189159 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
189160    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
189161 
189162    xla_accounting_err_pkg.build_message
189163       (p_appli_s_name            => 'XLA'
189164       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
189165       ,p_token_1                 => 'ACCT_ATTR_NAME'
189166       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
189167       ,p_token_2                 => 'PRODUCT_NAME'
189168       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
189169       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
189170       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
189171       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
189172 
189173 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
189174    --
189175    -- following sets the accounting attributes needed to reverse
189176    -- accounting for a distributeion
189177    --
189178    xla_ae_lines_pkg.SetTrxReversalAttrs
189179       (p_event_id              => l_event_id
189180       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
189181       ,p_trx_reversal_source   => l_trx_reversal_source);
189182 
189183 END IF;
189184 
189185 
189186 ----------------------------------------------------------------
189187 -- 4262811 -  update the header statuses to invalid in need be
189188 ----------------------------------------------------------------
189189 --
189190 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
189191 
189192 
189193   -----------------------------------------------
189194   -- No accrual reversal for the event class/type
189195   -----------------------------------------------
189196 ----------------------------------------------------------------
189197 
189198 --
189199 -- this ends the header loop iteration for one bulk fetch
189200 --
189201 END LOOP;
189202 
189203 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
189204 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
189205 
189206 --
189207 -- insert dummy rows into lines gt table that were created due to
189208 -- transaction reversals
189209 --
189210 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
189211    l_result := XLA_AE_LINES_PKG.InsertLines;
189212 END IF;
189213 
189214 --
189215 -- reset the temp_line_num for each set of events fetched from header
189216 -- cursor rather than doing it for each new event in line cursor
189217 -- Bug 3939231
189218 --
189219 xla_ae_lines_pkg.g_temp_line_num := 0;
189220 
189221 
189222 
189223 --
189224 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
189225 --
189226 --
189227 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189228 
189229       trace
189230          (p_msg      => 'SQL - FETCH line_cur'
189231          ,p_level    => C_LEVEL_STATEMENT
189232          ,p_module   => l_log_module);
189233 
189234 END IF;
189235 --
189236 --
189237 LOOP
189238   --
189239   FETCH line_cur BULK COLLECT INTO
189240         l_array_entity_id
189241       , l_array_legal_entity_id
189242       , l_array_entity_code
189243       , l_array_transaction_num
189244       , l_array_event_id
189245       , l_array_class_code
189246       , l_array_event_type
189247       , l_array_event_number
189248       , l_array_event_date
189249       , l_array_transaction_date
189250       , l_array_reference_num_1
189251       , l_array_reference_num_2
189252       , l_array_reference_num_3
189253       , l_array_reference_num_4
189254       , l_array_reference_char_1
189255       , l_array_reference_char_2
189256       , l_array_reference_char_3
189257       , l_array_reference_char_4
189258       , l_array_reference_date_1
189259       , l_array_reference_date_2
189260       , l_array_reference_date_3
189261       , l_array_reference_date_4
189262       , l_array_event_created_by
189263       , l_array_budgetary_control_flag
189264       , l_array_extract_line_num 
189265       , l_array_source_4
189266       , l_array_source_11
189267       , l_array_source_15
189268       , l_array_source_18
189269       , l_array_source_19
189270       , l_array_source_20
189271       , l_array_source_21
189272       , l_array_source_22
189273       , l_array_source_24
189274       LIMIT l_rows;
189275 
189276   --
189277   IF (C_LEVEL_EVENT >= g_log_level) THEN
189278             trace
189279                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
189280                ,p_level    => C_LEVEL_EVENT
189281                ,p_module   => l_log_module);
189282   END IF;
189283   --
189284   EXIT WHEN l_array_entity_id.count = 0;
189285 
189286   XLA_AE_LINES_PKG.g_rec_lines := null;
189287 
189288 --
189289 -- Bug 4458708
189290 --
189291 XLA_AE_LINES_PKG.g_LineNumber := 0;
189292 --
189293 --
189294 
189295 FOR Idx IN 1..l_array_event_id.count LOOP
189296    --
189297    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
189298    --
189299    l_event_id := l_array_event_id(idx);  -- 5648433
189300 
189301    --
189302    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
189303    --
189304 
189305    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
189306              (g_array_event(l_event_id).array_value_num('header_index'))
189307          ,'N'
189308          ) <> 'Y'
189309    THEN
189310       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189311          trace
189312             (p_msg      => 'Trancaction revesal option is not Y '
189313             ,p_level    => C_LEVEL_STATEMENT
189314             ,p_module   => l_log_module);
189315       END IF;
189316 
189317 --
189318 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
189319 --
189320 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
189321 --
189322 -- set event info as cache for other routines to refer event attributes
189323 --
189324 
189325 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
189326    l_previous_event_id := l_event_id;
189327 
189328    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
189329       (p_application_id           => p_application_id
189330       ,p_primary_ledger_id        => p_primary_ledger_id
189331       ,p_base_ledger_id           => p_base_ledger_id
189332       ,p_target_ledger_id         => p_target_ledger_id
189333       ,p_entity_id                => l_array_entity_id(Idx)
189334       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
189335       ,p_entity_code              => l_array_entity_code(Idx)
189336       ,p_transaction_num          => l_array_transaction_num(Idx)
189337       ,p_event_id                 => l_array_event_id(Idx)
189338       ,p_event_class_code         => l_array_class_code(Idx)
189339       ,p_event_type_code          => l_array_event_type(Idx)
189340       ,p_event_number             => l_array_event_number(Idx)
189341       ,p_event_date               => l_array_event_date(Idx)
189342       ,p_transaction_date         => l_array_transaction_date(Idx)
189343       ,p_reference_num_1          => l_array_reference_num_1(Idx)
189344       ,p_reference_num_2          => l_array_reference_num_2(Idx)
189345       ,p_reference_num_3          => l_array_reference_num_3(Idx)
189346       ,p_reference_num_4          => l_array_reference_num_4(Idx)
189347       ,p_reference_char_1         => l_array_reference_char_1(Idx)
189348       ,p_reference_char_2         => l_array_reference_char_2(Idx)
189349       ,p_reference_char_3         => l_array_reference_char_3(Idx)
189350       ,p_reference_char_4         => l_array_reference_char_4(Idx)
189351       ,p_reference_date_1         => l_array_reference_date_1(Idx)
189352       ,p_reference_date_2         => l_array_reference_date_2(Idx)
189353       ,p_reference_date_3         => l_array_reference_date_3(Idx)
189354       ,p_reference_date_4         => l_array_reference_date_4(Idx)
189355       ,p_event_created_by         => l_array_event_created_by(Idx)
189356       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
189357        --
189358 END IF;
189359 
189360 
189361 
189362 --
189363 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
189364 
189365 l_acct_reversal_source := SUBSTR(NULL, 1,30);
189366 
189367 IF l_continue_with_lines THEN
189368    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
189369       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
189370 
189371       xla_accounting_err_pkg.build_message
189372          (p_appli_s_name            => 'XLA'
189373          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
189374          ,p_token_1                 => 'LINE_NUMBER'
189375          ,p_value_1                 => l_array_extract_line_num(Idx)
189376          ,p_token_2                 => 'PRODUCT_NAME'
189377          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
189378          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
189379          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
189380          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
189381 
189382    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
189383       --
189384       -- following sets the accounting attributes needed to reverse
189385       -- accounting for a distributeion
189386       --
189387 
189388       --
189389       -- 5217187
189390       --
189391       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
189392       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
189393                                        g_array_event(l_event_id).array_value_num('header_index'));
189394       --
189395       --
189396 
189397       -- No reversal code generated
189398 
189399       xla_ae_lines_pkg.SetAcctReversalAttrs
189400          (p_event_id             => l_event_id
189401          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
189402          ,p_calculate_acctd_flag => l_calculate_acctd_flag
189403          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
189404    END IF;
189405 
189406    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
189407        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
189408 
189409 --
189410 AcctLineType_64 (
189411  p_application_id  => p_application_id
189412  ,p_event_id     => l_event_id
189413  ,p_calculate_acctd_flag => l_calculate_acctd_flag
189414  ,p_calculate_g_l_flag => l_calculate_g_l_flag
189415  ,p_actual_flag => l_actual_flag
189416  ,p_balance_type_code => l_balance_type_code
189417  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
189418  
189419  , p_source_4 => l_array_source_4(Idx)
189420  , p_source_11 => l_array_source_11(Idx)
189421  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
189422  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
189423  , p_source_15 => l_array_source_15(Idx)
189424  , p_source_18 => l_array_source_18(Idx)
189425  , p_source_19 => l_array_source_19(Idx)
189426  , p_source_20 => l_array_source_20(Idx)
189427  , p_source_21 => l_array_source_21(Idx)
189428  , p_source_22 => l_array_source_22(Idx)
189429  , p_source_24 => l_array_source_24(Idx)
189430  );
189431 If(l_balance_type_code = 'A') THEN
189432   l_actual_gain_loss_ref := l_gain_or_loss_ref;
189433 END IF;
189434 
189435 --
189436 
189437 
189438 --
189439 AcctLineType_85 (
189440  p_application_id  => p_application_id
189441  ,p_event_id     => l_event_id
189442  ,p_calculate_acctd_flag => l_calculate_acctd_flag
189443  ,p_calculate_g_l_flag => l_calculate_g_l_flag
189444  ,p_actual_flag => l_actual_flag
189445  ,p_balance_type_code => l_balance_type_code
189446  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
189447  
189448  , p_source_4 => l_array_source_4(Idx)
189449  , p_source_11 => l_array_source_11(Idx)
189450  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
189451  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
189452  , p_source_15 => l_array_source_15(Idx)
189453  , p_source_18 => l_array_source_18(Idx)
189454  , p_source_19 => l_array_source_19(Idx)
189455  , p_source_20 => l_array_source_20(Idx)
189456  , p_source_21 => l_array_source_21(Idx)
189457  , p_source_22 => l_array_source_22(Idx)
189458  , p_source_24 => l_array_source_24(Idx)
189459  );
189460 If(l_balance_type_code = 'A') THEN
189461   l_actual_gain_loss_ref := l_gain_or_loss_ref;
189462 END IF;
189463 
189464 --
189465 
189466 
189467 --
189468 AcctLineType_87 (
189469  p_application_id  => p_application_id
189470  ,p_event_id     => l_event_id
189471  ,p_calculate_acctd_flag => l_calculate_acctd_flag
189472  ,p_calculate_g_l_flag => l_calculate_g_l_flag
189473  ,p_actual_flag => l_actual_flag
189474  ,p_balance_type_code => l_balance_type_code
189475  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
189476  
189477  , p_source_4 => l_array_source_4(Idx)
189478  , p_source_11 => l_array_source_11(Idx)
189479  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
189480  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
189481  , p_source_15 => l_array_source_15(Idx)
189482  , p_source_18 => l_array_source_18(Idx)
189483  , p_source_19 => l_array_source_19(Idx)
189484  , p_source_20 => l_array_source_20(Idx)
189485  , p_source_21 => l_array_source_21(Idx)
189486  , p_source_22 => l_array_source_22(Idx)
189487  , p_source_24 => l_array_source_24(Idx)
189488  );
189489 If(l_balance_type_code = 'A') THEN
189490   l_actual_gain_loss_ref := l_gain_or_loss_ref;
189491 END IF;
189492 
189493 --
189494 
189495 
189496 --
189497 AcctLineType_101 (
189498  p_application_id  => p_application_id
189499  ,p_event_id     => l_event_id
189500  ,p_calculate_acctd_flag => l_calculate_acctd_flag
189501  ,p_calculate_g_l_flag => l_calculate_g_l_flag
189502  ,p_actual_flag => l_actual_flag
189503  ,p_balance_type_code => l_balance_type_code
189504  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
189505  
189506  , p_source_4 => l_array_source_4(Idx)
189507  , p_source_11 => l_array_source_11(Idx)
189508  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
189509  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
189510  , p_source_15 => l_array_source_15(Idx)
189511  , p_source_18 => l_array_source_18(Idx)
189512  , p_source_19 => l_array_source_19(Idx)
189513  , p_source_20 => l_array_source_20(Idx)
189514  , p_source_21 => l_array_source_21(Idx)
189515  , p_source_22 => l_array_source_22(Idx)
189516  , p_source_24 => l_array_source_24(Idx)
189517  );
189518 If(l_balance_type_code = 'A') THEN
189519   l_actual_gain_loss_ref := l_gain_or_loss_ref;
189520 END IF;
189521 
189522 --
189523 
189524 
189525 --
189526 AcctLineType_114 (
189527  p_application_id  => p_application_id
189528  ,p_event_id     => l_event_id
189529  ,p_calculate_acctd_flag => l_calculate_acctd_flag
189530  ,p_calculate_g_l_flag => l_calculate_g_l_flag
189531  ,p_actual_flag => l_actual_flag
189532  ,p_balance_type_code => l_balance_type_code
189533  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
189534  
189535  , p_source_4 => l_array_source_4(Idx)
189536  , p_source_11 => l_array_source_11(Idx)
189537  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
189538  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
189539  , p_source_15 => l_array_source_15(Idx)
189540  , p_source_18 => l_array_source_18(Idx)
189541  , p_source_19 => l_array_source_19(Idx)
189542  , p_source_20 => l_array_source_20(Idx)
189543  , p_source_21 => l_array_source_21(Idx)
189544  , p_source_22 => l_array_source_22(Idx)
189545  , p_source_24 => l_array_source_24(Idx)
189546  );
189547 If(l_balance_type_code = 'A') THEN
189548   l_actual_gain_loss_ref := l_gain_or_loss_ref;
189549 END IF;
189550 
189551 --
189552 
189553 
189554 --
189555 AcctLineType_144 (
189556  p_application_id  => p_application_id
189557  ,p_event_id     => l_event_id
189558  ,p_calculate_acctd_flag => l_calculate_acctd_flag
189559  ,p_calculate_g_l_flag => l_calculate_g_l_flag
189560  ,p_actual_flag => l_actual_flag
189561  ,p_balance_type_code => l_balance_type_code
189562  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
189563  
189564  , p_source_4 => l_array_source_4(Idx)
189565  , p_source_11 => l_array_source_11(Idx)
189566  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
189567  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
189568  , p_source_15 => l_array_source_15(Idx)
189569  , p_source_18 => l_array_source_18(Idx)
189570  , p_source_19 => l_array_source_19(Idx)
189571  , p_source_20 => l_array_source_20(Idx)
189572  , p_source_21 => l_array_source_21(Idx)
189573  , p_source_22 => l_array_source_22(Idx)
189574  , p_source_24 => l_array_source_24(Idx)
189575  );
189576 If(l_balance_type_code = 'A') THEN
189577   l_actual_gain_loss_ref := l_gain_or_loss_ref;
189578 END IF;
189579 
189580 --
189581 
189582 
189583 --
189584 AcctLineType_171 (
189585  p_application_id  => p_application_id
189586  ,p_event_id     => l_event_id
189587  ,p_calculate_acctd_flag => l_calculate_acctd_flag
189588  ,p_calculate_g_l_flag => l_calculate_g_l_flag
189589  ,p_actual_flag => l_actual_flag
189590  ,p_balance_type_code => l_balance_type_code
189591  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
189592  
189593  , p_source_4 => l_array_source_4(Idx)
189594  , p_source_11 => l_array_source_11(Idx)
189595  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
189596  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
189597  , p_source_15 => l_array_source_15(Idx)
189598  , p_source_18 => l_array_source_18(Idx)
189599  , p_source_19 => l_array_source_19(Idx)
189600  , p_source_20 => l_array_source_20(Idx)
189601  , p_source_21 => l_array_source_21(Idx)
189602  , p_source_22 => l_array_source_22(Idx)
189603  , p_source_24 => l_array_source_24(Idx)
189604  );
189605 If(l_balance_type_code = 'A') THEN
189606   l_actual_gain_loss_ref := l_gain_or_loss_ref;
189607 END IF;
189608 
189609 --
189610 
189611 
189612 --
189613 AcctLineType_205 (
189614  p_application_id  => p_application_id
189615  ,p_event_id     => l_event_id
189616  ,p_calculate_acctd_flag => l_calculate_acctd_flag
189617  ,p_calculate_g_l_flag => l_calculate_g_l_flag
189618  ,p_actual_flag => l_actual_flag
189619  ,p_balance_type_code => l_balance_type_code
189620  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
189621  
189622  , p_source_4 => l_array_source_4(Idx)
189623  , p_source_11 => l_array_source_11(Idx)
189624  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
189625  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
189626  , p_source_15 => l_array_source_15(Idx)
189627  , p_source_18 => l_array_source_18(Idx)
189628  , p_source_19 => l_array_source_19(Idx)
189629  , p_source_20 => l_array_source_20(Idx)
189630  , p_source_21 => l_array_source_21(Idx)
189631  , p_source_22 => l_array_source_22(Idx)
189632  , p_source_24 => l_array_source_24(Idx)
189633  );
189634 If(l_balance_type_code = 'A') THEN
189635   l_actual_gain_loss_ref := l_gain_or_loss_ref;
189636 END IF;
189637 
189638 --
189639 
189640 
189641 --
189642 AcctLineType_228 (
189643  p_application_id  => p_application_id
189644  ,p_event_id     => l_event_id
189645  ,p_calculate_acctd_flag => l_calculate_acctd_flag
189646  ,p_calculate_g_l_flag => l_calculate_g_l_flag
189647  ,p_actual_flag => l_actual_flag
189648  ,p_balance_type_code => l_balance_type_code
189649  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
189650  
189651  , p_source_4 => l_array_source_4(Idx)
189652  , p_source_11 => l_array_source_11(Idx)
189653  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
189654  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
189655  , p_source_15 => l_array_source_15(Idx)
189656  , p_source_18 => l_array_source_18(Idx)
189657  , p_source_19 => l_array_source_19(Idx)
189658  , p_source_20 => l_array_source_20(Idx)
189659  , p_source_21 => l_array_source_21(Idx)
189660  , p_source_22 => l_array_source_22(Idx)
189661  , p_source_24 => l_array_source_24(Idx)
189662  );
189663 If(l_balance_type_code = 'A') THEN
189664   l_actual_gain_loss_ref := l_gain_or_loss_ref;
189665 END IF;
189666 
189667 --
189668 
189669       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
189670       -- or secondary ledger that has different currency with primary
189671       -- or alc that is calculated by sla
189672       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
189673             (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'))
189674 
189675 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
189676 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
189677           AND (l_actual_flag = 'A')) THEN
189678         XLA_AE_LINES_PKG.CreateGainOrLossLines(
189679           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
189680          ,p_application_id   => p_application_id
189681          ,p_amb_context_code => 'DEFAULT'
189682          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
189683          ,p_event_class_code => C_EVENT_CLASS_CODE
189684          ,p_event_type_code  => C_EVENT_TYPE_CODE
189685          
189686          ,p_gain_ccid        => -1
189687          ,p_loss_ccid        => -1
189688 
189689          ,p_actual_flag      => l_actual_flag
189690          ,p_enc_flag         => null
189691          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
189692          ,p_enc_g_l_ref      => null
189693          );
189694       END IF;
189695    END IF;
189696 END IF;
189697 
189698    ELSE
189699       --
189700       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
189701       --
189702       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189703          trace
189704             (p_msg      => 'Trancaction revesal option is Y'
189705             ,p_level    => C_LEVEL_STATEMENT
189706             ,p_module   => l_log_module);
189707       END IF;
189708    END IF;
189709 
189710 END LOOP;
189711 l_result := XLA_AE_LINES_PKG.InsertLines ;
189712 end loop;
189713 close line_cur;
189714 
189715 
189716 --
189717 -- insert headers into xla_ae_headers_gt table
189718 --
189719 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
189720 
189721 -- insert into errors table here.
189722 
189723 END LOOP;
189724 
189725 --
189726 -- 4865292
189727 --
189728 -- Compare g_hdr_extract_count with event count in
189729 -- CreateHeadersAndLines.
189730 --
189731 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
189732 
189733 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189734    trace (p_msg     => '# rows extracted from header extract objects '
189735                     || ' (running total): '
189736                     || g_hdr_extract_count
189737          ,p_level   => C_LEVEL_STATEMENT
189738          ,p_module  => l_log_module);
189739 END IF;
189740 
189741 CLOSE header_cur;
189742 --
189743 
189744 --
189745 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
189746    trace
189747       (p_msg      => 'END of EventType_293'
189748       ,p_level    => C_LEVEL_PROCEDURE
189749       ,p_module   => l_log_module);
189750 END IF;
189751 --
189752 RETURN l_result;
189753 EXCEPTION
189754 WHEN xla_exceptions_pkg.application_exception THEN
189755    
189756 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
189757 
189758    
189759 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
189760 
189761    RAISE;
189762 
189763 WHEN NO_DATA_FOUND THEN
189764 
189765 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
189766 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
189767 
189768 FOR header_record IN header_cur
189769 LOOP
189770     l_array_header_events(header_record.event_id) := header_record.event_id;
189771 END LOOP;
189772 
189773 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
189774 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
189775 
189776 fnd_file.put_line(fnd_file.LOG, '                    ');
189777 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
189778 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
189779 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
189780 
189781 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
189782 LOOP
189783 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
189784 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
189785         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
189786 	END IF;
189787 END LOOP;
189788 
189789 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
189790 fnd_file.put_line(fnd_file.LOG, '                    ');
189791 
189792 
189793 xla_exceptions_pkg.raise_message
189794       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_293');
189795 
189796 
189797 WHEN OTHERS THEN
189798    xla_exceptions_pkg.raise_message
189799       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_293');
189800 END EventType_293;
189801 --
189802 
189803 ---------------------------------------
189804 --
189805 -- PRIVATE PROCEDURE
189806 --         insert_sources_294
189807 --
189808 ----------------------------------------
189809 --
189810 PROCEDURE insert_sources_294(
189811                                 p_target_ledger_id       IN NUMBER
189812                               , p_language               IN VARCHAR2
189813                               , p_sla_ledger_id          IN NUMBER
189814                               , p_pad_start_date         IN DATE
189815                               , p_pad_end_date           IN DATE
189816                          )
189817 IS
189818 
189819 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_SHIP_TP';
189820 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
189821 p_apps_owner                   VARCHAR2(30);
189822 l_log_module                   VARCHAR2(240);
189823 BEGIN
189824 IF g_log_enabled THEN
189825       l_log_module := C_DEFAULT_MODULE||'.insert_sources_294';
189826 END IF;
189827 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
189828 
189829       trace
189830          (p_msg      => 'BEGIN of insert_sources_294'
189831          ,p_level    => C_LEVEL_PROCEDURE
189832          ,p_module   => l_log_module);
189833 
189834 END IF;
189835 
189836 -- select APPS owner
189837 SELECT oracle_username
189838   INTO p_apps_owner
189839   FROM fnd_oracle_userid
189840  WHERE read_only_flag = 'U'
189841 ;
189842 
189843 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189844       trace
189845          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
189846                         ' - p_language = '||p_language||
189847                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
189848                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
189849                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
189850                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
189851          ,p_level    => C_LEVEL_STATEMENT
189852          ,p_module   => l_log_module);
189853 END IF;
189854 
189855 
189856 --
189857 INSERT INTO xla_diag_sources --hdr1
189858 (
189859         event_id
189860       , ledger_id
189861       , sla_ledger_id
189862       , description_language
189863       , object_name
189864       , object_type_code
189865       , line_number
189866       , source_application_id
189867       , source_type_code
189868       , source_code
189869       , source_value
189870       , source_meaning
189871       , created_by
189872       , creation_date
189873       , last_update_date
189874       , last_updated_by
189875       , last_update_login
189876       , program_update_date
189877       , program_application_id
189878       , program_id
189879       , request_id
189880 )
189881 SELECT
189882         event_id
189883       , p_target_ledger_id
189884       , p_sla_ledger_id
189885       , p_language
189886       , object_name
189887       , object_type_code
189888       , line_number
189889       , source_application_id
189890       , source_type_code
189891       , source_code
189892       , SUBSTR(source_value ,1,1996)
189893       , SUBSTR(source_meaning,1,200)
189894       , xla_environment_pkg.g_Usr_Id
189895       , TRUNC(SYSDATE)
189896       , TRUNC(SYSDATE)
189897       , xla_environment_pkg.g_Usr_Id
189898       , xla_environment_pkg.g_Login_Id
189899       , TRUNC(SYSDATE)
189900       , xla_environment_pkg.g_Prog_Appl_Id
189901       , xla_environment_pkg.g_Prog_Id
189902       , xla_environment_pkg.g_Req_Id
189903   FROM (
189904        SELECT xet.event_id                  event_id
189905             , 0                             line_number
189906             , CASE r
189907                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
189908                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
189909                 
189910                ELSE null
189911               END                           object_name
189912             , CASE r
189913                 WHEN 1 THEN 'HEADER' 
189914                 WHEN 2 THEN 'HEADER' 
189915                 
189916                 ELSE null
189917               END                           object_type_code
189918             , CASE r
189919                 WHEN 1 THEN '707' 
189920                 WHEN 2 THEN '707' 
189921                 
189922                 ELSE null
189923               END                           source_application_id
189924             , 'S'             source_type_code
189925             , CASE r
189926                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
189927                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
189928                 
189929                 ELSE null
189930               END                           source_code
189931             , CASE r
189932                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
189933                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
189934                 
189935                 ELSE null
189936               END                           source_value
189937             , CASE r
189938                 WHEN 1 THEN fvl12.meaning
189939                 WHEN 2 THEN fvl38.meaning
189940                 
189941                 ELSE null
189942               END               source_meaning
189943         FROM xla_events_gt     xet  
189944       , CST_XLA_INV_HEADERS_V  h1
189945   , fnd_lookup_values    fvl12
189946   , fnd_lookup_values    fvl38
189947             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
189948        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
189949          AND xet.event_type_code = C_EVENT_TYPE_CODE
189950             AND h1.event_id = xet.event_id
189951    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
189952   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
189953   AND fvl12.view_application_id(+) = 700
189954   AND fvl12.language(+)            = USERENV('LANG')
189955      AND fvl38.lookup_type(+)         = 'YES_NO'
189956   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
189957   AND fvl38.view_application_id(+) = 0
189958   AND fvl38.language(+)            = USERENV('LANG')
189959   
189960 )
189961 ;
189962 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189963 
189964       trace
189965          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
189966          ,p_level    => C_LEVEL_STATEMENT
189967          ,p_module   => l_log_module);
189968 
189969 END IF;
189970 --
189971 
189972 
189973 
189974 --
189975 INSERT INTO xla_diag_sources --line1
189976 (
189977         event_id
189978       , ledger_id
189979       , sla_ledger_id
189980       , description_language
189981       , object_name
189982       , object_type_code
189983       , line_number
189984       , source_application_id
189985       , source_type_code
189986       , source_code
189987       , source_value
189988       , source_meaning
189989       , created_by
189990       , creation_date
189991       , last_update_date
189992       , last_updated_by
189993       , last_update_login
189994       , program_update_date
189995       , program_application_id
189996       , program_id
189997       , request_id
189998 )
189999 SELECT  event_id
190000       , p_target_ledger_id
190001       , p_sla_ledger_id
190002       , p_language
190003       , object_name
190004       , object_type_code
190005       , line_number
190006       , source_application_id
190007       , source_type_code
190008       , source_code
190009       , SUBSTR(source_value,1,1996)
190010       , SUBSTR(source_meaning,1,200)
190011       , xla_environment_pkg.g_Usr_Id
190012       , TRUNC(SYSDATE)
190013       , TRUNC(SYSDATE)
190014       , xla_environment_pkg.g_Usr_Id
190015       , xla_environment_pkg.g_Login_Id
190016       , TRUNC(SYSDATE)
190017       , xla_environment_pkg.g_Prog_Appl_Id
190018       , xla_environment_pkg.g_Prog_Id
190019       , xla_environment_pkg.g_Req_Id
190020   FROM (
190021        SELECT xet.event_id                  event_id
190022             , l2.line_number                 line_number
190023             , CASE r
190024                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
190025                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
190026                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
190027                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
190028                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
190029                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
190030                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
190031                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
190032                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
190033                 
190034                ELSE null
190035               END                           object_name
190036             , CASE r
190037                 WHEN 1 THEN 'LINE' 
190038                 WHEN 2 THEN 'LINE' 
190039                 WHEN 3 THEN 'LINE' 
190040                 WHEN 4 THEN 'LINE' 
190041                 WHEN 5 THEN 'LINE' 
190042                 WHEN 6 THEN 'LINE' 
190043                 WHEN 7 THEN 'LINE' 
190044                 WHEN 8 THEN 'LINE' 
190045                 WHEN 9 THEN 'LINE' 
190046                 
190047                 ELSE null
190048               END                           object_type_code
190049             , CASE r
190050                 WHEN 1 THEN '707' 
190051                 WHEN 2 THEN '707' 
190052                 WHEN 3 THEN '707' 
190053                 WHEN 4 THEN '707' 
190054                 WHEN 5 THEN '707' 
190055                 WHEN 6 THEN '707' 
190056                 WHEN 7 THEN '707' 
190057                 WHEN 8 THEN '707' 
190058                 WHEN 9 THEN '707' 
190059                 
190060                 ELSE null
190061               END                           source_application_id
190062             , 'S'             source_type_code
190063             , CASE r
190064                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
190065                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
190066                 WHEN 3 THEN 'CURRENCY_CODE' 
190067                 WHEN 4 THEN 'ENTERED_AMOUNT' 
190068                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
190069                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
190070                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
190071                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
190072                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
190073                 
190074                 ELSE null
190075               END                           source_code
190076             , CASE r
190077                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
190078                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
190079                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
190080                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
190081                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
190082                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
190083                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
190084                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
190085                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
190086                 
190087                 ELSE null
190088               END                           source_value
190089             , null              source_meaning
190090          FROM  xla_events_gt     xet  
190091         , CST_XLA_INV_LINES_V  l2
190092             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
190093         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
190094           AND xet.event_type_code = C_EVENT_TYPE_CODE
190095             AND l2.event_id          = xet.event_id
190096 
190097 )
190098 ;
190099 --
190100 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190101 
190102       trace
190103          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
190104          ,p_level    => C_LEVEL_STATEMENT
190105          ,p_module   => l_log_module);
190106 
190107 END IF;
190108 
190109 
190110 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
190111       trace
190112          (p_msg      => 'END of insert_sources_294'
190113          ,p_level    => C_LEVEL_PROCEDURE
190114          ,p_module   => l_log_module);
190115 END IF;
190116 EXCEPTION
190117   WHEN xla_exceptions_pkg.application_exception THEN
190118       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
190119             trace
190120                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
190121                ,p_level    => C_LEVEL_EXCEPTION
190122                ,p_module   => l_log_module);
190123       END IF;
190124       RAISE;
190125   WHEN OTHERS THEN
190126       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
190127             trace
190128                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
190129                ,p_level    => C_LEVEL_EXCEPTION
190130                ,p_module   => l_log_module);
190131        END IF;
190132        xla_exceptions_pkg.raise_message
190133            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_294');
190134 END insert_sources_294;
190135 --
190136 
190137 ---------------------------------------
190138 --
190139 -- PRIVATE FUNCTION
190140 --         EventType_294
190141 --
190142 ----------------------------------------
190143 --
190144 FUNCTION EventType_294
190145        (p_application_id         IN NUMBER
190146        ,p_base_ledger_id         IN NUMBER
190147        ,p_target_ledger_id       IN NUMBER
190148        ,p_language               IN VARCHAR2
190149        ,p_currency_code          IN VARCHAR2
190150        ,p_sla_ledger_id          IN NUMBER
190151        ,p_pad_start_date         IN DATE
190152        ,p_pad_end_date           IN DATE
190153        ,p_primary_ledger_id      IN NUMBER)
190154 RETURN BOOLEAN IS
190155 --
190156 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_SHIP_TP';
190157 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
190158 
190159 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
190160 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
190161 --
190162 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190163 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190164 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
190165 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
190166 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190167 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
190168 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
190169 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190170 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
190171 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
190172 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190173 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190174 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190175 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190176 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
190177 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
190178 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
190179 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
190180 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
190181 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
190182 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
190183 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
190184 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
190185 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
190186 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
190187 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
190188 
190189 l_event_id                             NUMBER;
190190 l_previous_event_id                    NUMBER;
190191 l_first_event_id                       NUMBER;
190192 l_last_event_id                        NUMBER;
190193 
190194 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
190195 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
190196 --
190197 --
190198 l_result                    BOOLEAN := TRUE;
190199 l_rows                      NUMBER  := 1000;
190200 l_event_type_name           VARCHAR2(80) := 'User-defined Direct Interorg Shipment, Transfer Price';
190201 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
190202 l_description               VARCHAR2(4000);
190203 l_transaction_reversal      NUMBER;
190204 l_ae_header_id              NUMBER;
190205 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
190206 l_log_module                VARCHAR2(240);
190207 --
190208 l_acct_reversal_source      VARCHAR2(30);
190209 l_trx_reversal_source       VARCHAR2(30);
190210 
190211 l_continue_with_lines       BOOLEAN := TRUE;
190212 --
190213 l_acc_rev_gl_date_source    DATE;                      -- 4262811
190214 --
190215 type t_array_event_id is table of number index by binary_integer;
190216 
190217 l_rec_array_event                    t_rec_array_event;
190218 l_null_rec_array_event               t_rec_array_event;
190219 l_array_ae_header_id                 xla_number_array_type;
190220 l_actual_flag                        VARCHAR2(1) := NULL;
190221 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
190222 l_balance_type_code                  VARCHAR2(1) :=NULL;
190223 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
190224 
190225 --
190226 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
190227 --
190228 
190229 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
190230 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
190231 
190232 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
190233 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
190234 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
190235 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
190236 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
190237 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
190238 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
190239 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
190240 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
190241 
190242 l_array_source_12              t_array_source_12;
190243 l_array_source_12_meaning      t_array_lookup_meaning;
190244 l_array_source_38              t_array_source_38;
190245 l_array_source_38_meaning      t_array_lookup_meaning;
190246 
190247 l_array_source_4      t_array_source_4;
190248 l_array_source_11      t_array_source_11;
190249 l_array_source_15      t_array_source_15;
190250 l_array_source_18      t_array_source_18;
190251 l_array_source_19      t_array_source_19;
190252 l_array_source_20      t_array_source_20;
190253 l_array_source_21      t_array_source_21;
190254 l_array_source_22      t_array_source_22;
190255 l_array_source_24      t_array_source_24;
190256 
190257 --
190258 CURSOR header_cur
190259 IS
190260 SELECT /*+ leading(xet) cardinality(xet,1) */
190261 -- Event Type Code: UDIR_INTERORG_SHIP_TP
190262 -- Event Class Code: USER_DEFINE
190263     xet.entity_id
190264   , xet.legal_entity_id
190265   , xet.entity_code
190266   , xet.transaction_number
190267   , xet.event_id
190268   , xet.event_class_code
190269   , xet.event_type_code
190270   , xet.event_number
190271   , xet.event_date
190272   , xet.transaction_date
190273   , xet.reference_num_1
190274   , xet.reference_num_2
190275   , xet.reference_num_3
190276   , xet.reference_num_4
190277   , xet.reference_char_1
190278   , xet.reference_char_2
190279   , xet.reference_char_3
190280   , xet.reference_char_4
190281   , xet.reference_date_1
190282   , xet.reference_date_2
190283   , xet.reference_date_3
190284   , xet.reference_date_4
190285   , xet.event_created_by
190286   , xet.budgetary_control_flag 
190287   , h1.DISTRIBUTION_TYPE    source_12
190288   , fvl12.meaning   source_12_meaning
190289   , h1.TRANSFER_TO_GL_INDICATOR    source_38
190290   , fvl38.meaning   source_38_meaning
190291   FROM xla_events_gt     xet 
190292   , CST_XLA_INV_HEADERS_V  h1
190293   , fnd_lookup_values    fvl12
190294   , fnd_lookup_values    fvl38
190295  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
190296    and xet.event_type_code = C_EVENT_TYPE_CODE
190297    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
190298    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
190299   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
190300   AND fvl12.view_application_id(+) = 700
190301   AND fvl12.language(+)            = USERENV('LANG')
190302      AND fvl38.lookup_type(+)         = 'YES_NO'
190303   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
190304   AND fvl38.view_application_id(+) = 0
190305   AND fvl38.language(+)            = USERENV('LANG')
190306   
190307  ORDER BY event_id
190308 ;
190309 
190310 
190311 --
190312 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
190313 IS
190314 SELECT /*+ leading(xet) cardinality(xet,1) */
190315 -- Event Type Code: UDIR_INTERORG_SHIP_TP
190316 -- Event Class Code: USER_DEFINE
190317     xet.entity_id
190318    ,xet.legal_entity_id
190319    ,xet.entity_code
190320    ,xet.transaction_number
190321    ,xet.event_id
190322    ,xet.event_class_code
190323    ,xet.event_type_code
190324    ,xet.event_number
190325    ,xet.event_date
190326    ,xet.transaction_date
190327    ,xet.reference_num_1
190328    ,xet.reference_num_2
190329    ,xet.reference_num_3
190330    ,xet.reference_num_4
190331    ,xet.reference_char_1
190332    ,xet.reference_char_2
190333    ,xet.reference_char_3
190334    ,xet.reference_char_4
190335    ,xet.reference_date_1
190336    ,xet.reference_date_2
190337    ,xet.reference_date_3
190338    ,xet.reference_date_4
190339    ,xet.event_created_by
190340    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
190341   , l2.CODE_COMBINATION_ID    source_4
190342   , l2.DISTRIBUTION_IDENTIFIER    source_11
190343   , l2.CURRENCY_CODE    source_15
190344   , l2.ENTERED_AMOUNT    source_18
190345   , l2.CURRENCY_CONVERSION_DATE    source_19
190346   , l2.CURRENCY_CONVERSION_RATE    source_20
190347   , l2.CURRENCY_CONVERSION_TYPE    source_21
190348   , l2.ACCOUNTED_AMOUNT    source_22
190349   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
190350   FROM xla_events_gt     xet 
190351   , CST_XLA_INV_LINES_V  l2
190352  WHERE xet.event_id between x_first_event_id and x_last_event_id
190353    and xet.event_date between p_pad_start_date and p_pad_end_date
190354    and xet.event_type_code = C_EVENT_TYPE_CODE
190355    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
190356 ;
190357 
190358 --
190359 BEGIN
190360 IF g_log_enabled THEN
190361    l_log_module := C_DEFAULT_MODULE||'.EventType_294';
190362 END IF;
190363 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
190364    trace
190365       (p_msg      => 'BEGIN of EventType_294'
190366       ,p_level    => C_LEVEL_PROCEDURE
190367       ,p_module   => l_log_module);
190368 END IF;
190369 
190370 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190371    trace
190372       (p_msg      => 'p_application_id = '||p_application_id||
190373                      ' - p_base_ledger_id = '||p_base_ledger_id||
190374                      ' - p_target_ledger_id  = '||p_target_ledger_id||
190375                      ' - p_language = '||p_language||
190376                      ' - p_currency_code = '||p_currency_code||
190377                      ' - p_sla_ledger_id = '||p_sla_ledger_id
190378       ,p_level    => C_LEVEL_STATEMENT
190379       ,p_module   => l_log_module);
190380 END IF;
190381 --
190382 -- initialze arrays
190383 --
190384 g_array_event.DELETE;
190385 l_rec_array_event := l_null_rec_array_event;
190386 --
190387 --------------------------------------
190388 -- 4262811 Initialze MPA Line Number
190389 --------------------------------------
190390 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
190391 
190392 --
190393 
190394 --
190395 OPEN header_cur;
190396 --
190397 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190398    trace
190399    (p_msg      => 'SQL - FETCH header_cur'
190400    ,p_level    => C_LEVEL_STATEMENT
190401    ,p_module   => l_log_module);
190402 END IF;
190403 --
190404 LOOP
190405 FETCH header_cur BULK COLLECT INTO
190406         l_array_entity_id
190407       , l_array_legal_entity_id
190408       , l_array_entity_code
190409       , l_array_transaction_num
190410       , l_array_event_id
190411       , l_array_class_code
190412       , l_array_event_type
190413       , l_array_event_number
190414       , l_array_event_date
190415       , l_array_transaction_date
190416       , l_array_reference_num_1
190417       , l_array_reference_num_2
190418       , l_array_reference_num_3
190419       , l_array_reference_num_4
190420       , l_array_reference_char_1
190421       , l_array_reference_char_2
190422       , l_array_reference_char_3
190423       , l_array_reference_char_4
190424       , l_array_reference_date_1
190425       , l_array_reference_date_2
190426       , l_array_reference_date_3
190427       , l_array_reference_date_4
190428       , l_array_event_created_by
190429       , l_array_budgetary_control_flag 
190430       , l_array_source_12
190431       , l_array_source_12_meaning
190432       , l_array_source_38
190433       , l_array_source_38_meaning
190434       LIMIT l_rows;
190435 --
190436 IF (C_LEVEL_EVENT >= g_log_level) THEN
190437    trace
190438    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
190439    ,p_level    => C_LEVEL_EVENT
190440    ,p_module   => l_log_module);
190441 END IF;
190442 --
190443 EXIT WHEN l_array_entity_id.COUNT = 0;
190444 
190445 -- initialize arrays
190446 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
190447 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
190448 
190449 --
190450 -- Bug 4458708
190451 --
190452 XLA_AE_LINES_PKG.g_LineNumber := 0;
190453 
190454 
190455 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
190456 g_last_hdr_idx := l_array_event_id.LAST;
190457 --
190458 -- loop for the headers. Each iteration is for each header extract row
190459 -- fetched in header cursor
190460 --
190461 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
190462 
190463 --
190464 -- set event info as cache for other routines to refer event attributes
190465 --
190466 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
190467    (p_application_id           => p_application_id
190468    ,p_primary_ledger_id        => p_primary_ledger_id
190469    ,p_base_ledger_id           => p_base_ledger_id
190470    ,p_target_ledger_id         => p_target_ledger_id
190471    ,p_entity_id                => l_array_entity_id(hdr_idx)
190472    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
190473    ,p_entity_code              => l_array_entity_code(hdr_idx)
190474    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
190475    ,p_event_id                 => l_array_event_id(hdr_idx)
190476    ,p_event_class_code         => l_array_class_code(hdr_idx)
190477    ,p_event_type_code          => l_array_event_type(hdr_idx)
190478    ,p_event_number             => l_array_event_number(hdr_idx)
190479    ,p_event_date               => l_array_event_date(hdr_idx)
190480    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
190481    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
190482    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
190483    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
190484    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
190485    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
190486    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
190487    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
190488    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
190489    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
190490    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
190491    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
190492    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
190493    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
190494    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
190495 
190496 --
190497 -- set the status of entry to C_VALID (0)
190498 --
190499 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
190500 
190501 --
190502 -- initialize a row for ae header
190503 --
190504 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
190505 
190506 l_event_id := l_array_event_id(hdr_idx);
190507 
190508 --
190509 -- storing the hdr_idx for event. May be used by line cursor.
190510 --
190511 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
190512 
190513 --
190514 -- store sources from header extract. This can be improved to
190515 -- store only those sources from header extract that may be used in lines
190516 --
190517 
190518 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
190519 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
190520 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
190521 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
190522 
190523 --
190524 -- initilaize the status of ae headers for diffrent balance types
190525 -- the status is initialised to C_NOT_CREATED (2)
190526 --
190527 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
190528 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
190529 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
190530 
190531 --
190532 -- call api to validate and store accounting attributes for header
190533 --
190534 
190535 ------------------------------------------------------------
190536 -- Accrual Reversal : to get date for Standard Source (NONE)
190537 ------------------------------------------------------------
190538 l_acc_rev_gl_date_source := NULL;
190539 
190540      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
190541       l_rec_acct_attrs.array_date_value(1) := 
190542 xla_ae_sources_pkg.GetSystemSourceDate(
190543    p_source_code           => 'XLA_REFERENCE_DATE_1'
190544  , p_source_type_code      => 'Y'
190545  , p_source_application_id =>  602
190546 );
190547      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
190548       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
190549 
190550 
190551 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
190552 
190553 XLA_AE_HEADER_PKG.SetJeCategoryName;
190554 
190555 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
190556 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
190557 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
190558 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
190559 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
190560 
190561 
190562 -- No header level analytical criteria
190563 
190564 --
190565 --accounting attribute enhancement, bug 3612931
190566 --
190567 l_trx_reversal_source := SUBSTR(NULL, 1,30);
190568 
190569 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
190570    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
190571 
190572    xla_accounting_err_pkg.build_message
190573       (p_appli_s_name            => 'XLA'
190574       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
190575       ,p_token_1                 => 'ACCT_ATTR_NAME'
190576       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
190577       ,p_token_2                 => 'PRODUCT_NAME'
190578       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
190579       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
190580       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
190581       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
190582 
190583 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
190584    --
190585    -- following sets the accounting attributes needed to reverse
190586    -- accounting for a distributeion
190587    --
190588    xla_ae_lines_pkg.SetTrxReversalAttrs
190589       (p_event_id              => l_event_id
190590       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
190591       ,p_trx_reversal_source   => l_trx_reversal_source);
190592 
190593 END IF;
190594 
190595 
190596 ----------------------------------------------------------------
190597 -- 4262811 -  update the header statuses to invalid in need be
190598 ----------------------------------------------------------------
190599 --
190600 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
190601 
190602 
190603   -----------------------------------------------
190604   -- No accrual reversal for the event class/type
190605   -----------------------------------------------
190606 ----------------------------------------------------------------
190607 
190608 --
190609 -- this ends the header loop iteration for one bulk fetch
190610 --
190611 END LOOP;
190612 
190613 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
190614 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
190615 
190616 --
190617 -- insert dummy rows into lines gt table that were created due to
190618 -- transaction reversals
190619 --
190620 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
190621    l_result := XLA_AE_LINES_PKG.InsertLines;
190622 END IF;
190623 
190624 --
190625 -- reset the temp_line_num for each set of events fetched from header
190626 -- cursor rather than doing it for each new event in line cursor
190627 -- Bug 3939231
190628 --
190629 xla_ae_lines_pkg.g_temp_line_num := 0;
190630 
190631 
190632 
190633 --
190634 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
190635 --
190636 --
190637 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190638 
190639       trace
190640          (p_msg      => 'SQL - FETCH line_cur'
190641          ,p_level    => C_LEVEL_STATEMENT
190642          ,p_module   => l_log_module);
190643 
190644 END IF;
190645 --
190646 --
190647 LOOP
190648   --
190649   FETCH line_cur BULK COLLECT INTO
190650         l_array_entity_id
190651       , l_array_legal_entity_id
190652       , l_array_entity_code
190653       , l_array_transaction_num
190654       , l_array_event_id
190655       , l_array_class_code
190656       , l_array_event_type
190657       , l_array_event_number
190658       , l_array_event_date
190659       , l_array_transaction_date
190660       , l_array_reference_num_1
190661       , l_array_reference_num_2
190662       , l_array_reference_num_3
190663       , l_array_reference_num_4
190664       , l_array_reference_char_1
190665       , l_array_reference_char_2
190666       , l_array_reference_char_3
190667       , l_array_reference_char_4
190668       , l_array_reference_date_1
190669       , l_array_reference_date_2
190670       , l_array_reference_date_3
190671       , l_array_reference_date_4
190672       , l_array_event_created_by
190673       , l_array_budgetary_control_flag
190674       , l_array_extract_line_num 
190675       , l_array_source_4
190676       , l_array_source_11
190677       , l_array_source_15
190678       , l_array_source_18
190679       , l_array_source_19
190680       , l_array_source_20
190681       , l_array_source_21
190682       , l_array_source_22
190683       , l_array_source_24
190684       LIMIT l_rows;
190685 
190686   --
190687   IF (C_LEVEL_EVENT >= g_log_level) THEN
190688             trace
190689                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
190690                ,p_level    => C_LEVEL_EVENT
190691                ,p_module   => l_log_module);
190692   END IF;
190693   --
190694   EXIT WHEN l_array_entity_id.count = 0;
190695 
190696   XLA_AE_LINES_PKG.g_rec_lines := null;
190697 
190698 --
190699 -- Bug 4458708
190700 --
190701 XLA_AE_LINES_PKG.g_LineNumber := 0;
190702 --
190703 --
190704 
190705 FOR Idx IN 1..l_array_event_id.count LOOP
190706    --
190707    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
190708    --
190709    l_event_id := l_array_event_id(idx);  -- 5648433
190710 
190711    --
190712    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
190713    --
190714 
190715    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
190716              (g_array_event(l_event_id).array_value_num('header_index'))
190717          ,'N'
190718          ) <> 'Y'
190719    THEN
190720       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190721          trace
190722             (p_msg      => 'Trancaction revesal option is not Y '
190723             ,p_level    => C_LEVEL_STATEMENT
190724             ,p_module   => l_log_module);
190725       END IF;
190726 
190727 --
190728 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
190729 --
190730 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
190731 --
190732 -- set event info as cache for other routines to refer event attributes
190733 --
190734 
190735 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
190736    l_previous_event_id := l_event_id;
190737 
190738    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
190739       (p_application_id           => p_application_id
190740       ,p_primary_ledger_id        => p_primary_ledger_id
190741       ,p_base_ledger_id           => p_base_ledger_id
190742       ,p_target_ledger_id         => p_target_ledger_id
190743       ,p_entity_id                => l_array_entity_id(Idx)
190744       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
190745       ,p_entity_code              => l_array_entity_code(Idx)
190746       ,p_transaction_num          => l_array_transaction_num(Idx)
190747       ,p_event_id                 => l_array_event_id(Idx)
190748       ,p_event_class_code         => l_array_class_code(Idx)
190749       ,p_event_type_code          => l_array_event_type(Idx)
190750       ,p_event_number             => l_array_event_number(Idx)
190751       ,p_event_date               => l_array_event_date(Idx)
190752       ,p_transaction_date         => l_array_transaction_date(Idx)
190753       ,p_reference_num_1          => l_array_reference_num_1(Idx)
190754       ,p_reference_num_2          => l_array_reference_num_2(Idx)
190755       ,p_reference_num_3          => l_array_reference_num_3(Idx)
190756       ,p_reference_num_4          => l_array_reference_num_4(Idx)
190757       ,p_reference_char_1         => l_array_reference_char_1(Idx)
190758       ,p_reference_char_2         => l_array_reference_char_2(Idx)
190759       ,p_reference_char_3         => l_array_reference_char_3(Idx)
190760       ,p_reference_char_4         => l_array_reference_char_4(Idx)
190761       ,p_reference_date_1         => l_array_reference_date_1(Idx)
190762       ,p_reference_date_2         => l_array_reference_date_2(Idx)
190763       ,p_reference_date_3         => l_array_reference_date_3(Idx)
190764       ,p_reference_date_4         => l_array_reference_date_4(Idx)
190765       ,p_event_created_by         => l_array_event_created_by(Idx)
190766       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
190767        --
190768 END IF;
190769 
190770 
190771 
190772 --
190773 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
190774 
190775 l_acct_reversal_source := SUBSTR(NULL, 1,30);
190776 
190777 IF l_continue_with_lines THEN
190778    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
190779       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
190780 
190781       xla_accounting_err_pkg.build_message
190782          (p_appli_s_name            => 'XLA'
190783          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
190784          ,p_token_1                 => 'LINE_NUMBER'
190785          ,p_value_1                 => l_array_extract_line_num(Idx)
190786          ,p_token_2                 => 'PRODUCT_NAME'
190787          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
190788          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
190789          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
190790          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
190791 
190792    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
190793       --
190794       -- following sets the accounting attributes needed to reverse
190795       -- accounting for a distributeion
190796       --
190797 
190798       --
190799       -- 5217187
190800       --
190801       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
190802       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
190803                                        g_array_event(l_event_id).array_value_num('header_index'));
190804       --
190805       --
190806 
190807       -- No reversal code generated
190808 
190809       xla_ae_lines_pkg.SetAcctReversalAttrs
190810          (p_event_id             => l_event_id
190811          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
190812          ,p_calculate_acctd_flag => l_calculate_acctd_flag
190813          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
190814    END IF;
190815 
190816    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
190817        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
190818 
190819 --
190820 AcctLineType_62 (
190821  p_application_id  => p_application_id
190822  ,p_event_id     => l_event_id
190823  ,p_calculate_acctd_flag => l_calculate_acctd_flag
190824  ,p_calculate_g_l_flag => l_calculate_g_l_flag
190825  ,p_actual_flag => l_actual_flag
190826  ,p_balance_type_code => l_balance_type_code
190827  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
190828  
190829  , p_source_4 => l_array_source_4(Idx)
190830  , p_source_11 => l_array_source_11(Idx)
190831  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
190832  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
190833  , p_source_15 => l_array_source_15(Idx)
190834  , p_source_18 => l_array_source_18(Idx)
190835  , p_source_19 => l_array_source_19(Idx)
190836  , p_source_20 => l_array_source_20(Idx)
190837  , p_source_21 => l_array_source_21(Idx)
190838  , p_source_22 => l_array_source_22(Idx)
190839  , p_source_24 => l_array_source_24(Idx)
190840  );
190841 If(l_balance_type_code = 'A') THEN
190842   l_actual_gain_loss_ref := l_gain_or_loss_ref;
190843 END IF;
190844 
190845 --
190846 
190847 
190848 --
190849 AcctLineType_79 (
190850  p_application_id  => p_application_id
190851  ,p_event_id     => l_event_id
190852  ,p_calculate_acctd_flag => l_calculate_acctd_flag
190853  ,p_calculate_g_l_flag => l_calculate_g_l_flag
190854  ,p_actual_flag => l_actual_flag
190855  ,p_balance_type_code => l_balance_type_code
190856  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
190857  
190858  , p_source_4 => l_array_source_4(Idx)
190859  , p_source_11 => l_array_source_11(Idx)
190860  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
190861  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
190862  , p_source_15 => l_array_source_15(Idx)
190863  , p_source_18 => l_array_source_18(Idx)
190864  , p_source_19 => l_array_source_19(Idx)
190865  , p_source_20 => l_array_source_20(Idx)
190866  , p_source_21 => l_array_source_21(Idx)
190867  , p_source_22 => l_array_source_22(Idx)
190868  , p_source_24 => l_array_source_24(Idx)
190869  );
190870 If(l_balance_type_code = 'A') THEN
190871   l_actual_gain_loss_ref := l_gain_or_loss_ref;
190872 END IF;
190873 
190874 --
190875 
190876 
190877 --
190878 AcctLineType_93 (
190879  p_application_id  => p_application_id
190880  ,p_event_id     => l_event_id
190881  ,p_calculate_acctd_flag => l_calculate_acctd_flag
190882  ,p_calculate_g_l_flag => l_calculate_g_l_flag
190883  ,p_actual_flag => l_actual_flag
190884  ,p_balance_type_code => l_balance_type_code
190885  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
190886  
190887  , p_source_4 => l_array_source_4(Idx)
190888  , p_source_11 => l_array_source_11(Idx)
190889  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
190890  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
190891  , p_source_15 => l_array_source_15(Idx)
190892  , p_source_18 => l_array_source_18(Idx)
190893  , p_source_19 => l_array_source_19(Idx)
190894  , p_source_20 => l_array_source_20(Idx)
190895  , p_source_21 => l_array_source_21(Idx)
190896  , p_source_22 => l_array_source_22(Idx)
190897  , p_source_24 => l_array_source_24(Idx)
190898  );
190899 If(l_balance_type_code = 'A') THEN
190900   l_actual_gain_loss_ref := l_gain_or_loss_ref;
190901 END IF;
190902 
190903 --
190904 
190905 
190906 --
190907 AcctLineType_107 (
190908  p_application_id  => p_application_id
190909  ,p_event_id     => l_event_id
190910  ,p_calculate_acctd_flag => l_calculate_acctd_flag
190911  ,p_calculate_g_l_flag => l_calculate_g_l_flag
190912  ,p_actual_flag => l_actual_flag
190913  ,p_balance_type_code => l_balance_type_code
190914  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
190915  
190916  , p_source_4 => l_array_source_4(Idx)
190917  , p_source_11 => l_array_source_11(Idx)
190918  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
190919  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
190920  , p_source_15 => l_array_source_15(Idx)
190921  , p_source_18 => l_array_source_18(Idx)
190922  , p_source_19 => l_array_source_19(Idx)
190923  , p_source_20 => l_array_source_20(Idx)
190924  , p_source_21 => l_array_source_21(Idx)
190925  , p_source_22 => l_array_source_22(Idx)
190926  , p_source_24 => l_array_source_24(Idx)
190927  );
190928 If(l_balance_type_code = 'A') THEN
190929   l_actual_gain_loss_ref := l_gain_or_loss_ref;
190930 END IF;
190931 
190932 --
190933 
190934 
190935 --
190936 AcctLineType_117 (
190937  p_application_id  => p_application_id
190938  ,p_event_id     => l_event_id
190939  ,p_calculate_acctd_flag => l_calculate_acctd_flag
190940  ,p_calculate_g_l_flag => l_calculate_g_l_flag
190941  ,p_actual_flag => l_actual_flag
190942  ,p_balance_type_code => l_balance_type_code
190943  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
190944  
190945  , p_source_4 => l_array_source_4(Idx)
190946  , p_source_11 => l_array_source_11(Idx)
190947  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
190948  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
190949  , p_source_15 => l_array_source_15(Idx)
190950  , p_source_18 => l_array_source_18(Idx)
190951  , p_source_19 => l_array_source_19(Idx)
190952  , p_source_20 => l_array_source_20(Idx)
190953  , p_source_21 => l_array_source_21(Idx)
190954  , p_source_22 => l_array_source_22(Idx)
190955  , p_source_24 => l_array_source_24(Idx)
190956  );
190957 If(l_balance_type_code = 'A') THEN
190958   l_actual_gain_loss_ref := l_gain_or_loss_ref;
190959 END IF;
190960 
190961 --
190962 
190963 
190964 --
190965 AcctLineType_145 (
190966  p_application_id  => p_application_id
190967  ,p_event_id     => l_event_id
190968  ,p_calculate_acctd_flag => l_calculate_acctd_flag
190969  ,p_calculate_g_l_flag => l_calculate_g_l_flag
190970  ,p_actual_flag => l_actual_flag
190971  ,p_balance_type_code => l_balance_type_code
190972  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
190973  
190974  , p_source_4 => l_array_source_4(Idx)
190975  , p_source_11 => l_array_source_11(Idx)
190976  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
190977  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
190978  , p_source_15 => l_array_source_15(Idx)
190979  , p_source_18 => l_array_source_18(Idx)
190980  , p_source_19 => l_array_source_19(Idx)
190981  , p_source_20 => l_array_source_20(Idx)
190982  , p_source_21 => l_array_source_21(Idx)
190983  , p_source_22 => l_array_source_22(Idx)
190984  , p_source_24 => l_array_source_24(Idx)
190985  );
190986 If(l_balance_type_code = 'A') THEN
190987   l_actual_gain_loss_ref := l_gain_or_loss_ref;
190988 END IF;
190989 
190990 --
190991 
190992 
190993 --
190994 AcctLineType_165 (
190995  p_application_id  => p_application_id
190996  ,p_event_id     => l_event_id
190997  ,p_calculate_acctd_flag => l_calculate_acctd_flag
190998  ,p_calculate_g_l_flag => l_calculate_g_l_flag
190999  ,p_actual_flag => l_actual_flag
191000  ,p_balance_type_code => l_balance_type_code
191001  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
191002  
191003  , p_source_4 => l_array_source_4(Idx)
191004  , p_source_11 => l_array_source_11(Idx)
191005  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
191006  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
191007  , p_source_15 => l_array_source_15(Idx)
191008  , p_source_18 => l_array_source_18(Idx)
191009  , p_source_19 => l_array_source_19(Idx)
191010  , p_source_20 => l_array_source_20(Idx)
191011  , p_source_21 => l_array_source_21(Idx)
191012  , p_source_22 => l_array_source_22(Idx)
191013  , p_source_24 => l_array_source_24(Idx)
191014  );
191015 If(l_balance_type_code = 'A') THEN
191016   l_actual_gain_loss_ref := l_gain_or_loss_ref;
191017 END IF;
191018 
191019 --
191020 
191021 
191022 --
191023 AcctLineType_187 (
191024  p_application_id  => p_application_id
191025  ,p_event_id     => l_event_id
191026  ,p_calculate_acctd_flag => l_calculate_acctd_flag
191027  ,p_calculate_g_l_flag => l_calculate_g_l_flag
191028  ,p_actual_flag => l_actual_flag
191029  ,p_balance_type_code => l_balance_type_code
191030  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
191031  
191032  , p_source_4 => l_array_source_4(Idx)
191033  , p_source_11 => l_array_source_11(Idx)
191034  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
191035  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
191036  , p_source_15 => l_array_source_15(Idx)
191037  , p_source_18 => l_array_source_18(Idx)
191038  , p_source_19 => l_array_source_19(Idx)
191039  , p_source_20 => l_array_source_20(Idx)
191040  , p_source_21 => l_array_source_21(Idx)
191041  , p_source_22 => l_array_source_22(Idx)
191042  , p_source_24 => l_array_source_24(Idx)
191043  );
191044 If(l_balance_type_code = 'A') THEN
191045   l_actual_gain_loss_ref := l_gain_or_loss_ref;
191046 END IF;
191047 
191048 --
191049 
191050 
191051 --
191052 AcctLineType_233 (
191053  p_application_id  => p_application_id
191054  ,p_event_id     => l_event_id
191055  ,p_calculate_acctd_flag => l_calculate_acctd_flag
191056  ,p_calculate_g_l_flag => l_calculate_g_l_flag
191057  ,p_actual_flag => l_actual_flag
191058  ,p_balance_type_code => l_balance_type_code
191059  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
191060  
191061  , p_source_4 => l_array_source_4(Idx)
191062  , p_source_11 => l_array_source_11(Idx)
191063  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
191064  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
191065  , p_source_15 => l_array_source_15(Idx)
191066  , p_source_18 => l_array_source_18(Idx)
191067  , p_source_19 => l_array_source_19(Idx)
191068  , p_source_20 => l_array_source_20(Idx)
191069  , p_source_21 => l_array_source_21(Idx)
191070  , p_source_22 => l_array_source_22(Idx)
191071  , p_source_24 => l_array_source_24(Idx)
191072  );
191073 If(l_balance_type_code = 'A') THEN
191074   l_actual_gain_loss_ref := l_gain_or_loss_ref;
191075 END IF;
191076 
191077 --
191078 
191079       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
191080       -- or secondary ledger that has different currency with primary
191081       -- or alc that is calculated by sla
191082       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
191083             (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'))
191084 
191085 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
191086 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
191087           AND (l_actual_flag = 'A')) THEN
191088         XLA_AE_LINES_PKG.CreateGainOrLossLines(
191089           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
191090          ,p_application_id   => p_application_id
191091          ,p_amb_context_code => 'DEFAULT'
191092          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
191093          ,p_event_class_code => C_EVENT_CLASS_CODE
191094          ,p_event_type_code  => C_EVENT_TYPE_CODE
191095          
191096          ,p_gain_ccid        => -1
191097          ,p_loss_ccid        => -1
191098 
191099          ,p_actual_flag      => l_actual_flag
191100          ,p_enc_flag         => null
191101          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
191102          ,p_enc_g_l_ref      => null
191103          );
191104       END IF;
191105    END IF;
191106 END IF;
191107 
191108    ELSE
191109       --
191110       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
191111       --
191112       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191113          trace
191114             (p_msg      => 'Trancaction revesal option is Y'
191115             ,p_level    => C_LEVEL_STATEMENT
191116             ,p_module   => l_log_module);
191117       END IF;
191118    END IF;
191119 
191120 END LOOP;
191121 l_result := XLA_AE_LINES_PKG.InsertLines ;
191122 end loop;
191123 close line_cur;
191124 
191125 
191126 --
191127 -- insert headers into xla_ae_headers_gt table
191128 --
191129 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
191130 
191131 -- insert into errors table here.
191132 
191133 END LOOP;
191134 
191135 --
191136 -- 4865292
191137 --
191138 -- Compare g_hdr_extract_count with event count in
191139 -- CreateHeadersAndLines.
191140 --
191141 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
191142 
191143 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191144    trace (p_msg     => '# rows extracted from header extract objects '
191145                     || ' (running total): '
191146                     || g_hdr_extract_count
191147          ,p_level   => C_LEVEL_STATEMENT
191148          ,p_module  => l_log_module);
191149 END IF;
191150 
191151 CLOSE header_cur;
191152 --
191153 
191154 --
191155 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
191156    trace
191157       (p_msg      => 'END of EventType_294'
191158       ,p_level    => C_LEVEL_PROCEDURE
191159       ,p_module   => l_log_module);
191160 END IF;
191161 --
191162 RETURN l_result;
191163 EXCEPTION
191164 WHEN xla_exceptions_pkg.application_exception THEN
191165    
191166 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
191167 
191168    
191169 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
191170 
191171    RAISE;
191172 
191173 WHEN NO_DATA_FOUND THEN
191174 
191175 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
191176 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
191177 
191178 FOR header_record IN header_cur
191179 LOOP
191180     l_array_header_events(header_record.event_id) := header_record.event_id;
191181 END LOOP;
191182 
191183 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
191184 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
191185 
191186 fnd_file.put_line(fnd_file.LOG, '                    ');
191187 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
191188 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
191189 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
191190 
191191 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
191192 LOOP
191193 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
191194 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
191195         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
191196 	END IF;
191197 END LOOP;
191198 
191199 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
191200 fnd_file.put_line(fnd_file.LOG, '                    ');
191201 
191202 
191203 xla_exceptions_pkg.raise_message
191204       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_294');
191205 
191206 
191207 WHEN OTHERS THEN
191208    xla_exceptions_pkg.raise_message
191209       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_294');
191210 END EventType_294;
191211 --
191212 
191213 ---------------------------------------
191214 --
191215 -- PRIVATE PROCEDURE
191216 --         insert_sources_295
191217 --
191218 ----------------------------------------
191219 --
191220 PROCEDURE insert_sources_295(
191221                                 p_target_ledger_id       IN NUMBER
191222                               , p_language               IN VARCHAR2
191223                               , p_sla_ledger_id          IN NUMBER
191224                               , p_pad_start_date         IN DATE
191225                               , p_pad_end_date           IN DATE
191226                          )
191227 IS
191228 
191229 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UFOB_RCPT_SENDER_SHIP';
191230 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
191231 p_apps_owner                   VARCHAR2(30);
191232 l_log_module                   VARCHAR2(240);
191233 BEGIN
191234 IF g_log_enabled THEN
191235       l_log_module := C_DEFAULT_MODULE||'.insert_sources_295';
191236 END IF;
191237 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
191238 
191239       trace
191240          (p_msg      => 'BEGIN of insert_sources_295'
191241          ,p_level    => C_LEVEL_PROCEDURE
191242          ,p_module   => l_log_module);
191243 
191244 END IF;
191245 
191246 -- select APPS owner
191247 SELECT oracle_username
191248   INTO p_apps_owner
191249   FROM fnd_oracle_userid
191250  WHERE read_only_flag = 'U'
191251 ;
191252 
191253 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191254       trace
191255          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
191256                         ' - p_language = '||p_language||
191257                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
191258                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
191259                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
191260                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
191261          ,p_level    => C_LEVEL_STATEMENT
191262          ,p_module   => l_log_module);
191263 END IF;
191264 
191265 
191266 --
191267 INSERT INTO xla_diag_sources --hdr1
191268 (
191269         event_id
191270       , ledger_id
191271       , sla_ledger_id
191272       , description_language
191273       , object_name
191274       , object_type_code
191275       , line_number
191276       , source_application_id
191277       , source_type_code
191278       , source_code
191279       , source_value
191280       , source_meaning
191281       , created_by
191282       , creation_date
191283       , last_update_date
191284       , last_updated_by
191285       , last_update_login
191286       , program_update_date
191287       , program_application_id
191288       , program_id
191289       , request_id
191290 )
191291 SELECT
191292         event_id
191293       , p_target_ledger_id
191294       , p_sla_ledger_id
191295       , p_language
191296       , object_name
191297       , object_type_code
191298       , line_number
191299       , source_application_id
191300       , source_type_code
191301       , source_code
191302       , SUBSTR(source_value ,1,1996)
191303       , SUBSTR(source_meaning,1,200)
191304       , xla_environment_pkg.g_Usr_Id
191305       , TRUNC(SYSDATE)
191306       , TRUNC(SYSDATE)
191307       , xla_environment_pkg.g_Usr_Id
191308       , xla_environment_pkg.g_Login_Id
191309       , TRUNC(SYSDATE)
191310       , xla_environment_pkg.g_Prog_Appl_Id
191311       , xla_environment_pkg.g_Prog_Id
191312       , xla_environment_pkg.g_Req_Id
191313   FROM (
191314        SELECT xet.event_id                  event_id
191315             , 0                             line_number
191316             , CASE r
191317                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
191318                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
191319                 
191320                ELSE null
191321               END                           object_name
191322             , CASE r
191323                 WHEN 1 THEN 'HEADER' 
191324                 WHEN 2 THEN 'HEADER' 
191325                 
191326                 ELSE null
191327               END                           object_type_code
191328             , CASE r
191329                 WHEN 1 THEN '707' 
191330                 WHEN 2 THEN '707' 
191331                 
191332                 ELSE null
191333               END                           source_application_id
191334             , 'S'             source_type_code
191335             , CASE r
191336                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
191337                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
191338                 
191339                 ELSE null
191340               END                           source_code
191341             , CASE r
191342                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
191343                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
191344                 
191345                 ELSE null
191346               END                           source_value
191347             , CASE r
191348                 WHEN 1 THEN fvl12.meaning
191349                 WHEN 2 THEN fvl38.meaning
191350                 
191351                 ELSE null
191352               END               source_meaning
191353         FROM xla_events_gt     xet  
191354       , CST_XLA_INV_HEADERS_V  h1
191355   , fnd_lookup_values    fvl12
191356   , fnd_lookup_values    fvl38
191357             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
191358        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
191359          AND xet.event_type_code = C_EVENT_TYPE_CODE
191360             AND h1.event_id = xet.event_id
191361    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
191362   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
191363   AND fvl12.view_application_id(+) = 700
191364   AND fvl12.language(+)            = USERENV('LANG')
191365      AND fvl38.lookup_type(+)         = 'YES_NO'
191366   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
191367   AND fvl38.view_application_id(+) = 0
191368   AND fvl38.language(+)            = USERENV('LANG')
191369   
191370 )
191371 ;
191372 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191373 
191374       trace
191375          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
191376          ,p_level    => C_LEVEL_STATEMENT
191377          ,p_module   => l_log_module);
191378 
191379 END IF;
191380 --
191381 
191382 
191383 
191384 --
191385 INSERT INTO xla_diag_sources --line1
191386 (
191387         event_id
191388       , ledger_id
191389       , sla_ledger_id
191390       , description_language
191391       , object_name
191392       , object_type_code
191393       , line_number
191394       , source_application_id
191395       , source_type_code
191396       , source_code
191397       , source_value
191398       , source_meaning
191399       , created_by
191400       , creation_date
191401       , last_update_date
191402       , last_updated_by
191403       , last_update_login
191404       , program_update_date
191405       , program_application_id
191406       , program_id
191407       , request_id
191408 )
191409 SELECT  event_id
191410       , p_target_ledger_id
191411       , p_sla_ledger_id
191412       , p_language
191413       , object_name
191414       , object_type_code
191415       , line_number
191416       , source_application_id
191417       , source_type_code
191418       , source_code
191419       , SUBSTR(source_value,1,1996)
191420       , SUBSTR(source_meaning,1,200)
191421       , xla_environment_pkg.g_Usr_Id
191422       , TRUNC(SYSDATE)
191423       , TRUNC(SYSDATE)
191424       , xla_environment_pkg.g_Usr_Id
191425       , xla_environment_pkg.g_Login_Id
191426       , TRUNC(SYSDATE)
191427       , xla_environment_pkg.g_Prog_Appl_Id
191428       , xla_environment_pkg.g_Prog_Id
191429       , xla_environment_pkg.g_Req_Id
191430   FROM (
191431        SELECT xet.event_id                  event_id
191432             , l2.line_number                 line_number
191433             , CASE r
191434                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
191435                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
191436                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
191437                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
191438                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
191439                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
191440                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
191441                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
191442                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
191443                 
191444                ELSE null
191445               END                           object_name
191446             , CASE r
191447                 WHEN 1 THEN 'LINE' 
191448                 WHEN 2 THEN 'LINE' 
191449                 WHEN 3 THEN 'LINE' 
191450                 WHEN 4 THEN 'LINE' 
191451                 WHEN 5 THEN 'LINE' 
191452                 WHEN 6 THEN 'LINE' 
191453                 WHEN 7 THEN 'LINE' 
191454                 WHEN 8 THEN 'LINE' 
191455                 WHEN 9 THEN 'LINE' 
191456                 
191457                 ELSE null
191458               END                           object_type_code
191459             , CASE r
191460                 WHEN 1 THEN '707' 
191461                 WHEN 2 THEN '707' 
191462                 WHEN 3 THEN '707' 
191463                 WHEN 4 THEN '707' 
191464                 WHEN 5 THEN '707' 
191465                 WHEN 6 THEN '707' 
191466                 WHEN 7 THEN '707' 
191467                 WHEN 8 THEN '707' 
191468                 WHEN 9 THEN '707' 
191469                 
191470                 ELSE null
191471               END                           source_application_id
191472             , 'S'             source_type_code
191473             , CASE r
191474                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
191475                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
191476                 WHEN 3 THEN 'CURRENCY_CODE' 
191477                 WHEN 4 THEN 'ENTERED_AMOUNT' 
191478                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
191479                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
191480                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
191481                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
191482                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
191483                 
191484                 ELSE null
191485               END                           source_code
191486             , CASE r
191487                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
191488                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
191489                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
191490                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
191491                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
191492                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
191493                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
191494                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
191495                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
191496                 
191497                 ELSE null
191498               END                           source_value
191499             , null              source_meaning
191500          FROM  xla_events_gt     xet  
191501         , CST_XLA_INV_LINES_V  l2
191502             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
191503         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
191504           AND xet.event_type_code = C_EVENT_TYPE_CODE
191505             AND l2.event_id          = xet.event_id
191506 
191507 )
191508 ;
191509 --
191510 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191511 
191512       trace
191513          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
191514          ,p_level    => C_LEVEL_STATEMENT
191515          ,p_module   => l_log_module);
191516 
191517 END IF;
191518 
191519 
191520 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
191521       trace
191522          (p_msg      => 'END of insert_sources_295'
191523          ,p_level    => C_LEVEL_PROCEDURE
191524          ,p_module   => l_log_module);
191525 END IF;
191526 EXCEPTION
191527   WHEN xla_exceptions_pkg.application_exception THEN
191528       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
191529             trace
191530                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
191531                ,p_level    => C_LEVEL_EXCEPTION
191532                ,p_module   => l_log_module);
191533       END IF;
191534       RAISE;
191535   WHEN OTHERS THEN
191536       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
191537             trace
191538                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
191539                ,p_level    => C_LEVEL_EXCEPTION
191540                ,p_module   => l_log_module);
191541        END IF;
191542        xla_exceptions_pkg.raise_message
191543            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_295');
191544 END insert_sources_295;
191545 --
191546 
191547 ---------------------------------------
191548 --
191549 -- PRIVATE FUNCTION
191550 --         EventType_295
191551 --
191552 ----------------------------------------
191553 --
191554 FUNCTION EventType_295
191555        (p_application_id         IN NUMBER
191556        ,p_base_ledger_id         IN NUMBER
191557        ,p_target_ledger_id       IN NUMBER
191558        ,p_language               IN VARCHAR2
191559        ,p_currency_code          IN VARCHAR2
191560        ,p_sla_ledger_id          IN NUMBER
191561        ,p_pad_start_date         IN DATE
191562        ,p_pad_end_date           IN DATE
191563        ,p_primary_ledger_id      IN NUMBER)
191564 RETURN BOOLEAN IS
191565 --
191566 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UFOB_RCPT_SENDER_SHIP';
191567 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
191568 
191569 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
191570 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
191571 --
191572 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
191573 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
191574 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
191575 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
191576 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
191577 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
191578 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
191579 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
191580 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
191581 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
191582 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
191583 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
191584 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
191585 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
191586 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
191587 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
191588 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
191589 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
191590 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
191591 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
191592 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
191593 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
191594 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
191595 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
191596 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
191597 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
191598 
191599 l_event_id                             NUMBER;
191600 l_previous_event_id                    NUMBER;
191601 l_first_event_id                       NUMBER;
191602 l_last_event_id                        NUMBER;
191603 
191604 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
191605 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
191606 --
191607 --
191608 l_result                    BOOLEAN := TRUE;
191609 l_rows                      NUMBER  := 1000;
191610 l_event_type_name           VARCHAR2(80) := 'User-defined Sender Intransit Shipment - FOB Receipt';
191611 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
191612 l_description               VARCHAR2(4000);
191613 l_transaction_reversal      NUMBER;
191614 l_ae_header_id              NUMBER;
191615 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
191616 l_log_module                VARCHAR2(240);
191617 --
191618 l_acct_reversal_source      VARCHAR2(30);
191619 l_trx_reversal_source       VARCHAR2(30);
191620 
191621 l_continue_with_lines       BOOLEAN := TRUE;
191622 --
191623 l_acc_rev_gl_date_source    DATE;                      -- 4262811
191624 --
191625 type t_array_event_id is table of number index by binary_integer;
191626 
191627 l_rec_array_event                    t_rec_array_event;
191628 l_null_rec_array_event               t_rec_array_event;
191629 l_array_ae_header_id                 xla_number_array_type;
191630 l_actual_flag                        VARCHAR2(1) := NULL;
191631 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
191632 l_balance_type_code                  VARCHAR2(1) :=NULL;
191633 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
191634 
191635 --
191636 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
191637 --
191638 
191639 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
191640 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
191641 
191642 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
191643 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
191644 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
191645 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
191646 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
191647 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
191648 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
191649 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
191650 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
191651 
191652 l_array_source_12              t_array_source_12;
191653 l_array_source_12_meaning      t_array_lookup_meaning;
191654 l_array_source_38              t_array_source_38;
191655 l_array_source_38_meaning      t_array_lookup_meaning;
191656 
191657 l_array_source_4      t_array_source_4;
191658 l_array_source_11      t_array_source_11;
191659 l_array_source_15      t_array_source_15;
191660 l_array_source_18      t_array_source_18;
191661 l_array_source_19      t_array_source_19;
191662 l_array_source_20      t_array_source_20;
191663 l_array_source_21      t_array_source_21;
191664 l_array_source_22      t_array_source_22;
191665 l_array_source_24      t_array_source_24;
191666 
191667 --
191668 CURSOR header_cur
191669 IS
191670 SELECT /*+ leading(xet) cardinality(xet,1) */
191671 -- Event Type Code: UFOB_RCPT_SENDER_SHIP
191672 -- Event Class Code: USER_DEFINE
191673     xet.entity_id
191674   , xet.legal_entity_id
191675   , xet.entity_code
191676   , xet.transaction_number
191677   , xet.event_id
191678   , xet.event_class_code
191679   , xet.event_type_code
191680   , xet.event_number
191681   , xet.event_date
191682   , xet.transaction_date
191683   , xet.reference_num_1
191684   , xet.reference_num_2
191685   , xet.reference_num_3
191686   , xet.reference_num_4
191687   , xet.reference_char_1
191688   , xet.reference_char_2
191689   , xet.reference_char_3
191690   , xet.reference_char_4
191691   , xet.reference_date_1
191692   , xet.reference_date_2
191693   , xet.reference_date_3
191694   , xet.reference_date_4
191695   , xet.event_created_by
191696   , xet.budgetary_control_flag 
191697   , h1.DISTRIBUTION_TYPE    source_12
191698   , fvl12.meaning   source_12_meaning
191699   , h1.TRANSFER_TO_GL_INDICATOR    source_38
191700   , fvl38.meaning   source_38_meaning
191701   FROM xla_events_gt     xet 
191702   , CST_XLA_INV_HEADERS_V  h1
191703   , fnd_lookup_values    fvl12
191704   , fnd_lookup_values    fvl38
191705  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
191706    and xet.event_type_code = C_EVENT_TYPE_CODE
191707    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
191708    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
191709   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
191710   AND fvl12.view_application_id(+) = 700
191711   AND fvl12.language(+)            = USERENV('LANG')
191712      AND fvl38.lookup_type(+)         = 'YES_NO'
191713   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
191714   AND fvl38.view_application_id(+) = 0
191715   AND fvl38.language(+)            = USERENV('LANG')
191716   
191717  ORDER BY event_id
191718 ;
191719 
191720 
191721 --
191722 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
191723 IS
191724 SELECT /*+ leading(xet) cardinality(xet,1) */
191725 -- Event Type Code: UFOB_RCPT_SENDER_SHIP
191726 -- Event Class Code: USER_DEFINE
191727     xet.entity_id
191728    ,xet.legal_entity_id
191729    ,xet.entity_code
191730    ,xet.transaction_number
191731    ,xet.event_id
191732    ,xet.event_class_code
191733    ,xet.event_type_code
191734    ,xet.event_number
191735    ,xet.event_date
191736    ,xet.transaction_date
191737    ,xet.reference_num_1
191738    ,xet.reference_num_2
191739    ,xet.reference_num_3
191740    ,xet.reference_num_4
191741    ,xet.reference_char_1
191742    ,xet.reference_char_2
191743    ,xet.reference_char_3
191744    ,xet.reference_char_4
191745    ,xet.reference_date_1
191746    ,xet.reference_date_2
191747    ,xet.reference_date_3
191748    ,xet.reference_date_4
191749    ,xet.event_created_by
191750    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
191751   , l2.CODE_COMBINATION_ID    source_4
191752   , l2.DISTRIBUTION_IDENTIFIER    source_11
191753   , l2.CURRENCY_CODE    source_15
191754   , l2.ENTERED_AMOUNT    source_18
191755   , l2.CURRENCY_CONVERSION_DATE    source_19
191756   , l2.CURRENCY_CONVERSION_RATE    source_20
191757   , l2.CURRENCY_CONVERSION_TYPE    source_21
191758   , l2.ACCOUNTED_AMOUNT    source_22
191759   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
191760   FROM xla_events_gt     xet 
191761   , CST_XLA_INV_LINES_V  l2
191762  WHERE xet.event_id between x_first_event_id and x_last_event_id
191763    and xet.event_date between p_pad_start_date and p_pad_end_date
191764    and xet.event_type_code = C_EVENT_TYPE_CODE
191765    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
191766 ;
191767 
191768 --
191769 BEGIN
191770 IF g_log_enabled THEN
191771    l_log_module := C_DEFAULT_MODULE||'.EventType_295';
191772 END IF;
191773 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
191774    trace
191775       (p_msg      => 'BEGIN of EventType_295'
191776       ,p_level    => C_LEVEL_PROCEDURE
191777       ,p_module   => l_log_module);
191778 END IF;
191779 
191780 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191781    trace
191782       (p_msg      => 'p_application_id = '||p_application_id||
191783                      ' - p_base_ledger_id = '||p_base_ledger_id||
191784                      ' - p_target_ledger_id  = '||p_target_ledger_id||
191785                      ' - p_language = '||p_language||
191786                      ' - p_currency_code = '||p_currency_code||
191787                      ' - p_sla_ledger_id = '||p_sla_ledger_id
191788       ,p_level    => C_LEVEL_STATEMENT
191789       ,p_module   => l_log_module);
191790 END IF;
191791 --
191792 -- initialze arrays
191793 --
191794 g_array_event.DELETE;
191795 l_rec_array_event := l_null_rec_array_event;
191796 --
191797 --------------------------------------
191798 -- 4262811 Initialze MPA Line Number
191799 --------------------------------------
191800 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
191801 
191802 --
191803 
191804 --
191805 OPEN header_cur;
191806 --
191807 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191808    trace
191809    (p_msg      => 'SQL - FETCH header_cur'
191810    ,p_level    => C_LEVEL_STATEMENT
191811    ,p_module   => l_log_module);
191812 END IF;
191813 --
191814 LOOP
191815 FETCH header_cur BULK COLLECT INTO
191816         l_array_entity_id
191817       , l_array_legal_entity_id
191818       , l_array_entity_code
191819       , l_array_transaction_num
191820       , l_array_event_id
191821       , l_array_class_code
191822       , l_array_event_type
191823       , l_array_event_number
191824       , l_array_event_date
191825       , l_array_transaction_date
191826       , l_array_reference_num_1
191827       , l_array_reference_num_2
191828       , l_array_reference_num_3
191829       , l_array_reference_num_4
191830       , l_array_reference_char_1
191831       , l_array_reference_char_2
191832       , l_array_reference_char_3
191833       , l_array_reference_char_4
191834       , l_array_reference_date_1
191835       , l_array_reference_date_2
191836       , l_array_reference_date_3
191837       , l_array_reference_date_4
191838       , l_array_event_created_by
191839       , l_array_budgetary_control_flag 
191840       , l_array_source_12
191841       , l_array_source_12_meaning
191842       , l_array_source_38
191843       , l_array_source_38_meaning
191844       LIMIT l_rows;
191845 --
191846 IF (C_LEVEL_EVENT >= g_log_level) THEN
191847    trace
191848    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
191849    ,p_level    => C_LEVEL_EVENT
191850    ,p_module   => l_log_module);
191851 END IF;
191852 --
191853 EXIT WHEN l_array_entity_id.COUNT = 0;
191854 
191855 -- initialize arrays
191856 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
191857 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
191858 
191859 --
191860 -- Bug 4458708
191861 --
191862 XLA_AE_LINES_PKG.g_LineNumber := 0;
191863 
191864 
191865 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
191866 g_last_hdr_idx := l_array_event_id.LAST;
191867 --
191868 -- loop for the headers. Each iteration is for each header extract row
191869 -- fetched in header cursor
191870 --
191871 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
191872 
191873 --
191874 -- set event info as cache for other routines to refer event attributes
191875 --
191876 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
191877    (p_application_id           => p_application_id
191878    ,p_primary_ledger_id        => p_primary_ledger_id
191879    ,p_base_ledger_id           => p_base_ledger_id
191880    ,p_target_ledger_id         => p_target_ledger_id
191881    ,p_entity_id                => l_array_entity_id(hdr_idx)
191882    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
191883    ,p_entity_code              => l_array_entity_code(hdr_idx)
191884    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
191885    ,p_event_id                 => l_array_event_id(hdr_idx)
191886    ,p_event_class_code         => l_array_class_code(hdr_idx)
191887    ,p_event_type_code          => l_array_event_type(hdr_idx)
191888    ,p_event_number             => l_array_event_number(hdr_idx)
191889    ,p_event_date               => l_array_event_date(hdr_idx)
191890    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
191891    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
191892    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
191893    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
191894    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
191895    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
191896    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
191897    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
191898    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
191899    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
191900    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
191901    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
191902    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
191903    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
191904    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
191905 
191906 --
191907 -- set the status of entry to C_VALID (0)
191908 --
191909 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
191910 
191911 --
191912 -- initialize a row for ae header
191913 --
191914 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
191915 
191916 l_event_id := l_array_event_id(hdr_idx);
191917 
191918 --
191919 -- storing the hdr_idx for event. May be used by line cursor.
191920 --
191921 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
191922 
191923 --
191924 -- store sources from header extract. This can be improved to
191925 -- store only those sources from header extract that may be used in lines
191926 --
191927 
191928 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
191929 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
191930 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
191931 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
191932 
191933 --
191934 -- initilaize the status of ae headers for diffrent balance types
191935 -- the status is initialised to C_NOT_CREATED (2)
191936 --
191937 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
191938 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
191939 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
191940 
191941 --
191942 -- call api to validate and store accounting attributes for header
191943 --
191944 
191945 ------------------------------------------------------------
191946 -- Accrual Reversal : to get date for Standard Source (NONE)
191947 ------------------------------------------------------------
191948 l_acc_rev_gl_date_source := NULL;
191949 
191950      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
191951       l_rec_acct_attrs.array_date_value(1) := 
191952 xla_ae_sources_pkg.GetSystemSourceDate(
191953    p_source_code           => 'XLA_REFERENCE_DATE_1'
191954  , p_source_type_code      => 'Y'
191955  , p_source_application_id =>  602
191956 );
191957      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
191958       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
191959 
191960 
191961 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
191962 
191963 XLA_AE_HEADER_PKG.SetJeCategoryName;
191964 
191965 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
191966 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
191967 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
191968 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
191969 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
191970 
191971 
191972 -- No header level analytical criteria
191973 
191974 --
191975 --accounting attribute enhancement, bug 3612931
191976 --
191977 l_trx_reversal_source := SUBSTR(NULL, 1,30);
191978 
191979 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
191980    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
191981 
191982    xla_accounting_err_pkg.build_message
191983       (p_appli_s_name            => 'XLA'
191984       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
191985       ,p_token_1                 => 'ACCT_ATTR_NAME'
191986       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
191987       ,p_token_2                 => 'PRODUCT_NAME'
191988       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
191989       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
191990       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
191991       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
191992 
191993 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
191994    --
191995    -- following sets the accounting attributes needed to reverse
191996    -- accounting for a distributeion
191997    --
191998    xla_ae_lines_pkg.SetTrxReversalAttrs
191999       (p_event_id              => l_event_id
192000       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
192001       ,p_trx_reversal_source   => l_trx_reversal_source);
192002 
192003 END IF;
192004 
192005 
192006 ----------------------------------------------------------------
192007 -- 4262811 -  update the header statuses to invalid in need be
192008 ----------------------------------------------------------------
192009 --
192010 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
192011 
192012 
192013   -----------------------------------------------
192014   -- No accrual reversal for the event class/type
192015   -----------------------------------------------
192016 ----------------------------------------------------------------
192017 
192018 --
192019 -- this ends the header loop iteration for one bulk fetch
192020 --
192021 END LOOP;
192022 
192023 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
192024 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
192025 
192026 --
192027 -- insert dummy rows into lines gt table that were created due to
192028 -- transaction reversals
192029 --
192030 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
192031    l_result := XLA_AE_LINES_PKG.InsertLines;
192032 END IF;
192033 
192034 --
192035 -- reset the temp_line_num for each set of events fetched from header
192036 -- cursor rather than doing it for each new event in line cursor
192037 -- Bug 3939231
192038 --
192039 xla_ae_lines_pkg.g_temp_line_num := 0;
192040 
192041 
192042 
192043 --
192044 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
192045 --
192046 --
192047 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192048 
192049       trace
192050          (p_msg      => 'SQL - FETCH line_cur'
192051          ,p_level    => C_LEVEL_STATEMENT
192052          ,p_module   => l_log_module);
192053 
192054 END IF;
192055 --
192056 --
192057 LOOP
192058   --
192059   FETCH line_cur BULK COLLECT INTO
192060         l_array_entity_id
192061       , l_array_legal_entity_id
192062       , l_array_entity_code
192063       , l_array_transaction_num
192064       , l_array_event_id
192065       , l_array_class_code
192066       , l_array_event_type
192067       , l_array_event_number
192068       , l_array_event_date
192069       , l_array_transaction_date
192070       , l_array_reference_num_1
192071       , l_array_reference_num_2
192072       , l_array_reference_num_3
192073       , l_array_reference_num_4
192074       , l_array_reference_char_1
192075       , l_array_reference_char_2
192076       , l_array_reference_char_3
192077       , l_array_reference_char_4
192078       , l_array_reference_date_1
192079       , l_array_reference_date_2
192080       , l_array_reference_date_3
192081       , l_array_reference_date_4
192082       , l_array_event_created_by
192083       , l_array_budgetary_control_flag
192084       , l_array_extract_line_num 
192085       , l_array_source_4
192086       , l_array_source_11
192087       , l_array_source_15
192088       , l_array_source_18
192089       , l_array_source_19
192090       , l_array_source_20
192091       , l_array_source_21
192092       , l_array_source_22
192093       , l_array_source_24
192094       LIMIT l_rows;
192095 
192096   --
192097   IF (C_LEVEL_EVENT >= g_log_level) THEN
192098             trace
192099                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
192100                ,p_level    => C_LEVEL_EVENT
192101                ,p_module   => l_log_module);
192102   END IF;
192103   --
192104   EXIT WHEN l_array_entity_id.count = 0;
192105 
192106   XLA_AE_LINES_PKG.g_rec_lines := null;
192107 
192108 --
192109 -- Bug 4458708
192110 --
192111 XLA_AE_LINES_PKG.g_LineNumber := 0;
192112 --
192113 --
192114 
192115 FOR Idx IN 1..l_array_event_id.count LOOP
192116    --
192117    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
192118    --
192119    l_event_id := l_array_event_id(idx);  -- 5648433
192120 
192121    --
192122    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
192123    --
192124 
192125    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
192126              (g_array_event(l_event_id).array_value_num('header_index'))
192127          ,'N'
192128          ) <> 'Y'
192129    THEN
192130       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192131          trace
192132             (p_msg      => 'Trancaction revesal option is not Y '
192133             ,p_level    => C_LEVEL_STATEMENT
192134             ,p_module   => l_log_module);
192135       END IF;
192136 
192137 --
192138 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
192139 --
192140 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
192141 --
192142 -- set event info as cache for other routines to refer event attributes
192143 --
192144 
192145 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
192146    l_previous_event_id := l_event_id;
192147 
192148    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
192149       (p_application_id           => p_application_id
192150       ,p_primary_ledger_id        => p_primary_ledger_id
192151       ,p_base_ledger_id           => p_base_ledger_id
192152       ,p_target_ledger_id         => p_target_ledger_id
192153       ,p_entity_id                => l_array_entity_id(Idx)
192154       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
192155       ,p_entity_code              => l_array_entity_code(Idx)
192156       ,p_transaction_num          => l_array_transaction_num(Idx)
192157       ,p_event_id                 => l_array_event_id(Idx)
192158       ,p_event_class_code         => l_array_class_code(Idx)
192159       ,p_event_type_code          => l_array_event_type(Idx)
192160       ,p_event_number             => l_array_event_number(Idx)
192161       ,p_event_date               => l_array_event_date(Idx)
192162       ,p_transaction_date         => l_array_transaction_date(Idx)
192163       ,p_reference_num_1          => l_array_reference_num_1(Idx)
192164       ,p_reference_num_2          => l_array_reference_num_2(Idx)
192165       ,p_reference_num_3          => l_array_reference_num_3(Idx)
192166       ,p_reference_num_4          => l_array_reference_num_4(Idx)
192167       ,p_reference_char_1         => l_array_reference_char_1(Idx)
192168       ,p_reference_char_2         => l_array_reference_char_2(Idx)
192169       ,p_reference_char_3         => l_array_reference_char_3(Idx)
192170       ,p_reference_char_4         => l_array_reference_char_4(Idx)
192171       ,p_reference_date_1         => l_array_reference_date_1(Idx)
192172       ,p_reference_date_2         => l_array_reference_date_2(Idx)
192173       ,p_reference_date_3         => l_array_reference_date_3(Idx)
192174       ,p_reference_date_4         => l_array_reference_date_4(Idx)
192175       ,p_event_created_by         => l_array_event_created_by(Idx)
192176       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
192177        --
192178 END IF;
192179 
192180 
192181 
192182 --
192183 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
192184 
192185 l_acct_reversal_source := SUBSTR(NULL, 1,30);
192186 
192187 IF l_continue_with_lines THEN
192188    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
192189       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
192190 
192191       xla_accounting_err_pkg.build_message
192192          (p_appli_s_name            => 'XLA'
192193          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
192194          ,p_token_1                 => 'LINE_NUMBER'
192195          ,p_value_1                 => l_array_extract_line_num(Idx)
192196          ,p_token_2                 => 'PRODUCT_NAME'
192197          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
192198          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
192199          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
192200          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
192201 
192202    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
192203       --
192204       -- following sets the accounting attributes needed to reverse
192205       -- accounting for a distributeion
192206       --
192207 
192208       --
192209       -- 5217187
192210       --
192211       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
192212       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
192213                                        g_array_event(l_event_id).array_value_num('header_index'));
192214       --
192215       --
192216 
192217       -- No reversal code generated
192218 
192219       xla_ae_lines_pkg.SetAcctReversalAttrs
192220          (p_event_id             => l_event_id
192221          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
192222          ,p_calculate_acctd_flag => l_calculate_acctd_flag
192223          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
192224    END IF;
192225 
192226    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
192227        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
192228 
192229 --
192230 AcctLineType_121 (
192231  p_application_id  => p_application_id
192232  ,p_event_id     => l_event_id
192233  ,p_calculate_acctd_flag => l_calculate_acctd_flag
192234  ,p_calculate_g_l_flag => l_calculate_g_l_flag
192235  ,p_actual_flag => l_actual_flag
192236  ,p_balance_type_code => l_balance_type_code
192237  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
192238  
192239  , p_source_4 => l_array_source_4(Idx)
192240  , p_source_11 => l_array_source_11(Idx)
192241  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
192242  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
192243  , p_source_15 => l_array_source_15(Idx)
192244  , p_source_18 => l_array_source_18(Idx)
192245  , p_source_19 => l_array_source_19(Idx)
192246  , p_source_20 => l_array_source_20(Idx)
192247  , p_source_21 => l_array_source_21(Idx)
192248  , p_source_22 => l_array_source_22(Idx)
192249  , p_source_24 => l_array_source_24(Idx)
192250  );
192251 If(l_balance_type_code = 'A') THEN
192252   l_actual_gain_loss_ref := l_gain_or_loss_ref;
192253 END IF;
192254 
192255 --
192256 
192257 
192258 --
192259 AcctLineType_138 (
192260  p_application_id  => p_application_id
192261  ,p_event_id     => l_event_id
192262  ,p_calculate_acctd_flag => l_calculate_acctd_flag
192263  ,p_calculate_g_l_flag => l_calculate_g_l_flag
192264  ,p_actual_flag => l_actual_flag
192265  ,p_balance_type_code => l_balance_type_code
192266  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
192267  
192268  , p_source_4 => l_array_source_4(Idx)
192269  , p_source_11 => l_array_source_11(Idx)
192270  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
192271  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
192272  , p_source_15 => l_array_source_15(Idx)
192273  , p_source_18 => l_array_source_18(Idx)
192274  , p_source_19 => l_array_source_19(Idx)
192275  , p_source_20 => l_array_source_20(Idx)
192276  , p_source_21 => l_array_source_21(Idx)
192277  , p_source_22 => l_array_source_22(Idx)
192278  , p_source_24 => l_array_source_24(Idx)
192279  );
192280 If(l_balance_type_code = 'A') THEN
192281   l_actual_gain_loss_ref := l_gain_or_loss_ref;
192282 END IF;
192283 
192284 --
192285 
192286 
192287 --
192288 AcctLineType_206 (
192289  p_application_id  => p_application_id
192290  ,p_event_id     => l_event_id
192291  ,p_calculate_acctd_flag => l_calculate_acctd_flag
192292  ,p_calculate_g_l_flag => l_calculate_g_l_flag
192293  ,p_actual_flag => l_actual_flag
192294  ,p_balance_type_code => l_balance_type_code
192295  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
192296  
192297  , p_source_4 => l_array_source_4(Idx)
192298  , p_source_11 => l_array_source_11(Idx)
192299  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
192300  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
192301  , p_source_15 => l_array_source_15(Idx)
192302  , p_source_18 => l_array_source_18(Idx)
192303  , p_source_19 => l_array_source_19(Idx)
192304  , p_source_20 => l_array_source_20(Idx)
192305  , p_source_21 => l_array_source_21(Idx)
192306  , p_source_22 => l_array_source_22(Idx)
192307  , p_source_24 => l_array_source_24(Idx)
192308  );
192309 If(l_balance_type_code = 'A') THEN
192310   l_actual_gain_loss_ref := l_gain_or_loss_ref;
192311 END IF;
192312 
192313 --
192314 
192315       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
192316       -- or secondary ledger that has different currency with primary
192317       -- or alc that is calculated by sla
192318       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
192319             (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'))
192320 
192321 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
192322 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
192323           AND (l_actual_flag = 'A')) THEN
192324         XLA_AE_LINES_PKG.CreateGainOrLossLines(
192325           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
192326          ,p_application_id   => p_application_id
192327          ,p_amb_context_code => 'DEFAULT'
192328          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
192329          ,p_event_class_code => C_EVENT_CLASS_CODE
192330          ,p_event_type_code  => C_EVENT_TYPE_CODE
192331          
192332          ,p_gain_ccid        => -1
192333          ,p_loss_ccid        => -1
192334 
192335          ,p_actual_flag      => l_actual_flag
192336          ,p_enc_flag         => null
192337          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
192338          ,p_enc_g_l_ref      => null
192339          );
192340       END IF;
192341    END IF;
192342 END IF;
192343 
192344    ELSE
192345       --
192346       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
192347       --
192348       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192349          trace
192350             (p_msg      => 'Trancaction revesal option is Y'
192351             ,p_level    => C_LEVEL_STATEMENT
192352             ,p_module   => l_log_module);
192353       END IF;
192354    END IF;
192355 
192356 END LOOP;
192357 l_result := XLA_AE_LINES_PKG.InsertLines ;
192358 end loop;
192359 close line_cur;
192360 
192361 
192362 --
192363 -- insert headers into xla_ae_headers_gt table
192364 --
192365 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
192366 
192367 -- insert into errors table here.
192368 
192369 END LOOP;
192370 
192371 --
192372 -- 4865292
192373 --
192374 -- Compare g_hdr_extract_count with event count in
192375 -- CreateHeadersAndLines.
192376 --
192377 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
192378 
192379 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192380    trace (p_msg     => '# rows extracted from header extract objects '
192381                     || ' (running total): '
192382                     || g_hdr_extract_count
192383          ,p_level   => C_LEVEL_STATEMENT
192384          ,p_module  => l_log_module);
192385 END IF;
192386 
192387 CLOSE header_cur;
192388 --
192389 
192390 --
192391 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192392    trace
192393       (p_msg      => 'END of EventType_295'
192394       ,p_level    => C_LEVEL_PROCEDURE
192395       ,p_module   => l_log_module);
192396 END IF;
192397 --
192398 RETURN l_result;
192399 EXCEPTION
192400 WHEN xla_exceptions_pkg.application_exception THEN
192401    
192402 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
192403 
192404    
192405 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
192406 
192407    RAISE;
192408 
192409 WHEN NO_DATA_FOUND THEN
192410 
192411 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
192412 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
192413 
192414 FOR header_record IN header_cur
192415 LOOP
192416     l_array_header_events(header_record.event_id) := header_record.event_id;
192417 END LOOP;
192418 
192419 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
192420 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
192421 
192422 fnd_file.put_line(fnd_file.LOG, '                    ');
192423 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
192424 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
192425 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
192426 
192427 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
192428 LOOP
192429 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
192430 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
192431         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
192432 	END IF;
192433 END LOOP;
192434 
192435 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
192436 fnd_file.put_line(fnd_file.LOG, '                    ');
192437 
192438 
192439 xla_exceptions_pkg.raise_message
192440       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_295');
192441 
192442 
192443 WHEN OTHERS THEN
192444    xla_exceptions_pkg.raise_message
192445       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_295');
192446 END EventType_295;
192447 --
192448 
192449 ---------------------------------------
192450 --
192451 -- PRIVATE PROCEDURE
192452 --         insert_sources_296
192453 --
192454 ----------------------------------------
192455 --
192456 PROCEDURE insert_sources_296(
192457                                 p_target_ledger_id       IN NUMBER
192458                               , p_language               IN VARCHAR2
192459                               , p_sla_ledger_id          IN NUMBER
192460                               , p_pad_start_date         IN DATE
192461                               , p_pad_end_date           IN DATE
192462                          )
192463 IS
192464 
192465 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
192466 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
192467 p_apps_owner                   VARCHAR2(30);
192468 l_log_module                   VARCHAR2(240);
192469 BEGIN
192470 IF g_log_enabled THEN
192471       l_log_module := C_DEFAULT_MODULE||'.insert_sources_296';
192472 END IF;
192473 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192474 
192475       trace
192476          (p_msg      => 'BEGIN of insert_sources_296'
192477          ,p_level    => C_LEVEL_PROCEDURE
192478          ,p_module   => l_log_module);
192479 
192480 END IF;
192481 
192482 -- select APPS owner
192483 SELECT oracle_username
192484   INTO p_apps_owner
192485   FROM fnd_oracle_userid
192486  WHERE read_only_flag = 'U'
192487 ;
192488 
192489 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192490       trace
192491          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
192492                         ' - p_language = '||p_language||
192493                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
192494                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
192495                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
192496                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
192497          ,p_level    => C_LEVEL_STATEMENT
192498          ,p_module   => l_log_module);
192499 END IF;
192500 
192501 
192502 --
192503 INSERT INTO xla_diag_sources --hdr1
192504 (
192505         event_id
192506       , ledger_id
192507       , sla_ledger_id
192508       , description_language
192509       , object_name
192510       , object_type_code
192511       , line_number
192512       , source_application_id
192513       , source_type_code
192514       , source_code
192515       , source_value
192516       , source_meaning
192517       , created_by
192518       , creation_date
192519       , last_update_date
192520       , last_updated_by
192521       , last_update_login
192522       , program_update_date
192523       , program_application_id
192524       , program_id
192525       , request_id
192526 )
192527 SELECT
192528         event_id
192529       , p_target_ledger_id
192530       , p_sla_ledger_id
192531       , p_language
192532       , object_name
192533       , object_type_code
192534       , line_number
192535       , source_application_id
192536       , source_type_code
192537       , source_code
192538       , SUBSTR(source_value ,1,1996)
192539       , SUBSTR(source_meaning,1,200)
192540       , xla_environment_pkg.g_Usr_Id
192541       , TRUNC(SYSDATE)
192542       , TRUNC(SYSDATE)
192543       , xla_environment_pkg.g_Usr_Id
192544       , xla_environment_pkg.g_Login_Id
192545       , TRUNC(SYSDATE)
192546       , xla_environment_pkg.g_Prog_Appl_Id
192547       , xla_environment_pkg.g_Prog_Id
192548       , xla_environment_pkg.g_Req_Id
192549   FROM (
192550        SELECT xet.event_id                  event_id
192551             , 0                             line_number
192552             , CASE r
192553                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
192554                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
192555                 
192556                ELSE null
192557               END                           object_name
192558             , CASE r
192559                 WHEN 1 THEN 'HEADER' 
192560                 WHEN 2 THEN 'HEADER' 
192561                 
192562                 ELSE null
192563               END                           object_type_code
192564             , CASE r
192565                 WHEN 1 THEN '707' 
192566                 WHEN 2 THEN '707' 
192567                 
192568                 ELSE null
192569               END                           source_application_id
192570             , 'S'             source_type_code
192571             , CASE r
192572                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
192573                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
192574                 
192575                 ELSE null
192576               END                           source_code
192577             , CASE r
192578                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
192579                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
192580                 
192581                 ELSE null
192582               END                           source_value
192583             , CASE r
192584                 WHEN 1 THEN fvl12.meaning
192585                 WHEN 2 THEN fvl38.meaning
192586                 
192587                 ELSE null
192588               END               source_meaning
192589         FROM xla_events_gt     xet  
192590       , CST_XLA_INV_HEADERS_V  h1
192591   , fnd_lookup_values    fvl12
192592   , fnd_lookup_values    fvl38
192593             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
192594        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
192595          AND xet.event_type_code = C_EVENT_TYPE_CODE
192596             AND h1.event_id = xet.event_id
192597    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
192598   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
192599   AND fvl12.view_application_id(+) = 700
192600   AND fvl12.language(+)            = USERENV('LANG')
192601      AND fvl38.lookup_type(+)         = 'YES_NO'
192602   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
192603   AND fvl38.view_application_id(+) = 0
192604   AND fvl38.language(+)            = USERENV('LANG')
192605   
192606 )
192607 ;
192608 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192609 
192610       trace
192611          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
192612          ,p_level    => C_LEVEL_STATEMENT
192613          ,p_module   => l_log_module);
192614 
192615 END IF;
192616 --
192617 
192618 
192619 
192620 --
192621 INSERT INTO xla_diag_sources --line1
192622 (
192623         event_id
192624       , ledger_id
192625       , sla_ledger_id
192626       , description_language
192627       , object_name
192628       , object_type_code
192629       , line_number
192630       , source_application_id
192631       , source_type_code
192632       , source_code
192633       , source_value
192634       , source_meaning
192635       , created_by
192636       , creation_date
192637       , last_update_date
192638       , last_updated_by
192639       , last_update_login
192640       , program_update_date
192641       , program_application_id
192642       , program_id
192643       , request_id
192644 )
192645 SELECT  event_id
192646       , p_target_ledger_id
192647       , p_sla_ledger_id
192648       , p_language
192649       , object_name
192650       , object_type_code
192651       , line_number
192652       , source_application_id
192653       , source_type_code
192654       , source_code
192655       , SUBSTR(source_value,1,1996)
192656       , SUBSTR(source_meaning,1,200)
192657       , xla_environment_pkg.g_Usr_Id
192658       , TRUNC(SYSDATE)
192659       , TRUNC(SYSDATE)
192660       , xla_environment_pkg.g_Usr_Id
192661       , xla_environment_pkg.g_Login_Id
192662       , TRUNC(SYSDATE)
192663       , xla_environment_pkg.g_Prog_Appl_Id
192664       , xla_environment_pkg.g_Prog_Id
192665       , xla_environment_pkg.g_Req_Id
192666   FROM (
192667        SELECT xet.event_id                  event_id
192668             , l2.line_number                 line_number
192669             , CASE r
192670                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
192671                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
192672                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
192673                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
192674                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
192675                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
192676                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
192677                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
192678                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
192679                 
192680                ELSE null
192681               END                           object_name
192682             , CASE r
192683                 WHEN 1 THEN 'LINE' 
192684                 WHEN 2 THEN 'LINE' 
192685                 WHEN 3 THEN 'LINE' 
192686                 WHEN 4 THEN 'LINE' 
192687                 WHEN 5 THEN 'LINE' 
192688                 WHEN 6 THEN 'LINE' 
192689                 WHEN 7 THEN 'LINE' 
192690                 WHEN 8 THEN 'LINE' 
192691                 WHEN 9 THEN 'LINE' 
192692                 
192693                 ELSE null
192694               END                           object_type_code
192695             , CASE r
192696                 WHEN 1 THEN '707' 
192697                 WHEN 2 THEN '707' 
192698                 WHEN 3 THEN '707' 
192699                 WHEN 4 THEN '707' 
192700                 WHEN 5 THEN '707' 
192701                 WHEN 6 THEN '707' 
192702                 WHEN 7 THEN '707' 
192703                 WHEN 8 THEN '707' 
192704                 WHEN 9 THEN '707' 
192705                 
192706                 ELSE null
192707               END                           source_application_id
192708             , 'S'             source_type_code
192709             , CASE r
192710                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
192711                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
192712                 WHEN 3 THEN 'CURRENCY_CODE' 
192713                 WHEN 4 THEN 'ENTERED_AMOUNT' 
192714                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
192715                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
192716                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
192717                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
192718                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
192719                 
192720                 ELSE null
192721               END                           source_code
192722             , CASE r
192723                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
192724                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
192725                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
192726                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
192727                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
192728                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
192729                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
192730                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
192731                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
192732                 
192733                 ELSE null
192734               END                           source_value
192735             , null              source_meaning
192736          FROM  xla_events_gt     xet  
192737         , CST_XLA_INV_LINES_V  l2
192738             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
192739         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
192740           AND xet.event_type_code = C_EVENT_TYPE_CODE
192741             AND l2.event_id          = xet.event_id
192742 
192743 )
192744 ;
192745 --
192746 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192747 
192748       trace
192749          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
192750          ,p_level    => C_LEVEL_STATEMENT
192751          ,p_module   => l_log_module);
192752 
192753 END IF;
192754 
192755 
192756 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192757       trace
192758          (p_msg      => 'END of insert_sources_296'
192759          ,p_level    => C_LEVEL_PROCEDURE
192760          ,p_module   => l_log_module);
192761 END IF;
192762 EXCEPTION
192763   WHEN xla_exceptions_pkg.application_exception THEN
192764       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
192765             trace
192766                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
192767                ,p_level    => C_LEVEL_EXCEPTION
192768                ,p_module   => l_log_module);
192769       END IF;
192770       RAISE;
192771   WHEN OTHERS THEN
192772       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
192773             trace
192774                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
192775                ,p_level    => C_LEVEL_EXCEPTION
192776                ,p_module   => l_log_module);
192777        END IF;
192778        xla_exceptions_pkg.raise_message
192779            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_296');
192780 END insert_sources_296;
192781 --
192782 
192783 ---------------------------------------
192784 --
192785 -- PRIVATE FUNCTION
192786 --         EventType_296
192787 --
192788 ----------------------------------------
192789 --
192790 FUNCTION EventType_296
192791        (p_application_id         IN NUMBER
192792        ,p_base_ledger_id         IN NUMBER
192793        ,p_target_ledger_id       IN NUMBER
192794        ,p_language               IN VARCHAR2
192795        ,p_currency_code          IN VARCHAR2
192796        ,p_sla_ledger_id          IN NUMBER
192797        ,p_pad_start_date         IN DATE
192798        ,p_pad_end_date           IN DATE
192799        ,p_primary_ledger_id      IN NUMBER)
192800 RETURN BOOLEAN IS
192801 --
192802 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
192803 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
192804 
192805 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
192806 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
192807 --
192808 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192809 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192810 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
192811 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
192812 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192813 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
192814 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
192815 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192816 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
192817 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
192818 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192819 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192820 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192821 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192822 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
192823 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
192824 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
192825 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
192826 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
192827 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
192828 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
192829 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
192830 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
192831 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
192832 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
192833 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
192834 
192835 l_event_id                             NUMBER;
192836 l_previous_event_id                    NUMBER;
192837 l_first_event_id                       NUMBER;
192838 l_last_event_id                        NUMBER;
192839 
192840 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
192841 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
192842 --
192843 --
192844 l_result                    BOOLEAN := TRUE;
192845 l_rows                      NUMBER  := 1000;
192846 l_event_type_name           VARCHAR2(80) := 'User-defined Recipient Intransit Shipment - No Transfer Price - FOB Shipment';
192847 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
192848 l_description               VARCHAR2(4000);
192849 l_transaction_reversal      NUMBER;
192850 l_ae_header_id              NUMBER;
192851 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
192852 l_log_module                VARCHAR2(240);
192853 --
192854 l_acct_reversal_source      VARCHAR2(30);
192855 l_trx_reversal_source       VARCHAR2(30);
192856 
192857 l_continue_with_lines       BOOLEAN := TRUE;
192858 --
192859 l_acc_rev_gl_date_source    DATE;                      -- 4262811
192860 --
192861 type t_array_event_id is table of number index by binary_integer;
192862 
192863 l_rec_array_event                    t_rec_array_event;
192864 l_null_rec_array_event               t_rec_array_event;
192865 l_array_ae_header_id                 xla_number_array_type;
192866 l_actual_flag                        VARCHAR2(1) := NULL;
192867 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
192868 l_balance_type_code                  VARCHAR2(1) :=NULL;
192869 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
192870 
192871 --
192872 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
192873 --
192874 
192875 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
192876 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
192877 
192878 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
192879 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
192880 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
192881 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
192882 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
192883 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
192884 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
192885 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
192886 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
192887 
192888 l_array_source_12              t_array_source_12;
192889 l_array_source_12_meaning      t_array_lookup_meaning;
192890 l_array_source_38              t_array_source_38;
192891 l_array_source_38_meaning      t_array_lookup_meaning;
192892 
192893 l_array_source_4      t_array_source_4;
192894 l_array_source_11      t_array_source_11;
192895 l_array_source_15      t_array_source_15;
192896 l_array_source_18      t_array_source_18;
192897 l_array_source_19      t_array_source_19;
192898 l_array_source_20      t_array_source_20;
192899 l_array_source_21      t_array_source_21;
192900 l_array_source_22      t_array_source_22;
192901 l_array_source_24      t_array_source_24;
192902 
192903 --
192904 CURSOR header_cur
192905 IS
192906 SELECT /*+ leading(xet) cardinality(xet,1) */
192907 -- Event Type Code: UFOB_SHIP_RECIPIENT_SHIP_NO_TP
192908 -- Event Class Code: USER_DEFINE
192909     xet.entity_id
192910   , xet.legal_entity_id
192911   , xet.entity_code
192912   , xet.transaction_number
192913   , xet.event_id
192914   , xet.event_class_code
192915   , xet.event_type_code
192916   , xet.event_number
192917   , xet.event_date
192918   , xet.transaction_date
192919   , xet.reference_num_1
192920   , xet.reference_num_2
192921   , xet.reference_num_3
192922   , xet.reference_num_4
192923   , xet.reference_char_1
192924   , xet.reference_char_2
192925   , xet.reference_char_3
192926   , xet.reference_char_4
192927   , xet.reference_date_1
192928   , xet.reference_date_2
192929   , xet.reference_date_3
192930   , xet.reference_date_4
192931   , xet.event_created_by
192932   , xet.budgetary_control_flag 
192933   , h1.DISTRIBUTION_TYPE    source_12
192934   , fvl12.meaning   source_12_meaning
192935   , h1.TRANSFER_TO_GL_INDICATOR    source_38
192936   , fvl38.meaning   source_38_meaning
192937   FROM xla_events_gt     xet 
192938   , CST_XLA_INV_HEADERS_V  h1
192939   , fnd_lookup_values    fvl12
192940   , fnd_lookup_values    fvl38
192941  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
192942    and xet.event_type_code = C_EVENT_TYPE_CODE
192943    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
192944    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
192945   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
192946   AND fvl12.view_application_id(+) = 700
192947   AND fvl12.language(+)            = USERENV('LANG')
192948      AND fvl38.lookup_type(+)         = 'YES_NO'
192949   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
192950   AND fvl38.view_application_id(+) = 0
192951   AND fvl38.language(+)            = USERENV('LANG')
192952   
192953  ORDER BY event_id
192954 ;
192955 
192956 
192957 --
192958 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
192959 IS
192960 SELECT /*+ leading(xet) cardinality(xet,1) */
192961 -- Event Type Code: UFOB_SHIP_RECIPIENT_SHIP_NO_TP
192962 -- Event Class Code: USER_DEFINE
192963     xet.entity_id
192964    ,xet.legal_entity_id
192965    ,xet.entity_code
192966    ,xet.transaction_number
192967    ,xet.event_id
192968    ,xet.event_class_code
192969    ,xet.event_type_code
192970    ,xet.event_number
192971    ,xet.event_date
192972    ,xet.transaction_date
192973    ,xet.reference_num_1
192974    ,xet.reference_num_2
192975    ,xet.reference_num_3
192976    ,xet.reference_num_4
192977    ,xet.reference_char_1
192978    ,xet.reference_char_2
192979    ,xet.reference_char_3
192980    ,xet.reference_char_4
192981    ,xet.reference_date_1
192982    ,xet.reference_date_2
192983    ,xet.reference_date_3
192984    ,xet.reference_date_4
192985    ,xet.event_created_by
192986    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
192987   , l2.CODE_COMBINATION_ID    source_4
192988   , l2.DISTRIBUTION_IDENTIFIER    source_11
192989   , l2.CURRENCY_CODE    source_15
192990   , l2.ENTERED_AMOUNT    source_18
192991   , l2.CURRENCY_CONVERSION_DATE    source_19
192992   , l2.CURRENCY_CONVERSION_RATE    source_20
192993   , l2.CURRENCY_CONVERSION_TYPE    source_21
192994   , l2.ACCOUNTED_AMOUNT    source_22
192995   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
192996   FROM xla_events_gt     xet 
192997   , CST_XLA_INV_LINES_V  l2
192998  WHERE xet.event_id between x_first_event_id and x_last_event_id
192999    and xet.event_date between p_pad_start_date and p_pad_end_date
193000    and xet.event_type_code = C_EVENT_TYPE_CODE
193001    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
193002 ;
193003 
193004 --
193005 BEGIN
193006 IF g_log_enabled THEN
193007    l_log_module := C_DEFAULT_MODULE||'.EventType_296';
193008 END IF;
193009 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
193010    trace
193011       (p_msg      => 'BEGIN of EventType_296'
193012       ,p_level    => C_LEVEL_PROCEDURE
193013       ,p_module   => l_log_module);
193014 END IF;
193015 
193016 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
193017    trace
193018       (p_msg      => 'p_application_id = '||p_application_id||
193019                      ' - p_base_ledger_id = '||p_base_ledger_id||
193020                      ' - p_target_ledger_id  = '||p_target_ledger_id||
193021                      ' - p_language = '||p_language||
193022                      ' - p_currency_code = '||p_currency_code||
193023                      ' - p_sla_ledger_id = '||p_sla_ledger_id
193024       ,p_level    => C_LEVEL_STATEMENT
193025       ,p_module   => l_log_module);
193026 END IF;
193027 --
193028 -- initialze arrays
193029 --
193030 g_array_event.DELETE;
193031 l_rec_array_event := l_null_rec_array_event;
193032 --
193033 --------------------------------------
193034 -- 4262811 Initialze MPA Line Number
193035 --------------------------------------
193036 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
193037 
193038 --
193039 
193040 --
193041 OPEN header_cur;
193042 --
193043 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
193044    trace
193045    (p_msg      => 'SQL - FETCH header_cur'
193046    ,p_level    => C_LEVEL_STATEMENT
193047    ,p_module   => l_log_module);
193048 END IF;
193049 --
193050 LOOP
193051 FETCH header_cur BULK COLLECT INTO
193052         l_array_entity_id
193053       , l_array_legal_entity_id
193054       , l_array_entity_code
193055       , l_array_transaction_num
193056       , l_array_event_id
193057       , l_array_class_code
193058       , l_array_event_type
193059       , l_array_event_number
193060       , l_array_event_date
193061       , l_array_transaction_date
193062       , l_array_reference_num_1
193063       , l_array_reference_num_2
193064       , l_array_reference_num_3
193065       , l_array_reference_num_4
193066       , l_array_reference_char_1
193067       , l_array_reference_char_2
193068       , l_array_reference_char_3
193069       , l_array_reference_char_4
193070       , l_array_reference_date_1
193071       , l_array_reference_date_2
193072       , l_array_reference_date_3
193073       , l_array_reference_date_4
193074       , l_array_event_created_by
193075       , l_array_budgetary_control_flag 
193076       , l_array_source_12
193077       , l_array_source_12_meaning
193078       , l_array_source_38
193079       , l_array_source_38_meaning
193080       LIMIT l_rows;
193081 --
193082 IF (C_LEVEL_EVENT >= g_log_level) THEN
193083    trace
193084    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
193085    ,p_level    => C_LEVEL_EVENT
193086    ,p_module   => l_log_module);
193087 END IF;
193088 --
193089 EXIT WHEN l_array_entity_id.COUNT = 0;
193090 
193091 -- initialize arrays
193092 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
193093 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
193094 
193095 --
193096 -- Bug 4458708
193097 --
193098 XLA_AE_LINES_PKG.g_LineNumber := 0;
193099 
193100 
193101 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
193102 g_last_hdr_idx := l_array_event_id.LAST;
193103 --
193104 -- loop for the headers. Each iteration is for each header extract row
193105 -- fetched in header cursor
193106 --
193107 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
193108 
193109 --
193110 -- set event info as cache for other routines to refer event attributes
193111 --
193112 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
193113    (p_application_id           => p_application_id
193114    ,p_primary_ledger_id        => p_primary_ledger_id
193115    ,p_base_ledger_id           => p_base_ledger_id
193116    ,p_target_ledger_id         => p_target_ledger_id
193117    ,p_entity_id                => l_array_entity_id(hdr_idx)
193118    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
193119    ,p_entity_code              => l_array_entity_code(hdr_idx)
193120    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
193121    ,p_event_id                 => l_array_event_id(hdr_idx)
193122    ,p_event_class_code         => l_array_class_code(hdr_idx)
193123    ,p_event_type_code          => l_array_event_type(hdr_idx)
193124    ,p_event_number             => l_array_event_number(hdr_idx)
193125    ,p_event_date               => l_array_event_date(hdr_idx)
193126    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
193127    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
193128    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
193129    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
193130    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
193131    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
193132    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
193133    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
193134    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
193135    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
193136    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
193137    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
193138    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
193139    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
193140    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
193141 
193142 --
193143 -- set the status of entry to C_VALID (0)
193144 --
193145 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
193146 
193147 --
193148 -- initialize a row for ae header
193149 --
193150 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
193151 
193152 l_event_id := l_array_event_id(hdr_idx);
193153 
193154 --
193155 -- storing the hdr_idx for event. May be used by line cursor.
193156 --
193157 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
193158 
193159 --
193160 -- store sources from header extract. This can be improved to
193161 -- store only those sources from header extract that may be used in lines
193162 --
193163 
193164 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
193165 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
193166 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
193167 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
193168 
193169 --
193170 -- initilaize the status of ae headers for diffrent balance types
193171 -- the status is initialised to C_NOT_CREATED (2)
193172 --
193173 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
193174 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
193175 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
193176 
193177 --
193178 -- call api to validate and store accounting attributes for header
193179 --
193180 
193181 ------------------------------------------------------------
193182 -- Accrual Reversal : to get date for Standard Source (NONE)
193183 ------------------------------------------------------------
193184 l_acc_rev_gl_date_source := NULL;
193185 
193186      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
193187       l_rec_acct_attrs.array_date_value(1) := 
193188 xla_ae_sources_pkg.GetSystemSourceDate(
193189    p_source_code           => 'XLA_REFERENCE_DATE_1'
193190  , p_source_type_code      => 'Y'
193191  , p_source_application_id =>  602
193192 );
193193      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
193194       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
193195 
193196 
193197 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
193198 
193199 XLA_AE_HEADER_PKG.SetJeCategoryName;
193200 
193201 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
193202 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
193203 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
193204 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
193205 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
193206 
193207 
193208 -- No header level analytical criteria
193209 
193210 --
193211 --accounting attribute enhancement, bug 3612931
193212 --
193213 l_trx_reversal_source := SUBSTR(NULL, 1,30);
193214 
193215 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
193216    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
193217 
193218    xla_accounting_err_pkg.build_message
193219       (p_appli_s_name            => 'XLA'
193220       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
193221       ,p_token_1                 => 'ACCT_ATTR_NAME'
193222       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
193223       ,p_token_2                 => 'PRODUCT_NAME'
193224       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
193225       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
193226       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
193227       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
193228 
193229 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
193230    --
193231    -- following sets the accounting attributes needed to reverse
193232    -- accounting for a distributeion
193233    --
193234    xla_ae_lines_pkg.SetTrxReversalAttrs
193235       (p_event_id              => l_event_id
193236       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
193237       ,p_trx_reversal_source   => l_trx_reversal_source);
193238 
193239 END IF;
193240 
193241 
193242 ----------------------------------------------------------------
193243 -- 4262811 -  update the header statuses to invalid in need be
193244 ----------------------------------------------------------------
193245 --
193246 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
193247 
193248 
193249   -----------------------------------------------
193250   -- No accrual reversal for the event class/type
193251   -----------------------------------------------
193252 ----------------------------------------------------------------
193253 
193254 --
193255 -- this ends the header loop iteration for one bulk fetch
193256 --
193257 END LOOP;
193258 
193259 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
193260 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
193261 
193262 --
193263 -- insert dummy rows into lines gt table that were created due to
193264 -- transaction reversals
193265 --
193266 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
193267    l_result := XLA_AE_LINES_PKG.InsertLines;
193268 END IF;
193269 
193270 --
193271 -- reset the temp_line_num for each set of events fetched from header
193272 -- cursor rather than doing it for each new event in line cursor
193273 -- Bug 3939231
193274 --
193275 xla_ae_lines_pkg.g_temp_line_num := 0;
193276 
193277 
193278 
193279 --
193280 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
193281 --
193282 --
193283 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
193284 
193285       trace
193286          (p_msg      => 'SQL - FETCH line_cur'
193287          ,p_level    => C_LEVEL_STATEMENT
193288          ,p_module   => l_log_module);
193289 
193290 END IF;
193291 --
193292 --
193293 LOOP
193294   --
193295   FETCH line_cur BULK COLLECT INTO
193296         l_array_entity_id
193297       , l_array_legal_entity_id
193298       , l_array_entity_code
193299       , l_array_transaction_num
193300       , l_array_event_id
193301       , l_array_class_code
193302       , l_array_event_type
193303       , l_array_event_number
193304       , l_array_event_date
193305       , l_array_transaction_date
193306       , l_array_reference_num_1
193307       , l_array_reference_num_2
193308       , l_array_reference_num_3
193309       , l_array_reference_num_4
193310       , l_array_reference_char_1
193311       , l_array_reference_char_2
193312       , l_array_reference_char_3
193313       , l_array_reference_char_4
193314       , l_array_reference_date_1
193315       , l_array_reference_date_2
193316       , l_array_reference_date_3
193317       , l_array_reference_date_4
193318       , l_array_event_created_by
193319       , l_array_budgetary_control_flag
193320       , l_array_extract_line_num 
193321       , l_array_source_4
193322       , l_array_source_11
193323       , l_array_source_15
193324       , l_array_source_18
193325       , l_array_source_19
193326       , l_array_source_20
193327       , l_array_source_21
193328       , l_array_source_22
193329       , l_array_source_24
193330       LIMIT l_rows;
193331 
193332   --
193333   IF (C_LEVEL_EVENT >= g_log_level) THEN
193334             trace
193335                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
193336                ,p_level    => C_LEVEL_EVENT
193337                ,p_module   => l_log_module);
193338   END IF;
193339   --
193340   EXIT WHEN l_array_entity_id.count = 0;
193341 
193342   XLA_AE_LINES_PKG.g_rec_lines := null;
193343 
193344 --
193345 -- Bug 4458708
193346 --
193347 XLA_AE_LINES_PKG.g_LineNumber := 0;
193348 --
193349 --
193350 
193351 FOR Idx IN 1..l_array_event_id.count LOOP
193352    --
193353    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
193354    --
193355    l_event_id := l_array_event_id(idx);  -- 5648433
193356 
193357    --
193358    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
193359    --
193360 
193361    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
193362              (g_array_event(l_event_id).array_value_num('header_index'))
193363          ,'N'
193364          ) <> 'Y'
193365    THEN
193366       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
193367          trace
193368             (p_msg      => 'Trancaction revesal option is not Y '
193369             ,p_level    => C_LEVEL_STATEMENT
193370             ,p_module   => l_log_module);
193371       END IF;
193372 
193373 --
193374 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
193375 --
193376 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
193377 --
193378 -- set event info as cache for other routines to refer event attributes
193379 --
193380 
193381 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
193382    l_previous_event_id := l_event_id;
193383 
193384    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
193385       (p_application_id           => p_application_id
193386       ,p_primary_ledger_id        => p_primary_ledger_id
193387       ,p_base_ledger_id           => p_base_ledger_id
193388       ,p_target_ledger_id         => p_target_ledger_id
193389       ,p_entity_id                => l_array_entity_id(Idx)
193390       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
193391       ,p_entity_code              => l_array_entity_code(Idx)
193392       ,p_transaction_num          => l_array_transaction_num(Idx)
193393       ,p_event_id                 => l_array_event_id(Idx)
193394       ,p_event_class_code         => l_array_class_code(Idx)
193395       ,p_event_type_code          => l_array_event_type(Idx)
193396       ,p_event_number             => l_array_event_number(Idx)
193397       ,p_event_date               => l_array_event_date(Idx)
193398       ,p_transaction_date         => l_array_transaction_date(Idx)
193399       ,p_reference_num_1          => l_array_reference_num_1(Idx)
193400       ,p_reference_num_2          => l_array_reference_num_2(Idx)
193401       ,p_reference_num_3          => l_array_reference_num_3(Idx)
193402       ,p_reference_num_4          => l_array_reference_num_4(Idx)
193403       ,p_reference_char_1         => l_array_reference_char_1(Idx)
193404       ,p_reference_char_2         => l_array_reference_char_2(Idx)
193405       ,p_reference_char_3         => l_array_reference_char_3(Idx)
193406       ,p_reference_char_4         => l_array_reference_char_4(Idx)
193407       ,p_reference_date_1         => l_array_reference_date_1(Idx)
193408       ,p_reference_date_2         => l_array_reference_date_2(Idx)
193409       ,p_reference_date_3         => l_array_reference_date_3(Idx)
193410       ,p_reference_date_4         => l_array_reference_date_4(Idx)
193411       ,p_event_created_by         => l_array_event_created_by(Idx)
193412       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
193413        --
193414 END IF;
193415 
193416 
193417 
193418 --
193419 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
193420 
193421 l_acct_reversal_source := SUBSTR(NULL, 1,30);
193422 
193423 IF l_continue_with_lines THEN
193424    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
193425       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
193426 
193427       xla_accounting_err_pkg.build_message
193428          (p_appli_s_name            => 'XLA'
193429          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
193430          ,p_token_1                 => 'LINE_NUMBER'
193431          ,p_value_1                 => l_array_extract_line_num(Idx)
193432          ,p_token_2                 => 'PRODUCT_NAME'
193433          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
193434          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
193435          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
193436          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
193437 
193438    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
193439       --
193440       -- following sets the accounting attributes needed to reverse
193441       -- accounting for a distributeion
193442       --
193443 
193444       --
193445       -- 5217187
193446       --
193447       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
193448       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
193449                                        g_array_event(l_event_id).array_value_num('header_index'));
193450       --
193451       --
193452 
193453       -- No reversal code generated
193454 
193455       xla_ae_lines_pkg.SetAcctReversalAttrs
193456          (p_event_id             => l_event_id
193457          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
193458          ,p_calculate_acctd_flag => l_calculate_acctd_flag
193459          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
193460    END IF;
193461 
193462    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
193463        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
193464 
193465 --
193466 AcctLineType_47 (
193467  p_application_id  => p_application_id
193468  ,p_event_id     => l_event_id
193469  ,p_calculate_acctd_flag => l_calculate_acctd_flag
193470  ,p_calculate_g_l_flag => l_calculate_g_l_flag
193471  ,p_actual_flag => l_actual_flag
193472  ,p_balance_type_code => l_balance_type_code
193473  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
193474  
193475  , p_source_4 => l_array_source_4(Idx)
193476  , p_source_11 => l_array_source_11(Idx)
193477  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
193478  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
193479  , p_source_15 => l_array_source_15(Idx)
193480  , p_source_18 => l_array_source_18(Idx)
193481  , p_source_19 => l_array_source_19(Idx)
193482  , p_source_20 => l_array_source_20(Idx)
193483  , p_source_21 => l_array_source_21(Idx)
193484  , p_source_22 => l_array_source_22(Idx)
193485  , p_source_24 => l_array_source_24(Idx)
193486  );
193487 If(l_balance_type_code = 'A') THEN
193488   l_actual_gain_loss_ref := l_gain_or_loss_ref;
193489 END IF;
193490 
193491 --
193492 
193493 
193494 --
193495 AcctLineType_54 (
193496  p_application_id  => p_application_id
193497  ,p_event_id     => l_event_id
193498  ,p_calculate_acctd_flag => l_calculate_acctd_flag
193499  ,p_calculate_g_l_flag => l_calculate_g_l_flag
193500  ,p_actual_flag => l_actual_flag
193501  ,p_balance_type_code => l_balance_type_code
193502  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
193503  
193504  , p_source_4 => l_array_source_4(Idx)
193505  , p_source_11 => l_array_source_11(Idx)
193506  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
193507  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
193508  , p_source_15 => l_array_source_15(Idx)
193509  , p_source_18 => l_array_source_18(Idx)
193510  , p_source_19 => l_array_source_19(Idx)
193511  , p_source_20 => l_array_source_20(Idx)
193512  , p_source_21 => l_array_source_21(Idx)
193513  , p_source_22 => l_array_source_22(Idx)
193514  , p_source_24 => l_array_source_24(Idx)
193515  );
193516 If(l_balance_type_code = 'A') THEN
193517   l_actual_gain_loss_ref := l_gain_or_loss_ref;
193518 END IF;
193519 
193520 --
193521 
193522 
193523 --
193524 AcctLineType_66 (
193525  p_application_id  => p_application_id
193526  ,p_event_id     => l_event_id
193527  ,p_calculate_acctd_flag => l_calculate_acctd_flag
193528  ,p_calculate_g_l_flag => l_calculate_g_l_flag
193529  ,p_actual_flag => l_actual_flag
193530  ,p_balance_type_code => l_balance_type_code
193531  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
193532  
193533  , p_source_4 => l_array_source_4(Idx)
193534  , p_source_11 => l_array_source_11(Idx)
193535  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
193536  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
193537  , p_source_15 => l_array_source_15(Idx)
193538  , p_source_18 => l_array_source_18(Idx)
193539  , p_source_19 => l_array_source_19(Idx)
193540  , p_source_20 => l_array_source_20(Idx)
193541  , p_source_21 => l_array_source_21(Idx)
193542  , p_source_22 => l_array_source_22(Idx)
193543  , p_source_24 => l_array_source_24(Idx)
193544  );
193545 If(l_balance_type_code = 'A') THEN
193546   l_actual_gain_loss_ref := l_gain_or_loss_ref;
193547 END IF;
193548 
193549 --
193550 
193551 
193552 --
193553 AcctLineType_80 (
193554  p_application_id  => p_application_id
193555  ,p_event_id     => l_event_id
193556  ,p_calculate_acctd_flag => l_calculate_acctd_flag
193557  ,p_calculate_g_l_flag => l_calculate_g_l_flag
193558  ,p_actual_flag => l_actual_flag
193559  ,p_balance_type_code => l_balance_type_code
193560  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
193561  
193562  , p_source_4 => l_array_source_4(Idx)
193563  , p_source_11 => l_array_source_11(Idx)
193564  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
193565  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
193566  , p_source_15 => l_array_source_15(Idx)
193567  , p_source_18 => l_array_source_18(Idx)
193568  , p_source_19 => l_array_source_19(Idx)
193569  , p_source_20 => l_array_source_20(Idx)
193570  , p_source_21 => l_array_source_21(Idx)
193571  , p_source_22 => l_array_source_22(Idx)
193572  , p_source_24 => l_array_source_24(Idx)
193573  );
193574 If(l_balance_type_code = 'A') THEN
193575   l_actual_gain_loss_ref := l_gain_or_loss_ref;
193576 END IF;
193577 
193578 --
193579 
193580 
193581 --
193582 AcctLineType_123 (
193583  p_application_id  => p_application_id
193584  ,p_event_id     => l_event_id
193585  ,p_calculate_acctd_flag => l_calculate_acctd_flag
193586  ,p_calculate_g_l_flag => l_calculate_g_l_flag
193587  ,p_actual_flag => l_actual_flag
193588  ,p_balance_type_code => l_balance_type_code
193589  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
193590  
193591  , p_source_4 => l_array_source_4(Idx)
193592  , p_source_11 => l_array_source_11(Idx)
193593  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
193594  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
193595  , p_source_15 => l_array_source_15(Idx)
193596  , p_source_18 => l_array_source_18(Idx)
193597  , p_source_19 => l_array_source_19(Idx)
193598  , p_source_20 => l_array_source_20(Idx)
193599  , p_source_21 => l_array_source_21(Idx)
193600  , p_source_22 => l_array_source_22(Idx)
193601  , p_source_24 => l_array_source_24(Idx)
193602  );
193603 If(l_balance_type_code = 'A') THEN
193604   l_actual_gain_loss_ref := l_gain_or_loss_ref;
193605 END IF;
193606 
193607 --
193608 
193609 
193610 --
193611 AcctLineType_175 (
193612  p_application_id  => p_application_id
193613  ,p_event_id     => l_event_id
193614  ,p_calculate_acctd_flag => l_calculate_acctd_flag
193615  ,p_calculate_g_l_flag => l_calculate_g_l_flag
193616  ,p_actual_flag => l_actual_flag
193617  ,p_balance_type_code => l_balance_type_code
193618  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
193619  
193620  , p_source_4 => l_array_source_4(Idx)
193621  , p_source_11 => l_array_source_11(Idx)
193622  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
193623  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
193624  , p_source_15 => l_array_source_15(Idx)
193625  , p_source_18 => l_array_source_18(Idx)
193626  , p_source_19 => l_array_source_19(Idx)
193627  , p_source_20 => l_array_source_20(Idx)
193628  , p_source_21 => l_array_source_21(Idx)
193629  , p_source_22 => l_array_source_22(Idx)
193630  , p_source_24 => l_array_source_24(Idx)
193631  );
193632 If(l_balance_type_code = 'A') THEN
193633   l_actual_gain_loss_ref := l_gain_or_loss_ref;
193634 END IF;
193635 
193636 --
193637 
193638 
193639 --
193640 AcctLineType_188 (
193641  p_application_id  => p_application_id
193642  ,p_event_id     => l_event_id
193643  ,p_calculate_acctd_flag => l_calculate_acctd_flag
193644  ,p_calculate_g_l_flag => l_calculate_g_l_flag
193645  ,p_actual_flag => l_actual_flag
193646  ,p_balance_type_code => l_balance_type_code
193647  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
193648  
193649  , p_source_4 => l_array_source_4(Idx)
193650  , p_source_11 => l_array_source_11(Idx)
193651  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
193652  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
193653  , p_source_15 => l_array_source_15(Idx)
193654  , p_source_18 => l_array_source_18(Idx)
193655  , p_source_19 => l_array_source_19(Idx)
193656  , p_source_20 => l_array_source_20(Idx)
193657  , p_source_21 => l_array_source_21(Idx)
193658  , p_source_22 => l_array_source_22(Idx)
193659  , p_source_24 => l_array_source_24(Idx)
193660  );
193661 If(l_balance_type_code = 'A') THEN
193662   l_actual_gain_loss_ref := l_gain_or_loss_ref;
193663 END IF;
193664 
193665 --
193666 
193667 
193668 --
193669 AcctLineType_217 (
193670  p_application_id  => p_application_id
193671  ,p_event_id     => l_event_id
193672  ,p_calculate_acctd_flag => l_calculate_acctd_flag
193673  ,p_calculate_g_l_flag => l_calculate_g_l_flag
193674  ,p_actual_flag => l_actual_flag
193675  ,p_balance_type_code => l_balance_type_code
193676  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
193677  
193678  , p_source_4 => l_array_source_4(Idx)
193679  , p_source_11 => l_array_source_11(Idx)
193680  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
193681  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
193682  , p_source_15 => l_array_source_15(Idx)
193683  , p_source_18 => l_array_source_18(Idx)
193684  , p_source_19 => l_array_source_19(Idx)
193685  , p_source_20 => l_array_source_20(Idx)
193686  , p_source_21 => l_array_source_21(Idx)
193687  , p_source_22 => l_array_source_22(Idx)
193688  , p_source_24 => l_array_source_24(Idx)
193689  );
193690 If(l_balance_type_code = 'A') THEN
193691   l_actual_gain_loss_ref := l_gain_or_loss_ref;
193692 END IF;
193693 
193694 --
193695 
193696 
193697 --
193698 AcctLineType_224 (
193699  p_application_id  => p_application_id
193700  ,p_event_id     => l_event_id
193701  ,p_calculate_acctd_flag => l_calculate_acctd_flag
193702  ,p_calculate_g_l_flag => l_calculate_g_l_flag
193703  ,p_actual_flag => l_actual_flag
193704  ,p_balance_type_code => l_balance_type_code
193705  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
193706  
193707  , p_source_4 => l_array_source_4(Idx)
193708  , p_source_11 => l_array_source_11(Idx)
193709  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
193710  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
193711  , p_source_15 => l_array_source_15(Idx)
193712  , p_source_18 => l_array_source_18(Idx)
193713  , p_source_19 => l_array_source_19(Idx)
193714  , p_source_20 => l_array_source_20(Idx)
193715  , p_source_21 => l_array_source_21(Idx)
193716  , p_source_22 => l_array_source_22(Idx)
193717  , p_source_24 => l_array_source_24(Idx)
193718  );
193719 If(l_balance_type_code = 'A') THEN
193720   l_actual_gain_loss_ref := l_gain_or_loss_ref;
193721 END IF;
193722 
193723 --
193724 
193725       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
193726       -- or secondary ledger that has different currency with primary
193727       -- or alc that is calculated by sla
193728       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
193729             (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'))
193730 
193731 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
193732 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
193733           AND (l_actual_flag = 'A')) THEN
193734         XLA_AE_LINES_PKG.CreateGainOrLossLines(
193735           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
193736          ,p_application_id   => p_application_id
193737          ,p_amb_context_code => 'DEFAULT'
193738          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
193739          ,p_event_class_code => C_EVENT_CLASS_CODE
193740          ,p_event_type_code  => C_EVENT_TYPE_CODE
193741          
193742          ,p_gain_ccid        => -1
193743          ,p_loss_ccid        => -1
193744 
193745          ,p_actual_flag      => l_actual_flag
193746          ,p_enc_flag         => null
193747          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
193748          ,p_enc_g_l_ref      => null
193749          );
193750       END IF;
193751    END IF;
193752 END IF;
193753 
193754    ELSE
193755       --
193756       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
193757       --
193758       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
193759          trace
193760             (p_msg      => 'Trancaction revesal option is Y'
193761             ,p_level    => C_LEVEL_STATEMENT
193762             ,p_module   => l_log_module);
193763       END IF;
193764    END IF;
193765 
193766 END LOOP;
193767 l_result := XLA_AE_LINES_PKG.InsertLines ;
193768 end loop;
193769 close line_cur;
193770 
193771 
193772 --
193773 -- insert headers into xla_ae_headers_gt table
193774 --
193775 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
193776 
193777 -- insert into errors table here.
193778 
193779 END LOOP;
193780 
193781 --
193782 -- 4865292
193783 --
193784 -- Compare g_hdr_extract_count with event count in
193785 -- CreateHeadersAndLines.
193786 --
193787 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
193788 
193789 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
193790    trace (p_msg     => '# rows extracted from header extract objects '
193791                     || ' (running total): '
193792                     || g_hdr_extract_count
193793          ,p_level   => C_LEVEL_STATEMENT
193794          ,p_module  => l_log_module);
193795 END IF;
193796 
193797 CLOSE header_cur;
193798 --
193799 
193800 --
193801 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
193802    trace
193803       (p_msg      => 'END of EventType_296'
193804       ,p_level    => C_LEVEL_PROCEDURE
193805       ,p_module   => l_log_module);
193806 END IF;
193807 --
193808 RETURN l_result;
193809 EXCEPTION
193810 WHEN xla_exceptions_pkg.application_exception THEN
193811    
193812 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
193813 
193814    
193815 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
193816 
193817    RAISE;
193818 
193819 WHEN NO_DATA_FOUND THEN
193820 
193821 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
193822 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
193823 
193824 FOR header_record IN header_cur
193825 LOOP
193826     l_array_header_events(header_record.event_id) := header_record.event_id;
193827 END LOOP;
193828 
193829 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
193830 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
193831 
193832 fnd_file.put_line(fnd_file.LOG, '                    ');
193833 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
193834 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
193835 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
193836 
193837 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
193838 LOOP
193839 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
193840 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
193841         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
193842 	END IF;
193843 END LOOP;
193844 
193845 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
193846 fnd_file.put_line(fnd_file.LOG, '                    ');
193847 
193848 
193849 xla_exceptions_pkg.raise_message
193850       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_296');
193851 
193852 
193853 WHEN OTHERS THEN
193854    xla_exceptions_pkg.raise_message
193855       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_296');
193856 END EventType_296;
193857 --
193858 
193859 ---------------------------------------
193860 --
193861 -- PRIVATE PROCEDURE
193862 --         insert_sources_297
193863 --
193864 ----------------------------------------
193865 --
193866 PROCEDURE insert_sources_297(
193867                                 p_target_ledger_id       IN NUMBER
193868                               , p_language               IN VARCHAR2
193869                               , p_sla_ledger_id          IN NUMBER
193870                               , p_pad_start_date         IN DATE
193871                               , p_pad_end_date           IN DATE
193872                          )
193873 IS
193874 
193875 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
193876 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
193877 p_apps_owner                   VARCHAR2(30);
193878 l_log_module                   VARCHAR2(240);
193879 BEGIN
193880 IF g_log_enabled THEN
193881       l_log_module := C_DEFAULT_MODULE||'.insert_sources_297';
193882 END IF;
193883 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
193884 
193885       trace
193886          (p_msg      => 'BEGIN of insert_sources_297'
193887          ,p_level    => C_LEVEL_PROCEDURE
193888          ,p_module   => l_log_module);
193889 
193890 END IF;
193891 
193892 -- select APPS owner
193893 SELECT oracle_username
193894   INTO p_apps_owner
193895   FROM fnd_oracle_userid
193896  WHERE read_only_flag = 'U'
193897 ;
193898 
193899 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
193900       trace
193901          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
193902                         ' - p_language = '||p_language||
193903                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
193904                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
193905                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
193906                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
193907          ,p_level    => C_LEVEL_STATEMENT
193908          ,p_module   => l_log_module);
193909 END IF;
193910 
193911 
193912 --
193913 INSERT INTO xla_diag_sources --hdr1
193914 (
193915         event_id
193916       , ledger_id
193917       , sla_ledger_id
193918       , description_language
193919       , object_name
193920       , object_type_code
193921       , line_number
193922       , source_application_id
193923       , source_type_code
193924       , source_code
193925       , source_value
193926       , source_meaning
193927       , created_by
193928       , creation_date
193929       , last_update_date
193930       , last_updated_by
193931       , last_update_login
193932       , program_update_date
193933       , program_application_id
193934       , program_id
193935       , request_id
193936 )
193937 SELECT
193938         event_id
193939       , p_target_ledger_id
193940       , p_sla_ledger_id
193941       , p_language
193942       , object_name
193943       , object_type_code
193944       , line_number
193945       , source_application_id
193946       , source_type_code
193947       , source_code
193948       , SUBSTR(source_value ,1,1996)
193949       , SUBSTR(source_meaning,1,200)
193950       , xla_environment_pkg.g_Usr_Id
193951       , TRUNC(SYSDATE)
193952       , TRUNC(SYSDATE)
193953       , xla_environment_pkg.g_Usr_Id
193954       , xla_environment_pkg.g_Login_Id
193955       , TRUNC(SYSDATE)
193956       , xla_environment_pkg.g_Prog_Appl_Id
193957       , xla_environment_pkg.g_Prog_Id
193958       , xla_environment_pkg.g_Req_Id
193959   FROM (
193960        SELECT xet.event_id                  event_id
193961             , 0                             line_number
193962             , CASE r
193963                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
193964                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
193965                 
193966                ELSE null
193967               END                           object_name
193968             , CASE r
193969                 WHEN 1 THEN 'HEADER' 
193970                 WHEN 2 THEN 'HEADER' 
193971                 
193972                 ELSE null
193973               END                           object_type_code
193974             , CASE r
193975                 WHEN 1 THEN '707' 
193976                 WHEN 2 THEN '707' 
193977                 
193978                 ELSE null
193979               END                           source_application_id
193980             , 'S'             source_type_code
193981             , CASE r
193982                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
193983                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
193984                 
193985                 ELSE null
193986               END                           source_code
193987             , CASE r
193988                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
193989                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
193990                 
193991                 ELSE null
193992               END                           source_value
193993             , CASE r
193994                 WHEN 1 THEN fvl12.meaning
193995                 WHEN 2 THEN fvl38.meaning
193996                 
193997                 ELSE null
193998               END               source_meaning
193999         FROM xla_events_gt     xet  
194000       , CST_XLA_INV_HEADERS_V  h1
194001   , fnd_lookup_values    fvl12
194002   , fnd_lookup_values    fvl38
194003             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
194004        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
194005          AND xet.event_type_code = C_EVENT_TYPE_CODE
194006             AND h1.event_id = xet.event_id
194007    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
194008   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
194009   AND fvl12.view_application_id(+) = 700
194010   AND fvl12.language(+)            = USERENV('LANG')
194011      AND fvl38.lookup_type(+)         = 'YES_NO'
194012   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
194013   AND fvl38.view_application_id(+) = 0
194014   AND fvl38.language(+)            = USERENV('LANG')
194015   
194016 )
194017 ;
194018 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
194019 
194020       trace
194021          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
194022          ,p_level    => C_LEVEL_STATEMENT
194023          ,p_module   => l_log_module);
194024 
194025 END IF;
194026 --
194027 
194028 
194029 
194030 --
194031 INSERT INTO xla_diag_sources --line1
194032 (
194033         event_id
194034       , ledger_id
194035       , sla_ledger_id
194036       , description_language
194037       , object_name
194038       , object_type_code
194039       , line_number
194040       , source_application_id
194041       , source_type_code
194042       , source_code
194043       , source_value
194044       , source_meaning
194045       , created_by
194046       , creation_date
194047       , last_update_date
194048       , last_updated_by
194049       , last_update_login
194050       , program_update_date
194051       , program_application_id
194052       , program_id
194053       , request_id
194054 )
194055 SELECT  event_id
194056       , p_target_ledger_id
194057       , p_sla_ledger_id
194058       , p_language
194059       , object_name
194060       , object_type_code
194061       , line_number
194062       , source_application_id
194063       , source_type_code
194064       , source_code
194065       , SUBSTR(source_value,1,1996)
194066       , SUBSTR(source_meaning,1,200)
194067       , xla_environment_pkg.g_Usr_Id
194068       , TRUNC(SYSDATE)
194069       , TRUNC(SYSDATE)
194070       , xla_environment_pkg.g_Usr_Id
194071       , xla_environment_pkg.g_Login_Id
194072       , TRUNC(SYSDATE)
194073       , xla_environment_pkg.g_Prog_Appl_Id
194074       , xla_environment_pkg.g_Prog_Id
194075       , xla_environment_pkg.g_Req_Id
194076   FROM (
194077        SELECT xet.event_id                  event_id
194078             , l2.line_number                 line_number
194079             , CASE r
194080                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
194081                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
194082                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
194083                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
194084                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
194085                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
194086                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
194087                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
194088                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
194089                 
194090                ELSE null
194091               END                           object_name
194092             , CASE r
194093                 WHEN 1 THEN 'LINE' 
194094                 WHEN 2 THEN 'LINE' 
194095                 WHEN 3 THEN 'LINE' 
194096                 WHEN 4 THEN 'LINE' 
194097                 WHEN 5 THEN 'LINE' 
194098                 WHEN 6 THEN 'LINE' 
194099                 WHEN 7 THEN 'LINE' 
194100                 WHEN 8 THEN 'LINE' 
194101                 WHEN 9 THEN 'LINE' 
194102                 
194103                 ELSE null
194104               END                           object_type_code
194105             , CASE r
194106                 WHEN 1 THEN '707' 
194107                 WHEN 2 THEN '707' 
194108                 WHEN 3 THEN '707' 
194109                 WHEN 4 THEN '707' 
194110                 WHEN 5 THEN '707' 
194111                 WHEN 6 THEN '707' 
194112                 WHEN 7 THEN '707' 
194113                 WHEN 8 THEN '707' 
194114                 WHEN 9 THEN '707' 
194115                 
194116                 ELSE null
194117               END                           source_application_id
194118             , 'S'             source_type_code
194119             , CASE r
194120                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
194121                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
194122                 WHEN 3 THEN 'CURRENCY_CODE' 
194123                 WHEN 4 THEN 'ENTERED_AMOUNT' 
194124                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
194125                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
194126                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
194127                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
194128                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
194129                 
194130                 ELSE null
194131               END                           source_code
194132             , CASE r
194133                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
194134                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
194135                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
194136                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
194137                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
194138                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
194139                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
194140                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
194141                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
194142                 
194143                 ELSE null
194144               END                           source_value
194145             , null              source_meaning
194146          FROM  xla_events_gt     xet  
194147         , CST_XLA_INV_LINES_V  l2
194148             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
194149         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
194150           AND xet.event_type_code = C_EVENT_TYPE_CODE
194151             AND l2.event_id          = xet.event_id
194152 
194153 )
194154 ;
194155 --
194156 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
194157 
194158       trace
194159          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
194160          ,p_level    => C_LEVEL_STATEMENT
194161          ,p_module   => l_log_module);
194162 
194163 END IF;
194164 
194165 
194166 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
194167       trace
194168          (p_msg      => 'END of insert_sources_297'
194169          ,p_level    => C_LEVEL_PROCEDURE
194170          ,p_module   => l_log_module);
194171 END IF;
194172 EXCEPTION
194173   WHEN xla_exceptions_pkg.application_exception THEN
194174       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
194175             trace
194176                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
194177                ,p_level    => C_LEVEL_EXCEPTION
194178                ,p_module   => l_log_module);
194179       END IF;
194180       RAISE;
194181   WHEN OTHERS THEN
194182       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
194183             trace
194184                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
194185                ,p_level    => C_LEVEL_EXCEPTION
194186                ,p_module   => l_log_module);
194187        END IF;
194188        xla_exceptions_pkg.raise_message
194189            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_297');
194190 END insert_sources_297;
194191 --
194192 
194193 ---------------------------------------
194194 --
194195 -- PRIVATE FUNCTION
194196 --         EventType_297
194197 --
194198 ----------------------------------------
194199 --
194200 FUNCTION EventType_297
194201        (p_application_id         IN NUMBER
194202        ,p_base_ledger_id         IN NUMBER
194203        ,p_target_ledger_id       IN NUMBER
194204        ,p_language               IN VARCHAR2
194205        ,p_currency_code          IN VARCHAR2
194206        ,p_sla_ledger_id          IN NUMBER
194207        ,p_pad_start_date         IN DATE
194208        ,p_pad_end_date           IN DATE
194209        ,p_primary_ledger_id      IN NUMBER)
194210 RETURN BOOLEAN IS
194211 --
194212 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
194213 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
194214 
194215 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
194216 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
194217 --
194218 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194219 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194220 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
194221 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
194222 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194223 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
194224 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
194225 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194226 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
194227 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
194228 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194229 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194230 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194231 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194232 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
194233 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
194234 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
194235 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
194236 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
194237 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
194238 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
194239 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
194240 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
194241 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
194242 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
194243 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
194244 
194245 l_event_id                             NUMBER;
194246 l_previous_event_id                    NUMBER;
194247 l_first_event_id                       NUMBER;
194248 l_last_event_id                        NUMBER;
194249 
194250 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
194251 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
194252 --
194253 --
194254 l_result                    BOOLEAN := TRUE;
194255 l_rows                      NUMBER  := 1000;
194256 l_event_type_name           VARCHAR2(80) := 'User-defined Recipient Intransit Shipment - Transfer Price - FOB Shipment';
194257 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
194258 l_description               VARCHAR2(4000);
194259 l_transaction_reversal      NUMBER;
194260 l_ae_header_id              NUMBER;
194261 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
194262 l_log_module                VARCHAR2(240);
194263 --
194264 l_acct_reversal_source      VARCHAR2(30);
194265 l_trx_reversal_source       VARCHAR2(30);
194266 
194267 l_continue_with_lines       BOOLEAN := TRUE;
194268 --
194269 l_acc_rev_gl_date_source    DATE;                      -- 4262811
194270 --
194271 type t_array_event_id is table of number index by binary_integer;
194272 
194273 l_rec_array_event                    t_rec_array_event;
194274 l_null_rec_array_event               t_rec_array_event;
194275 l_array_ae_header_id                 xla_number_array_type;
194276 l_actual_flag                        VARCHAR2(1) := NULL;
194277 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
194278 l_balance_type_code                  VARCHAR2(1) :=NULL;
194279 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
194280 
194281 --
194282 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
194283 --
194284 
194285 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
194286 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
194287 
194288 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
194289 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
194290 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
194291 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
194292 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
194293 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
194294 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
194295 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
194296 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
194297 
194298 l_array_source_12              t_array_source_12;
194299 l_array_source_12_meaning      t_array_lookup_meaning;
194300 l_array_source_38              t_array_source_38;
194301 l_array_source_38_meaning      t_array_lookup_meaning;
194302 
194303 l_array_source_4      t_array_source_4;
194304 l_array_source_11      t_array_source_11;
194305 l_array_source_15      t_array_source_15;
194306 l_array_source_18      t_array_source_18;
194307 l_array_source_19      t_array_source_19;
194308 l_array_source_20      t_array_source_20;
194309 l_array_source_21      t_array_source_21;
194310 l_array_source_22      t_array_source_22;
194311 l_array_source_24      t_array_source_24;
194312 
194313 --
194314 CURSOR header_cur
194315 IS
194316 SELECT /*+ leading(xet) cardinality(xet,1) */
194317 -- Event Type Code: UFOB_SHIP_RECIPIENT_SHIP_TP
194318 -- Event Class Code: USER_DEFINE
194319     xet.entity_id
194320   , xet.legal_entity_id
194321   , xet.entity_code
194322   , xet.transaction_number
194323   , xet.event_id
194324   , xet.event_class_code
194325   , xet.event_type_code
194326   , xet.event_number
194327   , xet.event_date
194328   , xet.transaction_date
194329   , xet.reference_num_1
194330   , xet.reference_num_2
194331   , xet.reference_num_3
194332   , xet.reference_num_4
194333   , xet.reference_char_1
194334   , xet.reference_char_2
194335   , xet.reference_char_3
194336   , xet.reference_char_4
194337   , xet.reference_date_1
194338   , xet.reference_date_2
194339   , xet.reference_date_3
194340   , xet.reference_date_4
194341   , xet.event_created_by
194342   , xet.budgetary_control_flag 
194343   , h1.DISTRIBUTION_TYPE    source_12
194344   , fvl12.meaning   source_12_meaning
194345   , h1.TRANSFER_TO_GL_INDICATOR    source_38
194346   , fvl38.meaning   source_38_meaning
194347   FROM xla_events_gt     xet 
194348   , CST_XLA_INV_HEADERS_V  h1
194349   , fnd_lookup_values    fvl12
194350   , fnd_lookup_values    fvl38
194351  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
194352    and xet.event_type_code = C_EVENT_TYPE_CODE
194353    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
194354    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
194355   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
194356   AND fvl12.view_application_id(+) = 700
194357   AND fvl12.language(+)            = USERENV('LANG')
194358      AND fvl38.lookup_type(+)         = 'YES_NO'
194359   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
194360   AND fvl38.view_application_id(+) = 0
194361   AND fvl38.language(+)            = USERENV('LANG')
194362   
194363  ORDER BY event_id
194364 ;
194365 
194366 
194367 --
194368 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
194369 IS
194370 SELECT /*+ leading(xet) cardinality(xet,1) */
194371 -- Event Type Code: UFOB_SHIP_RECIPIENT_SHIP_TP
194372 -- Event Class Code: USER_DEFINE
194373     xet.entity_id
194374    ,xet.legal_entity_id
194375    ,xet.entity_code
194376    ,xet.transaction_number
194377    ,xet.event_id
194378    ,xet.event_class_code
194379    ,xet.event_type_code
194380    ,xet.event_number
194381    ,xet.event_date
194382    ,xet.transaction_date
194383    ,xet.reference_num_1
194384    ,xet.reference_num_2
194385    ,xet.reference_num_3
194386    ,xet.reference_num_4
194387    ,xet.reference_char_1
194388    ,xet.reference_char_2
194389    ,xet.reference_char_3
194390    ,xet.reference_char_4
194391    ,xet.reference_date_1
194392    ,xet.reference_date_2
194393    ,xet.reference_date_3
194394    ,xet.reference_date_4
194395    ,xet.event_created_by
194396    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
194397   , l2.CODE_COMBINATION_ID    source_4
194398   , l2.DISTRIBUTION_IDENTIFIER    source_11
194399   , l2.CURRENCY_CODE    source_15
194400   , l2.ENTERED_AMOUNT    source_18
194401   , l2.CURRENCY_CONVERSION_DATE    source_19
194402   , l2.CURRENCY_CONVERSION_RATE    source_20
194403   , l2.CURRENCY_CONVERSION_TYPE    source_21
194404   , l2.ACCOUNTED_AMOUNT    source_22
194405   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
194406   FROM xla_events_gt     xet 
194407   , CST_XLA_INV_LINES_V  l2
194408  WHERE xet.event_id between x_first_event_id and x_last_event_id
194409    and xet.event_date between p_pad_start_date and p_pad_end_date
194410    and xet.event_type_code = C_EVENT_TYPE_CODE
194411    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
194412 ;
194413 
194414 --
194415 BEGIN
194416 IF g_log_enabled THEN
194417    l_log_module := C_DEFAULT_MODULE||'.EventType_297';
194418 END IF;
194419 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
194420    trace
194421       (p_msg      => 'BEGIN of EventType_297'
194422       ,p_level    => C_LEVEL_PROCEDURE
194423       ,p_module   => l_log_module);
194424 END IF;
194425 
194426 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
194427    trace
194428       (p_msg      => 'p_application_id = '||p_application_id||
194429                      ' - p_base_ledger_id = '||p_base_ledger_id||
194430                      ' - p_target_ledger_id  = '||p_target_ledger_id||
194431                      ' - p_language = '||p_language||
194432                      ' - p_currency_code = '||p_currency_code||
194433                      ' - p_sla_ledger_id = '||p_sla_ledger_id
194434       ,p_level    => C_LEVEL_STATEMENT
194435       ,p_module   => l_log_module);
194436 END IF;
194437 --
194438 -- initialze arrays
194439 --
194440 g_array_event.DELETE;
194441 l_rec_array_event := l_null_rec_array_event;
194442 --
194443 --------------------------------------
194444 -- 4262811 Initialze MPA Line Number
194445 --------------------------------------
194446 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
194447 
194448 --
194449 
194450 --
194451 OPEN header_cur;
194452 --
194453 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
194454    trace
194455    (p_msg      => 'SQL - FETCH header_cur'
194456    ,p_level    => C_LEVEL_STATEMENT
194457    ,p_module   => l_log_module);
194458 END IF;
194459 --
194460 LOOP
194461 FETCH header_cur BULK COLLECT INTO
194462         l_array_entity_id
194463       , l_array_legal_entity_id
194464       , l_array_entity_code
194465       , l_array_transaction_num
194466       , l_array_event_id
194467       , l_array_class_code
194468       , l_array_event_type
194469       , l_array_event_number
194470       , l_array_event_date
194471       , l_array_transaction_date
194472       , l_array_reference_num_1
194473       , l_array_reference_num_2
194474       , l_array_reference_num_3
194475       , l_array_reference_num_4
194476       , l_array_reference_char_1
194477       , l_array_reference_char_2
194478       , l_array_reference_char_3
194479       , l_array_reference_char_4
194480       , l_array_reference_date_1
194481       , l_array_reference_date_2
194482       , l_array_reference_date_3
194483       , l_array_reference_date_4
194484       , l_array_event_created_by
194485       , l_array_budgetary_control_flag 
194486       , l_array_source_12
194487       , l_array_source_12_meaning
194488       , l_array_source_38
194489       , l_array_source_38_meaning
194490       LIMIT l_rows;
194491 --
194492 IF (C_LEVEL_EVENT >= g_log_level) THEN
194493    trace
194494    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
194495    ,p_level    => C_LEVEL_EVENT
194496    ,p_module   => l_log_module);
194497 END IF;
194498 --
194499 EXIT WHEN l_array_entity_id.COUNT = 0;
194500 
194501 -- initialize arrays
194502 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
194503 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
194504 
194505 --
194506 -- Bug 4458708
194507 --
194508 XLA_AE_LINES_PKG.g_LineNumber := 0;
194509 
194510 
194511 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
194512 g_last_hdr_idx := l_array_event_id.LAST;
194513 --
194514 -- loop for the headers. Each iteration is for each header extract row
194515 -- fetched in header cursor
194516 --
194517 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
194518 
194519 --
194520 -- set event info as cache for other routines to refer event attributes
194521 --
194522 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
194523    (p_application_id           => p_application_id
194524    ,p_primary_ledger_id        => p_primary_ledger_id
194525    ,p_base_ledger_id           => p_base_ledger_id
194526    ,p_target_ledger_id         => p_target_ledger_id
194527    ,p_entity_id                => l_array_entity_id(hdr_idx)
194528    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
194529    ,p_entity_code              => l_array_entity_code(hdr_idx)
194530    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
194531    ,p_event_id                 => l_array_event_id(hdr_idx)
194532    ,p_event_class_code         => l_array_class_code(hdr_idx)
194533    ,p_event_type_code          => l_array_event_type(hdr_idx)
194534    ,p_event_number             => l_array_event_number(hdr_idx)
194535    ,p_event_date               => l_array_event_date(hdr_idx)
194536    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
194537    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
194538    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
194539    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
194540    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
194541    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
194542    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
194543    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
194544    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
194545    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
194546    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
194547    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
194548    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
194549    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
194550    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
194551 
194552 --
194553 -- set the status of entry to C_VALID (0)
194554 --
194555 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
194556 
194557 --
194558 -- initialize a row for ae header
194559 --
194560 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
194561 
194562 l_event_id := l_array_event_id(hdr_idx);
194563 
194564 --
194565 -- storing the hdr_idx for event. May be used by line cursor.
194566 --
194567 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
194568 
194569 --
194570 -- store sources from header extract. This can be improved to
194571 -- store only those sources from header extract that may be used in lines
194572 --
194573 
194574 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
194575 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
194576 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
194577 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
194578 
194579 --
194580 -- initilaize the status of ae headers for diffrent balance types
194581 -- the status is initialised to C_NOT_CREATED (2)
194582 --
194583 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
194584 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
194585 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
194586 
194587 --
194588 -- call api to validate and store accounting attributes for header
194589 --
194590 
194591 ------------------------------------------------------------
194592 -- Accrual Reversal : to get date for Standard Source (NONE)
194593 ------------------------------------------------------------
194594 l_acc_rev_gl_date_source := NULL;
194595 
194596      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
194597       l_rec_acct_attrs.array_date_value(1) := 
194598 xla_ae_sources_pkg.GetSystemSourceDate(
194599    p_source_code           => 'XLA_REFERENCE_DATE_1'
194600  , p_source_type_code      => 'Y'
194601  , p_source_application_id =>  602
194602 );
194603      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
194604       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
194605 
194606 
194607 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
194608 
194609 XLA_AE_HEADER_PKG.SetJeCategoryName;
194610 
194611 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
194612 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
194613 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
194614 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
194615 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
194616 
194617 
194618 -- No header level analytical criteria
194619 
194620 --
194621 --accounting attribute enhancement, bug 3612931
194622 --
194623 l_trx_reversal_source := SUBSTR(NULL, 1,30);
194624 
194625 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
194626    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
194627 
194628    xla_accounting_err_pkg.build_message
194629       (p_appli_s_name            => 'XLA'
194630       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
194631       ,p_token_1                 => 'ACCT_ATTR_NAME'
194632       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
194633       ,p_token_2                 => 'PRODUCT_NAME'
194634       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
194635       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
194636       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
194637       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
194638 
194639 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
194640    --
194641    -- following sets the accounting attributes needed to reverse
194642    -- accounting for a distributeion
194643    --
194644    xla_ae_lines_pkg.SetTrxReversalAttrs
194645       (p_event_id              => l_event_id
194646       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
194647       ,p_trx_reversal_source   => l_trx_reversal_source);
194648 
194649 END IF;
194650 
194651 
194652 ----------------------------------------------------------------
194653 -- 4262811 -  update the header statuses to invalid in need be
194654 ----------------------------------------------------------------
194655 --
194656 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
194657 
194658 
194659   -----------------------------------------------
194660   -- No accrual reversal for the event class/type
194661   -----------------------------------------------
194662 ----------------------------------------------------------------
194663 
194664 --
194665 -- this ends the header loop iteration for one bulk fetch
194666 --
194667 END LOOP;
194668 
194669 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
194670 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
194671 
194672 --
194673 -- insert dummy rows into lines gt table that were created due to
194674 -- transaction reversals
194675 --
194676 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
194677    l_result := XLA_AE_LINES_PKG.InsertLines;
194678 END IF;
194679 
194680 --
194681 -- reset the temp_line_num for each set of events fetched from header
194682 -- cursor rather than doing it for each new event in line cursor
194683 -- Bug 3939231
194684 --
194685 xla_ae_lines_pkg.g_temp_line_num := 0;
194686 
194687 
194688 
194689 --
194690 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
194691 --
194692 --
194693 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
194694 
194695       trace
194696          (p_msg      => 'SQL - FETCH line_cur'
194697          ,p_level    => C_LEVEL_STATEMENT
194698          ,p_module   => l_log_module);
194699 
194700 END IF;
194701 --
194702 --
194703 LOOP
194704   --
194705   FETCH line_cur BULK COLLECT INTO
194706         l_array_entity_id
194707       , l_array_legal_entity_id
194708       , l_array_entity_code
194709       , l_array_transaction_num
194710       , l_array_event_id
194711       , l_array_class_code
194712       , l_array_event_type
194713       , l_array_event_number
194714       , l_array_event_date
194715       , l_array_transaction_date
194716       , l_array_reference_num_1
194717       , l_array_reference_num_2
194718       , l_array_reference_num_3
194719       , l_array_reference_num_4
194720       , l_array_reference_char_1
194721       , l_array_reference_char_2
194722       , l_array_reference_char_3
194723       , l_array_reference_char_4
194724       , l_array_reference_date_1
194725       , l_array_reference_date_2
194726       , l_array_reference_date_3
194727       , l_array_reference_date_4
194728       , l_array_event_created_by
194729       , l_array_budgetary_control_flag
194730       , l_array_extract_line_num 
194731       , l_array_source_4
194732       , l_array_source_11
194733       , l_array_source_15
194734       , l_array_source_18
194735       , l_array_source_19
194736       , l_array_source_20
194737       , l_array_source_21
194738       , l_array_source_22
194739       , l_array_source_24
194740       LIMIT l_rows;
194741 
194742   --
194743   IF (C_LEVEL_EVENT >= g_log_level) THEN
194744             trace
194745                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
194746                ,p_level    => C_LEVEL_EVENT
194747                ,p_module   => l_log_module);
194748   END IF;
194749   --
194750   EXIT WHEN l_array_entity_id.count = 0;
194751 
194752   XLA_AE_LINES_PKG.g_rec_lines := null;
194753 
194754 --
194755 -- Bug 4458708
194756 --
194757 XLA_AE_LINES_PKG.g_LineNumber := 0;
194758 --
194759 --
194760 
194761 FOR Idx IN 1..l_array_event_id.count LOOP
194762    --
194763    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
194764    --
194765    l_event_id := l_array_event_id(idx);  -- 5648433
194766 
194767    --
194768    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
194769    --
194770 
194771    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
194772              (g_array_event(l_event_id).array_value_num('header_index'))
194773          ,'N'
194774          ) <> 'Y'
194775    THEN
194776       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
194777          trace
194778             (p_msg      => 'Trancaction revesal option is not Y '
194779             ,p_level    => C_LEVEL_STATEMENT
194780             ,p_module   => l_log_module);
194781       END IF;
194782 
194783 --
194784 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
194785 --
194786 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
194787 --
194788 -- set event info as cache for other routines to refer event attributes
194789 --
194790 
194791 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
194792    l_previous_event_id := l_event_id;
194793 
194794    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
194795       (p_application_id           => p_application_id
194796       ,p_primary_ledger_id        => p_primary_ledger_id
194797       ,p_base_ledger_id           => p_base_ledger_id
194798       ,p_target_ledger_id         => p_target_ledger_id
194799       ,p_entity_id                => l_array_entity_id(Idx)
194800       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
194801       ,p_entity_code              => l_array_entity_code(Idx)
194802       ,p_transaction_num          => l_array_transaction_num(Idx)
194803       ,p_event_id                 => l_array_event_id(Idx)
194804       ,p_event_class_code         => l_array_class_code(Idx)
194805       ,p_event_type_code          => l_array_event_type(Idx)
194806       ,p_event_number             => l_array_event_number(Idx)
194807       ,p_event_date               => l_array_event_date(Idx)
194808       ,p_transaction_date         => l_array_transaction_date(Idx)
194809       ,p_reference_num_1          => l_array_reference_num_1(Idx)
194810       ,p_reference_num_2          => l_array_reference_num_2(Idx)
194811       ,p_reference_num_3          => l_array_reference_num_3(Idx)
194812       ,p_reference_num_4          => l_array_reference_num_4(Idx)
194813       ,p_reference_char_1         => l_array_reference_char_1(Idx)
194814       ,p_reference_char_2         => l_array_reference_char_2(Idx)
194815       ,p_reference_char_3         => l_array_reference_char_3(Idx)
194816       ,p_reference_char_4         => l_array_reference_char_4(Idx)
194817       ,p_reference_date_1         => l_array_reference_date_1(Idx)
194818       ,p_reference_date_2         => l_array_reference_date_2(Idx)
194819       ,p_reference_date_3         => l_array_reference_date_3(Idx)
194820       ,p_reference_date_4         => l_array_reference_date_4(Idx)
194821       ,p_event_created_by         => l_array_event_created_by(Idx)
194822       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
194823        --
194824 END IF;
194825 
194826 
194827 
194828 --
194829 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
194830 
194831 l_acct_reversal_source := SUBSTR(NULL, 1,30);
194832 
194833 IF l_continue_with_lines THEN
194834    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
194835       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
194836 
194837       xla_accounting_err_pkg.build_message
194838          (p_appli_s_name            => 'XLA'
194839          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
194840          ,p_token_1                 => 'LINE_NUMBER'
194841          ,p_value_1                 => l_array_extract_line_num(Idx)
194842          ,p_token_2                 => 'PRODUCT_NAME'
194843          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
194844          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
194845          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
194846          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
194847 
194848    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
194849       --
194850       -- following sets the accounting attributes needed to reverse
194851       -- accounting for a distributeion
194852       --
194853 
194854       --
194855       -- 5217187
194856       --
194857       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
194858       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
194859                                        g_array_event(l_event_id).array_value_num('header_index'));
194860       --
194861       --
194862 
194863       -- No reversal code generated
194864 
194865       xla_ae_lines_pkg.SetAcctReversalAttrs
194866          (p_event_id             => l_event_id
194867          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
194868          ,p_calculate_acctd_flag => l_calculate_acctd_flag
194869          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
194870    END IF;
194871 
194872    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
194873        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
194874 
194875 --
194876 AcctLineType_32 (
194877  p_application_id  => p_application_id
194878  ,p_event_id     => l_event_id
194879  ,p_calculate_acctd_flag => l_calculate_acctd_flag
194880  ,p_calculate_g_l_flag => l_calculate_g_l_flag
194881  ,p_actual_flag => l_actual_flag
194882  ,p_balance_type_code => l_balance_type_code
194883  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
194884  
194885  , p_source_4 => l_array_source_4(Idx)
194886  , p_source_11 => l_array_source_11(Idx)
194887  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
194888  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
194889  , p_source_15 => l_array_source_15(Idx)
194890  , p_source_18 => l_array_source_18(Idx)
194891  , p_source_19 => l_array_source_19(Idx)
194892  , p_source_20 => l_array_source_20(Idx)
194893  , p_source_21 => l_array_source_21(Idx)
194894  , p_source_22 => l_array_source_22(Idx)
194895  , p_source_24 => l_array_source_24(Idx)
194896  );
194897 If(l_balance_type_code = 'A') THEN
194898   l_actual_gain_loss_ref := l_gain_or_loss_ref;
194899 END IF;
194900 
194901 --
194902 
194903 
194904 --
194905 AcctLineType_55 (
194906  p_application_id  => p_application_id
194907  ,p_event_id     => l_event_id
194908  ,p_calculate_acctd_flag => l_calculate_acctd_flag
194909  ,p_calculate_g_l_flag => l_calculate_g_l_flag
194910  ,p_actual_flag => l_actual_flag
194911  ,p_balance_type_code => l_balance_type_code
194912  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
194913  
194914  , p_source_4 => l_array_source_4(Idx)
194915  , p_source_11 => l_array_source_11(Idx)
194916  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
194917  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
194918  , p_source_15 => l_array_source_15(Idx)
194919  , p_source_18 => l_array_source_18(Idx)
194920  , p_source_19 => l_array_source_19(Idx)
194921  , p_source_20 => l_array_source_20(Idx)
194922  , p_source_21 => l_array_source_21(Idx)
194923  , p_source_22 => l_array_source_22(Idx)
194924  , p_source_24 => l_array_source_24(Idx)
194925  );
194926 If(l_balance_type_code = 'A') THEN
194927   l_actual_gain_loss_ref := l_gain_or_loss_ref;
194928 END IF;
194929 
194930 --
194931 
194932 
194933 --
194934 AcctLineType_63 (
194935  p_application_id  => p_application_id
194936  ,p_event_id     => l_event_id
194937  ,p_calculate_acctd_flag => l_calculate_acctd_flag
194938  ,p_calculate_g_l_flag => l_calculate_g_l_flag
194939  ,p_actual_flag => l_actual_flag
194940  ,p_balance_type_code => l_balance_type_code
194941  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
194942  
194943  , p_source_4 => l_array_source_4(Idx)
194944  , p_source_11 => l_array_source_11(Idx)
194945  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
194946  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
194947  , p_source_15 => l_array_source_15(Idx)
194948  , p_source_18 => l_array_source_18(Idx)
194949  , p_source_19 => l_array_source_19(Idx)
194950  , p_source_20 => l_array_source_20(Idx)
194951  , p_source_21 => l_array_source_21(Idx)
194952  , p_source_22 => l_array_source_22(Idx)
194953  , p_source_24 => l_array_source_24(Idx)
194954  );
194955 If(l_balance_type_code = 'A') THEN
194956   l_actual_gain_loss_ref := l_gain_or_loss_ref;
194957 END IF;
194958 
194959 --
194960 
194961 
194962 --
194963 AcctLineType_81 (
194964  p_application_id  => p_application_id
194965  ,p_event_id     => l_event_id
194966  ,p_calculate_acctd_flag => l_calculate_acctd_flag
194967  ,p_calculate_g_l_flag => l_calculate_g_l_flag
194968  ,p_actual_flag => l_actual_flag
194969  ,p_balance_type_code => l_balance_type_code
194970  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
194971  
194972  , p_source_4 => l_array_source_4(Idx)
194973  , p_source_11 => l_array_source_11(Idx)
194974  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
194975  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
194976  , p_source_15 => l_array_source_15(Idx)
194977  , p_source_18 => l_array_source_18(Idx)
194978  , p_source_19 => l_array_source_19(Idx)
194979  , p_source_20 => l_array_source_20(Idx)
194980  , p_source_21 => l_array_source_21(Idx)
194981  , p_source_22 => l_array_source_22(Idx)
194982  , p_source_24 => l_array_source_24(Idx)
194983  );
194984 If(l_balance_type_code = 'A') THEN
194985   l_actual_gain_loss_ref := l_gain_or_loss_ref;
194986 END IF;
194987 
194988 --
194989 
194990 
194991 --
194992 AcctLineType_122 (
194993  p_application_id  => p_application_id
194994  ,p_event_id     => l_event_id
194995  ,p_calculate_acctd_flag => l_calculate_acctd_flag
194996  ,p_calculate_g_l_flag => l_calculate_g_l_flag
194997  ,p_actual_flag => l_actual_flag
194998  ,p_balance_type_code => l_balance_type_code
194999  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
195000  
195001  , p_source_4 => l_array_source_4(Idx)
195002  , p_source_11 => l_array_source_11(Idx)
195003  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
195004  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
195005  , p_source_15 => l_array_source_15(Idx)
195006  , p_source_18 => l_array_source_18(Idx)
195007  , p_source_19 => l_array_source_19(Idx)
195008  , p_source_20 => l_array_source_20(Idx)
195009  , p_source_21 => l_array_source_21(Idx)
195010  , p_source_22 => l_array_source_22(Idx)
195011  , p_source_24 => l_array_source_24(Idx)
195012  );
195013 If(l_balance_type_code = 'A') THEN
195014   l_actual_gain_loss_ref := l_gain_or_loss_ref;
195015 END IF;
195016 
195017 --
195018 
195019 
195020 --
195021 AcctLineType_176 (
195022  p_application_id  => p_application_id
195023  ,p_event_id     => l_event_id
195024  ,p_calculate_acctd_flag => l_calculate_acctd_flag
195025  ,p_calculate_g_l_flag => l_calculate_g_l_flag
195026  ,p_actual_flag => l_actual_flag
195027  ,p_balance_type_code => l_balance_type_code
195028  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
195029  
195030  , p_source_4 => l_array_source_4(Idx)
195031  , p_source_11 => l_array_source_11(Idx)
195032  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
195033  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
195034  , p_source_15 => l_array_source_15(Idx)
195035  , p_source_18 => l_array_source_18(Idx)
195036  , p_source_19 => l_array_source_19(Idx)
195037  , p_source_20 => l_array_source_20(Idx)
195038  , p_source_21 => l_array_source_21(Idx)
195039  , p_source_22 => l_array_source_22(Idx)
195040  , p_source_24 => l_array_source_24(Idx)
195041  );
195042 If(l_balance_type_code = 'A') THEN
195043   l_actual_gain_loss_ref := l_gain_or_loss_ref;
195044 END IF;
195045 
195046 --
195047 
195048 
195049 --
195050 AcctLineType_181 (
195051  p_application_id  => p_application_id
195052  ,p_event_id     => l_event_id
195053  ,p_calculate_acctd_flag => l_calculate_acctd_flag
195054  ,p_calculate_g_l_flag => l_calculate_g_l_flag
195055  ,p_actual_flag => l_actual_flag
195056  ,p_balance_type_code => l_balance_type_code
195057  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
195058  
195059  , p_source_4 => l_array_source_4(Idx)
195060  , p_source_11 => l_array_source_11(Idx)
195061  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
195062  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
195063  , p_source_15 => l_array_source_15(Idx)
195064  , p_source_18 => l_array_source_18(Idx)
195065  , p_source_19 => l_array_source_19(Idx)
195066  , p_source_20 => l_array_source_20(Idx)
195067  , p_source_21 => l_array_source_21(Idx)
195068  , p_source_22 => l_array_source_22(Idx)
195069  , p_source_24 => l_array_source_24(Idx)
195070  );
195071 If(l_balance_type_code = 'A') THEN
195072   l_actual_gain_loss_ref := l_gain_or_loss_ref;
195073 END IF;
195074 
195075 --
195076 
195077 
195078 --
195079 AcctLineType_215 (
195080  p_application_id  => p_application_id
195081  ,p_event_id     => l_event_id
195082  ,p_calculate_acctd_flag => l_calculate_acctd_flag
195083  ,p_calculate_g_l_flag => l_calculate_g_l_flag
195084  ,p_actual_flag => l_actual_flag
195085  ,p_balance_type_code => l_balance_type_code
195086  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
195087  
195088  , p_source_4 => l_array_source_4(Idx)
195089  , p_source_11 => l_array_source_11(Idx)
195090  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
195091  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
195092  , p_source_15 => l_array_source_15(Idx)
195093  , p_source_18 => l_array_source_18(Idx)
195094  , p_source_19 => l_array_source_19(Idx)
195095  , p_source_20 => l_array_source_20(Idx)
195096  , p_source_21 => l_array_source_21(Idx)
195097  , p_source_22 => l_array_source_22(Idx)
195098  , p_source_24 => l_array_source_24(Idx)
195099  );
195100 If(l_balance_type_code = 'A') THEN
195101   l_actual_gain_loss_ref := l_gain_or_loss_ref;
195102 END IF;
195103 
195104 --
195105 
195106 
195107 --
195108 AcctLineType_220 (
195109  p_application_id  => p_application_id
195110  ,p_event_id     => l_event_id
195111  ,p_calculate_acctd_flag => l_calculate_acctd_flag
195112  ,p_calculate_g_l_flag => l_calculate_g_l_flag
195113  ,p_actual_flag => l_actual_flag
195114  ,p_balance_type_code => l_balance_type_code
195115  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
195116  
195117  , p_source_4 => l_array_source_4(Idx)
195118  , p_source_11 => l_array_source_11(Idx)
195119  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
195120  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
195121  , p_source_15 => l_array_source_15(Idx)
195122  , p_source_18 => l_array_source_18(Idx)
195123  , p_source_19 => l_array_source_19(Idx)
195124  , p_source_20 => l_array_source_20(Idx)
195125  , p_source_21 => l_array_source_21(Idx)
195126  , p_source_22 => l_array_source_22(Idx)
195127  , p_source_24 => l_array_source_24(Idx)
195128  );
195129 If(l_balance_type_code = 'A') THEN
195130   l_actual_gain_loss_ref := l_gain_or_loss_ref;
195131 END IF;
195132 
195133 --
195134 
195135       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
195136       -- or secondary ledger that has different currency with primary
195137       -- or alc that is calculated by sla
195138       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
195139             (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'))
195140 
195141 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
195142 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
195143           AND (l_actual_flag = 'A')) THEN
195144         XLA_AE_LINES_PKG.CreateGainOrLossLines(
195145           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
195146          ,p_application_id   => p_application_id
195147          ,p_amb_context_code => 'DEFAULT'
195148          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
195149          ,p_event_class_code => C_EVENT_CLASS_CODE
195150          ,p_event_type_code  => C_EVENT_TYPE_CODE
195151          
195152          ,p_gain_ccid        => -1
195153          ,p_loss_ccid        => -1
195154 
195155          ,p_actual_flag      => l_actual_flag
195156          ,p_enc_flag         => null
195157          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
195158          ,p_enc_g_l_ref      => null
195159          );
195160       END IF;
195161    END IF;
195162 END IF;
195163 
195164    ELSE
195165       --
195166       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
195167       --
195168       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195169          trace
195170             (p_msg      => 'Trancaction revesal option is Y'
195171             ,p_level    => C_LEVEL_STATEMENT
195172             ,p_module   => l_log_module);
195173       END IF;
195174    END IF;
195175 
195176 END LOOP;
195177 l_result := XLA_AE_LINES_PKG.InsertLines ;
195178 end loop;
195179 close line_cur;
195180 
195181 
195182 --
195183 -- insert headers into xla_ae_headers_gt table
195184 --
195185 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
195186 
195187 -- insert into errors table here.
195188 
195189 END LOOP;
195190 
195191 --
195192 -- 4865292
195193 --
195194 -- Compare g_hdr_extract_count with event count in
195195 -- CreateHeadersAndLines.
195196 --
195197 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
195198 
195199 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195200    trace (p_msg     => '# rows extracted from header extract objects '
195201                     || ' (running total): '
195202                     || g_hdr_extract_count
195203          ,p_level   => C_LEVEL_STATEMENT
195204          ,p_module  => l_log_module);
195205 END IF;
195206 
195207 CLOSE header_cur;
195208 --
195209 
195210 --
195211 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
195212    trace
195213       (p_msg      => 'END of EventType_297'
195214       ,p_level    => C_LEVEL_PROCEDURE
195215       ,p_module   => l_log_module);
195216 END IF;
195217 --
195218 RETURN l_result;
195219 EXCEPTION
195220 WHEN xla_exceptions_pkg.application_exception THEN
195221    
195222 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
195223 
195224    
195225 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
195226 
195227    RAISE;
195228 
195229 WHEN NO_DATA_FOUND THEN
195230 
195231 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
195232 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
195233 
195234 FOR header_record IN header_cur
195235 LOOP
195236     l_array_header_events(header_record.event_id) := header_record.event_id;
195237 END LOOP;
195238 
195239 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
195240 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
195241 
195242 fnd_file.put_line(fnd_file.LOG, '                    ');
195243 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
195244 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
195245 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
195246 
195247 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
195248 LOOP
195249 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
195250 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
195251         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
195252 	END IF;
195253 END LOOP;
195254 
195255 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
195256 fnd_file.put_line(fnd_file.LOG, '                    ');
195257 
195258 
195259 xla_exceptions_pkg.raise_message
195260       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_297');
195261 
195262 
195263 WHEN OTHERS THEN
195264    xla_exceptions_pkg.raise_message
195265       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_297');
195266 END EventType_297;
195267 --
195268 
195269 ---------------------------------------
195270 --
195271 -- PRIVATE PROCEDURE
195272 --         insert_sources_298
195273 --
195274 ----------------------------------------
195275 --
195276 PROCEDURE insert_sources_298(
195277                                 p_target_ledger_id       IN NUMBER
195278                               , p_language               IN VARCHAR2
195279                               , p_sla_ledger_id          IN NUMBER
195280                               , p_pad_start_date         IN DATE
195281                               , p_pad_end_date           IN DATE
195282                          )
195283 IS
195284 
195285 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
195286 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
195287 p_apps_owner                   VARCHAR2(30);
195288 l_log_module                   VARCHAR2(240);
195289 BEGIN
195290 IF g_log_enabled THEN
195291       l_log_module := C_DEFAULT_MODULE||'.insert_sources_298';
195292 END IF;
195293 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
195294 
195295       trace
195296          (p_msg      => 'BEGIN of insert_sources_298'
195297          ,p_level    => C_LEVEL_PROCEDURE
195298          ,p_module   => l_log_module);
195299 
195300 END IF;
195301 
195302 -- select APPS owner
195303 SELECT oracle_username
195304   INTO p_apps_owner
195305   FROM fnd_oracle_userid
195306  WHERE read_only_flag = 'U'
195307 ;
195308 
195309 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195310       trace
195311          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
195312                         ' - p_language = '||p_language||
195313                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
195314                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
195315                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
195316                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
195317          ,p_level    => C_LEVEL_STATEMENT
195318          ,p_module   => l_log_module);
195319 END IF;
195320 
195321 
195322 --
195323 INSERT INTO xla_diag_sources --hdr1
195324 (
195325         event_id
195326       , ledger_id
195327       , sla_ledger_id
195328       , description_language
195329       , object_name
195330       , object_type_code
195331       , line_number
195332       , source_application_id
195333       , source_type_code
195334       , source_code
195335       , source_value
195336       , source_meaning
195337       , created_by
195338       , creation_date
195339       , last_update_date
195340       , last_updated_by
195341       , last_update_login
195342       , program_update_date
195343       , program_application_id
195344       , program_id
195345       , request_id
195346 )
195347 SELECT
195348         event_id
195349       , p_target_ledger_id
195350       , p_sla_ledger_id
195351       , p_language
195352       , object_name
195353       , object_type_code
195354       , line_number
195355       , source_application_id
195356       , source_type_code
195357       , source_code
195358       , SUBSTR(source_value ,1,1996)
195359       , SUBSTR(source_meaning,1,200)
195360       , xla_environment_pkg.g_Usr_Id
195361       , TRUNC(SYSDATE)
195362       , TRUNC(SYSDATE)
195363       , xla_environment_pkg.g_Usr_Id
195364       , xla_environment_pkg.g_Login_Id
195365       , TRUNC(SYSDATE)
195366       , xla_environment_pkg.g_Prog_Appl_Id
195367       , xla_environment_pkg.g_Prog_Id
195368       , xla_environment_pkg.g_Req_Id
195369   FROM (
195370        SELECT xet.event_id                  event_id
195371             , 0                             line_number
195372             , CASE r
195373                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
195374                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
195375                 
195376                ELSE null
195377               END                           object_name
195378             , CASE r
195379                 WHEN 1 THEN 'HEADER' 
195380                 WHEN 2 THEN 'HEADER' 
195381                 
195382                 ELSE null
195383               END                           object_type_code
195384             , CASE r
195385                 WHEN 1 THEN '707' 
195386                 WHEN 2 THEN '707' 
195387                 
195388                 ELSE null
195389               END                           source_application_id
195390             , 'S'             source_type_code
195391             , CASE r
195392                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
195393                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
195394                 
195395                 ELSE null
195396               END                           source_code
195397             , CASE r
195398                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
195399                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
195400                 
195401                 ELSE null
195402               END                           source_value
195403             , CASE r
195404                 WHEN 1 THEN fvl12.meaning
195405                 WHEN 2 THEN fvl38.meaning
195406                 
195407                 ELSE null
195408               END               source_meaning
195409         FROM xla_events_gt     xet  
195410       , CST_XLA_INV_HEADERS_V  h1
195411   , fnd_lookup_values    fvl12
195412   , fnd_lookup_values    fvl38
195413             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
195414        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
195415          AND xet.event_type_code = C_EVENT_TYPE_CODE
195416             AND h1.event_id = xet.event_id
195417    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
195418   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
195419   AND fvl12.view_application_id(+) = 700
195420   AND fvl12.language(+)            = USERENV('LANG')
195421      AND fvl38.lookup_type(+)         = 'YES_NO'
195422   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
195423   AND fvl38.view_application_id(+) = 0
195424   AND fvl38.language(+)            = USERENV('LANG')
195425   
195426 )
195427 ;
195428 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195429 
195430       trace
195431          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
195432          ,p_level    => C_LEVEL_STATEMENT
195433          ,p_module   => l_log_module);
195434 
195435 END IF;
195436 --
195437 
195438 
195439 
195440 --
195441 INSERT INTO xla_diag_sources --line1
195442 (
195443         event_id
195444       , ledger_id
195445       , sla_ledger_id
195446       , description_language
195447       , object_name
195448       , object_type_code
195449       , line_number
195450       , source_application_id
195451       , source_type_code
195452       , source_code
195453       , source_value
195454       , source_meaning
195455       , created_by
195456       , creation_date
195457       , last_update_date
195458       , last_updated_by
195459       , last_update_login
195460       , program_update_date
195461       , program_application_id
195462       , program_id
195463       , request_id
195464 )
195465 SELECT  event_id
195466       , p_target_ledger_id
195467       , p_sla_ledger_id
195468       , p_language
195469       , object_name
195470       , object_type_code
195471       , line_number
195472       , source_application_id
195473       , source_type_code
195474       , source_code
195475       , SUBSTR(source_value,1,1996)
195476       , SUBSTR(source_meaning,1,200)
195477       , xla_environment_pkg.g_Usr_Id
195478       , TRUNC(SYSDATE)
195479       , TRUNC(SYSDATE)
195480       , xla_environment_pkg.g_Usr_Id
195481       , xla_environment_pkg.g_Login_Id
195482       , TRUNC(SYSDATE)
195483       , xla_environment_pkg.g_Prog_Appl_Id
195484       , xla_environment_pkg.g_Prog_Id
195485       , xla_environment_pkg.g_Req_Id
195486   FROM (
195487        SELECT xet.event_id                  event_id
195488             , l2.line_number                 line_number
195489             , CASE r
195490                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
195491                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
195492                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
195493                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
195494                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
195495                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
195496                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
195497                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
195498                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
195499                 
195500                ELSE null
195501               END                           object_name
195502             , CASE r
195503                 WHEN 1 THEN 'LINE' 
195504                 WHEN 2 THEN 'LINE' 
195505                 WHEN 3 THEN 'LINE' 
195506                 WHEN 4 THEN 'LINE' 
195507                 WHEN 5 THEN 'LINE' 
195508                 WHEN 6 THEN 'LINE' 
195509                 WHEN 7 THEN 'LINE' 
195510                 WHEN 8 THEN 'LINE' 
195511                 WHEN 9 THEN 'LINE' 
195512                 
195513                 ELSE null
195514               END                           object_type_code
195515             , CASE r
195516                 WHEN 1 THEN '707' 
195517                 WHEN 2 THEN '707' 
195518                 WHEN 3 THEN '707' 
195519                 WHEN 4 THEN '707' 
195520                 WHEN 5 THEN '707' 
195521                 WHEN 6 THEN '707' 
195522                 WHEN 7 THEN '707' 
195523                 WHEN 8 THEN '707' 
195524                 WHEN 9 THEN '707' 
195525                 
195526                 ELSE null
195527               END                           source_application_id
195528             , 'S'             source_type_code
195529             , CASE r
195530                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
195531                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
195532                 WHEN 3 THEN 'CURRENCY_CODE' 
195533                 WHEN 4 THEN 'ENTERED_AMOUNT' 
195534                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
195535                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
195536                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
195537                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
195538                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
195539                 
195540                 ELSE null
195541               END                           source_code
195542             , CASE r
195543                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
195544                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
195545                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
195546                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
195547                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
195548                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
195549                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
195550                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
195551                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
195552                 
195553                 ELSE null
195554               END                           source_value
195555             , null              source_meaning
195556          FROM  xla_events_gt     xet  
195557         , CST_XLA_INV_LINES_V  l2
195558             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
195559         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
195560           AND xet.event_type_code = C_EVENT_TYPE_CODE
195561             AND l2.event_id          = xet.event_id
195562 
195563 )
195564 ;
195565 --
195566 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195567 
195568       trace
195569          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
195570          ,p_level    => C_LEVEL_STATEMENT
195571          ,p_module   => l_log_module);
195572 
195573 END IF;
195574 
195575 
195576 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
195577       trace
195578          (p_msg      => 'END of insert_sources_298'
195579          ,p_level    => C_LEVEL_PROCEDURE
195580          ,p_module   => l_log_module);
195581 END IF;
195582 EXCEPTION
195583   WHEN xla_exceptions_pkg.application_exception THEN
195584       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
195585             trace
195586                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
195587                ,p_level    => C_LEVEL_EXCEPTION
195588                ,p_module   => l_log_module);
195589       END IF;
195590       RAISE;
195591   WHEN OTHERS THEN
195592       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
195593             trace
195594                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
195595                ,p_level    => C_LEVEL_EXCEPTION
195596                ,p_module   => l_log_module);
195597        END IF;
195598        xla_exceptions_pkg.raise_message
195599            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_298');
195600 END insert_sources_298;
195601 --
195602 
195603 ---------------------------------------
195604 --
195605 -- PRIVATE FUNCTION
195606 --         EventType_298
195607 --
195608 ----------------------------------------
195609 --
195610 FUNCTION EventType_298
195611        (p_application_id         IN NUMBER
195612        ,p_base_ledger_id         IN NUMBER
195613        ,p_target_ledger_id       IN NUMBER
195614        ,p_language               IN VARCHAR2
195615        ,p_currency_code          IN VARCHAR2
195616        ,p_sla_ledger_id          IN NUMBER
195617        ,p_pad_start_date         IN DATE
195618        ,p_pad_end_date           IN DATE
195619        ,p_primary_ledger_id      IN NUMBER)
195620 RETURN BOOLEAN IS
195621 --
195622 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
195623 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
195624 
195625 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
195626 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
195627 --
195628 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195629 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195630 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
195631 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
195632 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195633 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
195634 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
195635 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195636 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
195637 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
195638 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195639 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195640 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195641 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195642 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
195643 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
195644 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
195645 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
195646 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
195647 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
195648 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
195649 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
195650 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
195651 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
195652 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
195653 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
195654 
195655 l_event_id                             NUMBER;
195656 l_previous_event_id                    NUMBER;
195657 l_first_event_id                       NUMBER;
195658 l_last_event_id                        NUMBER;
195659 
195660 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
195661 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
195662 --
195663 --
195664 l_result                    BOOLEAN := TRUE;
195665 l_rows                      NUMBER  := 1000;
195666 l_event_type_name           VARCHAR2(80) := 'User-defined Sender Intransit Shipment - No Transfer Price - FOB Shipment';
195667 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
195668 l_description               VARCHAR2(4000);
195669 l_transaction_reversal      NUMBER;
195670 l_ae_header_id              NUMBER;
195671 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
195672 l_log_module                VARCHAR2(240);
195673 --
195674 l_acct_reversal_source      VARCHAR2(30);
195675 l_trx_reversal_source       VARCHAR2(30);
195676 
195677 l_continue_with_lines       BOOLEAN := TRUE;
195678 --
195679 l_acc_rev_gl_date_source    DATE;                      -- 4262811
195680 --
195681 type t_array_event_id is table of number index by binary_integer;
195682 
195683 l_rec_array_event                    t_rec_array_event;
195684 l_null_rec_array_event               t_rec_array_event;
195685 l_array_ae_header_id                 xla_number_array_type;
195686 l_actual_flag                        VARCHAR2(1) := NULL;
195687 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
195688 l_balance_type_code                  VARCHAR2(1) :=NULL;
195689 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
195690 
195691 --
195692 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
195693 --
195694 
195695 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
195696 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
195697 
195698 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
195699 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
195700 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
195701 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
195702 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
195703 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
195704 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
195705 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
195706 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
195707 
195708 l_array_source_12              t_array_source_12;
195709 l_array_source_12_meaning      t_array_lookup_meaning;
195710 l_array_source_38              t_array_source_38;
195711 l_array_source_38_meaning      t_array_lookup_meaning;
195712 
195713 l_array_source_4      t_array_source_4;
195714 l_array_source_11      t_array_source_11;
195715 l_array_source_15      t_array_source_15;
195716 l_array_source_18      t_array_source_18;
195717 l_array_source_19      t_array_source_19;
195718 l_array_source_20      t_array_source_20;
195719 l_array_source_21      t_array_source_21;
195720 l_array_source_22      t_array_source_22;
195721 l_array_source_24      t_array_source_24;
195722 
195723 --
195724 CURSOR header_cur
195725 IS
195726 SELECT /*+ leading(xet) cardinality(xet,1) */
195727 -- Event Type Code: UFOB_SHIP_SENDER_SHIP_NO_TP
195728 -- Event Class Code: USER_DEFINE
195729     xet.entity_id
195730   , xet.legal_entity_id
195731   , xet.entity_code
195732   , xet.transaction_number
195733   , xet.event_id
195734   , xet.event_class_code
195735   , xet.event_type_code
195736   , xet.event_number
195737   , xet.event_date
195738   , xet.transaction_date
195739   , xet.reference_num_1
195740   , xet.reference_num_2
195741   , xet.reference_num_3
195742   , xet.reference_num_4
195743   , xet.reference_char_1
195744   , xet.reference_char_2
195745   , xet.reference_char_3
195746   , xet.reference_char_4
195747   , xet.reference_date_1
195748   , xet.reference_date_2
195749   , xet.reference_date_3
195750   , xet.reference_date_4
195751   , xet.event_created_by
195752   , xet.budgetary_control_flag 
195753   , h1.DISTRIBUTION_TYPE    source_12
195754   , fvl12.meaning   source_12_meaning
195755   , h1.TRANSFER_TO_GL_INDICATOR    source_38
195756   , fvl38.meaning   source_38_meaning
195757   FROM xla_events_gt     xet 
195758   , CST_XLA_INV_HEADERS_V  h1
195759   , fnd_lookup_values    fvl12
195760   , fnd_lookup_values    fvl38
195761  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
195762    and xet.event_type_code = C_EVENT_TYPE_CODE
195763    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
195764    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
195765   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
195766   AND fvl12.view_application_id(+) = 700
195767   AND fvl12.language(+)            = USERENV('LANG')
195768      AND fvl38.lookup_type(+)         = 'YES_NO'
195769   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
195770   AND fvl38.view_application_id(+) = 0
195771   AND fvl38.language(+)            = USERENV('LANG')
195772   
195773  ORDER BY event_id
195774 ;
195775 
195776 
195777 --
195778 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
195779 IS
195780 SELECT /*+ leading(xet) cardinality(xet,1) */
195781 -- Event Type Code: UFOB_SHIP_SENDER_SHIP_NO_TP
195782 -- Event Class Code: USER_DEFINE
195783     xet.entity_id
195784    ,xet.legal_entity_id
195785    ,xet.entity_code
195786    ,xet.transaction_number
195787    ,xet.event_id
195788    ,xet.event_class_code
195789    ,xet.event_type_code
195790    ,xet.event_number
195791    ,xet.event_date
195792    ,xet.transaction_date
195793    ,xet.reference_num_1
195794    ,xet.reference_num_2
195795    ,xet.reference_num_3
195796    ,xet.reference_num_4
195797    ,xet.reference_char_1
195798    ,xet.reference_char_2
195799    ,xet.reference_char_3
195800    ,xet.reference_char_4
195801    ,xet.reference_date_1
195802    ,xet.reference_date_2
195803    ,xet.reference_date_3
195804    ,xet.reference_date_4
195805    ,xet.event_created_by
195806    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
195807   , l2.CODE_COMBINATION_ID    source_4
195808   , l2.DISTRIBUTION_IDENTIFIER    source_11
195809   , l2.CURRENCY_CODE    source_15
195810   , l2.ENTERED_AMOUNT    source_18
195811   , l2.CURRENCY_CONVERSION_DATE    source_19
195812   , l2.CURRENCY_CONVERSION_RATE    source_20
195813   , l2.CURRENCY_CONVERSION_TYPE    source_21
195814   , l2.ACCOUNTED_AMOUNT    source_22
195815   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
195816   FROM xla_events_gt     xet 
195817   , CST_XLA_INV_LINES_V  l2
195818  WHERE xet.event_id between x_first_event_id and x_last_event_id
195819    and xet.event_date between p_pad_start_date and p_pad_end_date
195820    and xet.event_type_code = C_EVENT_TYPE_CODE
195821    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
195822 ;
195823 
195824 --
195825 BEGIN
195826 IF g_log_enabled THEN
195827    l_log_module := C_DEFAULT_MODULE||'.EventType_298';
195828 END IF;
195829 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
195830    trace
195831       (p_msg      => 'BEGIN of EventType_298'
195832       ,p_level    => C_LEVEL_PROCEDURE
195833       ,p_module   => l_log_module);
195834 END IF;
195835 
195836 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195837    trace
195838       (p_msg      => 'p_application_id = '||p_application_id||
195839                      ' - p_base_ledger_id = '||p_base_ledger_id||
195840                      ' - p_target_ledger_id  = '||p_target_ledger_id||
195841                      ' - p_language = '||p_language||
195842                      ' - p_currency_code = '||p_currency_code||
195843                      ' - p_sla_ledger_id = '||p_sla_ledger_id
195844       ,p_level    => C_LEVEL_STATEMENT
195845       ,p_module   => l_log_module);
195846 END IF;
195847 --
195848 -- initialze arrays
195849 --
195850 g_array_event.DELETE;
195851 l_rec_array_event := l_null_rec_array_event;
195852 --
195853 --------------------------------------
195854 -- 4262811 Initialze MPA Line Number
195855 --------------------------------------
195856 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
195857 
195858 --
195859 
195860 --
195861 OPEN header_cur;
195862 --
195863 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195864    trace
195865    (p_msg      => 'SQL - FETCH header_cur'
195866    ,p_level    => C_LEVEL_STATEMENT
195867    ,p_module   => l_log_module);
195868 END IF;
195869 --
195870 LOOP
195871 FETCH header_cur BULK COLLECT INTO
195872         l_array_entity_id
195873       , l_array_legal_entity_id
195874       , l_array_entity_code
195875       , l_array_transaction_num
195876       , l_array_event_id
195877       , l_array_class_code
195878       , l_array_event_type
195879       , l_array_event_number
195880       , l_array_event_date
195881       , l_array_transaction_date
195882       , l_array_reference_num_1
195883       , l_array_reference_num_2
195884       , l_array_reference_num_3
195885       , l_array_reference_num_4
195886       , l_array_reference_char_1
195887       , l_array_reference_char_2
195888       , l_array_reference_char_3
195889       , l_array_reference_char_4
195890       , l_array_reference_date_1
195891       , l_array_reference_date_2
195892       , l_array_reference_date_3
195893       , l_array_reference_date_4
195894       , l_array_event_created_by
195895       , l_array_budgetary_control_flag 
195896       , l_array_source_12
195897       , l_array_source_12_meaning
195898       , l_array_source_38
195899       , l_array_source_38_meaning
195900       LIMIT l_rows;
195901 --
195902 IF (C_LEVEL_EVENT >= g_log_level) THEN
195903    trace
195904    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
195905    ,p_level    => C_LEVEL_EVENT
195906    ,p_module   => l_log_module);
195907 END IF;
195908 --
195909 EXIT WHEN l_array_entity_id.COUNT = 0;
195910 
195911 -- initialize arrays
195912 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
195913 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
195914 
195915 --
195916 -- Bug 4458708
195917 --
195918 XLA_AE_LINES_PKG.g_LineNumber := 0;
195919 
195920 
195921 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
195922 g_last_hdr_idx := l_array_event_id.LAST;
195923 --
195924 -- loop for the headers. Each iteration is for each header extract row
195925 -- fetched in header cursor
195926 --
195927 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
195928 
195929 --
195930 -- set event info as cache for other routines to refer event attributes
195931 --
195932 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
195933    (p_application_id           => p_application_id
195934    ,p_primary_ledger_id        => p_primary_ledger_id
195935    ,p_base_ledger_id           => p_base_ledger_id
195936    ,p_target_ledger_id         => p_target_ledger_id
195937    ,p_entity_id                => l_array_entity_id(hdr_idx)
195938    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
195939    ,p_entity_code              => l_array_entity_code(hdr_idx)
195940    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
195941    ,p_event_id                 => l_array_event_id(hdr_idx)
195942    ,p_event_class_code         => l_array_class_code(hdr_idx)
195943    ,p_event_type_code          => l_array_event_type(hdr_idx)
195944    ,p_event_number             => l_array_event_number(hdr_idx)
195945    ,p_event_date               => l_array_event_date(hdr_idx)
195946    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
195947    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
195948    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
195949    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
195950    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
195951    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
195952    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
195953    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
195954    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
195955    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
195956    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
195957    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
195958    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
195959    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
195960    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
195961 
195962 --
195963 -- set the status of entry to C_VALID (0)
195964 --
195965 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
195966 
195967 --
195968 -- initialize a row for ae header
195969 --
195970 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
195971 
195972 l_event_id := l_array_event_id(hdr_idx);
195973 
195974 --
195975 -- storing the hdr_idx for event. May be used by line cursor.
195976 --
195977 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
195978 
195979 --
195980 -- store sources from header extract. This can be improved to
195981 -- store only those sources from header extract that may be used in lines
195982 --
195983 
195984 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
195985 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
195986 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
195987 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
195988 
195989 --
195990 -- initilaize the status of ae headers for diffrent balance types
195991 -- the status is initialised to C_NOT_CREATED (2)
195992 --
195993 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
195994 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
195995 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
195996 
195997 --
195998 -- call api to validate and store accounting attributes for header
195999 --
196000 
196001 ------------------------------------------------------------
196002 -- Accrual Reversal : to get date for Standard Source (NONE)
196003 ------------------------------------------------------------
196004 l_acc_rev_gl_date_source := NULL;
196005 
196006      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
196007       l_rec_acct_attrs.array_date_value(1) := 
196008 xla_ae_sources_pkg.GetSystemSourceDate(
196009    p_source_code           => 'XLA_REFERENCE_DATE_1'
196010  , p_source_type_code      => 'Y'
196011  , p_source_application_id =>  602
196012 );
196013      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
196014       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
196015 
196016 
196017 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
196018 
196019 XLA_AE_HEADER_PKG.SetJeCategoryName;
196020 
196021 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
196022 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
196023 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
196024 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
196025 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
196026 
196027 
196028 -- No header level analytical criteria
196029 
196030 --
196031 --accounting attribute enhancement, bug 3612931
196032 --
196033 l_trx_reversal_source := SUBSTR(NULL, 1,30);
196034 
196035 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
196036    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
196037 
196038    xla_accounting_err_pkg.build_message
196039       (p_appli_s_name            => 'XLA'
196040       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
196041       ,p_token_1                 => 'ACCT_ATTR_NAME'
196042       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
196043       ,p_token_2                 => 'PRODUCT_NAME'
196044       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
196045       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
196046       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
196047       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
196048 
196049 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
196050    --
196051    -- following sets the accounting attributes needed to reverse
196052    -- accounting for a distributeion
196053    --
196054    xla_ae_lines_pkg.SetTrxReversalAttrs
196055       (p_event_id              => l_event_id
196056       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
196057       ,p_trx_reversal_source   => l_trx_reversal_source);
196058 
196059 END IF;
196060 
196061 
196062 ----------------------------------------------------------------
196063 -- 4262811 -  update the header statuses to invalid in need be
196064 ----------------------------------------------------------------
196065 --
196066 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
196067 
196068 
196069   -----------------------------------------------
196070   -- No accrual reversal for the event class/type
196071   -----------------------------------------------
196072 ----------------------------------------------------------------
196073 
196074 --
196075 -- this ends the header loop iteration for one bulk fetch
196076 --
196077 END LOOP;
196078 
196079 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
196080 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
196081 
196082 --
196083 -- insert dummy rows into lines gt table that were created due to
196084 -- transaction reversals
196085 --
196086 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
196087    l_result := XLA_AE_LINES_PKG.InsertLines;
196088 END IF;
196089 
196090 --
196091 -- reset the temp_line_num for each set of events fetched from header
196092 -- cursor rather than doing it for each new event in line cursor
196093 -- Bug 3939231
196094 --
196095 xla_ae_lines_pkg.g_temp_line_num := 0;
196096 
196097 
196098 
196099 --
196100 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
196101 --
196102 --
196103 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
196104 
196105       trace
196106          (p_msg      => 'SQL - FETCH line_cur'
196107          ,p_level    => C_LEVEL_STATEMENT
196108          ,p_module   => l_log_module);
196109 
196110 END IF;
196111 --
196112 --
196113 LOOP
196114   --
196115   FETCH line_cur BULK COLLECT INTO
196116         l_array_entity_id
196117       , l_array_legal_entity_id
196118       , l_array_entity_code
196119       , l_array_transaction_num
196120       , l_array_event_id
196121       , l_array_class_code
196122       , l_array_event_type
196123       , l_array_event_number
196124       , l_array_event_date
196125       , l_array_transaction_date
196126       , l_array_reference_num_1
196127       , l_array_reference_num_2
196128       , l_array_reference_num_3
196129       , l_array_reference_num_4
196130       , l_array_reference_char_1
196131       , l_array_reference_char_2
196132       , l_array_reference_char_3
196133       , l_array_reference_char_4
196134       , l_array_reference_date_1
196135       , l_array_reference_date_2
196136       , l_array_reference_date_3
196137       , l_array_reference_date_4
196138       , l_array_event_created_by
196139       , l_array_budgetary_control_flag
196140       , l_array_extract_line_num 
196141       , l_array_source_4
196142       , l_array_source_11
196143       , l_array_source_15
196144       , l_array_source_18
196145       , l_array_source_19
196146       , l_array_source_20
196147       , l_array_source_21
196148       , l_array_source_22
196149       , l_array_source_24
196150       LIMIT l_rows;
196151 
196152   --
196153   IF (C_LEVEL_EVENT >= g_log_level) THEN
196154             trace
196155                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
196156                ,p_level    => C_LEVEL_EVENT
196157                ,p_module   => l_log_module);
196158   END IF;
196159   --
196160   EXIT WHEN l_array_entity_id.count = 0;
196161 
196162   XLA_AE_LINES_PKG.g_rec_lines := null;
196163 
196164 --
196165 -- Bug 4458708
196166 --
196167 XLA_AE_LINES_PKG.g_LineNumber := 0;
196168 --
196169 --
196170 
196171 FOR Idx IN 1..l_array_event_id.count LOOP
196172    --
196173    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
196174    --
196175    l_event_id := l_array_event_id(idx);  -- 5648433
196176 
196177    --
196178    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
196179    --
196180 
196181    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
196182              (g_array_event(l_event_id).array_value_num('header_index'))
196183          ,'N'
196184          ) <> 'Y'
196185    THEN
196186       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
196187          trace
196188             (p_msg      => 'Trancaction revesal option is not Y '
196189             ,p_level    => C_LEVEL_STATEMENT
196190             ,p_module   => l_log_module);
196191       END IF;
196192 
196193 --
196194 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
196195 --
196196 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
196197 --
196198 -- set event info as cache for other routines to refer event attributes
196199 --
196200 
196201 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
196202    l_previous_event_id := l_event_id;
196203 
196204    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
196205       (p_application_id           => p_application_id
196206       ,p_primary_ledger_id        => p_primary_ledger_id
196207       ,p_base_ledger_id           => p_base_ledger_id
196208       ,p_target_ledger_id         => p_target_ledger_id
196209       ,p_entity_id                => l_array_entity_id(Idx)
196210       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
196211       ,p_entity_code              => l_array_entity_code(Idx)
196212       ,p_transaction_num          => l_array_transaction_num(Idx)
196213       ,p_event_id                 => l_array_event_id(Idx)
196214       ,p_event_class_code         => l_array_class_code(Idx)
196215       ,p_event_type_code          => l_array_event_type(Idx)
196216       ,p_event_number             => l_array_event_number(Idx)
196217       ,p_event_date               => l_array_event_date(Idx)
196218       ,p_transaction_date         => l_array_transaction_date(Idx)
196219       ,p_reference_num_1          => l_array_reference_num_1(Idx)
196220       ,p_reference_num_2          => l_array_reference_num_2(Idx)
196221       ,p_reference_num_3          => l_array_reference_num_3(Idx)
196222       ,p_reference_num_4          => l_array_reference_num_4(Idx)
196223       ,p_reference_char_1         => l_array_reference_char_1(Idx)
196224       ,p_reference_char_2         => l_array_reference_char_2(Idx)
196225       ,p_reference_char_3         => l_array_reference_char_3(Idx)
196226       ,p_reference_char_4         => l_array_reference_char_4(Idx)
196227       ,p_reference_date_1         => l_array_reference_date_1(Idx)
196228       ,p_reference_date_2         => l_array_reference_date_2(Idx)
196229       ,p_reference_date_3         => l_array_reference_date_3(Idx)
196230       ,p_reference_date_4         => l_array_reference_date_4(Idx)
196231       ,p_event_created_by         => l_array_event_created_by(Idx)
196232       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
196233        --
196234 END IF;
196235 
196236 
196237 
196238 --
196239 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
196240 
196241 l_acct_reversal_source := SUBSTR(NULL, 1,30);
196242 
196243 IF l_continue_with_lines THEN
196244    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
196245       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
196246 
196247       xla_accounting_err_pkg.build_message
196248          (p_appli_s_name            => 'XLA'
196249          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
196250          ,p_token_1                 => 'LINE_NUMBER'
196251          ,p_value_1                 => l_array_extract_line_num(Idx)
196252          ,p_token_2                 => 'PRODUCT_NAME'
196253          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
196254          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
196255          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
196256          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
196257 
196258    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
196259       --
196260       -- following sets the accounting attributes needed to reverse
196261       -- accounting for a distributeion
196262       --
196263 
196264       --
196265       -- 5217187
196266       --
196267       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
196268       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
196269                                        g_array_event(l_event_id).array_value_num('header_index'));
196270       --
196271       --
196272 
196273       -- No reversal code generated
196274 
196275       xla_ae_lines_pkg.SetAcctReversalAttrs
196276          (p_event_id             => l_event_id
196277          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
196278          ,p_calculate_acctd_flag => l_calculate_acctd_flag
196279          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
196280    END IF;
196281 
196282    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
196283        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
196284 
196285 --
196286 AcctLineType_21 (
196287  p_application_id  => p_application_id
196288  ,p_event_id     => l_event_id
196289  ,p_calculate_acctd_flag => l_calculate_acctd_flag
196290  ,p_calculate_g_l_flag => l_calculate_g_l_flag
196291  ,p_actual_flag => l_actual_flag
196292  ,p_balance_type_code => l_balance_type_code
196293  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
196294  
196295  , p_source_4 => l_array_source_4(Idx)
196296  , p_source_11 => l_array_source_11(Idx)
196297  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
196298  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
196299  , p_source_15 => l_array_source_15(Idx)
196300  , p_source_18 => l_array_source_18(Idx)
196301  , p_source_19 => l_array_source_19(Idx)
196302  , p_source_20 => l_array_source_20(Idx)
196303  , p_source_21 => l_array_source_21(Idx)
196304  , p_source_22 => l_array_source_22(Idx)
196305  , p_source_24 => l_array_source_24(Idx)
196306  );
196307 If(l_balance_type_code = 'A') THEN
196308   l_actual_gain_loss_ref := l_gain_or_loss_ref;
196309 END IF;
196310 
196311 --
196312 
196313 
196314 --
196315 AcctLineType_89 (
196316  p_application_id  => p_application_id
196317  ,p_event_id     => l_event_id
196318  ,p_calculate_acctd_flag => l_calculate_acctd_flag
196319  ,p_calculate_g_l_flag => l_calculate_g_l_flag
196320  ,p_actual_flag => l_actual_flag
196321  ,p_balance_type_code => l_balance_type_code
196322  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
196323  
196324  , p_source_4 => l_array_source_4(Idx)
196325  , p_source_11 => l_array_source_11(Idx)
196326  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
196327  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
196328  , p_source_15 => l_array_source_15(Idx)
196329  , p_source_18 => l_array_source_18(Idx)
196330  , p_source_19 => l_array_source_19(Idx)
196331  , p_source_20 => l_array_source_20(Idx)
196332  , p_source_21 => l_array_source_21(Idx)
196333  , p_source_22 => l_array_source_22(Idx)
196334  , p_source_24 => l_array_source_24(Idx)
196335  );
196336 If(l_balance_type_code = 'A') THEN
196337   l_actual_gain_loss_ref := l_gain_or_loss_ref;
196338 END IF;
196339 
196340 --
196341 
196342 
196343 --
196344 AcctLineType_96 (
196345  p_application_id  => p_application_id
196346  ,p_event_id     => l_event_id
196347  ,p_calculate_acctd_flag => l_calculate_acctd_flag
196348  ,p_calculate_g_l_flag => l_calculate_g_l_flag
196349  ,p_actual_flag => l_actual_flag
196350  ,p_balance_type_code => l_balance_type_code
196351  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
196352  
196353  , p_source_4 => l_array_source_4(Idx)
196354  , p_source_11 => l_array_source_11(Idx)
196355  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
196356  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
196357  , p_source_15 => l_array_source_15(Idx)
196358  , p_source_18 => l_array_source_18(Idx)
196359  , p_source_19 => l_array_source_19(Idx)
196360  , p_source_20 => l_array_source_20(Idx)
196361  , p_source_21 => l_array_source_21(Idx)
196362  , p_source_22 => l_array_source_22(Idx)
196363  , p_source_24 => l_array_source_24(Idx)
196364  );
196365 If(l_balance_type_code = 'A') THEN
196366   l_actual_gain_loss_ref := l_gain_or_loss_ref;
196367 END IF;
196368 
196369 --
196370 
196371 
196372 --
196373 AcctLineType_118 (
196374  p_application_id  => p_application_id
196375  ,p_event_id     => l_event_id
196376  ,p_calculate_acctd_flag => l_calculate_acctd_flag
196377  ,p_calculate_g_l_flag => l_calculate_g_l_flag
196378  ,p_actual_flag => l_actual_flag
196379  ,p_balance_type_code => l_balance_type_code
196380  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
196381  
196382  , p_source_4 => l_array_source_4(Idx)
196383  , p_source_11 => l_array_source_11(Idx)
196384  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
196385  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
196386  , p_source_15 => l_array_source_15(Idx)
196387  , p_source_18 => l_array_source_18(Idx)
196388  , p_source_19 => l_array_source_19(Idx)
196389  , p_source_20 => l_array_source_20(Idx)
196390  , p_source_21 => l_array_source_21(Idx)
196391  , p_source_22 => l_array_source_22(Idx)
196392  , p_source_24 => l_array_source_24(Idx)
196393  );
196394 If(l_balance_type_code = 'A') THEN
196395   l_actual_gain_loss_ref := l_gain_or_loss_ref;
196396 END IF;
196397 
196398 --
196399 
196400 
196401 --
196402 AcctLineType_134 (
196403  p_application_id  => p_application_id
196404  ,p_event_id     => l_event_id
196405  ,p_calculate_acctd_flag => l_calculate_acctd_flag
196406  ,p_calculate_g_l_flag => l_calculate_g_l_flag
196407  ,p_actual_flag => l_actual_flag
196408  ,p_balance_type_code => l_balance_type_code
196409  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
196410  
196411  , p_source_4 => l_array_source_4(Idx)
196412  , p_source_11 => l_array_source_11(Idx)
196413  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
196414  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
196415  , p_source_15 => l_array_source_15(Idx)
196416  , p_source_18 => l_array_source_18(Idx)
196417  , p_source_19 => l_array_source_19(Idx)
196418  , p_source_20 => l_array_source_20(Idx)
196419  , p_source_21 => l_array_source_21(Idx)
196420  , p_source_22 => l_array_source_22(Idx)
196421  , p_source_24 => l_array_source_24(Idx)
196422  );
196423 If(l_balance_type_code = 'A') THEN
196424   l_actual_gain_loss_ref := l_gain_or_loss_ref;
196425 END IF;
196426 
196427 --
196428 
196429 
196430 --
196431 AcctLineType_189 (
196432  p_application_id  => p_application_id
196433  ,p_event_id     => l_event_id
196434  ,p_calculate_acctd_flag => l_calculate_acctd_flag
196435  ,p_calculate_g_l_flag => l_calculate_g_l_flag
196436  ,p_actual_flag => l_actual_flag
196437  ,p_balance_type_code => l_balance_type_code
196438  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
196439  
196440  , p_source_4 => l_array_source_4(Idx)
196441  , p_source_11 => l_array_source_11(Idx)
196442  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
196443  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
196444  , p_source_15 => l_array_source_15(Idx)
196445  , p_source_18 => l_array_source_18(Idx)
196446  , p_source_19 => l_array_source_19(Idx)
196447  , p_source_20 => l_array_source_20(Idx)
196448  , p_source_21 => l_array_source_21(Idx)
196449  , p_source_22 => l_array_source_22(Idx)
196450  , p_source_24 => l_array_source_24(Idx)
196451  );
196452 If(l_balance_type_code = 'A') THEN
196453   l_actual_gain_loss_ref := l_gain_or_loss_ref;
196454 END IF;
196455 
196456 --
196457 
196458       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
196459       -- or secondary ledger that has different currency with primary
196460       -- or alc that is calculated by sla
196461       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
196462             (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'))
196463 
196464 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
196465 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
196466           AND (l_actual_flag = 'A')) THEN
196467         XLA_AE_LINES_PKG.CreateGainOrLossLines(
196468           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
196469          ,p_application_id   => p_application_id
196470          ,p_amb_context_code => 'DEFAULT'
196471          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
196472          ,p_event_class_code => C_EVENT_CLASS_CODE
196473          ,p_event_type_code  => C_EVENT_TYPE_CODE
196474          
196475          ,p_gain_ccid        => -1
196476          ,p_loss_ccid        => -1
196477 
196478          ,p_actual_flag      => l_actual_flag
196479          ,p_enc_flag         => null
196480          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
196481          ,p_enc_g_l_ref      => null
196482          );
196483       END IF;
196484    END IF;
196485 END IF;
196486 
196487    ELSE
196488       --
196489       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
196490       --
196491       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
196492          trace
196493             (p_msg      => 'Trancaction revesal option is Y'
196494             ,p_level    => C_LEVEL_STATEMENT
196495             ,p_module   => l_log_module);
196496       END IF;
196497    END IF;
196498 
196499 END LOOP;
196500 l_result := XLA_AE_LINES_PKG.InsertLines ;
196501 end loop;
196502 close line_cur;
196503 
196504 
196505 --
196506 -- insert headers into xla_ae_headers_gt table
196507 --
196508 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
196509 
196510 -- insert into errors table here.
196511 
196512 END LOOP;
196513 
196514 --
196515 -- 4865292
196516 --
196517 -- Compare g_hdr_extract_count with event count in
196518 -- CreateHeadersAndLines.
196519 --
196520 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
196521 
196522 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
196523    trace (p_msg     => '# rows extracted from header extract objects '
196524                     || ' (running total): '
196525                     || g_hdr_extract_count
196526          ,p_level   => C_LEVEL_STATEMENT
196527          ,p_module  => l_log_module);
196528 END IF;
196529 
196530 CLOSE header_cur;
196531 --
196532 
196533 --
196534 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
196535    trace
196536       (p_msg      => 'END of EventType_298'
196537       ,p_level    => C_LEVEL_PROCEDURE
196538       ,p_module   => l_log_module);
196539 END IF;
196540 --
196541 RETURN l_result;
196542 EXCEPTION
196543 WHEN xla_exceptions_pkg.application_exception THEN
196544    
196545 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
196546 
196547    
196548 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
196549 
196550    RAISE;
196551 
196552 WHEN NO_DATA_FOUND THEN
196553 
196554 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
196555 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
196556 
196557 FOR header_record IN header_cur
196558 LOOP
196559     l_array_header_events(header_record.event_id) := header_record.event_id;
196560 END LOOP;
196561 
196562 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
196563 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
196564 
196565 fnd_file.put_line(fnd_file.LOG, '                    ');
196566 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
196567 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
196568 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
196569 
196570 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
196571 LOOP
196572 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
196573 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
196574         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
196575 	END IF;
196576 END LOOP;
196577 
196578 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
196579 fnd_file.put_line(fnd_file.LOG, '                    ');
196580 
196581 
196582 xla_exceptions_pkg.raise_message
196583       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_298');
196584 
196585 
196586 WHEN OTHERS THEN
196587    xla_exceptions_pkg.raise_message
196588       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_298');
196589 END EventType_298;
196590 --
196591 
196592 ---------------------------------------
196593 --
196594 -- PRIVATE PROCEDURE
196595 --         insert_sources_299
196596 --
196597 ----------------------------------------
196598 --
196599 PROCEDURE insert_sources_299(
196600                                 p_target_ledger_id       IN NUMBER
196601                               , p_language               IN VARCHAR2
196602                               , p_sla_ledger_id          IN NUMBER
196603                               , p_pad_start_date         IN DATE
196604                               , p_pad_end_date           IN DATE
196605                          )
196606 IS
196607 
196608 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UFOB_SHIP_SENDER_SHIP_TP';
196609 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
196610 p_apps_owner                   VARCHAR2(30);
196611 l_log_module                   VARCHAR2(240);
196612 BEGIN
196613 IF g_log_enabled THEN
196614       l_log_module := C_DEFAULT_MODULE||'.insert_sources_299';
196615 END IF;
196616 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
196617 
196618       trace
196619          (p_msg      => 'BEGIN of insert_sources_299'
196620          ,p_level    => C_LEVEL_PROCEDURE
196621          ,p_module   => l_log_module);
196622 
196623 END IF;
196624 
196625 -- select APPS owner
196626 SELECT oracle_username
196627   INTO p_apps_owner
196628   FROM fnd_oracle_userid
196629  WHERE read_only_flag = 'U'
196630 ;
196631 
196632 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
196633       trace
196634          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
196635                         ' - p_language = '||p_language||
196636                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
196637                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
196638                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
196639                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
196640          ,p_level    => C_LEVEL_STATEMENT
196641          ,p_module   => l_log_module);
196642 END IF;
196643 
196644 
196645 --
196646 INSERT INTO xla_diag_sources --hdr1
196647 (
196648         event_id
196649       , ledger_id
196650       , sla_ledger_id
196651       , description_language
196652       , object_name
196653       , object_type_code
196654       , line_number
196655       , source_application_id
196656       , source_type_code
196657       , source_code
196658       , source_value
196659       , source_meaning
196660       , created_by
196661       , creation_date
196662       , last_update_date
196663       , last_updated_by
196664       , last_update_login
196665       , program_update_date
196666       , program_application_id
196667       , program_id
196668       , request_id
196669 )
196670 SELECT
196671         event_id
196672       , p_target_ledger_id
196673       , p_sla_ledger_id
196674       , p_language
196675       , object_name
196676       , object_type_code
196677       , line_number
196678       , source_application_id
196679       , source_type_code
196680       , source_code
196681       , SUBSTR(source_value ,1,1996)
196682       , SUBSTR(source_meaning,1,200)
196683       , xla_environment_pkg.g_Usr_Id
196684       , TRUNC(SYSDATE)
196685       , TRUNC(SYSDATE)
196686       , xla_environment_pkg.g_Usr_Id
196687       , xla_environment_pkg.g_Login_Id
196688       , TRUNC(SYSDATE)
196689       , xla_environment_pkg.g_Prog_Appl_Id
196690       , xla_environment_pkg.g_Prog_Id
196691       , xla_environment_pkg.g_Req_Id
196692   FROM (
196693        SELECT xet.event_id                  event_id
196694             , 0                             line_number
196695             , CASE r
196696                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
196697                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
196698                 
196699                ELSE null
196700               END                           object_name
196701             , CASE r
196702                 WHEN 1 THEN 'HEADER' 
196703                 WHEN 2 THEN 'HEADER' 
196704                 
196705                 ELSE null
196706               END                           object_type_code
196707             , CASE r
196708                 WHEN 1 THEN '707' 
196709                 WHEN 2 THEN '707' 
196710                 
196711                 ELSE null
196712               END                           source_application_id
196713             , 'S'             source_type_code
196714             , CASE r
196715                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
196716                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
196717                 
196718                 ELSE null
196719               END                           source_code
196720             , CASE r
196721                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
196722                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
196723                 
196724                 ELSE null
196725               END                           source_value
196726             , CASE r
196727                 WHEN 1 THEN fvl12.meaning
196728                 WHEN 2 THEN fvl38.meaning
196729                 
196730                 ELSE null
196731               END               source_meaning
196732         FROM xla_events_gt     xet  
196733       , CST_XLA_INV_HEADERS_V  h1
196734   , fnd_lookup_values    fvl12
196735   , fnd_lookup_values    fvl38
196736             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
196737        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
196738          AND xet.event_type_code = C_EVENT_TYPE_CODE
196739             AND h1.event_id = xet.event_id
196740    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
196741   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
196742   AND fvl12.view_application_id(+) = 700
196743   AND fvl12.language(+)            = USERENV('LANG')
196744      AND fvl38.lookup_type(+)         = 'YES_NO'
196745   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
196746   AND fvl38.view_application_id(+) = 0
196747   AND fvl38.language(+)            = USERENV('LANG')
196748   
196749 )
196750 ;
196751 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
196752 
196753       trace
196754          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
196755          ,p_level    => C_LEVEL_STATEMENT
196756          ,p_module   => l_log_module);
196757 
196758 END IF;
196759 --
196760 
196761 
196762 
196763 --
196764 INSERT INTO xla_diag_sources --line1
196765 (
196766         event_id
196767       , ledger_id
196768       , sla_ledger_id
196769       , description_language
196770       , object_name
196771       , object_type_code
196772       , line_number
196773       , source_application_id
196774       , source_type_code
196775       , source_code
196776       , source_value
196777       , source_meaning
196778       , created_by
196779       , creation_date
196780       , last_update_date
196781       , last_updated_by
196782       , last_update_login
196783       , program_update_date
196784       , program_application_id
196785       , program_id
196786       , request_id
196787 )
196788 SELECT  event_id
196789       , p_target_ledger_id
196790       , p_sla_ledger_id
196791       , p_language
196792       , object_name
196793       , object_type_code
196794       , line_number
196795       , source_application_id
196796       , source_type_code
196797       , source_code
196798       , SUBSTR(source_value,1,1996)
196799       , SUBSTR(source_meaning,1,200)
196800       , xla_environment_pkg.g_Usr_Id
196801       , TRUNC(SYSDATE)
196802       , TRUNC(SYSDATE)
196803       , xla_environment_pkg.g_Usr_Id
196804       , xla_environment_pkg.g_Login_Id
196805       , TRUNC(SYSDATE)
196806       , xla_environment_pkg.g_Prog_Appl_Id
196807       , xla_environment_pkg.g_Prog_Id
196808       , xla_environment_pkg.g_Req_Id
196809   FROM (
196810        SELECT xet.event_id                  event_id
196811             , l2.line_number                 line_number
196812             , CASE r
196813                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
196814                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
196815                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
196816                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
196817                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
196818                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
196819                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
196820                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
196821                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
196822                 
196823                ELSE null
196824               END                           object_name
196825             , CASE r
196826                 WHEN 1 THEN 'LINE' 
196827                 WHEN 2 THEN 'LINE' 
196828                 WHEN 3 THEN 'LINE' 
196829                 WHEN 4 THEN 'LINE' 
196830                 WHEN 5 THEN 'LINE' 
196831                 WHEN 6 THEN 'LINE' 
196832                 WHEN 7 THEN 'LINE' 
196833                 WHEN 8 THEN 'LINE' 
196834                 WHEN 9 THEN 'LINE' 
196835                 
196836                 ELSE null
196837               END                           object_type_code
196838             , CASE r
196839                 WHEN 1 THEN '707' 
196840                 WHEN 2 THEN '707' 
196841                 WHEN 3 THEN '707' 
196842                 WHEN 4 THEN '707' 
196843                 WHEN 5 THEN '707' 
196844                 WHEN 6 THEN '707' 
196845                 WHEN 7 THEN '707' 
196846                 WHEN 8 THEN '707' 
196847                 WHEN 9 THEN '707' 
196848                 
196849                 ELSE null
196850               END                           source_application_id
196851             , 'S'             source_type_code
196852             , CASE r
196853                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
196854                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
196855                 WHEN 3 THEN 'CURRENCY_CODE' 
196856                 WHEN 4 THEN 'ENTERED_AMOUNT' 
196857                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
196858                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
196859                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
196860                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
196861                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
196862                 
196863                 ELSE null
196864               END                           source_code
196865             , CASE r
196866                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
196867                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
196868                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
196869                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
196870                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
196871                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
196872                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
196873                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
196874                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
196875                 
196876                 ELSE null
196877               END                           source_value
196878             , null              source_meaning
196879          FROM  xla_events_gt     xet  
196880         , CST_XLA_INV_LINES_V  l2
196881             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
196882         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
196883           AND xet.event_type_code = C_EVENT_TYPE_CODE
196884             AND l2.event_id          = xet.event_id
196885 
196886 )
196887 ;
196888 --
196889 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
196890 
196891       trace
196892          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
196893          ,p_level    => C_LEVEL_STATEMENT
196894          ,p_module   => l_log_module);
196895 
196896 END IF;
196897 
196898 
196899 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
196900       trace
196901          (p_msg      => 'END of insert_sources_299'
196902          ,p_level    => C_LEVEL_PROCEDURE
196903          ,p_module   => l_log_module);
196904 END IF;
196905 EXCEPTION
196906   WHEN xla_exceptions_pkg.application_exception THEN
196907       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
196908             trace
196909                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
196910                ,p_level    => C_LEVEL_EXCEPTION
196911                ,p_module   => l_log_module);
196912       END IF;
196913       RAISE;
196914   WHEN OTHERS THEN
196915       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
196916             trace
196917                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
196918                ,p_level    => C_LEVEL_EXCEPTION
196919                ,p_module   => l_log_module);
196920        END IF;
196921        xla_exceptions_pkg.raise_message
196922            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_299');
196923 END insert_sources_299;
196924 --
196925 
196926 ---------------------------------------
196927 --
196928 -- PRIVATE FUNCTION
196929 --         EventType_299
196930 --
196931 ----------------------------------------
196932 --
196933 FUNCTION EventType_299
196934        (p_application_id         IN NUMBER
196935        ,p_base_ledger_id         IN NUMBER
196936        ,p_target_ledger_id       IN NUMBER
196937        ,p_language               IN VARCHAR2
196938        ,p_currency_code          IN VARCHAR2
196939        ,p_sla_ledger_id          IN NUMBER
196940        ,p_pad_start_date         IN DATE
196941        ,p_pad_end_date           IN DATE
196942        ,p_primary_ledger_id      IN NUMBER)
196943 RETURN BOOLEAN IS
196944 --
196945 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UFOB_SHIP_SENDER_SHIP_TP';
196946 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
196947 
196948 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
196949 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
196950 --
196951 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196952 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196953 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
196954 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
196955 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196956 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
196957 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
196958 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196959 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
196960 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
196961 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196962 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196963 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196964 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196965 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
196966 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
196967 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
196968 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
196969 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
196970 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
196971 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
196972 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
196973 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
196974 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
196975 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
196976 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
196977 
196978 l_event_id                             NUMBER;
196979 l_previous_event_id                    NUMBER;
196980 l_first_event_id                       NUMBER;
196981 l_last_event_id                        NUMBER;
196982 
196983 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
196984 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
196985 --
196986 --
196987 l_result                    BOOLEAN := TRUE;
196988 l_rows                      NUMBER  := 1000;
196989 l_event_type_name           VARCHAR2(80) := 'User-defined Sender Intransit Shipment - Transfer Price - FOB Shipment';
196990 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
196991 l_description               VARCHAR2(4000);
196992 l_transaction_reversal      NUMBER;
196993 l_ae_header_id              NUMBER;
196994 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
196995 l_log_module                VARCHAR2(240);
196996 --
196997 l_acct_reversal_source      VARCHAR2(30);
196998 l_trx_reversal_source       VARCHAR2(30);
196999 
197000 l_continue_with_lines       BOOLEAN := TRUE;
197001 --
197002 l_acc_rev_gl_date_source    DATE;                      -- 4262811
197003 --
197004 type t_array_event_id is table of number index by binary_integer;
197005 
197006 l_rec_array_event                    t_rec_array_event;
197007 l_null_rec_array_event               t_rec_array_event;
197008 l_array_ae_header_id                 xla_number_array_type;
197009 l_actual_flag                        VARCHAR2(1) := NULL;
197010 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
197011 l_balance_type_code                  VARCHAR2(1) :=NULL;
197012 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
197013 
197014 --
197015 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
197016 --
197017 
197018 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
197019 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
197020 
197021 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
197022 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
197023 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
197024 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
197025 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
197026 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
197027 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
197028 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
197029 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
197030 
197031 l_array_source_12              t_array_source_12;
197032 l_array_source_12_meaning      t_array_lookup_meaning;
197033 l_array_source_38              t_array_source_38;
197034 l_array_source_38_meaning      t_array_lookup_meaning;
197035 
197036 l_array_source_4      t_array_source_4;
197037 l_array_source_11      t_array_source_11;
197038 l_array_source_15      t_array_source_15;
197039 l_array_source_18      t_array_source_18;
197040 l_array_source_19      t_array_source_19;
197041 l_array_source_20      t_array_source_20;
197042 l_array_source_21      t_array_source_21;
197043 l_array_source_22      t_array_source_22;
197044 l_array_source_24      t_array_source_24;
197045 
197046 --
197047 CURSOR header_cur
197048 IS
197049 SELECT /*+ leading(xet) cardinality(xet,1) */
197050 -- Event Type Code: UFOB_SHIP_SENDER_SHIP_TP
197051 -- Event Class Code: USER_DEFINE
197052     xet.entity_id
197053   , xet.legal_entity_id
197054   , xet.entity_code
197055   , xet.transaction_number
197056   , xet.event_id
197057   , xet.event_class_code
197058   , xet.event_type_code
197059   , xet.event_number
197060   , xet.event_date
197061   , xet.transaction_date
197062   , xet.reference_num_1
197063   , xet.reference_num_2
197064   , xet.reference_num_3
197065   , xet.reference_num_4
197066   , xet.reference_char_1
197067   , xet.reference_char_2
197068   , xet.reference_char_3
197069   , xet.reference_char_4
197070   , xet.reference_date_1
197071   , xet.reference_date_2
197072   , xet.reference_date_3
197073   , xet.reference_date_4
197074   , xet.event_created_by
197075   , xet.budgetary_control_flag 
197076   , h1.DISTRIBUTION_TYPE    source_12
197077   , fvl12.meaning   source_12_meaning
197078   , h1.TRANSFER_TO_GL_INDICATOR    source_38
197079   , fvl38.meaning   source_38_meaning
197080   FROM xla_events_gt     xet 
197081   , CST_XLA_INV_HEADERS_V  h1
197082   , fnd_lookup_values    fvl12
197083   , fnd_lookup_values    fvl38
197084  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
197085    and xet.event_type_code = C_EVENT_TYPE_CODE
197086    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
197087    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
197088   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
197089   AND fvl12.view_application_id(+) = 700
197090   AND fvl12.language(+)            = USERENV('LANG')
197091      AND fvl38.lookup_type(+)         = 'YES_NO'
197092   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
197093   AND fvl38.view_application_id(+) = 0
197094   AND fvl38.language(+)            = USERENV('LANG')
197095   
197096  ORDER BY event_id
197097 ;
197098 
197099 
197100 --
197101 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
197102 IS
197103 SELECT /*+ leading(xet) cardinality(xet,1) */
197104 -- Event Type Code: UFOB_SHIP_SENDER_SHIP_TP
197105 -- Event Class Code: USER_DEFINE
197106     xet.entity_id
197107    ,xet.legal_entity_id
197108    ,xet.entity_code
197109    ,xet.transaction_number
197110    ,xet.event_id
197111    ,xet.event_class_code
197112    ,xet.event_type_code
197113    ,xet.event_number
197114    ,xet.event_date
197115    ,xet.transaction_date
197116    ,xet.reference_num_1
197117    ,xet.reference_num_2
197118    ,xet.reference_num_3
197119    ,xet.reference_num_4
197120    ,xet.reference_char_1
197121    ,xet.reference_char_2
197122    ,xet.reference_char_3
197123    ,xet.reference_char_4
197124    ,xet.reference_date_1
197125    ,xet.reference_date_2
197126    ,xet.reference_date_3
197127    ,xet.reference_date_4
197128    ,xet.event_created_by
197129    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
197130   , l2.CODE_COMBINATION_ID    source_4
197131   , l2.DISTRIBUTION_IDENTIFIER    source_11
197132   , l2.CURRENCY_CODE    source_15
197133   , l2.ENTERED_AMOUNT    source_18
197134   , l2.CURRENCY_CONVERSION_DATE    source_19
197135   , l2.CURRENCY_CONVERSION_RATE    source_20
197136   , l2.CURRENCY_CONVERSION_TYPE    source_21
197137   , l2.ACCOUNTED_AMOUNT    source_22
197138   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
197139   FROM xla_events_gt     xet 
197140   , CST_XLA_INV_LINES_V  l2
197141  WHERE xet.event_id between x_first_event_id and x_last_event_id
197142    and xet.event_date between p_pad_start_date and p_pad_end_date
197143    and xet.event_type_code = C_EVENT_TYPE_CODE
197144    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
197145 ;
197146 
197147 --
197148 BEGIN
197149 IF g_log_enabled THEN
197150    l_log_module := C_DEFAULT_MODULE||'.EventType_299';
197151 END IF;
197152 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
197153    trace
197154       (p_msg      => 'BEGIN of EventType_299'
197155       ,p_level    => C_LEVEL_PROCEDURE
197156       ,p_module   => l_log_module);
197157 END IF;
197158 
197159 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
197160    trace
197161       (p_msg      => 'p_application_id = '||p_application_id||
197162                      ' - p_base_ledger_id = '||p_base_ledger_id||
197163                      ' - p_target_ledger_id  = '||p_target_ledger_id||
197164                      ' - p_language = '||p_language||
197165                      ' - p_currency_code = '||p_currency_code||
197166                      ' - p_sla_ledger_id = '||p_sla_ledger_id
197167       ,p_level    => C_LEVEL_STATEMENT
197168       ,p_module   => l_log_module);
197169 END IF;
197170 --
197171 -- initialze arrays
197172 --
197173 g_array_event.DELETE;
197174 l_rec_array_event := l_null_rec_array_event;
197175 --
197176 --------------------------------------
197177 -- 4262811 Initialze MPA Line Number
197178 --------------------------------------
197179 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
197180 
197181 --
197182 
197183 --
197184 OPEN header_cur;
197185 --
197186 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
197187    trace
197188    (p_msg      => 'SQL - FETCH header_cur'
197189    ,p_level    => C_LEVEL_STATEMENT
197190    ,p_module   => l_log_module);
197191 END IF;
197192 --
197193 LOOP
197194 FETCH header_cur BULK COLLECT INTO
197195         l_array_entity_id
197196       , l_array_legal_entity_id
197197       , l_array_entity_code
197198       , l_array_transaction_num
197199       , l_array_event_id
197200       , l_array_class_code
197201       , l_array_event_type
197202       , l_array_event_number
197203       , l_array_event_date
197204       , l_array_transaction_date
197205       , l_array_reference_num_1
197206       , l_array_reference_num_2
197207       , l_array_reference_num_3
197208       , l_array_reference_num_4
197209       , l_array_reference_char_1
197210       , l_array_reference_char_2
197211       , l_array_reference_char_3
197212       , l_array_reference_char_4
197213       , l_array_reference_date_1
197214       , l_array_reference_date_2
197215       , l_array_reference_date_3
197216       , l_array_reference_date_4
197217       , l_array_event_created_by
197218       , l_array_budgetary_control_flag 
197219       , l_array_source_12
197220       , l_array_source_12_meaning
197221       , l_array_source_38
197222       , l_array_source_38_meaning
197223       LIMIT l_rows;
197224 --
197225 IF (C_LEVEL_EVENT >= g_log_level) THEN
197226    trace
197227    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
197228    ,p_level    => C_LEVEL_EVENT
197229    ,p_module   => l_log_module);
197230 END IF;
197231 --
197232 EXIT WHEN l_array_entity_id.COUNT = 0;
197233 
197234 -- initialize arrays
197235 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
197236 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
197237 
197238 --
197239 -- Bug 4458708
197240 --
197241 XLA_AE_LINES_PKG.g_LineNumber := 0;
197242 
197243 
197244 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
197245 g_last_hdr_idx := l_array_event_id.LAST;
197246 --
197247 -- loop for the headers. Each iteration is for each header extract row
197248 -- fetched in header cursor
197249 --
197250 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
197251 
197252 --
197253 -- set event info as cache for other routines to refer event attributes
197254 --
197255 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
197256    (p_application_id           => p_application_id
197257    ,p_primary_ledger_id        => p_primary_ledger_id
197258    ,p_base_ledger_id           => p_base_ledger_id
197259    ,p_target_ledger_id         => p_target_ledger_id
197260    ,p_entity_id                => l_array_entity_id(hdr_idx)
197261    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
197262    ,p_entity_code              => l_array_entity_code(hdr_idx)
197263    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
197264    ,p_event_id                 => l_array_event_id(hdr_idx)
197265    ,p_event_class_code         => l_array_class_code(hdr_idx)
197266    ,p_event_type_code          => l_array_event_type(hdr_idx)
197267    ,p_event_number             => l_array_event_number(hdr_idx)
197268    ,p_event_date               => l_array_event_date(hdr_idx)
197269    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
197270    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
197271    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
197272    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
197273    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
197274    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
197275    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
197276    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
197277    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
197278    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
197279    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
197280    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
197281    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
197282    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
197283    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
197284 
197285 --
197286 -- set the status of entry to C_VALID (0)
197287 --
197288 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
197289 
197290 --
197291 -- initialize a row for ae header
197292 --
197293 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
197294 
197295 l_event_id := l_array_event_id(hdr_idx);
197296 
197297 --
197298 -- storing the hdr_idx for event. May be used by line cursor.
197299 --
197300 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
197301 
197302 --
197303 -- store sources from header extract. This can be improved to
197304 -- store only those sources from header extract that may be used in lines
197305 --
197306 
197307 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
197308 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
197309 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
197310 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
197311 
197312 --
197313 -- initilaize the status of ae headers for diffrent balance types
197314 -- the status is initialised to C_NOT_CREATED (2)
197315 --
197316 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
197317 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
197318 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
197319 
197320 --
197321 -- call api to validate and store accounting attributes for header
197322 --
197323 
197324 ------------------------------------------------------------
197325 -- Accrual Reversal : to get date for Standard Source (NONE)
197326 ------------------------------------------------------------
197327 l_acc_rev_gl_date_source := NULL;
197328 
197329      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
197330       l_rec_acct_attrs.array_date_value(1) := 
197331 xla_ae_sources_pkg.GetSystemSourceDate(
197332    p_source_code           => 'XLA_REFERENCE_DATE_1'
197333  , p_source_type_code      => 'Y'
197334  , p_source_application_id =>  602
197335 );
197336      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
197337       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
197338 
197339 
197340 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
197341 
197342 XLA_AE_HEADER_PKG.SetJeCategoryName;
197343 
197344 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
197345 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
197346 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
197347 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
197348 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
197349 
197350 
197351 -- No header level analytical criteria
197352 
197353 --
197354 --accounting attribute enhancement, bug 3612931
197355 --
197356 l_trx_reversal_source := SUBSTR(NULL, 1,30);
197357 
197358 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
197359    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
197360 
197361    xla_accounting_err_pkg.build_message
197362       (p_appli_s_name            => 'XLA'
197363       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
197364       ,p_token_1                 => 'ACCT_ATTR_NAME'
197365       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
197366       ,p_token_2                 => 'PRODUCT_NAME'
197367       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
197368       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
197369       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
197370       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
197371 
197372 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
197373    --
197374    -- following sets the accounting attributes needed to reverse
197375    -- accounting for a distributeion
197376    --
197377    xla_ae_lines_pkg.SetTrxReversalAttrs
197378       (p_event_id              => l_event_id
197379       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
197380       ,p_trx_reversal_source   => l_trx_reversal_source);
197381 
197382 END IF;
197383 
197384 
197385 ----------------------------------------------------------------
197386 -- 4262811 -  update the header statuses to invalid in need be
197387 ----------------------------------------------------------------
197388 --
197389 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
197390 
197391 
197392   -----------------------------------------------
197393   -- No accrual reversal for the event class/type
197394   -----------------------------------------------
197395 ----------------------------------------------------------------
197396 
197397 --
197398 -- this ends the header loop iteration for one bulk fetch
197399 --
197400 END LOOP;
197401 
197402 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
197403 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
197404 
197405 --
197406 -- insert dummy rows into lines gt table that were created due to
197407 -- transaction reversals
197408 --
197409 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
197410    l_result := XLA_AE_LINES_PKG.InsertLines;
197411 END IF;
197412 
197413 --
197414 -- reset the temp_line_num for each set of events fetched from header
197415 -- cursor rather than doing it for each new event in line cursor
197416 -- Bug 3939231
197417 --
197418 xla_ae_lines_pkg.g_temp_line_num := 0;
197419 
197420 
197421 
197422 --
197423 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
197424 --
197425 --
197426 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
197427 
197428       trace
197429          (p_msg      => 'SQL - FETCH line_cur'
197430          ,p_level    => C_LEVEL_STATEMENT
197431          ,p_module   => l_log_module);
197432 
197433 END IF;
197434 --
197435 --
197436 LOOP
197437   --
197438   FETCH line_cur BULK COLLECT INTO
197439         l_array_entity_id
197440       , l_array_legal_entity_id
197441       , l_array_entity_code
197442       , l_array_transaction_num
197443       , l_array_event_id
197444       , l_array_class_code
197445       , l_array_event_type
197446       , l_array_event_number
197447       , l_array_event_date
197448       , l_array_transaction_date
197449       , l_array_reference_num_1
197450       , l_array_reference_num_2
197451       , l_array_reference_num_3
197452       , l_array_reference_num_4
197453       , l_array_reference_char_1
197454       , l_array_reference_char_2
197455       , l_array_reference_char_3
197456       , l_array_reference_char_4
197457       , l_array_reference_date_1
197458       , l_array_reference_date_2
197459       , l_array_reference_date_3
197460       , l_array_reference_date_4
197461       , l_array_event_created_by
197462       , l_array_budgetary_control_flag
197463       , l_array_extract_line_num 
197464       , l_array_source_4
197465       , l_array_source_11
197466       , l_array_source_15
197467       , l_array_source_18
197468       , l_array_source_19
197469       , l_array_source_20
197470       , l_array_source_21
197471       , l_array_source_22
197472       , l_array_source_24
197473       LIMIT l_rows;
197474 
197475   --
197476   IF (C_LEVEL_EVENT >= g_log_level) THEN
197477             trace
197478                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
197479                ,p_level    => C_LEVEL_EVENT
197480                ,p_module   => l_log_module);
197481   END IF;
197482   --
197483   EXIT WHEN l_array_entity_id.count = 0;
197484 
197485   XLA_AE_LINES_PKG.g_rec_lines := null;
197486 
197487 --
197488 -- Bug 4458708
197489 --
197490 XLA_AE_LINES_PKG.g_LineNumber := 0;
197491 --
197492 --
197493 
197494 FOR Idx IN 1..l_array_event_id.count LOOP
197495    --
197496    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
197497    --
197498    l_event_id := l_array_event_id(idx);  -- 5648433
197499 
197500    --
197501    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
197502    --
197503 
197504    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
197505              (g_array_event(l_event_id).array_value_num('header_index'))
197506          ,'N'
197507          ) <> 'Y'
197508    THEN
197509       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
197510          trace
197511             (p_msg      => 'Trancaction revesal option is not Y '
197512             ,p_level    => C_LEVEL_STATEMENT
197513             ,p_module   => l_log_module);
197514       END IF;
197515 
197516 --
197517 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
197518 --
197519 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
197520 --
197521 -- set event info as cache for other routines to refer event attributes
197522 --
197523 
197524 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
197525    l_previous_event_id := l_event_id;
197526 
197527    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
197528       (p_application_id           => p_application_id
197529       ,p_primary_ledger_id        => p_primary_ledger_id
197530       ,p_base_ledger_id           => p_base_ledger_id
197531       ,p_target_ledger_id         => p_target_ledger_id
197532       ,p_entity_id                => l_array_entity_id(Idx)
197533       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
197534       ,p_entity_code              => l_array_entity_code(Idx)
197535       ,p_transaction_num          => l_array_transaction_num(Idx)
197536       ,p_event_id                 => l_array_event_id(Idx)
197537       ,p_event_class_code         => l_array_class_code(Idx)
197538       ,p_event_type_code          => l_array_event_type(Idx)
197539       ,p_event_number             => l_array_event_number(Idx)
197540       ,p_event_date               => l_array_event_date(Idx)
197541       ,p_transaction_date         => l_array_transaction_date(Idx)
197542       ,p_reference_num_1          => l_array_reference_num_1(Idx)
197543       ,p_reference_num_2          => l_array_reference_num_2(Idx)
197544       ,p_reference_num_3          => l_array_reference_num_3(Idx)
197545       ,p_reference_num_4          => l_array_reference_num_4(Idx)
197546       ,p_reference_char_1         => l_array_reference_char_1(Idx)
197547       ,p_reference_char_2         => l_array_reference_char_2(Idx)
197548       ,p_reference_char_3         => l_array_reference_char_3(Idx)
197549       ,p_reference_char_4         => l_array_reference_char_4(Idx)
197550       ,p_reference_date_1         => l_array_reference_date_1(Idx)
197551       ,p_reference_date_2         => l_array_reference_date_2(Idx)
197552       ,p_reference_date_3         => l_array_reference_date_3(Idx)
197553       ,p_reference_date_4         => l_array_reference_date_4(Idx)
197554       ,p_event_created_by         => l_array_event_created_by(Idx)
197555       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
197556        --
197557 END IF;
197558 
197559 
197560 
197561 --
197562 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
197563 
197564 l_acct_reversal_source := SUBSTR(NULL, 1,30);
197565 
197566 IF l_continue_with_lines THEN
197567    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
197568       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
197569 
197570       xla_accounting_err_pkg.build_message
197571          (p_appli_s_name            => 'XLA'
197572          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
197573          ,p_token_1                 => 'LINE_NUMBER'
197574          ,p_value_1                 => l_array_extract_line_num(Idx)
197575          ,p_token_2                 => 'PRODUCT_NAME'
197576          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
197577          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
197578          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
197579          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
197580 
197581    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
197582       --
197583       -- following sets the accounting attributes needed to reverse
197584       -- accounting for a distributeion
197585       --
197586 
197587       --
197588       -- 5217187
197589       --
197590       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
197591       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
197592                                        g_array_event(l_event_id).array_value_num('header_index'));
197593       --
197594       --
197595 
197596       -- No reversal code generated
197597 
197598       xla_ae_lines_pkg.SetAcctReversalAttrs
197599          (p_event_id             => l_event_id
197600          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
197601          ,p_calculate_acctd_flag => l_calculate_acctd_flag
197602          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
197603    END IF;
197604 
197605    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
197606        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
197607 
197608 --
197609 AcctLineType_18 (
197610  p_application_id  => p_application_id
197611  ,p_event_id     => l_event_id
197612  ,p_calculate_acctd_flag => l_calculate_acctd_flag
197613  ,p_calculate_g_l_flag => l_calculate_g_l_flag
197614  ,p_actual_flag => l_actual_flag
197615  ,p_balance_type_code => l_balance_type_code
197616  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
197617  
197618  , p_source_4 => l_array_source_4(Idx)
197619  , p_source_11 => l_array_source_11(Idx)
197620  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
197621  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
197622  , p_source_15 => l_array_source_15(Idx)
197623  , p_source_18 => l_array_source_18(Idx)
197624  , p_source_19 => l_array_source_19(Idx)
197625  , p_source_20 => l_array_source_20(Idx)
197626  , p_source_21 => l_array_source_21(Idx)
197627  , p_source_22 => l_array_source_22(Idx)
197628  , p_source_24 => l_array_source_24(Idx)
197629  );
197630 If(l_balance_type_code = 'A') THEN
197631   l_actual_gain_loss_ref := l_gain_or_loss_ref;
197632 END IF;
197633 
197634 --
197635 
197636 
197637 --
197638 AcctLineType_90 (
197639  p_application_id  => p_application_id
197640  ,p_event_id     => l_event_id
197641  ,p_calculate_acctd_flag => l_calculate_acctd_flag
197642  ,p_calculate_g_l_flag => l_calculate_g_l_flag
197643  ,p_actual_flag => l_actual_flag
197644  ,p_balance_type_code => l_balance_type_code
197645  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
197646  
197647  , p_source_4 => l_array_source_4(Idx)
197648  , p_source_11 => l_array_source_11(Idx)
197649  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
197650  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
197651  , p_source_15 => l_array_source_15(Idx)
197652  , p_source_18 => l_array_source_18(Idx)
197653  , p_source_19 => l_array_source_19(Idx)
197654  , p_source_20 => l_array_source_20(Idx)
197655  , p_source_21 => l_array_source_21(Idx)
197656  , p_source_22 => l_array_source_22(Idx)
197657  , p_source_24 => l_array_source_24(Idx)
197658  );
197659 If(l_balance_type_code = 'A') THEN
197660   l_actual_gain_loss_ref := l_gain_or_loss_ref;
197661 END IF;
197662 
197663 --
197664 
197665 
197666 --
197667 AcctLineType_100 (
197668  p_application_id  => p_application_id
197669  ,p_event_id     => l_event_id
197670  ,p_calculate_acctd_flag => l_calculate_acctd_flag
197671  ,p_calculate_g_l_flag => l_calculate_g_l_flag
197672  ,p_actual_flag => l_actual_flag
197673  ,p_balance_type_code => l_balance_type_code
197674  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
197675  
197676  , p_source_4 => l_array_source_4(Idx)
197677  , p_source_11 => l_array_source_11(Idx)
197678  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
197679  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
197680  , p_source_15 => l_array_source_15(Idx)
197681  , p_source_18 => l_array_source_18(Idx)
197682  , p_source_19 => l_array_source_19(Idx)
197683  , p_source_20 => l_array_source_20(Idx)
197684  , p_source_21 => l_array_source_21(Idx)
197685  , p_source_22 => l_array_source_22(Idx)
197686  , p_source_24 => l_array_source_24(Idx)
197687  );
197688 If(l_balance_type_code = 'A') THEN
197689   l_actual_gain_loss_ref := l_gain_or_loss_ref;
197690 END IF;
197691 
197692 --
197693 
197694 
197695 --
197696 AcctLineType_110 (
197697  p_application_id  => p_application_id
197698  ,p_event_id     => l_event_id
197699  ,p_calculate_acctd_flag => l_calculate_acctd_flag
197700  ,p_calculate_g_l_flag => l_calculate_g_l_flag
197701  ,p_actual_flag => l_actual_flag
197702  ,p_balance_type_code => l_balance_type_code
197703  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
197704  
197705  , p_source_4 => l_array_source_4(Idx)
197706  , p_source_11 => l_array_source_11(Idx)
197707  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
197708  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
197709  , p_source_15 => l_array_source_15(Idx)
197710  , p_source_18 => l_array_source_18(Idx)
197711  , p_source_19 => l_array_source_19(Idx)
197712  , p_source_20 => l_array_source_20(Idx)
197713  , p_source_21 => l_array_source_21(Idx)
197714  , p_source_22 => l_array_source_22(Idx)
197715  , p_source_24 => l_array_source_24(Idx)
197716  );
197717 If(l_balance_type_code = 'A') THEN
197718   l_actual_gain_loss_ref := l_gain_or_loss_ref;
197719 END IF;
197720 
197721 --
197722 
197723 
197724 --
197725 AcctLineType_159 (
197726  p_application_id  => p_application_id
197727  ,p_event_id     => l_event_id
197728  ,p_calculate_acctd_flag => l_calculate_acctd_flag
197729  ,p_calculate_g_l_flag => l_calculate_g_l_flag
197730  ,p_actual_flag => l_actual_flag
197731  ,p_balance_type_code => l_balance_type_code
197732  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
197733  
197734  , p_source_4 => l_array_source_4(Idx)
197735  , p_source_11 => l_array_source_11(Idx)
197736  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
197737  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
197738  , p_source_15 => l_array_source_15(Idx)
197739  , p_source_18 => l_array_source_18(Idx)
197740  , p_source_19 => l_array_source_19(Idx)
197741  , p_source_20 => l_array_source_20(Idx)
197742  , p_source_21 => l_array_source_21(Idx)
197743  , p_source_22 => l_array_source_22(Idx)
197744  , p_source_24 => l_array_source_24(Idx)
197745  );
197746 If(l_balance_type_code = 'A') THEN
197747   l_actual_gain_loss_ref := l_gain_or_loss_ref;
197748 END IF;
197749 
197750 --
197751 
197752 
197753 --
197754 AcctLineType_207 (
197755  p_application_id  => p_application_id
197756  ,p_event_id     => l_event_id
197757  ,p_calculate_acctd_flag => l_calculate_acctd_flag
197758  ,p_calculate_g_l_flag => l_calculate_g_l_flag
197759  ,p_actual_flag => l_actual_flag
197760  ,p_balance_type_code => l_balance_type_code
197761  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
197762  
197763  , p_source_4 => l_array_source_4(Idx)
197764  , p_source_11 => l_array_source_11(Idx)
197765  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
197766  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
197767  , p_source_15 => l_array_source_15(Idx)
197768  , p_source_18 => l_array_source_18(Idx)
197769  , p_source_19 => l_array_source_19(Idx)
197770  , p_source_20 => l_array_source_20(Idx)
197771  , p_source_21 => l_array_source_21(Idx)
197772  , p_source_22 => l_array_source_22(Idx)
197773  , p_source_24 => l_array_source_24(Idx)
197774  );
197775 If(l_balance_type_code = 'A') THEN
197776   l_actual_gain_loss_ref := l_gain_or_loss_ref;
197777 END IF;
197778 
197779 --
197780 
197781       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
197782       -- or secondary ledger that has different currency with primary
197783       -- or alc that is calculated by sla
197784       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
197785             (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'))
197786 
197787 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
197788 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
197789           AND (l_actual_flag = 'A')) THEN
197790         XLA_AE_LINES_PKG.CreateGainOrLossLines(
197791           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
197792          ,p_application_id   => p_application_id
197793          ,p_amb_context_code => 'DEFAULT'
197794          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
197795          ,p_event_class_code => C_EVENT_CLASS_CODE
197796          ,p_event_type_code  => C_EVENT_TYPE_CODE
197797          
197798          ,p_gain_ccid        => -1
197799          ,p_loss_ccid        => -1
197800 
197801          ,p_actual_flag      => l_actual_flag
197802          ,p_enc_flag         => null
197803          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
197804          ,p_enc_g_l_ref      => null
197805          );
197806       END IF;
197807    END IF;
197808 END IF;
197809 
197810    ELSE
197811       --
197812       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
197813       --
197814       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
197815          trace
197816             (p_msg      => 'Trancaction revesal option is Y'
197817             ,p_level    => C_LEVEL_STATEMENT
197818             ,p_module   => l_log_module);
197819       END IF;
197820    END IF;
197821 
197822 END LOOP;
197823 l_result := XLA_AE_LINES_PKG.InsertLines ;
197824 end loop;
197825 close line_cur;
197826 
197827 
197828 --
197829 -- insert headers into xla_ae_headers_gt table
197830 --
197831 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
197832 
197833 -- insert into errors table here.
197834 
197835 END LOOP;
197836 
197837 --
197838 -- 4865292
197839 --
197840 -- Compare g_hdr_extract_count with event count in
197841 -- CreateHeadersAndLines.
197842 --
197843 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
197844 
197845 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
197846    trace (p_msg     => '# rows extracted from header extract objects '
197847                     || ' (running total): '
197848                     || g_hdr_extract_count
197849          ,p_level   => C_LEVEL_STATEMENT
197850          ,p_module  => l_log_module);
197851 END IF;
197852 
197853 CLOSE header_cur;
197854 --
197855 
197856 --
197857 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
197858    trace
197859       (p_msg      => 'END of EventType_299'
197860       ,p_level    => C_LEVEL_PROCEDURE
197861       ,p_module   => l_log_module);
197862 END IF;
197863 --
197864 RETURN l_result;
197865 EXCEPTION
197866 WHEN xla_exceptions_pkg.application_exception THEN
197867    
197868 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
197869 
197870    
197871 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
197872 
197873    RAISE;
197874 
197875 WHEN NO_DATA_FOUND THEN
197876 
197877 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
197878 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
197879 
197880 FOR header_record IN header_cur
197881 LOOP
197882     l_array_header_events(header_record.event_id) := header_record.event_id;
197883 END LOOP;
197884 
197885 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
197886 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
197887 
197888 fnd_file.put_line(fnd_file.LOG, '                    ');
197889 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
197890 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
197891 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
197892 
197893 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
197894 LOOP
197895 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
197896 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
197897         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
197898 	END IF;
197899 END LOOP;
197900 
197901 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
197902 fnd_file.put_line(fnd_file.LOG, '                    ');
197903 
197904 
197905 xla_exceptions_pkg.raise_message
197906       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_299');
197907 
197908 
197909 WHEN OTHERS THEN
197910    xla_exceptions_pkg.raise_message
197911       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_299');
197912 END EventType_299;
197913 --
197914 
197915 ---------------------------------------
197916 --
197917 -- PRIVATE PROCEDURE
197918 --         insert_sources_300
197919 --
197920 ----------------------------------------
197921 --
197922 PROCEDURE insert_sources_300(
197923                                 p_target_ledger_id       IN NUMBER
197924                               , p_language               IN VARCHAR2
197925                               , p_sla_ledger_id          IN NUMBER
197926                               , p_pad_start_date         IN DATE
197927                               , p_pad_end_date           IN DATE
197928                          )
197929 IS
197930 
197931 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UIPV_TXFR';
197932 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
197933 p_apps_owner                   VARCHAR2(30);
197934 l_log_module                   VARCHAR2(240);
197935 BEGIN
197936 IF g_log_enabled THEN
197937       l_log_module := C_DEFAULT_MODULE||'.insert_sources_300';
197938 END IF;
197939 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
197940 
197941       trace
197942          (p_msg      => 'BEGIN of insert_sources_300'
197943          ,p_level    => C_LEVEL_PROCEDURE
197944          ,p_module   => l_log_module);
197945 
197946 END IF;
197947 
197948 -- select APPS owner
197949 SELECT oracle_username
197950   INTO p_apps_owner
197951   FROM fnd_oracle_userid
197952  WHERE read_only_flag = 'U'
197953 ;
197954 
197955 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
197956       trace
197957          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
197958                         ' - p_language = '||p_language||
197959                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
197960                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
197961                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
197962                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
197963          ,p_level    => C_LEVEL_STATEMENT
197964          ,p_module   => l_log_module);
197965 END IF;
197966 
197967 
197968 --
197969 INSERT INTO xla_diag_sources --hdr1
197970 (
197971         event_id
197972       , ledger_id
197973       , sla_ledger_id
197974       , description_language
197975       , object_name
197976       , object_type_code
197977       , line_number
197978       , source_application_id
197979       , source_type_code
197980       , source_code
197981       , source_value
197982       , source_meaning
197983       , created_by
197984       , creation_date
197985       , last_update_date
197986       , last_updated_by
197987       , last_update_login
197988       , program_update_date
197989       , program_application_id
197990       , program_id
197991       , request_id
197992 )
197993 SELECT
197994         event_id
197995       , p_target_ledger_id
197996       , p_sla_ledger_id
197997       , p_language
197998       , object_name
197999       , object_type_code
198000       , line_number
198001       , source_application_id
198002       , source_type_code
198003       , source_code
198004       , SUBSTR(source_value ,1,1996)
198005       , SUBSTR(source_meaning,1,200)
198006       , xla_environment_pkg.g_Usr_Id
198007       , TRUNC(SYSDATE)
198008       , TRUNC(SYSDATE)
198009       , xla_environment_pkg.g_Usr_Id
198010       , xla_environment_pkg.g_Login_Id
198011       , TRUNC(SYSDATE)
198012       , xla_environment_pkg.g_Prog_Appl_Id
198013       , xla_environment_pkg.g_Prog_Id
198014       , xla_environment_pkg.g_Req_Id
198015   FROM (
198016        SELECT xet.event_id                  event_id
198017             , 0                             line_number
198018             , CASE r
198019                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
198020                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
198021                 
198022                ELSE null
198023               END                           object_name
198024             , CASE r
198025                 WHEN 1 THEN 'HEADER' 
198026                 WHEN 2 THEN 'HEADER' 
198027                 
198028                 ELSE null
198029               END                           object_type_code
198030             , CASE r
198031                 WHEN 1 THEN '707' 
198032                 WHEN 2 THEN '707' 
198033                 
198034                 ELSE null
198035               END                           source_application_id
198036             , 'S'             source_type_code
198037             , CASE r
198038                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
198039                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
198040                 
198041                 ELSE null
198042               END                           source_code
198043             , CASE r
198044                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
198045                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
198046                 
198047                 ELSE null
198048               END                           source_value
198049             , CASE r
198050                 WHEN 1 THEN fvl12.meaning
198051                 WHEN 2 THEN fvl38.meaning
198052                 
198053                 ELSE null
198054               END               source_meaning
198055         FROM xla_events_gt     xet  
198056       , CST_XLA_INV_HEADERS_V  h1
198057   , fnd_lookup_values    fvl12
198058   , fnd_lookup_values    fvl38
198059             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
198060        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
198061          AND xet.event_type_code = C_EVENT_TYPE_CODE
198062             AND h1.event_id = xet.event_id
198063    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
198064   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
198065   AND fvl12.view_application_id(+) = 700
198066   AND fvl12.language(+)            = USERENV('LANG')
198067      AND fvl38.lookup_type(+)         = 'YES_NO'
198068   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
198069   AND fvl38.view_application_id(+) = 0
198070   AND fvl38.language(+)            = USERENV('LANG')
198071   
198072 )
198073 ;
198074 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
198075 
198076       trace
198077          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
198078          ,p_level    => C_LEVEL_STATEMENT
198079          ,p_module   => l_log_module);
198080 
198081 END IF;
198082 --
198083 
198084 
198085 
198086 --
198087 INSERT INTO xla_diag_sources --line1
198088 (
198089         event_id
198090       , ledger_id
198091       , sla_ledger_id
198092       , description_language
198093       , object_name
198094       , object_type_code
198095       , line_number
198096       , source_application_id
198097       , source_type_code
198098       , source_code
198099       , source_value
198100       , source_meaning
198101       , created_by
198102       , creation_date
198103       , last_update_date
198104       , last_updated_by
198105       , last_update_login
198106       , program_update_date
198107       , program_application_id
198108       , program_id
198109       , request_id
198110 )
198111 SELECT  event_id
198112       , p_target_ledger_id
198113       , p_sla_ledger_id
198114       , p_language
198115       , object_name
198116       , object_type_code
198117       , line_number
198118       , source_application_id
198119       , source_type_code
198120       , source_code
198121       , SUBSTR(source_value,1,1996)
198122       , SUBSTR(source_meaning,1,200)
198123       , xla_environment_pkg.g_Usr_Id
198124       , TRUNC(SYSDATE)
198125       , TRUNC(SYSDATE)
198126       , xla_environment_pkg.g_Usr_Id
198127       , xla_environment_pkg.g_Login_Id
198128       , TRUNC(SYSDATE)
198129       , xla_environment_pkg.g_Prog_Appl_Id
198130       , xla_environment_pkg.g_Prog_Id
198131       , xla_environment_pkg.g_Req_Id
198132   FROM (
198133        SELECT xet.event_id                  event_id
198134             , l2.line_number                 line_number
198135             , CASE r
198136                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
198137                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
198138                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
198139                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
198140                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
198141                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
198142                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
198143                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
198144                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
198145                 
198146                ELSE null
198147               END                           object_name
198148             , CASE r
198149                 WHEN 1 THEN 'LINE' 
198150                 WHEN 2 THEN 'LINE' 
198151                 WHEN 3 THEN 'LINE' 
198152                 WHEN 4 THEN 'LINE' 
198153                 WHEN 5 THEN 'LINE' 
198154                 WHEN 6 THEN 'LINE' 
198155                 WHEN 7 THEN 'LINE' 
198156                 WHEN 8 THEN 'LINE' 
198157                 WHEN 9 THEN 'LINE' 
198158                 
198159                 ELSE null
198160               END                           object_type_code
198161             , CASE r
198162                 WHEN 1 THEN '707' 
198163                 WHEN 2 THEN '707' 
198164                 WHEN 3 THEN '707' 
198165                 WHEN 4 THEN '707' 
198166                 WHEN 5 THEN '707' 
198167                 WHEN 6 THEN '707' 
198168                 WHEN 7 THEN '707' 
198169                 WHEN 8 THEN '707' 
198170                 WHEN 9 THEN '707' 
198171                 
198172                 ELSE null
198173               END                           source_application_id
198174             , 'S'             source_type_code
198175             , CASE r
198176                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
198177                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
198178                 WHEN 3 THEN 'CURRENCY_CODE' 
198179                 WHEN 4 THEN 'ENTERED_AMOUNT' 
198180                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
198181                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
198182                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
198183                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
198184                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
198185                 
198186                 ELSE null
198187               END                           source_code
198188             , CASE r
198189                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
198190                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
198191                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
198192                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
198193                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
198194                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
198195                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
198196                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
198197                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
198198                 
198199                 ELSE null
198200               END                           source_value
198201             , null              source_meaning
198202          FROM  xla_events_gt     xet  
198203         , CST_XLA_INV_LINES_V  l2
198204             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
198205         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
198206           AND xet.event_type_code = C_EVENT_TYPE_CODE
198207             AND l2.event_id          = xet.event_id
198208 
198209 )
198210 ;
198211 --
198212 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
198213 
198214       trace
198215          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
198216          ,p_level    => C_LEVEL_STATEMENT
198217          ,p_module   => l_log_module);
198218 
198219 END IF;
198220 
198221 
198222 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
198223       trace
198224          (p_msg      => 'END of insert_sources_300'
198225          ,p_level    => C_LEVEL_PROCEDURE
198226          ,p_module   => l_log_module);
198227 END IF;
198228 EXCEPTION
198229   WHEN xla_exceptions_pkg.application_exception THEN
198230       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
198231             trace
198232                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
198233                ,p_level    => C_LEVEL_EXCEPTION
198234                ,p_module   => l_log_module);
198235       END IF;
198236       RAISE;
198237   WHEN OTHERS THEN
198238       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
198239             trace
198240                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
198241                ,p_level    => C_LEVEL_EXCEPTION
198242                ,p_module   => l_log_module);
198243        END IF;
198244        xla_exceptions_pkg.raise_message
198245            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_300');
198246 END insert_sources_300;
198247 --
198248 
198249 ---------------------------------------
198250 --
198251 -- PRIVATE FUNCTION
198252 --         EventType_300
198253 --
198254 ----------------------------------------
198255 --
198256 FUNCTION EventType_300
198257        (p_application_id         IN NUMBER
198258        ,p_base_ledger_id         IN NUMBER
198259        ,p_target_ledger_id       IN NUMBER
198260        ,p_language               IN VARCHAR2
198261        ,p_currency_code          IN VARCHAR2
198262        ,p_sla_ledger_id          IN NUMBER
198263        ,p_pad_start_date         IN DATE
198264        ,p_pad_end_date           IN DATE
198265        ,p_primary_ledger_id      IN NUMBER)
198266 RETURN BOOLEAN IS
198267 --
198268 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UIPV_TXFR';
198269 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
198270 
198271 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
198272 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
198273 --
198274 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198275 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198276 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
198277 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
198278 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198279 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
198280 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
198281 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198282 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
198283 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
198284 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198285 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198286 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198287 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198288 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
198289 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
198290 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
198291 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
198292 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
198293 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
198294 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
198295 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
198296 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
198297 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
198298 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
198299 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
198300 
198301 l_event_id                             NUMBER;
198302 l_previous_event_id                    NUMBER;
198303 l_first_event_id                       NUMBER;
198304 l_last_event_id                        NUMBER;
198305 
198306 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
198307 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
198308 --
198309 --
198310 l_result                    BOOLEAN := TRUE;
198311 l_rows                      NUMBER  := 1000;
198312 l_event_type_name           VARCHAR2(80) := 'User-defined Invoice Price Variance Transfer';
198313 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
198314 l_description               VARCHAR2(4000);
198315 l_transaction_reversal      NUMBER;
198316 l_ae_header_id              NUMBER;
198317 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
198318 l_log_module                VARCHAR2(240);
198319 --
198320 l_acct_reversal_source      VARCHAR2(30);
198321 l_trx_reversal_source       VARCHAR2(30);
198322 
198323 l_continue_with_lines       BOOLEAN := TRUE;
198324 --
198325 l_acc_rev_gl_date_source    DATE;                      -- 4262811
198326 --
198327 type t_array_event_id is table of number index by binary_integer;
198328 
198329 l_rec_array_event                    t_rec_array_event;
198330 l_null_rec_array_event               t_rec_array_event;
198331 l_array_ae_header_id                 xla_number_array_type;
198332 l_actual_flag                        VARCHAR2(1) := NULL;
198333 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
198334 l_balance_type_code                  VARCHAR2(1) :=NULL;
198335 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
198336 
198337 --
198338 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
198339 --
198340 
198341 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
198342 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
198343 
198344 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
198345 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
198346 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
198347 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
198348 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
198349 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
198350 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
198351 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
198352 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
198353 
198354 l_array_source_12              t_array_source_12;
198355 l_array_source_12_meaning      t_array_lookup_meaning;
198356 l_array_source_38              t_array_source_38;
198357 l_array_source_38_meaning      t_array_lookup_meaning;
198358 
198359 l_array_source_4      t_array_source_4;
198360 l_array_source_11      t_array_source_11;
198361 l_array_source_15      t_array_source_15;
198362 l_array_source_18      t_array_source_18;
198363 l_array_source_19      t_array_source_19;
198364 l_array_source_20      t_array_source_20;
198365 l_array_source_21      t_array_source_21;
198366 l_array_source_22      t_array_source_22;
198367 l_array_source_24      t_array_source_24;
198368 
198369 --
198370 CURSOR header_cur
198371 IS
198372 SELECT /*+ leading(xet) cardinality(xet,1) */
198373 -- Event Type Code: UIPV_TXFR
198374 -- Event Class Code: USER_DEFINE
198375     xet.entity_id
198376   , xet.legal_entity_id
198377   , xet.entity_code
198378   , xet.transaction_number
198379   , xet.event_id
198380   , xet.event_class_code
198381   , xet.event_type_code
198382   , xet.event_number
198383   , xet.event_date
198384   , xet.transaction_date
198385   , xet.reference_num_1
198386   , xet.reference_num_2
198387   , xet.reference_num_3
198388   , xet.reference_num_4
198389   , xet.reference_char_1
198390   , xet.reference_char_2
198391   , xet.reference_char_3
198392   , xet.reference_char_4
198393   , xet.reference_date_1
198394   , xet.reference_date_2
198395   , xet.reference_date_3
198396   , xet.reference_date_4
198397   , xet.event_created_by
198398   , xet.budgetary_control_flag 
198399   , h1.DISTRIBUTION_TYPE    source_12
198400   , fvl12.meaning   source_12_meaning
198401   , h1.TRANSFER_TO_GL_INDICATOR    source_38
198402   , fvl38.meaning   source_38_meaning
198403   FROM xla_events_gt     xet 
198404   , CST_XLA_INV_HEADERS_V  h1
198405   , fnd_lookup_values    fvl12
198406   , fnd_lookup_values    fvl38
198407  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
198408    and xet.event_type_code = C_EVENT_TYPE_CODE
198409    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
198410    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
198411   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
198412   AND fvl12.view_application_id(+) = 700
198413   AND fvl12.language(+)            = USERENV('LANG')
198414      AND fvl38.lookup_type(+)         = 'YES_NO'
198415   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
198416   AND fvl38.view_application_id(+) = 0
198417   AND fvl38.language(+)            = USERENV('LANG')
198418   
198419  ORDER BY event_id
198420 ;
198421 
198422 
198423 --
198424 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
198425 IS
198426 SELECT /*+ leading(xet) cardinality(xet,1) */
198427 -- Event Type Code: UIPV_TXFR
198428 -- Event Class Code: USER_DEFINE
198429     xet.entity_id
198430    ,xet.legal_entity_id
198431    ,xet.entity_code
198432    ,xet.transaction_number
198433    ,xet.event_id
198434    ,xet.event_class_code
198435    ,xet.event_type_code
198436    ,xet.event_number
198437    ,xet.event_date
198438    ,xet.transaction_date
198439    ,xet.reference_num_1
198440    ,xet.reference_num_2
198441    ,xet.reference_num_3
198442    ,xet.reference_num_4
198443    ,xet.reference_char_1
198444    ,xet.reference_char_2
198445    ,xet.reference_char_3
198446    ,xet.reference_char_4
198447    ,xet.reference_date_1
198448    ,xet.reference_date_2
198449    ,xet.reference_date_3
198450    ,xet.reference_date_4
198451    ,xet.event_created_by
198452    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
198453   , l2.CODE_COMBINATION_ID    source_4
198454   , l2.DISTRIBUTION_IDENTIFIER    source_11
198455   , l2.CURRENCY_CODE    source_15
198456   , l2.ENTERED_AMOUNT    source_18
198457   , l2.CURRENCY_CONVERSION_DATE    source_19
198458   , l2.CURRENCY_CONVERSION_RATE    source_20
198459   , l2.CURRENCY_CONVERSION_TYPE    source_21
198460   , l2.ACCOUNTED_AMOUNT    source_22
198461   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
198462   FROM xla_events_gt     xet 
198463   , CST_XLA_INV_LINES_V  l2
198464  WHERE xet.event_id between x_first_event_id and x_last_event_id
198465    and xet.event_date between p_pad_start_date and p_pad_end_date
198466    and xet.event_type_code = C_EVENT_TYPE_CODE
198467    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
198468 ;
198469 
198470 --
198471 BEGIN
198472 IF g_log_enabled THEN
198473    l_log_module := C_DEFAULT_MODULE||'.EventType_300';
198474 END IF;
198475 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
198476    trace
198477       (p_msg      => 'BEGIN of EventType_300'
198478       ,p_level    => C_LEVEL_PROCEDURE
198479       ,p_module   => l_log_module);
198480 END IF;
198481 
198482 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
198483    trace
198484       (p_msg      => 'p_application_id = '||p_application_id||
198485                      ' - p_base_ledger_id = '||p_base_ledger_id||
198486                      ' - p_target_ledger_id  = '||p_target_ledger_id||
198487                      ' - p_language = '||p_language||
198488                      ' - p_currency_code = '||p_currency_code||
198489                      ' - p_sla_ledger_id = '||p_sla_ledger_id
198490       ,p_level    => C_LEVEL_STATEMENT
198491       ,p_module   => l_log_module);
198492 END IF;
198493 --
198494 -- initialze arrays
198495 --
198496 g_array_event.DELETE;
198497 l_rec_array_event := l_null_rec_array_event;
198498 --
198499 --------------------------------------
198500 -- 4262811 Initialze MPA Line Number
198501 --------------------------------------
198502 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
198503 
198504 --
198505 
198506 --
198507 OPEN header_cur;
198508 --
198509 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
198510    trace
198511    (p_msg      => 'SQL - FETCH header_cur'
198512    ,p_level    => C_LEVEL_STATEMENT
198513    ,p_module   => l_log_module);
198514 END IF;
198515 --
198516 LOOP
198517 FETCH header_cur BULK COLLECT INTO
198518         l_array_entity_id
198519       , l_array_legal_entity_id
198520       , l_array_entity_code
198521       , l_array_transaction_num
198522       , l_array_event_id
198523       , l_array_class_code
198524       , l_array_event_type
198525       , l_array_event_number
198526       , l_array_event_date
198527       , l_array_transaction_date
198528       , l_array_reference_num_1
198529       , l_array_reference_num_2
198530       , l_array_reference_num_3
198531       , l_array_reference_num_4
198532       , l_array_reference_char_1
198533       , l_array_reference_char_2
198534       , l_array_reference_char_3
198535       , l_array_reference_char_4
198536       , l_array_reference_date_1
198537       , l_array_reference_date_2
198538       , l_array_reference_date_3
198539       , l_array_reference_date_4
198540       , l_array_event_created_by
198541       , l_array_budgetary_control_flag 
198542       , l_array_source_12
198543       , l_array_source_12_meaning
198544       , l_array_source_38
198545       , l_array_source_38_meaning
198546       LIMIT l_rows;
198547 --
198548 IF (C_LEVEL_EVENT >= g_log_level) THEN
198549    trace
198550    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
198551    ,p_level    => C_LEVEL_EVENT
198552    ,p_module   => l_log_module);
198553 END IF;
198554 --
198555 EXIT WHEN l_array_entity_id.COUNT = 0;
198556 
198557 -- initialize arrays
198558 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
198559 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
198560 
198561 --
198562 -- Bug 4458708
198563 --
198564 XLA_AE_LINES_PKG.g_LineNumber := 0;
198565 
198566 
198567 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
198568 g_last_hdr_idx := l_array_event_id.LAST;
198569 --
198570 -- loop for the headers. Each iteration is for each header extract row
198571 -- fetched in header cursor
198572 --
198573 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
198574 
198575 --
198576 -- set event info as cache for other routines to refer event attributes
198577 --
198578 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
198579    (p_application_id           => p_application_id
198580    ,p_primary_ledger_id        => p_primary_ledger_id
198581    ,p_base_ledger_id           => p_base_ledger_id
198582    ,p_target_ledger_id         => p_target_ledger_id
198583    ,p_entity_id                => l_array_entity_id(hdr_idx)
198584    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
198585    ,p_entity_code              => l_array_entity_code(hdr_idx)
198586    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
198587    ,p_event_id                 => l_array_event_id(hdr_idx)
198588    ,p_event_class_code         => l_array_class_code(hdr_idx)
198589    ,p_event_type_code          => l_array_event_type(hdr_idx)
198590    ,p_event_number             => l_array_event_number(hdr_idx)
198591    ,p_event_date               => l_array_event_date(hdr_idx)
198592    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
198593    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
198594    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
198595    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
198596    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
198597    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
198598    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
198599    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
198600    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
198601    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
198602    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
198603    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
198604    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
198605    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
198606    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
198607 
198608 --
198609 -- set the status of entry to C_VALID (0)
198610 --
198611 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
198612 
198613 --
198614 -- initialize a row for ae header
198615 --
198616 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
198617 
198618 l_event_id := l_array_event_id(hdr_idx);
198619 
198620 --
198621 -- storing the hdr_idx for event. May be used by line cursor.
198622 --
198623 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
198624 
198625 --
198626 -- store sources from header extract. This can be improved to
198627 -- store only those sources from header extract that may be used in lines
198628 --
198629 
198630 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
198631 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
198632 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
198633 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
198634 
198635 --
198636 -- initilaize the status of ae headers for diffrent balance types
198637 -- the status is initialised to C_NOT_CREATED (2)
198638 --
198639 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
198640 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
198641 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
198642 
198643 --
198644 -- call api to validate and store accounting attributes for header
198645 --
198646 
198647 ------------------------------------------------------------
198648 -- Accrual Reversal : to get date for Standard Source (NONE)
198649 ------------------------------------------------------------
198650 l_acc_rev_gl_date_source := NULL;
198651 
198652      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
198653       l_rec_acct_attrs.array_date_value(1) := 
198654 xla_ae_sources_pkg.GetSystemSourceDate(
198655    p_source_code           => 'XLA_REFERENCE_DATE_1'
198656  , p_source_type_code      => 'Y'
198657  , p_source_application_id =>  602
198658 );
198659      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
198660       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
198661 
198662 
198663 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
198664 
198665 XLA_AE_HEADER_PKG.SetJeCategoryName;
198666 
198667 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
198668 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
198669 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
198670 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
198671 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
198672 
198673 
198674 -- No header level analytical criteria
198675 
198676 --
198677 --accounting attribute enhancement, bug 3612931
198678 --
198679 l_trx_reversal_source := SUBSTR(NULL, 1,30);
198680 
198681 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
198682    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
198683 
198684    xla_accounting_err_pkg.build_message
198685       (p_appli_s_name            => 'XLA'
198686       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
198687       ,p_token_1                 => 'ACCT_ATTR_NAME'
198688       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
198689       ,p_token_2                 => 'PRODUCT_NAME'
198690       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
198691       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
198692       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
198693       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
198694 
198695 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
198696    --
198697    -- following sets the accounting attributes needed to reverse
198698    -- accounting for a distributeion
198699    --
198700    xla_ae_lines_pkg.SetTrxReversalAttrs
198701       (p_event_id              => l_event_id
198702       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
198703       ,p_trx_reversal_source   => l_trx_reversal_source);
198704 
198705 END IF;
198706 
198707 
198708 ----------------------------------------------------------------
198709 -- 4262811 -  update the header statuses to invalid in need be
198710 ----------------------------------------------------------------
198711 --
198712 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
198713 
198714 
198715   -----------------------------------------------
198716   -- No accrual reversal for the event class/type
198717   -----------------------------------------------
198718 ----------------------------------------------------------------
198719 
198720 --
198721 -- this ends the header loop iteration for one bulk fetch
198722 --
198723 END LOOP;
198724 
198725 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
198726 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
198727 
198728 --
198729 -- insert dummy rows into lines gt table that were created due to
198730 -- transaction reversals
198731 --
198732 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
198733    l_result := XLA_AE_LINES_PKG.InsertLines;
198734 END IF;
198735 
198736 --
198737 -- reset the temp_line_num for each set of events fetched from header
198738 -- cursor rather than doing it for each new event in line cursor
198739 -- Bug 3939231
198740 --
198741 xla_ae_lines_pkg.g_temp_line_num := 0;
198742 
198743 
198744 
198745 --
198746 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
198747 --
198748 --
198749 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
198750 
198751       trace
198752          (p_msg      => 'SQL - FETCH line_cur'
198753          ,p_level    => C_LEVEL_STATEMENT
198754          ,p_module   => l_log_module);
198755 
198756 END IF;
198757 --
198758 --
198759 LOOP
198760   --
198761   FETCH line_cur BULK COLLECT INTO
198762         l_array_entity_id
198763       , l_array_legal_entity_id
198764       , l_array_entity_code
198765       , l_array_transaction_num
198766       , l_array_event_id
198767       , l_array_class_code
198768       , l_array_event_type
198769       , l_array_event_number
198770       , l_array_event_date
198771       , l_array_transaction_date
198772       , l_array_reference_num_1
198773       , l_array_reference_num_2
198774       , l_array_reference_num_3
198775       , l_array_reference_num_4
198776       , l_array_reference_char_1
198777       , l_array_reference_char_2
198778       , l_array_reference_char_3
198779       , l_array_reference_char_4
198780       , l_array_reference_date_1
198781       , l_array_reference_date_2
198782       , l_array_reference_date_3
198783       , l_array_reference_date_4
198784       , l_array_event_created_by
198785       , l_array_budgetary_control_flag
198786       , l_array_extract_line_num 
198787       , l_array_source_4
198788       , l_array_source_11
198789       , l_array_source_15
198790       , l_array_source_18
198791       , l_array_source_19
198792       , l_array_source_20
198793       , l_array_source_21
198794       , l_array_source_22
198795       , l_array_source_24
198796       LIMIT l_rows;
198797 
198798   --
198799   IF (C_LEVEL_EVENT >= g_log_level) THEN
198800             trace
198801                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
198802                ,p_level    => C_LEVEL_EVENT
198803                ,p_module   => l_log_module);
198804   END IF;
198805   --
198806   EXIT WHEN l_array_entity_id.count = 0;
198807 
198808   XLA_AE_LINES_PKG.g_rec_lines := null;
198809 
198810 --
198811 -- Bug 4458708
198812 --
198813 XLA_AE_LINES_PKG.g_LineNumber := 0;
198814 --
198815 --
198816 
198817 FOR Idx IN 1..l_array_event_id.count LOOP
198818    --
198819    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
198820    --
198821    l_event_id := l_array_event_id(idx);  -- 5648433
198822 
198823    --
198824    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
198825    --
198826 
198827    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
198828              (g_array_event(l_event_id).array_value_num('header_index'))
198829          ,'N'
198830          ) <> 'Y'
198831    THEN
198832       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
198833          trace
198834             (p_msg      => 'Trancaction revesal option is not Y '
198835             ,p_level    => C_LEVEL_STATEMENT
198836             ,p_module   => l_log_module);
198837       END IF;
198838 
198839 --
198840 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
198841 --
198842 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
198843 --
198844 -- set event info as cache for other routines to refer event attributes
198845 --
198846 
198847 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
198848    l_previous_event_id := l_event_id;
198849 
198850    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
198851       (p_application_id           => p_application_id
198852       ,p_primary_ledger_id        => p_primary_ledger_id
198853       ,p_base_ledger_id           => p_base_ledger_id
198854       ,p_target_ledger_id         => p_target_ledger_id
198855       ,p_entity_id                => l_array_entity_id(Idx)
198856       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
198857       ,p_entity_code              => l_array_entity_code(Idx)
198858       ,p_transaction_num          => l_array_transaction_num(Idx)
198859       ,p_event_id                 => l_array_event_id(Idx)
198860       ,p_event_class_code         => l_array_class_code(Idx)
198861       ,p_event_type_code          => l_array_event_type(Idx)
198862       ,p_event_number             => l_array_event_number(Idx)
198863       ,p_event_date               => l_array_event_date(Idx)
198864       ,p_transaction_date         => l_array_transaction_date(Idx)
198865       ,p_reference_num_1          => l_array_reference_num_1(Idx)
198866       ,p_reference_num_2          => l_array_reference_num_2(Idx)
198867       ,p_reference_num_3          => l_array_reference_num_3(Idx)
198868       ,p_reference_num_4          => l_array_reference_num_4(Idx)
198869       ,p_reference_char_1         => l_array_reference_char_1(Idx)
198870       ,p_reference_char_2         => l_array_reference_char_2(Idx)
198871       ,p_reference_char_3         => l_array_reference_char_3(Idx)
198872       ,p_reference_char_4         => l_array_reference_char_4(Idx)
198873       ,p_reference_date_1         => l_array_reference_date_1(Idx)
198874       ,p_reference_date_2         => l_array_reference_date_2(Idx)
198875       ,p_reference_date_3         => l_array_reference_date_3(Idx)
198876       ,p_reference_date_4         => l_array_reference_date_4(Idx)
198877       ,p_event_created_by         => l_array_event_created_by(Idx)
198878       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
198879        --
198880 END IF;
198881 
198882 
198883 
198884 --
198885 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
198886 
198887 l_acct_reversal_source := SUBSTR(NULL, 1,30);
198888 
198889 IF l_continue_with_lines THEN
198890    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
198891       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
198892 
198893       xla_accounting_err_pkg.build_message
198894          (p_appli_s_name            => 'XLA'
198895          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
198896          ,p_token_1                 => 'LINE_NUMBER'
198897          ,p_value_1                 => l_array_extract_line_num(Idx)
198898          ,p_token_2                 => 'PRODUCT_NAME'
198899          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
198900          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
198901          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
198902          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
198903 
198904    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
198905       --
198906       -- following sets the accounting attributes needed to reverse
198907       -- accounting for a distributeion
198908       --
198909 
198910       --
198911       -- 5217187
198912       --
198913       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
198914       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
198915                                        g_array_event(l_event_id).array_value_num('header_index'));
198916       --
198917       --
198918 
198919       -- No reversal code generated
198920 
198921       xla_ae_lines_pkg.SetAcctReversalAttrs
198922          (p_event_id             => l_event_id
198923          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
198924          ,p_calculate_acctd_flag => l_calculate_acctd_flag
198925          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
198926    END IF;
198927 
198928    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
198929        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
198930 
198931 --
198932 AcctLineType_23 (
198933  p_application_id  => p_application_id
198934  ,p_event_id     => l_event_id
198935  ,p_calculate_acctd_flag => l_calculate_acctd_flag
198936  ,p_calculate_g_l_flag => l_calculate_g_l_flag
198937  ,p_actual_flag => l_actual_flag
198938  ,p_balance_type_code => l_balance_type_code
198939  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
198940  
198941  , p_source_4 => l_array_source_4(Idx)
198942  , p_source_11 => l_array_source_11(Idx)
198943  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
198944  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
198945  , p_source_15 => l_array_source_15(Idx)
198946  , p_source_18 => l_array_source_18(Idx)
198947  , p_source_19 => l_array_source_19(Idx)
198948  , p_source_20 => l_array_source_20(Idx)
198949  , p_source_21 => l_array_source_21(Idx)
198950  , p_source_22 => l_array_source_22(Idx)
198951  , p_source_24 => l_array_source_24(Idx)
198952  );
198953 If(l_balance_type_code = 'A') THEN
198954   l_actual_gain_loss_ref := l_gain_or_loss_ref;
198955 END IF;
198956 
198957 --
198958 
198959 
198960 --
198961 AcctLineType_43 (
198962  p_application_id  => p_application_id
198963  ,p_event_id     => l_event_id
198964  ,p_calculate_acctd_flag => l_calculate_acctd_flag
198965  ,p_calculate_g_l_flag => l_calculate_g_l_flag
198966  ,p_actual_flag => l_actual_flag
198967  ,p_balance_type_code => l_balance_type_code
198968  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
198969  
198970  , p_source_4 => l_array_source_4(Idx)
198971  , p_source_11 => l_array_source_11(Idx)
198972  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
198973  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
198974  , p_source_15 => l_array_source_15(Idx)
198975  , p_source_18 => l_array_source_18(Idx)
198976  , p_source_19 => l_array_source_19(Idx)
198977  , p_source_20 => l_array_source_20(Idx)
198978  , p_source_21 => l_array_source_21(Idx)
198979  , p_source_22 => l_array_source_22(Idx)
198980  , p_source_24 => l_array_source_24(Idx)
198981  );
198982 If(l_balance_type_code = 'A') THEN
198983   l_actual_gain_loss_ref := l_gain_or_loss_ref;
198984 END IF;
198985 
198986 --
198987 
198988 
198989 --
198990 AcctLineType_127 (
198991  p_application_id  => p_application_id
198992  ,p_event_id     => l_event_id
198993  ,p_calculate_acctd_flag => l_calculate_acctd_flag
198994  ,p_calculate_g_l_flag => l_calculate_g_l_flag
198995  ,p_actual_flag => l_actual_flag
198996  ,p_balance_type_code => l_balance_type_code
198997  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
198998  
198999  , p_source_4 => l_array_source_4(Idx)
199000  , p_source_11 => l_array_source_11(Idx)
199001  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
199002  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
199003  , p_source_15 => l_array_source_15(Idx)
199004  , p_source_18 => l_array_source_18(Idx)
199005  , p_source_19 => l_array_source_19(Idx)
199006  , p_source_20 => l_array_source_20(Idx)
199007  , p_source_21 => l_array_source_21(Idx)
199008  , p_source_22 => l_array_source_22(Idx)
199009  , p_source_24 => l_array_source_24(Idx)
199010  );
199011 If(l_balance_type_code = 'A') THEN
199012   l_actual_gain_loss_ref := l_gain_or_loss_ref;
199013 END IF;
199014 
199015 --
199016 
199017 
199018 --
199019 AcctLineType_139 (
199020  p_application_id  => p_application_id
199021  ,p_event_id     => l_event_id
199022  ,p_calculate_acctd_flag => l_calculate_acctd_flag
199023  ,p_calculate_g_l_flag => l_calculate_g_l_flag
199024  ,p_actual_flag => l_actual_flag
199025  ,p_balance_type_code => l_balance_type_code
199026  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
199027  
199028  , p_source_4 => l_array_source_4(Idx)
199029  , p_source_11 => l_array_source_11(Idx)
199030  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
199031  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
199032  , p_source_15 => l_array_source_15(Idx)
199033  , p_source_18 => l_array_source_18(Idx)
199034  , p_source_19 => l_array_source_19(Idx)
199035  , p_source_20 => l_array_source_20(Idx)
199036  , p_source_21 => l_array_source_21(Idx)
199037  , p_source_22 => l_array_source_22(Idx)
199038  , p_source_24 => l_array_source_24(Idx)
199039  );
199040 If(l_balance_type_code = 'A') THEN
199041   l_actual_gain_loss_ref := l_gain_or_loss_ref;
199042 END IF;
199043 
199044 --
199045 
199046       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
199047       -- or secondary ledger that has different currency with primary
199048       -- or alc that is calculated by sla
199049       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
199050             (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'))
199051 
199052 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
199053 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
199054           AND (l_actual_flag = 'A')) THEN
199055         XLA_AE_LINES_PKG.CreateGainOrLossLines(
199056           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
199057          ,p_application_id   => p_application_id
199058          ,p_amb_context_code => 'DEFAULT'
199059          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
199060          ,p_event_class_code => C_EVENT_CLASS_CODE
199061          ,p_event_type_code  => C_EVENT_TYPE_CODE
199062          
199063          ,p_gain_ccid        => -1
199064          ,p_loss_ccid        => -1
199065 
199066          ,p_actual_flag      => l_actual_flag
199067          ,p_enc_flag         => null
199068          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
199069          ,p_enc_g_l_ref      => null
199070          );
199071       END IF;
199072    END IF;
199073 END IF;
199074 
199075    ELSE
199076       --
199077       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
199078       --
199079       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199080          trace
199081             (p_msg      => 'Trancaction revesal option is Y'
199082             ,p_level    => C_LEVEL_STATEMENT
199083             ,p_module   => l_log_module);
199084       END IF;
199085    END IF;
199086 
199087 END LOOP;
199088 l_result := XLA_AE_LINES_PKG.InsertLines ;
199089 end loop;
199090 close line_cur;
199091 
199092 
199093 --
199094 -- insert headers into xla_ae_headers_gt table
199095 --
199096 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
199097 
199098 -- insert into errors table here.
199099 
199100 END LOOP;
199101 
199102 --
199103 -- 4865292
199104 --
199105 -- Compare g_hdr_extract_count with event count in
199106 -- CreateHeadersAndLines.
199107 --
199108 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
199109 
199110 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199111    trace (p_msg     => '# rows extracted from header extract objects '
199112                     || ' (running total): '
199113                     || g_hdr_extract_count
199114          ,p_level   => C_LEVEL_STATEMENT
199115          ,p_module  => l_log_module);
199116 END IF;
199117 
199118 CLOSE header_cur;
199119 --
199120 
199121 --
199122 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
199123    trace
199124       (p_msg      => 'END of EventType_300'
199125       ,p_level    => C_LEVEL_PROCEDURE
199126       ,p_module   => l_log_module);
199127 END IF;
199128 --
199129 RETURN l_result;
199130 EXCEPTION
199131 WHEN xla_exceptions_pkg.application_exception THEN
199132    
199133 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
199134 
199135    
199136 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
199137 
199138    RAISE;
199139 
199140 WHEN NO_DATA_FOUND THEN
199141 
199142 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
199143 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
199144 
199145 FOR header_record IN header_cur
199146 LOOP
199147     l_array_header_events(header_record.event_id) := header_record.event_id;
199148 END LOOP;
199149 
199150 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
199151 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
199152 
199153 fnd_file.put_line(fnd_file.LOG, '                    ');
199154 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
199155 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
199156 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
199157 
199158 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
199159 LOOP
199160 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
199161 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
199162         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
199163 	END IF;
199164 END LOOP;
199165 
199166 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
199167 fnd_file.put_line(fnd_file.LOG, '                    ');
199168 
199169 
199170 xla_exceptions_pkg.raise_message
199171       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_300');
199172 
199173 
199174 WHEN OTHERS THEN
199175    xla_exceptions_pkg.raise_message
199176       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_300');
199177 END EventType_300;
199178 --
199179 
199180 ---------------------------------------
199181 --
199182 -- PRIVATE PROCEDURE
199183 --         insert_sources_301
199184 --
199185 ----------------------------------------
199186 --
199187 PROCEDURE insert_sources_301(
199188                                 p_target_ledger_id       IN NUMBER
199189                               , p_language               IN VARCHAR2
199190                               , p_sla_ledger_id          IN NUMBER
199191                               , p_pad_start_date         IN DATE
199192                               , p_pad_end_date           IN DATE
199193                          )
199194 IS
199195 
199196 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UMISC_ISSUE';
199197 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
199198 p_apps_owner                   VARCHAR2(30);
199199 l_log_module                   VARCHAR2(240);
199200 BEGIN
199201 IF g_log_enabled THEN
199202       l_log_module := C_DEFAULT_MODULE||'.insert_sources_301';
199203 END IF;
199204 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
199205 
199206       trace
199207          (p_msg      => 'BEGIN of insert_sources_301'
199208          ,p_level    => C_LEVEL_PROCEDURE
199209          ,p_module   => l_log_module);
199210 
199211 END IF;
199212 
199213 -- select APPS owner
199214 SELECT oracle_username
199215   INTO p_apps_owner
199216   FROM fnd_oracle_userid
199217  WHERE read_only_flag = 'U'
199218 ;
199219 
199220 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199221       trace
199222          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
199223                         ' - p_language = '||p_language||
199224                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
199225                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
199226                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
199227                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
199228          ,p_level    => C_LEVEL_STATEMENT
199229          ,p_module   => l_log_module);
199230 END IF;
199231 
199232 
199233 --
199234 INSERT INTO xla_diag_sources --hdr1
199235 (
199236         event_id
199237       , ledger_id
199238       , sla_ledger_id
199239       , description_language
199240       , object_name
199241       , object_type_code
199242       , line_number
199243       , source_application_id
199244       , source_type_code
199245       , source_code
199246       , source_value
199247       , source_meaning
199248       , created_by
199249       , creation_date
199250       , last_update_date
199251       , last_updated_by
199252       , last_update_login
199253       , program_update_date
199254       , program_application_id
199255       , program_id
199256       , request_id
199257 )
199258 SELECT
199259         event_id
199260       , p_target_ledger_id
199261       , p_sla_ledger_id
199262       , p_language
199263       , object_name
199264       , object_type_code
199265       , line_number
199266       , source_application_id
199267       , source_type_code
199268       , source_code
199269       , SUBSTR(source_value ,1,1996)
199270       , SUBSTR(source_meaning,1,200)
199271       , xla_environment_pkg.g_Usr_Id
199272       , TRUNC(SYSDATE)
199273       , TRUNC(SYSDATE)
199274       , xla_environment_pkg.g_Usr_Id
199275       , xla_environment_pkg.g_Login_Id
199276       , TRUNC(SYSDATE)
199277       , xla_environment_pkg.g_Prog_Appl_Id
199278       , xla_environment_pkg.g_Prog_Id
199279       , xla_environment_pkg.g_Req_Id
199280   FROM (
199281        SELECT xet.event_id                  event_id
199282             , 0                             line_number
199283             , CASE r
199284                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
199285                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
199286                 
199287                ELSE null
199288               END                           object_name
199289             , CASE r
199290                 WHEN 1 THEN 'HEADER' 
199291                 WHEN 2 THEN 'HEADER' 
199292                 
199293                 ELSE null
199294               END                           object_type_code
199295             , CASE r
199296                 WHEN 1 THEN '707' 
199297                 WHEN 2 THEN '707' 
199298                 
199299                 ELSE null
199300               END                           source_application_id
199301             , 'S'             source_type_code
199302             , CASE r
199303                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
199304                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
199305                 
199306                 ELSE null
199307               END                           source_code
199308             , CASE r
199309                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
199310                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
199311                 
199312                 ELSE null
199313               END                           source_value
199314             , CASE r
199315                 WHEN 1 THEN fvl12.meaning
199316                 WHEN 2 THEN fvl38.meaning
199317                 
199318                 ELSE null
199319               END               source_meaning
199320         FROM xla_events_gt     xet  
199321       , CST_XLA_INV_HEADERS_V  h1
199322   , fnd_lookup_values    fvl12
199323   , fnd_lookup_values    fvl38
199324             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
199325        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
199326          AND xet.event_type_code = C_EVENT_TYPE_CODE
199327             AND h1.event_id = xet.event_id
199328    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
199329   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
199330   AND fvl12.view_application_id(+) = 700
199331   AND fvl12.language(+)            = USERENV('LANG')
199332      AND fvl38.lookup_type(+)         = 'YES_NO'
199333   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
199334   AND fvl38.view_application_id(+) = 0
199335   AND fvl38.language(+)            = USERENV('LANG')
199336   
199337 )
199338 ;
199339 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199340 
199341       trace
199342          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
199343          ,p_level    => C_LEVEL_STATEMENT
199344          ,p_module   => l_log_module);
199345 
199346 END IF;
199347 --
199348 
199349 
199350 
199351 --
199352 INSERT INTO xla_diag_sources --line1
199353 (
199354         event_id
199355       , ledger_id
199356       , sla_ledger_id
199357       , description_language
199358       , object_name
199359       , object_type_code
199360       , line_number
199361       , source_application_id
199362       , source_type_code
199363       , source_code
199364       , source_value
199365       , source_meaning
199366       , created_by
199367       , creation_date
199368       , last_update_date
199369       , last_updated_by
199370       , last_update_login
199371       , program_update_date
199372       , program_application_id
199373       , program_id
199374       , request_id
199375 )
199376 SELECT  event_id
199377       , p_target_ledger_id
199378       , p_sla_ledger_id
199379       , p_language
199380       , object_name
199381       , object_type_code
199382       , line_number
199383       , source_application_id
199384       , source_type_code
199385       , source_code
199386       , SUBSTR(source_value,1,1996)
199387       , SUBSTR(source_meaning,1,200)
199388       , xla_environment_pkg.g_Usr_Id
199389       , TRUNC(SYSDATE)
199390       , TRUNC(SYSDATE)
199391       , xla_environment_pkg.g_Usr_Id
199392       , xla_environment_pkg.g_Login_Id
199393       , TRUNC(SYSDATE)
199394       , xla_environment_pkg.g_Prog_Appl_Id
199395       , xla_environment_pkg.g_Prog_Id
199396       , xla_environment_pkg.g_Req_Id
199397   FROM (
199398        SELECT xet.event_id                  event_id
199399             , l2.line_number                 line_number
199400             , CASE r
199401                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
199402                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
199403                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
199404                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
199405                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
199406                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
199407                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
199408                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
199409                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
199410                 
199411                ELSE null
199412               END                           object_name
199413             , CASE r
199414                 WHEN 1 THEN 'LINE' 
199415                 WHEN 2 THEN 'LINE' 
199416                 WHEN 3 THEN 'LINE' 
199417                 WHEN 4 THEN 'LINE' 
199418                 WHEN 5 THEN 'LINE' 
199419                 WHEN 6 THEN 'LINE' 
199420                 WHEN 7 THEN 'LINE' 
199421                 WHEN 8 THEN 'LINE' 
199422                 WHEN 9 THEN 'LINE' 
199423                 
199424                 ELSE null
199425               END                           object_type_code
199426             , CASE r
199427                 WHEN 1 THEN '707' 
199428                 WHEN 2 THEN '707' 
199429                 WHEN 3 THEN '707' 
199430                 WHEN 4 THEN '707' 
199431                 WHEN 5 THEN '707' 
199432                 WHEN 6 THEN '707' 
199433                 WHEN 7 THEN '707' 
199434                 WHEN 8 THEN '707' 
199435                 WHEN 9 THEN '707' 
199436                 
199437                 ELSE null
199438               END                           source_application_id
199439             , 'S'             source_type_code
199440             , CASE r
199441                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
199442                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
199443                 WHEN 3 THEN 'CURRENCY_CODE' 
199444                 WHEN 4 THEN 'ENTERED_AMOUNT' 
199445                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
199446                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
199447                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
199448                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
199449                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
199450                 
199451                 ELSE null
199452               END                           source_code
199453             , CASE r
199454                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
199455                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
199456                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
199457                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
199458                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
199459                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
199460                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
199461                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
199462                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
199463                 
199464                 ELSE null
199465               END                           source_value
199466             , null              source_meaning
199467          FROM  xla_events_gt     xet  
199468         , CST_XLA_INV_LINES_V  l2
199469             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
199470         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
199471           AND xet.event_type_code = C_EVENT_TYPE_CODE
199472             AND l2.event_id          = xet.event_id
199473 
199474 )
199475 ;
199476 --
199477 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199478 
199479       trace
199480          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
199481          ,p_level    => C_LEVEL_STATEMENT
199482          ,p_module   => l_log_module);
199483 
199484 END IF;
199485 
199486 
199487 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
199488       trace
199489          (p_msg      => 'END of insert_sources_301'
199490          ,p_level    => C_LEVEL_PROCEDURE
199491          ,p_module   => l_log_module);
199492 END IF;
199493 EXCEPTION
199494   WHEN xla_exceptions_pkg.application_exception THEN
199495       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
199496             trace
199497                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
199498                ,p_level    => C_LEVEL_EXCEPTION
199499                ,p_module   => l_log_module);
199500       END IF;
199501       RAISE;
199502   WHEN OTHERS THEN
199503       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
199504             trace
199505                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
199506                ,p_level    => C_LEVEL_EXCEPTION
199507                ,p_module   => l_log_module);
199508        END IF;
199509        xla_exceptions_pkg.raise_message
199510            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_301');
199511 END insert_sources_301;
199512 --
199513 
199514 ---------------------------------------
199515 --
199516 -- PRIVATE FUNCTION
199517 --         EventType_301
199518 --
199519 ----------------------------------------
199520 --
199521 FUNCTION EventType_301
199522        (p_application_id         IN NUMBER
199523        ,p_base_ledger_id         IN NUMBER
199524        ,p_target_ledger_id       IN NUMBER
199525        ,p_language               IN VARCHAR2
199526        ,p_currency_code          IN VARCHAR2
199527        ,p_sla_ledger_id          IN NUMBER
199528        ,p_pad_start_date         IN DATE
199529        ,p_pad_end_date           IN DATE
199530        ,p_primary_ledger_id      IN NUMBER)
199531 RETURN BOOLEAN IS
199532 --
199533 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UMISC_ISSUE';
199534 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
199535 
199536 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
199537 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
199538 --
199539 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
199540 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
199541 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
199542 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
199543 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
199544 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
199545 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
199546 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
199547 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
199548 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
199549 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
199550 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
199551 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
199552 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
199553 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
199554 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
199555 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
199556 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
199557 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
199558 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
199559 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
199560 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
199561 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
199562 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
199563 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
199564 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
199565 
199566 l_event_id                             NUMBER;
199567 l_previous_event_id                    NUMBER;
199568 l_first_event_id                       NUMBER;
199569 l_last_event_id                        NUMBER;
199570 
199571 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
199572 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
199573 --
199574 --
199575 l_result                    BOOLEAN := TRUE;
199576 l_rows                      NUMBER  := 1000;
199577 l_event_type_name           VARCHAR2(80) := 'User-defined Issue';
199578 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
199579 l_description               VARCHAR2(4000);
199580 l_transaction_reversal      NUMBER;
199581 l_ae_header_id              NUMBER;
199582 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
199583 l_log_module                VARCHAR2(240);
199584 --
199585 l_acct_reversal_source      VARCHAR2(30);
199586 l_trx_reversal_source       VARCHAR2(30);
199587 
199588 l_continue_with_lines       BOOLEAN := TRUE;
199589 --
199590 l_acc_rev_gl_date_source    DATE;                      -- 4262811
199591 --
199592 type t_array_event_id is table of number index by binary_integer;
199593 
199594 l_rec_array_event                    t_rec_array_event;
199595 l_null_rec_array_event               t_rec_array_event;
199596 l_array_ae_header_id                 xla_number_array_type;
199597 l_actual_flag                        VARCHAR2(1) := NULL;
199598 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
199599 l_balance_type_code                  VARCHAR2(1) :=NULL;
199600 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
199601 
199602 --
199603 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
199604 --
199605 
199606 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
199607 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
199608 
199609 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
199610 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
199611 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
199612 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
199613 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
199614 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
199615 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
199616 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
199617 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
199618 
199619 l_array_source_12              t_array_source_12;
199620 l_array_source_12_meaning      t_array_lookup_meaning;
199621 l_array_source_38              t_array_source_38;
199622 l_array_source_38_meaning      t_array_lookup_meaning;
199623 
199624 l_array_source_4      t_array_source_4;
199625 l_array_source_11      t_array_source_11;
199626 l_array_source_15      t_array_source_15;
199627 l_array_source_18      t_array_source_18;
199628 l_array_source_19      t_array_source_19;
199629 l_array_source_20      t_array_source_20;
199630 l_array_source_21      t_array_source_21;
199631 l_array_source_22      t_array_source_22;
199632 l_array_source_24      t_array_source_24;
199633 
199634 --
199635 CURSOR header_cur
199636 IS
199637 SELECT /*+ leading(xet) cardinality(xet,1) */
199638 -- Event Type Code: UMISC_ISSUE
199639 -- Event Class Code: USER_DEFINE
199640     xet.entity_id
199641   , xet.legal_entity_id
199642   , xet.entity_code
199643   , xet.transaction_number
199644   , xet.event_id
199645   , xet.event_class_code
199646   , xet.event_type_code
199647   , xet.event_number
199648   , xet.event_date
199649   , xet.transaction_date
199650   , xet.reference_num_1
199651   , xet.reference_num_2
199652   , xet.reference_num_3
199653   , xet.reference_num_4
199654   , xet.reference_char_1
199655   , xet.reference_char_2
199656   , xet.reference_char_3
199657   , xet.reference_char_4
199658   , xet.reference_date_1
199659   , xet.reference_date_2
199660   , xet.reference_date_3
199661   , xet.reference_date_4
199662   , xet.event_created_by
199663   , xet.budgetary_control_flag 
199664   , h1.DISTRIBUTION_TYPE    source_12
199665   , fvl12.meaning   source_12_meaning
199666   , h1.TRANSFER_TO_GL_INDICATOR    source_38
199667   , fvl38.meaning   source_38_meaning
199668   FROM xla_events_gt     xet 
199669   , CST_XLA_INV_HEADERS_V  h1
199670   , fnd_lookup_values    fvl12
199671   , fnd_lookup_values    fvl38
199672  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
199673    and xet.event_type_code = C_EVENT_TYPE_CODE
199674    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
199675    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
199676   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
199677   AND fvl12.view_application_id(+) = 700
199678   AND fvl12.language(+)            = USERENV('LANG')
199679      AND fvl38.lookup_type(+)         = 'YES_NO'
199680   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
199681   AND fvl38.view_application_id(+) = 0
199682   AND fvl38.language(+)            = USERENV('LANG')
199683   
199684  ORDER BY event_id
199685 ;
199686 
199687 
199688 --
199689 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
199690 IS
199691 SELECT /*+ leading(xet) cardinality(xet,1) */
199692 -- Event Type Code: UMISC_ISSUE
199693 -- Event Class Code: USER_DEFINE
199694     xet.entity_id
199695    ,xet.legal_entity_id
199696    ,xet.entity_code
199697    ,xet.transaction_number
199698    ,xet.event_id
199699    ,xet.event_class_code
199700    ,xet.event_type_code
199701    ,xet.event_number
199702    ,xet.event_date
199703    ,xet.transaction_date
199704    ,xet.reference_num_1
199705    ,xet.reference_num_2
199706    ,xet.reference_num_3
199707    ,xet.reference_num_4
199708    ,xet.reference_char_1
199709    ,xet.reference_char_2
199710    ,xet.reference_char_3
199711    ,xet.reference_char_4
199712    ,xet.reference_date_1
199713    ,xet.reference_date_2
199714    ,xet.reference_date_3
199715    ,xet.reference_date_4
199716    ,xet.event_created_by
199717    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
199718   , l2.CODE_COMBINATION_ID    source_4
199719   , l2.DISTRIBUTION_IDENTIFIER    source_11
199720   , l2.CURRENCY_CODE    source_15
199721   , l2.ENTERED_AMOUNT    source_18
199722   , l2.CURRENCY_CONVERSION_DATE    source_19
199723   , l2.CURRENCY_CONVERSION_RATE    source_20
199724   , l2.CURRENCY_CONVERSION_TYPE    source_21
199725   , l2.ACCOUNTED_AMOUNT    source_22
199726   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
199727   FROM xla_events_gt     xet 
199728   , CST_XLA_INV_LINES_V  l2
199729  WHERE xet.event_id between x_first_event_id and x_last_event_id
199730    and xet.event_date between p_pad_start_date and p_pad_end_date
199731    and xet.event_type_code = C_EVENT_TYPE_CODE
199732    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
199733 ;
199734 
199735 --
199736 BEGIN
199737 IF g_log_enabled THEN
199738    l_log_module := C_DEFAULT_MODULE||'.EventType_301';
199739 END IF;
199740 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
199741    trace
199742       (p_msg      => 'BEGIN of EventType_301'
199743       ,p_level    => C_LEVEL_PROCEDURE
199744       ,p_module   => l_log_module);
199745 END IF;
199746 
199747 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199748    trace
199749       (p_msg      => 'p_application_id = '||p_application_id||
199750                      ' - p_base_ledger_id = '||p_base_ledger_id||
199751                      ' - p_target_ledger_id  = '||p_target_ledger_id||
199752                      ' - p_language = '||p_language||
199753                      ' - p_currency_code = '||p_currency_code||
199754                      ' - p_sla_ledger_id = '||p_sla_ledger_id
199755       ,p_level    => C_LEVEL_STATEMENT
199756       ,p_module   => l_log_module);
199757 END IF;
199758 --
199759 -- initialze arrays
199760 --
199761 g_array_event.DELETE;
199762 l_rec_array_event := l_null_rec_array_event;
199763 --
199764 --------------------------------------
199765 -- 4262811 Initialze MPA Line Number
199766 --------------------------------------
199767 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
199768 
199769 --
199770 
199771 --
199772 OPEN header_cur;
199773 --
199774 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199775    trace
199776    (p_msg      => 'SQL - FETCH header_cur'
199777    ,p_level    => C_LEVEL_STATEMENT
199778    ,p_module   => l_log_module);
199779 END IF;
199780 --
199781 LOOP
199782 FETCH header_cur BULK COLLECT INTO
199783         l_array_entity_id
199784       , l_array_legal_entity_id
199785       , l_array_entity_code
199786       , l_array_transaction_num
199787       , l_array_event_id
199788       , l_array_class_code
199789       , l_array_event_type
199790       , l_array_event_number
199791       , l_array_event_date
199792       , l_array_transaction_date
199793       , l_array_reference_num_1
199794       , l_array_reference_num_2
199795       , l_array_reference_num_3
199796       , l_array_reference_num_4
199797       , l_array_reference_char_1
199798       , l_array_reference_char_2
199799       , l_array_reference_char_3
199800       , l_array_reference_char_4
199801       , l_array_reference_date_1
199802       , l_array_reference_date_2
199803       , l_array_reference_date_3
199804       , l_array_reference_date_4
199805       , l_array_event_created_by
199806       , l_array_budgetary_control_flag 
199807       , l_array_source_12
199808       , l_array_source_12_meaning
199809       , l_array_source_38
199810       , l_array_source_38_meaning
199811       LIMIT l_rows;
199812 --
199813 IF (C_LEVEL_EVENT >= g_log_level) THEN
199814    trace
199815    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
199816    ,p_level    => C_LEVEL_EVENT
199817    ,p_module   => l_log_module);
199818 END IF;
199819 --
199820 EXIT WHEN l_array_entity_id.COUNT = 0;
199821 
199822 -- initialize arrays
199823 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
199824 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
199825 
199826 --
199827 -- Bug 4458708
199828 --
199829 XLA_AE_LINES_PKG.g_LineNumber := 0;
199830 
199831 
199832 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
199833 g_last_hdr_idx := l_array_event_id.LAST;
199834 --
199835 -- loop for the headers. Each iteration is for each header extract row
199836 -- fetched in header cursor
199837 --
199838 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
199839 
199840 --
199841 -- set event info as cache for other routines to refer event attributes
199842 --
199843 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
199844    (p_application_id           => p_application_id
199845    ,p_primary_ledger_id        => p_primary_ledger_id
199846    ,p_base_ledger_id           => p_base_ledger_id
199847    ,p_target_ledger_id         => p_target_ledger_id
199848    ,p_entity_id                => l_array_entity_id(hdr_idx)
199849    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
199850    ,p_entity_code              => l_array_entity_code(hdr_idx)
199851    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
199852    ,p_event_id                 => l_array_event_id(hdr_idx)
199853    ,p_event_class_code         => l_array_class_code(hdr_idx)
199854    ,p_event_type_code          => l_array_event_type(hdr_idx)
199855    ,p_event_number             => l_array_event_number(hdr_idx)
199856    ,p_event_date               => l_array_event_date(hdr_idx)
199857    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
199858    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
199859    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
199860    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
199861    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
199862    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
199863    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
199864    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
199865    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
199866    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
199867    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
199868    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
199869    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
199870    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
199871    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
199872 
199873 --
199874 -- set the status of entry to C_VALID (0)
199875 --
199876 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
199877 
199878 --
199879 -- initialize a row for ae header
199880 --
199881 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
199882 
199883 l_event_id := l_array_event_id(hdr_idx);
199884 
199885 --
199886 -- storing the hdr_idx for event. May be used by line cursor.
199887 --
199888 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
199889 
199890 --
199891 -- store sources from header extract. This can be improved to
199892 -- store only those sources from header extract that may be used in lines
199893 --
199894 
199895 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
199896 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
199897 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
199898 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
199899 
199900 --
199901 -- initilaize the status of ae headers for diffrent balance types
199902 -- the status is initialised to C_NOT_CREATED (2)
199903 --
199904 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
199905 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
199906 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
199907 
199908 --
199909 -- call api to validate and store accounting attributes for header
199910 --
199911 
199912 ------------------------------------------------------------
199913 -- Accrual Reversal : to get date for Standard Source (NONE)
199914 ------------------------------------------------------------
199915 l_acc_rev_gl_date_source := NULL;
199916 
199917      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
199918       l_rec_acct_attrs.array_date_value(1) := 
199919 xla_ae_sources_pkg.GetSystemSourceDate(
199920    p_source_code           => 'XLA_REFERENCE_DATE_1'
199921  , p_source_type_code      => 'Y'
199922  , p_source_application_id =>  602
199923 );
199924      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
199925       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
199926 
199927 
199928 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
199929 
199930 XLA_AE_HEADER_PKG.SetJeCategoryName;
199931 
199932 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
199933 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
199934 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
199935 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
199936 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
199937 
199938 
199939 -- No header level analytical criteria
199940 
199941 --
199942 --accounting attribute enhancement, bug 3612931
199943 --
199944 l_trx_reversal_source := SUBSTR(NULL, 1,30);
199945 
199946 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
199947    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
199948 
199949    xla_accounting_err_pkg.build_message
199950       (p_appli_s_name            => 'XLA'
199951       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
199952       ,p_token_1                 => 'ACCT_ATTR_NAME'
199953       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
199954       ,p_token_2                 => 'PRODUCT_NAME'
199955       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
199956       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
199957       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
199958       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
199959 
199960 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
199961    --
199962    -- following sets the accounting attributes needed to reverse
199963    -- accounting for a distributeion
199964    --
199965    xla_ae_lines_pkg.SetTrxReversalAttrs
199966       (p_event_id              => l_event_id
199967       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
199968       ,p_trx_reversal_source   => l_trx_reversal_source);
199969 
199970 END IF;
199971 
199972 
199973 ----------------------------------------------------------------
199974 -- 4262811 -  update the header statuses to invalid in need be
199975 ----------------------------------------------------------------
199976 --
199977 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
199978 
199979 
199980   -----------------------------------------------
199981   -- No accrual reversal for the event class/type
199982   -----------------------------------------------
199983 ----------------------------------------------------------------
199984 
199985 --
199986 -- this ends the header loop iteration for one bulk fetch
199987 --
199988 END LOOP;
199989 
199990 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
199991 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
199992 
199993 --
199994 -- insert dummy rows into lines gt table that were created due to
199995 -- transaction reversals
199996 --
199997 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
199998    l_result := XLA_AE_LINES_PKG.InsertLines;
199999 END IF;
200000 
200001 --
200002 -- reset the temp_line_num for each set of events fetched from header
200003 -- cursor rather than doing it for each new event in line cursor
200004 -- Bug 3939231
200005 --
200006 xla_ae_lines_pkg.g_temp_line_num := 0;
200007 
200008 
200009 
200010 --
200011 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
200012 --
200013 --
200014 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200015 
200016       trace
200017          (p_msg      => 'SQL - FETCH line_cur'
200018          ,p_level    => C_LEVEL_STATEMENT
200019          ,p_module   => l_log_module);
200020 
200021 END IF;
200022 --
200023 --
200024 LOOP
200025   --
200026   FETCH line_cur BULK COLLECT INTO
200027         l_array_entity_id
200028       , l_array_legal_entity_id
200029       , l_array_entity_code
200030       , l_array_transaction_num
200031       , l_array_event_id
200032       , l_array_class_code
200033       , l_array_event_type
200034       , l_array_event_number
200035       , l_array_event_date
200036       , l_array_transaction_date
200037       , l_array_reference_num_1
200038       , l_array_reference_num_2
200039       , l_array_reference_num_3
200040       , l_array_reference_num_4
200041       , l_array_reference_char_1
200042       , l_array_reference_char_2
200043       , l_array_reference_char_3
200044       , l_array_reference_char_4
200045       , l_array_reference_date_1
200046       , l_array_reference_date_2
200047       , l_array_reference_date_3
200048       , l_array_reference_date_4
200049       , l_array_event_created_by
200050       , l_array_budgetary_control_flag
200051       , l_array_extract_line_num 
200052       , l_array_source_4
200053       , l_array_source_11
200054       , l_array_source_15
200055       , l_array_source_18
200056       , l_array_source_19
200057       , l_array_source_20
200058       , l_array_source_21
200059       , l_array_source_22
200060       , l_array_source_24
200061       LIMIT l_rows;
200062 
200063   --
200064   IF (C_LEVEL_EVENT >= g_log_level) THEN
200065             trace
200066                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
200067                ,p_level    => C_LEVEL_EVENT
200068                ,p_module   => l_log_module);
200069   END IF;
200070   --
200071   EXIT WHEN l_array_entity_id.count = 0;
200072 
200073   XLA_AE_LINES_PKG.g_rec_lines := null;
200074 
200075 --
200076 -- Bug 4458708
200077 --
200078 XLA_AE_LINES_PKG.g_LineNumber := 0;
200079 --
200080 --
200081 
200082 FOR Idx IN 1..l_array_event_id.count LOOP
200083    --
200084    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
200085    --
200086    l_event_id := l_array_event_id(idx);  -- 5648433
200087 
200088    --
200089    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
200090    --
200091 
200092    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
200093              (g_array_event(l_event_id).array_value_num('header_index'))
200094          ,'N'
200095          ) <> 'Y'
200096    THEN
200097       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200098          trace
200099             (p_msg      => 'Trancaction revesal option is not Y '
200100             ,p_level    => C_LEVEL_STATEMENT
200101             ,p_module   => l_log_module);
200102       END IF;
200103 
200104 --
200105 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
200106 --
200107 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
200108 --
200109 -- set event info as cache for other routines to refer event attributes
200110 --
200111 
200112 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
200113    l_previous_event_id := l_event_id;
200114 
200115    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
200116       (p_application_id           => p_application_id
200117       ,p_primary_ledger_id        => p_primary_ledger_id
200118       ,p_base_ledger_id           => p_base_ledger_id
200119       ,p_target_ledger_id         => p_target_ledger_id
200120       ,p_entity_id                => l_array_entity_id(Idx)
200121       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
200122       ,p_entity_code              => l_array_entity_code(Idx)
200123       ,p_transaction_num          => l_array_transaction_num(Idx)
200124       ,p_event_id                 => l_array_event_id(Idx)
200125       ,p_event_class_code         => l_array_class_code(Idx)
200126       ,p_event_type_code          => l_array_event_type(Idx)
200127       ,p_event_number             => l_array_event_number(Idx)
200128       ,p_event_date               => l_array_event_date(Idx)
200129       ,p_transaction_date         => l_array_transaction_date(Idx)
200130       ,p_reference_num_1          => l_array_reference_num_1(Idx)
200131       ,p_reference_num_2          => l_array_reference_num_2(Idx)
200132       ,p_reference_num_3          => l_array_reference_num_3(Idx)
200133       ,p_reference_num_4          => l_array_reference_num_4(Idx)
200134       ,p_reference_char_1         => l_array_reference_char_1(Idx)
200135       ,p_reference_char_2         => l_array_reference_char_2(Idx)
200136       ,p_reference_char_3         => l_array_reference_char_3(Idx)
200137       ,p_reference_char_4         => l_array_reference_char_4(Idx)
200138       ,p_reference_date_1         => l_array_reference_date_1(Idx)
200139       ,p_reference_date_2         => l_array_reference_date_2(Idx)
200140       ,p_reference_date_3         => l_array_reference_date_3(Idx)
200141       ,p_reference_date_4         => l_array_reference_date_4(Idx)
200142       ,p_event_created_by         => l_array_event_created_by(Idx)
200143       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
200144        --
200145 END IF;
200146 
200147 
200148 
200149 --
200150 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
200151 
200152 l_acct_reversal_source := SUBSTR(NULL, 1,30);
200153 
200154 IF l_continue_with_lines THEN
200155    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
200156       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
200157 
200158       xla_accounting_err_pkg.build_message
200159          (p_appli_s_name            => 'XLA'
200160          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
200161          ,p_token_1                 => 'LINE_NUMBER'
200162          ,p_value_1                 => l_array_extract_line_num(Idx)
200163          ,p_token_2                 => 'PRODUCT_NAME'
200164          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
200165          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
200166          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
200167          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
200168 
200169    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
200170       --
200171       -- following sets the accounting attributes needed to reverse
200172       -- accounting for a distributeion
200173       --
200174 
200175       --
200176       -- 5217187
200177       --
200178       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
200179       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
200180                                        g_array_event(l_event_id).array_value_num('header_index'));
200181       --
200182       --
200183 
200184       -- No reversal code generated
200185 
200186       xla_ae_lines_pkg.SetAcctReversalAttrs
200187          (p_event_id             => l_event_id
200188          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
200189          ,p_calculate_acctd_flag => l_calculate_acctd_flag
200190          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
200191    END IF;
200192 
200193    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
200194        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
200195 
200196 --
200197 AcctLineType_28 (
200198  p_application_id  => p_application_id
200199  ,p_event_id     => l_event_id
200200  ,p_calculate_acctd_flag => l_calculate_acctd_flag
200201  ,p_calculate_g_l_flag => l_calculate_g_l_flag
200202  ,p_actual_flag => l_actual_flag
200203  ,p_balance_type_code => l_balance_type_code
200204  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
200205  
200206  , p_source_4 => l_array_source_4(Idx)
200207  , p_source_11 => l_array_source_11(Idx)
200208  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
200209  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
200210  , p_source_15 => l_array_source_15(Idx)
200211  , p_source_18 => l_array_source_18(Idx)
200212  , p_source_19 => l_array_source_19(Idx)
200213  , p_source_20 => l_array_source_20(Idx)
200214  , p_source_21 => l_array_source_21(Idx)
200215  , p_source_22 => l_array_source_22(Idx)
200216  , p_source_24 => l_array_source_24(Idx)
200217  );
200218 If(l_balance_type_code = 'A') THEN
200219   l_actual_gain_loss_ref := l_gain_or_loss_ref;
200220 END IF;
200221 
200222 --
200223 
200224 
200225 --
200226 AcctLineType_146 (
200227  p_application_id  => p_application_id
200228  ,p_event_id     => l_event_id
200229  ,p_calculate_acctd_flag => l_calculate_acctd_flag
200230  ,p_calculate_g_l_flag => l_calculate_g_l_flag
200231  ,p_actual_flag => l_actual_flag
200232  ,p_balance_type_code => l_balance_type_code
200233  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
200234  
200235  , p_source_4 => l_array_source_4(Idx)
200236  , p_source_11 => l_array_source_11(Idx)
200237  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
200238  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
200239  , p_source_15 => l_array_source_15(Idx)
200240  , p_source_18 => l_array_source_18(Idx)
200241  , p_source_19 => l_array_source_19(Idx)
200242  , p_source_20 => l_array_source_20(Idx)
200243  , p_source_21 => l_array_source_21(Idx)
200244  , p_source_22 => l_array_source_22(Idx)
200245  , p_source_24 => l_array_source_24(Idx)
200246  );
200247 If(l_balance_type_code = 'A') THEN
200248   l_actual_gain_loss_ref := l_gain_or_loss_ref;
200249 END IF;
200250 
200251 --
200252 
200253 
200254 --
200255 AcctLineType_180 (
200256  p_application_id  => p_application_id
200257  ,p_event_id     => l_event_id
200258  ,p_calculate_acctd_flag => l_calculate_acctd_flag
200259  ,p_calculate_g_l_flag => l_calculate_g_l_flag
200260  ,p_actual_flag => l_actual_flag
200261  ,p_balance_type_code => l_balance_type_code
200262  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
200263  
200264  , p_source_4 => l_array_source_4(Idx)
200265  , p_source_11 => l_array_source_11(Idx)
200266  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
200267  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
200268  , p_source_15 => l_array_source_15(Idx)
200269  , p_source_18 => l_array_source_18(Idx)
200270  , p_source_19 => l_array_source_19(Idx)
200271  , p_source_20 => l_array_source_20(Idx)
200272  , p_source_21 => l_array_source_21(Idx)
200273  , p_source_22 => l_array_source_22(Idx)
200274  , p_source_24 => l_array_source_24(Idx)
200275  );
200276 If(l_balance_type_code = 'A') THEN
200277   l_actual_gain_loss_ref := l_gain_or_loss_ref;
200278 END IF;
200279 
200280 --
200281 
200282       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
200283       -- or secondary ledger that has different currency with primary
200284       -- or alc that is calculated by sla
200285       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
200286             (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'))
200287 
200288 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
200289 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
200290           AND (l_actual_flag = 'A')) THEN
200291         XLA_AE_LINES_PKG.CreateGainOrLossLines(
200292           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
200293          ,p_application_id   => p_application_id
200294          ,p_amb_context_code => 'DEFAULT'
200295          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
200296          ,p_event_class_code => C_EVENT_CLASS_CODE
200297          ,p_event_type_code  => C_EVENT_TYPE_CODE
200298          
200299          ,p_gain_ccid        => -1
200300          ,p_loss_ccid        => -1
200301 
200302          ,p_actual_flag      => l_actual_flag
200303          ,p_enc_flag         => null
200304          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
200305          ,p_enc_g_l_ref      => null
200306          );
200307       END IF;
200308    END IF;
200309 END IF;
200310 
200311    ELSE
200312       --
200313       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
200314       --
200315       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200316          trace
200317             (p_msg      => 'Trancaction revesal option is Y'
200318             ,p_level    => C_LEVEL_STATEMENT
200319             ,p_module   => l_log_module);
200320       END IF;
200321    END IF;
200322 
200323 END LOOP;
200324 l_result := XLA_AE_LINES_PKG.InsertLines ;
200325 end loop;
200326 close line_cur;
200327 
200328 
200329 --
200330 -- insert headers into xla_ae_headers_gt table
200331 --
200332 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
200333 
200334 -- insert into errors table here.
200335 
200336 END LOOP;
200337 
200338 --
200339 -- 4865292
200340 --
200341 -- Compare g_hdr_extract_count with event count in
200342 -- CreateHeadersAndLines.
200343 --
200344 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
200345 
200346 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200347    trace (p_msg     => '# rows extracted from header extract objects '
200348                     || ' (running total): '
200349                     || g_hdr_extract_count
200350          ,p_level   => C_LEVEL_STATEMENT
200351          ,p_module  => l_log_module);
200352 END IF;
200353 
200354 CLOSE header_cur;
200355 --
200356 
200357 --
200358 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
200359    trace
200360       (p_msg      => 'END of EventType_301'
200361       ,p_level    => C_LEVEL_PROCEDURE
200362       ,p_module   => l_log_module);
200363 END IF;
200364 --
200365 RETURN l_result;
200366 EXCEPTION
200367 WHEN xla_exceptions_pkg.application_exception THEN
200368    
200369 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
200370 
200371    
200372 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
200373 
200374    RAISE;
200375 
200376 WHEN NO_DATA_FOUND THEN
200377 
200378 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
200379 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
200380 
200381 FOR header_record IN header_cur
200382 LOOP
200383     l_array_header_events(header_record.event_id) := header_record.event_id;
200384 END LOOP;
200385 
200386 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
200387 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
200388 
200389 fnd_file.put_line(fnd_file.LOG, '                    ');
200390 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
200391 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
200392 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
200393 
200394 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
200395 LOOP
200396 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
200397 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
200398         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
200399 	END IF;
200400 END LOOP;
200401 
200402 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
200403 fnd_file.put_line(fnd_file.LOG, '                    ');
200404 
200405 
200406 xla_exceptions_pkg.raise_message
200407       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_301');
200408 
200409 
200410 WHEN OTHERS THEN
200411    xla_exceptions_pkg.raise_message
200412       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_301');
200413 END EventType_301;
200414 --
200415 
200416 ---------------------------------------
200417 --
200418 -- PRIVATE PROCEDURE
200419 --         insert_sources_302
200420 --
200421 ----------------------------------------
200422 --
200423 PROCEDURE insert_sources_302(
200424                                 p_target_ledger_id       IN NUMBER
200425                               , p_language               IN VARCHAR2
200426                               , p_sla_ledger_id          IN NUMBER
200427                               , p_pad_start_date         IN DATE
200428                               , p_pad_end_date           IN DATE
200429                          )
200430 IS
200431 
200432 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UMISC_RCPT';
200433 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
200434 p_apps_owner                   VARCHAR2(30);
200435 l_log_module                   VARCHAR2(240);
200436 BEGIN
200437 IF g_log_enabled THEN
200438       l_log_module := C_DEFAULT_MODULE||'.insert_sources_302';
200439 END IF;
200440 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
200441 
200442       trace
200443          (p_msg      => 'BEGIN of insert_sources_302'
200444          ,p_level    => C_LEVEL_PROCEDURE
200445          ,p_module   => l_log_module);
200446 
200447 END IF;
200448 
200449 -- select APPS owner
200450 SELECT oracle_username
200451   INTO p_apps_owner
200452   FROM fnd_oracle_userid
200453  WHERE read_only_flag = 'U'
200454 ;
200455 
200456 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200457       trace
200458          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
200459                         ' - p_language = '||p_language||
200460                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
200461                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
200462                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
200463                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
200464          ,p_level    => C_LEVEL_STATEMENT
200465          ,p_module   => l_log_module);
200466 END IF;
200467 
200468 
200469 --
200470 INSERT INTO xla_diag_sources --hdr1
200471 (
200472         event_id
200473       , ledger_id
200474       , sla_ledger_id
200475       , description_language
200476       , object_name
200477       , object_type_code
200478       , line_number
200479       , source_application_id
200480       , source_type_code
200481       , source_code
200482       , source_value
200483       , source_meaning
200484       , created_by
200485       , creation_date
200486       , last_update_date
200487       , last_updated_by
200488       , last_update_login
200489       , program_update_date
200490       , program_application_id
200491       , program_id
200492       , request_id
200493 )
200494 SELECT
200495         event_id
200496       , p_target_ledger_id
200497       , p_sla_ledger_id
200498       , p_language
200499       , object_name
200500       , object_type_code
200501       , line_number
200502       , source_application_id
200503       , source_type_code
200504       , source_code
200505       , SUBSTR(source_value ,1,1996)
200506       , SUBSTR(source_meaning,1,200)
200507       , xla_environment_pkg.g_Usr_Id
200508       , TRUNC(SYSDATE)
200509       , TRUNC(SYSDATE)
200510       , xla_environment_pkg.g_Usr_Id
200511       , xla_environment_pkg.g_Login_Id
200512       , TRUNC(SYSDATE)
200513       , xla_environment_pkg.g_Prog_Appl_Id
200514       , xla_environment_pkg.g_Prog_Id
200515       , xla_environment_pkg.g_Req_Id
200516   FROM (
200517        SELECT xet.event_id                  event_id
200518             , 0                             line_number
200519             , CASE r
200520                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
200521                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
200522                 
200523                ELSE null
200524               END                           object_name
200525             , CASE r
200526                 WHEN 1 THEN 'HEADER' 
200527                 WHEN 2 THEN 'HEADER' 
200528                 
200529                 ELSE null
200530               END                           object_type_code
200531             , CASE r
200532                 WHEN 1 THEN '707' 
200533                 WHEN 2 THEN '707' 
200534                 
200535                 ELSE null
200536               END                           source_application_id
200537             , 'S'             source_type_code
200538             , CASE r
200539                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
200540                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
200541                 
200542                 ELSE null
200543               END                           source_code
200544             , CASE r
200545                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
200546                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
200547                 
200548                 ELSE null
200549               END                           source_value
200550             , CASE r
200551                 WHEN 1 THEN fvl12.meaning
200552                 WHEN 2 THEN fvl38.meaning
200553                 
200554                 ELSE null
200555               END               source_meaning
200556         FROM xla_events_gt     xet  
200557       , CST_XLA_INV_HEADERS_V  h1
200558   , fnd_lookup_values    fvl12
200559   , fnd_lookup_values    fvl38
200560             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
200561        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
200562          AND xet.event_type_code = C_EVENT_TYPE_CODE
200563             AND h1.event_id = xet.event_id
200564    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
200565   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
200566   AND fvl12.view_application_id(+) = 700
200567   AND fvl12.language(+)            = USERENV('LANG')
200568      AND fvl38.lookup_type(+)         = 'YES_NO'
200569   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
200570   AND fvl38.view_application_id(+) = 0
200571   AND fvl38.language(+)            = USERENV('LANG')
200572   
200573 )
200574 ;
200575 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200576 
200577       trace
200578          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
200579          ,p_level    => C_LEVEL_STATEMENT
200580          ,p_module   => l_log_module);
200581 
200582 END IF;
200583 --
200584 
200585 
200586 
200587 --
200588 INSERT INTO xla_diag_sources --line1
200589 (
200590         event_id
200591       , ledger_id
200592       , sla_ledger_id
200593       , description_language
200594       , object_name
200595       , object_type_code
200596       , line_number
200597       , source_application_id
200598       , source_type_code
200599       , source_code
200600       , source_value
200601       , source_meaning
200602       , created_by
200603       , creation_date
200604       , last_update_date
200605       , last_updated_by
200606       , last_update_login
200607       , program_update_date
200608       , program_application_id
200609       , program_id
200610       , request_id
200611 )
200612 SELECT  event_id
200613       , p_target_ledger_id
200614       , p_sla_ledger_id
200615       , p_language
200616       , object_name
200617       , object_type_code
200618       , line_number
200619       , source_application_id
200620       , source_type_code
200621       , source_code
200622       , SUBSTR(source_value,1,1996)
200623       , SUBSTR(source_meaning,1,200)
200624       , xla_environment_pkg.g_Usr_Id
200625       , TRUNC(SYSDATE)
200626       , TRUNC(SYSDATE)
200627       , xla_environment_pkg.g_Usr_Id
200628       , xla_environment_pkg.g_Login_Id
200629       , TRUNC(SYSDATE)
200630       , xla_environment_pkg.g_Prog_Appl_Id
200631       , xla_environment_pkg.g_Prog_Id
200632       , xla_environment_pkg.g_Req_Id
200633   FROM (
200634        SELECT xet.event_id                  event_id
200635             , l2.line_number                 line_number
200636             , CASE r
200637                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
200638                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
200639                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
200640                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
200641                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
200642                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
200643                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
200644                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
200645                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
200646                 
200647                ELSE null
200648               END                           object_name
200649             , CASE r
200650                 WHEN 1 THEN 'LINE' 
200651                 WHEN 2 THEN 'LINE' 
200652                 WHEN 3 THEN 'LINE' 
200653                 WHEN 4 THEN 'LINE' 
200654                 WHEN 5 THEN 'LINE' 
200655                 WHEN 6 THEN 'LINE' 
200656                 WHEN 7 THEN 'LINE' 
200657                 WHEN 8 THEN 'LINE' 
200658                 WHEN 9 THEN 'LINE' 
200659                 
200660                 ELSE null
200661               END                           object_type_code
200662             , CASE r
200663                 WHEN 1 THEN '707' 
200664                 WHEN 2 THEN '707' 
200665                 WHEN 3 THEN '707' 
200666                 WHEN 4 THEN '707' 
200667                 WHEN 5 THEN '707' 
200668                 WHEN 6 THEN '707' 
200669                 WHEN 7 THEN '707' 
200670                 WHEN 8 THEN '707' 
200671                 WHEN 9 THEN '707' 
200672                 
200673                 ELSE null
200674               END                           source_application_id
200675             , 'S'             source_type_code
200676             , CASE r
200677                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
200678                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
200679                 WHEN 3 THEN 'CURRENCY_CODE' 
200680                 WHEN 4 THEN 'ENTERED_AMOUNT' 
200681                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
200682                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
200683                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
200684                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
200685                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
200686                 
200687                 ELSE null
200688               END                           source_code
200689             , CASE r
200690                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
200691                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
200692                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
200693                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
200694                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
200695                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
200696                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
200697                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
200698                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
200699                 
200700                 ELSE null
200701               END                           source_value
200702             , null              source_meaning
200703          FROM  xla_events_gt     xet  
200704         , CST_XLA_INV_LINES_V  l2
200705             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
200706         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
200707           AND xet.event_type_code = C_EVENT_TYPE_CODE
200708             AND l2.event_id          = xet.event_id
200709 
200710 )
200711 ;
200712 --
200713 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200714 
200715       trace
200716          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
200717          ,p_level    => C_LEVEL_STATEMENT
200718          ,p_module   => l_log_module);
200719 
200720 END IF;
200721 
200722 
200723 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
200724       trace
200725          (p_msg      => 'END of insert_sources_302'
200726          ,p_level    => C_LEVEL_PROCEDURE
200727          ,p_module   => l_log_module);
200728 END IF;
200729 EXCEPTION
200730   WHEN xla_exceptions_pkg.application_exception THEN
200731       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
200732             trace
200733                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
200734                ,p_level    => C_LEVEL_EXCEPTION
200735                ,p_module   => l_log_module);
200736       END IF;
200737       RAISE;
200738   WHEN OTHERS THEN
200739       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
200740             trace
200741                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
200742                ,p_level    => C_LEVEL_EXCEPTION
200743                ,p_module   => l_log_module);
200744        END IF;
200745        xla_exceptions_pkg.raise_message
200746            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_302');
200747 END insert_sources_302;
200748 --
200749 
200750 ---------------------------------------
200751 --
200752 -- PRIVATE FUNCTION
200753 --         EventType_302
200754 --
200755 ----------------------------------------
200756 --
200757 FUNCTION EventType_302
200758        (p_application_id         IN NUMBER
200759        ,p_base_ledger_id         IN NUMBER
200760        ,p_target_ledger_id       IN NUMBER
200761        ,p_language               IN VARCHAR2
200762        ,p_currency_code          IN VARCHAR2
200763        ,p_sla_ledger_id          IN NUMBER
200764        ,p_pad_start_date         IN DATE
200765        ,p_pad_end_date           IN DATE
200766        ,p_primary_ledger_id      IN NUMBER)
200767 RETURN BOOLEAN IS
200768 --
200769 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UMISC_RCPT';
200770 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
200771 
200772 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
200773 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
200774 --
200775 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
200776 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
200777 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
200778 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
200779 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
200780 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
200781 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
200782 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
200783 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
200784 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
200785 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
200786 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
200787 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
200788 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
200789 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
200790 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
200791 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
200792 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
200793 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
200794 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
200795 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
200796 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
200797 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
200798 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
200799 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
200800 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
200801 
200802 l_event_id                             NUMBER;
200803 l_previous_event_id                    NUMBER;
200804 l_first_event_id                       NUMBER;
200805 l_last_event_id                        NUMBER;
200806 
200807 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
200808 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
200809 --
200810 --
200811 l_result                    BOOLEAN := TRUE;
200812 l_rows                      NUMBER  := 1000;
200813 l_event_type_name           VARCHAR2(80) := 'User-defined Receipt';
200814 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
200815 l_description               VARCHAR2(4000);
200816 l_transaction_reversal      NUMBER;
200817 l_ae_header_id              NUMBER;
200818 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
200819 l_log_module                VARCHAR2(240);
200820 --
200821 l_acct_reversal_source      VARCHAR2(30);
200822 l_trx_reversal_source       VARCHAR2(30);
200823 
200824 l_continue_with_lines       BOOLEAN := TRUE;
200825 --
200826 l_acc_rev_gl_date_source    DATE;                      -- 4262811
200827 --
200828 type t_array_event_id is table of number index by binary_integer;
200829 
200830 l_rec_array_event                    t_rec_array_event;
200831 l_null_rec_array_event               t_rec_array_event;
200832 l_array_ae_header_id                 xla_number_array_type;
200833 l_actual_flag                        VARCHAR2(1) := NULL;
200834 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
200835 l_balance_type_code                  VARCHAR2(1) :=NULL;
200836 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
200837 
200838 --
200839 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
200840 --
200841 
200842 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
200843 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
200844 
200845 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
200846 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
200847 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
200848 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
200849 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
200850 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
200851 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
200852 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
200853 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
200854 
200855 l_array_source_12              t_array_source_12;
200856 l_array_source_12_meaning      t_array_lookup_meaning;
200857 l_array_source_38              t_array_source_38;
200858 l_array_source_38_meaning      t_array_lookup_meaning;
200859 
200860 l_array_source_4      t_array_source_4;
200861 l_array_source_11      t_array_source_11;
200862 l_array_source_15      t_array_source_15;
200863 l_array_source_18      t_array_source_18;
200864 l_array_source_19      t_array_source_19;
200865 l_array_source_20      t_array_source_20;
200866 l_array_source_21      t_array_source_21;
200867 l_array_source_22      t_array_source_22;
200868 l_array_source_24      t_array_source_24;
200869 
200870 --
200871 CURSOR header_cur
200872 IS
200873 SELECT /*+ leading(xet) cardinality(xet,1) */
200874 -- Event Type Code: UMISC_RCPT
200875 -- Event Class Code: USER_DEFINE
200876     xet.entity_id
200877   , xet.legal_entity_id
200878   , xet.entity_code
200879   , xet.transaction_number
200880   , xet.event_id
200881   , xet.event_class_code
200882   , xet.event_type_code
200883   , xet.event_number
200884   , xet.event_date
200885   , xet.transaction_date
200886   , xet.reference_num_1
200887   , xet.reference_num_2
200888   , xet.reference_num_3
200889   , xet.reference_num_4
200890   , xet.reference_char_1
200891   , xet.reference_char_2
200892   , xet.reference_char_3
200893   , xet.reference_char_4
200894   , xet.reference_date_1
200895   , xet.reference_date_2
200896   , xet.reference_date_3
200897   , xet.reference_date_4
200898   , xet.event_created_by
200899   , xet.budgetary_control_flag 
200900   , h1.DISTRIBUTION_TYPE    source_12
200901   , fvl12.meaning   source_12_meaning
200902   , h1.TRANSFER_TO_GL_INDICATOR    source_38
200903   , fvl38.meaning   source_38_meaning
200904   FROM xla_events_gt     xet 
200905   , CST_XLA_INV_HEADERS_V  h1
200906   , fnd_lookup_values    fvl12
200907   , fnd_lookup_values    fvl38
200908  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
200909    and xet.event_type_code = C_EVENT_TYPE_CODE
200910    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
200911    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
200912   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
200913   AND fvl12.view_application_id(+) = 700
200914   AND fvl12.language(+)            = USERENV('LANG')
200915      AND fvl38.lookup_type(+)         = 'YES_NO'
200916   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
200917   AND fvl38.view_application_id(+) = 0
200918   AND fvl38.language(+)            = USERENV('LANG')
200919   
200920  ORDER BY event_id
200921 ;
200922 
200923 
200924 --
200925 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
200926 IS
200927 SELECT /*+ leading(xet) cardinality(xet,1) */
200928 -- Event Type Code: UMISC_RCPT
200929 -- Event Class Code: USER_DEFINE
200930     xet.entity_id
200931    ,xet.legal_entity_id
200932    ,xet.entity_code
200933    ,xet.transaction_number
200934    ,xet.event_id
200935    ,xet.event_class_code
200936    ,xet.event_type_code
200937    ,xet.event_number
200938    ,xet.event_date
200939    ,xet.transaction_date
200940    ,xet.reference_num_1
200941    ,xet.reference_num_2
200942    ,xet.reference_num_3
200943    ,xet.reference_num_4
200944    ,xet.reference_char_1
200945    ,xet.reference_char_2
200946    ,xet.reference_char_3
200947    ,xet.reference_char_4
200948    ,xet.reference_date_1
200949    ,xet.reference_date_2
200950    ,xet.reference_date_3
200951    ,xet.reference_date_4
200952    ,xet.event_created_by
200953    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
200954   , l2.CODE_COMBINATION_ID    source_4
200955   , l2.DISTRIBUTION_IDENTIFIER    source_11
200956   , l2.CURRENCY_CODE    source_15
200957   , l2.ENTERED_AMOUNT    source_18
200958   , l2.CURRENCY_CONVERSION_DATE    source_19
200959   , l2.CURRENCY_CONVERSION_RATE    source_20
200960   , l2.CURRENCY_CONVERSION_TYPE    source_21
200961   , l2.ACCOUNTED_AMOUNT    source_22
200962   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
200963   FROM xla_events_gt     xet 
200964   , CST_XLA_INV_LINES_V  l2
200965  WHERE xet.event_id between x_first_event_id and x_last_event_id
200966    and xet.event_date between p_pad_start_date and p_pad_end_date
200967    and xet.event_type_code = C_EVENT_TYPE_CODE
200968    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
200969 ;
200970 
200971 --
200972 BEGIN
200973 IF g_log_enabled THEN
200974    l_log_module := C_DEFAULT_MODULE||'.EventType_302';
200975 END IF;
200976 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
200977    trace
200978       (p_msg      => 'BEGIN of EventType_302'
200979       ,p_level    => C_LEVEL_PROCEDURE
200980       ,p_module   => l_log_module);
200981 END IF;
200982 
200983 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200984    trace
200985       (p_msg      => 'p_application_id = '||p_application_id||
200986                      ' - p_base_ledger_id = '||p_base_ledger_id||
200987                      ' - p_target_ledger_id  = '||p_target_ledger_id||
200988                      ' - p_language = '||p_language||
200989                      ' - p_currency_code = '||p_currency_code||
200990                      ' - p_sla_ledger_id = '||p_sla_ledger_id
200991       ,p_level    => C_LEVEL_STATEMENT
200992       ,p_module   => l_log_module);
200993 END IF;
200994 --
200995 -- initialze arrays
200996 --
200997 g_array_event.DELETE;
200998 l_rec_array_event := l_null_rec_array_event;
200999 --
201000 --------------------------------------
201001 -- 4262811 Initialze MPA Line Number
201002 --------------------------------------
201003 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
201004 
201005 --
201006 
201007 --
201008 OPEN header_cur;
201009 --
201010 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
201011    trace
201012    (p_msg      => 'SQL - FETCH header_cur'
201013    ,p_level    => C_LEVEL_STATEMENT
201014    ,p_module   => l_log_module);
201015 END IF;
201016 --
201017 LOOP
201018 FETCH header_cur BULK COLLECT INTO
201019         l_array_entity_id
201020       , l_array_legal_entity_id
201021       , l_array_entity_code
201022       , l_array_transaction_num
201023       , l_array_event_id
201024       , l_array_class_code
201025       , l_array_event_type
201026       , l_array_event_number
201027       , l_array_event_date
201028       , l_array_transaction_date
201029       , l_array_reference_num_1
201030       , l_array_reference_num_2
201031       , l_array_reference_num_3
201032       , l_array_reference_num_4
201033       , l_array_reference_char_1
201034       , l_array_reference_char_2
201035       , l_array_reference_char_3
201036       , l_array_reference_char_4
201037       , l_array_reference_date_1
201038       , l_array_reference_date_2
201039       , l_array_reference_date_3
201040       , l_array_reference_date_4
201041       , l_array_event_created_by
201042       , l_array_budgetary_control_flag 
201043       , l_array_source_12
201044       , l_array_source_12_meaning
201045       , l_array_source_38
201046       , l_array_source_38_meaning
201047       LIMIT l_rows;
201048 --
201049 IF (C_LEVEL_EVENT >= g_log_level) THEN
201050    trace
201051    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
201052    ,p_level    => C_LEVEL_EVENT
201053    ,p_module   => l_log_module);
201054 END IF;
201055 --
201056 EXIT WHEN l_array_entity_id.COUNT = 0;
201057 
201058 -- initialize arrays
201059 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
201060 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
201061 
201062 --
201063 -- Bug 4458708
201064 --
201065 XLA_AE_LINES_PKG.g_LineNumber := 0;
201066 
201067 
201068 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
201069 g_last_hdr_idx := l_array_event_id.LAST;
201070 --
201071 -- loop for the headers. Each iteration is for each header extract row
201072 -- fetched in header cursor
201073 --
201074 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
201075 
201076 --
201077 -- set event info as cache for other routines to refer event attributes
201078 --
201079 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
201080    (p_application_id           => p_application_id
201081    ,p_primary_ledger_id        => p_primary_ledger_id
201082    ,p_base_ledger_id           => p_base_ledger_id
201083    ,p_target_ledger_id         => p_target_ledger_id
201084    ,p_entity_id                => l_array_entity_id(hdr_idx)
201085    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
201086    ,p_entity_code              => l_array_entity_code(hdr_idx)
201087    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
201088    ,p_event_id                 => l_array_event_id(hdr_idx)
201089    ,p_event_class_code         => l_array_class_code(hdr_idx)
201090    ,p_event_type_code          => l_array_event_type(hdr_idx)
201091    ,p_event_number             => l_array_event_number(hdr_idx)
201092    ,p_event_date               => l_array_event_date(hdr_idx)
201093    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
201094    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
201095    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
201096    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
201097    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
201098    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
201099    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
201100    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
201101    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
201102    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
201103    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
201104    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
201105    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
201106    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
201107    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
201108 
201109 --
201110 -- set the status of entry to C_VALID (0)
201111 --
201112 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
201113 
201114 --
201115 -- initialize a row for ae header
201116 --
201117 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
201118 
201119 l_event_id := l_array_event_id(hdr_idx);
201120 
201121 --
201122 -- storing the hdr_idx for event. May be used by line cursor.
201123 --
201124 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
201125 
201126 --
201127 -- store sources from header extract. This can be improved to
201128 -- store only those sources from header extract that may be used in lines
201129 --
201130 
201131 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
201132 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
201133 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
201134 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
201135 
201136 --
201137 -- initilaize the status of ae headers for diffrent balance types
201138 -- the status is initialised to C_NOT_CREATED (2)
201139 --
201140 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
201141 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
201142 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
201143 
201144 --
201145 -- call api to validate and store accounting attributes for header
201146 --
201147 
201148 ------------------------------------------------------------
201149 -- Accrual Reversal : to get date for Standard Source (NONE)
201150 ------------------------------------------------------------
201151 l_acc_rev_gl_date_source := NULL;
201152 
201153      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
201154       l_rec_acct_attrs.array_date_value(1) := 
201155 xla_ae_sources_pkg.GetSystemSourceDate(
201156    p_source_code           => 'XLA_REFERENCE_DATE_1'
201157  , p_source_type_code      => 'Y'
201158  , p_source_application_id =>  602
201159 );
201160      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
201161       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
201162 
201163 
201164 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
201165 
201166 XLA_AE_HEADER_PKG.SetJeCategoryName;
201167 
201168 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
201169 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
201170 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
201171 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
201172 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
201173 
201174 
201175 -- No header level analytical criteria
201176 
201177 --
201178 --accounting attribute enhancement, bug 3612931
201179 --
201180 l_trx_reversal_source := SUBSTR(NULL, 1,30);
201181 
201182 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
201183    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
201184 
201185    xla_accounting_err_pkg.build_message
201186       (p_appli_s_name            => 'XLA'
201187       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
201188       ,p_token_1                 => 'ACCT_ATTR_NAME'
201189       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
201190       ,p_token_2                 => 'PRODUCT_NAME'
201191       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
201192       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
201193       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
201194       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
201195 
201196 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
201197    --
201198    -- following sets the accounting attributes needed to reverse
201199    -- accounting for a distributeion
201200    --
201201    xla_ae_lines_pkg.SetTrxReversalAttrs
201202       (p_event_id              => l_event_id
201203       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
201204       ,p_trx_reversal_source   => l_trx_reversal_source);
201205 
201206 END IF;
201207 
201208 
201209 ----------------------------------------------------------------
201210 -- 4262811 -  update the header statuses to invalid in need be
201211 ----------------------------------------------------------------
201212 --
201213 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
201214 
201215 
201216   -----------------------------------------------
201217   -- No accrual reversal for the event class/type
201218   -----------------------------------------------
201219 ----------------------------------------------------------------
201220 
201221 --
201222 -- this ends the header loop iteration for one bulk fetch
201223 --
201224 END LOOP;
201225 
201226 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
201227 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
201228 
201229 --
201230 -- insert dummy rows into lines gt table that were created due to
201231 -- transaction reversals
201232 --
201233 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
201234    l_result := XLA_AE_LINES_PKG.InsertLines;
201235 END IF;
201236 
201237 --
201238 -- reset the temp_line_num for each set of events fetched from header
201239 -- cursor rather than doing it for each new event in line cursor
201240 -- Bug 3939231
201241 --
201242 xla_ae_lines_pkg.g_temp_line_num := 0;
201243 
201244 
201245 
201246 --
201247 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
201248 --
201249 --
201250 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
201251 
201252       trace
201253          (p_msg      => 'SQL - FETCH line_cur'
201254          ,p_level    => C_LEVEL_STATEMENT
201255          ,p_module   => l_log_module);
201256 
201257 END IF;
201258 --
201259 --
201260 LOOP
201261   --
201262   FETCH line_cur BULK COLLECT INTO
201263         l_array_entity_id
201264       , l_array_legal_entity_id
201265       , l_array_entity_code
201266       , l_array_transaction_num
201267       , l_array_event_id
201268       , l_array_class_code
201269       , l_array_event_type
201270       , l_array_event_number
201271       , l_array_event_date
201272       , l_array_transaction_date
201273       , l_array_reference_num_1
201274       , l_array_reference_num_2
201275       , l_array_reference_num_3
201276       , l_array_reference_num_4
201277       , l_array_reference_char_1
201278       , l_array_reference_char_2
201279       , l_array_reference_char_3
201280       , l_array_reference_char_4
201281       , l_array_reference_date_1
201282       , l_array_reference_date_2
201283       , l_array_reference_date_3
201284       , l_array_reference_date_4
201285       , l_array_event_created_by
201286       , l_array_budgetary_control_flag
201287       , l_array_extract_line_num 
201288       , l_array_source_4
201289       , l_array_source_11
201290       , l_array_source_15
201291       , l_array_source_18
201292       , l_array_source_19
201293       , l_array_source_20
201294       , l_array_source_21
201295       , l_array_source_22
201296       , l_array_source_24
201297       LIMIT l_rows;
201298 
201299   --
201300   IF (C_LEVEL_EVENT >= g_log_level) THEN
201301             trace
201302                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
201303                ,p_level    => C_LEVEL_EVENT
201304                ,p_module   => l_log_module);
201305   END IF;
201306   --
201307   EXIT WHEN l_array_entity_id.count = 0;
201308 
201309   XLA_AE_LINES_PKG.g_rec_lines := null;
201310 
201311 --
201312 -- Bug 4458708
201313 --
201314 XLA_AE_LINES_PKG.g_LineNumber := 0;
201315 --
201316 --
201317 
201318 FOR Idx IN 1..l_array_event_id.count LOOP
201319    --
201320    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
201321    --
201322    l_event_id := l_array_event_id(idx);  -- 5648433
201323 
201324    --
201325    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
201326    --
201327 
201328    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
201329              (g_array_event(l_event_id).array_value_num('header_index'))
201330          ,'N'
201331          ) <> 'Y'
201332    THEN
201333       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
201334          trace
201335             (p_msg      => 'Trancaction revesal option is not Y '
201336             ,p_level    => C_LEVEL_STATEMENT
201337             ,p_module   => l_log_module);
201338       END IF;
201339 
201340 --
201341 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
201342 --
201343 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
201344 --
201345 -- set event info as cache for other routines to refer event attributes
201346 --
201347 
201348 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
201349    l_previous_event_id := l_event_id;
201350 
201351    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
201352       (p_application_id           => p_application_id
201353       ,p_primary_ledger_id        => p_primary_ledger_id
201354       ,p_base_ledger_id           => p_base_ledger_id
201355       ,p_target_ledger_id         => p_target_ledger_id
201356       ,p_entity_id                => l_array_entity_id(Idx)
201357       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
201358       ,p_entity_code              => l_array_entity_code(Idx)
201359       ,p_transaction_num          => l_array_transaction_num(Idx)
201360       ,p_event_id                 => l_array_event_id(Idx)
201361       ,p_event_class_code         => l_array_class_code(Idx)
201362       ,p_event_type_code          => l_array_event_type(Idx)
201363       ,p_event_number             => l_array_event_number(Idx)
201364       ,p_event_date               => l_array_event_date(Idx)
201365       ,p_transaction_date         => l_array_transaction_date(Idx)
201366       ,p_reference_num_1          => l_array_reference_num_1(Idx)
201367       ,p_reference_num_2          => l_array_reference_num_2(Idx)
201368       ,p_reference_num_3          => l_array_reference_num_3(Idx)
201369       ,p_reference_num_4          => l_array_reference_num_4(Idx)
201370       ,p_reference_char_1         => l_array_reference_char_1(Idx)
201371       ,p_reference_char_2         => l_array_reference_char_2(Idx)
201372       ,p_reference_char_3         => l_array_reference_char_3(Idx)
201373       ,p_reference_char_4         => l_array_reference_char_4(Idx)
201374       ,p_reference_date_1         => l_array_reference_date_1(Idx)
201375       ,p_reference_date_2         => l_array_reference_date_2(Idx)
201376       ,p_reference_date_3         => l_array_reference_date_3(Idx)
201377       ,p_reference_date_4         => l_array_reference_date_4(Idx)
201378       ,p_event_created_by         => l_array_event_created_by(Idx)
201379       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
201380        --
201381 END IF;
201382 
201383 
201384 
201385 --
201386 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
201387 
201388 l_acct_reversal_source := SUBSTR(NULL, 1,30);
201389 
201390 IF l_continue_with_lines THEN
201391    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
201392       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
201393 
201394       xla_accounting_err_pkg.build_message
201395          (p_appli_s_name            => 'XLA'
201396          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
201397          ,p_token_1                 => 'LINE_NUMBER'
201398          ,p_value_1                 => l_array_extract_line_num(Idx)
201399          ,p_token_2                 => 'PRODUCT_NAME'
201400          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
201401          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
201402          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
201403          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
201404 
201405    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
201406       --
201407       -- following sets the accounting attributes needed to reverse
201408       -- accounting for a distributeion
201409       --
201410 
201411       --
201412       -- 5217187
201413       --
201414       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
201415       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
201416                                        g_array_event(l_event_id).array_value_num('header_index'));
201417       --
201418       --
201419 
201420       -- No reversal code generated
201421 
201422       xla_ae_lines_pkg.SetAcctReversalAttrs
201423          (p_event_id             => l_event_id
201424          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
201425          ,p_calculate_acctd_flag => l_calculate_acctd_flag
201426          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
201427    END IF;
201428 
201429    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
201430        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
201431 
201432 --
201433 AcctLineType_46 (
201434  p_application_id  => p_application_id
201435  ,p_event_id     => l_event_id
201436  ,p_calculate_acctd_flag => l_calculate_acctd_flag
201437  ,p_calculate_g_l_flag => l_calculate_g_l_flag
201438  ,p_actual_flag => l_actual_flag
201439  ,p_balance_type_code => l_balance_type_code
201440  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
201441  
201442  , p_source_4 => l_array_source_4(Idx)
201443  , p_source_11 => l_array_source_11(Idx)
201444  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
201445  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
201446  , p_source_15 => l_array_source_15(Idx)
201447  , p_source_18 => l_array_source_18(Idx)
201448  , p_source_19 => l_array_source_19(Idx)
201449  , p_source_20 => l_array_source_20(Idx)
201450  , p_source_21 => l_array_source_21(Idx)
201451  , p_source_22 => l_array_source_22(Idx)
201452  , p_source_24 => l_array_source_24(Idx)
201453  );
201454 If(l_balance_type_code = 'A') THEN
201455   l_actual_gain_loss_ref := l_gain_or_loss_ref;
201456 END IF;
201457 
201458 --
201459 
201460 
201461 --
201462 AcctLineType_132 (
201463  p_application_id  => p_application_id
201464  ,p_event_id     => l_event_id
201465  ,p_calculate_acctd_flag => l_calculate_acctd_flag
201466  ,p_calculate_g_l_flag => l_calculate_g_l_flag
201467  ,p_actual_flag => l_actual_flag
201468  ,p_balance_type_code => l_balance_type_code
201469  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
201470  
201471  , p_source_4 => l_array_source_4(Idx)
201472  , p_source_11 => l_array_source_11(Idx)
201473  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
201474  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
201475  , p_source_15 => l_array_source_15(Idx)
201476  , p_source_18 => l_array_source_18(Idx)
201477  , p_source_19 => l_array_source_19(Idx)
201478  , p_source_20 => l_array_source_20(Idx)
201479  , p_source_21 => l_array_source_21(Idx)
201480  , p_source_22 => l_array_source_22(Idx)
201481  , p_source_24 => l_array_source_24(Idx)
201482  );
201483 If(l_balance_type_code = 'A') THEN
201484   l_actual_gain_loss_ref := l_gain_or_loss_ref;
201485 END IF;
201486 
201487 --
201488 
201489 
201490 --
201491 AcctLineType_202 (
201492  p_application_id  => p_application_id
201493  ,p_event_id     => l_event_id
201494  ,p_calculate_acctd_flag => l_calculate_acctd_flag
201495  ,p_calculate_g_l_flag => l_calculate_g_l_flag
201496  ,p_actual_flag => l_actual_flag
201497  ,p_balance_type_code => l_balance_type_code
201498  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
201499  
201500  , p_source_4 => l_array_source_4(Idx)
201501  , p_source_11 => l_array_source_11(Idx)
201502  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
201503  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
201504  , p_source_15 => l_array_source_15(Idx)
201505  , p_source_18 => l_array_source_18(Idx)
201506  , p_source_19 => l_array_source_19(Idx)
201507  , p_source_20 => l_array_source_20(Idx)
201508  , p_source_21 => l_array_source_21(Idx)
201509  , p_source_22 => l_array_source_22(Idx)
201510  , p_source_24 => l_array_source_24(Idx)
201511  );
201512 If(l_balance_type_code = 'A') THEN
201513   l_actual_gain_loss_ref := l_gain_or_loss_ref;
201514 END IF;
201515 
201516 --
201517 
201518       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
201519       -- or secondary ledger that has different currency with primary
201520       -- or alc that is calculated by sla
201521       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
201522             (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'))
201523 
201524 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
201525 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
201526           AND (l_actual_flag = 'A')) THEN
201527         XLA_AE_LINES_PKG.CreateGainOrLossLines(
201528           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
201529          ,p_application_id   => p_application_id
201530          ,p_amb_context_code => 'DEFAULT'
201531          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
201532          ,p_event_class_code => C_EVENT_CLASS_CODE
201533          ,p_event_type_code  => C_EVENT_TYPE_CODE
201534          
201535          ,p_gain_ccid        => -1
201536          ,p_loss_ccid        => -1
201537 
201538          ,p_actual_flag      => l_actual_flag
201539          ,p_enc_flag         => null
201540          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
201541          ,p_enc_g_l_ref      => null
201542          );
201543       END IF;
201544    END IF;
201545 END IF;
201546 
201547    ELSE
201548       --
201549       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
201550       --
201551       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
201552          trace
201553             (p_msg      => 'Trancaction revesal option is Y'
201554             ,p_level    => C_LEVEL_STATEMENT
201555             ,p_module   => l_log_module);
201556       END IF;
201557    END IF;
201558 
201559 END LOOP;
201560 l_result := XLA_AE_LINES_PKG.InsertLines ;
201561 end loop;
201562 close line_cur;
201563 
201564 
201565 --
201566 -- insert headers into xla_ae_headers_gt table
201567 --
201568 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
201569 
201570 -- insert into errors table here.
201571 
201572 END LOOP;
201573 
201574 --
201575 -- 4865292
201576 --
201577 -- Compare g_hdr_extract_count with event count in
201578 -- CreateHeadersAndLines.
201579 --
201580 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
201581 
201582 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
201583    trace (p_msg     => '# rows extracted from header extract objects '
201584                     || ' (running total): '
201585                     || g_hdr_extract_count
201586          ,p_level   => C_LEVEL_STATEMENT
201587          ,p_module  => l_log_module);
201588 END IF;
201589 
201590 CLOSE header_cur;
201591 --
201592 
201593 --
201594 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
201595    trace
201596       (p_msg      => 'END of EventType_302'
201597       ,p_level    => C_LEVEL_PROCEDURE
201598       ,p_module   => l_log_module);
201599 END IF;
201600 --
201601 RETURN l_result;
201602 EXCEPTION
201603 WHEN xla_exceptions_pkg.application_exception THEN
201604    
201605 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
201606 
201607    
201608 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
201609 
201610    RAISE;
201611 
201612 WHEN NO_DATA_FOUND THEN
201613 
201614 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
201615 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
201616 
201617 FOR header_record IN header_cur
201618 LOOP
201619     l_array_header_events(header_record.event_id) := header_record.event_id;
201620 END LOOP;
201621 
201622 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
201623 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
201624 
201625 fnd_file.put_line(fnd_file.LOG, '                    ');
201626 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
201627 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
201628 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
201629 
201630 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
201631 LOOP
201632 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
201633 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
201634         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
201635 	END IF;
201636 END LOOP;
201637 
201638 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
201639 fnd_file.put_line(fnd_file.LOG, '                    ');
201640 
201641 
201642 xla_exceptions_pkg.raise_message
201643       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_302');
201644 
201645 
201646 WHEN OTHERS THEN
201647    xla_exceptions_pkg.raise_message
201648       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_302');
201649 END EventType_302;
201650 --
201651 
201652 ---------------------------------------
201653 --
201654 -- PRIVATE PROCEDURE
201655 --         insert_sources_303
201656 --
201657 ----------------------------------------
201658 --
201659 PROCEDURE insert_sources_303(
201660                                 p_target_ledger_id       IN NUMBER
201661                               , p_language               IN VARCHAR2
201662                               , p_sla_ledger_id          IN NUMBER
201663                               , p_pad_start_date         IN DATE
201664                               , p_pad_end_date           IN DATE
201665                          )
201666 IS
201667 
201668 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'USUB_TXFR';
201669 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
201670 p_apps_owner                   VARCHAR2(30);
201671 l_log_module                   VARCHAR2(240);
201672 BEGIN
201673 IF g_log_enabled THEN
201674       l_log_module := C_DEFAULT_MODULE||'.insert_sources_303';
201675 END IF;
201676 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
201677 
201678       trace
201679          (p_msg      => 'BEGIN of insert_sources_303'
201680          ,p_level    => C_LEVEL_PROCEDURE
201681          ,p_module   => l_log_module);
201682 
201683 END IF;
201684 
201685 -- select APPS owner
201686 SELECT oracle_username
201687   INTO p_apps_owner
201688   FROM fnd_oracle_userid
201689  WHERE read_only_flag = 'U'
201690 ;
201691 
201692 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
201693       trace
201694          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
201695                         ' - p_language = '||p_language||
201696                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
201697                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
201698                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
201699                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
201700          ,p_level    => C_LEVEL_STATEMENT
201701          ,p_module   => l_log_module);
201702 END IF;
201703 
201704 
201705 --
201706 INSERT INTO xla_diag_sources --hdr1
201707 (
201708         event_id
201709       , ledger_id
201710       , sla_ledger_id
201711       , description_language
201712       , object_name
201713       , object_type_code
201714       , line_number
201715       , source_application_id
201716       , source_type_code
201717       , source_code
201718       , source_value
201719       , source_meaning
201720       , created_by
201721       , creation_date
201722       , last_update_date
201723       , last_updated_by
201724       , last_update_login
201725       , program_update_date
201726       , program_application_id
201727       , program_id
201728       , request_id
201729 )
201730 SELECT
201731         event_id
201732       , p_target_ledger_id
201733       , p_sla_ledger_id
201734       , p_language
201735       , object_name
201736       , object_type_code
201737       , line_number
201738       , source_application_id
201739       , source_type_code
201740       , source_code
201741       , SUBSTR(source_value ,1,1996)
201742       , SUBSTR(source_meaning,1,200)
201743       , xla_environment_pkg.g_Usr_Id
201744       , TRUNC(SYSDATE)
201745       , TRUNC(SYSDATE)
201746       , xla_environment_pkg.g_Usr_Id
201747       , xla_environment_pkg.g_Login_Id
201748       , TRUNC(SYSDATE)
201749       , xla_environment_pkg.g_Prog_Appl_Id
201750       , xla_environment_pkg.g_Prog_Id
201751       , xla_environment_pkg.g_Req_Id
201752   FROM (
201753        SELECT xet.event_id                  event_id
201754             , 0                             line_number
201755             , CASE r
201756                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
201757                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
201758                 
201759                ELSE null
201760               END                           object_name
201761             , CASE r
201762                 WHEN 1 THEN 'HEADER' 
201763                 WHEN 2 THEN 'HEADER' 
201764                 
201765                 ELSE null
201766               END                           object_type_code
201767             , CASE r
201768                 WHEN 1 THEN '707' 
201769                 WHEN 2 THEN '707' 
201770                 
201771                 ELSE null
201772               END                           source_application_id
201773             , 'S'             source_type_code
201774             , CASE r
201775                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
201776                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
201777                 
201778                 ELSE null
201779               END                           source_code
201780             , CASE r
201781                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
201782                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
201783                 
201784                 ELSE null
201785               END                           source_value
201786             , CASE r
201787                 WHEN 1 THEN fvl12.meaning
201788                 WHEN 2 THEN fvl38.meaning
201789                 
201790                 ELSE null
201791               END               source_meaning
201792         FROM xla_events_gt     xet  
201793       , CST_XLA_INV_HEADERS_V  h1
201794   , fnd_lookup_values    fvl12
201795   , fnd_lookup_values    fvl38
201796             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
201797        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
201798          AND xet.event_type_code = C_EVENT_TYPE_CODE
201799             AND h1.event_id = xet.event_id
201800    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
201801   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
201802   AND fvl12.view_application_id(+) = 700
201803   AND fvl12.language(+)            = USERENV('LANG')
201804      AND fvl38.lookup_type(+)         = 'YES_NO'
201805   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
201806   AND fvl38.view_application_id(+) = 0
201807   AND fvl38.language(+)            = USERENV('LANG')
201808   
201809 )
201810 ;
201811 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
201812 
201813       trace
201814          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
201815          ,p_level    => C_LEVEL_STATEMENT
201816          ,p_module   => l_log_module);
201817 
201818 END IF;
201819 --
201820 
201821 
201822 
201823 --
201824 INSERT INTO xla_diag_sources --line1
201825 (
201826         event_id
201827       , ledger_id
201828       , sla_ledger_id
201829       , description_language
201830       , object_name
201831       , object_type_code
201832       , line_number
201833       , source_application_id
201834       , source_type_code
201835       , source_code
201836       , source_value
201837       , source_meaning
201838       , created_by
201839       , creation_date
201840       , last_update_date
201841       , last_updated_by
201842       , last_update_login
201843       , program_update_date
201844       , program_application_id
201845       , program_id
201846       , request_id
201847 )
201848 SELECT  event_id
201849       , p_target_ledger_id
201850       , p_sla_ledger_id
201851       , p_language
201852       , object_name
201853       , object_type_code
201854       , line_number
201855       , source_application_id
201856       , source_type_code
201857       , source_code
201858       , SUBSTR(source_value,1,1996)
201859       , SUBSTR(source_meaning,1,200)
201860       , xla_environment_pkg.g_Usr_Id
201861       , TRUNC(SYSDATE)
201862       , TRUNC(SYSDATE)
201863       , xla_environment_pkg.g_Usr_Id
201864       , xla_environment_pkg.g_Login_Id
201865       , TRUNC(SYSDATE)
201866       , xla_environment_pkg.g_Prog_Appl_Id
201867       , xla_environment_pkg.g_Prog_Id
201868       , xla_environment_pkg.g_Req_Id
201869   FROM (
201870        SELECT xet.event_id                  event_id
201871             , l2.line_number                 line_number
201872             , CASE r
201873                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
201874                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
201875                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
201876                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
201877                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
201878                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
201879                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
201880                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
201881                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
201882                 
201883                ELSE null
201884               END                           object_name
201885             , CASE r
201886                 WHEN 1 THEN 'LINE' 
201887                 WHEN 2 THEN 'LINE' 
201888                 WHEN 3 THEN 'LINE' 
201889                 WHEN 4 THEN 'LINE' 
201890                 WHEN 5 THEN 'LINE' 
201891                 WHEN 6 THEN 'LINE' 
201892                 WHEN 7 THEN 'LINE' 
201893                 WHEN 8 THEN 'LINE' 
201894                 WHEN 9 THEN 'LINE' 
201895                 
201896                 ELSE null
201897               END                           object_type_code
201898             , CASE r
201899                 WHEN 1 THEN '707' 
201900                 WHEN 2 THEN '707' 
201901                 WHEN 3 THEN '707' 
201902                 WHEN 4 THEN '707' 
201903                 WHEN 5 THEN '707' 
201904                 WHEN 6 THEN '707' 
201905                 WHEN 7 THEN '707' 
201906                 WHEN 8 THEN '707' 
201907                 WHEN 9 THEN '707' 
201908                 
201909                 ELSE null
201910               END                           source_application_id
201911             , 'S'             source_type_code
201912             , CASE r
201913                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
201914                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
201915                 WHEN 3 THEN 'CURRENCY_CODE' 
201916                 WHEN 4 THEN 'ENTERED_AMOUNT' 
201917                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
201918                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
201919                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
201920                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
201921                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
201922                 
201923                 ELSE null
201924               END                           source_code
201925             , CASE r
201926                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
201927                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
201928                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
201929                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
201930                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
201931                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
201932                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
201933                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
201934                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
201935                 
201936                 ELSE null
201937               END                           source_value
201938             , null              source_meaning
201939          FROM  xla_events_gt     xet  
201940         , CST_XLA_INV_LINES_V  l2
201941             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
201942         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
201943           AND xet.event_type_code = C_EVENT_TYPE_CODE
201944             AND l2.event_id          = xet.event_id
201945 
201946 )
201947 ;
201948 --
201949 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
201950 
201951       trace
201952          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
201953          ,p_level    => C_LEVEL_STATEMENT
201954          ,p_module   => l_log_module);
201955 
201956 END IF;
201957 
201958 
201959 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
201960       trace
201961          (p_msg      => 'END of insert_sources_303'
201962          ,p_level    => C_LEVEL_PROCEDURE
201963          ,p_module   => l_log_module);
201964 END IF;
201965 EXCEPTION
201966   WHEN xla_exceptions_pkg.application_exception THEN
201967       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
201968             trace
201969                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
201970                ,p_level    => C_LEVEL_EXCEPTION
201971                ,p_module   => l_log_module);
201972       END IF;
201973       RAISE;
201974   WHEN OTHERS THEN
201975       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
201976             trace
201977                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
201978                ,p_level    => C_LEVEL_EXCEPTION
201979                ,p_module   => l_log_module);
201980        END IF;
201981        xla_exceptions_pkg.raise_message
201982            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_303');
201983 END insert_sources_303;
201984 --
201985 
201986 ---------------------------------------
201987 --
201988 -- PRIVATE FUNCTION
201989 --         EventType_303
201990 --
201991 ----------------------------------------
201992 --
201993 FUNCTION EventType_303
201994        (p_application_id         IN NUMBER
201995        ,p_base_ledger_id         IN NUMBER
201996        ,p_target_ledger_id       IN NUMBER
201997        ,p_language               IN VARCHAR2
201998        ,p_currency_code          IN VARCHAR2
201999        ,p_sla_ledger_id          IN NUMBER
202000        ,p_pad_start_date         IN DATE
202001        ,p_pad_end_date           IN DATE
202002        ,p_primary_ledger_id      IN NUMBER)
202003 RETURN BOOLEAN IS
202004 --
202005 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'USUB_TXFR';
202006 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
202007 
202008 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
202009 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
202010 --
202011 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
202012 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
202013 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
202014 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
202015 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
202016 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
202017 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
202018 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
202019 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
202020 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
202021 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
202022 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
202023 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
202024 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
202025 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
202026 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
202027 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
202028 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
202029 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
202030 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
202031 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
202032 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
202033 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
202034 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
202035 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
202036 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
202037 
202038 l_event_id                             NUMBER;
202039 l_previous_event_id                    NUMBER;
202040 l_first_event_id                       NUMBER;
202041 l_last_event_id                        NUMBER;
202042 
202043 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
202044 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
202045 --
202046 --
202047 l_result                    BOOLEAN := TRUE;
202048 l_rows                      NUMBER  := 1000;
202049 l_event_type_name           VARCHAR2(80) := 'User-defined Subinventory Transfer';
202050 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
202051 l_description               VARCHAR2(4000);
202052 l_transaction_reversal      NUMBER;
202053 l_ae_header_id              NUMBER;
202054 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
202055 l_log_module                VARCHAR2(240);
202056 --
202057 l_acct_reversal_source      VARCHAR2(30);
202058 l_trx_reversal_source       VARCHAR2(30);
202059 
202060 l_continue_with_lines       BOOLEAN := TRUE;
202061 --
202062 l_acc_rev_gl_date_source    DATE;                      -- 4262811
202063 --
202064 type t_array_event_id is table of number index by binary_integer;
202065 
202066 l_rec_array_event                    t_rec_array_event;
202067 l_null_rec_array_event               t_rec_array_event;
202068 l_array_ae_header_id                 xla_number_array_type;
202069 l_actual_flag                        VARCHAR2(1) := NULL;
202070 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
202071 l_balance_type_code                  VARCHAR2(1) :=NULL;
202072 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
202073 
202074 --
202075 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
202076 --
202077 
202078 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
202079 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
202080 
202081 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
202082 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
202083 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
202084 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
202085 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
202086 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
202087 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
202088 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
202089 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
202090 
202091 l_array_source_12              t_array_source_12;
202092 l_array_source_12_meaning      t_array_lookup_meaning;
202093 l_array_source_38              t_array_source_38;
202094 l_array_source_38_meaning      t_array_lookup_meaning;
202095 
202096 l_array_source_4      t_array_source_4;
202097 l_array_source_11      t_array_source_11;
202098 l_array_source_15      t_array_source_15;
202099 l_array_source_18      t_array_source_18;
202100 l_array_source_19      t_array_source_19;
202101 l_array_source_20      t_array_source_20;
202102 l_array_source_21      t_array_source_21;
202103 l_array_source_22      t_array_source_22;
202104 l_array_source_24      t_array_source_24;
202105 
202106 --
202107 CURSOR header_cur
202108 IS
202109 SELECT /*+ leading(xet) cardinality(xet,1) */
202110 -- Event Type Code: USUB_TXFR
202111 -- Event Class Code: USER_DEFINE
202112     xet.entity_id
202113   , xet.legal_entity_id
202114   , xet.entity_code
202115   , xet.transaction_number
202116   , xet.event_id
202117   , xet.event_class_code
202118   , xet.event_type_code
202119   , xet.event_number
202120   , xet.event_date
202121   , xet.transaction_date
202122   , xet.reference_num_1
202123   , xet.reference_num_2
202124   , xet.reference_num_3
202125   , xet.reference_num_4
202126   , xet.reference_char_1
202127   , xet.reference_char_2
202128   , xet.reference_char_3
202129   , xet.reference_char_4
202130   , xet.reference_date_1
202131   , xet.reference_date_2
202132   , xet.reference_date_3
202133   , xet.reference_date_4
202134   , xet.event_created_by
202135   , xet.budgetary_control_flag 
202136   , h1.DISTRIBUTION_TYPE    source_12
202137   , fvl12.meaning   source_12_meaning
202138   , h1.TRANSFER_TO_GL_INDICATOR    source_38
202139   , fvl38.meaning   source_38_meaning
202140   FROM xla_events_gt     xet 
202141   , CST_XLA_INV_HEADERS_V  h1
202142   , fnd_lookup_values    fvl12
202143   , fnd_lookup_values    fvl38
202144  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
202145    and xet.event_type_code = C_EVENT_TYPE_CODE
202146    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
202147    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
202148   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
202149   AND fvl12.view_application_id(+) = 700
202150   AND fvl12.language(+)            = USERENV('LANG')
202151      AND fvl38.lookup_type(+)         = 'YES_NO'
202152   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
202153   AND fvl38.view_application_id(+) = 0
202154   AND fvl38.language(+)            = USERENV('LANG')
202155   
202156  ORDER BY event_id
202157 ;
202158 
202159 
202160 --
202161 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
202162 IS
202163 SELECT /*+ leading(xet) cardinality(xet,1) */
202164 -- Event Type Code: USUB_TXFR
202165 -- Event Class Code: USER_DEFINE
202166     xet.entity_id
202167    ,xet.legal_entity_id
202168    ,xet.entity_code
202169    ,xet.transaction_number
202170    ,xet.event_id
202171    ,xet.event_class_code
202172    ,xet.event_type_code
202173    ,xet.event_number
202174    ,xet.event_date
202175    ,xet.transaction_date
202176    ,xet.reference_num_1
202177    ,xet.reference_num_2
202178    ,xet.reference_num_3
202179    ,xet.reference_num_4
202180    ,xet.reference_char_1
202181    ,xet.reference_char_2
202182    ,xet.reference_char_3
202183    ,xet.reference_char_4
202184    ,xet.reference_date_1
202185    ,xet.reference_date_2
202186    ,xet.reference_date_3
202187    ,xet.reference_date_4
202188    ,xet.event_created_by
202189    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
202190   , l2.CODE_COMBINATION_ID    source_4
202191   , l2.DISTRIBUTION_IDENTIFIER    source_11
202192   , l2.CURRENCY_CODE    source_15
202193   , l2.ENTERED_AMOUNT    source_18
202194   , l2.CURRENCY_CONVERSION_DATE    source_19
202195   , l2.CURRENCY_CONVERSION_RATE    source_20
202196   , l2.CURRENCY_CONVERSION_TYPE    source_21
202197   , l2.ACCOUNTED_AMOUNT    source_22
202198   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
202199   FROM xla_events_gt     xet 
202200   , CST_XLA_INV_LINES_V  l2
202201  WHERE xet.event_id between x_first_event_id and x_last_event_id
202202    and xet.event_date between p_pad_start_date and p_pad_end_date
202203    and xet.event_type_code = C_EVENT_TYPE_CODE
202204    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
202205 ;
202206 
202207 --
202208 BEGIN
202209 IF g_log_enabled THEN
202210    l_log_module := C_DEFAULT_MODULE||'.EventType_303';
202211 END IF;
202212 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
202213    trace
202214       (p_msg      => 'BEGIN of EventType_303'
202215       ,p_level    => C_LEVEL_PROCEDURE
202216       ,p_module   => l_log_module);
202217 END IF;
202218 
202219 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
202220    trace
202221       (p_msg      => 'p_application_id = '||p_application_id||
202222                      ' - p_base_ledger_id = '||p_base_ledger_id||
202223                      ' - p_target_ledger_id  = '||p_target_ledger_id||
202224                      ' - p_language = '||p_language||
202225                      ' - p_currency_code = '||p_currency_code||
202226                      ' - p_sla_ledger_id = '||p_sla_ledger_id
202227       ,p_level    => C_LEVEL_STATEMENT
202228       ,p_module   => l_log_module);
202229 END IF;
202230 --
202231 -- initialze arrays
202232 --
202233 g_array_event.DELETE;
202234 l_rec_array_event := l_null_rec_array_event;
202235 --
202236 --------------------------------------
202237 -- 4262811 Initialze MPA Line Number
202238 --------------------------------------
202239 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
202240 
202241 --
202242 
202243 --
202244 OPEN header_cur;
202245 --
202246 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
202247    trace
202248    (p_msg      => 'SQL - FETCH header_cur'
202249    ,p_level    => C_LEVEL_STATEMENT
202250    ,p_module   => l_log_module);
202251 END IF;
202252 --
202253 LOOP
202254 FETCH header_cur BULK COLLECT INTO
202255         l_array_entity_id
202256       , l_array_legal_entity_id
202257       , l_array_entity_code
202258       , l_array_transaction_num
202259       , l_array_event_id
202260       , l_array_class_code
202261       , l_array_event_type
202262       , l_array_event_number
202263       , l_array_event_date
202264       , l_array_transaction_date
202265       , l_array_reference_num_1
202266       , l_array_reference_num_2
202267       , l_array_reference_num_3
202268       , l_array_reference_num_4
202269       , l_array_reference_char_1
202270       , l_array_reference_char_2
202271       , l_array_reference_char_3
202272       , l_array_reference_char_4
202273       , l_array_reference_date_1
202274       , l_array_reference_date_2
202275       , l_array_reference_date_3
202276       , l_array_reference_date_4
202277       , l_array_event_created_by
202278       , l_array_budgetary_control_flag 
202279       , l_array_source_12
202280       , l_array_source_12_meaning
202281       , l_array_source_38
202282       , l_array_source_38_meaning
202283       LIMIT l_rows;
202284 --
202285 IF (C_LEVEL_EVENT >= g_log_level) THEN
202286    trace
202287    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
202288    ,p_level    => C_LEVEL_EVENT
202289    ,p_module   => l_log_module);
202290 END IF;
202291 --
202292 EXIT WHEN l_array_entity_id.COUNT = 0;
202293 
202294 -- initialize arrays
202295 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
202296 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
202297 
202298 --
202299 -- Bug 4458708
202300 --
202301 XLA_AE_LINES_PKG.g_LineNumber := 0;
202302 
202303 
202304 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
202305 g_last_hdr_idx := l_array_event_id.LAST;
202306 --
202307 -- loop for the headers. Each iteration is for each header extract row
202308 -- fetched in header cursor
202309 --
202310 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
202311 
202312 --
202313 -- set event info as cache for other routines to refer event attributes
202314 --
202315 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
202316    (p_application_id           => p_application_id
202317    ,p_primary_ledger_id        => p_primary_ledger_id
202318    ,p_base_ledger_id           => p_base_ledger_id
202319    ,p_target_ledger_id         => p_target_ledger_id
202320    ,p_entity_id                => l_array_entity_id(hdr_idx)
202321    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
202322    ,p_entity_code              => l_array_entity_code(hdr_idx)
202323    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
202324    ,p_event_id                 => l_array_event_id(hdr_idx)
202325    ,p_event_class_code         => l_array_class_code(hdr_idx)
202326    ,p_event_type_code          => l_array_event_type(hdr_idx)
202327    ,p_event_number             => l_array_event_number(hdr_idx)
202328    ,p_event_date               => l_array_event_date(hdr_idx)
202329    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
202330    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
202331    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
202332    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
202333    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
202334    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
202335    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
202336    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
202337    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
202338    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
202339    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
202340    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
202341    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
202342    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
202343    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
202344 
202345 --
202346 -- set the status of entry to C_VALID (0)
202347 --
202348 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
202349 
202350 --
202351 -- initialize a row for ae header
202352 --
202353 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
202354 
202355 l_event_id := l_array_event_id(hdr_idx);
202356 
202357 --
202358 -- storing the hdr_idx for event. May be used by line cursor.
202359 --
202360 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
202361 
202362 --
202363 -- store sources from header extract. This can be improved to
202364 -- store only those sources from header extract that may be used in lines
202365 --
202366 
202367 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
202368 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
202369 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
202370 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
202371 
202372 --
202373 -- initilaize the status of ae headers for diffrent balance types
202374 -- the status is initialised to C_NOT_CREATED (2)
202375 --
202376 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
202377 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
202378 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
202379 
202380 --
202381 -- call api to validate and store accounting attributes for header
202382 --
202383 
202384 ------------------------------------------------------------
202385 -- Accrual Reversal : to get date for Standard Source (NONE)
202386 ------------------------------------------------------------
202387 l_acc_rev_gl_date_source := NULL;
202388 
202389      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
202390       l_rec_acct_attrs.array_date_value(1) := 
202391 xla_ae_sources_pkg.GetSystemSourceDate(
202392    p_source_code           => 'XLA_REFERENCE_DATE_1'
202393  , p_source_type_code      => 'Y'
202394  , p_source_application_id =>  602
202395 );
202396      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
202397       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
202398 
202399 
202400 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
202401 
202402 XLA_AE_HEADER_PKG.SetJeCategoryName;
202403 
202404 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
202405 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
202406 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
202407 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
202408 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
202409 
202410 
202411 -- No header level analytical criteria
202412 
202413 --
202414 --accounting attribute enhancement, bug 3612931
202415 --
202416 l_trx_reversal_source := SUBSTR(NULL, 1,30);
202417 
202418 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
202419    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
202420 
202421    xla_accounting_err_pkg.build_message
202422       (p_appli_s_name            => 'XLA'
202423       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
202424       ,p_token_1                 => 'ACCT_ATTR_NAME'
202425       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
202426       ,p_token_2                 => 'PRODUCT_NAME'
202427       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
202428       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
202429       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
202430       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
202431 
202432 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
202433    --
202434    -- following sets the accounting attributes needed to reverse
202435    -- accounting for a distributeion
202436    --
202437    xla_ae_lines_pkg.SetTrxReversalAttrs
202438       (p_event_id              => l_event_id
202439       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
202440       ,p_trx_reversal_source   => l_trx_reversal_source);
202441 
202442 END IF;
202443 
202444 
202445 ----------------------------------------------------------------
202446 -- 4262811 -  update the header statuses to invalid in need be
202447 ----------------------------------------------------------------
202448 --
202449 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
202450 
202451 
202452   -----------------------------------------------
202453   -- No accrual reversal for the event class/type
202454   -----------------------------------------------
202455 ----------------------------------------------------------------
202456 
202457 --
202458 -- this ends the header loop iteration for one bulk fetch
202459 --
202460 END LOOP;
202461 
202462 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
202463 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
202464 
202465 --
202466 -- insert dummy rows into lines gt table that were created due to
202467 -- transaction reversals
202468 --
202469 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
202470    l_result := XLA_AE_LINES_PKG.InsertLines;
202471 END IF;
202472 
202473 --
202474 -- reset the temp_line_num for each set of events fetched from header
202475 -- cursor rather than doing it for each new event in line cursor
202476 -- Bug 3939231
202477 --
202478 xla_ae_lines_pkg.g_temp_line_num := 0;
202479 
202480 
202481 
202482 --
202483 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
202484 --
202485 --
202486 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
202487 
202488       trace
202489          (p_msg      => 'SQL - FETCH line_cur'
202490          ,p_level    => C_LEVEL_STATEMENT
202491          ,p_module   => l_log_module);
202492 
202493 END IF;
202494 --
202495 --
202496 LOOP
202497   --
202498   FETCH line_cur BULK COLLECT INTO
202499         l_array_entity_id
202500       , l_array_legal_entity_id
202501       , l_array_entity_code
202502       , l_array_transaction_num
202503       , l_array_event_id
202504       , l_array_class_code
202505       , l_array_event_type
202506       , l_array_event_number
202507       , l_array_event_date
202508       , l_array_transaction_date
202509       , l_array_reference_num_1
202510       , l_array_reference_num_2
202511       , l_array_reference_num_3
202512       , l_array_reference_num_4
202513       , l_array_reference_char_1
202514       , l_array_reference_char_2
202515       , l_array_reference_char_3
202516       , l_array_reference_char_4
202517       , l_array_reference_date_1
202518       , l_array_reference_date_2
202519       , l_array_reference_date_3
202520       , l_array_reference_date_4
202521       , l_array_event_created_by
202522       , l_array_budgetary_control_flag
202523       , l_array_extract_line_num 
202524       , l_array_source_4
202525       , l_array_source_11
202526       , l_array_source_15
202527       , l_array_source_18
202528       , l_array_source_19
202529       , l_array_source_20
202530       , l_array_source_21
202531       , l_array_source_22
202532       , l_array_source_24
202533       LIMIT l_rows;
202534 
202535   --
202536   IF (C_LEVEL_EVENT >= g_log_level) THEN
202537             trace
202538                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
202539                ,p_level    => C_LEVEL_EVENT
202540                ,p_module   => l_log_module);
202541   END IF;
202542   --
202543   EXIT WHEN l_array_entity_id.count = 0;
202544 
202545   XLA_AE_LINES_PKG.g_rec_lines := null;
202546 
202547 --
202548 -- Bug 4458708
202549 --
202550 XLA_AE_LINES_PKG.g_LineNumber := 0;
202551 --
202552 --
202553 
202554 FOR Idx IN 1..l_array_event_id.count LOOP
202555    --
202556    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
202557    --
202558    l_event_id := l_array_event_id(idx);  -- 5648433
202559 
202560    --
202561    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
202562    --
202563 
202564    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
202565              (g_array_event(l_event_id).array_value_num('header_index'))
202566          ,'N'
202567          ) <> 'Y'
202568    THEN
202569       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
202570          trace
202571             (p_msg      => 'Trancaction revesal option is not Y '
202572             ,p_level    => C_LEVEL_STATEMENT
202573             ,p_module   => l_log_module);
202574       END IF;
202575 
202576 --
202577 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
202578 --
202579 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
202580 --
202581 -- set event info as cache for other routines to refer event attributes
202582 --
202583 
202584 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
202585    l_previous_event_id := l_event_id;
202586 
202587    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
202588       (p_application_id           => p_application_id
202589       ,p_primary_ledger_id        => p_primary_ledger_id
202590       ,p_base_ledger_id           => p_base_ledger_id
202591       ,p_target_ledger_id         => p_target_ledger_id
202592       ,p_entity_id                => l_array_entity_id(Idx)
202593       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
202594       ,p_entity_code              => l_array_entity_code(Idx)
202595       ,p_transaction_num          => l_array_transaction_num(Idx)
202596       ,p_event_id                 => l_array_event_id(Idx)
202597       ,p_event_class_code         => l_array_class_code(Idx)
202598       ,p_event_type_code          => l_array_event_type(Idx)
202599       ,p_event_number             => l_array_event_number(Idx)
202600       ,p_event_date               => l_array_event_date(Idx)
202601       ,p_transaction_date         => l_array_transaction_date(Idx)
202602       ,p_reference_num_1          => l_array_reference_num_1(Idx)
202603       ,p_reference_num_2          => l_array_reference_num_2(Idx)
202604       ,p_reference_num_3          => l_array_reference_num_3(Idx)
202605       ,p_reference_num_4          => l_array_reference_num_4(Idx)
202606       ,p_reference_char_1         => l_array_reference_char_1(Idx)
202607       ,p_reference_char_2         => l_array_reference_char_2(Idx)
202608       ,p_reference_char_3         => l_array_reference_char_3(Idx)
202609       ,p_reference_char_4         => l_array_reference_char_4(Idx)
202610       ,p_reference_date_1         => l_array_reference_date_1(Idx)
202611       ,p_reference_date_2         => l_array_reference_date_2(Idx)
202612       ,p_reference_date_3         => l_array_reference_date_3(Idx)
202613       ,p_reference_date_4         => l_array_reference_date_4(Idx)
202614       ,p_event_created_by         => l_array_event_created_by(Idx)
202615       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
202616        --
202617 END IF;
202618 
202619 
202620 
202621 --
202622 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
202623 
202624 l_acct_reversal_source := SUBSTR(NULL, 1,30);
202625 
202626 IF l_continue_with_lines THEN
202627    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
202628       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
202629 
202630       xla_accounting_err_pkg.build_message
202631          (p_appli_s_name            => 'XLA'
202632          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
202633          ,p_token_1                 => 'LINE_NUMBER'
202634          ,p_value_1                 => l_array_extract_line_num(Idx)
202635          ,p_token_2                 => 'PRODUCT_NAME'
202636          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
202637          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
202638          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
202639          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
202640 
202641    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
202642       --
202643       -- following sets the accounting attributes needed to reverse
202644       -- accounting for a distributeion
202645       --
202646 
202647       --
202648       -- 5217187
202649       --
202650       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
202651       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
202652                                        g_array_event(l_event_id).array_value_num('header_index'));
202653       --
202654       --
202655 
202656       -- No reversal code generated
202657 
202658       xla_ae_lines_pkg.SetAcctReversalAttrs
202659          (p_event_id             => l_event_id
202660          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
202661          ,p_calculate_acctd_flag => l_calculate_acctd_flag
202662          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
202663    END IF;
202664 
202665    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
202666        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
202667 
202668 --
202669 AcctLineType_37 (
202670  p_application_id  => p_application_id
202671  ,p_event_id     => l_event_id
202672  ,p_calculate_acctd_flag => l_calculate_acctd_flag
202673  ,p_calculate_g_l_flag => l_calculate_g_l_flag
202674  ,p_actual_flag => l_actual_flag
202675  ,p_balance_type_code => l_balance_type_code
202676  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
202677  
202678  , p_source_4 => l_array_source_4(Idx)
202679  , p_source_11 => l_array_source_11(Idx)
202680  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
202681  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
202682  , p_source_15 => l_array_source_15(Idx)
202683  , p_source_18 => l_array_source_18(Idx)
202684  , p_source_19 => l_array_source_19(Idx)
202685  , p_source_20 => l_array_source_20(Idx)
202686  , p_source_21 => l_array_source_21(Idx)
202687  , p_source_22 => l_array_source_22(Idx)
202688  , p_source_24 => l_array_source_24(Idx)
202689  );
202690 If(l_balance_type_code = 'A') THEN
202691   l_actual_gain_loss_ref := l_gain_or_loss_ref;
202692 END IF;
202693 
202694 --
202695 
202696 
202697 --
202698 AcctLineType_140 (
202699  p_application_id  => p_application_id
202700  ,p_event_id     => l_event_id
202701  ,p_calculate_acctd_flag => l_calculate_acctd_flag
202702  ,p_calculate_g_l_flag => l_calculate_g_l_flag
202703  ,p_actual_flag => l_actual_flag
202704  ,p_balance_type_code => l_balance_type_code
202705  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
202706  
202707  , p_source_4 => l_array_source_4(Idx)
202708  , p_source_11 => l_array_source_11(Idx)
202709  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
202710  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
202711  , p_source_15 => l_array_source_15(Idx)
202712  , p_source_18 => l_array_source_18(Idx)
202713  , p_source_19 => l_array_source_19(Idx)
202714  , p_source_20 => l_array_source_20(Idx)
202715  , p_source_21 => l_array_source_21(Idx)
202716  , p_source_22 => l_array_source_22(Idx)
202717  , p_source_24 => l_array_source_24(Idx)
202718  );
202719 If(l_balance_type_code = 'A') THEN
202720   l_actual_gain_loss_ref := l_gain_or_loss_ref;
202721 END IF;
202722 
202723 --
202724 
202725 
202726 --
202727 AcctLineType_182 (
202728  p_application_id  => p_application_id
202729  ,p_event_id     => l_event_id
202730  ,p_calculate_acctd_flag => l_calculate_acctd_flag
202731  ,p_calculate_g_l_flag => l_calculate_g_l_flag
202732  ,p_actual_flag => l_actual_flag
202733  ,p_balance_type_code => l_balance_type_code
202734  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
202735  
202736  , p_source_4 => l_array_source_4(Idx)
202737  , p_source_11 => l_array_source_11(Idx)
202738  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
202739  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
202740  , p_source_15 => l_array_source_15(Idx)
202741  , p_source_18 => l_array_source_18(Idx)
202742  , p_source_19 => l_array_source_19(Idx)
202743  , p_source_20 => l_array_source_20(Idx)
202744  , p_source_21 => l_array_source_21(Idx)
202745  , p_source_22 => l_array_source_22(Idx)
202746  , p_source_24 => l_array_source_24(Idx)
202747  );
202748 If(l_balance_type_code = 'A') THEN
202749   l_actual_gain_loss_ref := l_gain_or_loss_ref;
202750 END IF;
202751 
202752 --
202753 
202754       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
202755       -- or secondary ledger that has different currency with primary
202756       -- or alc that is calculated by sla
202757       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
202758             (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'))
202759 
202760 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
202761 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
202762           AND (l_actual_flag = 'A')) THEN
202763         XLA_AE_LINES_PKG.CreateGainOrLossLines(
202764           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
202765          ,p_application_id   => p_application_id
202766          ,p_amb_context_code => 'DEFAULT'
202767          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
202768          ,p_event_class_code => C_EVENT_CLASS_CODE
202769          ,p_event_type_code  => C_EVENT_TYPE_CODE
202770          
202771          ,p_gain_ccid        => -1
202772          ,p_loss_ccid        => -1
202773 
202774          ,p_actual_flag      => l_actual_flag
202775          ,p_enc_flag         => null
202776          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
202777          ,p_enc_g_l_ref      => null
202778          );
202779       END IF;
202780    END IF;
202781 END IF;
202782 
202783    ELSE
202784       --
202785       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
202786       --
202787       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
202788          trace
202789             (p_msg      => 'Trancaction revesal option is Y'
202790             ,p_level    => C_LEVEL_STATEMENT
202791             ,p_module   => l_log_module);
202792       END IF;
202793    END IF;
202794 
202795 END LOOP;
202796 l_result := XLA_AE_LINES_PKG.InsertLines ;
202797 end loop;
202798 close line_cur;
202799 
202800 
202801 --
202802 -- insert headers into xla_ae_headers_gt table
202803 --
202804 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
202805 
202806 -- insert into errors table here.
202807 
202808 END LOOP;
202809 
202810 --
202811 -- 4865292
202812 --
202813 -- Compare g_hdr_extract_count with event count in
202814 -- CreateHeadersAndLines.
202815 --
202816 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
202817 
202818 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
202819    trace (p_msg     => '# rows extracted from header extract objects '
202820                     || ' (running total): '
202821                     || g_hdr_extract_count
202822          ,p_level   => C_LEVEL_STATEMENT
202823          ,p_module  => l_log_module);
202824 END IF;
202825 
202826 CLOSE header_cur;
202827 --
202828 
202829 --
202830 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
202831    trace
202832       (p_msg      => 'END of EventType_303'
202833       ,p_level    => C_LEVEL_PROCEDURE
202834       ,p_module   => l_log_module);
202835 END IF;
202836 --
202837 RETURN l_result;
202838 EXCEPTION
202839 WHEN xla_exceptions_pkg.application_exception THEN
202840    
202841 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
202842 
202843    
202844 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
202845 
202846    RAISE;
202847 
202848 WHEN NO_DATA_FOUND THEN
202849 
202850 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
202851 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
202852 
202853 FOR header_record IN header_cur
202854 LOOP
202855     l_array_header_events(header_record.event_id) := header_record.event_id;
202856 END LOOP;
202857 
202858 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
202859 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
202860 
202861 fnd_file.put_line(fnd_file.LOG, '                    ');
202862 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
202863 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
202864 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
202865 
202866 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
202867 LOOP
202868 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
202869 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
202870         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
202871 	END IF;
202872 END LOOP;
202873 
202874 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
202875 fnd_file.put_line(fnd_file.LOG, '                    ');
202876 
202877 
202878 xla_exceptions_pkg.raise_message
202879       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_303');
202880 
202881 
202882 WHEN OTHERS THEN
202883    xla_exceptions_pkg.raise_message
202884       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventType_303');
202885 END EventType_303;
202886 --
202887 
202888 ---------------------------------------
202889 --
202890 -- PRIVATE PROCEDURE
202891 --         insert_sources_304
202892 --
202893 ----------------------------------------
202894 --
202895 PROCEDURE insert_sources_304(
202896                                 p_target_ledger_id       IN NUMBER
202897                               , p_language               IN VARCHAR2
202898                               , p_sla_ledger_id          IN NUMBER
202899                               , p_pad_start_date         IN DATE
202900                               , p_pad_end_date           IN DATE
202901                          )
202902 IS
202903 
202904 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'VARIANCE_ALL';
202905 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'VARIANCE';
202906 p_apps_owner                   VARCHAR2(30);
202907 l_log_module                   VARCHAR2(240);
202908 BEGIN
202909 IF g_log_enabled THEN
202910       l_log_module := C_DEFAULT_MODULE||'.insert_sources_304';
202911 END IF;
202912 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
202913 
202914       trace
202915          (p_msg      => 'BEGIN of insert_sources_304'
202916          ,p_level    => C_LEVEL_PROCEDURE
202917          ,p_module   => l_log_module);
202918 
202919 END IF;
202920 
202921 -- select APPS owner
202922 SELECT oracle_username
202923   INTO p_apps_owner
202924   FROM fnd_oracle_userid
202925  WHERE read_only_flag = 'U'
202926 ;
202927 
202928 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
202929       trace
202930          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
202931                         ' - p_language = '||p_language||
202932                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
202933                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
202934                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
202935                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
202936          ,p_level    => C_LEVEL_STATEMENT
202937          ,p_module   => l_log_module);
202938 END IF;
202939 
202940 
202941 --
202942 INSERT INTO xla_diag_sources --hdr2
202943 (
202944         event_id
202945       , ledger_id
202946       , sla_ledger_id
202947       , description_language
202948       , object_name
202949       , object_type_code
202950       , line_number
202951       , source_application_id
202952       , source_type_code
202953       , source_code
202954       , source_value
202955       , source_meaning
202956       , created_by
202957       , creation_date
202958       , last_update_date
202959       , last_updated_by
202960       , last_update_login
202961       , program_update_date
202962       , program_application_id
202963       , program_id
202964       , request_id
202965 )
202966 SELECT
202967         event_id
202968       , p_target_ledger_id
202969       , p_sla_ledger_id
202970       , p_language
202971       , object_name
202972       , object_type_code
202973       , line_number
202974       , source_application_id
202975       , source_type_code
202976       , source_code
202977       , SUBSTR(source_value ,1,1996)
202978       , SUBSTR(source_meaning ,1,200)
202979       , xla_environment_pkg.g_Usr_Id
202980       , TRUNC(SYSDATE)
202981       , TRUNC(SYSDATE)
202982       , xla_environment_pkg.g_Usr_Id
202983       , xla_environment_pkg.g_Login_Id
202984       , TRUNC(SYSDATE)
202985       , xla_environment_pkg.g_Prog_Appl_Id
202986       , xla_environment_pkg.g_Prog_Id
202987       , xla_environment_pkg.g_Req_Id
202988   FROM (
202989        SELECT xet.event_id                  event_id
202990             , 0                          line_number
202991             , CASE r
202992                WHEN 1 THEN 'CST_XLA_WIP_HEADERS_V' 
202993                 WHEN 2 THEN 'CST_XLA_WIP_HEADERS_V' 
202994                 WHEN 3 THEN 'CST_XLA_WIP_HEADERS_V' 
202995                 WHEN 4 THEN 'CST_XLA_WIP_HEADERS_V' 
202996                 WHEN 5 THEN 'CST_XLA_WIP_HEADERS_V' 
202997                 WHEN 6 THEN 'CST_XLA_WIP_HEADERS_V' 
202998                 
202999                ELSE null
203000               END                           object_name
203001             , CASE r
203002                 WHEN 1 THEN 'HEADER' 
203003                 WHEN 2 THEN 'HEADER' 
203004                 WHEN 3 THEN 'HEADER' 
203005                 WHEN 4 THEN 'HEADER' 
203006                 WHEN 5 THEN 'HEADER' 
203007                 WHEN 6 THEN 'HEADER' 
203008                 
203009                 ELSE null
203010               END                           object_type_code
203011             , CASE r
203012                 WHEN 1 THEN '707' 
203013                 WHEN 2 THEN '707' 
203014                 WHEN 3 THEN '707' 
203015                 WHEN 4 THEN '707' 
203016                 WHEN 5 THEN '707' 
203017                 WHEN 6 THEN '707' 
203018                 
203019                 ELSE null
203020               END                           source_application_id
203021             , 'S'             source_type_code
203022             , CASE r
203023                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
203024                 WHEN 2 THEN 'CURRENCY_CODE' 
203025                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
203026                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
203027                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
203028                 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR' 
203029                 
203030                 ELSE null
203031               END                           source_code
203032             , CASE r
203033                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
203034                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
203035                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
203036                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
203037                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
203038                 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
203039                 
203040                 ELSE null
203041               END                           source_value
203042             , CASE r
203043                 WHEN 1 THEN fvl12.meaning
203044                 WHEN 6 THEN fvl38.meaning
203045                 
203046                 ELSE null
203047               END               source_meaning
203048          FROM xla_events_gt     xet  
203049       , CST_XLA_WIP_HEADERS_V  h1
203050   , fnd_lookup_values    fvl12
203051   , fnd_lookup_values    fvl38
203052              ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
203053          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
203054            AND xet.event_class_code = C_EVENT_CLASS_CODE
203055               AND h1.event_id = xet.event_id
203056    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
203057   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
203058   AND fvl12.view_application_id(+) = 700
203059   AND fvl12.language(+)            = USERENV('LANG')
203060      AND fvl38.lookup_type(+)         = 'YES_NO'
203061   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
203062   AND fvl38.view_application_id(+) = 0
203063   AND fvl38.language(+)            = USERENV('LANG')
203064   
203065 )
203066 ;
203067 --
203068 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
203069 
203070       trace
203071          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
203072          ,p_level    => C_LEVEL_STATEMENT
203073          ,p_module   => l_log_module);
203074 
203075 END IF;
203076 --
203077 
203078 
203079 
203080 --
203081 INSERT INTO xla_diag_sources  --line2
203082 (
203083         event_id
203084       , ledger_id
203085       , sla_ledger_id
203086       , description_language
203087       , object_name
203088       , object_type_code
203089       , line_number
203090       , source_application_id
203091       , source_type_code
203092       , source_code
203093       , source_value
203094       , source_meaning
203095       , created_by
203096       , creation_date
203097       , last_update_date
203098       , last_updated_by
203099       , last_update_login
203100       , program_update_date
203101       , program_application_id
203102       , program_id
203103       , request_id
203104 )
203105 SELECT  event_id
203106       , p_target_ledger_id
203107       , p_sla_ledger_id
203108       , p_language
203109       , object_name
203110       , object_type_code
203111       , line_number
203112       , source_application_id
203113       , source_type_code
203114       , source_code
203115       , SUBSTR(source_value,1,1996)
203116       , SUBSTR(source_meaning ,1,200)
203117       , xla_environment_pkg.g_Usr_Id
203118       , TRUNC(SYSDATE)
203119       , TRUNC(SYSDATE)
203120       , xla_environment_pkg.g_Usr_Id
203121       , xla_environment_pkg.g_Login_Id
203122       , TRUNC(SYSDATE)
203123       , xla_environment_pkg.g_Prog_Appl_Id
203124       , xla_environment_pkg.g_Prog_Id
203125       , xla_environment_pkg.g_Req_Id
203126   FROM (
203127        SELECT xet.event_id                  event_id
203128             , l2.line_number                 line_number
203129             , CASE r
203130                WHEN 1 THEN 'CST_XLA_WIP_LINES_V' 
203131                 WHEN 2 THEN 'CST_XLA_WIP_LINES_V' 
203132                 WHEN 3 THEN 'CST_XLA_WIP_LINES_V' 
203133                 WHEN 4 THEN 'CST_XLA_WIP_LINES_V' 
203134                 WHEN 5 THEN 'CST_XLA_WIP_LINES_V' 
203135                 
203136                ELSE null
203137               END                           object_name
203138             , CASE r
203139                 WHEN 1 THEN 'LINE' 
203140                 WHEN 2 THEN 'LINE' 
203141                 WHEN 3 THEN 'LINE' 
203142                 WHEN 4 THEN 'LINE' 
203143                 WHEN 5 THEN 'LINE' 
203144                 
203145                 ELSE null
203146               END                           object_type_code
203147             , CASE r
203148                 WHEN 1 THEN '707' 
203149                 WHEN 2 THEN '707' 
203150                 WHEN 3 THEN '707' 
203151                 WHEN 4 THEN '707' 
203152                 WHEN 5 THEN '707' 
203153                 
203154                 ELSE null
203155               END                           source_application_id
203156             , 'S'             source_type_code
203157             , CASE r
203158                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
203159                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
203160                 WHEN 3 THEN 'ENTERED_AMOUNT' 
203161                 WHEN 4 THEN 'ACCOUNTED_AMOUNT' 
203162                 WHEN 5 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
203163                 
203164                 ELSE null
203165               END                           source_code
203166             , CASE r
203167                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
203168                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
203169                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
203170                 WHEN 4 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
203171                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
203172                 
203173                 ELSE null
203174               END                           source_value
203175             , null              source_meaning
203176          FROM  xla_events_gt     xet  
203177         , CST_XLA_WIP_LINES_V  l2
203178             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
203179         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
203180           AND xet.event_class_code = C_EVENT_CLASS_CODE
203181             AND l2.event_id          = xet.event_id
203182 
203183 )
203184 ;
203185 --
203186 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
203187 
203188       trace
203189          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
203190          ,p_level    => C_LEVEL_STATEMENT
203191          ,p_module   => l_log_module);
203192 
203193 END IF;
203194 
203195 
203196 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
203197       trace
203198          (p_msg      => 'END of insert_sources_304'
203199          ,p_level    => C_LEVEL_PROCEDURE
203200          ,p_module   => l_log_module);
203201 END IF;
203202 EXCEPTION
203203   WHEN xla_exceptions_pkg.application_exception THEN
203204       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
203205             trace
203206                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
203207                ,p_level    => C_LEVEL_EXCEPTION
203208                ,p_module   => l_log_module);
203209       END IF;
203210       RAISE;
203211   WHEN OTHERS THEN
203212       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
203213             trace
203214                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
203215                ,p_level    => C_LEVEL_EXCEPTION
203216                ,p_module   => l_log_module);
203217        END IF;
203218        xla_exceptions_pkg.raise_message
203219            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_304');
203220 END insert_sources_304;
203221 --
203222 
203223 ---------------------------------------
203224 --
203225 -- PRIVATE FUNCTION
203226 --         EventClass_304
203227 --
203228 ----------------------------------------
203229 --
203230 FUNCTION EventClass_304
203231        (p_application_id         IN NUMBER
203232        ,p_base_ledger_id         IN NUMBER
203233        ,p_target_ledger_id       IN NUMBER
203234        ,p_language               IN VARCHAR2
203235        ,p_currency_code          IN VARCHAR2
203236        ,p_sla_ledger_id          IN NUMBER
203237        ,p_pad_start_date         IN DATE
203238        ,p_pad_end_date           IN DATE
203239        ,p_primary_ledger_id      IN NUMBER)
203240 RETURN BOOLEAN IS
203241 --
203242 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'VARIANCE_ALL';
203243 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'VARIANCE';
203244 
203245 l_calculate_acctd_flag   VARCHAR2(1) :='N';
203246 l_calculate_g_l_flag     VARCHAR2(1) :='N';
203247 --
203248 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
203249 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
203250 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
203251 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
203252 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
203253 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
203254 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
203255 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
203256 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
203257 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
203258 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
203259 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
203260 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
203261 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
203262 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
203263 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
203264 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
203265 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
203266 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
203267 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
203268 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
203269 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
203270 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
203271 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
203272 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
203273 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
203274 
203275 l_event_id                             NUMBER;
203276 l_previous_event_id                    NUMBER;
203277 l_first_event_id                       NUMBER;
203278 l_last_event_id                        NUMBER;
203279 
203280 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
203281 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
203282 --
203283 --
203284 l_result                    BOOLEAN := TRUE;
203285 l_rows                      NUMBER  := 1000;
203286 l_event_type_name           VARCHAR2(80) := 'All';
203287 l_event_class_name          VARCHAR2(80) := 'WIP Variance';
203288 l_description               VARCHAR2(4000);
203289 l_transaction_reversal      NUMBER;
203290 l_ae_header_id              NUMBER;
203291 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
203292 l_log_module                VARCHAR2(240);
203293 --
203294 l_acct_reversal_source      VARCHAR2(30);
203295 l_trx_reversal_source       VARCHAR2(30);
203296 
203297 l_continue_with_lines       BOOLEAN := TRUE;
203298 --
203299 l_acc_rev_gl_date_source    DATE;                      -- 4262811
203300 --
203301 type t_array_event_id is table of number index by binary_integer;
203302 
203303 l_rec_array_event                    t_rec_array_event;
203304 l_null_rec_array_event               t_rec_array_event;
203305 l_array_ae_header_id                 xla_number_array_type;
203306 l_actual_flag                        VARCHAR2(1) := NULL;
203307 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
203308 l_balance_type_code                  VARCHAR2(1) :=NULL;
203309 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
203310 
203311 --
203312 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
203313 --
203314 
203315 TYPE t_array_source_12 IS TABLE OF CST_XLA_WIP_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
203316 TYPE t_array_source_15 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
203317 TYPE t_array_source_19 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
203318 TYPE t_array_source_20 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
203319 TYPE t_array_source_21 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
203320 TYPE t_array_source_38 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
203321 
203322 TYPE t_array_source_4 IS TABLE OF CST_XLA_WIP_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
203323 TYPE t_array_source_11 IS TABLE OF CST_XLA_WIP_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
203324 TYPE t_array_source_18 IS TABLE OF CST_XLA_WIP_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
203325 TYPE t_array_source_22 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
203326 TYPE t_array_source_24 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
203327 
203328 l_array_source_12              t_array_source_12;
203329 l_array_source_12_meaning      t_array_lookup_meaning;
203330 l_array_source_15              t_array_source_15;
203331 l_array_source_19              t_array_source_19;
203332 l_array_source_20              t_array_source_20;
203333 l_array_source_21              t_array_source_21;
203334 l_array_source_38              t_array_source_38;
203335 l_array_source_38_meaning      t_array_lookup_meaning;
203336 
203337 l_array_source_4      t_array_source_4;
203338 l_array_source_11      t_array_source_11;
203339 l_array_source_18      t_array_source_18;
203340 l_array_source_22      t_array_source_22;
203341 l_array_source_24      t_array_source_24;
203342 
203343 --
203344 CURSOR header_cur
203345 IS
203346 SELECT /*+ leading(xet) cardinality(xet,1) */
203347 -- Event Class Code: VARIANCE
203348     xet.entity_id
203349    ,xet.legal_entity_id
203350    ,xet.entity_code
203351    ,xet.transaction_number
203352    ,xet.event_id
203353    ,xet.event_class_code
203354    ,xet.event_type_code
203355    ,xet.event_number
203356    ,xet.event_date
203357    ,xet.transaction_date
203358    ,xet.reference_num_1
203359    ,xet.reference_num_2
203360    ,xet.reference_num_3
203361    ,xet.reference_num_4
203362    ,xet.reference_char_1
203363    ,xet.reference_char_2
203364    ,xet.reference_char_3
203365    ,xet.reference_char_4
203366    ,xet.reference_date_1
203367    ,xet.reference_date_2
203368    ,xet.reference_date_3
203369    ,xet.reference_date_4
203370    ,xet.event_created_by
203371    ,xet.budgetary_control_flag 
203372   , h1.DISTRIBUTION_TYPE    source_12
203373   , fvl12.meaning   source_12_meaning
203374   , h1.CURRENCY_CODE    source_15
203375   , h1.CURRENCY_CONVERSION_DATE    source_19
203376   , h1.CURRENCY_CONVERSION_RATE    source_20
203377   , h1.CURRENCY_CONVERSION_TYPE    source_21
203378   , h1.TRANSFER_TO_GL_INDICATOR    source_38
203379   , fvl38.meaning   source_38_meaning
203380   FROM xla_events_gt     xet 
203381   , CST_XLA_WIP_HEADERS_V  h1
203382   , fnd_lookup_values    fvl12
203383   , fnd_lookup_values    fvl38
203384  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
203385    and xet.event_class_code = C_EVENT_CLASS_CODE
203386    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
203387    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
203388   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
203389   AND fvl12.view_application_id(+) = 700
203390   AND fvl12.language(+)            = USERENV('LANG')
203391      AND fvl38.lookup_type(+)         = 'YES_NO'
203392   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
203393   AND fvl38.view_application_id(+) = 0
203394   AND fvl38.language(+)            = USERENV('LANG')
203395   
203396  ORDER BY event_id
203397 ;
203398 
203399 
203400 --
203401 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
203402 IS
203403 SELECT  /*+ leading(xet) cardinality(xet,1) */
203404 -- Event Class Code: VARIANCE
203405     xet.entity_id
203406    ,xet.legal_entity_id
203407    ,xet.entity_code
203408    ,xet.transaction_number
203409    ,xet.event_id
203410    ,xet.event_class_code
203411    ,xet.event_type_code
203412    ,xet.event_number
203413    ,xet.event_date
203414    ,xet.transaction_date
203415    ,xet.reference_num_1
203416    ,xet.reference_num_2
203417    ,xet.reference_num_3
203418    ,xet.reference_num_4
203419    ,xet.reference_char_1
203420    ,xet.reference_char_2
203421    ,xet.reference_char_3
203422    ,xet.reference_char_4
203423    ,xet.reference_date_1
203424    ,xet.reference_date_2
203425    ,xet.reference_date_3
203426    ,xet.reference_date_4
203427    ,xet.event_created_by
203428    ,xet.budgetary_control_flag
203429  , l2.LINE_NUMBER  
203430   , l2.CODE_COMBINATION_ID    source_4
203431   , l2.DISTRIBUTION_IDENTIFIER    source_11
203432   , l2.ENTERED_AMOUNT    source_18
203433   , l2.ACCOUNTED_AMOUNT    source_22
203434   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
203435   FROM xla_events_gt     xet 
203436   , CST_XLA_WIP_LINES_V  l2
203437  WHERE xet.event_id between x_first_event_id and x_last_event_id
203438    and xet.event_date between p_pad_start_date and p_pad_end_date
203439    and xet.event_class_code = C_EVENT_CLASS_CODE
203440    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
203441 ;
203442 
203443 --
203444 BEGIN
203445 IF g_log_enabled THEN
203446    l_log_module := C_DEFAULT_MODULE||'.EventClass_304';
203447 END IF;
203448 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
203449    trace
203450       (p_msg      => 'BEGIN of EventClass_304'
203451       ,p_level    => C_LEVEL_PROCEDURE
203452       ,p_module   => l_log_module);
203453 END IF;
203454 
203455 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
203456    trace
203457       (p_msg      => 'p_application_id = '||p_application_id||
203458                      ' - p_base_ledger_id = '||p_base_ledger_id||
203459                      ' - p_target_ledger_id  = '||p_target_ledger_id||
203460                      ' - p_language = '||p_language||
203461                      ' - p_currency_code = '||p_currency_code||
203462                      ' - p_sla_ledger_id = '||p_sla_ledger_id
203463       ,p_level    => C_LEVEL_STATEMENT
203464       ,p_module   => l_log_module);
203465 END IF;
203466 --
203467 -- initialze arrays
203468 --
203469 g_array_event.DELETE;
203470 l_rec_array_event := l_null_rec_array_event;
203471 --
203472 --------------------------------------
203473 -- 4262811 Initialze MPA Line Number
203474 --------------------------------------
203475 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
203476 
203477 --
203478 
203479 --
203480 OPEN header_cur;
203481 --
203482 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
203483    trace
203484    (p_msg      => 'SQL - FETCH header_cur'
203485    ,p_level    => C_LEVEL_STATEMENT
203486    ,p_module   => l_log_module);
203487 END IF;
203488 --
203489 LOOP
203490 FETCH header_cur BULK COLLECT INTO
203491         l_array_entity_id
203492       , l_array_legal_entity_id
203493       , l_array_entity_code
203494       , l_array_transaction_num
203495       , l_array_event_id
203496       , l_array_class_code
203497       , l_array_event_type
203498       , l_array_event_number
203499       , l_array_event_date
203500       , l_array_transaction_date
203501       , l_array_reference_num_1
203502       , l_array_reference_num_2
203503       , l_array_reference_num_3
203504       , l_array_reference_num_4
203505       , l_array_reference_char_1
203506       , l_array_reference_char_2
203507       , l_array_reference_char_3
203508       , l_array_reference_char_4
203509       , l_array_reference_date_1
203510       , l_array_reference_date_2
203511       , l_array_reference_date_3
203512       , l_array_reference_date_4
203513       , l_array_event_created_by
203514       , l_array_budgetary_control_flag 
203515       , l_array_source_12
203516       , l_array_source_12_meaning
203517       , l_array_source_15
203518       , l_array_source_19
203519       , l_array_source_20
203520       , l_array_source_21
203521       , l_array_source_38
203522       , l_array_source_38_meaning
203523       LIMIT l_rows;
203524 --
203525 IF (C_LEVEL_EVENT >= g_log_level) THEN
203526    trace
203527    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
203528    ,p_level    => C_LEVEL_EVENT
203529    ,p_module   => l_log_module);
203530 END IF;
203531 --
203532 EXIT WHEN l_array_entity_id.COUNT = 0;
203533 
203534 -- initialize arrays
203535 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
203536 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
203537 
203538 --
203539 -- Bug 4458708
203540 --
203541 XLA_AE_LINES_PKG.g_LineNumber := 0;
203542 
203543 
203544 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
203545 g_last_hdr_idx := l_array_event_id.LAST;
203546 --
203547 -- loop for the headers. Each iteration is for each header extract row
203548 -- fetched in header cursor
203549 --
203550 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
203551 
203552 --
203553 -- set event info as cache for other routines to refer event attributes
203554 --
203555 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
203556    (p_application_id           => p_application_id
203557    ,p_primary_ledger_id        => p_primary_ledger_id
203558    ,p_base_ledger_id           => p_base_ledger_id
203559    ,p_target_ledger_id         => p_target_ledger_id
203560    ,p_entity_id                => l_array_entity_id(hdr_idx)
203561    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
203562    ,p_entity_code              => l_array_entity_code(hdr_idx)
203563    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
203564    ,p_event_id                 => l_array_event_id(hdr_idx)
203565    ,p_event_class_code         => l_array_class_code(hdr_idx)
203566    ,p_event_type_code          => l_array_event_type(hdr_idx)
203567    ,p_event_number             => l_array_event_number(hdr_idx)
203568    ,p_event_date               => l_array_event_date(hdr_idx)
203569    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
203570    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
203571    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
203572    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
203573    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
203574    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
203575    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
203576    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
203577    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
203578    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
203579    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
203580    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
203581    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
203582    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
203583    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
203584 
203585 --
203586 -- set the status of entry to C_VALID (0)
203587 --
203588 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
203589 
203590 --
203591 -- initialize a row for ae header
203592 --
203593 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
203594 
203595 l_event_id := l_array_event_id(hdr_idx);
203596 
203597 --
203598 -- storing the hdr_idx for event. May be used by line cursor.
203599 --
203600 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
203601 
203602 --
203603 -- store sources from header extract. This can be improved to
203604 -- store only those sources from header extract that may be used in lines
203605 --
203606 
203607 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
203608 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
203609 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
203610 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
203611 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
203612 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
203613 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
203614 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
203615 
203616 --
203617 -- initilaize the status of ae headers for diffrent balance types
203618 -- the status is initialised to C_NOT_CREATED (2)
203619 --
203620 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
203621 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
203622 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
203623 
203624 --
203625 -- call api to validate and store accounting attributes for header
203626 --
203627 
203628 ------------------------------------------------------------
203629 -- Accrual Reversal : to get date for Standard Source (NONE)
203630 ------------------------------------------------------------
203631 l_acc_rev_gl_date_source := NULL;
203632 
203633      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
203634       l_rec_acct_attrs.array_date_value(1) := 
203635 xla_ae_sources_pkg.GetSystemSourceDate(
203636    p_source_code           => 'XLA_REFERENCE_DATE_1'
203637  , p_source_type_code      => 'Y'
203638  , p_source_application_id =>  602
203639 );
203640      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
203641       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
203642 
203643 
203644 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
203645 
203646 XLA_AE_HEADER_PKG.SetJeCategoryName;
203647 
203648 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
203649 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
203650 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
203651 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
203652 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
203653 
203654 
203655 -- No header level analytical criteria
203656 
203657 --
203658 --accounting attribute enhancement, bug 3612931
203659 --
203660 l_trx_reversal_source := SUBSTR(NULL, 1,30);
203661 
203662 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
203663    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
203664 
203665    xla_accounting_err_pkg.build_message
203666       (p_appli_s_name            => 'XLA'
203667       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
203668       ,p_token_1                 => 'ACCT_ATTR_NAME'
203669       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
203670       ,p_token_2                 => 'PRODUCT_NAME'
203671       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
203672       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
203673       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
203674       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
203675 
203676 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
203677    --
203678    -- following sets the accounting attributes needed to reverse
203679    -- accounting for a distributeion
203680    --
203681    xla_ae_lines_pkg.SetTrxReversalAttrs
203682       (p_event_id              => l_event_id
203683       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
203684       ,p_trx_reversal_source   => l_trx_reversal_source);
203685 
203686 END IF;
203687 
203688 
203689 ----------------------------------------------------------------
203690 -- 4262811 -  update the header statuses to invalid in need be
203691 ----------------------------------------------------------------
203692 --
203693 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
203694 
203695 
203696   -----------------------------------------------
203697   -- No accrual reversal for the event class/type
203698   -----------------------------------------------
203699 ----------------------------------------------------------------
203700 
203701 --
203702 -- this ends the header loop iteration for one bulk fetch
203703 --
203704 END LOOP;
203705 
203706 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
203707 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
203708 
203709 --
203710 -- insert dummy rows into lines gt table that were created due to
203711 -- transaction reversals
203712 --
203713 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
203714    l_result := XLA_AE_LINES_PKG.InsertLines;
203715 END IF;
203716 
203717 --
203718 -- reset the temp_line_num for each set of events fetched from header
203719 -- cursor rather than doing it for each new event in line cursor
203720 -- Bug 3939231
203721 --
203722 xla_ae_lines_pkg.g_temp_line_num := 0;
203723 
203724 
203725 
203726 --
203727 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
203728 --
203729 --
203730 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
203731 
203732       trace
203733          (p_msg      => 'SQL - FETCH line_cur'
203734          ,p_level    => C_LEVEL_STATEMENT
203735          ,p_module   => l_log_module);
203736 
203737 END IF;
203738 --
203739 --
203740 LOOP
203741   --
203742   FETCH line_cur BULK COLLECT INTO
203743         l_array_entity_id
203744       , l_array_legal_entity_id
203745       , l_array_entity_code
203746       , l_array_transaction_num
203747       , l_array_event_id
203748       , l_array_class_code
203749       , l_array_event_type
203750       , l_array_event_number
203751       , l_array_event_date
203752       , l_array_transaction_date
203753       , l_array_reference_num_1
203754       , l_array_reference_num_2
203755       , l_array_reference_num_3
203756       , l_array_reference_num_4
203757       , l_array_reference_char_1
203758       , l_array_reference_char_2
203759       , l_array_reference_char_3
203760       , l_array_reference_char_4
203761       , l_array_reference_date_1
203762       , l_array_reference_date_2
203763       , l_array_reference_date_3
203764       , l_array_reference_date_4
203765       , l_array_event_created_by
203766       , l_array_budgetary_control_flag
203767       , l_array_extract_line_num 
203768       , l_array_source_4
203769       , l_array_source_11
203770       , l_array_source_18
203771       , l_array_source_22
203772       , l_array_source_24
203773       LIMIT l_rows;
203774 
203775   --
203776   IF (C_LEVEL_EVENT >= g_log_level) THEN
203777             trace
203778                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
203779                ,p_level    => C_LEVEL_EVENT
203780                ,p_module   => l_log_module);
203781   END IF;
203782   --
203783   EXIT WHEN l_array_entity_id.count = 0;
203784 
203785   XLA_AE_LINES_PKG.g_rec_lines := null;
203786 
203787 --
203788 -- Bug 4458708
203789 --
203790 XLA_AE_LINES_PKG.g_LineNumber := 0;
203791 --
203792 --
203793 
203794 FOR Idx IN 1..l_array_event_id.count LOOP
203795    --
203796    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
203797    --
203798    l_event_id := l_array_event_id(idx);  -- 5648433
203799 
203800    --
203801    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
203802    --
203803 
203804    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
203805              (g_array_event(l_event_id).array_value_num('header_index'))
203806          ,'N'
203807          ) <> 'Y'
203808    THEN
203809       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
203810          trace
203811             (p_msg      => 'Trancaction revesal option is not Y '
203812             ,p_level    => C_LEVEL_STATEMENT
203813             ,p_module   => l_log_module);
203814       END IF;
203815 
203816 --
203817 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
203818 --
203819 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
203820 --
203821 -- set event info as cache for other routines to refer event attributes
203822 --
203823 
203824 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
203825    l_previous_event_id := l_event_id;
203826 
203827    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
203828       (p_application_id           => p_application_id
203829       ,p_primary_ledger_id        => p_primary_ledger_id
203830       ,p_base_ledger_id           => p_base_ledger_id
203831       ,p_target_ledger_id         => p_target_ledger_id
203832       ,p_entity_id                => l_array_entity_id(Idx)
203833       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
203834       ,p_entity_code              => l_array_entity_code(Idx)
203835       ,p_transaction_num          => l_array_transaction_num(Idx)
203836       ,p_event_id                 => l_array_event_id(Idx)
203837       ,p_event_class_code         => l_array_class_code(Idx)
203838       ,p_event_type_code          => l_array_event_type(Idx)
203839       ,p_event_number             => l_array_event_number(Idx)
203840       ,p_event_date               => l_array_event_date(Idx)
203841       ,p_transaction_date         => l_array_transaction_date(Idx)
203842       ,p_reference_num_1          => l_array_reference_num_1(Idx)
203843       ,p_reference_num_2          => l_array_reference_num_2(Idx)
203844       ,p_reference_num_3          => l_array_reference_num_3(Idx)
203845       ,p_reference_num_4          => l_array_reference_num_4(Idx)
203846       ,p_reference_char_1         => l_array_reference_char_1(Idx)
203847       ,p_reference_char_2         => l_array_reference_char_2(Idx)
203848       ,p_reference_char_3         => l_array_reference_char_3(Idx)
203849       ,p_reference_char_4         => l_array_reference_char_4(Idx)
203850       ,p_reference_date_1         => l_array_reference_date_1(Idx)
203851       ,p_reference_date_2         => l_array_reference_date_2(Idx)
203852       ,p_reference_date_3         => l_array_reference_date_3(Idx)
203853       ,p_reference_date_4         => l_array_reference_date_4(Idx)
203854       ,p_event_created_by         => l_array_event_created_by(Idx)
203855       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
203856        --
203857 END IF;
203858 
203859 
203860 
203861 --
203862 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
203863 
203864 l_acct_reversal_source := SUBSTR(NULL, 1,30);
203865 
203866 IF l_continue_with_lines THEN
203867    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
203868       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
203869 
203870       xla_accounting_err_pkg.build_message
203871          (p_appli_s_name            => 'XLA'
203872          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
203873          ,p_token_1                 => 'LINE_NUMBER'
203874          ,p_value_1                 => l_array_extract_line_num(Idx)
203875          ,p_token_2                 => 'PRODUCT_NAME'
203876          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
203877          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
203878          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
203879          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
203880 
203881    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
203882       --
203883       -- following sets the accounting attributes needed to reverse
203884       -- accounting for a distributeion
203885       --
203886 
203887       --
203888       -- 5217187
203889       --
203890       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
203891       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
203892                                        g_array_event(l_event_id).array_value_num('header_index'));
203893       --
203894       --
203895 
203896       -- No reversal code generated
203897 
203898       xla_ae_lines_pkg.SetAcctReversalAttrs
203899          (p_event_id             => l_event_id
203900          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
203901          ,p_calculate_acctd_flag => l_calculate_acctd_flag
203902          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
203903    END IF;
203904 
203905    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
203906        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
203907 
203908 --
203909 AcctLineType_250 (
203910  p_application_id  => p_application_id
203911  ,p_event_id     => l_event_id
203912  ,p_calculate_acctd_flag => l_calculate_acctd_flag
203913  ,p_calculate_g_l_flag => l_calculate_g_l_flag
203914  ,p_actual_flag => l_actual_flag
203915  ,p_balance_type_code => l_balance_type_code
203916  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
203917  
203918  , p_source_4 => l_array_source_4(Idx)
203919  , p_source_11 => l_array_source_11(Idx)
203920  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
203921  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
203922  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
203923  , p_source_18 => l_array_source_18(Idx)
203924  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
203925  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
203926  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
203927  , p_source_22 => l_array_source_22(Idx)
203928  , p_source_24 => l_array_source_24(Idx)
203929  );
203930 If(l_balance_type_code = 'A') THEN
203931   l_actual_gain_loss_ref := l_gain_or_loss_ref;
203932 END IF;
203933 
203934 --
203935 
203936 
203937 --
203938 AcctLineType_256 (
203939  p_application_id  => p_application_id
203940  ,p_event_id     => l_event_id
203941  ,p_calculate_acctd_flag => l_calculate_acctd_flag
203942  ,p_calculate_g_l_flag => l_calculate_g_l_flag
203943  ,p_actual_flag => l_actual_flag
203944  ,p_balance_type_code => l_balance_type_code
203945  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
203946  
203947  , p_source_4 => l_array_source_4(Idx)
203948  , p_source_11 => l_array_source_11(Idx)
203949  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
203950  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
203951  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
203952  , p_source_18 => l_array_source_18(Idx)
203953  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
203954  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
203955  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
203956  , p_source_22 => l_array_source_22(Idx)
203957  , p_source_24 => l_array_source_24(Idx)
203958  );
203959 If(l_balance_type_code = 'A') THEN
203960   l_actual_gain_loss_ref := l_gain_or_loss_ref;
203961 END IF;
203962 
203963 --
203964 
203965       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
203966       -- or secondary ledger that has different currency with primary
203967       -- or alc that is calculated by sla
203968       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
203969             (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'))
203970 
203971 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
203972 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
203973           AND (l_actual_flag = 'A')) THEN
203974         XLA_AE_LINES_PKG.CreateGainOrLossLines(
203975           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
203976          ,p_application_id   => p_application_id
203977          ,p_amb_context_code => 'DEFAULT'
203978          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
203979          ,p_event_class_code => C_EVENT_CLASS_CODE
203980          ,p_event_type_code  => C_EVENT_TYPE_CODE
203981          
203982          ,p_gain_ccid        => -1
203983          ,p_loss_ccid        => -1
203984 
203985          ,p_actual_flag      => l_actual_flag
203986          ,p_enc_flag         => null
203987          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
203988          ,p_enc_g_l_ref      => null
203989          );
203990       END IF;
203991    END IF;
203992 END IF;
203993 
203994    ELSE
203995       --
203996       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
203997       --
203998       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
203999          trace
204000             (p_msg      => 'Trancaction revesal option is Y'
204001             ,p_level    => C_LEVEL_STATEMENT
204002             ,p_module   => l_log_module);
204003       END IF;
204004    END IF;
204005 
204006 END LOOP;
204007 l_result := XLA_AE_LINES_PKG.InsertLines ;
204008 end loop;
204009 close line_cur;
204010 
204011 
204012 --
204013 -- insert headers into xla_ae_headers_gt table
204014 --
204015 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
204016 
204017 -- insert into errors table here.
204018 
204019 END LOOP;
204020 
204021 --
204022 -- 4865292
204023 --
204024 -- Compare g_hdr_extract_count with event count in
204025 -- CreateHeadersAndLines.
204026 --
204027 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
204028 
204029 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
204030    trace (p_msg     => '# rows extracted from header extract objects '
204031                     || ' (running total): '
204032                     || g_hdr_extract_count
204033          ,p_level   => C_LEVEL_STATEMENT
204034          ,p_module  => l_log_module);
204035 END IF;
204036 
204037 CLOSE header_cur;
204038 --
204039 
204040 --
204041 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
204042    trace
204043       (p_msg      => 'END of EventClass_304'
204044       ,p_level    => C_LEVEL_PROCEDURE
204045       ,p_module   => l_log_module);
204046 END IF;
204047 --
204048 RETURN l_result;
204049 EXCEPTION
204050 WHEN xla_exceptions_pkg.application_exception THEN
204051    
204052 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
204053 
204054    
204055 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
204056 
204057    RAISE;
204058 
204059 WHEN NO_DATA_FOUND THEN
204060 
204061 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
204062 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
204063 
204064 FOR header_record IN header_cur
204065 LOOP
204066     l_array_header_events(header_record.event_id) := header_record.event_id;
204067 END LOOP;
204068 
204069 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
204070 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
204071 
204072 fnd_file.put_line(fnd_file.LOG, '                    ');
204073 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
204074 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
204075 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
204076 
204077 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
204078 LOOP
204079 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
204080 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
204081         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
204082 	END IF;
204083 END LOOP;
204084 
204085 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
204086 fnd_file.put_line(fnd_file.LOG, '                    ');
204087 
204088 
204089 xla_exceptions_pkg.raise_message
204090       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_304');
204091 
204092 
204093 WHEN OTHERS THEN
204094    xla_exceptions_pkg.raise_message
204095       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_304');
204096 END EventClass_304;
204097 --
204098 
204099 ---------------------------------------
204100 --
204101 -- PRIVATE PROCEDURE
204102 --         insert_sources_305
204103 --
204104 ----------------------------------------
204105 --
204106 PROCEDURE insert_sources_305(
204107                                 p_target_ledger_id       IN NUMBER
204108                               , p_language               IN VARCHAR2
204109                               , p_sla_ledger_id          IN NUMBER
204110                               , p_pad_start_date         IN DATE
204111                               , p_pad_end_date           IN DATE
204112                          )
204113 IS
204114 
204115 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_COST_UPD_ALL';
204116 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'WIP_COST_UPD';
204117 p_apps_owner                   VARCHAR2(30);
204118 l_log_module                   VARCHAR2(240);
204119 BEGIN
204120 IF g_log_enabled THEN
204121       l_log_module := C_DEFAULT_MODULE||'.insert_sources_305';
204122 END IF;
204123 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
204124 
204125       trace
204126          (p_msg      => 'BEGIN of insert_sources_305'
204127          ,p_level    => C_LEVEL_PROCEDURE
204128          ,p_module   => l_log_module);
204129 
204130 END IF;
204131 
204132 -- select APPS owner
204133 SELECT oracle_username
204134   INTO p_apps_owner
204135   FROM fnd_oracle_userid
204136  WHERE read_only_flag = 'U'
204137 ;
204138 
204139 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
204140       trace
204141          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
204142                         ' - p_language = '||p_language||
204143                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
204144                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
204145                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
204146                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
204147          ,p_level    => C_LEVEL_STATEMENT
204148          ,p_module   => l_log_module);
204149 END IF;
204150 
204151 
204152 --
204153 INSERT INTO xla_diag_sources --hdr2
204154 (
204155         event_id
204156       , ledger_id
204157       , sla_ledger_id
204158       , description_language
204159       , object_name
204160       , object_type_code
204161       , line_number
204162       , source_application_id
204163       , source_type_code
204164       , source_code
204165       , source_value
204166       , source_meaning
204167       , created_by
204168       , creation_date
204169       , last_update_date
204170       , last_updated_by
204171       , last_update_login
204172       , program_update_date
204173       , program_application_id
204174       , program_id
204175       , request_id
204176 )
204177 SELECT
204178         event_id
204179       , p_target_ledger_id
204180       , p_sla_ledger_id
204181       , p_language
204182       , object_name
204183       , object_type_code
204184       , line_number
204185       , source_application_id
204186       , source_type_code
204187       , source_code
204188       , SUBSTR(source_value ,1,1996)
204189       , SUBSTR(source_meaning ,1,200)
204190       , xla_environment_pkg.g_Usr_Id
204191       , TRUNC(SYSDATE)
204192       , TRUNC(SYSDATE)
204193       , xla_environment_pkg.g_Usr_Id
204194       , xla_environment_pkg.g_Login_Id
204195       , TRUNC(SYSDATE)
204196       , xla_environment_pkg.g_Prog_Appl_Id
204197       , xla_environment_pkg.g_Prog_Id
204198       , xla_environment_pkg.g_Req_Id
204199   FROM (
204200        SELECT xet.event_id                  event_id
204201             , 0                          line_number
204202             , CASE r
204203                WHEN 1 THEN 'CST_XLA_WIP_HEADERS_V' 
204204                 WHEN 2 THEN 'CST_XLA_WIP_HEADERS_V' 
204205                 WHEN 3 THEN 'CST_XLA_WIP_HEADERS_V' 
204206                 WHEN 4 THEN 'CST_XLA_WIP_HEADERS_V' 
204207                 WHEN 5 THEN 'CST_XLA_WIP_HEADERS_V' 
204208                 WHEN 6 THEN 'CST_XLA_WIP_HEADERS_V' 
204209                 
204210                ELSE null
204211               END                           object_name
204212             , CASE r
204213                 WHEN 1 THEN 'HEADER' 
204214                 WHEN 2 THEN 'HEADER' 
204215                 WHEN 3 THEN 'HEADER' 
204216                 WHEN 4 THEN 'HEADER' 
204217                 WHEN 5 THEN 'HEADER' 
204218                 WHEN 6 THEN 'HEADER' 
204219                 
204220                 ELSE null
204221               END                           object_type_code
204222             , CASE r
204223                 WHEN 1 THEN '707' 
204224                 WHEN 2 THEN '707' 
204225                 WHEN 3 THEN '707' 
204226                 WHEN 4 THEN '707' 
204227                 WHEN 5 THEN '707' 
204228                 WHEN 6 THEN '707' 
204229                 
204230                 ELSE null
204231               END                           source_application_id
204232             , 'S'             source_type_code
204233             , CASE r
204234                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
204235                 WHEN 2 THEN 'CURRENCY_CODE' 
204236                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
204237                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
204238                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
204239                 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR' 
204240                 
204241                 ELSE null
204242               END                           source_code
204243             , CASE r
204244                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
204245                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
204246                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
204247                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
204248                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
204249                 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
204250                 
204251                 ELSE null
204252               END                           source_value
204253             , CASE r
204254                 WHEN 1 THEN fvl12.meaning
204255                 WHEN 6 THEN fvl38.meaning
204256                 
204257                 ELSE null
204258               END               source_meaning
204259          FROM xla_events_gt     xet  
204260       , CST_XLA_WIP_HEADERS_V  h1
204261   , fnd_lookup_values    fvl12
204262   , fnd_lookup_values    fvl38
204263              ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
204264          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
204265            AND xet.event_class_code = C_EVENT_CLASS_CODE
204266               AND h1.event_id = xet.event_id
204267    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
204268   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
204269   AND fvl12.view_application_id(+) = 700
204270   AND fvl12.language(+)            = USERENV('LANG')
204271      AND fvl38.lookup_type(+)         = 'YES_NO'
204272   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
204273   AND fvl38.view_application_id(+) = 0
204274   AND fvl38.language(+)            = USERENV('LANG')
204275   
204276 )
204277 ;
204278 --
204279 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
204280 
204281       trace
204282          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
204283          ,p_level    => C_LEVEL_STATEMENT
204284          ,p_module   => l_log_module);
204285 
204286 END IF;
204287 --
204288 
204289 
204290 
204291 --
204292 INSERT INTO xla_diag_sources  --line2
204293 (
204294         event_id
204295       , ledger_id
204296       , sla_ledger_id
204297       , description_language
204298       , object_name
204299       , object_type_code
204300       , line_number
204301       , source_application_id
204302       , source_type_code
204303       , source_code
204304       , source_value
204305       , source_meaning
204306       , created_by
204307       , creation_date
204308       , last_update_date
204309       , last_updated_by
204310       , last_update_login
204311       , program_update_date
204312       , program_application_id
204313       , program_id
204314       , request_id
204315 )
204316 SELECT  event_id
204317       , p_target_ledger_id
204318       , p_sla_ledger_id
204319       , p_language
204320       , object_name
204321       , object_type_code
204322       , line_number
204323       , source_application_id
204324       , source_type_code
204325       , source_code
204326       , SUBSTR(source_value,1,1996)
204327       , SUBSTR(source_meaning ,1,200)
204328       , xla_environment_pkg.g_Usr_Id
204329       , TRUNC(SYSDATE)
204330       , TRUNC(SYSDATE)
204331       , xla_environment_pkg.g_Usr_Id
204332       , xla_environment_pkg.g_Login_Id
204333       , TRUNC(SYSDATE)
204334       , xla_environment_pkg.g_Prog_Appl_Id
204335       , xla_environment_pkg.g_Prog_Id
204336       , xla_environment_pkg.g_Req_Id
204337   FROM (
204338        SELECT xet.event_id                  event_id
204339             , l2.line_number                 line_number
204340             , CASE r
204341                WHEN 1 THEN 'CST_XLA_WIP_LINES_V' 
204342                 WHEN 2 THEN 'CST_XLA_WIP_LINES_V' 
204343                 WHEN 3 THEN 'CST_XLA_WIP_LINES_V' 
204344                 WHEN 4 THEN 'CST_XLA_WIP_LINES_V' 
204345                 WHEN 5 THEN 'CST_XLA_WIP_LINES_V' 
204346                 
204347                ELSE null
204348               END                           object_name
204349             , CASE r
204350                 WHEN 1 THEN 'LINE' 
204351                 WHEN 2 THEN 'LINE' 
204352                 WHEN 3 THEN 'LINE' 
204353                 WHEN 4 THEN 'LINE' 
204354                 WHEN 5 THEN 'LINE' 
204355                 
204356                 ELSE null
204357               END                           object_type_code
204358             , CASE r
204359                 WHEN 1 THEN '707' 
204360                 WHEN 2 THEN '707' 
204361                 WHEN 3 THEN '707' 
204362                 WHEN 4 THEN '707' 
204363                 WHEN 5 THEN '707' 
204364                 
204365                 ELSE null
204366               END                           source_application_id
204367             , 'S'             source_type_code
204368             , CASE r
204369                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
204370                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
204371                 WHEN 3 THEN 'ENTERED_AMOUNT' 
204372                 WHEN 4 THEN 'ACCOUNTED_AMOUNT' 
204373                 WHEN 5 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
204374                 
204375                 ELSE null
204376               END                           source_code
204377             , CASE r
204378                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
204379                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
204380                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
204381                 WHEN 4 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
204382                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
204383                 
204384                 ELSE null
204385               END                           source_value
204386             , null              source_meaning
204387          FROM  xla_events_gt     xet  
204388         , CST_XLA_WIP_LINES_V  l2
204389             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
204390         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
204391           AND xet.event_class_code = C_EVENT_CLASS_CODE
204392             AND l2.event_id          = xet.event_id
204393 
204394 )
204395 ;
204396 --
204397 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
204398 
204399       trace
204400          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
204401          ,p_level    => C_LEVEL_STATEMENT
204402          ,p_module   => l_log_module);
204403 
204404 END IF;
204405 
204406 
204407 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
204408       trace
204409          (p_msg      => 'END of insert_sources_305'
204410          ,p_level    => C_LEVEL_PROCEDURE
204411          ,p_module   => l_log_module);
204412 END IF;
204413 EXCEPTION
204414   WHEN xla_exceptions_pkg.application_exception THEN
204415       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
204416             trace
204417                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
204418                ,p_level    => C_LEVEL_EXCEPTION
204419                ,p_module   => l_log_module);
204420       END IF;
204421       RAISE;
204422   WHEN OTHERS THEN
204423       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
204424             trace
204425                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
204426                ,p_level    => C_LEVEL_EXCEPTION
204427                ,p_module   => l_log_module);
204428        END IF;
204429        xla_exceptions_pkg.raise_message
204430            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_305');
204431 END insert_sources_305;
204432 --
204433 
204434 ---------------------------------------
204435 --
204436 -- PRIVATE FUNCTION
204437 --         EventClass_305
204438 --
204439 ----------------------------------------
204440 --
204441 FUNCTION EventClass_305
204442        (p_application_id         IN NUMBER
204443        ,p_base_ledger_id         IN NUMBER
204444        ,p_target_ledger_id       IN NUMBER
204445        ,p_language               IN VARCHAR2
204446        ,p_currency_code          IN VARCHAR2
204447        ,p_sla_ledger_id          IN NUMBER
204448        ,p_pad_start_date         IN DATE
204449        ,p_pad_end_date           IN DATE
204450        ,p_primary_ledger_id      IN NUMBER)
204451 RETURN BOOLEAN IS
204452 --
204453 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_COST_UPD_ALL';
204454 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'WIP_COST_UPD';
204455 
204456 l_calculate_acctd_flag   VARCHAR2(1) :='N';
204457 l_calculate_g_l_flag     VARCHAR2(1) :='N';
204458 --
204459 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
204460 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
204461 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
204462 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
204463 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
204464 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
204465 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
204466 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
204467 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
204468 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
204469 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
204470 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
204471 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
204472 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
204473 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
204474 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
204475 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
204476 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
204477 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
204478 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
204479 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
204480 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
204481 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
204482 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
204483 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
204484 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
204485 
204486 l_event_id                             NUMBER;
204487 l_previous_event_id                    NUMBER;
204488 l_first_event_id                       NUMBER;
204489 l_last_event_id                        NUMBER;
204490 
204491 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
204492 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
204493 --
204494 --
204495 l_result                    BOOLEAN := TRUE;
204496 l_rows                      NUMBER  := 1000;
204497 l_event_type_name           VARCHAR2(80) := 'All';
204498 l_event_class_name          VARCHAR2(80) := 'WIP Cost Update';
204499 l_description               VARCHAR2(4000);
204500 l_transaction_reversal      NUMBER;
204501 l_ae_header_id              NUMBER;
204502 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
204503 l_log_module                VARCHAR2(240);
204504 --
204505 l_acct_reversal_source      VARCHAR2(30);
204506 l_trx_reversal_source       VARCHAR2(30);
204507 
204508 l_continue_with_lines       BOOLEAN := TRUE;
204509 --
204510 l_acc_rev_gl_date_source    DATE;                      -- 4262811
204511 --
204512 type t_array_event_id is table of number index by binary_integer;
204513 
204514 l_rec_array_event                    t_rec_array_event;
204515 l_null_rec_array_event               t_rec_array_event;
204516 l_array_ae_header_id                 xla_number_array_type;
204517 l_actual_flag                        VARCHAR2(1) := NULL;
204518 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
204519 l_balance_type_code                  VARCHAR2(1) :=NULL;
204520 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
204521 
204522 --
204523 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
204524 --
204525 
204526 TYPE t_array_source_12 IS TABLE OF CST_XLA_WIP_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
204527 TYPE t_array_source_15 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
204528 TYPE t_array_source_19 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
204529 TYPE t_array_source_20 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
204530 TYPE t_array_source_21 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
204531 TYPE t_array_source_38 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
204532 
204533 TYPE t_array_source_4 IS TABLE OF CST_XLA_WIP_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
204534 TYPE t_array_source_11 IS TABLE OF CST_XLA_WIP_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
204535 TYPE t_array_source_18 IS TABLE OF CST_XLA_WIP_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
204536 TYPE t_array_source_22 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
204537 TYPE t_array_source_24 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
204538 
204539 l_array_source_12              t_array_source_12;
204540 l_array_source_12_meaning      t_array_lookup_meaning;
204541 l_array_source_15              t_array_source_15;
204542 l_array_source_19              t_array_source_19;
204543 l_array_source_20              t_array_source_20;
204544 l_array_source_21              t_array_source_21;
204545 l_array_source_38              t_array_source_38;
204546 l_array_source_38_meaning      t_array_lookup_meaning;
204547 
204548 l_array_source_4      t_array_source_4;
204549 l_array_source_11      t_array_source_11;
204550 l_array_source_18      t_array_source_18;
204551 l_array_source_22      t_array_source_22;
204552 l_array_source_24      t_array_source_24;
204553 
204554 --
204555 CURSOR header_cur
204556 IS
204557 SELECT /*+ leading(xet) cardinality(xet,1) */
204558 -- Event Class Code: WIP_COST_UPD
204559     xet.entity_id
204560    ,xet.legal_entity_id
204561    ,xet.entity_code
204562    ,xet.transaction_number
204563    ,xet.event_id
204564    ,xet.event_class_code
204565    ,xet.event_type_code
204566    ,xet.event_number
204567    ,xet.event_date
204568    ,xet.transaction_date
204569    ,xet.reference_num_1
204570    ,xet.reference_num_2
204571    ,xet.reference_num_3
204572    ,xet.reference_num_4
204573    ,xet.reference_char_1
204574    ,xet.reference_char_2
204575    ,xet.reference_char_3
204576    ,xet.reference_char_4
204577    ,xet.reference_date_1
204578    ,xet.reference_date_2
204579    ,xet.reference_date_3
204580    ,xet.reference_date_4
204581    ,xet.event_created_by
204582    ,xet.budgetary_control_flag 
204583   , h1.DISTRIBUTION_TYPE    source_12
204584   , fvl12.meaning   source_12_meaning
204585   , h1.CURRENCY_CODE    source_15
204586   , h1.CURRENCY_CONVERSION_DATE    source_19
204587   , h1.CURRENCY_CONVERSION_RATE    source_20
204588   , h1.CURRENCY_CONVERSION_TYPE    source_21
204589   , h1.TRANSFER_TO_GL_INDICATOR    source_38
204590   , fvl38.meaning   source_38_meaning
204591   FROM xla_events_gt     xet 
204592   , CST_XLA_WIP_HEADERS_V  h1
204593   , fnd_lookup_values    fvl12
204594   , fnd_lookup_values    fvl38
204595  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
204596    and xet.event_class_code = C_EVENT_CLASS_CODE
204597    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
204598    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
204599   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
204600   AND fvl12.view_application_id(+) = 700
204601   AND fvl12.language(+)            = USERENV('LANG')
204602      AND fvl38.lookup_type(+)         = 'YES_NO'
204603   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
204604   AND fvl38.view_application_id(+) = 0
204605   AND fvl38.language(+)            = USERENV('LANG')
204606   
204607  ORDER BY event_id
204608 ;
204609 
204610 
204611 --
204612 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
204613 IS
204614 SELECT  /*+ leading(xet) cardinality(xet,1) */
204615 -- Event Class Code: WIP_COST_UPD
204616     xet.entity_id
204617    ,xet.legal_entity_id
204618    ,xet.entity_code
204619    ,xet.transaction_number
204620    ,xet.event_id
204621    ,xet.event_class_code
204622    ,xet.event_type_code
204623    ,xet.event_number
204624    ,xet.event_date
204625    ,xet.transaction_date
204626    ,xet.reference_num_1
204627    ,xet.reference_num_2
204628    ,xet.reference_num_3
204629    ,xet.reference_num_4
204630    ,xet.reference_char_1
204631    ,xet.reference_char_2
204632    ,xet.reference_char_3
204633    ,xet.reference_char_4
204634    ,xet.reference_date_1
204635    ,xet.reference_date_2
204636    ,xet.reference_date_3
204637    ,xet.reference_date_4
204638    ,xet.event_created_by
204639    ,xet.budgetary_control_flag
204640  , l2.LINE_NUMBER  
204641   , l2.CODE_COMBINATION_ID    source_4
204642   , l2.DISTRIBUTION_IDENTIFIER    source_11
204643   , l2.ENTERED_AMOUNT    source_18
204644   , l2.ACCOUNTED_AMOUNT    source_22
204645   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
204646   FROM xla_events_gt     xet 
204647   , CST_XLA_WIP_LINES_V  l2
204648  WHERE xet.event_id between x_first_event_id and x_last_event_id
204649    and xet.event_date between p_pad_start_date and p_pad_end_date
204650    and xet.event_class_code = C_EVENT_CLASS_CODE
204651    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
204652 ;
204653 
204654 --
204655 BEGIN
204656 IF g_log_enabled THEN
204657    l_log_module := C_DEFAULT_MODULE||'.EventClass_305';
204658 END IF;
204659 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
204660    trace
204661       (p_msg      => 'BEGIN of EventClass_305'
204662       ,p_level    => C_LEVEL_PROCEDURE
204663       ,p_module   => l_log_module);
204664 END IF;
204665 
204666 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
204667    trace
204668       (p_msg      => 'p_application_id = '||p_application_id||
204669                      ' - p_base_ledger_id = '||p_base_ledger_id||
204670                      ' - p_target_ledger_id  = '||p_target_ledger_id||
204671                      ' - p_language = '||p_language||
204672                      ' - p_currency_code = '||p_currency_code||
204673                      ' - p_sla_ledger_id = '||p_sla_ledger_id
204674       ,p_level    => C_LEVEL_STATEMENT
204675       ,p_module   => l_log_module);
204676 END IF;
204677 --
204678 -- initialze arrays
204679 --
204680 g_array_event.DELETE;
204681 l_rec_array_event := l_null_rec_array_event;
204682 --
204683 --------------------------------------
204684 -- 4262811 Initialze MPA Line Number
204685 --------------------------------------
204686 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
204687 
204688 --
204689 
204690 --
204691 OPEN header_cur;
204692 --
204693 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
204694    trace
204695    (p_msg      => 'SQL - FETCH header_cur'
204696    ,p_level    => C_LEVEL_STATEMENT
204697    ,p_module   => l_log_module);
204698 END IF;
204699 --
204700 LOOP
204701 FETCH header_cur BULK COLLECT INTO
204702         l_array_entity_id
204703       , l_array_legal_entity_id
204704       , l_array_entity_code
204705       , l_array_transaction_num
204706       , l_array_event_id
204707       , l_array_class_code
204708       , l_array_event_type
204709       , l_array_event_number
204710       , l_array_event_date
204711       , l_array_transaction_date
204712       , l_array_reference_num_1
204713       , l_array_reference_num_2
204714       , l_array_reference_num_3
204715       , l_array_reference_num_4
204716       , l_array_reference_char_1
204717       , l_array_reference_char_2
204718       , l_array_reference_char_3
204719       , l_array_reference_char_4
204720       , l_array_reference_date_1
204721       , l_array_reference_date_2
204722       , l_array_reference_date_3
204723       , l_array_reference_date_4
204724       , l_array_event_created_by
204725       , l_array_budgetary_control_flag 
204726       , l_array_source_12
204727       , l_array_source_12_meaning
204728       , l_array_source_15
204729       , l_array_source_19
204730       , l_array_source_20
204731       , l_array_source_21
204732       , l_array_source_38
204733       , l_array_source_38_meaning
204734       LIMIT l_rows;
204735 --
204736 IF (C_LEVEL_EVENT >= g_log_level) THEN
204737    trace
204738    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
204739    ,p_level    => C_LEVEL_EVENT
204740    ,p_module   => l_log_module);
204741 END IF;
204742 --
204743 EXIT WHEN l_array_entity_id.COUNT = 0;
204744 
204745 -- initialize arrays
204746 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
204747 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
204748 
204749 --
204750 -- Bug 4458708
204751 --
204752 XLA_AE_LINES_PKG.g_LineNumber := 0;
204753 
204754 
204755 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
204756 g_last_hdr_idx := l_array_event_id.LAST;
204757 --
204758 -- loop for the headers. Each iteration is for each header extract row
204759 -- fetched in header cursor
204760 --
204761 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
204762 
204763 --
204764 -- set event info as cache for other routines to refer event attributes
204765 --
204766 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
204767    (p_application_id           => p_application_id
204768    ,p_primary_ledger_id        => p_primary_ledger_id
204769    ,p_base_ledger_id           => p_base_ledger_id
204770    ,p_target_ledger_id         => p_target_ledger_id
204771    ,p_entity_id                => l_array_entity_id(hdr_idx)
204772    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
204773    ,p_entity_code              => l_array_entity_code(hdr_idx)
204774    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
204775    ,p_event_id                 => l_array_event_id(hdr_idx)
204776    ,p_event_class_code         => l_array_class_code(hdr_idx)
204777    ,p_event_type_code          => l_array_event_type(hdr_idx)
204778    ,p_event_number             => l_array_event_number(hdr_idx)
204779    ,p_event_date               => l_array_event_date(hdr_idx)
204780    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
204781    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
204782    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
204783    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
204784    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
204785    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
204786    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
204787    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
204788    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
204789    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
204790    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
204791    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
204792    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
204793    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
204794    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
204795 
204796 --
204797 -- set the status of entry to C_VALID (0)
204798 --
204799 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
204800 
204801 --
204802 -- initialize a row for ae header
204803 --
204804 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
204805 
204806 l_event_id := l_array_event_id(hdr_idx);
204807 
204808 --
204809 -- storing the hdr_idx for event. May be used by line cursor.
204810 --
204811 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
204812 
204813 --
204814 -- store sources from header extract. This can be improved to
204815 -- store only those sources from header extract that may be used in lines
204816 --
204817 
204818 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
204819 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
204820 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
204821 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
204822 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
204823 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
204824 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
204825 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
204826 
204827 --
204828 -- initilaize the status of ae headers for diffrent balance types
204829 -- the status is initialised to C_NOT_CREATED (2)
204830 --
204831 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
204832 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
204833 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
204834 
204835 --
204836 -- call api to validate and store accounting attributes for header
204837 --
204838 
204839 ------------------------------------------------------------
204840 -- Accrual Reversal : to get date for Standard Source (NONE)
204841 ------------------------------------------------------------
204842 l_acc_rev_gl_date_source := NULL;
204843 
204844      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
204845       l_rec_acct_attrs.array_date_value(1) := 
204846 xla_ae_sources_pkg.GetSystemSourceDate(
204847    p_source_code           => 'XLA_REFERENCE_DATE_1'
204848  , p_source_type_code      => 'Y'
204849  , p_source_application_id =>  602
204850 );
204851      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
204852       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
204853 
204854 
204855 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
204856 
204857 XLA_AE_HEADER_PKG.SetJeCategoryName;
204858 
204859 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
204860 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
204861 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
204862 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
204863 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
204864 
204865 
204866 -- No header level analytical criteria
204867 
204868 --
204869 --accounting attribute enhancement, bug 3612931
204870 --
204871 l_trx_reversal_source := SUBSTR(NULL, 1,30);
204872 
204873 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
204874    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
204875 
204876    xla_accounting_err_pkg.build_message
204877       (p_appli_s_name            => 'XLA'
204878       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
204879       ,p_token_1                 => 'ACCT_ATTR_NAME'
204880       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
204881       ,p_token_2                 => 'PRODUCT_NAME'
204882       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
204883       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
204884       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
204885       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
204886 
204887 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
204888    --
204889    -- following sets the accounting attributes needed to reverse
204890    -- accounting for a distributeion
204891    --
204892    xla_ae_lines_pkg.SetTrxReversalAttrs
204893       (p_event_id              => l_event_id
204894       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
204895       ,p_trx_reversal_source   => l_trx_reversal_source);
204896 
204897 END IF;
204898 
204899 
204900 ----------------------------------------------------------------
204901 -- 4262811 -  update the header statuses to invalid in need be
204902 ----------------------------------------------------------------
204903 --
204904 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
204905 
204906 
204907   -----------------------------------------------
204908   -- No accrual reversal for the event class/type
204909   -----------------------------------------------
204910 ----------------------------------------------------------------
204911 
204912 --
204913 -- this ends the header loop iteration for one bulk fetch
204914 --
204915 END LOOP;
204916 
204917 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
204918 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
204919 
204920 --
204921 -- insert dummy rows into lines gt table that were created due to
204922 -- transaction reversals
204923 --
204924 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
204925    l_result := XLA_AE_LINES_PKG.InsertLines;
204926 END IF;
204927 
204928 --
204929 -- reset the temp_line_num for each set of events fetched from header
204930 -- cursor rather than doing it for each new event in line cursor
204931 -- Bug 3939231
204932 --
204933 xla_ae_lines_pkg.g_temp_line_num := 0;
204934 
204935 
204936 
204937 --
204938 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
204939 --
204940 --
204941 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
204942 
204943       trace
204944          (p_msg      => 'SQL - FETCH line_cur'
204945          ,p_level    => C_LEVEL_STATEMENT
204946          ,p_module   => l_log_module);
204947 
204948 END IF;
204949 --
204950 --
204951 LOOP
204952   --
204953   FETCH line_cur BULK COLLECT INTO
204954         l_array_entity_id
204955       , l_array_legal_entity_id
204956       , l_array_entity_code
204957       , l_array_transaction_num
204958       , l_array_event_id
204959       , l_array_class_code
204960       , l_array_event_type
204961       , l_array_event_number
204962       , l_array_event_date
204963       , l_array_transaction_date
204964       , l_array_reference_num_1
204965       , l_array_reference_num_2
204966       , l_array_reference_num_3
204967       , l_array_reference_num_4
204968       , l_array_reference_char_1
204969       , l_array_reference_char_2
204970       , l_array_reference_char_3
204971       , l_array_reference_char_4
204972       , l_array_reference_date_1
204973       , l_array_reference_date_2
204974       , l_array_reference_date_3
204975       , l_array_reference_date_4
204976       , l_array_event_created_by
204977       , l_array_budgetary_control_flag
204978       , l_array_extract_line_num 
204979       , l_array_source_4
204980       , l_array_source_11
204981       , l_array_source_18
204982       , l_array_source_22
204983       , l_array_source_24
204984       LIMIT l_rows;
204985 
204986   --
204987   IF (C_LEVEL_EVENT >= g_log_level) THEN
204988             trace
204989                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
204990                ,p_level    => C_LEVEL_EVENT
204991                ,p_module   => l_log_module);
204992   END IF;
204993   --
204994   EXIT WHEN l_array_entity_id.count = 0;
204995 
204996   XLA_AE_LINES_PKG.g_rec_lines := null;
204997 
204998 --
204999 -- Bug 4458708
205000 --
205001 XLA_AE_LINES_PKG.g_LineNumber := 0;
205002 --
205003 --
205004 
205005 FOR Idx IN 1..l_array_event_id.count LOOP
205006    --
205007    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
205008    --
205009    l_event_id := l_array_event_id(idx);  -- 5648433
205010 
205011    --
205012    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
205013    --
205014 
205015    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
205016              (g_array_event(l_event_id).array_value_num('header_index'))
205017          ,'N'
205018          ) <> 'Y'
205019    THEN
205020       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
205021          trace
205022             (p_msg      => 'Trancaction revesal option is not Y '
205023             ,p_level    => C_LEVEL_STATEMENT
205024             ,p_module   => l_log_module);
205025       END IF;
205026 
205027 --
205028 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
205029 --
205030 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
205031 --
205032 -- set event info as cache for other routines to refer event attributes
205033 --
205034 
205035 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
205036    l_previous_event_id := l_event_id;
205037 
205038    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
205039       (p_application_id           => p_application_id
205040       ,p_primary_ledger_id        => p_primary_ledger_id
205041       ,p_base_ledger_id           => p_base_ledger_id
205042       ,p_target_ledger_id         => p_target_ledger_id
205043       ,p_entity_id                => l_array_entity_id(Idx)
205044       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
205045       ,p_entity_code              => l_array_entity_code(Idx)
205046       ,p_transaction_num          => l_array_transaction_num(Idx)
205047       ,p_event_id                 => l_array_event_id(Idx)
205048       ,p_event_class_code         => l_array_class_code(Idx)
205049       ,p_event_type_code          => l_array_event_type(Idx)
205050       ,p_event_number             => l_array_event_number(Idx)
205051       ,p_event_date               => l_array_event_date(Idx)
205052       ,p_transaction_date         => l_array_transaction_date(Idx)
205053       ,p_reference_num_1          => l_array_reference_num_1(Idx)
205054       ,p_reference_num_2          => l_array_reference_num_2(Idx)
205055       ,p_reference_num_3          => l_array_reference_num_3(Idx)
205056       ,p_reference_num_4          => l_array_reference_num_4(Idx)
205057       ,p_reference_char_1         => l_array_reference_char_1(Idx)
205058       ,p_reference_char_2         => l_array_reference_char_2(Idx)
205059       ,p_reference_char_3         => l_array_reference_char_3(Idx)
205060       ,p_reference_char_4         => l_array_reference_char_4(Idx)
205061       ,p_reference_date_1         => l_array_reference_date_1(Idx)
205062       ,p_reference_date_2         => l_array_reference_date_2(Idx)
205063       ,p_reference_date_3         => l_array_reference_date_3(Idx)
205064       ,p_reference_date_4         => l_array_reference_date_4(Idx)
205065       ,p_event_created_by         => l_array_event_created_by(Idx)
205066       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
205067        --
205068 END IF;
205069 
205070 
205071 
205072 --
205073 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
205074 
205075 l_acct_reversal_source := SUBSTR(NULL, 1,30);
205076 
205077 IF l_continue_with_lines THEN
205078    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
205079       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
205080 
205081       xla_accounting_err_pkg.build_message
205082          (p_appli_s_name            => 'XLA'
205083          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
205084          ,p_token_1                 => 'LINE_NUMBER'
205085          ,p_value_1                 => l_array_extract_line_num(Idx)
205086          ,p_token_2                 => 'PRODUCT_NAME'
205087          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
205088          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
205089          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
205090          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
205091 
205092    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
205093       --
205094       -- following sets the accounting attributes needed to reverse
205095       -- accounting for a distributeion
205096       --
205097 
205098       --
205099       -- 5217187
205100       --
205101       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
205102       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
205103                                        g_array_event(l_event_id).array_value_num('header_index'));
205104       --
205105       --
205106 
205107       -- No reversal code generated
205108 
205109       xla_ae_lines_pkg.SetAcctReversalAttrs
205110          (p_event_id             => l_event_id
205111          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
205112          ,p_calculate_acctd_flag => l_calculate_acctd_flag
205113          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
205114    END IF;
205115 
205116    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
205117        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
205118 
205119 --
205120 AcctLineType_22 (
205121  p_application_id  => p_application_id
205122  ,p_event_id     => l_event_id
205123  ,p_calculate_acctd_flag => l_calculate_acctd_flag
205124  ,p_calculate_g_l_flag => l_calculate_g_l_flag
205125  ,p_actual_flag => l_actual_flag
205126  ,p_balance_type_code => l_balance_type_code
205127  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
205128  
205129  , p_source_4 => l_array_source_4(Idx)
205130  , p_source_11 => l_array_source_11(Idx)
205131  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
205132  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
205133  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
205134  , p_source_18 => l_array_source_18(Idx)
205135  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
205136  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
205137  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
205138  , p_source_22 => l_array_source_22(Idx)
205139  , p_source_24 => l_array_source_24(Idx)
205140  );
205141 If(l_balance_type_code = 'A') THEN
205142   l_actual_gain_loss_ref := l_gain_or_loss_ref;
205143 END IF;
205144 
205145 --
205146 
205147 
205148 --
205149 AcctLineType_251 (
205150  p_application_id  => p_application_id
205151  ,p_event_id     => l_event_id
205152  ,p_calculate_acctd_flag => l_calculate_acctd_flag
205153  ,p_calculate_g_l_flag => l_calculate_g_l_flag
205154  ,p_actual_flag => l_actual_flag
205155  ,p_balance_type_code => l_balance_type_code
205156  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
205157  
205158  , p_source_4 => l_array_source_4(Idx)
205159  , p_source_11 => l_array_source_11(Idx)
205160  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
205161  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
205162  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
205163  , p_source_18 => l_array_source_18(Idx)
205164  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
205165  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
205166  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
205167  , p_source_22 => l_array_source_22(Idx)
205168  , p_source_24 => l_array_source_24(Idx)
205169  );
205170 If(l_balance_type_code = 'A') THEN
205171   l_actual_gain_loss_ref := l_gain_or_loss_ref;
205172 END IF;
205173 
205174 --
205175 
205176       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
205177       -- or secondary ledger that has different currency with primary
205178       -- or alc that is calculated by sla
205179       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
205180             (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'))
205181 
205182 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
205183 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
205184           AND (l_actual_flag = 'A')) THEN
205185         XLA_AE_LINES_PKG.CreateGainOrLossLines(
205186           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
205187          ,p_application_id   => p_application_id
205188          ,p_amb_context_code => 'DEFAULT'
205189          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
205190          ,p_event_class_code => C_EVENT_CLASS_CODE
205191          ,p_event_type_code  => C_EVENT_TYPE_CODE
205192          
205193          ,p_gain_ccid        => -1
205194          ,p_loss_ccid        => -1
205195 
205196          ,p_actual_flag      => l_actual_flag
205197          ,p_enc_flag         => null
205198          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
205199          ,p_enc_g_l_ref      => null
205200          );
205201       END IF;
205202    END IF;
205203 END IF;
205204 
205205    ELSE
205206       --
205207       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
205208       --
205209       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
205210          trace
205211             (p_msg      => 'Trancaction revesal option is Y'
205212             ,p_level    => C_LEVEL_STATEMENT
205213             ,p_module   => l_log_module);
205214       END IF;
205215    END IF;
205216 
205217 END LOOP;
205218 l_result := XLA_AE_LINES_PKG.InsertLines ;
205219 end loop;
205220 close line_cur;
205221 
205222 
205223 --
205224 -- insert headers into xla_ae_headers_gt table
205225 --
205226 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
205227 
205228 -- insert into errors table here.
205229 
205230 END LOOP;
205231 
205232 --
205233 -- 4865292
205234 --
205235 -- Compare g_hdr_extract_count with event count in
205236 -- CreateHeadersAndLines.
205237 --
205238 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
205239 
205240 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
205241    trace (p_msg     => '# rows extracted from header extract objects '
205242                     || ' (running total): '
205243                     || g_hdr_extract_count
205244          ,p_level   => C_LEVEL_STATEMENT
205245          ,p_module  => l_log_module);
205246 END IF;
205247 
205248 CLOSE header_cur;
205249 --
205250 
205251 --
205252 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
205253    trace
205254       (p_msg      => 'END of EventClass_305'
205255       ,p_level    => C_LEVEL_PROCEDURE
205256       ,p_module   => l_log_module);
205257 END IF;
205258 --
205259 RETURN l_result;
205260 EXCEPTION
205261 WHEN xla_exceptions_pkg.application_exception THEN
205262    
205263 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
205264 
205265    
205266 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
205267 
205268    RAISE;
205269 
205270 WHEN NO_DATA_FOUND THEN
205271 
205272 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
205273 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
205274 
205275 FOR header_record IN header_cur
205276 LOOP
205277     l_array_header_events(header_record.event_id) := header_record.event_id;
205278 END LOOP;
205279 
205280 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
205281 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
205282 
205283 fnd_file.put_line(fnd_file.LOG, '                    ');
205284 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
205285 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
205286 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
205287 
205288 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
205289 LOOP
205290 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
205291 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
205292         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
205293 	END IF;
205294 END LOOP;
205295 
205296 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
205297 fnd_file.put_line(fnd_file.LOG, '                    ');
205298 
205299 
205300 xla_exceptions_pkg.raise_message
205301       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_305');
205302 
205303 
205304 WHEN OTHERS THEN
205305    xla_exceptions_pkg.raise_message
205306       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_305');
205307 END EventClass_305;
205308 --
205309 
205310 ---------------------------------------
205311 --
205312 -- PRIVATE PROCEDURE
205313 --         insert_sources_306
205314 --
205315 ----------------------------------------
205316 --
205317 PROCEDURE insert_sources_306(
205318                                 p_target_ledger_id       IN NUMBER
205319                               , p_language               IN VARCHAR2
205320                               , p_sla_ledger_id          IN NUMBER
205321                               , p_pad_start_date         IN DATE
205322                               , p_pad_end_date           IN DATE
205323                          )
205324 IS
205325 
205326 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_LOT_ALL';
205327 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'WIP_LOT';
205328 p_apps_owner                   VARCHAR2(30);
205329 l_log_module                   VARCHAR2(240);
205330 BEGIN
205331 IF g_log_enabled THEN
205332       l_log_module := C_DEFAULT_MODULE||'.insert_sources_306';
205333 END IF;
205334 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
205335 
205336       trace
205337          (p_msg      => 'BEGIN of insert_sources_306'
205338          ,p_level    => C_LEVEL_PROCEDURE
205339          ,p_module   => l_log_module);
205340 
205341 END IF;
205342 
205343 -- select APPS owner
205344 SELECT oracle_username
205345   INTO p_apps_owner
205346   FROM fnd_oracle_userid
205347  WHERE read_only_flag = 'U'
205348 ;
205349 
205350 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
205351       trace
205352          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
205353                         ' - p_language = '||p_language||
205354                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
205355                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
205356                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
205357                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
205358          ,p_level    => C_LEVEL_STATEMENT
205359          ,p_module   => l_log_module);
205360 END IF;
205361 
205362 
205363 --
205364 INSERT INTO xla_diag_sources --hdr2
205365 (
205366         event_id
205367       , ledger_id
205368       , sla_ledger_id
205369       , description_language
205370       , object_name
205371       , object_type_code
205372       , line_number
205373       , source_application_id
205374       , source_type_code
205375       , source_code
205376       , source_value
205377       , source_meaning
205378       , created_by
205379       , creation_date
205380       , last_update_date
205381       , last_updated_by
205382       , last_update_login
205383       , program_update_date
205384       , program_application_id
205385       , program_id
205386       , request_id
205387 )
205388 SELECT
205389         event_id
205390       , p_target_ledger_id
205391       , p_sla_ledger_id
205392       , p_language
205393       , object_name
205394       , object_type_code
205395       , line_number
205396       , source_application_id
205397       , source_type_code
205398       , source_code
205399       , SUBSTR(source_value ,1,1996)
205400       , SUBSTR(source_meaning ,1,200)
205401       , xla_environment_pkg.g_Usr_Id
205402       , TRUNC(SYSDATE)
205403       , TRUNC(SYSDATE)
205404       , xla_environment_pkg.g_Usr_Id
205405       , xla_environment_pkg.g_Login_Id
205406       , TRUNC(SYSDATE)
205407       , xla_environment_pkg.g_Prog_Appl_Id
205408       , xla_environment_pkg.g_Prog_Id
205409       , xla_environment_pkg.g_Req_Id
205410   FROM (
205411        SELECT xet.event_id                  event_id
205412             , 0                          line_number
205413             , CASE r
205414                WHEN 1 THEN 'CST_XLA_WIP_HEADERS_V' 
205415                 WHEN 2 THEN 'CST_XLA_WIP_HEADERS_V' 
205416                 WHEN 3 THEN 'CST_XLA_WIP_HEADERS_V' 
205417                 WHEN 4 THEN 'CST_XLA_WIP_HEADERS_V' 
205418                 WHEN 5 THEN 'CST_XLA_WIP_HEADERS_V' 
205419                 WHEN 6 THEN 'CST_XLA_WIP_HEADERS_V' 
205420                 
205421                ELSE null
205422               END                           object_name
205423             , CASE r
205424                 WHEN 1 THEN 'HEADER' 
205425                 WHEN 2 THEN 'HEADER' 
205426                 WHEN 3 THEN 'HEADER' 
205427                 WHEN 4 THEN 'HEADER' 
205428                 WHEN 5 THEN 'HEADER' 
205429                 WHEN 6 THEN 'HEADER' 
205430                 
205431                 ELSE null
205432               END                           object_type_code
205433             , CASE r
205434                 WHEN 1 THEN '707' 
205435                 WHEN 2 THEN '707' 
205436                 WHEN 3 THEN '707' 
205437                 WHEN 4 THEN '707' 
205438                 WHEN 5 THEN '707' 
205439                 WHEN 6 THEN '707' 
205440                 
205441                 ELSE null
205442               END                           source_application_id
205443             , 'S'             source_type_code
205444             , CASE r
205445                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
205446                 WHEN 2 THEN 'CURRENCY_CODE' 
205447                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
205448                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
205449                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
205450                 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR' 
205451                 
205452                 ELSE null
205453               END                           source_code
205454             , CASE r
205455                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
205456                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
205457                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
205458                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
205459                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
205460                 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
205461                 
205462                 ELSE null
205463               END                           source_value
205464             , CASE r
205465                 WHEN 1 THEN fvl12.meaning
205466                 WHEN 6 THEN fvl38.meaning
205467                 
205468                 ELSE null
205469               END               source_meaning
205470          FROM xla_events_gt     xet  
205471       , CST_XLA_WIP_HEADERS_V  h1
205472   , fnd_lookup_values    fvl12
205473   , fnd_lookup_values    fvl38
205474              ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
205475          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
205476            AND xet.event_class_code = C_EVENT_CLASS_CODE
205477               AND h1.event_id = xet.event_id
205478    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
205479   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
205480   AND fvl12.view_application_id(+) = 700
205481   AND fvl12.language(+)            = USERENV('LANG')
205482      AND fvl38.lookup_type(+)         = 'YES_NO'
205483   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
205484   AND fvl38.view_application_id(+) = 0
205485   AND fvl38.language(+)            = USERENV('LANG')
205486   
205487 )
205488 ;
205489 --
205490 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
205491 
205492       trace
205493          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
205494          ,p_level    => C_LEVEL_STATEMENT
205495          ,p_module   => l_log_module);
205496 
205497 END IF;
205498 --
205499 
205500 
205501 
205502 --
205503 INSERT INTO xla_diag_sources  --line2
205504 (
205505         event_id
205506       , ledger_id
205507       , sla_ledger_id
205508       , description_language
205509       , object_name
205510       , object_type_code
205511       , line_number
205512       , source_application_id
205513       , source_type_code
205514       , source_code
205515       , source_value
205516       , source_meaning
205517       , created_by
205518       , creation_date
205519       , last_update_date
205520       , last_updated_by
205521       , last_update_login
205522       , program_update_date
205523       , program_application_id
205524       , program_id
205525       , request_id
205526 )
205527 SELECT  event_id
205528       , p_target_ledger_id
205529       , p_sla_ledger_id
205530       , p_language
205531       , object_name
205532       , object_type_code
205533       , line_number
205534       , source_application_id
205535       , source_type_code
205536       , source_code
205537       , SUBSTR(source_value,1,1996)
205538       , SUBSTR(source_meaning ,1,200)
205539       , xla_environment_pkg.g_Usr_Id
205540       , TRUNC(SYSDATE)
205541       , TRUNC(SYSDATE)
205542       , xla_environment_pkg.g_Usr_Id
205543       , xla_environment_pkg.g_Login_Id
205544       , TRUNC(SYSDATE)
205545       , xla_environment_pkg.g_Prog_Appl_Id
205546       , xla_environment_pkg.g_Prog_Id
205547       , xla_environment_pkg.g_Req_Id
205548   FROM (
205549        SELECT xet.event_id                  event_id
205550             , l2.line_number                 line_number
205551             , CASE r
205552                WHEN 1 THEN 'CST_XLA_WIP_LINES_V' 
205553                 WHEN 2 THEN 'CST_XLA_WIP_LINES_V' 
205554                 WHEN 3 THEN 'CST_XLA_WIP_LINES_V' 
205555                 WHEN 4 THEN 'CST_XLA_WIP_LINES_V' 
205556                 WHEN 5 THEN 'CST_XLA_WIP_LINES_V' 
205557                 
205558                ELSE null
205559               END                           object_name
205560             , CASE r
205561                 WHEN 1 THEN 'LINE' 
205562                 WHEN 2 THEN 'LINE' 
205563                 WHEN 3 THEN 'LINE' 
205564                 WHEN 4 THEN 'LINE' 
205565                 WHEN 5 THEN 'LINE' 
205566                 
205567                 ELSE null
205568               END                           object_type_code
205569             , CASE r
205570                 WHEN 1 THEN '707' 
205571                 WHEN 2 THEN '707' 
205572                 WHEN 3 THEN '707' 
205573                 WHEN 4 THEN '707' 
205574                 WHEN 5 THEN '707' 
205575                 
205576                 ELSE null
205577               END                           source_application_id
205578             , 'S'             source_type_code
205579             , CASE r
205580                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
205581                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
205582                 WHEN 3 THEN 'ENTERED_AMOUNT' 
205583                 WHEN 4 THEN 'ACCOUNTED_AMOUNT' 
205584                 WHEN 5 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
205585                 
205586                 ELSE null
205587               END                           source_code
205588             , CASE r
205589                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
205590                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
205591                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
205592                 WHEN 4 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
205593                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
205594                 
205595                 ELSE null
205596               END                           source_value
205597             , null              source_meaning
205598          FROM  xla_events_gt     xet  
205599         , CST_XLA_WIP_LINES_V  l2
205600             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
205601         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
205602           AND xet.event_class_code = C_EVENT_CLASS_CODE
205603             AND l2.event_id          = xet.event_id
205604 
205605 )
205606 ;
205607 --
205608 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
205609 
205610       trace
205611          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
205612          ,p_level    => C_LEVEL_STATEMENT
205613          ,p_module   => l_log_module);
205614 
205615 END IF;
205616 
205617 
205618 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
205619       trace
205620          (p_msg      => 'END of insert_sources_306'
205621          ,p_level    => C_LEVEL_PROCEDURE
205622          ,p_module   => l_log_module);
205623 END IF;
205624 EXCEPTION
205625   WHEN xla_exceptions_pkg.application_exception THEN
205626       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
205627             trace
205628                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
205629                ,p_level    => C_LEVEL_EXCEPTION
205630                ,p_module   => l_log_module);
205631       END IF;
205632       RAISE;
205633   WHEN OTHERS THEN
205634       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
205635             trace
205636                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
205637                ,p_level    => C_LEVEL_EXCEPTION
205638                ,p_module   => l_log_module);
205639        END IF;
205640        xla_exceptions_pkg.raise_message
205641            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_306');
205642 END insert_sources_306;
205643 --
205644 
205645 ---------------------------------------
205646 --
205647 -- PRIVATE FUNCTION
205648 --         EventClass_306
205649 --
205650 ----------------------------------------
205651 --
205652 FUNCTION EventClass_306
205653        (p_application_id         IN NUMBER
205654        ,p_base_ledger_id         IN NUMBER
205655        ,p_target_ledger_id       IN NUMBER
205656        ,p_language               IN VARCHAR2
205657        ,p_currency_code          IN VARCHAR2
205658        ,p_sla_ledger_id          IN NUMBER
205659        ,p_pad_start_date         IN DATE
205660        ,p_pad_end_date           IN DATE
205661        ,p_primary_ledger_id      IN NUMBER)
205662 RETURN BOOLEAN IS
205663 --
205664 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_LOT_ALL';
205665 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'WIP_LOT';
205666 
205667 l_calculate_acctd_flag   VARCHAR2(1) :='N';
205668 l_calculate_g_l_flag     VARCHAR2(1) :='N';
205669 --
205670 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
205671 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
205672 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
205673 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
205674 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
205675 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
205676 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
205677 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
205678 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
205679 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
205680 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
205681 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
205682 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
205683 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
205684 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
205685 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
205686 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
205687 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
205688 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
205689 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
205690 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
205691 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
205692 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
205693 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
205694 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
205695 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
205696 
205697 l_event_id                             NUMBER;
205698 l_previous_event_id                    NUMBER;
205699 l_first_event_id                       NUMBER;
205700 l_last_event_id                        NUMBER;
205701 
205702 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
205703 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
205704 --
205705 --
205706 l_result                    BOOLEAN := TRUE;
205707 l_rows                      NUMBER  := 1000;
205708 l_event_type_name           VARCHAR2(80) := 'All';
205709 l_event_class_name          VARCHAR2(80) := 'WIP Lot';
205710 l_description               VARCHAR2(4000);
205711 l_transaction_reversal      NUMBER;
205712 l_ae_header_id              NUMBER;
205713 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
205714 l_log_module                VARCHAR2(240);
205715 --
205716 l_acct_reversal_source      VARCHAR2(30);
205717 l_trx_reversal_source       VARCHAR2(30);
205718 
205719 l_continue_with_lines       BOOLEAN := TRUE;
205720 --
205721 l_acc_rev_gl_date_source    DATE;                      -- 4262811
205722 --
205723 type t_array_event_id is table of number index by binary_integer;
205724 
205725 l_rec_array_event                    t_rec_array_event;
205726 l_null_rec_array_event               t_rec_array_event;
205727 l_array_ae_header_id                 xla_number_array_type;
205728 l_actual_flag                        VARCHAR2(1) := NULL;
205729 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
205730 l_balance_type_code                  VARCHAR2(1) :=NULL;
205731 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
205732 
205733 --
205734 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
205735 --
205736 
205737 TYPE t_array_source_12 IS TABLE OF CST_XLA_WIP_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
205738 TYPE t_array_source_15 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
205739 TYPE t_array_source_19 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
205740 TYPE t_array_source_20 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
205741 TYPE t_array_source_21 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
205742 TYPE t_array_source_38 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
205743 
205744 TYPE t_array_source_4 IS TABLE OF CST_XLA_WIP_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
205745 TYPE t_array_source_11 IS TABLE OF CST_XLA_WIP_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
205746 TYPE t_array_source_18 IS TABLE OF CST_XLA_WIP_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
205747 TYPE t_array_source_22 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
205748 TYPE t_array_source_24 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
205749 
205750 l_array_source_12              t_array_source_12;
205751 l_array_source_12_meaning      t_array_lookup_meaning;
205752 l_array_source_15              t_array_source_15;
205753 l_array_source_19              t_array_source_19;
205754 l_array_source_20              t_array_source_20;
205755 l_array_source_21              t_array_source_21;
205756 l_array_source_38              t_array_source_38;
205757 l_array_source_38_meaning      t_array_lookup_meaning;
205758 
205759 l_array_source_4      t_array_source_4;
205760 l_array_source_11      t_array_source_11;
205761 l_array_source_18      t_array_source_18;
205762 l_array_source_22      t_array_source_22;
205763 l_array_source_24      t_array_source_24;
205764 
205765 --
205766 CURSOR header_cur
205767 IS
205768 SELECT /*+ leading(xet) cardinality(xet,1) */
205769 -- Event Class Code: WIP_LOT
205770     xet.entity_id
205771    ,xet.legal_entity_id
205772    ,xet.entity_code
205773    ,xet.transaction_number
205774    ,xet.event_id
205775    ,xet.event_class_code
205776    ,xet.event_type_code
205777    ,xet.event_number
205778    ,xet.event_date
205779    ,xet.transaction_date
205780    ,xet.reference_num_1
205781    ,xet.reference_num_2
205782    ,xet.reference_num_3
205783    ,xet.reference_num_4
205784    ,xet.reference_char_1
205785    ,xet.reference_char_2
205786    ,xet.reference_char_3
205787    ,xet.reference_char_4
205788    ,xet.reference_date_1
205789    ,xet.reference_date_2
205790    ,xet.reference_date_3
205791    ,xet.reference_date_4
205792    ,xet.event_created_by
205793    ,xet.budgetary_control_flag 
205794   , h1.DISTRIBUTION_TYPE    source_12
205795   , fvl12.meaning   source_12_meaning
205796   , h1.CURRENCY_CODE    source_15
205797   , h1.CURRENCY_CONVERSION_DATE    source_19
205798   , h1.CURRENCY_CONVERSION_RATE    source_20
205799   , h1.CURRENCY_CONVERSION_TYPE    source_21
205800   , h1.TRANSFER_TO_GL_INDICATOR    source_38
205801   , fvl38.meaning   source_38_meaning
205802   FROM xla_events_gt     xet 
205803   , CST_XLA_WIP_HEADERS_V  h1
205804   , fnd_lookup_values    fvl12
205805   , fnd_lookup_values    fvl38
205806  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
205807    and xet.event_class_code = C_EVENT_CLASS_CODE
205808    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
205809    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
205810   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
205811   AND fvl12.view_application_id(+) = 700
205812   AND fvl12.language(+)            = USERENV('LANG')
205813      AND fvl38.lookup_type(+)         = 'YES_NO'
205814   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
205815   AND fvl38.view_application_id(+) = 0
205816   AND fvl38.language(+)            = USERENV('LANG')
205817   
205818  ORDER BY event_id
205819 ;
205820 
205821 
205822 --
205823 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
205824 IS
205825 SELECT  /*+ leading(xet) cardinality(xet,1) */
205826 -- Event Class Code: WIP_LOT
205827     xet.entity_id
205828    ,xet.legal_entity_id
205829    ,xet.entity_code
205830    ,xet.transaction_number
205831    ,xet.event_id
205832    ,xet.event_class_code
205833    ,xet.event_type_code
205834    ,xet.event_number
205835    ,xet.event_date
205836    ,xet.transaction_date
205837    ,xet.reference_num_1
205838    ,xet.reference_num_2
205839    ,xet.reference_num_3
205840    ,xet.reference_num_4
205841    ,xet.reference_char_1
205842    ,xet.reference_char_2
205843    ,xet.reference_char_3
205844    ,xet.reference_char_4
205845    ,xet.reference_date_1
205846    ,xet.reference_date_2
205847    ,xet.reference_date_3
205848    ,xet.reference_date_4
205849    ,xet.event_created_by
205850    ,xet.budgetary_control_flag
205851  , l2.LINE_NUMBER  
205852   , l2.CODE_COMBINATION_ID    source_4
205853   , l2.DISTRIBUTION_IDENTIFIER    source_11
205854   , l2.ENTERED_AMOUNT    source_18
205855   , l2.ACCOUNTED_AMOUNT    source_22
205856   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
205857   FROM xla_events_gt     xet 
205858   , CST_XLA_WIP_LINES_V  l2
205859  WHERE xet.event_id between x_first_event_id and x_last_event_id
205860    and xet.event_date between p_pad_start_date and p_pad_end_date
205861    and xet.event_class_code = C_EVENT_CLASS_CODE
205862    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
205863 ;
205864 
205865 --
205866 BEGIN
205867 IF g_log_enabled THEN
205868    l_log_module := C_DEFAULT_MODULE||'.EventClass_306';
205869 END IF;
205870 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
205871    trace
205872       (p_msg      => 'BEGIN of EventClass_306'
205873       ,p_level    => C_LEVEL_PROCEDURE
205874       ,p_module   => l_log_module);
205875 END IF;
205876 
205877 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
205878    trace
205879       (p_msg      => 'p_application_id = '||p_application_id||
205880                      ' - p_base_ledger_id = '||p_base_ledger_id||
205881                      ' - p_target_ledger_id  = '||p_target_ledger_id||
205882                      ' - p_language = '||p_language||
205883                      ' - p_currency_code = '||p_currency_code||
205884                      ' - p_sla_ledger_id = '||p_sla_ledger_id
205885       ,p_level    => C_LEVEL_STATEMENT
205886       ,p_module   => l_log_module);
205887 END IF;
205888 --
205889 -- initialze arrays
205890 --
205891 g_array_event.DELETE;
205892 l_rec_array_event := l_null_rec_array_event;
205893 --
205894 --------------------------------------
205895 -- 4262811 Initialze MPA Line Number
205896 --------------------------------------
205897 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
205898 
205899 --
205900 
205901 --
205902 OPEN header_cur;
205903 --
205904 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
205905    trace
205906    (p_msg      => 'SQL - FETCH header_cur'
205907    ,p_level    => C_LEVEL_STATEMENT
205908    ,p_module   => l_log_module);
205909 END IF;
205910 --
205911 LOOP
205912 FETCH header_cur BULK COLLECT INTO
205913         l_array_entity_id
205914       , l_array_legal_entity_id
205915       , l_array_entity_code
205916       , l_array_transaction_num
205917       , l_array_event_id
205918       , l_array_class_code
205919       , l_array_event_type
205920       , l_array_event_number
205921       , l_array_event_date
205922       , l_array_transaction_date
205923       , l_array_reference_num_1
205924       , l_array_reference_num_2
205925       , l_array_reference_num_3
205926       , l_array_reference_num_4
205927       , l_array_reference_char_1
205928       , l_array_reference_char_2
205929       , l_array_reference_char_3
205930       , l_array_reference_char_4
205931       , l_array_reference_date_1
205932       , l_array_reference_date_2
205933       , l_array_reference_date_3
205934       , l_array_reference_date_4
205935       , l_array_event_created_by
205936       , l_array_budgetary_control_flag 
205937       , l_array_source_12
205938       , l_array_source_12_meaning
205939       , l_array_source_15
205940       , l_array_source_19
205941       , l_array_source_20
205942       , l_array_source_21
205943       , l_array_source_38
205944       , l_array_source_38_meaning
205945       LIMIT l_rows;
205946 --
205947 IF (C_LEVEL_EVENT >= g_log_level) THEN
205948    trace
205949    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
205950    ,p_level    => C_LEVEL_EVENT
205951    ,p_module   => l_log_module);
205952 END IF;
205953 --
205954 EXIT WHEN l_array_entity_id.COUNT = 0;
205955 
205956 -- initialize arrays
205957 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
205958 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
205959 
205960 --
205961 -- Bug 4458708
205962 --
205963 XLA_AE_LINES_PKG.g_LineNumber := 0;
205964 
205965 
205966 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
205967 g_last_hdr_idx := l_array_event_id.LAST;
205968 --
205969 -- loop for the headers. Each iteration is for each header extract row
205970 -- fetched in header cursor
205971 --
205972 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
205973 
205974 --
205975 -- set event info as cache for other routines to refer event attributes
205976 --
205977 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
205978    (p_application_id           => p_application_id
205979    ,p_primary_ledger_id        => p_primary_ledger_id
205980    ,p_base_ledger_id           => p_base_ledger_id
205981    ,p_target_ledger_id         => p_target_ledger_id
205982    ,p_entity_id                => l_array_entity_id(hdr_idx)
205983    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
205984    ,p_entity_code              => l_array_entity_code(hdr_idx)
205985    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
205986    ,p_event_id                 => l_array_event_id(hdr_idx)
205987    ,p_event_class_code         => l_array_class_code(hdr_idx)
205988    ,p_event_type_code          => l_array_event_type(hdr_idx)
205989    ,p_event_number             => l_array_event_number(hdr_idx)
205990    ,p_event_date               => l_array_event_date(hdr_idx)
205991    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
205992    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
205993    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
205994    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
205995    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
205996    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
205997    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
205998    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
205999    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
206000    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
206001    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
206002    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
206003    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
206004    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
206005    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
206006 
206007 --
206008 -- set the status of entry to C_VALID (0)
206009 --
206010 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
206011 
206012 --
206013 -- initialize a row for ae header
206014 --
206015 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
206016 
206017 l_event_id := l_array_event_id(hdr_idx);
206018 
206019 --
206020 -- storing the hdr_idx for event. May be used by line cursor.
206021 --
206022 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
206023 
206024 --
206025 -- store sources from header extract. This can be improved to
206026 -- store only those sources from header extract that may be used in lines
206027 --
206028 
206029 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
206030 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
206031 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
206032 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
206033 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
206034 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
206035 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
206036 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
206037 
206038 --
206039 -- initilaize the status of ae headers for diffrent balance types
206040 -- the status is initialised to C_NOT_CREATED (2)
206041 --
206042 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
206043 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
206044 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
206045 
206046 --
206047 -- call api to validate and store accounting attributes for header
206048 --
206049 
206050 ------------------------------------------------------------
206051 -- Accrual Reversal : to get date for Standard Source (NONE)
206052 ------------------------------------------------------------
206053 l_acc_rev_gl_date_source := NULL;
206054 
206055      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
206056       l_rec_acct_attrs.array_date_value(1) := 
206057 xla_ae_sources_pkg.GetSystemSourceDate(
206058    p_source_code           => 'XLA_REFERENCE_DATE_1'
206059  , p_source_type_code      => 'Y'
206060  , p_source_application_id =>  602
206061 );
206062      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
206063       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
206064 
206065 
206066 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
206067 
206068 XLA_AE_HEADER_PKG.SetJeCategoryName;
206069 
206070 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
206071 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
206072 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
206073 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
206074 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
206075 
206076 
206077 -- No header level analytical criteria
206078 
206079 --
206080 --accounting attribute enhancement, bug 3612931
206081 --
206082 l_trx_reversal_source := SUBSTR(NULL, 1,30);
206083 
206084 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
206085    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
206086 
206087    xla_accounting_err_pkg.build_message
206088       (p_appli_s_name            => 'XLA'
206089       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
206090       ,p_token_1                 => 'ACCT_ATTR_NAME'
206091       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
206092       ,p_token_2                 => 'PRODUCT_NAME'
206093       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
206094       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
206095       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
206096       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
206097 
206098 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
206099    --
206100    -- following sets the accounting attributes needed to reverse
206101    -- accounting for a distributeion
206102    --
206103    xla_ae_lines_pkg.SetTrxReversalAttrs
206104       (p_event_id              => l_event_id
206105       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
206106       ,p_trx_reversal_source   => l_trx_reversal_source);
206107 
206108 END IF;
206109 
206110 
206111 ----------------------------------------------------------------
206112 -- 4262811 -  update the header statuses to invalid in need be
206113 ----------------------------------------------------------------
206114 --
206115 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
206116 
206117 
206118   -----------------------------------------------
206119   -- No accrual reversal for the event class/type
206120   -----------------------------------------------
206121 ----------------------------------------------------------------
206122 
206123 --
206124 -- this ends the header loop iteration for one bulk fetch
206125 --
206126 END LOOP;
206127 
206128 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
206129 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
206130 
206131 --
206132 -- insert dummy rows into lines gt table that were created due to
206133 -- transaction reversals
206134 --
206135 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
206136    l_result := XLA_AE_LINES_PKG.InsertLines;
206137 END IF;
206138 
206139 --
206140 -- reset the temp_line_num for each set of events fetched from header
206141 -- cursor rather than doing it for each new event in line cursor
206142 -- Bug 3939231
206143 --
206144 xla_ae_lines_pkg.g_temp_line_num := 0;
206145 
206146 
206147 
206148 --
206149 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
206150 --
206151 --
206152 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
206153 
206154       trace
206155          (p_msg      => 'SQL - FETCH line_cur'
206156          ,p_level    => C_LEVEL_STATEMENT
206157          ,p_module   => l_log_module);
206158 
206159 END IF;
206160 --
206161 --
206162 LOOP
206163   --
206164   FETCH line_cur BULK COLLECT INTO
206165         l_array_entity_id
206166       , l_array_legal_entity_id
206167       , l_array_entity_code
206168       , l_array_transaction_num
206169       , l_array_event_id
206170       , l_array_class_code
206171       , l_array_event_type
206172       , l_array_event_number
206173       , l_array_event_date
206174       , l_array_transaction_date
206175       , l_array_reference_num_1
206176       , l_array_reference_num_2
206177       , l_array_reference_num_3
206178       , l_array_reference_num_4
206179       , l_array_reference_char_1
206180       , l_array_reference_char_2
206181       , l_array_reference_char_3
206182       , l_array_reference_char_4
206183       , l_array_reference_date_1
206184       , l_array_reference_date_2
206185       , l_array_reference_date_3
206186       , l_array_reference_date_4
206187       , l_array_event_created_by
206188       , l_array_budgetary_control_flag
206189       , l_array_extract_line_num 
206190       , l_array_source_4
206191       , l_array_source_11
206192       , l_array_source_18
206193       , l_array_source_22
206194       , l_array_source_24
206195       LIMIT l_rows;
206196 
206197   --
206198   IF (C_LEVEL_EVENT >= g_log_level) THEN
206199             trace
206200                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
206201                ,p_level    => C_LEVEL_EVENT
206202                ,p_module   => l_log_module);
206203   END IF;
206204   --
206205   EXIT WHEN l_array_entity_id.count = 0;
206206 
206207   XLA_AE_LINES_PKG.g_rec_lines := null;
206208 
206209 --
206210 -- Bug 4458708
206211 --
206212 XLA_AE_LINES_PKG.g_LineNumber := 0;
206213 --
206214 --
206215 
206216 FOR Idx IN 1..l_array_event_id.count LOOP
206217    --
206218    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
206219    --
206220    l_event_id := l_array_event_id(idx);  -- 5648433
206221 
206222    --
206223    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
206224    --
206225 
206226    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
206227              (g_array_event(l_event_id).array_value_num('header_index'))
206228          ,'N'
206229          ) <> 'Y'
206230    THEN
206231       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
206232          trace
206233             (p_msg      => 'Trancaction revesal option is not Y '
206234             ,p_level    => C_LEVEL_STATEMENT
206235             ,p_module   => l_log_module);
206236       END IF;
206237 
206238 --
206239 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
206240 --
206241 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
206242 --
206243 -- set event info as cache for other routines to refer event attributes
206244 --
206245 
206246 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
206247    l_previous_event_id := l_event_id;
206248 
206249    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
206250       (p_application_id           => p_application_id
206251       ,p_primary_ledger_id        => p_primary_ledger_id
206252       ,p_base_ledger_id           => p_base_ledger_id
206253       ,p_target_ledger_id         => p_target_ledger_id
206254       ,p_entity_id                => l_array_entity_id(Idx)
206255       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
206256       ,p_entity_code              => l_array_entity_code(Idx)
206257       ,p_transaction_num          => l_array_transaction_num(Idx)
206258       ,p_event_id                 => l_array_event_id(Idx)
206259       ,p_event_class_code         => l_array_class_code(Idx)
206260       ,p_event_type_code          => l_array_event_type(Idx)
206261       ,p_event_number             => l_array_event_number(Idx)
206262       ,p_event_date               => l_array_event_date(Idx)
206263       ,p_transaction_date         => l_array_transaction_date(Idx)
206264       ,p_reference_num_1          => l_array_reference_num_1(Idx)
206265       ,p_reference_num_2          => l_array_reference_num_2(Idx)
206266       ,p_reference_num_3          => l_array_reference_num_3(Idx)
206267       ,p_reference_num_4          => l_array_reference_num_4(Idx)
206268       ,p_reference_char_1         => l_array_reference_char_1(Idx)
206269       ,p_reference_char_2         => l_array_reference_char_2(Idx)
206270       ,p_reference_char_3         => l_array_reference_char_3(Idx)
206271       ,p_reference_char_4         => l_array_reference_char_4(Idx)
206272       ,p_reference_date_1         => l_array_reference_date_1(Idx)
206273       ,p_reference_date_2         => l_array_reference_date_2(Idx)
206274       ,p_reference_date_3         => l_array_reference_date_3(Idx)
206275       ,p_reference_date_4         => l_array_reference_date_4(Idx)
206276       ,p_event_created_by         => l_array_event_created_by(Idx)
206277       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
206278        --
206279 END IF;
206280 
206281 
206282 
206283 --
206284 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
206285 
206286 l_acct_reversal_source := SUBSTR(NULL, 1,30);
206287 
206288 IF l_continue_with_lines THEN
206289    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
206290       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
206291 
206292       xla_accounting_err_pkg.build_message
206293          (p_appli_s_name            => 'XLA'
206294          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
206295          ,p_token_1                 => 'LINE_NUMBER'
206296          ,p_value_1                 => l_array_extract_line_num(Idx)
206297          ,p_token_2                 => 'PRODUCT_NAME'
206298          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
206299          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
206300          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
206301          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
206302 
206303    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
206304       --
206305       -- following sets the accounting attributes needed to reverse
206306       -- accounting for a distributeion
206307       --
206308 
206309       --
206310       -- 5217187
206311       --
206312       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
206313       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
206314                                        g_array_event(l_event_id).array_value_num('header_index'));
206315       --
206316       --
206317 
206318       -- No reversal code generated
206319 
206320       xla_ae_lines_pkg.SetAcctReversalAttrs
206321          (p_event_id             => l_event_id
206322          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
206323          ,p_calculate_acctd_flag => l_calculate_acctd_flag
206324          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
206325    END IF;
206326 
206327    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
206328        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
206329 
206330 --
206331 AcctLineType_183 (
206332  p_application_id  => p_application_id
206333  ,p_event_id     => l_event_id
206334  ,p_calculate_acctd_flag => l_calculate_acctd_flag
206335  ,p_calculate_g_l_flag => l_calculate_g_l_flag
206336  ,p_actual_flag => l_actual_flag
206337  ,p_balance_type_code => l_balance_type_code
206338  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
206339  
206340  , p_source_4 => l_array_source_4(Idx)
206341  , p_source_11 => l_array_source_11(Idx)
206342  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
206343  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
206344  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
206345  , p_source_18 => l_array_source_18(Idx)
206346  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
206347  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
206348  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
206349  , p_source_22 => l_array_source_22(Idx)
206350  , p_source_24 => l_array_source_24(Idx)
206351  );
206352 If(l_balance_type_code = 'A') THEN
206353   l_actual_gain_loss_ref := l_gain_or_loss_ref;
206354 END IF;
206355 
206356 --
206357 
206358 
206359 --
206360 AcctLineType_255 (
206361  p_application_id  => p_application_id
206362  ,p_event_id     => l_event_id
206363  ,p_calculate_acctd_flag => l_calculate_acctd_flag
206364  ,p_calculate_g_l_flag => l_calculate_g_l_flag
206365  ,p_actual_flag => l_actual_flag
206366  ,p_balance_type_code => l_balance_type_code
206367  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
206368  
206369  , p_source_4 => l_array_source_4(Idx)
206370  , p_source_11 => l_array_source_11(Idx)
206371  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
206372  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
206373  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
206374  , p_source_18 => l_array_source_18(Idx)
206375  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
206376  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
206377  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
206378  , p_source_22 => l_array_source_22(Idx)
206379  , p_source_24 => l_array_source_24(Idx)
206380  );
206381 If(l_balance_type_code = 'A') THEN
206382   l_actual_gain_loss_ref := l_gain_or_loss_ref;
206383 END IF;
206384 
206385 --
206386 
206387       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
206388       -- or secondary ledger that has different currency with primary
206389       -- or alc that is calculated by sla
206390       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
206391             (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'))
206392 
206393 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
206394 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
206395           AND (l_actual_flag = 'A')) THEN
206396         XLA_AE_LINES_PKG.CreateGainOrLossLines(
206397           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
206398          ,p_application_id   => p_application_id
206399          ,p_amb_context_code => 'DEFAULT'
206400          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
206401          ,p_event_class_code => C_EVENT_CLASS_CODE
206402          ,p_event_type_code  => C_EVENT_TYPE_CODE
206403          
206404          ,p_gain_ccid        => -1
206405          ,p_loss_ccid        => -1
206406 
206407          ,p_actual_flag      => l_actual_flag
206408          ,p_enc_flag         => null
206409          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
206410          ,p_enc_g_l_ref      => null
206411          );
206412       END IF;
206413    END IF;
206414 END IF;
206415 
206416    ELSE
206417       --
206418       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
206419       --
206420       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
206421          trace
206422             (p_msg      => 'Trancaction revesal option is Y'
206423             ,p_level    => C_LEVEL_STATEMENT
206424             ,p_module   => l_log_module);
206425       END IF;
206426    END IF;
206427 
206428 END LOOP;
206429 l_result := XLA_AE_LINES_PKG.InsertLines ;
206430 end loop;
206431 close line_cur;
206432 
206433 
206434 --
206435 -- insert headers into xla_ae_headers_gt table
206436 --
206437 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
206438 
206439 -- insert into errors table here.
206440 
206441 END LOOP;
206442 
206443 --
206444 -- 4865292
206445 --
206446 -- Compare g_hdr_extract_count with event count in
206447 -- CreateHeadersAndLines.
206448 --
206449 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
206450 
206451 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
206452    trace (p_msg     => '# rows extracted from header extract objects '
206453                     || ' (running total): '
206454                     || g_hdr_extract_count
206455          ,p_level   => C_LEVEL_STATEMENT
206456          ,p_module  => l_log_module);
206457 END IF;
206458 
206459 CLOSE header_cur;
206460 --
206461 
206462 --
206463 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
206464    trace
206465       (p_msg      => 'END of EventClass_306'
206466       ,p_level    => C_LEVEL_PROCEDURE
206467       ,p_module   => l_log_module);
206468 END IF;
206469 --
206470 RETURN l_result;
206471 EXCEPTION
206472 WHEN xla_exceptions_pkg.application_exception THEN
206473    
206474 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
206475 
206476    
206477 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
206478 
206479    RAISE;
206480 
206481 WHEN NO_DATA_FOUND THEN
206482 
206483 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
206484 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
206485 
206486 FOR header_record IN header_cur
206487 LOOP
206488     l_array_header_events(header_record.event_id) := header_record.event_id;
206489 END LOOP;
206490 
206491 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
206492 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
206493 
206494 fnd_file.put_line(fnd_file.LOG, '                    ');
206495 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
206496 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
206497 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
206498 
206499 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
206500 LOOP
206501 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
206502 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
206503         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
206504 	END IF;
206505 END LOOP;
206506 
206507 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
206508 fnd_file.put_line(fnd_file.LOG, '                    ');
206509 
206510 
206511 xla_exceptions_pkg.raise_message
206512       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_306');
206513 
206514 
206515 WHEN OTHERS THEN
206516    xla_exceptions_pkg.raise_message
206517       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_306');
206518 END EventClass_306;
206519 --
206520 
206521 ---------------------------------------
206522 --
206523 -- PRIVATE PROCEDURE
206524 --         insert_sources_307
206525 --
206526 ----------------------------------------
206527 --
206528 PROCEDURE insert_sources_307(
206529                                 p_target_ledger_id       IN NUMBER
206530                               , p_language               IN VARCHAR2
206531                               , p_sla_ledger_id          IN NUMBER
206532                               , p_pad_start_date         IN DATE
206533                               , p_pad_end_date           IN DATE
206534                          )
206535 IS
206536 
206537 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_MTL_ALL';
206538 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'WIP_MTL';
206539 p_apps_owner                   VARCHAR2(30);
206540 l_log_module                   VARCHAR2(240);
206541 BEGIN
206542 IF g_log_enabled THEN
206543       l_log_module := C_DEFAULT_MODULE||'.insert_sources_307';
206544 END IF;
206545 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
206546 
206547       trace
206548          (p_msg      => 'BEGIN of insert_sources_307'
206549          ,p_level    => C_LEVEL_PROCEDURE
206550          ,p_module   => l_log_module);
206551 
206552 END IF;
206553 
206554 -- select APPS owner
206555 SELECT oracle_username
206556   INTO p_apps_owner
206557   FROM fnd_oracle_userid
206558  WHERE read_only_flag = 'U'
206559 ;
206560 
206561 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
206562       trace
206563          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
206564                         ' - p_language = '||p_language||
206565                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
206566                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
206567                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
206568                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
206569          ,p_level    => C_LEVEL_STATEMENT
206570          ,p_module   => l_log_module);
206571 END IF;
206572 
206573 
206574 --
206575 INSERT INTO xla_diag_sources --hdr2
206576 (
206577         event_id
206578       , ledger_id
206579       , sla_ledger_id
206580       , description_language
206581       , object_name
206582       , object_type_code
206583       , line_number
206584       , source_application_id
206585       , source_type_code
206586       , source_code
206587       , source_value
206588       , source_meaning
206589       , created_by
206590       , creation_date
206591       , last_update_date
206592       , last_updated_by
206593       , last_update_login
206594       , program_update_date
206595       , program_application_id
206596       , program_id
206597       , request_id
206598 )
206599 SELECT
206600         event_id
206601       , p_target_ledger_id
206602       , p_sla_ledger_id
206603       , p_language
206604       , object_name
206605       , object_type_code
206606       , line_number
206607       , source_application_id
206608       , source_type_code
206609       , source_code
206610       , SUBSTR(source_value ,1,1996)
206611       , SUBSTR(source_meaning ,1,200)
206612       , xla_environment_pkg.g_Usr_Id
206613       , TRUNC(SYSDATE)
206614       , TRUNC(SYSDATE)
206615       , xla_environment_pkg.g_Usr_Id
206616       , xla_environment_pkg.g_Login_Id
206617       , TRUNC(SYSDATE)
206618       , xla_environment_pkg.g_Prog_Appl_Id
206619       , xla_environment_pkg.g_Prog_Id
206620       , xla_environment_pkg.g_Req_Id
206621   FROM (
206622        SELECT xet.event_id                  event_id
206623             , 0                          line_number
206624             , CASE r
206625                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
206626                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
206627                 
206628                ELSE null
206629               END                           object_name
206630             , CASE r
206631                 WHEN 1 THEN 'HEADER' 
206632                 WHEN 2 THEN 'HEADER' 
206633                 
206634                 ELSE null
206635               END                           object_type_code
206636             , CASE r
206637                 WHEN 1 THEN '707' 
206638                 WHEN 2 THEN '707' 
206639                 
206640                 ELSE null
206641               END                           source_application_id
206642             , 'S'             source_type_code
206643             , CASE r
206644                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
206645                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
206646                 
206647                 ELSE null
206648               END                           source_code
206649             , CASE r
206650                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
206651                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
206652                 
206653                 ELSE null
206654               END                           source_value
206655             , CASE r
206656                 WHEN 1 THEN fvl12.meaning
206657                 WHEN 2 THEN fvl38.meaning
206658                 
206659                 ELSE null
206660               END               source_meaning
206661          FROM xla_events_gt     xet  
206662       , CST_XLA_INV_HEADERS_V  h1
206663   , fnd_lookup_values    fvl12
206664   , fnd_lookup_values    fvl38
206665              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
206666          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
206667            AND xet.event_class_code = C_EVENT_CLASS_CODE
206668               AND h1.event_id = xet.event_id
206669    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
206670   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
206671   AND fvl12.view_application_id(+) = 700
206672   AND fvl12.language(+)            = USERENV('LANG')
206673      AND fvl38.lookup_type(+)         = 'YES_NO'
206674   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
206675   AND fvl38.view_application_id(+) = 0
206676   AND fvl38.language(+)            = USERENV('LANG')
206677   
206678 )
206679 ;
206680 --
206681 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
206682 
206683       trace
206684          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
206685          ,p_level    => C_LEVEL_STATEMENT
206686          ,p_module   => l_log_module);
206687 
206688 END IF;
206689 --
206690 
206691 
206692 
206693 --
206694 INSERT INTO xla_diag_sources  --line2
206695 (
206696         event_id
206697       , ledger_id
206698       , sla_ledger_id
206699       , description_language
206700       , object_name
206701       , object_type_code
206702       , line_number
206703       , source_application_id
206704       , source_type_code
206705       , source_code
206706       , source_value
206707       , source_meaning
206708       , created_by
206709       , creation_date
206710       , last_update_date
206711       , last_updated_by
206712       , last_update_login
206713       , program_update_date
206714       , program_application_id
206715       , program_id
206716       , request_id
206717 )
206718 SELECT  event_id
206719       , p_target_ledger_id
206720       , p_sla_ledger_id
206721       , p_language
206722       , object_name
206723       , object_type_code
206724       , line_number
206725       , source_application_id
206726       , source_type_code
206727       , source_code
206728       , SUBSTR(source_value,1,1996)
206729       , SUBSTR(source_meaning ,1,200)
206730       , xla_environment_pkg.g_Usr_Id
206731       , TRUNC(SYSDATE)
206732       , TRUNC(SYSDATE)
206733       , xla_environment_pkg.g_Usr_Id
206734       , xla_environment_pkg.g_Login_Id
206735       , TRUNC(SYSDATE)
206736       , xla_environment_pkg.g_Prog_Appl_Id
206737       , xla_environment_pkg.g_Prog_Id
206738       , xla_environment_pkg.g_Req_Id
206739   FROM (
206740        SELECT xet.event_id                  event_id
206741             , l2.line_number                 line_number
206742             , CASE r
206743                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
206744                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
206745                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
206746                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
206747                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
206748                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
206749                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
206750                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
206751                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
206752                 
206753                ELSE null
206754               END                           object_name
206755             , CASE r
206756                 WHEN 1 THEN 'LINE' 
206757                 WHEN 2 THEN 'LINE' 
206758                 WHEN 3 THEN 'LINE' 
206759                 WHEN 4 THEN 'LINE' 
206760                 WHEN 5 THEN 'LINE' 
206761                 WHEN 6 THEN 'LINE' 
206762                 WHEN 7 THEN 'LINE' 
206763                 WHEN 8 THEN 'LINE' 
206764                 WHEN 9 THEN 'LINE' 
206765                 
206766                 ELSE null
206767               END                           object_type_code
206768             , CASE r
206769                 WHEN 1 THEN '707' 
206770                 WHEN 2 THEN '707' 
206771                 WHEN 3 THEN '707' 
206772                 WHEN 4 THEN '707' 
206773                 WHEN 5 THEN '707' 
206774                 WHEN 6 THEN '707' 
206775                 WHEN 7 THEN '707' 
206776                 WHEN 8 THEN '707' 
206777                 WHEN 9 THEN '707' 
206778                 
206779                 ELSE null
206780               END                           source_application_id
206781             , 'S'             source_type_code
206782             , CASE r
206783                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
206784                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
206785                 WHEN 3 THEN 'CURRENCY_CODE' 
206786                 WHEN 4 THEN 'ENTERED_AMOUNT' 
206787                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
206788                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
206789                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
206790                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
206791                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
206792                 
206793                 ELSE null
206794               END                           source_code
206795             , CASE r
206796                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
206797                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
206798                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
206799                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
206800                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
206801                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
206802                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
206803                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
206804                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
206805                 
206806                 ELSE null
206807               END                           source_value
206808             , null              source_meaning
206809          FROM  xla_events_gt     xet  
206810         , CST_XLA_INV_LINES_V  l2
206811             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
206812         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
206813           AND xet.event_class_code = C_EVENT_CLASS_CODE
206814             AND l2.event_id          = xet.event_id
206815 
206816 )
206817 ;
206818 --
206819 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
206820 
206821       trace
206822          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
206823          ,p_level    => C_LEVEL_STATEMENT
206824          ,p_module   => l_log_module);
206825 
206826 END IF;
206827 
206828 
206829 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
206830       trace
206831          (p_msg      => 'END of insert_sources_307'
206832          ,p_level    => C_LEVEL_PROCEDURE
206833          ,p_module   => l_log_module);
206834 END IF;
206835 EXCEPTION
206836   WHEN xla_exceptions_pkg.application_exception THEN
206837       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
206838             trace
206839                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
206840                ,p_level    => C_LEVEL_EXCEPTION
206841                ,p_module   => l_log_module);
206842       END IF;
206843       RAISE;
206844   WHEN OTHERS THEN
206845       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
206846             trace
206847                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
206848                ,p_level    => C_LEVEL_EXCEPTION
206849                ,p_module   => l_log_module);
206850        END IF;
206851        xla_exceptions_pkg.raise_message
206852            (p_location => 'XLA_00707_AAD_S_000002_PKG.insert_sources_307');
206853 END insert_sources_307;
206854 --
206855 
206856 ---------------------------------------
206857 --
206858 -- PRIVATE FUNCTION
206859 --         EventClass_307
206860 --
206861 ----------------------------------------
206862 --
206863 FUNCTION EventClass_307
206864        (p_application_id         IN NUMBER
206865        ,p_base_ledger_id         IN NUMBER
206866        ,p_target_ledger_id       IN NUMBER
206867        ,p_language               IN VARCHAR2
206868        ,p_currency_code          IN VARCHAR2
206869        ,p_sla_ledger_id          IN NUMBER
206870        ,p_pad_start_date         IN DATE
206871        ,p_pad_end_date           IN DATE
206872        ,p_primary_ledger_id      IN NUMBER)
206873 RETURN BOOLEAN IS
206874 --
206875 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_MTL_ALL';
206876 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'WIP_MTL';
206877 
206878 l_calculate_acctd_flag   VARCHAR2(1) :='N';
206879 l_calculate_g_l_flag     VARCHAR2(1) :='N';
206880 --
206881 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
206882 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
206883 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
206884 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
206885 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
206886 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
206887 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
206888 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
206889 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
206890 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
206891 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
206892 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
206893 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
206894 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
206895 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
206896 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
206897 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
206898 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
206899 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
206900 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
206901 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
206902 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
206903 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
206904 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
206905 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
206906 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
206907 
206908 l_event_id                             NUMBER;
206909 l_previous_event_id                    NUMBER;
206910 l_first_event_id                       NUMBER;
206911 l_last_event_id                        NUMBER;
206912 
206913 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
206914 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
206915 --
206916 --
206917 l_result                    BOOLEAN := TRUE;
206918 l_rows                      NUMBER  := 1000;
206919 l_event_type_name           VARCHAR2(80) := 'All';
206920 l_event_class_name          VARCHAR2(80) := 'WIP Material';
206921 l_description               VARCHAR2(4000);
206922 l_transaction_reversal      NUMBER;
206923 l_ae_header_id              NUMBER;
206924 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
206925 l_log_module                VARCHAR2(240);
206926 --
206927 l_acct_reversal_source      VARCHAR2(30);
206928 l_trx_reversal_source       VARCHAR2(30);
206929 
206930 l_continue_with_lines       BOOLEAN := TRUE;
206931 --
206932 l_acc_rev_gl_date_source    DATE;                      -- 4262811
206933 --
206934 type t_array_event_id is table of number index by binary_integer;
206935 
206936 l_rec_array_event                    t_rec_array_event;
206937 l_null_rec_array_event               t_rec_array_event;
206938 l_array_ae_header_id                 xla_number_array_type;
206939 l_actual_flag                        VARCHAR2(1) := NULL;
206940 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
206941 l_balance_type_code                  VARCHAR2(1) :=NULL;
206942 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
206943 
206944 --
206945 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
206946 --
206947 
206948 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
206949 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
206950 
206951 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
206952 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
206953 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
206954 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
206955 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
206956 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
206957 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
206958 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
206959 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
206960 
206961 l_array_source_12              t_array_source_12;
206962 l_array_source_12_meaning      t_array_lookup_meaning;
206963 l_array_source_38              t_array_source_38;
206964 l_array_source_38_meaning      t_array_lookup_meaning;
206965 
206966 l_array_source_4      t_array_source_4;
206967 l_array_source_11      t_array_source_11;
206968 l_array_source_15      t_array_source_15;
206969 l_array_source_18      t_array_source_18;
206970 l_array_source_19      t_array_source_19;
206971 l_array_source_20      t_array_source_20;
206972 l_array_source_21      t_array_source_21;
206973 l_array_source_22      t_array_source_22;
206974 l_array_source_24      t_array_source_24;
206975 
206976 --
206977 CURSOR header_cur
206978 IS
206979 SELECT /*+ leading(xet) cardinality(xet,1) */
206980 -- Event Class Code: WIP_MTL
206981     xet.entity_id
206982    ,xet.legal_entity_id
206983    ,xet.entity_code
206984    ,xet.transaction_number
206985    ,xet.event_id
206986    ,xet.event_class_code
206987    ,xet.event_type_code
206988    ,xet.event_number
206989    ,xet.event_date
206990    ,xet.transaction_date
206991    ,xet.reference_num_1
206992    ,xet.reference_num_2
206993    ,xet.reference_num_3
206994    ,xet.reference_num_4
206995    ,xet.reference_char_1
206996    ,xet.reference_char_2
206997    ,xet.reference_char_3
206998    ,xet.reference_char_4
206999    ,xet.reference_date_1
207000    ,xet.reference_date_2
207001    ,xet.reference_date_3
207002    ,xet.reference_date_4
207003    ,xet.event_created_by
207004    ,xet.budgetary_control_flag 
207005   , h1.DISTRIBUTION_TYPE    source_12
207006   , fvl12.meaning   source_12_meaning
207007   , h1.TRANSFER_TO_GL_INDICATOR    source_38
207008   , fvl38.meaning   source_38_meaning
207009   FROM xla_events_gt     xet 
207010   , CST_XLA_INV_HEADERS_V  h1
207011   , fnd_lookup_values    fvl12
207012   , fnd_lookup_values    fvl38
207013  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
207014    and xet.event_class_code = C_EVENT_CLASS_CODE
207015    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
207016    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
207017   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
207018   AND fvl12.view_application_id(+) = 700
207019   AND fvl12.language(+)            = USERENV('LANG')
207020      AND fvl38.lookup_type(+)         = 'YES_NO'
207021   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
207022   AND fvl38.view_application_id(+) = 0
207023   AND fvl38.language(+)            = USERENV('LANG')
207024   
207025  ORDER BY event_id
207026 ;
207027 
207028 
207029 --
207030 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
207031 IS
207032 SELECT  /*+ leading(xet) cardinality(xet,1) */
207033 -- Event Class Code: WIP_MTL
207034     xet.entity_id
207035    ,xet.legal_entity_id
207036    ,xet.entity_code
207037    ,xet.transaction_number
207038    ,xet.event_id
207039    ,xet.event_class_code
207040    ,xet.event_type_code
207041    ,xet.event_number
207042    ,xet.event_date
207043    ,xet.transaction_date
207044    ,xet.reference_num_1
207045    ,xet.reference_num_2
207046    ,xet.reference_num_3
207047    ,xet.reference_num_4
207048    ,xet.reference_char_1
207049    ,xet.reference_char_2
207050    ,xet.reference_char_3
207051    ,xet.reference_char_4
207052    ,xet.reference_date_1
207053    ,xet.reference_date_2
207054    ,xet.reference_date_3
207055    ,xet.reference_date_4
207056    ,xet.event_created_by
207057    ,xet.budgetary_control_flag
207058  , l2.LINE_NUMBER  
207059   , l2.CODE_COMBINATION_ID    source_4
207060   , l2.DISTRIBUTION_IDENTIFIER    source_11
207061   , l2.CURRENCY_CODE    source_15
207062   , l2.ENTERED_AMOUNT    source_18
207063   , l2.CURRENCY_CONVERSION_DATE    source_19
207064   , l2.CURRENCY_CONVERSION_RATE    source_20
207065   , l2.CURRENCY_CONVERSION_TYPE    source_21
207066   , l2.ACCOUNTED_AMOUNT    source_22
207067   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
207068   FROM xla_events_gt     xet 
207069   , CST_XLA_INV_LINES_V  l2
207070  WHERE xet.event_id between x_first_event_id and x_last_event_id
207071    and xet.event_date between p_pad_start_date and p_pad_end_date
207072    and xet.event_class_code = C_EVENT_CLASS_CODE
207073    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
207074 ;
207075 
207076 --
207077 BEGIN
207078 IF g_log_enabled THEN
207079    l_log_module := C_DEFAULT_MODULE||'.EventClass_307';
207080 END IF;
207081 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
207082    trace
207083       (p_msg      => 'BEGIN of EventClass_307'
207084       ,p_level    => C_LEVEL_PROCEDURE
207085       ,p_module   => l_log_module);
207086 END IF;
207087 
207088 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
207089    trace
207090       (p_msg      => 'p_application_id = '||p_application_id||
207091                      ' - p_base_ledger_id = '||p_base_ledger_id||
207092                      ' - p_target_ledger_id  = '||p_target_ledger_id||
207093                      ' - p_language = '||p_language||
207094                      ' - p_currency_code = '||p_currency_code||
207095                      ' - p_sla_ledger_id = '||p_sla_ledger_id
207096       ,p_level    => C_LEVEL_STATEMENT
207097       ,p_module   => l_log_module);
207098 END IF;
207099 --
207100 -- initialze arrays
207101 --
207102 g_array_event.DELETE;
207103 l_rec_array_event := l_null_rec_array_event;
207104 --
207105 --------------------------------------
207106 -- 4262811 Initialze MPA Line Number
207107 --------------------------------------
207108 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
207109 
207110 --
207111 
207112 --
207113 OPEN header_cur;
207114 --
207115 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
207116    trace
207117    (p_msg      => 'SQL - FETCH header_cur'
207118    ,p_level    => C_LEVEL_STATEMENT
207119    ,p_module   => l_log_module);
207120 END IF;
207121 --
207122 LOOP
207123 FETCH header_cur BULK COLLECT INTO
207124         l_array_entity_id
207125       , l_array_legal_entity_id
207126       , l_array_entity_code
207127       , l_array_transaction_num
207128       , l_array_event_id
207129       , l_array_class_code
207130       , l_array_event_type
207131       , l_array_event_number
207132       , l_array_event_date
207133       , l_array_transaction_date
207134       , l_array_reference_num_1
207135       , l_array_reference_num_2
207136       , l_array_reference_num_3
207137       , l_array_reference_num_4
207138       , l_array_reference_char_1
207139       , l_array_reference_char_2
207140       , l_array_reference_char_3
207141       , l_array_reference_char_4
207142       , l_array_reference_date_1
207143       , l_array_reference_date_2
207144       , l_array_reference_date_3
207145       , l_array_reference_date_4
207146       , l_array_event_created_by
207147       , l_array_budgetary_control_flag 
207148       , l_array_source_12
207149       , l_array_source_12_meaning
207150       , l_array_source_38
207151       , l_array_source_38_meaning
207152       LIMIT l_rows;
207153 --
207154 IF (C_LEVEL_EVENT >= g_log_level) THEN
207155    trace
207156    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
207157    ,p_level    => C_LEVEL_EVENT
207158    ,p_module   => l_log_module);
207159 END IF;
207160 --
207161 EXIT WHEN l_array_entity_id.COUNT = 0;
207162 
207163 -- initialize arrays
207164 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
207165 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
207166 
207167 --
207168 -- Bug 4458708
207169 --
207170 XLA_AE_LINES_PKG.g_LineNumber := 0;
207171 
207172 
207173 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
207174 g_last_hdr_idx := l_array_event_id.LAST;
207175 --
207176 -- loop for the headers. Each iteration is for each header extract row
207177 -- fetched in header cursor
207178 --
207179 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
207180 
207181 --
207182 -- set event info as cache for other routines to refer event attributes
207183 --
207184 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
207185    (p_application_id           => p_application_id
207186    ,p_primary_ledger_id        => p_primary_ledger_id
207187    ,p_base_ledger_id           => p_base_ledger_id
207188    ,p_target_ledger_id         => p_target_ledger_id
207189    ,p_entity_id                => l_array_entity_id(hdr_idx)
207190    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
207191    ,p_entity_code              => l_array_entity_code(hdr_idx)
207192    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
207193    ,p_event_id                 => l_array_event_id(hdr_idx)
207194    ,p_event_class_code         => l_array_class_code(hdr_idx)
207195    ,p_event_type_code          => l_array_event_type(hdr_idx)
207196    ,p_event_number             => l_array_event_number(hdr_idx)
207197    ,p_event_date               => l_array_event_date(hdr_idx)
207198    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
207199    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
207200    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
207201    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
207202    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
207203    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
207204    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
207205    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
207206    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
207207    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
207208    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
207209    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
207210    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
207211    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
207212    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
207213 
207214 --
207215 -- set the status of entry to C_VALID (0)
207216 --
207217 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
207218 
207219 --
207220 -- initialize a row for ae header
207221 --
207222 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
207223 
207224 l_event_id := l_array_event_id(hdr_idx);
207225 
207226 --
207227 -- storing the hdr_idx for event. May be used by line cursor.
207228 --
207229 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
207230 
207231 --
207232 -- store sources from header extract. This can be improved to
207233 -- store only those sources from header extract that may be used in lines
207234 --
207235 
207236 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
207237 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
207238 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
207239 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
207240 
207241 --
207242 -- initilaize the status of ae headers for diffrent balance types
207243 -- the status is initialised to C_NOT_CREATED (2)
207244 --
207245 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
207246 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
207247 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
207248 
207249 --
207250 -- call api to validate and store accounting attributes for header
207251 --
207252 
207253 ------------------------------------------------------------
207254 -- Accrual Reversal : to get date for Standard Source (NONE)
207255 ------------------------------------------------------------
207256 l_acc_rev_gl_date_source := NULL;
207257 
207258      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
207259       l_rec_acct_attrs.array_date_value(1) := 
207260 xla_ae_sources_pkg.GetSystemSourceDate(
207261    p_source_code           => 'XLA_REFERENCE_DATE_1'
207262  , p_source_type_code      => 'Y'
207263  , p_source_application_id =>  602
207264 );
207265      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
207266       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
207267 
207268 
207269 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
207270 
207271 XLA_AE_HEADER_PKG.SetJeCategoryName;
207272 
207273 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
207274 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
207275 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
207276 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
207277 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
207278 
207279 
207280 -- No header level analytical criteria
207281 
207282 --
207283 --accounting attribute enhancement, bug 3612931
207284 --
207285 l_trx_reversal_source := SUBSTR(NULL, 1,30);
207286 
207287 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
207288    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
207289 
207290    xla_accounting_err_pkg.build_message
207291       (p_appli_s_name            => 'XLA'
207292       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
207293       ,p_token_1                 => 'ACCT_ATTR_NAME'
207294       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
207295       ,p_token_2                 => 'PRODUCT_NAME'
207296       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
207297       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
207298       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
207299       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
207300 
207301 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
207302    --
207303    -- following sets the accounting attributes needed to reverse
207304    -- accounting for a distributeion
207305    --
207306    xla_ae_lines_pkg.SetTrxReversalAttrs
207307       (p_event_id              => l_event_id
207308       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
207309       ,p_trx_reversal_source   => l_trx_reversal_source);
207310 
207311 END IF;
207312 
207313 
207314 ----------------------------------------------------------------
207315 -- 4262811 -  update the header statuses to invalid in need be
207316 ----------------------------------------------------------------
207317 --
207318 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
207319 
207320 
207321   -----------------------------------------------
207322   -- No accrual reversal for the event class/type
207323   -----------------------------------------------
207324 ----------------------------------------------------------------
207325 
207326 --
207327 -- this ends the header loop iteration for one bulk fetch
207328 --
207329 END LOOP;
207330 
207331 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
207332 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
207333 
207334 --
207335 -- insert dummy rows into lines gt table that were created due to
207336 -- transaction reversals
207337 --
207338 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
207339    l_result := XLA_AE_LINES_PKG.InsertLines;
207340 END IF;
207341 
207342 --
207343 -- reset the temp_line_num for each set of events fetched from header
207344 -- cursor rather than doing it for each new event in line cursor
207345 -- Bug 3939231
207346 --
207347 xla_ae_lines_pkg.g_temp_line_num := 0;
207348 
207349 
207350 
207351 --
207352 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
207353 --
207354 --
207355 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
207356 
207357       trace
207358          (p_msg      => 'SQL - FETCH line_cur'
207359          ,p_level    => C_LEVEL_STATEMENT
207360          ,p_module   => l_log_module);
207361 
207362 END IF;
207363 --
207364 --
207365 LOOP
207366   --
207367   FETCH line_cur BULK COLLECT INTO
207368         l_array_entity_id
207369       , l_array_legal_entity_id
207370       , l_array_entity_code
207371       , l_array_transaction_num
207372       , l_array_event_id
207373       , l_array_class_code
207374       , l_array_event_type
207375       , l_array_event_number
207376       , l_array_event_date
207377       , l_array_transaction_date
207378       , l_array_reference_num_1
207379       , l_array_reference_num_2
207380       , l_array_reference_num_3
207381       , l_array_reference_num_4
207382       , l_array_reference_char_1
207383       , l_array_reference_char_2
207384       , l_array_reference_char_3
207385       , l_array_reference_char_4
207386       , l_array_reference_date_1
207387       , l_array_reference_date_2
207388       , l_array_reference_date_3
207389       , l_array_reference_date_4
207390       , l_array_event_created_by
207391       , l_array_budgetary_control_flag
207392       , l_array_extract_line_num 
207393       , l_array_source_4
207394       , l_array_source_11
207395       , l_array_source_15
207396       , l_array_source_18
207397       , l_array_source_19
207398       , l_array_source_20
207399       , l_array_source_21
207400       , l_array_source_22
207401       , l_array_source_24
207402       LIMIT l_rows;
207403 
207404   --
207405   IF (C_LEVEL_EVENT >= g_log_level) THEN
207406             trace
207407                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
207408                ,p_level    => C_LEVEL_EVENT
207409                ,p_module   => l_log_module);
207410   END IF;
207411   --
207412   EXIT WHEN l_array_entity_id.count = 0;
207413 
207414   XLA_AE_LINES_PKG.g_rec_lines := null;
207415 
207416 --
207417 -- Bug 4458708
207418 --
207419 XLA_AE_LINES_PKG.g_LineNumber := 0;
207420 --
207421 --
207422 
207423 FOR Idx IN 1..l_array_event_id.count LOOP
207424    --
207425    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
207426    --
207427    l_event_id := l_array_event_id(idx);  -- 5648433
207428 
207429    --
207430    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
207431    --
207432 
207433    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
207434              (g_array_event(l_event_id).array_value_num('header_index'))
207435          ,'N'
207436          ) <> 'Y'
207437    THEN
207438       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
207439          trace
207440             (p_msg      => 'Trancaction revesal option is not Y '
207441             ,p_level    => C_LEVEL_STATEMENT
207442             ,p_module   => l_log_module);
207443       END IF;
207444 
207445 --
207446 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
207447 --
207448 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
207449 --
207450 -- set event info as cache for other routines to refer event attributes
207451 --
207452 
207453 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
207454    l_previous_event_id := l_event_id;
207455 
207456    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
207457       (p_application_id           => p_application_id
207458       ,p_primary_ledger_id        => p_primary_ledger_id
207459       ,p_base_ledger_id           => p_base_ledger_id
207460       ,p_target_ledger_id         => p_target_ledger_id
207461       ,p_entity_id                => l_array_entity_id(Idx)
207462       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
207463       ,p_entity_code              => l_array_entity_code(Idx)
207464       ,p_transaction_num          => l_array_transaction_num(Idx)
207465       ,p_event_id                 => l_array_event_id(Idx)
207466       ,p_event_class_code         => l_array_class_code(Idx)
207467       ,p_event_type_code          => l_array_event_type(Idx)
207468       ,p_event_number             => l_array_event_number(Idx)
207469       ,p_event_date               => l_array_event_date(Idx)
207470       ,p_transaction_date         => l_array_transaction_date(Idx)
207471       ,p_reference_num_1          => l_array_reference_num_1(Idx)
207472       ,p_reference_num_2          => l_array_reference_num_2(Idx)
207473       ,p_reference_num_3          => l_array_reference_num_3(Idx)
207474       ,p_reference_num_4          => l_array_reference_num_4(Idx)
207475       ,p_reference_char_1         => l_array_reference_char_1(Idx)
207476       ,p_reference_char_2         => l_array_reference_char_2(Idx)
207477       ,p_reference_char_3         => l_array_reference_char_3(Idx)
207478       ,p_reference_char_4         => l_array_reference_char_4(Idx)
207479       ,p_reference_date_1         => l_array_reference_date_1(Idx)
207480       ,p_reference_date_2         => l_array_reference_date_2(Idx)
207481       ,p_reference_date_3         => l_array_reference_date_3(Idx)
207482       ,p_reference_date_4         => l_array_reference_date_4(Idx)
207483       ,p_event_created_by         => l_array_event_created_by(Idx)
207484       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
207485        --
207486 END IF;
207487 
207488 
207489 
207490 --
207491 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
207492 
207493 l_acct_reversal_source := SUBSTR(NULL, 1,30);
207494 
207495 IF l_continue_with_lines THEN
207496    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
207497       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
207498 
207499       xla_accounting_err_pkg.build_message
207500          (p_appli_s_name            => 'XLA'
207501          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
207502          ,p_token_1                 => 'LINE_NUMBER'
207503          ,p_value_1                 => l_array_extract_line_num(Idx)
207504          ,p_token_2                 => 'PRODUCT_NAME'
207505          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
207506          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
207507          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
207508          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
207509 
207510    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
207511       --
207512       -- following sets the accounting attributes needed to reverse
207513       -- accounting for a distributeion
207514       --
207515 
207516       --
207517       -- 5217187
207518       --
207519       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
207520       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
207521                                        g_array_event(l_event_id).array_value_num('header_index'));
207522       --
207523       --
207524 
207525       -- No reversal code generated
207526 
207527       xla_ae_lines_pkg.SetAcctReversalAttrs
207528          (p_event_id             => l_event_id
207529          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
207530          ,p_calculate_acctd_flag => l_calculate_acctd_flag
207531          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
207532    END IF;
207533 
207534    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
207535        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
207536 
207537 --
207538 AcctLineType_42 (
207539  p_application_id  => p_application_id
207540  ,p_event_id     => l_event_id
207541  ,p_calculate_acctd_flag => l_calculate_acctd_flag
207542  ,p_calculate_g_l_flag => l_calculate_g_l_flag
207543  ,p_actual_flag => l_actual_flag
207544  ,p_balance_type_code => l_balance_type_code
207545  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
207546  
207547  , p_source_4 => l_array_source_4(Idx)
207548  , p_source_11 => l_array_source_11(Idx)
207549  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
207550  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
207551  , p_source_15 => l_array_source_15(Idx)
207552  , p_source_18 => l_array_source_18(Idx)
207553  , p_source_19 => l_array_source_19(Idx)
207554  , p_source_20 => l_array_source_20(Idx)
207555  , p_source_21 => l_array_source_21(Idx)
207556  , p_source_22 => l_array_source_22(Idx)
207557  , p_source_24 => l_array_source_24(Idx)
207558  );
207559 If(l_balance_type_code = 'A') THEN
207560   l_actual_gain_loss_ref := l_gain_or_loss_ref;
207561 END IF;
207562 
207563 --
207564 
207565 
207566 --
207567 AcctLineType_135 (
207568  p_application_id  => p_application_id
207569  ,p_event_id     => l_event_id
207570  ,p_calculate_acctd_flag => l_calculate_acctd_flag
207571  ,p_calculate_g_l_flag => l_calculate_g_l_flag
207572  ,p_actual_flag => l_actual_flag
207573  ,p_balance_type_code => l_balance_type_code
207574  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
207575  
207576  , p_source_4 => l_array_source_4(Idx)
207577  , p_source_11 => l_array_source_11(Idx)
207578  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
207579  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
207580  , p_source_15 => l_array_source_15(Idx)
207581  , p_source_18 => l_array_source_18(Idx)
207582  , p_source_19 => l_array_source_19(Idx)
207583  , p_source_20 => l_array_source_20(Idx)
207584  , p_source_21 => l_array_source_21(Idx)
207585  , p_source_22 => l_array_source_22(Idx)
207586  , p_source_24 => l_array_source_24(Idx)
207587  );
207588 If(l_balance_type_code = 'A') THEN
207589   l_actual_gain_loss_ref := l_gain_or_loss_ref;
207590 END IF;
207591 
207592 --
207593 
207594 
207595 --
207596 AcctLineType_169 (
207597  p_application_id  => p_application_id
207598  ,p_event_id     => l_event_id
207599  ,p_calculate_acctd_flag => l_calculate_acctd_flag
207600  ,p_calculate_g_l_flag => l_calculate_g_l_flag
207601  ,p_actual_flag => l_actual_flag
207602  ,p_balance_type_code => l_balance_type_code
207603  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
207604  
207605  , p_source_4 => l_array_source_4(Idx)
207606  , p_source_11 => l_array_source_11(Idx)
207607  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
207608  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
207609  , p_source_15 => l_array_source_15(Idx)
207610  , p_source_18 => l_array_source_18(Idx)
207611  , p_source_19 => l_array_source_19(Idx)
207612  , p_source_20 => l_array_source_20(Idx)
207613  , p_source_21 => l_array_source_21(Idx)
207614  , p_source_22 => l_array_source_22(Idx)
207615  , p_source_24 => l_array_source_24(Idx)
207616  );
207617 If(l_balance_type_code = 'A') THEN
207618   l_actual_gain_loss_ref := l_gain_or_loss_ref;
207619 END IF;
207620 
207621 --
207622 
207623 
207624 --
207625 AcctLineType_208 (
207626  p_application_id  => p_application_id
207627  ,p_event_id     => l_event_id
207628  ,p_calculate_acctd_flag => l_calculate_acctd_flag
207629  ,p_calculate_g_l_flag => l_calculate_g_l_flag
207630  ,p_actual_flag => l_actual_flag
207631  ,p_balance_type_code => l_balance_type_code
207632  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
207633  
207634  , p_source_4 => l_array_source_4(Idx)
207635  , p_source_11 => l_array_source_11(Idx)
207636  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
207637  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
207638  , p_source_15 => l_array_source_15(Idx)
207639  , p_source_18 => l_array_source_18(Idx)
207640  , p_source_19 => l_array_source_19(Idx)
207641  , p_source_20 => l_array_source_20(Idx)
207642  , p_source_21 => l_array_source_21(Idx)
207643  , p_source_22 => l_array_source_22(Idx)
207644  , p_source_24 => l_array_source_24(Idx)
207645  );
207646 If(l_balance_type_code = 'A') THEN
207647   l_actual_gain_loss_ref := l_gain_or_loss_ref;
207648 END IF;
207649 
207650 --
207651 
207652 
207653 --
207654 AcctLineType_253 (
207655  p_application_id  => p_application_id
207656  ,p_event_id     => l_event_id
207657  ,p_calculate_acctd_flag => l_calculate_acctd_flag
207658  ,p_calculate_g_l_flag => l_calculate_g_l_flag
207659  ,p_actual_flag => l_actual_flag
207660  ,p_balance_type_code => l_balance_type_code
207661  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
207662  
207663  , p_source_4 => l_array_source_4(Idx)
207664  , p_source_11 => l_array_source_11(Idx)
207665  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
207666  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
207667  , p_source_15 => l_array_source_15(Idx)
207668  , p_source_18 => l_array_source_18(Idx)
207669  , p_source_19 => l_array_source_19(Idx)
207670  , p_source_20 => l_array_source_20(Idx)
207671  , p_source_21 => l_array_source_21(Idx)
207672  , p_source_22 => l_array_source_22(Idx)
207673  , p_source_24 => l_array_source_24(Idx)
207674  );
207675 If(l_balance_type_code = 'A') THEN
207676   l_actual_gain_loss_ref := l_gain_or_loss_ref;
207677 END IF;
207678 
207679 --
207680 
207681       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
207682       -- or secondary ledger that has different currency with primary
207683       -- or alc that is calculated by sla
207684       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
207685             (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'))
207686 
207687 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
207688 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
207689           AND (l_actual_flag = 'A')) THEN
207690         XLA_AE_LINES_PKG.CreateGainOrLossLines(
207691           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
207692          ,p_application_id   => p_application_id
207693          ,p_amb_context_code => 'DEFAULT'
207694          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
207695          ,p_event_class_code => C_EVENT_CLASS_CODE
207696          ,p_event_type_code  => C_EVENT_TYPE_CODE
207697          
207698          ,p_gain_ccid        => -1
207699          ,p_loss_ccid        => -1
207700 
207701          ,p_actual_flag      => l_actual_flag
207702          ,p_enc_flag         => null
207703          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
207704          ,p_enc_g_l_ref      => null
207705          );
207706       END IF;
207707    END IF;
207708 END IF;
207709 
207710    ELSE
207711       --
207712       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
207713       --
207714       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
207715          trace
207716             (p_msg      => 'Trancaction revesal option is Y'
207717             ,p_level    => C_LEVEL_STATEMENT
207718             ,p_module   => l_log_module);
207719       END IF;
207720    END IF;
207721 
207722 END LOOP;
207723 l_result := XLA_AE_LINES_PKG.InsertLines ;
207724 end loop;
207725 close line_cur;
207726 
207727 
207728 --
207729 -- insert headers into xla_ae_headers_gt table
207730 --
207731 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
207732 
207733 -- insert into errors table here.
207734 
207735 END LOOP;
207736 
207737 --
207738 -- 4865292
207739 --
207740 -- Compare g_hdr_extract_count with event count in
207741 -- CreateHeadersAndLines.
207742 --
207743 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
207744 
207745 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
207746    trace (p_msg     => '# rows extracted from header extract objects '
207747                     || ' (running total): '
207748                     || g_hdr_extract_count
207749          ,p_level   => C_LEVEL_STATEMENT
207750          ,p_module  => l_log_module);
207751 END IF;
207752 
207753 CLOSE header_cur;
207754 --
207755 
207756 --
207757 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
207758    trace
207759       (p_msg      => 'END of EventClass_307'
207760       ,p_level    => C_LEVEL_PROCEDURE
207761       ,p_module   => l_log_module);
207762 END IF;
207763 --
207764 RETURN l_result;
207765 EXCEPTION
207766 WHEN xla_exceptions_pkg.application_exception THEN
207767    
207768 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
207769 
207770    
207771 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
207772 
207773    RAISE;
207774 
207775 WHEN NO_DATA_FOUND THEN
207776 
207777 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
207778 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
207779 
207780 FOR header_record IN header_cur
207781 LOOP
207782     l_array_header_events(header_record.event_id) := header_record.event_id;
207783 END LOOP;
207784 
207785 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
207786 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
207787 
207788 fnd_file.put_line(fnd_file.LOG, '                    ');
207789 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
207790 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
207791 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
207792 
207793 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
207794 LOOP
207795 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
207796 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
207797         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
207798 	END IF;
207799 END LOOP;
207800 
207801 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
207802 fnd_file.put_line(fnd_file.LOG, '                    ');
207803 
207804 
207805 xla_exceptions_pkg.raise_message
207806       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_307');
207807 
207808 
207809 WHEN OTHERS THEN
207810    xla_exceptions_pkg.raise_message
207811       (p_location => 'XLA_00707_AAD_S_000002_PKG.EventClass_307');
207812 END EventClass_307;
207813 --
207814 
207815 --
207816 --+============================================+
207817 --|                                            |
207818 --|  PRIVATE FUNCTION                          |
207819 --|                                            |
207820 --+============================================+
207821 --
207822 FUNCTION CreateHeadersAndLines
207823        (p_application_id         IN NUMBER
207824        ,p_base_ledger_id         IN NUMBER
207825        ,p_target_ledger_id       IN NUMBER
207826        ,p_pad_start_date         IN DATE
207827        ,p_pad_end_date           IN DATE
207828        ,p_primary_ledger_id      IN NUMBER)
207829 RETURN BOOLEAN IS
207830 l_created                   BOOLEAN:=FALSE;
207831 l_event_id                  NUMBER;
207832 l_event_date                DATE;
207833 l_language                  VARCHAR2(30);
207834 l_currency_code             VARCHAR2(30);
207835 l_sla_ledger_id             NUMBER;
207836 l_log_module                VARCHAR2(240);
207837 
207838 BEGIN
207839 --
207840 IF g_log_enabled THEN
207841    l_log_module := C_DEFAULT_MODULE||'.CreateHeadersAndLines';
207842 END IF;
207843 --
207844 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
207845    trace
207846       (p_msg      => 'BEGIN of CreateHeadersAndLines'
207847       ,p_level    => C_LEVEL_PROCEDURE
207848       ,p_module   => l_log_module);
207849 END IF;
207850 
207851 l_language         := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
207852 l_currency_code    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.currency_code;
207853 l_sla_ledger_id    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.sla_ledger_id;
207854 
207855 --
207856 -- initialize array of lines with NULL
207857 --
207858 xla_ae_lines_pkg.SetNullLine;
207859 
207860 --
207861 -- initialize header extract count -- Bug 4865292
207862 --
207863 g_hdr_extract_count:= 0;
207864 
207865 
207866 l_created := EventClass_259(
207867    p_application_id         => p_application_id
207868  , p_base_ledger_id         => p_base_ledger_id
207869  , p_target_ledger_id       => p_target_ledger_id
207870  , p_language               => l_language
207871  , p_currency_code          => l_currency_code
207872  , p_sla_ledger_id          => l_sla_ledger_id
207873  , p_pad_start_date         => p_pad_start_date
207874  , p_pad_end_date           => p_pad_end_date
207875  , p_primary_ledger_id      => p_primary_ledger_id
207876 );
207877 
207878 
207879 
207880      IF ( g_diagnostics_mode ='Y' ) THEN
207881 
207882          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
207883           trace
207884               (p_msg      => 'CALL Transaction Objects Diagnostics'
207885               ,p_level    => C_LEVEL_STATEMENT
207886               ,p_module   => l_log_module);
207887 
207888          END IF;
207889 
207890          insert_sources_259(
207891                           p_target_ledger_id => p_target_ledger_id
207892                         , p_language         => l_language
207893                         , p_sla_ledger_id    => l_sla_ledger_id
207894                         , p_pad_start_date   => p_pad_start_date
207895                         , p_pad_end_date     => p_pad_end_date
207896                           );
207897 
207898      END IF;
207899 
207900 l_created := EventClass_260(
207901    p_application_id         => p_application_id
207902  , p_base_ledger_id         => p_base_ledger_id
207903  , p_target_ledger_id       => p_target_ledger_id
207904  , p_language               => l_language
207905  , p_currency_code          => l_currency_code
207906  , p_sla_ledger_id          => l_sla_ledger_id
207907  , p_pad_start_date         => p_pad_start_date
207908  , p_pad_end_date           => p_pad_end_date
207909  , p_primary_ledger_id      => p_primary_ledger_id
207910 );
207911 
207912 
207913 
207914      IF ( g_diagnostics_mode ='Y' ) THEN
207915 
207916          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
207917           trace
207918               (p_msg      => 'CALL Transaction Objects Diagnostics'
207919               ,p_level    => C_LEVEL_STATEMENT
207920               ,p_module   => l_log_module);
207921 
207922          END IF;
207923 
207924          insert_sources_260(
207925                           p_target_ledger_id => p_target_ledger_id
207926                         , p_language         => l_language
207927                         , p_sla_ledger_id    => l_sla_ledger_id
207928                         , p_pad_start_date   => p_pad_start_date
207929                         , p_pad_end_date     => p_pad_end_date
207930                           );
207931 
207932      END IF;
207933 
207934 l_created := EventClass_261(
207935    p_application_id         => p_application_id
207936  , p_base_ledger_id         => p_base_ledger_id
207937  , p_target_ledger_id       => p_target_ledger_id
207938  , p_language               => l_language
207939  , p_currency_code          => l_currency_code
207940  , p_sla_ledger_id          => l_sla_ledger_id
207941  , p_pad_start_date         => p_pad_start_date
207942  , p_pad_end_date           => p_pad_end_date
207943  , p_primary_ledger_id      => p_primary_ledger_id
207944 );
207945 
207946 
207947 
207948      IF ( g_diagnostics_mode ='Y' ) THEN
207949 
207950          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
207951           trace
207952               (p_msg      => 'CALL Transaction Objects Diagnostics'
207953               ,p_level    => C_LEVEL_STATEMENT
207954               ,p_module   => l_log_module);
207955 
207956          END IF;
207957 
207958          insert_sources_261(
207959                           p_target_ledger_id => p_target_ledger_id
207960                         , p_language         => l_language
207961                         , p_sla_ledger_id    => l_sla_ledger_id
207962                         , p_pad_start_date   => p_pad_start_date
207963                         , p_pad_end_date     => p_pad_end_date
207964                           );
207965 
207966      END IF;
207967 
207968 l_created := EventClass_262(
207969    p_application_id         => p_application_id
207970  , p_base_ledger_id         => p_base_ledger_id
207971  , p_target_ledger_id       => p_target_ledger_id
207972  , p_language               => l_language
207973  , p_currency_code          => l_currency_code
207974  , p_sla_ledger_id          => l_sla_ledger_id
207975  , p_pad_start_date         => p_pad_start_date
207976  , p_pad_end_date           => p_pad_end_date
207977  , p_primary_ledger_id      => p_primary_ledger_id
207978 );
207979 
207980 
207981 
207982      IF ( g_diagnostics_mode ='Y' ) THEN
207983 
207984          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
207985           trace
207986               (p_msg      => 'CALL Transaction Objects Diagnostics'
207987               ,p_level    => C_LEVEL_STATEMENT
207988               ,p_module   => l_log_module);
207989 
207990          END IF;
207991 
207992          insert_sources_262(
207993                           p_target_ledger_id => p_target_ledger_id
207994                         , p_language         => l_language
207995                         , p_sla_ledger_id    => l_sla_ledger_id
207996                         , p_pad_start_date   => p_pad_start_date
207997                         , p_pad_end_date     => p_pad_end_date
207998                           );
207999 
208000      END IF;
208001 
208002 l_created := EventClass_263(
208003    p_application_id         => p_application_id
208004  , p_base_ledger_id         => p_base_ledger_id
208005  , p_target_ledger_id       => p_target_ledger_id
208006  , p_language               => l_language
208007  , p_currency_code          => l_currency_code
208008  , p_sla_ledger_id          => l_sla_ledger_id
208009  , p_pad_start_date         => p_pad_start_date
208010  , p_pad_end_date           => p_pad_end_date
208011  , p_primary_ledger_id      => p_primary_ledger_id
208012 );
208013 
208014 
208015 
208016      IF ( g_diagnostics_mode ='Y' ) THEN
208017 
208018          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208019           trace
208020               (p_msg      => 'CALL Transaction Objects Diagnostics'
208021               ,p_level    => C_LEVEL_STATEMENT
208022               ,p_module   => l_log_module);
208023 
208024          END IF;
208025 
208026          insert_sources_263(
208027                           p_target_ledger_id => p_target_ledger_id
208028                         , p_language         => l_language
208029                         , p_sla_ledger_id    => l_sla_ledger_id
208030                         , p_pad_start_date   => p_pad_start_date
208031                         , p_pad_end_date     => p_pad_end_date
208032                           );
208033 
208034      END IF;
208035 
208036 l_created := EventClass_264(
208037    p_application_id         => p_application_id
208038  , p_base_ledger_id         => p_base_ledger_id
208039  , p_target_ledger_id       => p_target_ledger_id
208040  , p_language               => l_language
208041  , p_currency_code          => l_currency_code
208042  , p_sla_ledger_id          => l_sla_ledger_id
208043  , p_pad_start_date         => p_pad_start_date
208044  , p_pad_end_date           => p_pad_end_date
208045  , p_primary_ledger_id      => p_primary_ledger_id
208046 );
208047 
208048 
208049 
208050      IF ( g_diagnostics_mode ='Y' ) THEN
208051 
208052          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208053           trace
208054               (p_msg      => 'CALL Transaction Objects Diagnostics'
208055               ,p_level    => C_LEVEL_STATEMENT
208056               ,p_module   => l_log_module);
208057 
208058          END IF;
208059 
208060          insert_sources_264(
208061                           p_target_ledger_id => p_target_ledger_id
208062                         , p_language         => l_language
208063                         , p_sla_ledger_id    => l_sla_ledger_id
208064                         , p_pad_start_date   => p_pad_start_date
208065                         , p_pad_end_date     => p_pad_end_date
208066                           );
208067 
208068      END IF;
208069 
208070 l_created := EventClass_265(
208071    p_application_id         => p_application_id
208072  , p_base_ledger_id         => p_base_ledger_id
208073  , p_target_ledger_id       => p_target_ledger_id
208074  , p_language               => l_language
208075  , p_currency_code          => l_currency_code
208076  , p_sla_ledger_id          => l_sla_ledger_id
208077  , p_pad_start_date         => p_pad_start_date
208078  , p_pad_end_date           => p_pad_end_date
208079  , p_primary_ledger_id      => p_primary_ledger_id
208080 );
208081 
208082 
208083 
208084      IF ( g_diagnostics_mode ='Y' ) THEN
208085 
208086          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208087           trace
208088               (p_msg      => 'CALL Transaction Objects Diagnostics'
208089               ,p_level    => C_LEVEL_STATEMENT
208090               ,p_module   => l_log_module);
208091 
208092          END IF;
208093 
208094          insert_sources_265(
208095                           p_target_ledger_id => p_target_ledger_id
208096                         , p_language         => l_language
208097                         , p_sla_ledger_id    => l_sla_ledger_id
208098                         , p_pad_start_date   => p_pad_start_date
208099                         , p_pad_end_date     => p_pad_end_date
208100                           );
208101 
208102      END IF;
208103 
208104 l_created := EventClass_266(
208105    p_application_id         => p_application_id
208106  , p_base_ledger_id         => p_base_ledger_id
208107  , p_target_ledger_id       => p_target_ledger_id
208108  , p_language               => l_language
208109  , p_currency_code          => l_currency_code
208110  , p_sla_ledger_id          => l_sla_ledger_id
208111  , p_pad_start_date         => p_pad_start_date
208112  , p_pad_end_date           => p_pad_end_date
208113  , p_primary_ledger_id      => p_primary_ledger_id
208114 );
208115 
208116 
208117 
208118      IF ( g_diagnostics_mode ='Y' ) THEN
208119 
208120          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208121           trace
208122               (p_msg      => 'CALL Transaction Objects Diagnostics'
208123               ,p_level    => C_LEVEL_STATEMENT
208124               ,p_module   => l_log_module);
208125 
208126          END IF;
208127 
208128          insert_sources_266(
208129                           p_target_ledger_id => p_target_ledger_id
208130                         , p_language         => l_language
208131                         , p_sla_ledger_id    => l_sla_ledger_id
208132                         , p_pad_start_date   => p_pad_start_date
208133                         , p_pad_end_date     => p_pad_end_date
208134                           );
208135 
208136      END IF;
208137 
208138 l_created := EventClass_267(
208139    p_application_id         => p_application_id
208140  , p_base_ledger_id         => p_base_ledger_id
208141  , p_target_ledger_id       => p_target_ledger_id
208142  , p_language               => l_language
208143  , p_currency_code          => l_currency_code
208144  , p_sla_ledger_id          => l_sla_ledger_id
208145  , p_pad_start_date         => p_pad_start_date
208146  , p_pad_end_date           => p_pad_end_date
208147  , p_primary_ledger_id      => p_primary_ledger_id
208148 );
208149 
208150 
208151 
208152      IF ( g_diagnostics_mode ='Y' ) THEN
208153 
208154          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208155           trace
208156               (p_msg      => 'CALL Transaction Objects Diagnostics'
208157               ,p_level    => C_LEVEL_STATEMENT
208158               ,p_module   => l_log_module);
208159 
208160          END IF;
208161 
208162          insert_sources_267(
208163                           p_target_ledger_id => p_target_ledger_id
208164                         , p_language         => l_language
208165                         , p_sla_ledger_id    => l_sla_ledger_id
208166                         , p_pad_start_date   => p_pad_start_date
208167                         , p_pad_end_date     => p_pad_end_date
208168                           );
208169 
208170      END IF;
208171 
208172 l_created := EventClass_268(
208173    p_application_id         => p_application_id
208174  , p_base_ledger_id         => p_base_ledger_id
208175  , p_target_ledger_id       => p_target_ledger_id
208176  , p_language               => l_language
208177  , p_currency_code          => l_currency_code
208178  , p_sla_ledger_id          => l_sla_ledger_id
208179  , p_pad_start_date         => p_pad_start_date
208180  , p_pad_end_date           => p_pad_end_date
208181  , p_primary_ledger_id      => p_primary_ledger_id
208182 );
208183 
208184 
208185 
208186      IF ( g_diagnostics_mode ='Y' ) THEN
208187 
208188          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208189           trace
208190               (p_msg      => 'CALL Transaction Objects Diagnostics'
208191               ,p_level    => C_LEVEL_STATEMENT
208192               ,p_module   => l_log_module);
208193 
208194          END IF;
208195 
208196          insert_sources_268(
208197                           p_target_ledger_id => p_target_ledger_id
208198                         , p_language         => l_language
208199                         , p_sla_ledger_id    => l_sla_ledger_id
208200                         , p_pad_start_date   => p_pad_start_date
208201                         , p_pad_end_date     => p_pad_end_date
208202                           );
208203 
208204      END IF;
208205 
208206 l_created := EventClass_269(
208207    p_application_id         => p_application_id
208208  , p_base_ledger_id         => p_base_ledger_id
208209  , p_target_ledger_id       => p_target_ledger_id
208210  , p_language               => l_language
208211  , p_currency_code          => l_currency_code
208212  , p_sla_ledger_id          => l_sla_ledger_id
208213  , p_pad_start_date         => p_pad_start_date
208214  , p_pad_end_date           => p_pad_end_date
208215  , p_primary_ledger_id      => p_primary_ledger_id
208216 );
208217 
208218 
208219 
208220      IF ( g_diagnostics_mode ='Y' ) THEN
208221 
208222          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208223           trace
208224               (p_msg      => 'CALL Transaction Objects Diagnostics'
208225               ,p_level    => C_LEVEL_STATEMENT
208226               ,p_module   => l_log_module);
208227 
208228          END IF;
208229 
208230          insert_sources_269(
208231                           p_target_ledger_id => p_target_ledger_id
208232                         , p_language         => l_language
208233                         , p_sla_ledger_id    => l_sla_ledger_id
208234                         , p_pad_start_date   => p_pad_start_date
208235                         , p_pad_end_date     => p_pad_end_date
208236                           );
208237 
208238      END IF;
208239 
208240 l_created := EventClass_270(
208241    p_application_id         => p_application_id
208242  , p_base_ledger_id         => p_base_ledger_id
208243  , p_target_ledger_id       => p_target_ledger_id
208244  , p_language               => l_language
208245  , p_currency_code          => l_currency_code
208246  , p_sla_ledger_id          => l_sla_ledger_id
208247  , p_pad_start_date         => p_pad_start_date
208248  , p_pad_end_date           => p_pad_end_date
208249  , p_primary_ledger_id      => p_primary_ledger_id
208250 );
208251 
208252 
208253 
208254      IF ( g_diagnostics_mode ='Y' ) THEN
208255 
208256          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208257           trace
208258               (p_msg      => 'CALL Transaction Objects Diagnostics'
208259               ,p_level    => C_LEVEL_STATEMENT
208260               ,p_module   => l_log_module);
208261 
208262          END IF;
208263 
208264          insert_sources_270(
208265                           p_target_ledger_id => p_target_ledger_id
208266                         , p_language         => l_language
208267                         , p_sla_ledger_id    => l_sla_ledger_id
208268                         , p_pad_start_date   => p_pad_start_date
208269                         , p_pad_end_date     => p_pad_end_date
208270                           );
208271 
208272      END IF;
208273 
208274 l_created := EventClass_271(
208275    p_application_id         => p_application_id
208276  , p_base_ledger_id         => p_base_ledger_id
208277  , p_target_ledger_id       => p_target_ledger_id
208278  , p_language               => l_language
208279  , p_currency_code          => l_currency_code
208280  , p_sla_ledger_id          => l_sla_ledger_id
208281  , p_pad_start_date         => p_pad_start_date
208282  , p_pad_end_date           => p_pad_end_date
208283  , p_primary_ledger_id      => p_primary_ledger_id
208284 );
208285 
208286 
208287 
208288      IF ( g_diagnostics_mode ='Y' ) THEN
208289 
208290          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208291           trace
208292               (p_msg      => 'CALL Transaction Objects Diagnostics'
208293               ,p_level    => C_LEVEL_STATEMENT
208294               ,p_module   => l_log_module);
208295 
208296          END IF;
208297 
208298          insert_sources_271(
208299                           p_target_ledger_id => p_target_ledger_id
208300                         , p_language         => l_language
208301                         , p_sla_ledger_id    => l_sla_ledger_id
208302                         , p_pad_start_date   => p_pad_start_date
208303                         , p_pad_end_date     => p_pad_end_date
208304                           );
208305 
208306      END IF;
208307 
208308 l_created := EventClass_272(
208309    p_application_id         => p_application_id
208310  , p_base_ledger_id         => p_base_ledger_id
208311  , p_target_ledger_id       => p_target_ledger_id
208312  , p_language               => l_language
208313  , p_currency_code          => l_currency_code
208314  , p_sla_ledger_id          => l_sla_ledger_id
208315  , p_pad_start_date         => p_pad_start_date
208316  , p_pad_end_date           => p_pad_end_date
208317  , p_primary_ledger_id      => p_primary_ledger_id
208318 );
208319 
208320 
208321 
208322      IF ( g_diagnostics_mode ='Y' ) THEN
208323 
208324          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208325           trace
208326               (p_msg      => 'CALL Transaction Objects Diagnostics'
208327               ,p_level    => C_LEVEL_STATEMENT
208328               ,p_module   => l_log_module);
208329 
208330          END IF;
208331 
208332          insert_sources_272(
208333                           p_target_ledger_id => p_target_ledger_id
208334                         , p_language         => l_language
208335                         , p_sla_ledger_id    => l_sla_ledger_id
208336                         , p_pad_start_date   => p_pad_start_date
208337                         , p_pad_end_date     => p_pad_end_date
208338                           );
208339 
208340      END IF;
208341 
208342 l_created := EventClass_273(
208343    p_application_id         => p_application_id
208344  , p_base_ledger_id         => p_base_ledger_id
208345  , p_target_ledger_id       => p_target_ledger_id
208346  , p_language               => l_language
208347  , p_currency_code          => l_currency_code
208348  , p_sla_ledger_id          => l_sla_ledger_id
208349  , p_pad_start_date         => p_pad_start_date
208350  , p_pad_end_date           => p_pad_end_date
208351  , p_primary_ledger_id      => p_primary_ledger_id
208352 );
208353 
208354 
208355 
208356      IF ( g_diagnostics_mode ='Y' ) THEN
208357 
208358          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208359           trace
208360               (p_msg      => 'CALL Transaction Objects Diagnostics'
208361               ,p_level    => C_LEVEL_STATEMENT
208362               ,p_module   => l_log_module);
208363 
208364          END IF;
208365 
208366          insert_sources_273(
208367                           p_target_ledger_id => p_target_ledger_id
208368                         , p_language         => l_language
208369                         , p_sla_ledger_id    => l_sla_ledger_id
208370                         , p_pad_start_date   => p_pad_start_date
208371                         , p_pad_end_date     => p_pad_end_date
208372                           );
208373 
208374      END IF;
208375 
208376 l_created := EventClass_274(
208377    p_application_id         => p_application_id
208378  , p_base_ledger_id         => p_base_ledger_id
208379  , p_target_ledger_id       => p_target_ledger_id
208380  , p_language               => l_language
208381  , p_currency_code          => l_currency_code
208382  , p_sla_ledger_id          => l_sla_ledger_id
208383  , p_pad_start_date         => p_pad_start_date
208384  , p_pad_end_date           => p_pad_end_date
208385  , p_primary_ledger_id      => p_primary_ledger_id
208386 );
208387 
208388 
208389 
208390      IF ( g_diagnostics_mode ='Y' ) THEN
208391 
208392          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208393           trace
208394               (p_msg      => 'CALL Transaction Objects Diagnostics'
208395               ,p_level    => C_LEVEL_STATEMENT
208396               ,p_module   => l_log_module);
208397 
208398          END IF;
208399 
208400          insert_sources_274(
208401                           p_target_ledger_id => p_target_ledger_id
208402                         , p_language         => l_language
208403                         , p_sla_ledger_id    => l_sla_ledger_id
208404                         , p_pad_start_date   => p_pad_start_date
208405                         , p_pad_end_date     => p_pad_end_date
208406                           );
208407 
208408      END IF;
208409 
208410 l_created := EventClass_275(
208411    p_application_id         => p_application_id
208412  , p_base_ledger_id         => p_base_ledger_id
208413  , p_target_ledger_id       => p_target_ledger_id
208414  , p_language               => l_language
208415  , p_currency_code          => l_currency_code
208416  , p_sla_ledger_id          => l_sla_ledger_id
208417  , p_pad_start_date         => p_pad_start_date
208418  , p_pad_end_date           => p_pad_end_date
208419  , p_primary_ledger_id      => p_primary_ledger_id
208420 );
208421 
208422 
208423 
208424      IF ( g_diagnostics_mode ='Y' ) THEN
208425 
208426          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208427           trace
208428               (p_msg      => 'CALL Transaction Objects Diagnostics'
208429               ,p_level    => C_LEVEL_STATEMENT
208430               ,p_module   => l_log_module);
208431 
208432          END IF;
208433 
208434          insert_sources_275(
208435                           p_target_ledger_id => p_target_ledger_id
208436                         , p_language         => l_language
208437                         , p_sla_ledger_id    => l_sla_ledger_id
208438                         , p_pad_start_date   => p_pad_start_date
208439                         , p_pad_end_date     => p_pad_end_date
208440                           );
208441 
208442      END IF;
208443 
208444 l_created := EventClass_276(
208445    p_application_id         => p_application_id
208446  , p_base_ledger_id         => p_base_ledger_id
208447  , p_target_ledger_id       => p_target_ledger_id
208448  , p_language               => l_language
208449  , p_currency_code          => l_currency_code
208450  , p_sla_ledger_id          => l_sla_ledger_id
208451  , p_pad_start_date         => p_pad_start_date
208452  , p_pad_end_date           => p_pad_end_date
208453  , p_primary_ledger_id      => p_primary_ledger_id
208454 );
208455 
208456 
208457 
208458      IF ( g_diagnostics_mode ='Y' ) THEN
208459 
208460          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208461           trace
208462               (p_msg      => 'CALL Transaction Objects Diagnostics'
208463               ,p_level    => C_LEVEL_STATEMENT
208464               ,p_module   => l_log_module);
208465 
208466          END IF;
208467 
208468          insert_sources_276(
208469                           p_target_ledger_id => p_target_ledger_id
208470                         , p_language         => l_language
208471                         , p_sla_ledger_id    => l_sla_ledger_id
208472                         , p_pad_start_date   => p_pad_start_date
208473                         , p_pad_end_date     => p_pad_end_date
208474                           );
208475 
208476      END IF;
208477 
208478 l_created := EventClass_277(
208479    p_application_id         => p_application_id
208480  , p_base_ledger_id         => p_base_ledger_id
208481  , p_target_ledger_id       => p_target_ledger_id
208482  , p_language               => l_language
208483  , p_currency_code          => l_currency_code
208484  , p_sla_ledger_id          => l_sla_ledger_id
208485  , p_pad_start_date         => p_pad_start_date
208486  , p_pad_end_date           => p_pad_end_date
208487  , p_primary_ledger_id      => p_primary_ledger_id
208488 );
208489 
208490 
208491 
208492      IF ( g_diagnostics_mode ='Y' ) THEN
208493 
208494          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208495           trace
208496               (p_msg      => 'CALL Transaction Objects Diagnostics'
208497               ,p_level    => C_LEVEL_STATEMENT
208498               ,p_module   => l_log_module);
208499 
208500          END IF;
208501 
208502          insert_sources_277(
208503                           p_target_ledger_id => p_target_ledger_id
208504                         , p_language         => l_language
208505                         , p_sla_ledger_id    => l_sla_ledger_id
208506                         , p_pad_start_date   => p_pad_start_date
208507                         , p_pad_end_date     => p_pad_end_date
208508                           );
208509 
208510      END IF;
208511 
208512 l_created := EventClass_278(
208513    p_application_id         => p_application_id
208514  , p_base_ledger_id         => p_base_ledger_id
208515  , p_target_ledger_id       => p_target_ledger_id
208516  , p_language               => l_language
208517  , p_currency_code          => l_currency_code
208518  , p_sla_ledger_id          => l_sla_ledger_id
208519  , p_pad_start_date         => p_pad_start_date
208520  , p_pad_end_date           => p_pad_end_date
208521  , p_primary_ledger_id      => p_primary_ledger_id
208522 );
208523 
208524 
208525 
208526      IF ( g_diagnostics_mode ='Y' ) THEN
208527 
208528          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208529           trace
208530               (p_msg      => 'CALL Transaction Objects Diagnostics'
208531               ,p_level    => C_LEVEL_STATEMENT
208532               ,p_module   => l_log_module);
208533 
208534          END IF;
208535 
208536          insert_sources_278(
208537                           p_target_ledger_id => p_target_ledger_id
208538                         , p_language         => l_language
208539                         , p_sla_ledger_id    => l_sla_ledger_id
208540                         , p_pad_start_date   => p_pad_start_date
208541                         , p_pad_end_date     => p_pad_end_date
208542                           );
208543 
208544      END IF;
208545 
208546 l_created := EventClass_279(
208547    p_application_id         => p_application_id
208548  , p_base_ledger_id         => p_base_ledger_id
208549  , p_target_ledger_id       => p_target_ledger_id
208550  , p_language               => l_language
208551  , p_currency_code          => l_currency_code
208552  , p_sla_ledger_id          => l_sla_ledger_id
208553  , p_pad_start_date         => p_pad_start_date
208554  , p_pad_end_date           => p_pad_end_date
208555  , p_primary_ledger_id      => p_primary_ledger_id
208556 );
208557 
208558 
208559 
208560      IF ( g_diagnostics_mode ='Y' ) THEN
208561 
208562          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208563           trace
208564               (p_msg      => 'CALL Transaction Objects Diagnostics'
208565               ,p_level    => C_LEVEL_STATEMENT
208566               ,p_module   => l_log_module);
208567 
208568          END IF;
208569 
208570          insert_sources_279(
208571                           p_target_ledger_id => p_target_ledger_id
208572                         , p_language         => l_language
208573                         , p_sla_ledger_id    => l_sla_ledger_id
208574                         , p_pad_start_date   => p_pad_start_date
208575                         , p_pad_end_date     => p_pad_end_date
208576                           );
208577 
208578      END IF;
208579 
208580 l_created := EventClass_280(
208581    p_application_id         => p_application_id
208582  , p_base_ledger_id         => p_base_ledger_id
208583  , p_target_ledger_id       => p_target_ledger_id
208584  , p_language               => l_language
208585  , p_currency_code          => l_currency_code
208586  , p_sla_ledger_id          => l_sla_ledger_id
208587  , p_pad_start_date         => p_pad_start_date
208588  , p_pad_end_date           => p_pad_end_date
208589  , p_primary_ledger_id      => p_primary_ledger_id
208590 );
208591 
208592 
208593 
208594      IF ( g_diagnostics_mode ='Y' ) THEN
208595 
208596          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208597           trace
208598               (p_msg      => 'CALL Transaction Objects Diagnostics'
208599               ,p_level    => C_LEVEL_STATEMENT
208600               ,p_module   => l_log_module);
208601 
208602          END IF;
208603 
208604          insert_sources_280(
208605                           p_target_ledger_id => p_target_ledger_id
208606                         , p_language         => l_language
208607                         , p_sla_ledger_id    => l_sla_ledger_id
208608                         , p_pad_start_date   => p_pad_start_date
208609                         , p_pad_end_date     => p_pad_end_date
208610                           );
208611 
208612      END IF;
208613 
208614 l_created := EventClass_281(
208615    p_application_id         => p_application_id
208616  , p_base_ledger_id         => p_base_ledger_id
208617  , p_target_ledger_id       => p_target_ledger_id
208618  , p_language               => l_language
208619  , p_currency_code          => l_currency_code
208620  , p_sla_ledger_id          => l_sla_ledger_id
208621  , p_pad_start_date         => p_pad_start_date
208622  , p_pad_end_date           => p_pad_end_date
208623  , p_primary_ledger_id      => p_primary_ledger_id
208624 );
208625 
208626 
208627 
208628      IF ( g_diagnostics_mode ='Y' ) THEN
208629 
208630          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208631           trace
208632               (p_msg      => 'CALL Transaction Objects Diagnostics'
208633               ,p_level    => C_LEVEL_STATEMENT
208634               ,p_module   => l_log_module);
208635 
208636          END IF;
208637 
208638          insert_sources_281(
208639                           p_target_ledger_id => p_target_ledger_id
208640                         , p_language         => l_language
208641                         , p_sla_ledger_id    => l_sla_ledger_id
208642                         , p_pad_start_date   => p_pad_start_date
208643                         , p_pad_end_date     => p_pad_end_date
208644                           );
208645 
208646      END IF;
208647 
208648 l_created := EventClass_282(
208649    p_application_id         => p_application_id
208650  , p_base_ledger_id         => p_base_ledger_id
208651  , p_target_ledger_id       => p_target_ledger_id
208652  , p_language               => l_language
208653  , p_currency_code          => l_currency_code
208654  , p_sla_ledger_id          => l_sla_ledger_id
208655  , p_pad_start_date         => p_pad_start_date
208656  , p_pad_end_date           => p_pad_end_date
208657  , p_primary_ledger_id      => p_primary_ledger_id
208658 );
208659 
208660 
208661 
208662      IF ( g_diagnostics_mode ='Y' ) THEN
208663 
208664          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208665           trace
208666               (p_msg      => 'CALL Transaction Objects Diagnostics'
208667               ,p_level    => C_LEVEL_STATEMENT
208668               ,p_module   => l_log_module);
208669 
208670          END IF;
208671 
208672          insert_sources_282(
208673                           p_target_ledger_id => p_target_ledger_id
208674                         , p_language         => l_language
208675                         , p_sla_ledger_id    => l_sla_ledger_id
208676                         , p_pad_start_date   => p_pad_start_date
208677                         , p_pad_end_date     => p_pad_end_date
208678                           );
208679 
208680      END IF;
208681 
208682 l_created := EventClass_283(
208683    p_application_id         => p_application_id
208684  , p_base_ledger_id         => p_base_ledger_id
208685  , p_target_ledger_id       => p_target_ledger_id
208686  , p_language               => l_language
208687  , p_currency_code          => l_currency_code
208688  , p_sla_ledger_id          => l_sla_ledger_id
208689  , p_pad_start_date         => p_pad_start_date
208690  , p_pad_end_date           => p_pad_end_date
208691  , p_primary_ledger_id      => p_primary_ledger_id
208692 );
208693 
208694 
208695 
208696      IF ( g_diagnostics_mode ='Y' ) THEN
208697 
208698          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208699           trace
208700               (p_msg      => 'CALL Transaction Objects Diagnostics'
208701               ,p_level    => C_LEVEL_STATEMENT
208702               ,p_module   => l_log_module);
208703 
208704          END IF;
208705 
208706          insert_sources_283(
208707                           p_target_ledger_id => p_target_ledger_id
208708                         , p_language         => l_language
208709                         , p_sla_ledger_id    => l_sla_ledger_id
208710                         , p_pad_start_date   => p_pad_start_date
208711                         , p_pad_end_date     => p_pad_end_date
208712                           );
208713 
208714      END IF;
208715 
208716 l_created := EventClass_284(
208717    p_application_id         => p_application_id
208718  , p_base_ledger_id         => p_base_ledger_id
208719  , p_target_ledger_id       => p_target_ledger_id
208720  , p_language               => l_language
208721  , p_currency_code          => l_currency_code
208722  , p_sla_ledger_id          => l_sla_ledger_id
208723  , p_pad_start_date         => p_pad_start_date
208724  , p_pad_end_date           => p_pad_end_date
208725  , p_primary_ledger_id      => p_primary_ledger_id
208726 );
208727 
208728 
208729 
208730      IF ( g_diagnostics_mode ='Y' ) THEN
208731 
208732          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208733           trace
208734               (p_msg      => 'CALL Transaction Objects Diagnostics'
208735               ,p_level    => C_LEVEL_STATEMENT
208736               ,p_module   => l_log_module);
208737 
208738          END IF;
208739 
208740          insert_sources_284(
208741                           p_target_ledger_id => p_target_ledger_id
208742                         , p_language         => l_language
208743                         , p_sla_ledger_id    => l_sla_ledger_id
208744                         , p_pad_start_date   => p_pad_start_date
208745                         , p_pad_end_date     => p_pad_end_date
208746                           );
208747 
208748      END IF;
208749 
208750 l_created := EventClass_285(
208751    p_application_id         => p_application_id
208752  , p_base_ledger_id         => p_base_ledger_id
208753  , p_target_ledger_id       => p_target_ledger_id
208754  , p_language               => l_language
208755  , p_currency_code          => l_currency_code
208756  , p_sla_ledger_id          => l_sla_ledger_id
208757  , p_pad_start_date         => p_pad_start_date
208758  , p_pad_end_date           => p_pad_end_date
208759  , p_primary_ledger_id      => p_primary_ledger_id
208760 );
208761 
208762 
208763 
208764      IF ( g_diagnostics_mode ='Y' ) THEN
208765 
208766          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208767           trace
208768               (p_msg      => 'CALL Transaction Objects Diagnostics'
208769               ,p_level    => C_LEVEL_STATEMENT
208770               ,p_module   => l_log_module);
208771 
208772          END IF;
208773 
208774          insert_sources_285(
208775                           p_target_ledger_id => p_target_ledger_id
208776                         , p_language         => l_language
208777                         , p_sla_ledger_id    => l_sla_ledger_id
208778                         , p_pad_start_date   => p_pad_start_date
208779                         , p_pad_end_date     => p_pad_end_date
208780                           );
208781 
208782      END IF;
208783 
208784 l_created := EventClass_286(
208785    p_application_id         => p_application_id
208786  , p_base_ledger_id         => p_base_ledger_id
208787  , p_target_ledger_id       => p_target_ledger_id
208788  , p_language               => l_language
208789  , p_currency_code          => l_currency_code
208790  , p_sla_ledger_id          => l_sla_ledger_id
208791  , p_pad_start_date         => p_pad_start_date
208792  , p_pad_end_date           => p_pad_end_date
208793  , p_primary_ledger_id      => p_primary_ledger_id
208794 );
208795 
208796 
208797 
208798      IF ( g_diagnostics_mode ='Y' ) THEN
208799 
208800          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208801           trace
208802               (p_msg      => 'CALL Transaction Objects Diagnostics'
208803               ,p_level    => C_LEVEL_STATEMENT
208804               ,p_module   => l_log_module);
208805 
208806          END IF;
208807 
208808          insert_sources_286(
208809                           p_target_ledger_id => p_target_ledger_id
208810                         , p_language         => l_language
208811                         , p_sla_ledger_id    => l_sla_ledger_id
208812                         , p_pad_start_date   => p_pad_start_date
208813                         , p_pad_end_date     => p_pad_end_date
208814                           );
208815 
208816      END IF;
208817 
208818  l_created :=  EventType_287(
208819    p_application_id         => p_application_id
208820  , p_base_ledger_id         => p_base_ledger_id
208821  , p_target_ledger_id       => p_target_ledger_id
208822  , p_language               => l_language
208823  , p_currency_code          => l_currency_code
208824  , p_sla_ledger_id          => l_sla_ledger_id
208825  , p_pad_start_date         => p_pad_start_date
208826  , p_pad_end_date           => p_pad_end_date
208827  , p_primary_ledger_id      => p_primary_ledger_id
208828 );
208829 
208830 
208831 
208832      IF ( g_diagnostics_mode ='Y' ) THEN
208833 
208834          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208835           trace
208836               (p_msg      => 'CALL Transaction Objects Diagnostics'
208837               ,p_level    => C_LEVEL_STATEMENT
208838               ,p_module   => l_log_module);
208839 
208840          END IF;
208841 
208842          insert_sources_287(
208843                           p_target_ledger_id => p_target_ledger_id
208844                         , p_language         => l_language
208845                         , p_sla_ledger_id    => l_sla_ledger_id
208846                         , p_pad_start_date   => p_pad_start_date
208847                         , p_pad_end_date     => p_pad_end_date
208848                           );
208849 
208850      END IF;
208851 
208852  l_created :=  EventType_288(
208853    p_application_id         => p_application_id
208854  , p_base_ledger_id         => p_base_ledger_id
208855  , p_target_ledger_id       => p_target_ledger_id
208856  , p_language               => l_language
208857  , p_currency_code          => l_currency_code
208858  , p_sla_ledger_id          => l_sla_ledger_id
208859  , p_pad_start_date         => p_pad_start_date
208860  , p_pad_end_date           => p_pad_end_date
208861  , p_primary_ledger_id      => p_primary_ledger_id
208862 );
208863 
208864 
208865 
208866      IF ( g_diagnostics_mode ='Y' ) THEN
208867 
208868          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208869           trace
208870               (p_msg      => 'CALL Transaction Objects Diagnostics'
208871               ,p_level    => C_LEVEL_STATEMENT
208872               ,p_module   => l_log_module);
208873 
208874          END IF;
208875 
208876          insert_sources_288(
208877                           p_target_ledger_id => p_target_ledger_id
208878                         , p_language         => l_language
208879                         , p_sla_ledger_id    => l_sla_ledger_id
208880                         , p_pad_start_date   => p_pad_start_date
208881                         , p_pad_end_date     => p_pad_end_date
208882                           );
208883 
208884      END IF;
208885 
208886  l_created :=  EventType_289(
208887    p_application_id         => p_application_id
208888  , p_base_ledger_id         => p_base_ledger_id
208889  , p_target_ledger_id       => p_target_ledger_id
208890  , p_language               => l_language
208891  , p_currency_code          => l_currency_code
208892  , p_sla_ledger_id          => l_sla_ledger_id
208893  , p_pad_start_date         => p_pad_start_date
208894  , p_pad_end_date           => p_pad_end_date
208895  , p_primary_ledger_id      => p_primary_ledger_id
208896 );
208897 
208898 
208899 
208900      IF ( g_diagnostics_mode ='Y' ) THEN
208901 
208902          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208903           trace
208904               (p_msg      => 'CALL Transaction Objects Diagnostics'
208905               ,p_level    => C_LEVEL_STATEMENT
208906               ,p_module   => l_log_module);
208907 
208908          END IF;
208909 
208910          insert_sources_289(
208911                           p_target_ledger_id => p_target_ledger_id
208912                         , p_language         => l_language
208913                         , p_sla_ledger_id    => l_sla_ledger_id
208914                         , p_pad_start_date   => p_pad_start_date
208915                         , p_pad_end_date     => p_pad_end_date
208916                           );
208917 
208918      END IF;
208919 
208920  l_created :=  EventType_290(
208921    p_application_id         => p_application_id
208922  , p_base_ledger_id         => p_base_ledger_id
208923  , p_target_ledger_id       => p_target_ledger_id
208924  , p_language               => l_language
208925  , p_currency_code          => l_currency_code
208926  , p_sla_ledger_id          => l_sla_ledger_id
208927  , p_pad_start_date         => p_pad_start_date
208928  , p_pad_end_date           => p_pad_end_date
208929  , p_primary_ledger_id      => p_primary_ledger_id
208930 );
208931 
208932 
208933 
208934      IF ( g_diagnostics_mode ='Y' ) THEN
208935 
208936          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208937           trace
208938               (p_msg      => 'CALL Transaction Objects Diagnostics'
208939               ,p_level    => C_LEVEL_STATEMENT
208940               ,p_module   => l_log_module);
208941 
208942          END IF;
208943 
208944          insert_sources_290(
208945                           p_target_ledger_id => p_target_ledger_id
208946                         , p_language         => l_language
208947                         , p_sla_ledger_id    => l_sla_ledger_id
208948                         , p_pad_start_date   => p_pad_start_date
208949                         , p_pad_end_date     => p_pad_end_date
208950                           );
208951 
208952      END IF;
208953 
208954  l_created :=  EventType_291(
208955    p_application_id         => p_application_id
208956  , p_base_ledger_id         => p_base_ledger_id
208957  , p_target_ledger_id       => p_target_ledger_id
208958  , p_language               => l_language
208959  , p_currency_code          => l_currency_code
208960  , p_sla_ledger_id          => l_sla_ledger_id
208961  , p_pad_start_date         => p_pad_start_date
208962  , p_pad_end_date           => p_pad_end_date
208963  , p_primary_ledger_id      => p_primary_ledger_id
208964 );
208965 
208966 
208967 
208968      IF ( g_diagnostics_mode ='Y' ) THEN
208969 
208970          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208971           trace
208972               (p_msg      => 'CALL Transaction Objects Diagnostics'
208973               ,p_level    => C_LEVEL_STATEMENT
208974               ,p_module   => l_log_module);
208975 
208976          END IF;
208977 
208978          insert_sources_291(
208979                           p_target_ledger_id => p_target_ledger_id
208980                         , p_language         => l_language
208981                         , p_sla_ledger_id    => l_sla_ledger_id
208982                         , p_pad_start_date   => p_pad_start_date
208983                         , p_pad_end_date     => p_pad_end_date
208984                           );
208985 
208986      END IF;
208987 
208988  l_created :=  EventType_292(
208989    p_application_id         => p_application_id
208990  , p_base_ledger_id         => p_base_ledger_id
208991  , p_target_ledger_id       => p_target_ledger_id
208992  , p_language               => l_language
208993  , p_currency_code          => l_currency_code
208994  , p_sla_ledger_id          => l_sla_ledger_id
208995  , p_pad_start_date         => p_pad_start_date
208996  , p_pad_end_date           => p_pad_end_date
208997  , p_primary_ledger_id      => p_primary_ledger_id
208998 );
208999 
209000 
209001 
209002      IF ( g_diagnostics_mode ='Y' ) THEN
209003 
209004          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209005           trace
209006               (p_msg      => 'CALL Transaction Objects Diagnostics'
209007               ,p_level    => C_LEVEL_STATEMENT
209008               ,p_module   => l_log_module);
209009 
209010          END IF;
209011 
209012          insert_sources_292(
209013                           p_target_ledger_id => p_target_ledger_id
209014                         , p_language         => l_language
209015                         , p_sla_ledger_id    => l_sla_ledger_id
209016                         , p_pad_start_date   => p_pad_start_date
209017                         , p_pad_end_date     => p_pad_end_date
209018                           );
209019 
209020      END IF;
209021 
209022  l_created :=  EventType_293(
209023    p_application_id         => p_application_id
209024  , p_base_ledger_id         => p_base_ledger_id
209025  , p_target_ledger_id       => p_target_ledger_id
209026  , p_language               => l_language
209027  , p_currency_code          => l_currency_code
209028  , p_sla_ledger_id          => l_sla_ledger_id
209029  , p_pad_start_date         => p_pad_start_date
209030  , p_pad_end_date           => p_pad_end_date
209031  , p_primary_ledger_id      => p_primary_ledger_id
209032 );
209033 
209034 
209035 
209036      IF ( g_diagnostics_mode ='Y' ) THEN
209037 
209038          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209039           trace
209040               (p_msg      => 'CALL Transaction Objects Diagnostics'
209041               ,p_level    => C_LEVEL_STATEMENT
209042               ,p_module   => l_log_module);
209043 
209044          END IF;
209045 
209046          insert_sources_293(
209047                           p_target_ledger_id => p_target_ledger_id
209048                         , p_language         => l_language
209049                         , p_sla_ledger_id    => l_sla_ledger_id
209050                         , p_pad_start_date   => p_pad_start_date
209051                         , p_pad_end_date     => p_pad_end_date
209052                           );
209053 
209054      END IF;
209055 
209056  l_created :=  EventType_294(
209057    p_application_id         => p_application_id
209058  , p_base_ledger_id         => p_base_ledger_id
209059  , p_target_ledger_id       => p_target_ledger_id
209060  , p_language               => l_language
209061  , p_currency_code          => l_currency_code
209062  , p_sla_ledger_id          => l_sla_ledger_id
209063  , p_pad_start_date         => p_pad_start_date
209064  , p_pad_end_date           => p_pad_end_date
209065  , p_primary_ledger_id      => p_primary_ledger_id
209066 );
209067 
209068 
209069 
209070      IF ( g_diagnostics_mode ='Y' ) THEN
209071 
209072          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209073           trace
209074               (p_msg      => 'CALL Transaction Objects Diagnostics'
209075               ,p_level    => C_LEVEL_STATEMENT
209076               ,p_module   => l_log_module);
209077 
209078          END IF;
209079 
209080          insert_sources_294(
209081                           p_target_ledger_id => p_target_ledger_id
209082                         , p_language         => l_language
209083                         , p_sla_ledger_id    => l_sla_ledger_id
209084                         , p_pad_start_date   => p_pad_start_date
209085                         , p_pad_end_date     => p_pad_end_date
209086                           );
209087 
209088      END IF;
209089 
209090  l_created :=  EventType_295(
209091    p_application_id         => p_application_id
209092  , p_base_ledger_id         => p_base_ledger_id
209093  , p_target_ledger_id       => p_target_ledger_id
209094  , p_language               => l_language
209095  , p_currency_code          => l_currency_code
209096  , p_sla_ledger_id          => l_sla_ledger_id
209097  , p_pad_start_date         => p_pad_start_date
209098  , p_pad_end_date           => p_pad_end_date
209099  , p_primary_ledger_id      => p_primary_ledger_id
209100 );
209101 
209102 
209103 
209104      IF ( g_diagnostics_mode ='Y' ) THEN
209105 
209106          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209107           trace
209108               (p_msg      => 'CALL Transaction Objects Diagnostics'
209109               ,p_level    => C_LEVEL_STATEMENT
209110               ,p_module   => l_log_module);
209111 
209112          END IF;
209113 
209114          insert_sources_295(
209115                           p_target_ledger_id => p_target_ledger_id
209116                         , p_language         => l_language
209117                         , p_sla_ledger_id    => l_sla_ledger_id
209118                         , p_pad_start_date   => p_pad_start_date
209119                         , p_pad_end_date     => p_pad_end_date
209120                           );
209121 
209122      END IF;
209123 
209124  l_created :=  EventType_296(
209125    p_application_id         => p_application_id
209126  , p_base_ledger_id         => p_base_ledger_id
209127  , p_target_ledger_id       => p_target_ledger_id
209128  , p_language               => l_language
209129  , p_currency_code          => l_currency_code
209130  , p_sla_ledger_id          => l_sla_ledger_id
209131  , p_pad_start_date         => p_pad_start_date
209132  , p_pad_end_date           => p_pad_end_date
209133  , p_primary_ledger_id      => p_primary_ledger_id
209134 );
209135 
209136 
209137 
209138      IF ( g_diagnostics_mode ='Y' ) THEN
209139 
209140          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209141           trace
209142               (p_msg      => 'CALL Transaction Objects Diagnostics'
209143               ,p_level    => C_LEVEL_STATEMENT
209144               ,p_module   => l_log_module);
209145 
209146          END IF;
209147 
209148          insert_sources_296(
209149                           p_target_ledger_id => p_target_ledger_id
209150                         , p_language         => l_language
209151                         , p_sla_ledger_id    => l_sla_ledger_id
209152                         , p_pad_start_date   => p_pad_start_date
209153                         , p_pad_end_date     => p_pad_end_date
209154                           );
209155 
209156      END IF;
209157 
209158  l_created :=  EventType_297(
209159    p_application_id         => p_application_id
209160  , p_base_ledger_id         => p_base_ledger_id
209161  , p_target_ledger_id       => p_target_ledger_id
209162  , p_language               => l_language
209163  , p_currency_code          => l_currency_code
209164  , p_sla_ledger_id          => l_sla_ledger_id
209165  , p_pad_start_date         => p_pad_start_date
209166  , p_pad_end_date           => p_pad_end_date
209167  , p_primary_ledger_id      => p_primary_ledger_id
209168 );
209169 
209170 
209171 
209172      IF ( g_diagnostics_mode ='Y' ) THEN
209173 
209174          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209175           trace
209176               (p_msg      => 'CALL Transaction Objects Diagnostics'
209177               ,p_level    => C_LEVEL_STATEMENT
209178               ,p_module   => l_log_module);
209179 
209180          END IF;
209181 
209182          insert_sources_297(
209183                           p_target_ledger_id => p_target_ledger_id
209184                         , p_language         => l_language
209185                         , p_sla_ledger_id    => l_sla_ledger_id
209186                         , p_pad_start_date   => p_pad_start_date
209187                         , p_pad_end_date     => p_pad_end_date
209188                           );
209189 
209190      END IF;
209191 
209192  l_created :=  EventType_298(
209193    p_application_id         => p_application_id
209194  , p_base_ledger_id         => p_base_ledger_id
209195  , p_target_ledger_id       => p_target_ledger_id
209196  , p_language               => l_language
209197  , p_currency_code          => l_currency_code
209198  , p_sla_ledger_id          => l_sla_ledger_id
209199  , p_pad_start_date         => p_pad_start_date
209200  , p_pad_end_date           => p_pad_end_date
209201  , p_primary_ledger_id      => p_primary_ledger_id
209202 );
209203 
209204 
209205 
209206      IF ( g_diagnostics_mode ='Y' ) THEN
209207 
209208          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209209           trace
209210               (p_msg      => 'CALL Transaction Objects Diagnostics'
209211               ,p_level    => C_LEVEL_STATEMENT
209212               ,p_module   => l_log_module);
209213 
209214          END IF;
209215 
209216          insert_sources_298(
209217                           p_target_ledger_id => p_target_ledger_id
209218                         , p_language         => l_language
209219                         , p_sla_ledger_id    => l_sla_ledger_id
209220                         , p_pad_start_date   => p_pad_start_date
209221                         , p_pad_end_date     => p_pad_end_date
209222                           );
209223 
209224      END IF;
209225 
209226  l_created :=  EventType_299(
209227    p_application_id         => p_application_id
209228  , p_base_ledger_id         => p_base_ledger_id
209229  , p_target_ledger_id       => p_target_ledger_id
209230  , p_language               => l_language
209231  , p_currency_code          => l_currency_code
209232  , p_sla_ledger_id          => l_sla_ledger_id
209233  , p_pad_start_date         => p_pad_start_date
209234  , p_pad_end_date           => p_pad_end_date
209235  , p_primary_ledger_id      => p_primary_ledger_id
209236 );
209237 
209238 
209239 
209240      IF ( g_diagnostics_mode ='Y' ) THEN
209241 
209242          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209243           trace
209244               (p_msg      => 'CALL Transaction Objects Diagnostics'
209245               ,p_level    => C_LEVEL_STATEMENT
209246               ,p_module   => l_log_module);
209247 
209248          END IF;
209249 
209250          insert_sources_299(
209251                           p_target_ledger_id => p_target_ledger_id
209252                         , p_language         => l_language
209253                         , p_sla_ledger_id    => l_sla_ledger_id
209254                         , p_pad_start_date   => p_pad_start_date
209255                         , p_pad_end_date     => p_pad_end_date
209256                           );
209257 
209258      END IF;
209259 
209260  l_created :=  EventType_300(
209261    p_application_id         => p_application_id
209262  , p_base_ledger_id         => p_base_ledger_id
209263  , p_target_ledger_id       => p_target_ledger_id
209264  , p_language               => l_language
209265  , p_currency_code          => l_currency_code
209266  , p_sla_ledger_id          => l_sla_ledger_id
209267  , p_pad_start_date         => p_pad_start_date
209268  , p_pad_end_date           => p_pad_end_date
209269  , p_primary_ledger_id      => p_primary_ledger_id
209270 );
209271 
209272 
209273 
209274      IF ( g_diagnostics_mode ='Y' ) THEN
209275 
209276          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209277           trace
209278               (p_msg      => 'CALL Transaction Objects Diagnostics'
209279               ,p_level    => C_LEVEL_STATEMENT
209280               ,p_module   => l_log_module);
209281 
209282          END IF;
209283 
209284          insert_sources_300(
209285                           p_target_ledger_id => p_target_ledger_id
209286                         , p_language         => l_language
209287                         , p_sla_ledger_id    => l_sla_ledger_id
209288                         , p_pad_start_date   => p_pad_start_date
209289                         , p_pad_end_date     => p_pad_end_date
209290                           );
209291 
209292      END IF;
209293 
209294  l_created :=  EventType_301(
209295    p_application_id         => p_application_id
209296  , p_base_ledger_id         => p_base_ledger_id
209297  , p_target_ledger_id       => p_target_ledger_id
209298  , p_language               => l_language
209299  , p_currency_code          => l_currency_code
209300  , p_sla_ledger_id          => l_sla_ledger_id
209301  , p_pad_start_date         => p_pad_start_date
209302  , p_pad_end_date           => p_pad_end_date
209303  , p_primary_ledger_id      => p_primary_ledger_id
209304 );
209305 
209306 
209307 
209308      IF ( g_diagnostics_mode ='Y' ) THEN
209309 
209310          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209311           trace
209312               (p_msg      => 'CALL Transaction Objects Diagnostics'
209313               ,p_level    => C_LEVEL_STATEMENT
209314               ,p_module   => l_log_module);
209315 
209316          END IF;
209317 
209318          insert_sources_301(
209319                           p_target_ledger_id => p_target_ledger_id
209320                         , p_language         => l_language
209321                         , p_sla_ledger_id    => l_sla_ledger_id
209322                         , p_pad_start_date   => p_pad_start_date
209323                         , p_pad_end_date     => p_pad_end_date
209324                           );
209325 
209326      END IF;
209327 
209328  l_created :=  EventType_302(
209329    p_application_id         => p_application_id
209330  , p_base_ledger_id         => p_base_ledger_id
209331  , p_target_ledger_id       => p_target_ledger_id
209332  , p_language               => l_language
209333  , p_currency_code          => l_currency_code
209334  , p_sla_ledger_id          => l_sla_ledger_id
209335  , p_pad_start_date         => p_pad_start_date
209336  , p_pad_end_date           => p_pad_end_date
209337  , p_primary_ledger_id      => p_primary_ledger_id
209338 );
209339 
209340 
209341 
209342      IF ( g_diagnostics_mode ='Y' ) THEN
209343 
209344          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209345           trace
209346               (p_msg      => 'CALL Transaction Objects Diagnostics'
209347               ,p_level    => C_LEVEL_STATEMENT
209348               ,p_module   => l_log_module);
209349 
209350          END IF;
209351 
209352          insert_sources_302(
209353                           p_target_ledger_id => p_target_ledger_id
209354                         , p_language         => l_language
209355                         , p_sla_ledger_id    => l_sla_ledger_id
209356                         , p_pad_start_date   => p_pad_start_date
209357                         , p_pad_end_date     => p_pad_end_date
209358                           );
209359 
209360      END IF;
209361 
209362  l_created :=  EventType_303(
209363    p_application_id         => p_application_id
209364  , p_base_ledger_id         => p_base_ledger_id
209365  , p_target_ledger_id       => p_target_ledger_id
209366  , p_language               => l_language
209367  , p_currency_code          => l_currency_code
209368  , p_sla_ledger_id          => l_sla_ledger_id
209369  , p_pad_start_date         => p_pad_start_date
209370  , p_pad_end_date           => p_pad_end_date
209371  , p_primary_ledger_id      => p_primary_ledger_id
209372 );
209373 
209374 
209375 
209376      IF ( g_diagnostics_mode ='Y' ) THEN
209377 
209378          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209379           trace
209380               (p_msg      => 'CALL Transaction Objects Diagnostics'
209381               ,p_level    => C_LEVEL_STATEMENT
209382               ,p_module   => l_log_module);
209383 
209384          END IF;
209385 
209386          insert_sources_303(
209387                           p_target_ledger_id => p_target_ledger_id
209388                         , p_language         => l_language
209389                         , p_sla_ledger_id    => l_sla_ledger_id
209390                         , p_pad_start_date   => p_pad_start_date
209391                         , p_pad_end_date     => p_pad_end_date
209392                           );
209393 
209394      END IF;
209395 
209396 l_created := EventClass_304(
209397    p_application_id         => p_application_id
209398  , p_base_ledger_id         => p_base_ledger_id
209399  , p_target_ledger_id       => p_target_ledger_id
209400  , p_language               => l_language
209401  , p_currency_code          => l_currency_code
209402  , p_sla_ledger_id          => l_sla_ledger_id
209403  , p_pad_start_date         => p_pad_start_date
209404  , p_pad_end_date           => p_pad_end_date
209405  , p_primary_ledger_id      => p_primary_ledger_id
209406 );
209407 
209408 
209409 
209410      IF ( g_diagnostics_mode ='Y' ) THEN
209411 
209412          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209413           trace
209414               (p_msg      => 'CALL Transaction Objects Diagnostics'
209415               ,p_level    => C_LEVEL_STATEMENT
209416               ,p_module   => l_log_module);
209417 
209418          END IF;
209419 
209420          insert_sources_304(
209421                           p_target_ledger_id => p_target_ledger_id
209422                         , p_language         => l_language
209423                         , p_sla_ledger_id    => l_sla_ledger_id
209424                         , p_pad_start_date   => p_pad_start_date
209425                         , p_pad_end_date     => p_pad_end_date
209426                           );
209427 
209428      END IF;
209429 
209430 l_created := EventClass_305(
209431    p_application_id         => p_application_id
209432  , p_base_ledger_id         => p_base_ledger_id
209433  , p_target_ledger_id       => p_target_ledger_id
209434  , p_language               => l_language
209435  , p_currency_code          => l_currency_code
209436  , p_sla_ledger_id          => l_sla_ledger_id
209437  , p_pad_start_date         => p_pad_start_date
209438  , p_pad_end_date           => p_pad_end_date
209439  , p_primary_ledger_id      => p_primary_ledger_id
209440 );
209441 
209442 
209443 
209444      IF ( g_diagnostics_mode ='Y' ) THEN
209445 
209446          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209447           trace
209448               (p_msg      => 'CALL Transaction Objects Diagnostics'
209449               ,p_level    => C_LEVEL_STATEMENT
209450               ,p_module   => l_log_module);
209451 
209452          END IF;
209453 
209454          insert_sources_305(
209455                           p_target_ledger_id => p_target_ledger_id
209456                         , p_language         => l_language
209457                         , p_sla_ledger_id    => l_sla_ledger_id
209458                         , p_pad_start_date   => p_pad_start_date
209459                         , p_pad_end_date     => p_pad_end_date
209460                           );
209461 
209462      END IF;
209463 
209464 l_created := EventClass_306(
209465    p_application_id         => p_application_id
209466  , p_base_ledger_id         => p_base_ledger_id
209467  , p_target_ledger_id       => p_target_ledger_id
209468  , p_language               => l_language
209469  , p_currency_code          => l_currency_code
209470  , p_sla_ledger_id          => l_sla_ledger_id
209471  , p_pad_start_date         => p_pad_start_date
209472  , p_pad_end_date           => p_pad_end_date
209473  , p_primary_ledger_id      => p_primary_ledger_id
209474 );
209475 
209476 
209477 
209478      IF ( g_diagnostics_mode ='Y' ) THEN
209479 
209480          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209481           trace
209482               (p_msg      => 'CALL Transaction Objects Diagnostics'
209483               ,p_level    => C_LEVEL_STATEMENT
209484               ,p_module   => l_log_module);
209485 
209486          END IF;
209487 
209488          insert_sources_306(
209489                           p_target_ledger_id => p_target_ledger_id
209490                         , p_language         => l_language
209491                         , p_sla_ledger_id    => l_sla_ledger_id
209492                         , p_pad_start_date   => p_pad_start_date
209493                         , p_pad_end_date     => p_pad_end_date
209494                           );
209495 
209496      END IF;
209497 
209498 l_created := EventClass_307(
209499    p_application_id         => p_application_id
209500  , p_base_ledger_id         => p_base_ledger_id
209501  , p_target_ledger_id       => p_target_ledger_id
209502  , p_language               => l_language
209503  , p_currency_code          => l_currency_code
209504  , p_sla_ledger_id          => l_sla_ledger_id
209505  , p_pad_start_date         => p_pad_start_date
209506  , p_pad_end_date           => p_pad_end_date
209507  , p_primary_ledger_id      => p_primary_ledger_id
209508 );
209509 
209510 
209511 
209512      IF ( g_diagnostics_mode ='Y' ) THEN
209513 
209514          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209515           trace
209516               (p_msg      => 'CALL Transaction Objects Diagnostics'
209517               ,p_level    => C_LEVEL_STATEMENT
209518               ,p_module   => l_log_module);
209519 
209520          END IF;
209521 
209522          insert_sources_307(
209523                           p_target_ledger_id => p_target_ledger_id
209524                         , p_language         => l_language
209525                         , p_sla_ledger_id    => l_sla_ledger_id
209526                         , p_pad_start_date   => p_pad_start_date
209527                         , p_pad_end_date     => p_pad_end_date
209528                           );
209529 
209530      END IF;
209531 
209532 
209533  --
209534  -- Bug 4865292
209535  -- When the number of events and that of header extract do not match,
209536  -- set the no header extract flag to indicate there are some issues
209537  -- in header extract.
209538  --
209539  -- Event count context is set in xla_accounting_pkg.unit_processor.
209540  -- Build_Message for this error is called in xla_accounting_pkg.post_accounting
209541  -- to report it as a general error.
209542  --
209543  IF  xla_context_pkg.get_event_count_context <> g_hdr_extract_count
209544  AND xla_context_pkg.get_event_nohdr_context <> 'Y' THEN
209545 
209546      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209547         trace
209548           (p_msg      => '# of extracted headers and events does not match'
209549           ,p_level    => C_LEVEL_STATEMENT
209550           ,p_module   => l_log_module);
209551 
209552         trace
209553           (p_msg      => '# of extracted headers: '
209554                          ||g_hdr_extract_count
209555           ,p_level    => C_LEVEL_STATEMENT
209556           ,p_module   => l_log_module);
209557 
209558         trace
209559           (p_msg      => '# of events in xla_events_gt: '
209560                          ||xla_context_pkg.get_event_count_context
209561           ,p_level    => C_LEVEL_STATEMENT
209562           ,p_module   => l_log_module);
209563 
209564         trace
209565           (p_msg      => 'Event No Header Extract Context: '
209566                          ||xla_context_pkg.get_event_nohdr_context
209567           ,p_level    => C_LEVEL_STATEMENT
209568           ,p_module   => l_log_module);
209569 
209570      END IF;
209571 
209572 
209573      xla_context_pkg.set_event_nohdr_context
209574        (p_nohdr_extract_flag => 'Y'
209575        ,p_client_id => sys_context('USERENV','CLIENT_IDENTIFIER'));
209576 
209577      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209578         trace
209579           (p_msg      => 'No Header Extract Flag is set to Y'
209580           ,p_level    => C_LEVEL_STATEMENT
209581           ,p_module   => l_log_module);
209582      END IF;
209583 
209584  END IF;
209585 
209586 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
209587    trace
209588       (p_msg      => 'END of CreateHeadersAndLines'
209589       ,p_level    => C_LEVEL_PROCEDURE
209590       ,p_module   => l_log_module);
209591 END IF;
209592 
209593 RETURN l_created;
209594 EXCEPTION
209595 WHEN xla_exceptions_pkg.application_exception THEN
209596    RAISE;
209597 WHEN OTHERS THEN
209598    xla_exceptions_pkg.raise_message
209599       (p_location => 'XLA_00707_AAD_S_000002_PKG.CreateHeadersAndLines');
209600 END CreateHeadersAndLines;
209601 --
209602 --
209603 
209604 --
209605 --+============================================+
209606 --|                                            |
209607 --|  PUBLIC FUNCTION                           |
209608 --|                                            |
209609 --+============================================+
209610 --
209611 FUNCTION CreateJournalEntries
209612        (p_application_id         IN NUMBER
209613        ,p_base_ledger_id         IN NUMBER
209614        ,p_pad_start_date         IN DATE
209615        ,p_pad_end_date           IN DATE
209616        ,p_primary_ledger_id      IN NUMBER)
209617 RETURN NUMBER IS
209618 l_log_module                   VARCHAR2(240);
209619 l_array_ledgers                xla_accounting_cache_pkg.t_array_ledger_id;
209620 l_temp_result                  BOOLEAN;
209621 l_result                       NUMBER;
209622 BEGIN
209623 --
209624 IF g_log_enabled THEN
209625    l_log_module := C_DEFAULT_MODULE||'.CreateJournalEntries';
209626 END IF;
209627 --
209628 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
209629    trace
209630       (p_msg      => 'BEGIN of CreateJournalEntries'||
209631                      ' - p_base_ledger_id = '||TO_CHAR(p_base_ledger_id)
209632       ,p_level    => C_LEVEL_PROCEDURE
209633       ,p_module   => l_log_module);
209634 
209635 END IF;
209636 
209637 --
209638 g_diagnostics_mode:= xla_accounting_engine_pkg.g_diagnostics_mode;
209639 
209640 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209641    trace
209642       (p_msg      => 'g_diagnostics_mode = '||g_diagnostics_mode
209643       ,p_level    => C_LEVEL_STATEMENT
209644       ,p_module   => l_log_module);
209645 END IF;
209646 --
209647 xla_ae_journal_entry_pkg.SetProductAcctDefinition
209648    (p_product_rule_code      => 'COST_MANAGEMENT'
209649    ,p_product_rule_type_code => 'S'
209650    ,p_product_rule_version   => ''
209651    ,p_product_rule_name      => 'Cost Management'
209652    ,p_amb_context_code       => 'DEFAULT'
209653    );
209654 
209655 l_array_ledgers :=
209656    xla_ae_journal_entry_pkg.GetAlternateCurrencyLedger
209657       (p_base_ledger_id  => p_base_ledger_id);
209658 
209659 FOR Idx IN 1 .. l_array_ledgers.COUNT LOOP
209660    l_temp_result :=
209661       XLA_AE_JOURNAL_ENTRY_PKG.GetLedgersInfo
209662          (p_application_id           => p_application_id
209663          ,p_base_ledger_id           => p_base_ledger_id
209664          ,p_target_ledger_id         => l_array_ledgers(Idx)
209665          ,p_primary_ledger_id        => p_primary_ledger_id
209666          ,p_pad_start_date           => p_pad_start_date
209667          ,p_pad_end_date             => p_pad_end_date);
209668 
209669    l_temp_result :=
209670       l_temp_result AND
209671       CreateHeadersAndLines
209672          (p_application_id             => p_application_id
209673          ,p_base_ledger_id             => p_base_ledger_id
209674          ,p_target_ledger_id           => l_array_ledgers(Idx)
209675          ,p_pad_start_date             => p_pad_start_date
209676          ,p_pad_end_date               => p_pad_end_date
209677          ,p_primary_ledger_id          => p_primary_ledger_id
209678          );
209679 END LOOP;
209680 
209681 
209682 IF (g_diagnostics_mode = 'Y' AND
209683     C_LEVEL_UNEXPECTED >= g_log_level AND
209684     xla_environment_pkg.g_Req_Id IS NOT NULL ) THEN
209685 
209686    xla_accounting_dump_pkg.acctg_event_extract_log(
209687     p_application_id  => p_application_id
209688     ,p_request_id     => xla_environment_pkg.g_Req_Id
209689    );
209690 
209691 END IF;
209692 
209693 CASE l_temp_result
209694   WHEN TRUE THEN l_result := 0;
209695   ELSE l_result := 2;
209696 END CASE;
209697 
209698 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
209699    trace
209700       (p_msg      => 'return value. = '||TO_CHAR(l_result)
209701       ,p_level    => C_LEVEL_PROCEDURE
209702       ,p_module   => l_log_module);
209703    trace
209704       (p_msg      => 'END of CreateJournalEntries '
209705       ,p_level    => C_LEVEL_PROCEDURE
209706       ,p_module   => l_log_module);
209707 END IF;
209708 
209709 RETURN l_result;
209710 EXCEPTION
209711 WHEN xla_exceptions_pkg.application_exception THEN
209712    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
209713    trace
209714       (p_msg      => 'ERROR. = '||sqlerrm
209715       ,p_level    => C_LEVEL_PROCEDURE
209716       ,p_module   => l_log_module);
209717    END IF;
209718    RAISE;
209719 WHEN OTHERS THEN
209720    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
209721    trace
209722       (p_msg      => 'ERROR. = '||sqlerrm
209723       ,p_level    => C_LEVEL_PROCEDURE
209724       ,p_module   => l_log_module);
209725    END IF;
209726    xla_exceptions_pkg.raise_message
209727       (p_location => 'XLA_00707_AAD_S_000002_PKG.CreateJournalEntries');
209728 END CreateJournalEntries;
209729 --
209730 --=============================================================================
209731 --
209732 --
209733 --
209734 --
209735 --
209736 --
209737 --
209738 --
209739 --
209740 --
209741 --
209742 --
209743 --
209744 --
209745 --
209746 --
209747 --
209748 --
209749 --
209750 --
209751 --
209752 --
209753 --=============================================================================
209754 --=============================================================================
209755 --          *********** Initialization routine **********
209756 --=============================================================================
209757 
209758 BEGIN
209759    g_log_level      := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
209760    g_log_enabled    := fnd_log.test
209761                           (log_level  => g_log_level
209762                           ,module     => C_DEFAULT_MODULE);
209763 
209764    IF NOT g_log_enabled  THEN
209765       g_log_level := C_LEVEL_LOG_DISABLED;
209766    END IF;
209767 --
209768 END XLA_00707_AAD_S_000002_PKG;
209769 --